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

Letzte Änderung am 07.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ück zur Hardware mc-Computer:
zurück zum EURO-Z80:

Aus Zeitgründen können keine Anfragen beantwortet werden, dazu gibt es die Z80- und CP/M-Foren.

Hier werde ich meine wichtigsten System-Programme für CP/M2.2 und die Utilities beim mc-Computer und NDR-Rechner vorstellen. Die MS-DOS/Windows-Programme für den Z80 folgen nach und nach, z.B. der Z80MU, SCOPY, AFD-Debugger, ASM-Assembler usw..

Eine der größten CP/M-Programmsamlungen ist hier: http://www.znode51.de/index.htm
Übersicht:

1. Monitorprogramm: Boot von Epromfloppy:
1.1 Bootabfrage:
1.2 Bootroutine:
1.3 Read/Write im CP/M-BIOS:
1.4 Download:

2. System- und Programm-Eproms für Epromfloppy:
3. Universal-BIOS für verschiedene Diskettenformate:
4. Universalformatierer U.COM:
5. FNDBD.COM:
6. RAM-Floppy löschen RFL.COM:
7. Centronics-Schnitstelle Drucker CENT.COM:
Teil B: CP/M 2.2 und Programme

1. mc-Computer und CP/M2.2:
2. mc-Computer und Speicherbelegung:
3. Debugger DTTZ27.COM:
4. Microshell Unix-Feature für CP/M:
5. BIGZAP.COM CP/M2.2 Disketten- Editor:
1. Monitorprogramm mit Boot von Eprom-Floppy: top
Die Bildschirmfotos zeigen die Monitormeldung "MC-Monitor EPR-Start V 3.4, AL=L, RDK / HE" mit den Bootmöglichkeiten EPR-Boot = 0, 8-Zoll = 1, 5 1/4 = 2:

Ich verwende das angepasste Monitorprogramm Vers. 3.4 (Eprom-Binärdatei MONHEMC.BIN, siehe Abschnitt 1.4: Download MONHEMC.BIN) für den Boot von Eprom-Floppy, 5,25-Zoll- und 8-Zoll-Laufwerkkombination und RAM-Floppy. Andere Laufwerkkombinationen werden mit BIOS-Patch-Files, z.B. HB0.COM oder HB1.COM nachgeladen.
mc-Computer
und die Programme auf der Eprom-Floppy, also Textverarbeitung, Debugger, Formatierprogramm, Hebas (Basic) usw.
Im ursprünglichen Monitor V 3.4 sind folgende Änderungen für den Boot von der Epromfloppy ohne DMA notwendig.

1.1 Bootabfrage: top
Nach dem Einschalten des Rechners meldet sich mit der Eingabe "i" der Monitor. Nach der Eingabe "0" (= Null) für den Boot von der Eprom-Floppy springt das Monitorprogramm zur Routine "EPRBOO". Diese spricht die Eprom-Floppy über die Hardware-Adresse "EPRFL" (5h = Daten) an. Die Zähler "TRAEPR" (0h = Spur), "LOSEPR" (6h = Sektor High) und "HISEPR" (2h = Sektor Low) werden auf Null gesetzt.
1.2 Boot-Routine: top

Aus dem System-Eprom wird CP/M 2.2, also CCP, BDOS und BIOS ins RAM geladen.

Der Z80-Befehl INIR (IN (HL),(C); INC HL; DEC B ungleich 0) lädt aus dem System-Eprom ab Adresse 0 insgesamt 7168 Bytes (28 x 256 = 7168 = 1C00h) in den RAM-Bereich ab Adresse D400h bis Adresse DC00h.

Dort beginnt der Console Command Processor CCP ( siehe CP/M2.2). Am Ende der Boot-Routine springt der Monitor nach EA00h ins BIOS und CP/M startet.
1.3 Read/write ohne DMA von Eprom- und RAM-Floppy: top

Die Lese- und Schreibfunktionen für die Programme auf der Eprom-Floppy sind im CP/M-BIOS abgelegt. Sie sind auch in Patch-Prgrammen, z.B. HB0.COM enthalten.
1.4 Download:

Download des Monitor Vers. 3.4 MONHEMC.BIN und des Quellcodes MONHEMC.180 für den SLR180-Assembler.

Download des ursprünglichen Monitors MC01MON.BIN.

Im mc Heft 2/1986 wurde ein Fehler in der Floppy-Routine im Monitor Vers. 3.4 dokumentiert.
2. System- und Programm-Eproms: top

3. Universal-BIOS für verschiedene Diskettenformate: top

Für die Verwendung verschiedener Diskettenformate habe ich auf der Eprom-Floppy mehrere BIOS-Patch-Programme abgelegt, so z.B. HB0.COM.

Die ursprüngliche Quelle war das Spezial-CBIOS (SBIOS.ASM) von G. Sternberg 1985 für den mc-cpm-Computer. In einer Tabelle (TABBASE) sind dort zwei Mini-, 2 Maxi-Laufwerke und eine 128 KByte-RAM-Floppy definiert.
In dieser Tabelle sind für jedes Laufwerk der Typ und das Aufzeichnungsformat mit nur 4 Bytes beschrieben (1.Byte: Modus, 2. Byte: Disk-Vorderseite, 3. Byte: Disk-Rückseite, 4. Byte: letzte Spur Vorderseite. Die Tabelle liegt direkt hinter den 17 CP/M-Sprungvektoren im BIOS. Eprom- und RAM-Floppy benötigen nur 4 Null-Bytes (Dummy).

Am Ende des SBIOS ist die Anzahl der Laufwerke definiert. G. Sternberg hatte eine ausführliche Dokumentation des SBIOS zu den Programmen erstellt, hier der Download: SBIOS.PDF.
Ich habe das SBIOS erweitert und eine kleine Laderoutine an den Programmanfang dazu gesetzt. Wird das Programm gestartet, überschreibt es im mc-Computer-CP/M2.2 ab Adresse EA00h die BIOS-Floppy-Routine mit dem Patch. Man erspart sich so das umständliche Anfertigen eines neuen CPM-Systems. Download von HB0.Z80 und HB0.ASM.
4. Universal-Formatierer: top

Für den mc-Computer und NDR-Rechner gab es von R.-D. Klein ein universelles Formatierprogramm U.COM mit der Quelle U.MAC (Download von U.Z80 und von U.MAC
Die Bildschirmfotos zeigen den Formatierungsvorgang einer 5 1/4-Zoll-Diskette im ECMA70-Format für den CP/M 2.2-Rechner für die Floppy-Baugruppe FLO1 und FLO2.
Nach dem Formatieren wird die Diskette noch geprüft.
5. FNDBD-Prüfprogramm: top

Das Prüfprogramm FNDBD.COM sucht defekte Sektoren und reserviert sie in "_UNUSED_BAD". Es funktioniert bei meinen verschiedenen Diskettenformaten, so bei ECMA70, NDR-Format, Eprom- und 1-MByte-RAM-Floppy, wie die Bildschirmfotos zeigen ( Download als FNDBD.Z80).
6. RAM-Floppy löschen: top
Die 1 MByte-RAM-Floppy (c't-Projekt) wird mit einem kleinen Programm RFL.COM nach dem Einschalten des CP/M2.2-Rechners gelöscht. Die Spuren 0,1,2 und 3 werden mit dem Lösch-Byte E5 beschrieben siehe RFL.TXT.

Nach dem Übertragen vom PC auf einen Z80-Rechner (z.B. mit SUPERCOPY, 22DISK usw. ) ist RFL.Z80 vor dem Start in RFL.COM umzubenennen (Download RFL.Z80).
1 MByte-RAM-Floppy Nr. 2
7. Centronics-Schnittstelle Drucker CENT.COM: top
Der Monitor 3.4 enthielt nur die Routine LO (LST: ab Adresse 0FB00h) für einen seriellen Drucker. Möchte man einen Drucker mit Parallel-Schnittstelle anschließen, muss im Monitorprogramm diese Routine geändert werden.
Das kleine unter CP/M 2.2 aufzurufende Programm (siehe CP/M-Sonderheft, S. 71) verwendet die PIOA als Steuerport (Bit 6 als Busy-Signal, Bit 7 = Strobe-Signal) und die PIOB als Datenport (Bit 0 - 7). Die Portadressen sind für PIOA-Data 0F4h, PIOA-Command 0F5h, PIOB-Data 0F6h und PIOB-Command 0F7h, wenn auf der SIO/PIO-Platine die Brücken an V1 (74LS85) offen sind.

Eine kleine Verschieberoutine legt das eigentliche Programm im Monitor je nach Monitor-Version ab Adresse FB00h, F9E0h oder bei FF20h ab und überschreibt so den Monitor.
Download für Vektor LO (LST) 0F9E0h: Print-File CENT2-PRN.PDF (Listing mit Speicher-Adressen)
Download Assembler-File CENT2.TXT
Bei meiner Monitorversion muss mit dem Befehl ".Phase" des Assemblers die Adresslage der Centronics-Routine (Vektor LO (LST:) auf 0FF20h eingestellt werden. Download CENT43.COM

zurück zum Anfang