Von Null auf CP/M in wenigen Minuten...
Verfasst: Di 19. Jan 2016, 07:07
----------8<-----{20160119-0707-GMT}----->8----------
Man lese sich (mindestens quer) durch http://schorn.ch/altair.html, suche sich aus dem weiteren dortigen Angebot Diskimages von Betriebssytemen und andere Schmankerln aus und los geht's...
Warum gerade dieser Z80-Emulator?
Yaze-AG will gleich jedem Yaze-AG-User ein Yaze-AG-Ökosystem an eine von ihm vorgegebene Stelle im Homedirectory installiert aufdrücken. Das geht natürlich auch anders, aber das zu ändern ist nicht in 3 Sätzen beschrieben und bremst das "von Null auf CP/M in wenigen Minuten" doch deutlich aus...
Auch Z80pack will diverse Vorgaben durchsetzen, was wie heißt und wo es zu liegen hat, was den Einstieg etwas unübersichtlich macht und daß Z80pack schon bei einfachem "make" (statt erst durch "make install") Sachen in mein Homedirectory installiert ohne mich zu fragen, nehme ich ihm auch irgendwie schon fast ein bißchen übel.
Außerdem zickt "CPM2Z" unter Z80pack mich gerade an bei versehentlichem Wechsel auf ein nicht vorhandenes Laufwerk und ich weiß noch nicht, woran es liegt.
(Mit dem Altair-Emulator zeigen sich ähnliche Probleme mit dem Z80-CP/M2, aber mit 8080-CP/M nicht und mit CPM3 auf beiden Emulatoren nicht. Dazu vielleicht später mal mehr...)
Der hier fokussierte Altair-Emulator aus dem SIMH-Projekt bietet neben 8080 und Z80 auch 8086 (und in der noch Beta genannten Version 4.0 auch 68k) als CPU an. Ein wahrlich gut frisierter Altair! Zugriff auch auf CP/M-86 (und in der 4.0-Beta auch CP/M-68k) ist auf jeden Fall ein Argument, diesem Emulator ein paar wohlwollende Blicke zu gönnen... ;-) ...und man kann natürlich auch andere Emulatoren neben ihm haben, ohne daß er bissig wird...
Es reichen das Kompilat des Emulators plus ein oder mehrere Disk-Images, wenn man die Konfiguration bei jedem Start erst eintippen mag, wenn nicht, kommt noch eine Konfigurationsdatei hinzu.
Auuußerdem ist der Quelltext dieses Emulators recht gutmütig: Schluckauf beim Kompilieren hab ich bisher nur mit der 4.0-Beta unter NetBSD gehabt und vermutlich würd sich der Glitch mit dem shared Memory auch mit etwas mehr Geduld lösen lassen, aber ich brauche gerade nicht wirklich NetBSD-Versionen davon...
----------8<-----{Das nicht wirklich Kleingedruckte:}----->8----------
Das Forum erlaubt keine xz-gepackten Dateiuploads und ich habe mir noch nicht überlegt, ob ich extra deswegen einen Satz Binärchen anders packen will. Bis ich nach gewohnt langer Entscheidungskrise ganz spontan eine Entscheidung treffe, können die Binärchen für diverse verbreitete Betriebssysteme in meiner öffentlichen Wühlkiste (oder hüben oder drüben) gefunden werden.
Noch Fragen, Hauser?
----------8<-----{20160125-1452-CET}----->8----------
Von Null auf CP/M in wenigen Minuten...
...die Schicht-im-Schacht-Taste entspricht dem, was der HALT-Befehl auslöst, ist aber um Gegensatz zum CCP-Prompt immer verfügbar. Man kommt also problemlos in den "Monitor" und dort per "q" wie "quit" wieder raus...
Wieviele Minuten waren das nun?
;-)
----------8<-----{20160126-0840-GMT}----->8----------
...von Null auf Wordstar in nur knapp etwas mehr als Millisekunden...
...weiter geht's im selben Directory wie zuvor...
...als "Textmodus-Bildschirmschnappschuß"... ...das ist doch wie Sommer- und Winter-Sonnenwende auf einmal!!!
Raus kommt man per "ctrl-kq" und danach "x", aber vorher noch in etwas Nostalgie baden schadet nix... ganz bestimmt... ich hab's getestet... ehrlich!
;-)
...und wie man aus dem Emulator raus kommt, ist ja auch schon bekannt...
----------8<-----{20160127-0711-GMT}----->8----------
Daten zwischen Gastgeber und CP/M austauschen
Diesmal gibt es fast nur Lesestoff. Ich bin sicher, daß die Hilfstexte der folgend angeworfenen Programme ausreichen, um ihrer korrekten Benutzung auf die Spur zu kommen. Ihre Quelltexte liegen auf B: als "HDIR.SPL", "READ.SPL" und "WRITE.SPL": Kompilieren kann man sie mittels Sktipt "C.SUB": Fertig übersetzt... ausprobieren: Klappt! ;-)
----------8<-----{20160127-1155-GMT}----->8----------
Aus 2 mach 1...
Extra Konfigurationen für CP/M mit und ohne Wordstar sind unhandlich. Folgende Zeilen fügen der Konfiguration "cpm2" die Wordstar-Diskette als Laufwerk E: (wie Editor) hinzu: Ausprobieren: Nun ist das Konfigfile "wordstar" überflüssig und die ZIP-Archive können besser in ein Directory für Downloads wandern: Fortsetzung folgt...
----------8<-----{Auf Wiederwink!}----->8----------
Man lese sich (mindestens quer) durch http://schorn.ch/altair.html, suche sich aus dem weiteren dortigen Angebot Diskimages von Betriebssytemen und andere Schmankerln aus und los geht's...
Warum gerade dieser Z80-Emulator?
Yaze-AG will gleich jedem Yaze-AG-User ein Yaze-AG-Ökosystem an eine von ihm vorgegebene Stelle im Homedirectory installiert aufdrücken. Das geht natürlich auch anders, aber das zu ändern ist nicht in 3 Sätzen beschrieben und bremst das "von Null auf CP/M in wenigen Minuten" doch deutlich aus...
Auch Z80pack will diverse Vorgaben durchsetzen, was wie heißt und wo es zu liegen hat, was den Einstieg etwas unübersichtlich macht und daß Z80pack schon bei einfachem "make" (statt erst durch "make install") Sachen in mein Homedirectory installiert ohne mich zu fragen, nehme ich ihm auch irgendwie schon fast ein bißchen übel.
Außerdem zickt "CPM2Z" unter Z80pack mich gerade an bei versehentlichem Wechsel auf ein nicht vorhandenes Laufwerk und ich weiß noch nicht, woran es liegt.
(Mit dem Altair-Emulator zeigen sich ähnliche Probleme mit dem Z80-CP/M2, aber mit 8080-CP/M nicht und mit CPM3 auf beiden Emulatoren nicht. Dazu vielleicht später mal mehr...)
Der hier fokussierte Altair-Emulator aus dem SIMH-Projekt bietet neben 8080 und Z80 auch 8086 (und in der noch Beta genannten Version 4.0 auch 68k) als CPU an. Ein wahrlich gut frisierter Altair! Zugriff auch auf CP/M-86 (und in der 4.0-Beta auch CP/M-68k) ist auf jeden Fall ein Argument, diesem Emulator ein paar wohlwollende Blicke zu gönnen... ;-) ...und man kann natürlich auch andere Emulatoren neben ihm haben, ohne daß er bissig wird...
Es reichen das Kompilat des Emulators plus ein oder mehrere Disk-Images, wenn man die Konfiguration bei jedem Start erst eintippen mag, wenn nicht, kommt noch eine Konfigurationsdatei hinzu.
Auuußerdem ist der Quelltext dieses Emulators recht gutmütig: Schluckauf beim Kompilieren hab ich bisher nur mit der 4.0-Beta unter NetBSD gehabt und vermutlich würd sich der Glitch mit dem shared Memory auch mit etwas mehr Geduld lösen lassen, aber ich brauche gerade nicht wirklich NetBSD-Versionen davon...
----------8<-----{Das nicht wirklich Kleingedruckte:}----->8----------
Das Forum erlaubt keine xz-gepackten Dateiuploads und ich habe mir noch nicht überlegt, ob ich extra deswegen einen Satz Binärchen anders packen will. Bis ich nach gewohnt langer Entscheidungskrise ganz spontan eine Entscheidung treffe, können die Binärchen für diverse verbreitete Betriebssysteme in meiner öffentlichen Wühlkiste (oder hüben oder drüben) gefunden werden.
Noch Fragen, Hauser?
----------8<-----{20160125-1452-CET}----->8----------
Von Null auf CP/M in wenigen Minuten...
Code: Alles auswählen
~$ mkdir tmp
~$ cd tmp
~/tmp$ #
~/tmp$ # den beta-altair-emu holen...
~/tmp$ # zur fehlersuche "-q" bei "wget" weglassen
~/tmp$ #
~/tmp$ wget -q http://schorn.ch/cpm/zip/beta/altairz80l64.gz
~/tmp$ #
~/tmp$ # entpacken...
~/tmp$ #
~/tmp$ gunzip altairz80l64.gz
~/tmp$ #
~/tmp$ # neugierig guggen...
~/tmp$ #
~/tmp$ ls -l
insgesamt 1508
-rw-r--r-- 1 yeti yeti 1540872 Apr 26 2015 altairz80l64
~/tmp$ #
~/tmp$ # ok... mit x-bit wär'er ausführbarer...
~/tmp$ #
~/tmp$ chmod +x altairz80l64
~/tmp$ ls -l
insgesamt 1508
-rwxr-xr-x 1 yeti yeti 1540872 Apr 26 2015 altairz80l64
~/tmp$ #
~/tmp$ # besser!
~/tmp$ #
~/tmp$ # jetzt ein betriebssystem saugen...
~/tmp$ # zur fehlersuche "-q" bei "wget" weglassen
~/tmp$ #
~/tmp$ wget -q http://schorn.ch/cpm/zip/cpm2.zip
~/tmp$ #
~/tmp$ # xxxtrem auspacking
~/tmp$ #
~/tmp$ unzip cpm2.zip
Archive: cpm2.zip
inflating: 128sssd.imd
inflating: app.dsk
inflating: appleiicpm.dsk
inflating: cpm2
inflating: cpm2.dsk
inflating: cpm2_imd
inflating: i.dsk
~/tmp$ #
~/tmp$ # cpm2 ist das konfigfile...
~/tmp$ #
~/tmp$ cat cpm2
d tracks[0-7] 254
attach dsk0 cpm2.dsk
attach dsk1 app.dsk
attach hdsk0 i.dsk
;demo how to use other disk formats in CP/M 2
;it will mount as drive J:
attach hdsk1 appleiicpm.dsk
set hdsk1 format=apple-d2
set cpu 64k
set cpu noitrap
set cpu z80
set cpu altairrom
set cpu nonbanked
reset cpu
set sio ansi
set sio nosleep
boot dsk
~/tmp$ #
~/tmp$ # es empfiehlt sich, den "escape character" umzudefinieren...
~/tmp$ # deFAULT ist ctrl-e, was bei etlichen interaktiven programmen
~/tmp$ # gern für "cursor hoch" benutzt wird...
~/tmp$ # also besser am anfang der datei "d wru 1d" als eigene zeile
~/tmp$ # hinzufügen...
~/tmp$ # ...das macht "ctrl-]" (ctrl-altgr-9) zur schicht-im-schacht-taste...
~/tmp$ #
~/tmp$ echo 'd wru 1d' >cpm2-neu
~/tmp$ cat cpm2 >>cpm2-neu
~/tmp$ mv cpm2-neu cpm2
~/tmp$ #
~/tmp$ # probelauf?
~/tmp$ #
~/tmp$ ./altairz80l64 cpm2
Altair 8800 (Z80) simulator V4.0-0 Beta git commit id: 2026
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
A>dir
A: ASM COM : BDOS MAC : SYSCPM2 SUB : BOOT MAC
A: SYSCPM2Z SUB : CBIOSX MAC : CCP MAC : CCPZ MAC
A: CCPZ TXT : CFGCCP LIB : CFGCCPZ LIB : COPY COM
A: CPU COM : CPU MAC : CREF80 COM : DDT COM
A: DDTZ COM : MOVER MAC : DO COM : DSKBOOT MAC
A: DUMP COM : ED COM : ELIZA BAS : EX MAC
A: EX SUB : EX8080 COM : EXZ80ALL COM : EXZ80DOC COM
A: FORMAT COM : GO COM : HALT COM : PRELIM MAC
A: HDSKBOOT MAC : L80 COM : LADDER COM : LADDER DAT
A: LIB80 COM : LOAD COM : LS COM : LU COM
A: M80 COM : MBASIC COM : MC SUB : MCC SUB
A: MCCL SUB : OTHELLO COM : PIP COM : EC8080 LIB
A: PRELIM COM : ECZ80ALL LIB : RSETSIMH COM : RSETSIMH MAC
A: ECZ80DOC LIB : SID COM : BOOT COM : STAT COM
A: SUBMIT COM : SURVEY COM : SURVEY MAC : SPEED COM
A: SYSCOPY COM : URL COM : TIMER COM : TIMER MAC
A: UNCR COM : UNERA COM : UNERA MAC : USQ COM
A: W COM : WM COM : WM HLP : WORM COM
A: XSUB COM : ZAP COM : ZSID COM : ZTRAN4 COM
A: BOOTGEN COM : DIF COM : HDIR COM : R COM
A: SHOWSEC COM : XFORMAT COM
A>halt
HALT instruction, PC: 00100 (HALT)
sim> q
Goodbye
Wieviele Minuten waren das nun?
;-)
----------8<-----{20160126-0840-GMT}----->8----------
...von Null auf Wordstar in nur knapp etwas mehr als Millisekunden...
...weiter geht's im selben Directory wie zuvor...
Code: Alles auswählen
~/tmp$ wget -q http://schorn.ch/cpm/zip/wordstar.zip
~/tmp$ unzip wordstar.zip
Archive: wordstar.zip
inflating: wordstar
inflating: wordstar.dsk
#
# ...die raus-hier-taste ins konfigfile schummeln...
#
~/tmp$ ( echo 'd wru 1d' ; cat wordstar ) | tee wsneu ; mv wsneu wordstar
d wru 1d
d tracks[0-7] 254
attach dsk cpm2.dsk
attach dsk1 wordstar.dsk
set cpu 64k
set cpu itrap
set cpu z80
set cpu altairrom
set cpu nonbanked
reset cpu
boot dsk
#
# jetzt bitte das terminalfenster auf 80*24 einstellen
# andernfalls kommt die cursorpositionierung etwas durcheinander...
#
~/tmp$ ./altairz80l64 wordstar
Altair 8800 (Z80) simulator V4.0-0 Beta git commit id: 2026
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
A>b:
B>dir
B: VIDATT Z80 : WS OVR : WSCHANGE COM : WSCHANGE OVR
B: WSCHHELP OVR : WSHELP OVR : WSMSGS OVR : WSPRINT OVR
B: WSPRINT TST : WSREADME TXT : WSSHORT OVR : WSU COM
B: WS COM
B>ws wsreadme.txt
Code: Alles auswählen
B:WSREADME.TXT P01 L01 C01 Insert Align Large-File
E D I T M E N U
CURSOR SCROLL ERASE OTHER MENUS
^E up ^W up ^G char ^J help ^O onscreen format
^X down ^Z down ^T word ^I tab ^K block & save
^S left ^R up screen ^Y line ^V turn insert off ^P print controls
^D right ^C down Del char ^B align paragraph ^Q quick functions
^A word left screen ^U unerase ^N split the line Esc shorthand
^F word right ^L find/replace again
L----!----!----!----!----!----!----!----!----!----!----!--------R
--THE README FILE-- <
------------------------ <
<
README contains late-breaking news and tips about WordStar, <
and information about printers. <
<
<
THE DISKS THAT CAME IN YOUR PACKAGE <
----------------------------------- <
<
The file HOMONYMS.TXT is included on the Speller disk <
contrary to what is listed in Appendix D. <
<
<
Raus kommt man per "ctrl-kq" und danach "x", aber vorher noch in etwas Nostalgie baden schadet nix... ganz bestimmt... ich hab's getestet... ehrlich!
;-)
...und wie man aus dem Emulator raus kommt, ist ja auch schon bekannt...
----------8<-----{20160127-0711-GMT}----->8----------
Daten zwischen Gastgeber und CP/M austauschen
Diesmal gibt es fast nur Lesestoff. Ich bin sicher, daß die Hilfstexte der folgend angeworfenen Programme ausreichen, um ihrer korrekten Benutzung auf die Spur zu kommen.
Code: Alles auswählen
~/tmp$ ./altairz80l64 cpm2
Altair 8800 (Z80) simulator V4.0-0 Beta git commit id: 2026
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
A>hdir
HDIR V-1.04 (12-Jun-10) SIMH Interface V004
Usage: HDIR [<path>] [L]
Show the contents of the optional underlying host directory <path>
Option L transforms the <path> to all lower case
128sssd.imd altairz80l64 app.dsk appleiicpm.dsk
cpm2 cpm2.dsk cpm2.zip cpm2_imd
i.dsk wordstar wordstar.dsk wordstar.zip
A>r
READ V-2.25 (19-May-14) SIMH Interface V004
Usage: READ <file name> [L]
Binary copy <file name> from host environment. L = use lower case for name.
Examples
READ bdos.mac copy BDOS.MAC to BDOS.MAC
READ bdos.mac L copy bdos.mac to BDOS.MAC
READ *.mac copy all files ending with .MAC
READ a:bdos.mac copy BDOS.MAC to A:
READ a:*.com copy all .COM files to A:
READ src/bdos.mac copy SRC/BDOS.MAC to BDOS.MAC
READ src/a:bdos.mac copy SRC/BDOS.MAC to BDOS.MAC on A:
READ src/*.mac copy all .MAC files from directory SRC
READ src/*.MAC L copy all .mac files from directory src
READ src/a:test.* copy all TEST.* files from directory SRC to A:
A>w
WRITE V-1.17 (01-Mar-08) SIMH Interface V004
Usage: WRITE <file name> [B|T]
Copy <file name> to host environment. Default is text, B for binary, T for Text
Examples
WRITE BDOS.MAC copy BDOS.MAC as text file
WRITE PIP.COM B copy PIP.COM as binary file
WRITE PIP.COM copy PIP.COM as binary file [.COM .REL .DAT imply B]
WRITE TEST.DAT T copy TEST.DAT as text file
WRITE *.COM copy all files matching *.COM as binary files
WRITE SRC/BDOS.MAC copy BDOS.MAC to directory SRC as a text file
WRITE COM/*.COM B copy *.COM to directory COM as binary files
Code: Alles auswählen
A>b:
B>dir *.spl
B: ACKER SPL : BOOTGEN SPL : DIF SPL : FAC SPL
B: FORMEL SPL : HDIR SPL : PINST SPL : PRIM SPL
B: PROLOGZ SPL : READ SPL : RELDUMP SPL : SHOWSEC SPL
B: SIEVE SPL : SPEED SPL : SYSCOPY SPL : WC SPL
B: XFORMAT SPL : WRITE SPL : URL SPL
Code: Alles auswählen
B>type c.sub
; compile an SPL program
SPL $1
L80 $1,$1/N/E
ERA $1.REL
B>do c hdir
SuperSUB V1.1
B>; COMPILE AN SPL PROGRAM
B>SPL HDIR
SPL V-1.03.03.10 (17-Dec-06 13:41:11)
No errors. Code = 1001. Free memory = 29160.
B>L80 HDIR,HDIR/N/E
Link-80 3.44 09-Dec-81 Copyright (c) 1981 Microsoft
Data 0103 0640 < 1341>
45591 Bytes Free
[027F 0640 6]
B>ERA HDIR.REL
Code: Alles auswählen
B>b:hdir
HDIR V-1.04 (12-Jun-10) SIMH Interface V004
Usage: HDIR [<path>] [L]
Show the contents of the optional underlying host directory <path>
Option L transforms the <path> to all lower case
128sssd.imd altairz80l64 app.dsk appleiicpm.dsk
cpm2 cpm2.dsk cpm2.zip cpm2_imd
i.dsk wordstar wordstar.dsk wordstar.zip
----------8<-----{20160127-1155-GMT}----->8----------
Aus 2 mach 1...
Extra Konfigurationen für CP/M mit und ohne Wordstar sind unhandlich. Folgende Zeilen fügen der Konfiguration "cpm2" die Wordstar-Diskette als Laufwerk E: (wie Editor) hinzu:
Code: Alles auswählen
~/tmp$ awk '1;/ dsk1/{print "attach dsk4 wordstar.dsk" }' cpm2 > cpmX ; mv cpmX cpm2
~/tmp$ fgrep ' dsk' cpm2
attach dsk0 cpm2.dsk
attach dsk1 app.dsk
attach dsk4 wordstar.dsk
boot dsk
Code: Alles auswählen
~/tmp$ ./altairz80l64 cpm2
Altair 8800 (Z80) simulator V4.0-0 Beta git commit id: 2026
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
A>e:
E>dir
E: VIDATT Z80 : WS OVR : WSCHANGE COM : WSCHANGE OVR
E: WSCHHELP OVR : WSHELP OVR : WSMSGS OVR : WSPRINT OVR
E: WSPRINT TST : WSREADME TXT : WSSHORT OVR : WSU COM
E: WS COM
E>halt
HALT instruction, PC: 00100 (HALT)
sim> q
Goodbye
Code: Alles auswählen
~/tmp$ rm wordstar
~/tmp$ mkdir downloads
~/tmp$ mv -v *.zip downloads/
„cpm2.zip“ -> „downloads/cpm2.zip“
„wordstar.zip“ -> „downloads/wordstar.zip“
----------8<-----{Auf Wiederwink!}----->8----------