Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
cpm:systemdoku [2011/03/25 11:53]
volkerp angelegt
cpm:systemdoku [2016/07/25 15:59] (aktuell)
volkerp [Der Disk Parameter Block]
Zeile 1: Zeile 1:
-Klaus Kämpf: CP/M 2.2 Assembler-Listing +====== CP/M 2.2 Interna ====== 
-ISBN 3-925074-II-2 + 
-1. Auflage, Dezember 1985 +**Klaus Kämpf: CP/M 2.2 Assembler-Listing\\ 
-(c) 1985 by Röckrath MICROCOMPUTER +ISBN 3-925074-II-2\\ 
-Noppiusstr. 19+1. Auflage, Dezember 1985\\ 
 +(c) 1985 by Röckrath MICROCOMPUTER**\\ 
 +Noppiusstr. 19\\
 5100 Aachen 5100 Aachen
  
Zeile 24: Zeile 26:
 Aachen, im November 1985 Aachen, im November 1985
  
-Klaus Kampf+Klaus Kämpf
  
 ===== Grundlagen =====  ===== Grundlagen ===== 
Zeile 105: Zeile 107:
 ==== Speicheraufteilung ==== ==== Speicheraufteilung ====
  
-Damit das CP/M in verschiedenen ​Speichergrosen ​ablaufen kann, +Damit das CP/M in verschiedenen ​Speichergrößen ​ablaufen kann, 
-ist der Speicherbereich in dem das CP/M liegt nicht festgelegt.+ist der Speicherbereichin dem das CP/M liegtnicht festgelegt.
 Statt dessen ist die erste Speicherseite (256 Bytes) Statt dessen ist die erste Speicherseite (256 Bytes)
 für Systeminformationen reserviert und beinhaltet auch den  für Systeminformationen reserviert und beinhaltet auch den 
Zeile 116: Zeile 118:
 immer am oberen Speicherende liegt. immer am oberen Speicherende liegt.
  
-Wichtig für den Betrieb von CP/M ist, das der Speicher durchgehend+Wichtig für den Betrieb von CP/M ist, daß der Speicher durchgehend
 ist und bei der Adresse 0000H beginnt. Da Anwenderprogramme ​ ist und bei der Adresse 0000H beginnt. Da Anwenderprogramme ​
 immer ab einer fester Adresse arbeiten, ist dadurch immer ab einer fester Adresse arbeiten, ist dadurch
Zeile 124: Zeile 126:
 Die Speicheraufteilung im CP/M sieht im Überblick so aus: Die Speicheraufteilung im CP/M sieht im Überblick so aus:
  
-<code>+<ditaa noedgesep>
          ​+----------------+ oberes Speicherende          ​+----------------+ oberes Speicherende
          ​| ​               |          ​| ​               |
Zeile 145: Zeile 147:
          ​| ​    ​parameter ​ |          ​| ​    ​parameter ​ |
 BOOT:    +----------------+ 0000H BOOT:    +----------------+ 0000H
-</code>+</ditaa>
  
 An der Adresse BOOT befindet sich grundsätzlich ein Sprung An der Adresse BOOT befindet sich grundsätzlich ein Sprung
Zeile 151: Zeile 153:
 eines Programms den CCP und das BDOS neu in den eines Programms den CCP und das BDOS neu in den
 Speicher und startet danach wieder den CCP. Das Sprungziel Speicher und startet danach wieder den CCP. Das Sprungziel
-ist immer der zweite Eintrag in der BlOS-Sprungtabelle,​ also+ist immer der zweite Eintrag in der BIOS-Sprungtabelle,​ also
 BIOS + 0003H.\\ BIOS + 0003H.\\
 Daraus kann ein Programm auch die Startadresse des BIOS Daraus kann ein Programm auch die Startadresse des BIOS
Zeile 385: Zeile 387:
 und auch die Anzahl der Einträge ist ein getrennter Parameter. und auch die Anzahl der Einträge ist ein getrennter Parameter.
 Bei der maximalen Blockgröße von 16 kbyte sind im Bei der maximalen Blockgröße von 16 kbyte sind im
-CP/M 2.2 maximal 16384 Directory-Einträge möglich.+CP/M 2.2 maximal ​<del>16384</​del>​ 8192 Directory-Einträge möglich.
  
  
Zeile 408: Zeile 410:
 16. 16.
  
-==== Öffnen und Schliessen ​von Files ====+==== Öffnen und Schließen ​von Files ====
  
 Zum Arbeiten mit einem File benötigt das BDOS alle Informationen Zum Arbeiten mit einem File benötigt das BDOS alle Informationen
Zeile 610: Zeile 612:
  
 Die Anwahl einer Extendgruppe ist nicht direkt möglich; Die Anwahl einer Extendgruppe ist nicht direkt möglich;
-geoffnet ​wird immer die erste Extendgruppe.+geöffnet ​wird immer die erste Extendgruppe.
  
 Zum Öffnen muß der FCB folgende Daten enthalten: Zum Öffnen muß der FCB folgende Daten enthalten:
Zeile 646: Zeile 648:
 höchsten Recordnummer des Extends kann das BDOS entscheiden,​ höchsten Recordnummer des Extends kann das BDOS entscheiden,​
 wann das Ende eines Extends erreicht ist. Die genaue Belegung wann das Ende eines Extends erreicht ist. Die genaue Belegung
-der 33 Bytes eines geoffneten ​FCB gibt das folgende Schema:+der 33 Bytes eines geöffneten ​FCB gibt das folgende Schema:
  
-19 
-Datenformate 
 FCB nach dem Öffnen: FCB nach dem Öffnen:
-Pos. 
- 
 <​code>​ <​code>​
      ​+-------------------------------------------------+      ​+-------------------------------------------------+
Zeile 826: Zeile 824:
  ALV Adresse des Belegungsvektors  ALV Adresse des Belegungsvektors
  (engl. ALlocation Vector)  (engl. ALlocation Vector)
 +</​code>​
  
 ==== Diskettenparameter ==== ==== Diskettenparameter ====
Zeile 921: Zeile 919:
  
 Der Disk Parameter Block (DPB) beinhaltet alle Parameter, die Der Disk Parameter Block (DPB) beinhaltet alle Parameter, die
-Größe ​and Aufteilung der Diskette beschreiben,​ insbesondere+Größe ​und Aufteilung der Diskette beschreiben,​ insbesondere
 die Anzahl der logischen Sektoren pro Spur, die Blockgröße,​ die Anzahl der logischen Sektoren pro Spur, die Blockgröße,​
 die Anzahl der Blocks auf der Diskette und die Größe der die Anzahl der Blocks auf der Diskette und die Größe der
Zeile 983: Zeile 981:
 und BLM gilt folgender Zusammenhang:​ und BLM gilt folgender Zusammenhang:​
  
-  BLS BSH BLM + BLS BSH BLM
  1024 3 7  1024 3 7
  2048 4 15  2048 4 15
  4096 5 31  4096 5 31
  8192 6 63  8192 6 63
-       16384 7 127+ 16384 7 127
  
 kurz kurz
- BLS = 128 * 2^BSH 128 * (BLM+1)+ BLS = 128 * 2^BSH 128 * (BLM+1)
   
 In EXM wird die Anzahl von Extends pro Directory-Eintrag In EXM wird die Anzahl von Extends pro Directory-Eintrag
 definiert.\\ definiert.\\
-EXM ist abhängig von der Blockgröße und der Anzahl der Blöcke+EXM ist abhängig von der Blockgröße und der Anzahl der Blöcke ​(DSM+1)
 pro Diskette. Je nachdem, ob weniger als 256 Blöcke (8-Bit pro Diskette. Je nachdem, ob weniger als 256 Blöcke (8-Bit
 Blocknummern) oder mehr als 255 Blöcke (16-Bit Blocknummern) Blocknummern) oder mehr als 255 Blöcke (16-Bit Blocknummern)
Zeile 1012: Zeile 1009:
 DSM enthält die Anzahl von Blöcken pro Diskette -1 bzw. die DSM enthält die Anzahl von Blöcken pro Diskette -1 bzw. die
 höchste Blocknummer der Diskette.\\ höchste Blocknummer der Diskette.\\
-Die Gesamtkapazitat ​der Diskette in Bytes ergibt sich aus dem +Die Gesamtkapazität ​der Diskette in Bytes ergibt sich aus dem 
-Produkt von BLS und (DSH+1); für den Allocation Vector müssen+Produkt von BLS und (DSM+1); für den Allocation Vector müssen
 (DSM / 8) + 1 Bytes reserviert werden. (DSM / 8) + 1 Bytes reserviert werden.
  
 Rein theoretisch ist zwar eine Maximalkapazität von einem Rein theoretisch ist zwar eine Maximalkapazität von einem
-Gigabyte (65536 Blöcke a 16 kbyte) denkbar, diese ist aber+Gigabyte (65536 Blöcke a 16 kbyte) denkbar<del>, diese ist aber
 durch die Verwaltung der Recordnummern im 16-Bit Format auf durch die Verwaltung der Recordnummern im 16-Bit Format auf
-65536 Records, also 8 Megabyte (65536 * 128 Bytes) beschränkt.+65536 Records, also 8 Megabyte (65536 * 128 Bytes) beschränkt</​del>​.
  
 DRM+1 ist die Anzahl der Directory-Einträge der Diskette. Da DRM+1 ist die Anzahl der Directory-Einträge der Diskette. Da
Zeile 1039: Zeile 1036:
 CKS kennzeichnet die Länge des Prüfsummen-Vektors (CSV) und CKS kennzeichnet die Länge des Prüfsummen-Vektors (CSV) und
 damit die Anzahl der zu prüfenden Directory-Records,​ die sich damit die Anzahl der zu prüfenden Directory-Records,​ die sich
-aus der Beziehung CKS (DRM + 1) / 4 ergibt.\\ +aus der Beziehung CKS (DRM + 1) / 4 ergibt.\\ 
-Falls eine Prufung ​der Directory nicht erwünscht oder, wie+Falls eine Prüfung ​der Directory nicht erwünscht oder, wie
 z.B. bei Festplattenlaufwerken,​ nicht notwendig ist, kann z.B. bei Festplattenlaufwerken,​ nicht notwendig ist, kann
 CKS auch Null sein. CKS auch Null sein.
Zeile 1190: Zeile 1187:
 ^ Nummer: | 8 | ^ Nummer: | 8 |
 ^ Bezeichnung:​ | Set I/O Byte\\ I/O Byte setzen | ^ Bezeichnung:​ | Set I/O Byte\\ I/O Byte setzen |
-^ I: | C = 8H\\ E = I/O-Byte |+^ I: | C = 08H\\ E = I/O-Byte |
 ^ O: | - | ^ O: | - |
  
Zeile 1293: Zeile 1290:
 Versionen 2.0. 2.1, 2.2 usw. Versionen 2.0. 2.1, 2.2 usw.
  
 +FIXME