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 ursprüngliche Version z9001_vdip_os.zip
- eigenständige aktuelle Version f. Modul mit ROM usb-os.zip Stand 11.4.2020
Achtung! Das Programm wird im Rahmen der Mega-Flash-Software gepflegt. Aktuelle 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.
2019: Ich habe eine Version usb-os.zip für die Arbeit ohne Mega-Modul/Kombi-Modul zusammengestellt. Die enthaltenen Programme für den USB-Stick und die Anleitung gelten auch für die Mega-Flash-Version. Im ROM sind auch die vom Mega-Flash bekannten Kommandos LOAD,SAVE,RUN,MEM,DUMP etc. enthalten.
Abweichungen:
USB-OS | Mega-Flash |
---|---|
DIR | DDIR |
MENU | DIR |
Anleitung s. usb-os.txt im Download-Paket
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 |
USBX
Folgende Hinweise gelten zur Arbeit mit der im Mega-Flash integrierten Version USBX. Eine Nutzung des reinen Treibers ohne zusätzliche System-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.
USB-OS
USB-OS ist eine kleine autarke Software für eine USB-Modul mit einem 8K-ROM auf C000h. In der im Download beliegenden Beschreibung ist die Installation und Benutzung ausführlicher beschrieben.
Es wird kein Arbeitsspeicherbereich wie in der Mega-Flash-Version benötigt, die Software liegt komplett im ROM.
Es gibt ein paar spezielle Kommandos zur Arbeit mit USB. Das wichtigste Kommando ist USB. Mit diesem Kommando der USB-Stick reinitialisiert, werden Verzeichnisse angelegt uam.
USB USB-Stick reaktivieren DIR <such> Anzeige USB-Inhalt Es kann ein Suchstring angegeben werden, z.B. COM oder E*A Dann werden nur passende Dateien und Verzeichnisse aufgelistet gelb DIR-Verzeichnisse Grün COM-Dateien (unter OS ladbar und startbar weiß ZBS-Dateien (BASIC-Programme) cyan sonstige Dateien (Text, ...) CD <verzeichnis> Verzeichniswechsel Ohne Parameter werden alle Verzeichnisnamen aufgelistet CD / ins Wurzelverzeichnis wechseln CD .. ein Verzeichnis zurück Weitere USB-Kommandos 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 C Cursor an/aus CLS Bilschirm löschen VER Anzeige Programm-Autor und Versions-Datum Umschalten zwischen USB und Kassette: DOS "Directory OS", Nutzen der USB-Routinen im normalen OS initialisiert den Treiber. CAOS "CAssette OS", Nutzen der Kassettenroutinen im normalen OS deinitialisiert den Treiber
Nach Reset, Strg-C ist standardmäßig wieder USB aktiviert
Systemkommandos zur Arbeit mit Maschinencode (vgl. Beschreibung http://hc-ddr.hucki.net/wiki/doku.php/z9001/software/mega)
- Parameter hexadezimal, eine Vornull is nicht nötig! - Bei vielen Kommandos kann man mit <PAUSE> die Ausgabe anhalten/fortsetzen
<STOP> beendet das Kommando, jede andere Taste setzt fort
MENU Auflisten aller Kommandos im Speicher Angezeit werden Name, Adresse des Kommandonamens, Adresse des Programms Die Reihenfolge entspricht der Suchreihenfolge des OS DUMP von bis Speicher anzeigen HEX/ASCII FILL von bis byte Speicher mit Byte füllen TRANS von ziel anzahl Speicherbereich kopieren IN port Port einlesen OUT port byte Portausgabe RUN adr Programmstart von Adr. MEM adr Speicher editieren (neue Byte(s) eingeben + Enter, zurück mit R, Ende mit ;)
Laden/Speichern. Zur Eingabe von Dateiname.Typ erscheint die Meldung „filename:“
LOAD [aadr] Laden (auf Zieladr.) SAVE aadr eadr [sadr] Speichern auf Kassette FCB Anzeige des aktuellen File Control Block EOR [adr] RAM-Ende anzeigen/ändern
Bei LOAD/SAVE kann ein weiterer Parameter „1“ angehängt werden. Dann wird kein
OS-Kopfblock geschrieben bzw. geladen! Das wird z.B. intern in BASIC genutzt.
Tipp: Mit „LOAD 1000 1“, filename:TEST.COM wird das Programm TEST.COM in den
Speicher ab Adresse 1000 geladen. „DUMP 1000 107F“ zeigt den Kopflock an, „DUMP
1080 3FFF“ das eigentlich Programm.
Tipp2: Mit „LOAD 1000 1“ kann man auch Nicht-OS-Dateien in den Speicher laden,
z.B. Sound-Dateien für die Soundkarte oder andere MSDOS-Dateien.
12.3.2019: Das zugehörige RAM-BASIC kennt nun auch die Befehle DIR und CD.
DIR zeigt alle ZBS-Dateien an.
Ohne Parameter zeigt CD die Unterverzeichnisse an, mit CD „VERZEICHNIS“ wechselt man in ein Verzeichnis, CD „..“ geht
eine Verzeichnisebene zurück und CD „/“ wechselt direkt ins Root-Verzeichnis.
09.12.2019: Neues Kommando HELP, DIR-Anzeige in BASIC nun ohne Erweiterung, interne Anpassungen
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). Sie werden im USB-OS auch mit dem Dateityp .ZBS gespeichert.
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 nur mit USB-OS. Ursache dafür ist einfach, dass KCPASCAL den gesamten Speicher von 300h bis BFFFh belegt. Speichern/Laden funktioniert, Speichern von COM-Dateien leider noch nicht.
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).
Historie
27.02.2019 erste Version
05.03.2019 Neue Kommandos DIR und CD zur einfachen Arbeit mit USB
12.03.2019 Neue BASIC-Kommandos DIR und CD (s. oben)
09.12.2019 Umbenennung usb-os.asm → modul.asm, usb.asm → usbos.asm Neues Kommando HELP, DIR-Anzeige in BASIC nun ohne Erweiterung
26.12.2019 Keine eigene Schnittstelle für DIR und CD, sondern Nutzung von CALL 5 mit weiteren Nummern. Sprungverteiler f. LOAD+SAVE. Doku siehe usbos.asm.
13.03.2020 Mit Build 147 des Arnold-Assemblers musste die Verwendung von Unterverzeichnissen geändert werden (Es wird jetzt relativ zu dem Verzeichnis gesucht, in dem die Datei mit dem Include-Statement liegt, und nicht mehr relativ zum aktuellen Verzeichnis). Das betrifft alle asm-Sourcen und Perl- Tools, die was mit include zu tun haben.
16.03.2020 Basic mit DIR, CD unter DOSX,USBX; sonst Fehlermeldung. DOSX merkt sich das aktuelle Laufwerk
12.04.2020 neu DEVICE, neue Version ZM30+ZMA8, USB-OS nun auch OS 1.1- tauglich (Z9001.84). CRT-Treiber werden bei WBOOT reinitialisiert.