Speicher-Zeiger
Das
OS benutzt 5 Speicherstellen, um den Benutzer- und Bildschirm-Speicher zu überwachen:
MEMLO, MEMTOP, APPMHI, RAMTOP und RAMSIZ. Ihre Zusammenhänge werden in einer
einfachen Speicherübersicht in Abbildung 8.12 dargestellt.
MEMLO
ist eine 2-Byte Speicherstelle, die das OS verwendet, um anzuzeigen, wo ein Anwendungs-Programm
beginnen kann. Wird MEMLO vorsichtig benutzt, so kann es zum Reservieren von Speicherplatz
für kleine Assembler-Routinen in BASIC verwendet werden. Der BASIC-Interpreter
benutzt den MEMLO-Zeiger um festzulegen, wo ein Programm anfangen kann (siehe Kapitel
7 für die Struktur von BASIC-Programmen). Soll der MEMLO-Zeiger auf eine höhere
Adresse gesetzt werden, so muß dieses geschehen, bevor das BASIC-Modul gestartet
wird. MEMLO muß außerdem sehr vorsichtig verwendet werden, da diese Speicherstelle
beim Einschalten und beim SYSTEM-RESET wieder zurückgesetzt wird.
Wird
von einer Diskette gebootet, so kann die AUTORUN.SYS-Möglichkeit benutzt werden,
um MEMLO auf einen festgelegten Wert zu setzen. Da das DOS den Zeiger auch bei einem
SYSTEM-RESET über den DOSINI-Vektor zurücksetzt, ist es notwendig diesen
zu ändern. DOSINI enthält die Adresse des Initialisierungs-Programms für
das DOS. Es wird durch den Monitor als ein Teil der Initialisierung des Systems aufgerufen.
Der Inhalt von DOSINI muß in eine 2-Byte-Adresse einer JSR-Anweisung übertragen
werden, um ein Teil des POWER-UPs zu werden. DOSINI wird dann auf die Adresse der
JSR-Instruktion für das Initialisierungs-Programm gesetzt. MEMLO enthält
einen festgelegten Wert. Bei einem SYSTEM-RESET wird das neue Initialisierungs-Programm
aufgerufen, wobei dessen erste Instruktion JSR OLDDOSINI, wiederum das DOS initialisiert.
Das neue Init-Programm setzt MEMLO auf den festqelegten Wert und springt zur alten
Init-Sequenz zurück (RTS). Abbildung 8.10 ist hierfür ein Beispiel.
Die
oben beschriebene Technik kann ebenso für MEMTOP
(der Zeiger für das obere RAM-Ende) verwendet werden. Durch Verringern des MEMTOP-Wertes
kann Speicherplatz für Assembler-Routinen reserviert werden. Allerdings ergibt
sich bei der Verwendung von MEMTOP anstelle von MEMLO ein Problem. MEMTOP ändert
sich mit der Größe des freien RAMs und dem Grafik-Modus des Bildschirms.
Dieses macht es schwierig seinen Wert zu bestimmen. Aus diesem Grunde müßen
die Assembler-Routinen frei verschiebbar sein.
APPMHI
ist eine Speicherstelle, die die Adresse enthält, welche wiederum die niedrigste
Adresse angibt, an die das Bildschirm-RAM gelegt werden kann. Diese Variable wird
gesetzt, um Programme oder Daten vor dem ‹berschreiben durch den Display-Handler
zu schützen.
RAMSIZ
kann genau wie MEMTOP zum Sichern von Speicherplatz für kleine Assembler-Routinen
benutzt werden. Der Vorteil von RAMSIZ gegenüber MEMTOP liegt darin, daß
der reservierte Speicherbereich hinter dem Bildschirm-RAM liegt, der durch MEMTOP
gesicherte Speicherbereich liegt unter dem Bildschirmbereich. Letzterer kann sich
durch ƒndern des Grafik-Modus ausdehnen oder zusammenziehen.