Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
cpm:systemdoku [2024/04/15 07:52] – [Extends] volkerpcpm:systemdoku [2025/04/22 13:36] (aktuell) – [Directory-Einträge] volkerp
Zeile 8: Zeile 8:
 5100 Aachen 5100 Aachen
  
 +mit eigenen Ergänzungen !
 ===== Vorwort ===== ===== Vorwort =====
  
Zeile 126: Zeile 127:
 Die Speicheraufteilung im CP/M sieht im Überblick so aus: Die Speicheraufteilung im CP/M sieht im Überblick so aus:
  
-<ditaa noedgesep+<a2s
-         +----------------oberes Speicherende+         #----------------oberes Speicherende
                         |                         |
               BIOS      |               BIOS      |
                         |                         |
-         +----------------+         #----------------
                         |                         |
               BDOS      |               BDOS      |
                         |                         |
-FBASE:   +----------------Startadresse des FDOS+FBASE:   #----------------Startadresse des FDOS
                         |                         |
               CCP       |               CCP       |
                         |                         |
-CBASE:   +----------------Startadresse des CCP+CBASE:   #----------------Startadresse des CCP
                         |                         |
               TPA       |               TPA       |
                         |                         |
-TBASE:   +----------------0100H+TBASE:   #----------------0100H
           System-       |           System-       |
              parameter  |              parameter  |
-BOOT:    +----------------0000H +BOOT:    #----------------0000H 
-</ditaa> +</a2s>
 An der Adresse BOOT befindet sich grundsätzlich ein Sprung An der Adresse BOOT befindet sich grundsätzlich ein Sprung
 zur Warmstartroutine des BIOS. Diese Routine lädt nach Beendigung zur Warmstartroutine des BIOS. Diese Routine lädt nach Beendigung
Zeile 251: Zeile 251:
  
  
 +==== Diskette aus CP/M-Sicht ====
 +
 +CP/M kennt nur den logischen Aufbau in Form von Blöcken. Jeder Block besteht aus b Records a 128 Byte. 
 +Mindestens Block 0 enthält in jedem Fall das Directory. Systemspuren, ein Bereich vor dem Directory, können für Urlader und das CP/M-System reserviert werden. CP/M selbst weiß nichts über den Aufbau der Systemspuren!
 +
 +Siehe [[#der_disk_parameter_block|Disk Parameter Block DPB]]
 +
 +<a2s>
 +          #-----------------------------------------#
 + Track 0  | n Systemspuren (0..n-1) n=OFS           |
 +          | Format und Größe sind CP/M unbekannt!   |
 +          #------------------------------#----------#
 + Track n  | Block 0 (directory)          |
 +          #------------------------------#
 +          | Block 1                      |
 +          #------------------------------#
 +          |                              |
 +          | jeder Block hat b=BLM+1      |  Eine Datei belegt immer
 +          | Records a 128 Byte (0..BLM): |  ganze Blöcke!
 +          |                              |
 +          #-------+------------+---------#
 +          | Rec 0 |     ...    | Rec b-1 |
 +          #-------+------------+---------#
 +          |                              |
 +          |                              |
 +          |             ...              |
 +          |                              |
 +          |                              |
 +          |                              |
 +          #------------------------------#  Block m ist nicht immer vollst.
 +          | Block m    m=DSM-1            auf der Disk enthalten
 +          #------------------------------#
 +</a2s>
 +
 +CP/M rechnet Blocknummer + laufende Rec-Nummer in Track und 128-Byte-Sector um.
 +
 +==== Diskette aus techn. Sicht ====
 +
 +Aus technischer Sicht besteht eine Diskette aus Spuren. Jede Spur kann unterschiedlich formatiert sein, d.h. einen unterschiedlichen physischen Sektoren-Aufbau haben. Genutzt wird das bei Systemspuren, die bei einigen Computersystemen eine anderes Sektorformat haben als der für CP/M nutzbare Bereich. 
 +
 +CP/M kennt außerdem keine Diskettenseiten! CP/M 1 kannte nur einseitige Disketten mit physischen Sektorlängen von 128 Byte. Ein BIOS hierfür konnte die Werte des BDOS 1:1 an den Floppycontroller durchreichen. Modernere Disketten haben zwei Seiten und größere physischen Sektoren.
 +
 +Die physischen Sektoren sind bei DDR-Computer-Formaten meist 512 Byte oder 1 KByte groß (Softsektorierung). Das Bios liest und schreibt immer ganze physische Sektoren. Die Reihenfolge der physischen Sektoren ist oftmals auch nicht in natürlicher Folge, sondern passend zur Verarbeitungszeit im Floppy-Controller und in CP/M mit Versatz angeordnet. z.B. sind die Sektoren mit einem Interleave-Faktor 2 angeordnet: 1,3,5,2,4. Physische Sektoren eines Floppy-Laufwerkwerks werden auch ab 1 gezählt; CP/M zählt seine logischen Werte immer ab 0. Die Umrechnung der logischen Blocknummern in Spur und logischen Sektor erfolgt im BDOS; die Zuordnung zu den physischen Sektoren muss  das Bios übernehmen (DEBLOCK-Algorithmus).
 +
 +Die physischen Spuren und Sektoren auf Vorder- und Rückseite einer Diskette müssen durch das BIOS passend umgerechnet werden. z.B. Sektoren der Vorderseite als 1..5, die der Rückseite als 6..10. Das BIOS muss am Floppycontroller bei Sektoren > 5 die Rücksetie selektieren und von der Sektornummer 5 subtrahieren und so die Sektoren techn. richtig zuordnen.
 +
 +<a2s>
 +Track/Spur                                   DPB-Wert (Disk Parameter Block)
 +       #-----------------------------------#
 +0      |   Systemspur 0                    | a = OFF Systemspuren 0..OFF-1
 +         ...                             |  
 +a-1    |   Systemspur a-1                  |
 +       #-----------------------------------#
 +a      | Block 0 | Block 1 | ...           | n Blöcke
 +                                         | DRM+1 Einträge a 32 Byte
 +          Directory                      | 
 +                                         | -> n = (DRM+1)*32/BLS (aufrunden)
 +                                         
 +                             | Block n-1 | -> b = (DRM+1)/4/SPT + a (aufrunden)
 +       #-----------------------------------#
 +b      | Block n | Block n+1 | ...         | m-n Blöcke
 +                                         |
 +                                         | Blockgröße 1K .. 16KByte 
 +                                         | (s. BSH und BLM)
 +                                         | BLS = 128 * 2^BSH = 128 * (BLM+1)
 +          Dateien                        |
 +                                         | Block n muss nicht am Spuranfang
 +                                         | liegen, ist aber fast immer so!
 +                                         |
 +                                         |
 +                                         |
 +                                         |
 +                                         |
 +                                         |
 +                                         |
 +                                         | m = DSM-1
 +                                         | Block m ist nicht immer vollst. 
 +                                         | auf der Disk enthalten,
 +trk-1  |             | Block m-1 | Block m | da max. DSM+1 Records möglich
 +       #-----------------------------------# 
 +</a2s>
 ==== Dateien ==== ==== Dateien ====
  
Zeile 274: Zeile 355:
  
  
-==== Die Directory ====+==== Das Directory ====
  
 Die Information, welche Daten bzw. welche Files auf einer Die Information, welche Daten bzw. welche Files auf einer
Zeile 280: Zeile 361:
 Inhaltsverzeichnis (engl. Directory) enthalten. Inhaltsverzeichnis (engl. Directory) enthalten.
  
-In der Directory stehen alle wichtigen Daten, die das BDOS zur+In dem Directory stehen alle wichtigen Daten, die das BDOS zur
 Bearbeitung der Diskette benötigt. für jedes File sind dies: Bearbeitung der Diskette benötigt. für jedes File sind dies:
  
Zeile 366: Zeile 447:
 ==== Directory-Einträge ==== ==== Directory-Einträge ====
  
-Die Directory enthält alle Informationen über die auf der+Das Directory enthält alle Informationen über die auf der
 Diskette gespeicherten Files. Dazu gehören neben dem Filenamen Diskette gespeicherten Files. Dazu gehören neben dem Filenamen
 und Filetyp die Länge des Files und die von ihm belegten und Filetyp die Länge des Files und die von ihm belegten
Zeile 462: Zeile 543:
 werden im CP/M 1.4 immer als 8-Bit Werte verwaltet. werden im CP/M 1.4 immer als 8-Bit Werte verwaltet.
  
-Von den 32 Bytes eines Eintrags sind 16 Bytes für die+Von den 32 Bytes eines Directory-Eintrags sind 16 Bytes für die
 Speicherung der vom File belegten Blocknummern vorgesehen. Speicherung der vom File belegten Blocknummern vorgesehen.
 Pro Eintrag können damit im CP/M 1.4 maximal 16 Blöcke adressiert Pro Eintrag können damit im CP/M 1.4 maximal 16 Blöcke adressiert
Zeile 482: Zeile 563:
 ist also sowohl die Record- als auch die Eintragsnummer anzugeben.\\ ist also sowohl die Record- als auch die Eintragsnummer anzugeben.\\
 Die maximale Anzahl von Eintragen pro File ist im CP/M 1.4 Die maximale Anzahl von Eintragen pro File ist im CP/M 1.4
-auf 16 begrenzt, sodas ein File höchstens eine Größe von 256+auf 16 begrenzt, so dass ein File höchstens eine Größe von 256
 kbytes erreichen kann. kbytes erreichen kann.
  
  • cpm/systemdoku.1713167576.txt.gz
  • Zuletzt geändert: 2024/04/15 07:52
  • von volkerp