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

Letzte Änderung am 08.01.2011 /10.12.2010 Copyright Dr. Hans Hehl

Impressum gem. TMG Paragraph 5

zur Startseite: Mercedes-Geländewagen v. Dr. Hehl Hans

zur NDR-Rechner-Seite:
zur Hardware: mc-Computer:
zur mc-Computer-Seite 2:

Aus Zeitgründen können keine Anfragen beantwortet werden, dazu gibt es die Z80- und CP/M-Foren.
Ü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 Bernd Leitenberger http://www.bernd-leitenberger.de/cpm.shtml
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 (oder Terminal), 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 (z.B. bei http://scovetta.com/archives/walnut-creek/JSAGE/ZNODE3/ASM) und enthält auch die Quellcodes. Das Archiv kann 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.ARK und die deutsche Beschreibung DDTZ.ODT
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 integriert. Damit kann es 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

zurück zum Anfang