ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

CP/M 68K Anpassung

Änderungen und Erweiterungen am BIOS

Das BIOS ist der Teil von CP/M, der die Unabhängigkeit des Betriebssystems von der Hardware gewährleistet. Im BIOS sind immer dann Erweiterungen notwendig, wenn die Hardware des Systems grundlegend geändert wird. Das BIOS des NKC steht als Quellcode in der Datei NDRBIOS.S zur Verfügung. Um Änderungen am BIOS vornehmen und übersetzen zu können stellt man ich am besten eine Diskette mit den folgenden Dateien zusammen:
NDRBIOS.S, CPMLIB und CPM.REL
EDITRDK.68K
AS68.68K und AS68SYMB.DAT
LO68.68K, SIZE68.68K und RELOC.68K
Jetzt kann man die Änderungen oder Erweiterungen am BIOS vornehmen. Es sollte unbedingt darauf geachtet werden nicht die originalen Dateien zu ändern sondern immer auf einer Kopie zu arbeiten. Wir rufen also den Editor mit dem Quelltext auf und nehmen die Änderungen vor.
B> EDITRDK NDRBIOS.S
Nach den Änderungen muss der Quelltext in Maschinensprache übersetzt werden.
B> AS68 NDRBIOS.S > NDRBIOS.LST
Dadurch wird die Objektdatei NDRBIOS.O und das Listig NDRBIOS.LST erzeugt (das dauert einige Minuten). Das neue BIOS muss jetzt noch mit dem Kern des CP/M Systems verbunden (gelinkt) werden.
B> LO68 -R -UCPM -O CPM.REL CPMLIB NDRBIOS.O
Dadurch wird die Datei CPM.REL erzeugt, deren Größe wir im folgenden Schritt ermitteln. Das ist notwendig damit anschließend die absolute Ladeadresse ermittelt werden kann.
B> SIZE68 CPM.REL
In der letzten Spalte wird die Größe als hexadezimaler Wert ausgegeben. Dieser Wert wird von der höchsten gewünschten Speicheradresse abgezogen und dazu wird 1 addiert. Ein Beispiel
Ermittelte Länge von CPM.REL = $0E325
512 kByte Speicher für CP/M  = $7FFFF
Ermittelte Ladeadresse       = $7FFFF - $0E325 + $00001 = $71CDB
Nachdem die Ladeadresse fest steht, können die relativen Adressen in der Datei CPM.REL in absolute Adressen umgerechnet werden. Dabei entsteht die endgültige CPM.SYS die nur an der berechneten Adresse lauffähig ist.
B> RELOC -B71CDB CPM.REL CPM.SYS
Abschließend kopieren wir die Datei CPM.SYS auf eine startfähige Diskette und booten den Rechner neu. Auch hier bitte darauf achten, dass nicht die originalen Disketten überschrieben werden.
B> PIP A:CPM.SYS=B:CPM.SYS

Festlegen der Ladeadresse von CP/M

Im vorangegangenen Abschnitt wurde beschrieben, wie man die genaue absolute Ladeadresse für CP/M berechnet und CPM.REL in CPM.SYS umwandelt. Wenn man das RAM nicht unbedingt bis zum letzten Byte ausreizen muss kann man auch einen einfacheren Weg gehen und einen festen Wert als Ladeadresse vorgeben. Dies hat den Vorteil, dass sich das Verfahren auch in SUBMIT-Dateien anwenden lässt.
128 kB RAM = 18000
256 kB RAM = 38000
384 kB RAM = 58000
512 kB RAM = 78000
640 kB RAM = 98000
768 kB RAM = B8000
Angewendet auf das obige Beispiel würde man einfach die feste Adresse beim RELOC Befehl einsetzen. Das Ermitteln der Länge mit SIZE68 und die Berechnung der Ladeadresse entfällt. Bei meinem aktuellen Quellcode des NDRBIOS bleiben so 3335 Byte für weitere Anpassungen übrig bevor man die SUBMIT Datei ändern muss. Man sollte die Größe der Datei CPM.REL während der Entwicklung hin und wieder mit SIZE68 überprüfen.
B> RELOC -B18000 CPM.REL CPM.SYS
Bei Systemen mit viel Hauptspeicher kann man durchaus mehr RAM für das CP/M vorsehen. 256 kByte oder 384 kByte sind ein guter Kompromiss. Der restliche Speicher wird automatisch als Ramdisk G: eingebunden.

Submit Dateien

Um den ganzen Vorgang des Übersetzen, Linkes und Relozierens zu vereinfachen und zu beschleunigen bieten sich SUBMIT Dateien an in der alle notwendigen Kommandos zusammengefasst sind. Ich habe mir für alle Werte aus der obigen Tabelle entsprechende Dateien erstellt. Zum Erzeugen dieser Datei geben Sie einfach EDITRDK MAKE256.SUB ein.
AS68 -I AS68INIT
AS68 NDRBIOS.S
LO68 -R -UCPM -O CPM.REL CPMLIB NDRBIOS.O
RELOC -Bxxxxx CPM.REL CPM.SYS
Beim RELOC Befehl in der vierten Zeile gibt man statt xxxxx einfach den Wert aus der obigen Tabelle je nach dem gewünschtem Platz für die TPA ein. Die SUBMIT Datei wird einfach durch Eingabe von MAKE256 auf der Kommandozeile aufgerufen.

Nachfolgend noch mal die SUBMIT Datei mit Optimierungen für die Benutzung einer RAMDISK. Je nach Füllstand und Fragmentieren der Diskette ergeben sich 50 bis 75 Prozent schnellere Zeiten bei der Entwicklung. Bei meinen Tests benötigte die Übersetzung des BIOS auf Diskette 495 Sekunden, mit Unterstützung durch die RAMDISK jedoch nur nur 233 Sekunden. Der Hauptgrund für die Einsparungen ist die Reduzierung der Zugriffe auf die Diskette.
AS68 -I AS68INIT
AS68 -F G: NDRBIOS.S G:NDRBIOS.O
LO68 -F G: -R -UCPM -O G:CPM.REL CPMLIB G:NDRBIOS.O
RELOC -Bxxxxx G:CPM.REL CPM.SYS
Anschließend kann zum Test die entstandene Datei CPM.SYS auf eine Kopie der Bootdiskette kopiert werden. Falls man immer mit der gleichen Speicherkonfiguration arbeitet kann man die erste Zeile der SUBMIT Dateien entfernen, wodurch nochmals einige Sekunden eingespart werden. Nach Abschluss des Vorgangs verbleiben auf der RAMDISK die Dateien NDRBIOS.O und NDRBIOS.REL, die man je nach Bedarf löschen oder zurück auf die Diskette kopieren kann.

Änderungen und Erweiterungen an den Boot-Dateien

Der Start des CP/M-68K auf dem NKC ist ziemlich komplex und besteht aus mehreren Schritten die hier ausführlich beschrieben werden sollen. Alles beginnt mit dem Einschalten des Computers woraufhin das Grundprogramm die Kontrolle übernimmt. Auch hierfür benötigen wir eine Arbeitsdiskette mit den folgenden Dateien:
NDRBOOT.S und NDRLDRB.S
NDRLIB und EDITRDK.68K
AS68.68K und AS68SYMB.DAT
LO68.68K und XPUTBOOT.68K
Grundsätzlich kann man sich auch eine Diskette mit allen benötigten Dateien für beide Verfahren erstellen und diese Diskette immer dann verwenden, wenn etwas am System geändert werden soll. Jetzt kann man die Notwendigen Änderungen an den Quelldateien vornehmen. Nach den Änderungen an den Quelldateien müssen diese natürlich erst einmal übersetzt werden.
B> AS68 -f -p NDRLDRB.S > NDRLDRB.LST
B> AS68 -f -p NDRBOOT.S > NDRBOOT.LST
Dabei entstehen die beiden Objektdateien NDRBOOT.O und NDRLDRB.O. Anschließend müssen die neuen Routinen zusammen mit dem CP/M Loader gelinkt werden.
B> LO68 -f -s -t400 -u LDR -o CPMLDR.SYS NDRBOOT.O NDRLIB NDRLDRB.O
Jetzt ist die CPMLDR.SYS fertig und kann auf die Systemspuren der Systemdiskette geschrieben werden. Auch hier ist darauf zu achten, dass immer mit einer Arbeitsdiskette und nicht mit den originalen Disketten gearbeitet wird.
B> XPUTBOOT CPMLDR.SYS A
Durch einen beherzten Druck auf RESET können die Änderungen ausprobiert werden.

Reihenfolge des Boot-Vorgangs beim NKC

Da das BIOS auf dem NKC nicht komplett in CPM.SYS umgesetzt ist sondern noch durch das Grundprogramm unterstützt wird ist der Bootvorgang etwas komplizierter als bei normalen CP/M Umsetzungen. Während des Ladevorgangs muss die absolute Position des Grundprogramms gesucht werden.

  • Nach dem Einschalten wird zunächst das Grundprogramm gestartet
  • FLOPPY START liest die Systemspuren der Diskette in den Speicher ein
  • Dadurch wird das Programm NDRBOOT von Diskette gestartet
  • NDRBOOT sucht im Speicher nach dem Grundprogramm
  • Danach wird das Loader BIOS NDRLDRB gestartet (Untermenge des BIOS)
  • NDRLDRB lädt dann das eigentliche CP/M und startet es