VDIP-OS USB
USB/VDIP im OS-Modus
Volker Pohlers, 2016
2024: Aktuell wird das VDIP-OS an die neue Hardware mit CH376 angepasst
Verwenden eines USB-Sticks zum Speichern/Laden anstelle eines Kassettenrekorders.
Das System lässt sich auch im Emulator jkcemu testen!
Für das usb-os am originalen Z9001 bzw. KC87 benötigt man:
- kein,eins oder zwei RAM-Module (16K .. 48K RAM)
- ein ROM-Modul auf Adresse C000 eingestellt, Eprom-Inhalt modul.rom (8k)
- ein USB-Modul (PIO + VDIP), z.B. eine teilbestückte GUR-Platine
- mit einen VDIP-Modul (VDIP1 von vinculum oder Nachbau V2DIP).
Beschreibung des VDIP-Moduls s. VDIP1 und v2dip.
Beschreibung GUR-Platine siehe GIDE+USB+RTC-Modul.
Es funktionieren auch kompatible Module wie GU-K1520 von Kingstener oder das Z1013-USB-Modul von Lötspitze. Prinzipiell wird nur eine PIO und ein VDIP-Modul benötigt. Die Schaltung ist für alle Module gleich!
GUR-V3-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 GUR-Modul. Bei Teilbestückung USB gibt es nur Jumper JP5
- 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) |
Hinweis Für das Modul **GU-K1520 von Kingstener** muss ein spezieller GAL genutzt werden, der die Port-Adresse DCh für USB unterstützt.
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 22.10.2024, incl. Quellcodes etc.
- Binär-Version usb-os-bin.zip Stand 22.10.2024
- Handbuch usb-os.pdf
Hinweis! Das Programm wird als USBX auch im Rahmen der Mega-Flash-Software gepflegt.
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 eigenständige 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.
2024: Der Quellcode wurde umstrukturiert und aufgeräumt.
Abweichungen:
USB-OS | Mega-Flash |
---|---|
DIR | DDIR |
MENU | DIR |
Anleitung s. Handbuch Handbuch und usb-os.txt im Download-Paket.
Laden
USB-OS
Das USB-System startet automatisch vom ROM-Modul.
Megaflash-Software
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 USB und Kassette umgeschaltet werden.
USB allgemeine Funktionen, Verzeichniswechsel
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
USBX ist eine Variante der USB-Software, die in der Mega-Flash-Software enthalten ist. Sie wird als Treiber geladen und bleibt dann bis zum nächsten Reset aktiv. Bei Strg-C (Warmstart) wird der Treiber automatisch reinitialisiert.
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)! Deshalb ist es nur sinnvoll, USBX via Mega-Flash u.ä. anzuwenden
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
Dateiname | (modul.rom) |
Laden in | OS |
Programmstandort | C000-C3FF |
OS-Kommando | # und s.u. |
USB-OS ist eine kleine autarke Software für eine USB-Modul mit einem 4K(8K)-ROM auf C000h. Mit dieser Software ist ein sofortiger Betrieb des Z9001 mit USB möglich. Direkt nach dem Einschalten wird mit USB geladen und gespeichert, es muss kein Treiber aktiviert werden.
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 ist 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 Angezeigt 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.
Tipp1: 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.
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).
Zusätzlich gibt es die neuen Basic-Befehle DIR und CD.
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, nicht mit USBX. 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. Auch nicht mit Kassette. Das ist offenbar ein Bug in KCPASCAL.
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.
JKCEMU
Ausprobieren/Verwenden von USB-OS im JKCEMU - Kleincomputer-Emulator
vorab usb-os.zip downloaden und entpacken
zur Nutzung im JKCEMU muss man eine eigene Konfiguration zusammenstellen:
- KC87,
- 2 16K-RAM-Module oder das 64K-RAM-Modul
- 1 Boot-ROM-Modul mit alternativem Inhalt modul.rom aus dem Download-Paket
- USB-Anschluss (Reiter System/Optionen/Erweiterungen)
Mit Alt-U öffnet man das Fenster zum USB-Anschluss und wählt hier das Verzeichnis „usb-stick“ aus dem entpackten Archiv aus. Außerdem muss man den Schreibschutz entfernen.
Nun kann man wie gewohnt mit der KC87-Emulation arbeiten. Speichern/Laden erfolgt im Verzeichnis „usb-stick“, ein Umweg über Audio-Aufzeichnung ist nicht nötig.
Die Anleitung zu USB-OS, Beschreibungen von robotron etc. liegen im Ordner usb-stick\doc.
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 eigenständige Modul-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.
11.08.2020 CALL 5 f. LOAD+SAVE, Doku s. 00usb-os-entwickler.txt Anpassung HLPEDIT, HELP, System. Aktualisiert CRT40. Testweise SYSINFO0 im Modul-ROM enthalten. Anleitungen, Handbücher etc. im Paket!
01.07.2021 ausführliche Modul-Dokumentation als PDF, Programmübersicht „usb-stick programme.txt“ FILL ohne Parameter löscht 300-BFFF (ala CLEAR MEMORY) CTRL-C bei DIR in BASIC bricht ab (vorher Rücksprung ins OS) CRT-Treiber im OS integeriert (schnelles CLS, ASCII-Spezialzeichen mit @) CALL 5 CLOAD neu A=3 wie A=1, aber ohne initiales GVAL (Anwendung s. HLPKDO) R-NLREG, R-PERDAT korrigiert. WORD, SYSINFO, HLPEDIT, CRT40 aktualisiert neu CHIP-8, Programme Kassetten INFORMATIK zusätzliche und korrigierte Dokus.
05.10.2021 SYSINFO0 Umstellung von bitbuster_extreme auf ZX7.
22.10.2024 Umstrukturierung Code