Junior Computer ][

  • Sehr gut! :thumbup:

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

  • Ich gestehe, ich habe im ROM etwas gepatched - da ist wohl was schiefgegangen.


    Neu gebrannt - und schon gehts wieder :fpa: ::heilig::

    Wieso soll es dir besser ergehen als mir 8o . Ich denke vor den Änderungen an meinem Code oft "was hat sich der Autor da denn dabei gedacht". Wenn danach dann nichts mehr geht bin ich auch wieder schlauer :tüdeldü: .

    Never change a running system.

    Spass beiseite. Mach bitte weiter. Wenn was verbessert werden kann, tut das bitte. :) :thumbup:

  • Ich hab jetzt mal den Code so weit fertig, dass auch ein Verzeichniswechsel problemlos funktioniert. Wegen eines doofen Fehlers von mir, hat es jetzt doch ziemlich lange gedauert. Ich musste deshalb erst mal eine Pause - mit anderen Basteleien - machen, um den Kopf wieder frei zu bekommen.



    Da ich durch Reinhards Anfrage ja auch mal die Änderung von / statt \ für die Pfadtrennung und - statt / für die Optionen getestet habe, ist mir aufgefallen, dass es keine gute Idee ist, eine Eingabe von z.B. DIR/a ohne Leerzeichen zuzulassen. Da in FAT Konformen Dateinamen ja Bindestriche möglich sind, würde dann also DIR-a stattdessen stehen und wäre somit ein gültiger Dateiname. Wenn diese Kombination also nicht erlaubt ist, sollte dann auch ein CD.. (ohne Leerzeichen) oder DIR*.* nicht möglich sein. Ich hab das also jetzt rausgenommen, was den Code auch um einiges einfacher gemacht hat. Es muss jetzt also nach einem Befehl zwingend ein Leerzeichen eingefügt werden, bevor eine Pfad- oder Optionsangabe folgen darf. Wäre also wie bei Unix Systemen.


    Ein DIR . im Root Verzeichnis geht noch nicht, werde ich aber natürlich nachreichen. Jetzt muss erst mal ein Datei Loader her.


    Boot.SYS wie gehabt zum Testen einfach auf die vorbereitete SD-Karte kopieren.

  • Funktioniert prima auch mit langen Directorynamen - da muß man natürlich die Kurzform eingeben.

    Schön wäre noch, wenn im Prompt der Directoryname erscheinen würde, damit man auch in den Tiefen des Dateibaumes noch weis, wo man ist.


    Hast du schon Ideen, wie die Schnittstelle zu den Anwendungsprogrammen aussehen soll?


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Klasse Jörg!

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

  • Hast du schon Ideen, wie die Schnittstelle zu den Anwendungsprogrammen aussehen soll?


    Vielleicht wäre es ja gut, das in einem gesonderten Thread zu machen und erstmal Vorschläge zu sammeln.

    Muß ja vielleicht auch bißchen so gebaut sein, daß es kein Riesenaufwand wird oder evtl vorhandenes schon weiterbenutzt werden kann.



    Wie schnell ist denn das "Disketteninterface" (also die SD-Karten-Datenschnittstelle von oben) jetzt so geworden ? Wenige KB/s oder doch so schnell, daß "on the fly" RAM Austausch damit möglich wird ?

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Klasse Jörg!


    Schließ mich dem mal an. :thumbup:


    Allerdings sollte man auch sagen, daß es vielleicht nicht gerade die beste Variante ist, sich von einem Bauprojekt zu "erholen" indem man direkt bei einem anderen weitermacht. Soll heißen: Geh auch mal in die Sonne oder Radfahren oder Eisessen oder so. So schön wie es ist, wenn das hier weiterkommt - der angesprochene "Erholungsmodus" ist einfach ungünstig. Ist bißchen so, wie sich vom anstrengenden Lesen durch schönes Lesen von Bellestristik abzulenken.

    Und außerdem: manchmal hat man ja auch gerade dann, wenn man mal was ganz Anderes zum Abspannen macht, die besten Ideen.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Sorry, die Antwort wird nun leider etwas länger. :S

    Allerdings sollte man auch sagen, daß es vielleicht nicht gerade die beste Variante ist, sich von einem Bauprojekt zu "erholen" indem man direkt bei einem anderen weitermacht. Soll heißen: Geh auch mal in die Sonne oder Radfahren oder Eisessen oder so. So schön wie es ist, wenn das hier weiterkommt - der angesprochene "Erholungsmodus" ist einfach ungünstig. Ist bißchen so, wie sich vom anstrengenden Lesen durch schönes Lesen von Bellestristik abzulenken.

    Und außerdem: manchmal hat man ja auch gerade dann, wenn man mal was ganz Anderes zum Abspannen macht, die besten Ideen.

    Keine Sorge :) . Ich hab einige Spaziergänge und Fahrradtouren in den letzten Tagen gemacht. Auch heute wieder, nachdem meine Frau ja wieder da ist und noch Urlaub bis Dienstag hat. Aber klar ist natürlich, dass ich die Zeit abends in den letzten 1 1/2 Wochen auch gerne mal mit dem verarzten von einigen Computer Gebrechen verbracht habe. Und ein Buch war zur Abwechslung auch dabei. Also dein volles vorgeschlagenes Erholungsprogramm.


    Schön wäre noch, wenn im Prompt der Directoryname erscheinen würde, damit man auch in den Tiefen des Dateibaumes noch weis, wo man ist.

    Jaaaa, das war schon irgendwie angedacht, aber...


    Entweder muss ich dann den ganzen aktuellen Verzeichnispfad in einem String speichern oder bei jeden DIR und CD den Pfad traversieren. Beides ist recht teuer im Sinne der Resourcen.

    Bei ersteren müsste ich dann sagen wir 256 Bytes für den String vorhalten und eine recht aufwendige Befehlsanalyse machen, wenn man bereits in einem Unterverzeichnis steht und dann z.B. DIR ..\PFADXY eingibt. Es ist ja nicht so, dass man da einfach bei einem CD nur einen weiteren Pfad an den String anhängen muss. Ein Speichern der Pfadnamen als feste 8 Zeichen lange Strings würde da vieles vereinfachen. Braucht aber trotzdem viel RAM.


    Bei der Traversierung muss bei jedem Verzeichniswechsel zuerst das Parent Verzeichnis ".." gefunden werden (einfach, da meist an der zweiten Stelle im Directory Block), dann muss mit der dadurch erhaltenen LBA im darüber liegenden Verzeichnis der zugehörige Name gesucht werden. Dann wieder ".." usw. bis zurück zum Root Directory. Ich muss also jedesmal mindestens einen Verzeichnisblock lesen und durchsuchen. Es kommt aber meist schlechter, denn...


    Wir reden hier ja von einem mit 1MHz getakteten Rechner. Ich komme da auch gleich mal zur Erklärung auf die Frage von ThoralfAsmussen zurück:

    Wie schnell ist denn das "Disketteninterface" (also die SD-Karten-Datenschnittstelle von oben) jetzt so geworden ? Wenige KB/s oder doch so schnell, daß "on the fly" RAM Austausch damit möglich wird ?

    Eigentlich recht flott. Dadurch, dass ich kein Bit Banging bei der SPI Schnittstelle mache, sondern die VIA und ein externes Shift-Register die Arbeit machen lasse, liegt die Datenrate bei etwa 32KB/s. Dietrich hat noch in den Read/Write Routinen jeweils 4 Taktzyklen eingespart, indem er ein CMP durch einen BIT Befehl ersetzt hat, was bei größeren Dateien vielleicht auch nochmals ein wenig zu spüren ist. Er versucht da auch gerade noch etwas mehr rauszuholen. ( :thumbup: )


    Trotzdem ist dann natürlich bei einem DIR Befehl eine merkliche Verzögerung vorhanden, wenn zuerst der Pfad analysiert werden muss. Man merkt dass auch schon, wenn ihr mal unter Windows (DOS, Linux etc.) die SD mit sagen wir mal 200-300 Dateien vollschreibt, diese dann wieder löscht und danach nochmals eine Datei drauf kopiert. Wenn man jetzt auf dem Junior das Verzeichnis auflistet, dann merkt man bereits deutlich einen kurzen Hänger, da alle gelöschten Dateieinträge ja trotzdem erst mal gelesen, aber dann halt nicht angezeigt werden.


    Ich verzichte deshalb auch auf eine Sortierung der Einträge, da ich dann ja das vollständige Verzeichnis zuerst in den Speicher lesen muss, bevor ich sortieren kann. Das dauert eben, selbst wenn ich dann einen der schnelleren Sortieralgorithmen wie Quicksort nutze, eine gewisse Gedenksekunde, bis es mit dem Auflisten losgeht.


    Ein weiteres "Problem" ist die Anzeige des noch freien Speicherplatzes auf dem SD-/Floppy-Laufwerk. Da FAT anders als z.B. das standard Unix Dateisystem keinen Super Block besitzt, in dem es den freien, bzw. belegten Speicherplatz loggen kann, muss ich entweder die vollständige FAT durchlaufen um die belegten Cluster (!) zu finden (ganz blöde Idee, da ein Cluster ja auch schon mal 64KB groß sein kann - also nicht gerade besonders genau), oder ich traversiere halt mal wieder. Dann aber den gesamten Verzeichnispfad von der Wurzel aus.

    Bei einem flachen Dateisystem wie eben Dietrichs CPM-65 ist das kein Problem, denn da kann ich das on the fly beim Directory Listing machen. Mit Unterverzeichnissen kann es aber schon richtig Zeitaufwendig werden, wenn die Pfadtiefen groß sind.


    Meine Überlegung war zum oben angefragten Problem, am Prompt nur das aktuelle Verzeichnis anzuzeigen, also z.B.


    C:\...\TOOLS\>


    das wäre einfach zu machen und eventuell auch schon hilfreich.


    Was denkt ihr? Hat auch jemand zum "Freier-Speicherplatz-Anzeige-Problem" eventuell eine adäquate Lösung?


    Hast du schon Ideen, wie die Schnittstelle zu den Anwendungsprogrammen aussehen soll?

    Die API Funktionen heißen bei mir gerade z.B. OS_CD, OS_DIR, OS_SET_ROOT_DIR usw. die dann später per indirekten Sprung aus einer Tabelle heraus angesprochen werden.

    Das genaue Aussehen wird sich aber sichlich noch etwas Ändern. Letztlich wird es natürlich neben Funtionen zum Laden, Speichern und Löschen von Dateien auch noch definierte Einsprungpunkte für Text Ein-/Ausgabe, Datum/Uhrzeit u.ä. geben.


    Falls da besondere Wünsche bei euch offen sind, sagt mir Bescheid.

  • Quote
    Wie schnell ist denn das "Disketteninterface" (also die SD-Karten-Datenschnittstelle von oben) jetzt so geworden ? Wenige KB/s oder doch so schnell, daß "on the fly" RAM Austausch damit möglich wird ?

    Die aktuelle ROM-Version schafft 25 kB/s im Blocktransfer, also SD-to-RAM. Mit dem von Jörg erwähnten etwas schnelleren Code sind es 28 kB/s. Möglich, aber noch nicht erprobt sind 41 kB/s. Bitbangroutinen schaffen die 25 kB/s nur beim Lesen, Schreiben ist mit 7-8 kB/s deutlich langsamer. Aber auch damit lässt sich gut arbeiten.

    25 kB/s ist die Datenrate einer MFM-Diskette ohne Spurwechselzeit, etwa ein GOTEK. Ich finde das recht beachtlich.


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Quote
    Ich verzichte deshalb auch auf eine Sortierung der Einträge, da ich dann ja das vollständige Verzeichnis zuerst in den Speicher lesen muss, bevor ich sortieren kann. Das dauert eben, selbst wenn ich dann einen der schnelleren Sortieralgorithmen wie Quicksort nutze, eine gewisse Gedenksekunde, bis es mit dem Auflisten losgeht.

    Das ist alles nicht so schlimm. Die meiste Zeit braucht das Einlesen der Directory-Blocks, um diese nach den spezifizierten Filenamen zu durchsuchen. Das muß man immer machen. Bei der Gelegenheit kann man die Filenamen auch erstmal in eine Liste schreiben. Diese Liste hat ja maximal einige 100 Einträge. Da reicht auch Bubblesort und das braucht wenig Code. Sortiert werden nur die Pointer auf die Einträge. Sobald das fertig ist, kann man das sortierte Directory ausgeben. Der Zeitverlust ist nur die Sortierroutine. Ich finde insbesondere bei vielen Files ein sortiertes Directory ein Muß. Man findet sonst nix.


    Allerdings, und da hat 2ee natürlich recht, dauert es etwas bis der erste Filename ausgegeben werden kann. Ihr könnt das einfach mal mit CPM-65 testen. Auf der Systemdiskette sind ja jede Menge Files.



    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Ich wollte ja jetzt noch vor Ablauf des Monats eine einigermaßen nütliche Version von M/OS-65 bereitstellen, damit ich das ganze erst mal für ein paar Wochen beiseite legen, und ich mich auch mal wieder der Hardware widmen kann.


    Wie gehabt, funktionieren DIR und CD soweit vollständig (nur z.B. DIR . im Root Verzeichnis geht immer noch nicht). Hinzugekommen ist jetzt endlich der Application Loader.


    Ich mache es mir jetzt gerade noch einfach und lade ein Programm bisher nur fest an Hex 3000 und lasse es dort ausführen. Das ist also wie bei COM Dateien unter CP/M und DOS. Ein Laden mit in der Datei eingebetteter Startadresse kommt später mal.

    Die ausführbaren Dateien müssen jetzt auch bei mir konsequent mit der Extension .COM enden, sonst werden sie nicht ausgeführt. Der Aufruf von z.B. README.TXT macht somit erstmal garnichts, wirft also auch keine Fehlermeldung.


    Der Aufruf der ausführbaren Dateien kann wie gewohnt entweder durch NAME.COM, bzw. PFAD\NAME.COM oder auch einfach nur durch NAME erfolgen. Wird die Datei nicht gefunden, so sucht M/OS dann noch automatisch im SYSTEM Verzeichnis ob das Programm eventuell dort enthalten ist. Somit können auch einfach Systemaufrufe als kleine Programme dort abgelegt werden. Das habe ich jetzt mal mit TIME.COM, DATE.COM und DATETIME.COM gemacht, wobei letzteres nicht nur das aktuelle Datum und die Uhrzeit anzeigt, sondern diese auch setzen lässt.



    Wenn ihr ein COM Programm schreibt, könnt ihr es einfach durch einen RTS Befehl beenden lassen, um wieder zum Befehls Prompt des OS zurückzukehren.


    Entpackt einfach den Inhalt des in der Zip-Datei enthaltenen Ordners MOS-65 auf eine mit MKBOOT vorbereitete SD-Karte. Nach dem Booten der Karte im Junior ][, könnt ihr auch die SD-Karte aus dem Slot entnehmen, dann Dateien auf dem PC draufkopieren und danach wieder einsetzen. Beim nächsten Zugriff auf die Karte wird diese automatisch wieder initialisiert, so dass man problemlos Hot-Swapping machen kann.


    Ich werde in den nächsten Wochen mal schauen, endlich den Floppy/CRT Controller fertig zu machen und sowohl dafür, als auch für das geänderte IO-Board dann nochmals Platine machen zu lassen.


    Soweit erst mal eine schöne Woche und viel Spass


    Jörg

  • Klappt super.


    Neugierig, wie ich nun mal bin, habe ich mir gleich mal den Code von DATE.COM im CPM-65 Debugger angesehen 8)

    Weiter so


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Ich habe mal eben testhalber ein kleines Program auf M/OS-65 angepasst.


    Programm: CPUTYPE

    Erkennt, ob eine NMOS oder eine CMOS CPU verbaut ist.


    Das Programm wird einfach in ein Verzeichnis kopiert und mit 'CPUTYPE' aufgerufen. Source Code ist natürlich dabei.



    Natürlich ist das erstmal nur ein kleines Progrämmchen. Sobald ich mich etwas besser in M/OS-65 eingearbeitet habe, insbesondere in die Filesystem-Aufrufe, folgt mehr. Ich packe künfige Programm dann in den Thread 'Junior ][ Computer Software', damit hier die Übersicht gewahrt bleibt.


    Dietrich

  • Danke Dietrich!

    ich muss jetzt gerade nochmal eine BOOT.SYS nachschieben, da ich bei der letzten Version einen Teil aus Testzwecken herausgelöscht hatte, der aber natürlich recht hilfreich ist. Ohne kann man gerade nur einen Block - sprich 512 Byte - laden. Mit dieser Version ist das Limit für COM Dateien auf 44KB gesetzt, was dem freien Speicher entspricht.

    Ich hab Dietrichs CPUTYPE.COM jetzt auch mal in den System Ordner gepackt. Ebenso MKBOOT.COM, mit dem ihr dann neu formatierte SD-Karten Boot fähig machen könnt.

    Die Systemaufrufe sind natürlich noch nicht fix und zum Teil auch noch etwas chaotisch. Das werde ich erst mal auch so lassen, bis ich die Write Routinen drinnen habe, dann kann auch der Shell Teil abgekoppelt werden.

  • Ich hab jetzt mal auf der Grafikkarte den (bei mir ja leider defekten) CXA2075A Encoder durch Transistorausgangsstufen ersetzt und mit einem LM1881 Video Sync Seperator auch gleich die H- und V-Sync Signale für VGA aus dem Composite Signal getrennt.


    Die Ausgabe auf einem VGA Monitor ist mir nur auf meinem kleinen Schwarz-Weiß-Monitor gelungen, da alle meine anderen Röhren- und TFT-Monitore mit dem 15KHz Signal nicht klar kommen. Auch der SW-Monitor kann die 15KHz nicht nativ, stellt aber das Bild zumindest erkennbar (überlappend) dar. Das V-Sync Signal ist super stabil. Mit einem entsprechenden (leider sehr schlecht zu bekommenden) 15KHz fähigen Multisync VGA Monitor sollte die Ausgabe also gehen.



    Dafür klappt die Farbausgabe auf meinem Commodore 1083S Monitor völlig problemlos. Sowohl 40 als auch 80 Zeichernausgabe sehen trotz gerade noch fliegenden Aufbau der Endstufen und des Sync Seperators sehr scharf aus. Composite funktionierte ja auch bereits auf einigen Monitoren, allerdings nur in Schwarz/Weiß. Nur mein Apple Monitor // hat ein Problem, sowohl mit dem Sync als auch mit der Helligkeit. Das liegt vermutlich daran, dass der V9938 das Bild statt mit 15,6KHz mit 16,1KHz ausgibt. Ich muss mal schauen, ob das eventuell per Software einstellbar ist.




    Ich werde diese Woche noch das Platinenlayout ändern und dann neue Platinen bestellen. Ich hoffe, dass dann alle Fehler beseitigt sind und diese Revision sauber läuft.

  • Hi 2ee,


    kannst Du noch mal ein/zwei Fotos machen wie Dein Rechner nun aussieht > ich meine mit allen benötigten zusätzlichen Platten. ich habe noch immer (nur) die Hauptplatine in der Rev. 3 (0003-C) und möchte gerne auch das Ganze dahingehend erweitern. Was brauche ich den da noch und wie und wo bekomme ich dies? ;)

    Ich suche: Atari 800, MPF-IP

  • Hallo discmix ,

    ich hatte dir ja auf der CC2023 versprochen, dass du von mir mit einem IO-Board und der Grafikkarte bedacht wirst. Durch die seltsamen Probleme beim Lesen der SD-Karte auf meiner letzten Revision der IO-Platine hat sich das alles leider stark verzögert. Aber jetzt läuft alles soweit. Die Grafikkarte müsste dann auch funktionieren, auch wenn ich da natürlich noch viel Software schreiben muss, um die dann mit dem Junior als Standardausgabe nutzen zu können. Da hoffe ich auf eurer Verständnis, dass das eventuell noch ein wenig dauern könnte.

    Wenn alles soweit klappt, habe ich die Platine bis Freitag umgemodelt. Dann heißt es wieder abwarten, bis die Platinen bei mir eintreffen. Meist sind das zwei bis drei Wochen. NorbertJ, @DL8EBD und 286Micha sind da auch schon im Verteiler. Allerdings weiss ich jetzt garnicht, ob @DL8EBD überhaupt noch im Forum ist.


    Hier noch ein Bild vom Tower of Chaos. Ach ja, besorgt euch bitte 18mm Abstandsbolzen und nicht wie ich Blödi welche mit 20mm Länge, sonst bekommt ihr die Karten nicht an die Backplane. :fp:


  • Warum "Tower of Chaos"? Sieht doch gar nicht schlecht aus. Eine Frage zum aktuellen Design. Ist noch ein Anschluss für eine PS2-Tastatur vorgesehen. Die Reihenfolge in dem Kartenstapel ist wahlfrei- oder?

    Auf jeden Fall ein Cooles Projekt. Langsam wird der Junior dann doch erwachsen. So etwas lässt sich anscheinen nicht verhindern

    Ich habe auch Interesse an dem Board.

  • Eine Frage zum aktuellen Design. Ist noch ein Anschluss für eine PS2-Tastatur vorgesehen.

    Hallo orion7 , ja hinten, rechts neben dem Slot Stecker befindet sich auf der GraKa ein PS2 Anschluss. Ich hab jetzt auch bereits einen weiteren DIP-Schalter vorgesehen, mit dem dann das Tastaturlayout ausgewählt werden kann.



    Den VGA-Anschluss werde ich nicht als SUB-15HD Buchse mit drauf bekommen. Ich hab mich deshalb dafür entschieden, stattdessen einen 16 poligen Wannenstecker, bzw. Stiftleisten zwischen Composite und Video-Ausgang zu setzen. Es gibt da fertige Buchsen mit Flachbandkabel bei AliExpress, auf die man dann halt noch einen passenden Quetschstecker aufpressen muss.



    Warum "Tower of Chaos"? Sieht doch gar nicht schlecht aus.

    Du hast den Rest meines Schreibtisches nicht gesehen :D . Aber du hast schon recht wenn alles richtig zusammengeschraubt ist und die Bauteile dann da sind, wo sie hingehören, dann ist das Ergebnis nicht übel. :saint:


    Edit: Ja, die Reihenfolge ist egal. Ich hab dich ( orion7 ) eh schon in der Liste drinnen gehabt. Ich werde aber nochmal alle Fragen, bevor ich die Platinen machen lasse. Und @DL8EBD ist wohl tatsächlich nicht mehr im Forum. Schade.

  • Sorry, Buchstabendreher bei der intelligenten Suche nach DL8EBD

  • Sorry, Buchstabendreher bei der intelligenten Suche nach DL8EBD

    Hallo Reinhard, ich weiß jetzt nicht, ob ich dich gerade richtig verstanden habe. Ich meine nicht dl8ebl . Außer Thomas hat sich hier im Forum einen anderen Namen gegeben. @DL8EBD der auch das Thema Junior ][ Computer Software angelegt hatte steht jetzt als Deleted_01_2024 bei seinen alten Beiträgen.

  • Nein, ich hatte online nach DL8EBD gesucht. Das Suchergebnis enthielt eine "Silent Key" Information für DL8EDB. Leider konnte ich meine Nachricht mit diesem Inhalt nicht löschen. Vielleicht kann das jemand anderes?

  • Eine kleine Unstimmigkeit habe ich in M/OS-65 gefunden: Wenn man die SD im laufenden Betrieb zieht und wieder einsteckt, klappt der erneute Zugriff nicht ganz. Im Bespiel hier wird das Directory beim ersten Mal nicht vollständig ausgegeben. Gibt man DIR nochmal ein, ist wieder alles ok.


    Im Beispiel habe ich DIR eingegeben, dann die SD gezogen und wieder eingesteckt, dann wieder DIR und dann nochmal DIR.

    Alles kein Aufreger, eher was für die todo-Liste


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Eine kleine Unstimmigkeit habe ich in M/OS-65 gefunden: Wenn man die SD im laufenden Betrieb zieht und wieder einsteckt, klappt der erneute Zugriff nicht ganz. Im Bespiel hier wird das Directory beim ersten Mal nicht vollständig ausgegeben. Gibt man DIR nochmal ein, ist wieder alles ok.

    ja, das ist mir bekannt. Manchmal klappt die Reinitialisierung der Karte da nicht beim ersten mal. Ich hab da noch keinen Work Arround, das müsste ich dann wohl im BIOS angehen.


    Ich hab die BOOT.SYS jetzt mal von weiteren Fehlern befreit, die aber nur bei FAT12/16 aufgetreten sind und Probleme beim Lesen von Verzeichnissen bereitet haben. Das ist jetzt beseitigt.

    Ebenso gab es bei FAT12 schon ein generelles Boot Problem. Ich hatte bisher die Unterscheidung, ob es sich um ein FAT12 oder FAT16 Dateisystem handelt, über den Mediadeskriptor gemacht. Wenn dieser F8 (Festplatte) war, bin ich von FAT16 ausgegangen. Allerdings hatte ich mal eine Partition auf einer meiner SD-Karten mit kleiner Größe eingerichtet, die Windows dann mit FAT12 aber eben auch Mediadeskriptor F8 beschrieben hat. Die Boot Routine ist dann natürlich von einer FAT16 Formatierung ausgegangen, was dann gleich mal knallt. Mittlerweile lese ich einfach den Dateisystem Label und prüfe, ob an der fünften Stelle eine "2" steht, um im FAT12/16 Boot Loader den FAT Typ zu bestimmen.


    Auch die direkten Funktionseinsprünge unter Umgehung des Device Treibers in MKBOOT.COM sind jetzt beseitigt, so dass eine Änderung am BIOS hier nicht zu falschen Einsprungadressen führt.


    Nächste Woche möchte ich mal mit den Schreibroutinen anfangen.


    Hier erst mal die geänderten Dateien. Ich hab jetzt gleich mal Dietrichs fig-Forth auch gleich mit drauf gepackt. Einfach wieder aus dem in der ZIP-Datei befindlichen Ordner MOS-65 alle Datein und Ordner auf die SD-Karte kopieren.


    Source Files sind diesmal nicht dabei, da ich gerade heftig am Umbau des Betriebssystem Kerns bin.

  • Need for Speed

    Es war etwas arbeit, aber die optimierten SD-R/W-Routinen sind fertig. Ich erreiche im Block-Read 41 kB/s (Original 25 kB/s) und im Block-Write 22 kB/s. Damit bin ich sehr zufrieden.

    Das theoretische Limit läge bei 55 kB/s. Das ließe sich erreichen, wenn man die Routinen ins RAM kopieren würde und in der Initialisierungsphase die Adresse der I/O-Karte in den Code schreiben würde. Aus meiner Sicht rechtfertigt der Geschwindigkeitszuwachs den Aufwand nicht. Dass das Schreiben so viel länger dauert, liegt daran, dass man das SR 74LS165 per Bitbang laden muss und das braucht alleine 36 us/Byte.


    In der Praxis ist der Geschwindigkeitszuwachs gut messbar, aber natürlich nicht mehr so groß.

    Mein Benchmark ist das Assemblieren von BASIC.ASM (74 kB Code, 2 Passes Lesen des Codes, Assemblieren, Schreiben des COM-Files 10 kB und des LABEL-Files 36 kB):

    - Original 60,7 s

    - optimiert 54,6 s (-10%)


    Jetzt muss ich noch den neuen Code ein paar Tage auf Stabilität prüfen und dann muß Jörg entscheiden, wie es weitergeht.


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • So, ich hab jetzt die Platine für neue IO-Karte und den Floppy-/Grafik-Controller soweit fertig. Ich würde dann nächste Woche die Platinen bestellen. Sagt mir bitte nochmals Bescheid, wenn ihr Interesse an einer der beiden Platinen habt, damit ich gleich genügend bestellen kann.


    Beim M/OS-65 hatte ich jetzt eine Menge umgestellt und ausgemistet. Dabei ist es natürlich zu den unvermeidlichen Totalausfällen gekommen, die zu fixen dann echt nervig waren, bzw. noch sind. Ich muss da erst mal für ein paar Tage mein Hirn auslüften, bevor ich wieder weitermachen kann. Ich hoffe aber, das ich den letzten Fehler schnell ausgemerzt bekomme.

  • Bin dabei, aber das weißt du ja schon.

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)