CPM - Jena

Wie erstellt man eine Systemdiskette für das Z1013 CP/M System?

Die Beschreibung bezieht sich auf das CP/M System mit BIOS 5.03 welches sich im Quelltext auf der beim KCemu beiliegenden Diskette befindet.
Zuerst stellt sich die Frage: Wozu der Aufwand? Dazu wäre zu sagen, daß sich das BIOS in vielen Bereichen konfigurieren läßt. So können verschiedene Tastatur-Tabellen, Schnittstellen und Laufwerke eingestellt werden. Für die aktuelle Emulator-Version ist jedoch nur das Konfigurieren der Bildschrimdarstellung und der Laufwerke sinnvoll, da die anderen Komponenten noch nicht unterstützt werden.

Vorgenommen werden die Einstellungen in der Datei BIOS503.MAC. Dazu ist die Datei mit einem beliebigen Text-Editor zu bearbeiten. Auf der vorliegenden Diskette ist ein relativ einfacher Editor namens TED dabei.

Systemkompatibilität
CPA		EQU 1		1 für CP/A-Kompatibilität
SCP		EQU 0		1 für SCP-Kompatibilität
Laufwerkskonfiguration
LW1.2		EQU 0		1 bei 1.2 Laufwerk
LW1.41		EQU 0		1 bei 1.4 Laufwerk einseitig (1*80)
LW1.42		EQU 0		1 bei 1.4 Laufwerk zweiseitig (2*40)
LW1.6		EQU 1		1 bei 1.6 Laufwerk
LW26		EQU 0		1 bei 2-tem physischen 1.6 Laufwerk
LW22		EQU 0		1 bei 2-tem physischen 1.2 Laufwerk
Einstellung der Tastatur-Tabelle
K7659		EQU 1		1 bei Tastatur K7659
K7652		EQU 0		1 bei Tastatur K7652
K7669		EQU 0		1 bei Tastatur K7669
K080B		EQU 0		1 bei Tastatur 12KE080B
Schnittstellen zu Peripheriegeräten bzw. Erweiterungen
CENTRO		EQU 1		1 bei CENTRONICS-Anschluss
V24		EQU 0		1 bei V24-Anschluss
S3004		EQU 0		1 bei S3004
V24MOD		EQU 0		1 bei Druck über V24-Modul / 0 bei Userport
MAUS		EQU 0		1 bei Mausanschluss
CTCUHR		EQU 0		1 bei Uhr über eine ctc
RTC		EQU 1		1 bei RTC 72421 A
ADRTC		EQU 1		1 bei RTC an Port 70H-7fh / 0 bei RTC an Port 20H-2fh
Floppy-Ansteuerung
SFDCK		EQU 1		1 bei Schneider-Karte / 0 bei Kramer-Schaltung
Bildschirmdarstellung
GDCK		EQU 1		1 bei 80x25 Bildschirm mit GDC-Karte
Z1013CRT		EQU 0		1 bei Z1013 64*16 Bildschirm
ZUGRSYN		EQU 1		Bildschirmzugriffs-Synchronisation
1 bei nichtsichtbaren Bildschirmzugriff / 0 bei staendigem Zugriff
Einstellungen für RAM-Floppies
RBRF		EQU 0		1 bei RB-Spezial-RAM-Floppy
RF2		EQU 1		1 bei 2 RAM-Floppy-Karten nach MP 3/88
RF1		EQU 0		1 bei einer RAM-Floppy nach MP 3/88
sonstige Einstellungen
TAPE		EQU 0		1 wenn CP/M von Kassette geladen wird
CCPCOPY		EQU 0		1 wenn CCP-Kopie angelegt werden soll

Sind die gewünschten Einstellungen erfolgt und die Datei gespeichert, kann das BIOS übersetzt werden. Dazu ist auf der Diskette der Assembler M80.COM vorhanden. Das Übersetzen erfolgt mit dem Aufruf:

 D>M80 BIOS503.ERL=BIOS503
 * BIOS-Uebersetzung PASS 1 *
 * BIOS-Uebersetzung PASS 2 *
  
 No Fatal error(s)
 
 D>

Wurde der Übersetzungsvorgang erfolgreich abgeschlossen, befindet sich auf der Diskette die übersetzte Datei BIOS503.ERL. Diese muß jetzt noch mit dem Linker in eine ausführbare Datei (BIOS503.COM) gebunden werden. Das erfolgt mit dem Befehl LINKMT:

 D>LINKMT BIOS503
 
 Link/MT+ Release 5.5
 
 
 Processing file- BIOS503 .ERL
 
 Undefined Symbols:
 
 No Undefined Symbols
 
 
 0048 (decimal) records written to .COM file
 
 Total Data: 0000H bytes
 Total Code: 17F6H bytes
 Remaining:  8A0AH bytes
 
 Link/MT+ Release 5.5 processing completed
 
 D>

Jetzt befindet sich das fertige BIOS auf der Diskette, muß aber noch an die Stelle geschaft werden, an der der Bootlader das System erwartet. Dazu wird der systemunabhängige Teil aus der Datei CCPBDOS.SYS und das frisch übersetzte BIOS mit dem Programm POWER in den Speicher geladen und auf die ersten beiden Spuren der Diskette geschrieben. Dazu wird als erstes das Programm POWER gestartet…

 POWER
  
 POWER 3.03 on CP/M 2.22 1/2
 
 Copyright (c) 1981, 1982 by PAVEL BREDER
 All rights reserved. 01/03/83
 D0=

…die beiden Dateien hintereinander in den Speicher ab Adresse 4000h geladen und dann auf die Diskette auf Spur 0, Sektor 1 geschrieben.

 D0=LOAD CCPBDOS.SYS 4000 Last Address:55FFH 44 sectors
 D0=LOAD BIOS503.COM 5600 Last Address:6DFFH 48 sectors
 D0=WRITE 0 1 4000 xx
 G=----:-- T=0000 S=001 PS=001 At:4000-407F
 G=----:-- T=0000 S=002 PS=002 At:4080-40FF
 G=----:-- T=0000 S=003 PS=003 At:4100-417F
 ...

Das xx beim WRITE-Kommando ist die Anzahl der Sektoren, die auf Diskette geschrieben werden sollen. Diese ergibt sich aus der Addition der beiden Sektorzahlen, die bei den LOAD-Kommandos ausgegeben wird. Beim Ausführen des WRITE-Kommandos wird angezeigt welche Sektoren geschrieben werden. Wenn die Anzeige pausiert, kann das Kommando mit der Enter-Taste fortgesetzt werden. Erscheint wieder der Prompt von POWER sollte die Diskette ein bootfähiges System enthalten was durch einen Reset des Systems leicht zu prüfen ist.

Dateien