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 BIOSDas 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 DateiNDRBIOS.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:
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.
Nach den Änderungen muss der Quelltext in Maschinensprache übersetzt werden.
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.
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.
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
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.
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.
Festlegen der Ladeadresse von CP/MIm 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.
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.
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 DateienUm 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 einfachEDITRDK MAKE256.SUB ein.
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.
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-DateienDer 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:
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.
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.
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.
Durch einen beherzten Druck auf RESET können die Änderungen ausprobiert werden. Reihenfolge des Boot-Vorgangs beim NKCDa 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. |