Von Null auf CP/M in wenigen Minuten...

Offtopic Themen bitte hier hinein.
Antworten
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Von Null auf CP/M in wenigen Minuten...

Beitrag von yeti »

----------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...

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
...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...

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
...als "Textmodus-Bildschirmschnappschuß"...

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.                                      <
                                                                               <
                                                                               <
...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.

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
Ihre Quelltexte liegen auf B: als "HDIR.SPL", "READ.SPL" und "WRITE.SPL":

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
Kompilieren kann man sie mittels Sktipt "C.SUB":

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
Fertig übersetzt... ausprobieren:

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
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:

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
Ausprobieren:

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
Nun ist das Konfigfile "wordstar" überflüssig und die ZIP-Archive können besser in ein Directory für Downloads wandern:

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“
Fortsetzung folgt...

----------8<-----{Auf Wiederwink!}----->8----------
Zuletzt geändert von yeti am So 6. Mär 2016, 01:17, insgesamt 12-mal geändert.
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Von Null auf CP/M in wenigen Minuten...

Beitrag von yeti »

----------8<-----{201602xx-yyzz-GMT}----->8----------

TBC!

...

----------8<-----{Klappe zu - Affe tot!}----->8----------
Zuletzt geändert von yeti am Di 2. Feb 2016, 01:51, insgesamt 15-mal geändert.
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Von Null auf CP/M in wenigen Minuten...

Beitrag von yeti »

Ob blond, ob braun... reserviert für Extensions...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
Micha
Beiträge: 813
Registriert: Sa 24. Mär 2012, 21:45
Wohnort: Merseburg
Kontaktdaten:

Re: Von Null auf CP/M in wenigen Minuten...

Beitrag von Micha »

zumindest hast du es geschafft, mich von null auf hundert total zu verwirren.
Die Welt könnte so wundervoll verständlich sein, wenn alle nur maximal meinen IQ hätten... oder noch weniger :LACHEN
Also vonder Sache här tätch jetz ma behaupten "Mischn ägomplischd" un so...
Antworten