Dies ist eine alte Version des Dokuments!
VDIP-OS USB
USB/VDIP im OS-Modus
Volker Pohlers, 2016
Benötigt wird ein GIDE+USB+RTC-Modul mit einem VDIP1-Modul oder einem V2DIP-Modul. Beschreibung des VDIP-Moduls s. VDIP1 und v2dip.
Es funktionieren auch kompatible Module wie GU-K1520 von Kingstener oder das Z1013-USB-Modul von Lötspitze. Prozipiell wird nur eine PIO und ein VDIP-Modul benötigt. Die Schaltung ist für alle Module gleich!
Modul, und Teilbestückung nur USB
An das VDIP1-Modul wird ein USB-Stick angesteckt. Unterstützt werden USB 1.1 und USB 2.0-Sticks. Ein 8GB-Stick wurde erfolgreich getestet. Der Stick muss mit FAT12, FAT16 oder FAT32 formatiert sein. Ein V2DIP-Modul unterstützt normalerweise nur FAT 16 und FAT32.
Jumper:
- USB Jumper JP5 (unter dem DOM-Modul) v.u.n.o. A2..A7. Es ist nur A5 gejumpert (Port DCh)
- GIDE Jumper JP2 (Mitte) v.l.n.r. A4..A7, hi-Teil-PortAdr. Es ist A5 und A7 gejumpert (Port 50h)
- DOM Jumper J2 (quer): gesteckt für Stromversorgung des DOM-Moduls
Adressbereich | - | |
I/O-Adressen | GIDE | 54h-5Fh (empfohlener Port für Z9001) |
USB | DCh..DFh (empfohlener Port für Z9001) |
VDIP-OS ermöglicht eine umfangreiche Unterstützung von USB-Sticks u.a. als Ersatz für den Kassettenrekorder direkt vom Z9001-Modus aus. Die Software setzt keine speziellen Module voraus und könnte auch von Kassette geladen werden, Sinnvoller ist es, ein passendes ROM-Modul zu nutzen (Mega-Flash, Ulrichs Kombi-Modulhttp://www.sax.de/~zander/z9001/module/kombi.html, u.a.m.)
Dazu werden die CALL5-Routinen für Kassettenarbeit abgefangen und für das VDIP/USB-Modul genutzt. Damit laufen alle Programme, die über die Z9001-BOS-Funktionen auf Kassette zugreifen, nun mit dem USB-Stick. Damit das wirklich funktioniert, sind einige Eigenheiten zu beachten (s.u.)
Ziel dieser (und aller anderen) Anpassungen ist es, keinerlei Veränderungen am Z9001 vornehmen zu müssen. So dürfen z.B. keine Systemzellen des OS missbraucht oder normale Systemfunktionen gestört werden.
Es ist schon cool, wenn man mit dem normalen OS-SAVE plötzlich auf einen USB-Stick 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.
Download
- Programm, Quellcodes z9001_vdip_os.zip
Achtung! Das Programm wird im Rahmen der Mega-Flash-Software gepflegt. Aktuellere Quellen sind ggf. dort zu finden.
Autoren: Von mir stammt die Einbindung ins Betriebssystem. Der eigentliche Zugriff auf das VDIP-Modul stammt von den UTOOLS von Mario Leubner.
Laden
Die derzeitige Version USB belegt den Speicherbereich von B800h-BCFFh. Das ist ein Kompromiss, um trotzdem mit BASIC, Assembler 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.
In der aktuellen Software zum Mega-Flash-Modul wird der Treiber mit
USBX
gestartet. (s. obiges Bild, dort noch Start mit altem Namen USB)
Befehle
DOS | „Disk OS“, Nutzen der USB-Routinen im normalen OS initialisiert den Treiber. Muss stets nach Reset ausgeführt werden |
CAOS | „CAssette OS“, Nutzen der Kassettenroutinen im normalen OS deinitialisiert den Treiber |
USB [kdo] | Kommando an VDIP übergeben, s.u. |
DDIR [muster] | Inhalt anzeigen (führt USB DIR aus) |
LOAD [adr] | OS-Kommando zum Laden (auf adr) |
SAVE aadr eadr [sadr] | OS-Kommando zum Speichern, Filename wird abgefragt |
OS-SAVE fname[.typ] aadr eadr [sadr] | OS-Kommando zum Speichern |
Im Z9001-OS kann mit „DOS“ bzw. „CAOS“ zwischen Diskette und Kassette umgeschaltet werden.
USB allgemeine Funktionen, Verzeichiswechsel
Kommando | Bemerkung |
---|---|
USB | prüft, ob USB-Stick angeschlossen ist |
USB CD <verzeichnis> | Verzeichnis wechseln |
USB CD / | ins Wurzelverzeichnis wechseln |
USB CD .. | ein Verzeichnis zurück |
USB DIR | Verzeichnisanzeige |
USB DLD <verzeichnis> | Delete Dir, Verzeichnis löschen |
USB MKD <verzeichnis> | Make Dir, Verzeichnis anlegen |
USB DLF <dateiname> | Delete File, Datei löschen |
USB FS | Free Space, Freien Platz anzeigen |
USB IDD | Disk-Informationen anzeigen |
USB FWV | Firmware-Version anzeigen |
USB RD <file> | Read, Textdokument anzeigen |
USB REN <alt> <neu> | Rename, Datei umbenennen |
Start
Folgende Hinweise gelten zur Arbeit mit der im Mega-Flash integrierten Version USBX. Eine Nutzung des Treibers ohne die Mega-Flash-Software ist nur eingeschränkt möglich (keine Laden und Speichern im OS, kein Laden und Speichern im BASIC)!
Mit
HELP USB
gibt es eine kurze Hilfe.
gestartet bzw. initialisiert wird mit
USBX
Das VDIP1 meldet sich mit
Ver03.69VDAPF On-Line: Device Detected P2 No Upgrade D:\>
Ver03.698VDAPF ist die Firmwareversion (VDAP Disk And Peripheral Firmware Release 3.68)
P2 steht für USB-Port 2 1)
D: steht für Drive, gemeint ist der USB-Stick. Das ist kein CP/M-Laufwerksbuchstabe!
Nach dem Start kann wird nun wie von Kassette gewohnt gearbeitet, mit LOAD und SAVE (bzw. OS-SAVE) können Speicherbereiche geladen bzw. gesichert werden, unter BASIC entsprechend mit CLOAD/CSAVE.
Kommt beim Start ein Timeout, hilft
DOS
DOS reinitialisiert den Treiber. Auch nach Reset muss unbedingt DOS gestartet werden, ehe wieder auf den USB-Stick geschrieben werden kann!
Im OS werden Kommandos(Programme) nun zuerst im Speicher gesucht (oder im Mega-Modul), wird nichts gefunden, wird auf dem externen Speicher gesucht. Bei Kassettenbetrieb kommt die Ausschrift „start tape“, bei USB entfällt das. Wenn ein Programm gefunden wurde, wird es geladen und gestartet. Wird es nicht gefunden, kommt die Meldung
BOS-error: file not found
Mit STOP bricht man ab und ist wieder auf der Kommandozeile.
Mit CAOS kann man auf Kassette umschalten und Programme von Kassette laden bzw. auf Kassette speichern, mit DOS ist wieder der USB-Stick aktiv.
Programme
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 Mega-Flash-Modul ist dieses BASIC bereits enthalten.
Es wird ein Kopfblock 0 geschrieben, der nur den korrekten Dateinamen enthält (Byte 0..11). Damit sind BASIC-Programme speicherkompatibel zu OS-Programmen.
23.11.2017: Die aktuelle Software schreibt den Kopfblock 0 nicht, wenn ein spezielles Flag (fcb+24='N') gesetzt ist. Das wird nun in BASIC genutzt. Damit sind die erzeugten SSS-Dateien kompatibel zu CP/M (ZBS).
OS Im neuen CCP des Mega-Moduls 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“. 2)
ZMxx funktioniert (gepatchte Version). mit AP=T und Paadr_eadr_sadr wird gespeichert (s. kassettenarbeit. Die originalen Versionen funktionieren nicht mit Diskette/USB. Die Punch/Reader-Treiber für Kassette springen leider direkt in den Monitor und nutzen nicht CALL 5.
KCPASCAL funktioniert nicht mit Diskette/USB. Ursache dafür ist einfach, dass KCPASCAL den gesamten Speicher von 300h bis BFFFh belegt. Da bleibt kein Platz mehr für ein BDOS-Wrapper.
PRETTYC funktioniert nicht komplett mit Diskette/USB. Das Speichern funktioniert, doch beim Laden wird leider nicht OPENR genutzt. PrettyC verfügt über einen Modifikations-Selbstschutz, ein Patchen ist nicht ohne weiteres möglich.
Internes
Die Programme werden auf der Diskette im KCC-Format abgespeichert, d.h. mit Kopf-Block, gefolgt vom Speicherabzug.
Die Endung COM wird dabei in KCC geändert, damit es nicht zu Verwechslungen mit CP/M-Programmen kommt.
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äß zu schließen. Beim Lesen muss OPENR, READS genutzt werden. CLOSR ist optional.
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).