010
08.09.2015, 22:38 Uhr
Heiko_P
|
So, der Urlader scheint erst einmal zu funktionieren:
Die Grundlage für den Urlader bilden die Quellen vom GIDE und von den USB-Tools. Im Bild wird für den Test ein Mini-Programm vom Stick geladen, welches die Ausschrift "Hello World..." produziert.
Was genau macht der Urlader?
Die USB-Hardware wird initialisiert und im Hauptverzeichnis des USB-Laufwerkes wird eine Datei USBBOOT.BIN gesucht. Bei Erfolg werden die ersten 10 Bytes der Datei geladen und geprüft. Die ersten 6 Bytes enthalten eine von mir festgelegte Kennung. Wenn diese stimmt, werden die nächsten vier Bytes als Ladeadresse und Startadresse gespeichert, der Rest der Datei auf die Ladeadresse geladen und danach die Startadresse angesprungen. Das geladene Programm muss dann komplett die Steuerung des Rechners übernehmen.
Wird der erste Teil aus irgendeinem Grund abgebrochen (kein Stick, Datei nicht gefunden, Kennung falsch ...) wird sofort auf die GIDE-Startroutine verzweigt. Auf der Festplatte habe ich den Sektor 0 auf Kopf 0 als Bootsektor definiert, dieser wird geladen und geprüft. Die ersten 10 Bytes sind genau wie bei USB aufgebaut, darauf folgt die Anzahl der zu lesenden Sektoren und fortlaufend die zu lesenden Sektornummern. Bei korrektem Bootsektor werden die Daten auf die Ladeadresse geladen, danach wird die Startadresse angesprungen, das gleiche Verfahren wie beim Start vom USB. Die Daten werden vorher durch ein spezielles Programm auf die Festplatte geschrieben, der benötigte Platz ist im CP/M als Systemspur(en) gekennzeichnet. Das Nachladen des CCP von der Festplatte bei laufendem System funktioniert nach dem gleichen Prinzip.
Bevor Fragen auftauchen: Alle hier getroffenen Festlegungen habe ich willkürlich gewählt, das kann bei einer Nachnutzung alles beliebig verändert werden. Ich werde in den nächsten Tagen den Quelltext etwas strukturieren und möchte ihn dann veröffentlichen. Das wird allerdings kein "Kochrezept", sondern nur eine Anregung für eigene Programmierversuche. Ich werde als nächstes versuchen ein von USB startbares System zu bauen, der Start des CP/M vom GIDE funktioniert am AC1 bereits in der Praxis.
Gruß Heiko |