mc-Z80-CP/M2.2-Computer 1982: Betriebssystem und Programme

test-ndr/mc-prog1.htm
Letzte Änderung am 26.07.22/03.02.21/25.01.21/08.01.11/10.12.2010 (C) Dr. Juliane Hehl

Impressum gem. DSGVO
Übersicht:

1.1 Monitor-Programm:
1.2 Monitor-Verschiebung:
1.3 Initialisierung:
1.4 EPROM-Boot:
1.5 Hardware-Umschaltung:

2. CP/M2.2 Speicherbelegung:
3. DDTZ.COM und DDTZ.DOC:
4. Microshell Unix-Features:
5. BIGZAP.COM CP/M2.2 Disketteneditor:

Geschichte von CP/M: siehe Buch von Bernd Leitenberger http://www.bernd-leitenberger.de/cpm.shtml und Wikipedia.
Roadmap:
1. mc-Computer Eprom/Speicherbelegung:

1.1 Monitorprogramm im EPROM (siehe mc Heft 10/1982, S. 74): top

EPROM (Erasable Programmable Read Olny Memory) und RAM (Random Acces Memory) sind eine Voraussetzung für die Funktion
eines Computers. Nach dem Einschalten beginnt die Z80-CPU bei Adresse 0 des EPROMs mit der Befehlsbearbeitung.

Beim mc-Computer sieht es so aus: Ein EPROM 2732 (32768 Bit, 4096 Bytes, 0 - FFFh, 8 Adressleitungen A0 - A7)
enthält ein Monitorprogramm mit einem Auto-Start-Teil ab Adresse 0 und einem Verschiebe-Programm.

Es folgen ab Adresse 1Dh einfache Programmteile für die Tastatureingabe, für die Ausgabe von Zeichen am Bildschirm,
Debuggerfunktionen, Routinen zur Floppy-Verwaltung (eventuell EPROM- und RAM-Floppy) und zum Kaltstart (Booten) des CP/M-Betriebssystems.
1.2 Monitor-Verschiebung: top

Diese Monitor-Programmteile sind aber mit dem Assemblerbefehl ".PHASE 0F000h" für die Adresse ab 0F000h assembliert.
Nach dem Start ab Adresse 0 im Eprom verschiebt sich der Monitor in den oberen Speicherbereich des RAMs (ab F000h - FFFFh).

Damit wird im RAM der Adressbereich ab Adresse 0 für das Betriebssystem CP/M frei, das besonders den RAM-Bereich von 0 - 100h
braucht. Der Monitor blendet das Eprom aus, schaltet das RAM dazu und beginnt bei der Adresse F000h mit dem Monitorprogramm.
monitor
1.3 Hardware Initialisierung: top

Zuerst werden die Ein- und Ausgabe-Bausteine (SIO/PIO) auf der OUT1-Platine initialisiert und dann die Startmeldung
des Monitors ausgegeben (Bild 1). Dann wird ein CP/M-Boot-Lader von Diskette Spur 0 Sektor 1 geladen, der dann das
60K-CP/M-Betriebssystem nach D400h lädt.
monitor
1.4 EPROM-Boot: top

Beim EPROM-Boot kann gleich das CP/M-Betriebssystem aus dem System-Eprom ins RAM ab Adresse D400h geladen werden (siehe Einzelheiten).
monitor
1.5 Hardware Umschaltung EPROM - RAM (siehe mc Heft 9/1982, S. 22 und Handbuch zu SYS1): top

Grundsätzlich muss also die CPU zunächst aus dem EPROM lesen und bei Adresszugriff auf A15 das Eprom sperren und das RAM zuschalten.

Der Reset-Impuls der Reset-Logik (Monoflop J14, 74LS122) wird auch zur Monitor-Bootlogik (J9 74LS00, RS-Flip-Flop) geführt,
das dann an Pin 6 eine "0" ausgibt. Letztlich wird das EPROM freigegeben, wenn die Adressleitung A15 und MEMRQ auf "0" liegen.
2. CP/M 2.2-Speicherbelegung: top

Beim mc-Computer hat das RAM eine Größe von 64 KByte (65536 Bytes, A0 - A15, 0 - FFFFh) und besteht aus 8 dynamischen
8-KByte-Speichern, z.B. HM4864 oder NEC 6164. Sie werden im Multiplex-Betrieb angesteuert.

Das 60K-CP/M 2.2-Betriebssystem belegt den Speicher mit 5 Teilen:

ab 0 - FFh: 256 Bytes, Kommunikationsbereich, reserviert für Sprungbefehle, FCB und DMA-Bereich

1. Teil:
0000 - 0002: C3 00EA: Sprung zum BIOS ab EA00h: CP/M-Warmstartroutine
0003 - 0003: 80 h LPT1: IO-Byte
0004 - 0004: voreingestellte Laufwerke (A = 0, P = 15 (Fh))
0005 - 0007: C3 00DC: Sprung zum BDOS ab DC00h:
0008 - 0027: Interrupt-Bereiche 1-5, nicht verwendet
0030 - 0037: Interrupt-Bereich 6, reserviert
0038 - 003A: Restart 7, z.B. für Debugger DDT
003B - 003F: reserviert
0040 - 004F: 16 Byte, nicht verwendet (früher CBIOS)
0050 - 005B: rserviert
005C - 007C: erster FCB (File Control-Bloc) für CCP
007D - 007F: FCB für RANDOM-Zugriff
0080 - 00FF: DMA-Bereich, Puffer für Diskette, auch für CCP (Kommandozeile)

2. Teil:
ab 0100h - D344h: TPA (Transient Program Area): alle externen CP/M-Programme, die auch den CCP überschreiben dürfen.

3. Teil:
ab D400h - DBFFh: CCP (Console Command Processor): Kommando-Interpreter, Schnittstelle zwischen Benutzer und CP/M

4. Teil:
ab DC00h - E9FFh: BDOS (Basic Disc Operating System): Grundfunktionen Ein-Ausgabegeräte und Diskette

5. Teil:
ab EA00h - F0000h: BIOS (Basic I/O-System): Grundfunktionen für die Schnittstelle zwischen Benutzer und CP/M

Monitor
Von F000h - FFFFh hat das Monitorprogramm seinen Platz.
Bei einem Minimal-System mit 20K-CP/M-System beginnt der CCP bei 3400h, das BDOS bei 3C00h und das BIOS bei 4A00h.
Der Verschiebungsfaktor b (BIAS) für ein 60K-CP/M-System beträgt 0A000h, wobei von der Speichergröße 20K abgezogen
werden (60K - 20K = 40K; 40 x 1024 Bytes = 40960d = 0A000h).
3. DDTZ.COM Z80-Debugger: top

Der Z80-Debugger DDTZ.COM ist mir am liebsten. Im DOS-CMD-Fenster mit Z80-Emulator EMUZ80 kann man so schnell
einige Z80-Routinen testen. Auch die CPU HD64180 wird unterstützt.

Den CP/M-Z80-Debugger DDTZ.COM von C.B. Falconer gab es in der Version 2.7 als Archivdatei DDTZ27.ARK im Netz.
z.B. bei http://scovetta.com/archives/walnut-creek/JSAGE/ZNODE3/ASM und enthielt auch die Quellcodes.
Das Archiv konnte dann unter WIN-XP z.B. mit dem Entpacker PKXARC (Vers. 3.5 von 1987) von PKWARE Inc. entpackt werden.

Man muss dann die Datei DDTZ27.CPM in eine DDTZ27.COM-Datei umbenennen.
siehe auch die englische Beschreibung DDTZ.TXT

DDTZ.COM and its associated documentation and other files are copyright (c) 1980-1988 by C.B. Falconer.
They may be freely copied and used for non-commercial purposes ONLY.

Download Archiv DDTZ27.ARC und die deutsche Beschreibung DDTZ.ODT

Für Win 10 gibt es von Computerbild den universellen Ent-Packer IZarc Version 4.4 zum Download IZarc
von https://www.izar.org
monitor
4. MicroShell von NEW Generation Systems, inc: top

Diese Ergänzung fügt dem Betriebssystem CP/M wichtige UNIX-Merkmale zu, die das Arbeiten mit CP/M besonders
erleichtern und die ich nicht mehr missen möchte. Sie fehlen bei "Windoof" noch immer. Die Zeitschrift mc
berichtete 1983 in Heft 5, Seite 66 und Heft 6, S. 34 darüber.

Ich kaufte 1985 für meine Veröffentlichungen das CP/M-Programm MicroShell mit deutschem Handbuch (Markt & Technik
Software Verlag) und es war damals sein Geld wert.

Heutzutage kann man es aus dem Internet downloaden: www.z80.eu/downloads/microshell2.zip.
Das Original-Manual kann man sich hier anschauen: Microshell2.PDF.
monitor
Einige Besonderheiten:

Ich habe Microshell in die Epromfloppy beim MC-computer integriert. Damit kann das Programm gleich gestartet werden.
Es meldet sich mit einem erweitertem Prompt A(0). Zurück zum normalen CP/M gelangt man mit "-X".

Nun arbeitet man z.B. mit Laufwerk C (NDR-Format). Microshell sucht automatisch auf Laufwerk A (Epromfloppy)
beim Eingeben eines der dort abgelegten Programme, z.B. DDTZ.COM.

Die Umleitung von Ausgaben (output redirection) in eine Datei mit dem Befehl ">" ist sehr praktisch, z.B.
zum Abspeichern einer Bildschirmausgabe. So wird mit "DIR >Verzeichnis.dat" das Directory in einer Datei abgespeichert,
aber nicht mehr am Bildschirm angezeigt.

Mit dem Befehl "DIR >+ Verzeichnis.dat" wird das Verzeichnis zusätzlich am Bildschirm angezeigt.

Der Befehl "TYP" listet Textdateien seitenweise auf und nicht durchlaufend. Man kann gleich mehrere Befehle,
getrennt durch ein Semicolon, hintereinander eingeben, die dann nacheinander abgearbeitet werden.

Der Befehl $P entspricht dem "CONTROL-P" zur Druckerausgabe. "dir >+ $P" zeigt das Directory am Bildschirm an und
druckt es, ohne allerdings den Befehl "DIR" mit zu drucken.

Weiterhin kann mit dem Befehl (>) natürlich auch ein Programm seine Konsoleneingaben aus einer Datei anstatt von der Tastatur erhalten.
Der Befehl "|" gibt die Konsolenausgabe eines Programms an ein zweites Programm als Eingabe, z.B. Prog1 |+ Prog2
mit Bildschirmausgabe.

Auf die mächtige Scriptsprache will ich nur hinweisen. Im Handbuch ist auch die Geschichte von Microshell zu finden.
5. BIGZAP-Disketteneditor für CP/M 2.2: top

Mit einem CP/M-Disketteneditor wie BIGZAP.COM von Dieter-Joachim Schäfer / Gerhard Bundle (kostete 1984 über 200 DM)
werden Sektoren auf CP/M-Disketten editiert und der Inhalt als Hardcopy ausgedruckt. Ein Inserat in der
Computerzeitschrift mc 9/1983 machte mich damals darauf aufmerksam. Die Version 3.03 ist auch für CP/M3 geeignet.
Bigzap-Disk-Editor Bigzap-Disk-Editor
Beispiel: Bilder von ECMA-70-Sektoren einer CP/M-Boot-Diskette

Mit diesem CP/M-Disketteneditor und Microshell kann man mit dem Befehl BIGZAP >* SEKTOR.DOC zusätzlich zur
Bildschirmausgabe die Druckerausgabe der Programmfunktion "H = Hardcopy" in eine Datei SEKTOR.DOC schreiben.
Eine leere, formatierte Diskette im ECMA-70-Format enthält nur das Löschbyte E5. Als erstes Byte im Directory-Eintrag
kennzeichnet es auch gelöschte Dateien. Mit dem CP/M-Programm SYSGEN.COM wird das Betriebssystem CP/M auf die neue Diskette übertragen.
Ecma-70-Sektor
Die Spur 1 Sektor 0 (ECMA-70-Laufwerk B) enthält nun den Bootlader für das CP/M-System. Dieser kopiert
beim Booten das CP/M-System in den RAM-Bereich ab 0D400h. Bei der EPROM-Floppy (Laufwerk A) ist es Spur 0 Sektor 0.
Ecma-70-Sektor Bigzap-Disk-Editor
Werden einige Programme auf diese Diskette kopiert, so ist in Spur 4, Sektor 1 das Directory enthalten.
Das erste Programm ist hier der Disk-Editor BIGZAP, der in den Sektoren 2 - 8 abgelegt ist. Das sechste
Programm HEBASMC.COM benötigt zwei Directory-Einträge. Das Byte mit dem Wert 80H weist darauf hin.
Ecma-70-Sektor Bigzap-Disk-Editor Bigzap-Disk-Editor
2021 gibt es ein ähnliches Programm für WIN10 von der Fa. Miray: DiskSpy2 ab 15.00 Euro. Es bootet von einer Diskette oder CD.

Valid HTML 4.01! Validation für HTML 4.01 - diese Seite validieren:

zurück zum Anfang top