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

  1. ^ 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

Externe Links

  • "CP/M -Interna". Archiviert von das Original Am 2017-08-20. Abgerufen 2017-08-20. - Eingehende Beschreibung der CP/M-Null-Seitenfunktionen