Null Seite (CP/M)
Das Null Seite (oder Basisseite) ist a Datenstruktur benutzt in CP/m Systeme für Programme zur Kommunikation mit dem Betriebssystem. In 8-Bit-CP/M-Versionen befindet sich es in der Erste 256 Speicher Bytes, daher sein Name.
Die äquivalente Struktur in DOS ist der Programmsegmentpräfix (PSP), eine 256-Byte-Struktur, die sich jedoch standardmäßig im Lastsegment des Programms (und nicht in Segment 0) unmittelbar vor einem geladenen Programm befindet.
In 8-Bit-CP/M hat es die folgende Struktur:
Offset | Größe | Inhalt |
---|---|---|
00–02 | Code | Ausgangsprogramm (springt zur BIOSund wird auch verwendet, um BIOS -Einstiegspunkte zu finden).[1] |
03 | Byte | E/A -Byte, eine optionale Funktion, die die Neuzuweisung von Geräte in CP/M 2 ermöglicht. |
04 | Byte | Aktueller Befehlsprozessor Laufwerk (niedrige 4 -Bit) und Benutzernummer (hohe 4 Bits). |
05–07 | Code | Springen Sie zum CP/M BDOS -Eintrag - Hauptanruf -Einstiegspunkt. Dies ist auch die Adresse des ersten von dem Programms nicht verwendbaren Speicher Byte.[1] |
08–3a | Code | 8080 neu starten/unterbrechen Vektoren. |
3b - 4f | Bytes | Reserviert |
50 | Byte | Das Laufwerk, aus dem das Programm geladen wurde (CP/M 3) |
51–52 | Wort | Adresse des Passworts für das erste FCB (CP/M 3) |
53 | Byte | Länge des Passworts für den ersten FCB (CP/M 3) |
54–55 | Wort | Adresse des Passworts für den zweiten FCB (CP/M 3) |
56 | Byte | Länge des Passworts für den zweiten FCB (CP/M 3) |
57–5b | Bytes | Reserviert |
5c - 6b | Standard FCB 1 | |
6c - 7f | Standard FCB 2 (überschrieben, wenn FCB 1 geöffnet ist) | |
80 | Byte | Anzahl der Zeichen im Befehlsschwanz. |
81 - FF | Bytes | Befehlsschwanz (alles nach dem Programmnamen). |
Im CP/M-86, die Struktur ist:
Offset | Größe | Inhalt |
---|---|---|
00–02 | Bytes | Länge der Codegruppe in Bytes |
03–04 | Wort | Segmentadresse der Codegruppe |
05 | Byte | 8080 Modellflag - festlegen, wenn das Programm nur ein Segment hat |
06–08 | Bytes | Datengruppe in Bytes |
09–0a | Wort | Segmentadresse der Datengruppe |
0b | Byte | Reserviert |
0c - 11 | Deskriptor für zusätzliche Gruppe - Gleiches Format wie für Daten | |
12–17 | Deskriptor für Stack Group | |
18–1d | Deskriptor für die X1 -Gruppe | |
1e - 23 | Deskriptor für die X2 -Gruppe | |
24–29 | Deskriptor für die X3 -Gruppe | |
2a - 2f | Deskriptor für die X4 -Gruppe | |
30–4f | Bytes | Reserviert |
50 | Byte | Das Laufwerk, aus dem das Programm geladen wurde (CP/M 3) |
51–52 | Wort | Adresse des Passworts für den ersten FCB (CP/M 3) |
53 | Byte | Länge des Passworts für den ersten FCB (CP/M 3) |
54–55 | Wort | Adresse des Passworts für den zweiten FCB (CP/M 3) |
56 | Byte | Länge des Passworts für den zweiten FCB (CP/M 3) |
57–5b | Bytes | Reserviert |
5c - 6b | Standard FCB 1 | |
6c - 7f | Standard FCB 2 (überschrieben, wenn FCB 1 geöffnet ist) | |
80 | Byte | Anzahl der Zeichen im Befehlsschwanz. |
81 - FF | Bytes | Befehlsschwanz (alles nach dem Programmnamen). |
Siehe auch
Verweise
- ^ a b Taylor, Roger; Lemmons, Phil (Juni 1982). "Aufwärtsmigration - Teil 1: Übersetzer - Verwenden von Übersetzungsprogrammen zum Verschieben von CP/M -86 -Programmen in CP/M und MS -DOS" [Verwenden von Übersetzungsprogrammen zum Verschieben von CP/M-Programmen in CP/M-86 und MS-DOS] (PDF). BYTE. Vol. 7, nein. 6. Byte Publications Inc. S. 321–322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344 [342, 344]. ISSN 0360-5280. Coden Bytedj. Archiviert (PDF) vom Original am 2020-01-16. Abgerufen 2020-01-15.
[…] Zugang zu Zugang zu CP/M-86 […] Zugriff auf CP/M-86 muss den Funktionscode in das Cl-Register platzieren, den Parameter Byte in das DL-Register platzieren oder den Wortparameter im DX-Register platzieren, wodurch das Datensegment in das DS-Register platziert wird (die Daten Das Segment wird normalerweise nicht für ein konvertiertes Programm geändert) und führt eine Software -Interrupt aus. Int #224. Das Ergebnis wird im Al -Register zurückgegeben, wenn es sich um einen Bytewert handelt. Wenn das Ergebnis ein Wortwert ist, wird es sowohl in den AX- als auch in den BX -Registern zurückgegeben. Doppelwortwerte werden mit dem Offset in den BX-Registern und dem Segment im ES-Register zurückgegeben. Umwandlung von Programmen von CP/M-80 Nach CP/M-86 muss der Anruf an Ort 5 durch die Software Interrupt Int #224 ersetzt werden. Eine andere notwendige Änderung beinhaltet die warmer Stiefel. Unter CP/M-80 kann auf den warmen Stiefel mit einem Systemaufruf mit einem Funktionscode von 0 für einen Sprung zu Ort 0 zugegriffen werden. CP/M-86 unterstützt jedoch nicht den Sprung zu Ort 0. Sie müssen diesen Programm -Beenden im übersetzten Programm ändern, wenn das Programm korrekt ausgeführt werden soll. Vorausgesetzt, der Anruf zu Ort 5 wird durch INT #224 ersetzt, dass die Warm-Boot-Änderung vorgenommen wird und dass die Register korrekt zugeordnet sind . […] Zugang zu Zugang zu MS-DOS […] Obwohl MS-DOS einen "bevorzugten" Mechanismus durch einen Soft-War-Interrupt hat, hat Int #33Für den Zugriff auf das System wird ein zusätzlicher Mechanismus für "bereits bestehende" Programme bereitgestellt, die mit CP/M-80-Aufrufkonventionen kompatibel sind, zumindest für Funktionen im Bereich von 0-36. In Bezug auf Systemaufrufe innerhalb des zulässigen Funktionsbereichs muss der Programmierer nichts für übersetzte Programme tun, um sie dazu zu bringen, unter MS-DOS zu laufen, außer die Register korrekt zu kartieren. MS-DOS unterstützt auch die Warm Boot-Funktion von CP/M-80. Ein Sprung zu Ort 0 unter MS-DOS führt einen Software-Interrupt aus. Int #32, was funktional ein Programmende und die normale Art, aus einem Programm zu verlassen. […]
[1] [2][3][4][5][6][7][8][9][10][11][12][13][14] (13 Seiten)
Weitere Lektüre
- "Tim Olmstead Memorial CP/M Bibliothek". Archiviert vom Original am 2017-08-20. Abgerufen 2017-08-20. - im Speziellen:
- "CP/M 3 Programmiererhandbuch" (PDF). Archiviert (PDF) vom Original am 2017-08-20. Abgerufen 2017-08-20.
- "CP/M-86 Systemhandbuch" (PDF). Archiviert (PDF) vom Original am 2017-08-20. Abgerufen 2017-08-20.
Externe Links
- "CP/M -Interna". Archiviert von das Original Am 2017-08-20. Abgerufen 2017-08-20. - Eingehende Beschreibung der CP/M-Null-Seitenfunktionen