Dies ist eine alte Version des Dokuments!


Disk-OS

Diskettenarbeit im OS-Modus
Volker Pohlers, 2012

Disk-OS ermöglicht eine umfangreiche Unterstützung von Disketten u.a. als Ersatz für den Kassettenrekorder direkt vom Z9001-Modus aus.

Bei der vorliegenden Version wird eine 2MB- RAM-Floppy RAF2008 auf Port 24h korrekt erkannt und als Massenspeicher genutzt. Geplant ist eine komplette Unterstützung auch von Floppy-Disketten. Vorbereitet ist dafür schon alles.

Das ganze basiert auf CP/M. Ein originales CP/A-BDOS wurde genutzt und ein passendes BIOS, das im Wesentlichen auf Diskettenfunktionalität reduziert ist, geschrieben. Ziel dieser (und aller anderen) Anpassungen ist es, keinerlei Veränderungen am Z9001 vornehmen zu müssen. D.h. z.B., es dürfen keine Systenzellen des OS missbraucht werden oder normale Systemfunktionen gestört werden.

Komplett neu muss man den CCP-Rahmen zum Initialisieren und ausführen von Programmen schreiben. Ebenfalls sollten CCP-interne Kommandos wie DIR, ERA oder Laufwerkswechsel zur Verfügung stehen. Das Z9001-OS bringt bereits sein eigenes CCP mit; hier muss man also anstelle des CP/A-CCPs „normale“ Z9001-Programme schreiben.

Dann kommt der eigentliche Clou: Die Z9001-BDOS-Funktionen zur Kassettenarbeit werden auf neue Routinen umgelenkt, die die RAM-Disk nutzen (bzw. die CP/A-BDOS-Funktionen). Damit laufen alle Programme, die über die Z9001-BOS-Funktionen auf Kassette zugreifen, nun mit der RAM-Disk. Damit das wirklich funktioniert, sind einige Eigenheiten zu beachten (s.u.)

Es ist schon cool, wenn man mit dem normalen OS-SAVE plötzlich auf eine RAM-Disk schreibt :-).

Für einen 100%-igen Kassettenersatz müsste man die Routinen MAREK und KARAM aus dem Z9001-OS ersetzen. Das geht aber nur, wenn man den System-ROM gegen einen EPROM mit einem angepasstem OS austauscht.

Die derzeitige Testversion belegt den Speicherbereich von 4000h-57ffh. Das ist ein Kompromiss, um trotzdem mit BASIC, Asssembler u.v.a. Programmen testen zu können, ohne ständig auf EOR oder anderes achten zu müssen. Der Speicher für Treiber oder andere Systemtools bleibt frei, der Speicher am RAM-Ende (unterhalb C000h) steht auch zur Verfügung.

Geplant ist zukünftig die Verwendung des Shadow-RAMs für die Software.

In der aktuellen Software zum megaflash wird der Treiber mit

DOS

gestartet. (s. Bild)

DRIVE lw: Laufwerk wechseln (derzeit gibt es nur A:)
DDIR [muster] Inhalt anzeigen (wie DIR unter CP/M)
DDELETE muster Datei(en) löschen (wie ERA unter CP/M)
DOS „disk OS“, Nutzen der DISK-Routinen im normalen OS
CAOS „cassette OS“, Nutzen der Kassettenroutinen im normalen OS
SAVE fname[.typ] aadr,eadr[,sadr] das ist das normale OS-SAVE, funktioniert aber auch mit Disk

Im Z9001-OS kann mit „DOS“ bzw. „CAOS“ zwischen Diskette und Kassette umgeschaltet werden.

EDIT/ASM funktioniert.

OS-SAVE funktioniert.

F83 PUT/GET funktioniert.

BASIC musste angepasst werden. Die modifizierte BASIC-Version enthält neue I/O-Treiber sowie die Änderungen für 16 Farben und 80 Zeichen/Zeile (WINDOW/PRINT AT). BASIC nutzt original leider eigene Routinen für Kassette. So wird in BASIC86 ein sinnloser Kopfblock 0 ausgegeben; eingelesen wird aber immer erst an Block 1. Um dieses Verhalten bei Kassettenarbeit beizubehalten, gleichzeitig aber immer korrekte Kopfblöcke bei Diskettenarbeit zu nutzen, musste die Verify-Funktionalität ausgeblendet werden, um genügend freien Speicher in der 2K-BASIC-Erweiterung von E000-E7FF zu haben.

Im BASIC funktioniert nun sowohl die klassische Kassettenarbeit als auch Speichern/Lesen von Diskette (incl. Feldern und ASCII).

Im aktuellen megaflash ist dieses BASIC bereits enthalten. Außerdem wird versucht, ein nichtgefundenes Kommando von Diskette zu laden! (Im originalen OS wird in diesem Fall intern CLOAD aufgerufen. Es erscheint dann das bekannte „start tape“. Aber leider ist CLOAD mit internen Aufrufen und nicht mit CALL 5-Funktionen implementiert, so dass hier leider keine Diskettenabfrage erfolgt. Für einen 100%-igen Kassettenersatz müsste man die Routinen MAREK und KARAM aus dem Z9001-OS ersetzen. Das geht aber nur, wenn man den System-ROM gegen einen EPROM mit einem angepasstem OS austauscht.)

ZMxx funktioniert nicht mit Diskette. Die Punch/Reader-Treiber für Kassette springen leider direkt in den Monitor und nutzen nicht CALL 5. Um das hinzubekommen, müsste man den Monitor patchen.

Die Programme werden auf der Diskette im KCC-Format abgespeichert, d.h. mit Kopf-Block, gefolgt vom Speicherabzug.

Mit Diskette funktionieren nur Programme, die für die Kassettenarbeit die BOS-Call 5-Routinen OS-konform nutzen. D.h., zum Schreiben muss OPENW, WRITS, und CLOSW genutzt werden! Fehlt CLOSW, wird in den neuen BDOS-Call 5-Funktionen versucht; dies zu erkennen und die Datei ordnungsgemäß auf Diskette zu schließen. Das ist aber noch ungetestet!

Um herauszufinden, wie ein Programm auf Kassette schreibt, gibt es im Mega-Flash ein kleines Hilfsprogramm CALL5DBG. Dieses ist nach DOS/CAOS neu zu starten. Es werden die Kassettenfunktionen mit Namen ausgegeben, gefolgt von DMA, BLNR und LBLNR (Stand vor Aufruf der eigentlichen Funktionen).

  • z9001/software/disk_os.1330111634.txt.gz
  • Zuletzt geändert: 2012/02/24 19:27
  • von volkerp