Belegung der Page 0

Der Speicher der 8-Bit CPU 8080/Z80 umfasst den 16-Bit Bereich 0000h-0FFFFh. Die oberen 8 Bit werden oft "Page" genannt. CP/M beginnt die Ausführung von Programmen in der Page 1, also ab Adresse 0100h. Eine Besonderheit stellt bei den 8-Bit CPUs die Page 0 (Bereich 0000h-00FFh) dar: in dieser Page liegen die Adressen für die acht RST-Instruktionen1:
Es ist leicht zu erkennen, dass je 8 Bytes für je eine RST-Anweisung zur Verfügung stehen. Damit ist der Bereich 0000h-003Fh für "normale" Programmierung nicht zugänglich. Die Entwickler von CP/M haben dies berücksichtigt und die Page 0 als "System-Page" eingerichtet.
Ab Adresse 0100h beginnt dann der Speicherbereich für die Anwenderprogramme, die bei Bedarf vom CCP (Console Command Processor) in diesen Bereich (Transient Program Area) geladen werden.

AdresseBedeutungBeschreibung
0000h-0002hWarm Start Enthält Sprunganweisung (JMP Instruktion) zum BIOS Warm Start. Die Adresse im Speicher 0001h kann genutzt werden für direkte BIOS Aufrufe für Zeichenroutinen (Konsol-Ein/Ausgabe, Druckerausgabe usw.). (Eigentlich die Restart 0 Instruktion)
0003hIOBYTE Nicht unterstützt von CP/M Plus. Die Möglichkeit der Umlenkung von Zeichenroutinen unter CP/M 2.2 fällt bei CP/M 3 weg.
0004hNutzer/Laufwerk Standard Laufwerk (untere vier Bits) und Nutzer (User Area, obere vier Bits) wenn Programm in die TPA geladen ist. Diese werden nur unterstützt aus Gründen der Kompatibiltät zu Programmen, die für CP/M 2.2 geschrieben sind. Diese Funktion wird nicht weiter unterstützt, so dass neu geschriebene Programme für diese Funktion Gebrauch machen sollten von BDOS Aufrufen.
0005h-0007hBDOS Enthält Sprunganweisung (JMP Instruktion) zum Betriebssystem, üblicherweise BDOS. Dies ist die Schnittstelle zum CP/M Plus Betriebssystem. Die Adresse im Speicherplatz 0006h minus 1 ergibt die höchste freie Adresse für ein Anwenderprogramm.
0008h-000AhRST1 Reserviert für Restart 1 Instruktion
0010h-0012hRST2 Reserviert für Restart 2 Instruktion
0018h-001AhRST3 Reserviert für Restart 3 Instruktion
0020h-0022hRST4 Reserviert für Restart 4 Instruktion
0028h-002AhRST5 Reserviert für Restart 5 Instruktion
0030h-0032hRST6 Reserviert für Restart 6 Instruktion
0038h-003AhRST7 Reserviert für Restart 7 Instruktion und Standard Debugger, z.B. SID
003Bh-004FhArbeitsbereich Reserviert für individuelles BIOS (normalerweise ungenutzt)
Die Speicheradressen 0050h bis 007Fh werden vom CCP eingestellt.
AdresseBedeutungBeschreibung
0050hTPA Laufwerk Laufwerk, von dem das Anwendungsprogramm geladen wurde (oder 0 für das aktuelle Laufwerk). Ein Wert von 1 bis 16 entspricht dem Laufwerk A bis P.
0051h-0052hZeiger auf Passwort 1 Adresse des ersten Passwortes im Standard DMA Puffer. Wenn der erste Parameter der CCP Kommandozeile ein Passwort enthält, dann zeigt diese Adresse zum Beginn des Passwortfeldes. Andernfalls sind sowohl die Adresse als auch die Länge auf 0 gesetzt.
0053hLänge von Passwort 1 Länge des ersten Passwortfeldes
0054h-0055hZeiger auf Passwort 2 Adresse des zweiten Passwortes im Standard DMA Puffer Wenn der zweite Parameter der CCP Kommandozeile ein Passwort enthält, dann zeigt diese Adresse zum Beginn des Passwortfeldes. Andernfalls sind sowohl die Adresse als auch die Länge auf 0 gesetzt.
0056hLänge von Passwort 2 Länge des zweiten Passwortfeldes
0057h-005BhReserviert  
005Ch-007BhFCB Standard File Control Block. Dieser FCB wird vom CCP aus dem ersten Parameter in der Kommandozeile gebildet. Existiert kein Parameter, dann wird der FCB eingestellt mit Leerzeichen im Namen und einer 0 im Laufwerksfeld.
006Ch-007BhFCB2 Zweiter Dateiname überlagert im FCB des ersten Dateinamens. Dieser FCB wird vom CCP aus dem zweiten Parameter in der Kommandozeile gebildet. Existiert kein Parameter, dann wird der FCB eingestellt mit Lerrzeichen im Namen. Wegen der Überlagerung sollte dieser Dateiname vor dem Gebrauch des Standard FCB in einen anderen FCB kopiert werden.
007ChCR Aktuelle Position des Standard FCB Bereiches. Vor Gebrauch des Standard FCB sollte ein Anwendungsprogramm diesen Wert auf 0 setzen.
007Dh-007FhRR Optionale Rekord Nummer im Standard FCB Bereich. Vor Gebrauch des Standard FCB sollte ein Anwendungsprogramm diesen Wert auf 0 setzen.
0080h-00FFhDMA 128 Byte Standard DMA Puffer für Datei-Ein/Ausgabe. Der CCP kopiert die komplette Kommandozeile in diesen 128 Byte Bereich. Das erste Byte hält die Länge der Kommandozeile, gefolgt von der Zeile (soweit vorhanden). Da dieser Speicherbereich auch als Standardbereich für einen 128 Byte Puffer für die Disk Ein-/Ausgabe genutzt wird, sollte die CCP Kommandozeile in einen anderen Speicherbereich kopiert werden, bevor eine Laufwerksoperation stattfindet. Solange das BDOS nicht für einen anderen Speicherbereich umgelenkt wurde, kopiert das BDOS 128 Byte große Rekords während einer Leseoperation hierhin. Während einer Schreiboperation kopiert das BDOS diesen Bereich um in eine Datei.

1. RST-Übersicht
Nummer8080 UnstruktionZ80 UnstruktionOpcodeAdresse
1RST 0RST 00hC7h0000h
2RST 1RST 08hCFh0008h
3RST 2RST 10hD7h0010h
4RST 3RST 18hDFh0018h
5RST 4RST 20hE7h0020h
6RST 5RST 28hEFh0028h
7RST 6RST 30hF7h0030h
8RST 7RST 38hFFh0038h

Letzte Änderung: 4.Juni 2004