★ APPLICATIONS ★ DIVERS ★ CP/M-PLUS-BIOS ABSPEICHERN (SCHNEIDER MAGAZIN) ★ |
CP/M-Plus-BIOS abspeichern (Schneider Magazin) | Applications Divers |
Zum Speichern auf Disk werden die Befehle OUT &7F00, &C4, &C5, & C6 und &C7 benötigt, um den jeweiligen Subblock dafür einzublenden (s. dk'tronics-Handbuch, Kap 3.14). Im Bereich von &100 bis &3FFF liegt das BIOS von CP/M Plus. Das von CP/M 2.2 im AMSDOS-ROM wird nicht benutzt. Dies ist nicht möglich, da aufgrund des Befehlssatzes vom Gate Array nur im Adreßbereich des AMSDOS-ROM der gemeinsame RAM-Bereich der Bänke liegen kann (s. dk'tronics-Handbuch, Kap. 3.14). Hier im BIOS liese sich einiges patchen. Das Problem ist nur, eine BIOS-Routine im EMS-File wiederzufinden und umgekehrt. Als Grundregel kann man sagen, daß das EMS-File beim Booten um &B00 nach oben verschoben wird (wenn man von einem Standardanfang des EMS-Files bei &100 ausgeht). Im Bereich von &4000 bis &7FFF liegt der Bildschirmspeicher, da das Gebiet bei &C000 besetzt ist. Es erfolgt ab &8000 unter anderem der CP/M-Plus-Zeichensatz. Der Speicherbereich ab &A700 (wahrscheinlich bereits früher) bis &B0FF wird nicht benutzt. Hier wäre also noch viel Platz für Patches. Das Gebiet von &C000 bis &FFFF scheint, wenn überhaupt, nur als Buffer verwendet zu werden. Hier noch einmal das Schema der Speicherumschaltung: Die SAVE-Routine muß unter AMSDOS an ihre Adresse assembliert werden. (CP/M Plus löscht diesen Speicherbereich nicht!) Dann ist CP/M Plus zu starten. Nun muß folgendes ab &BDF4 assembliert werden, und zwar unbedingt an dieser Adresse:
Wenn diese Routine ab &BDF4 aufgerufen wird, erfolgen bei &BDF8 der OUT-Befehl und Bankwechsel. Ab &BDFA steht dann in der anderen Bank die SAVE-Routine. Dem Prozessor bietet sich also eine ununterbrochene Befehlsfolge, obwohl dazwischen gebankt wurde.
Jürgen Weber, Schneider Magazin
|