Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| cpm:systemdoku [2025年04月18日 10:59] – [Disketten] volkerp | cpm: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 249: | Zeile 250: | ||
| Abmelden als ' | Abmelden als ' | ||
| - | <code> | + | |
| + | ==== 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, | ||
| + | |||
| + | Siehe [[# | ||
| + | |||
| + | <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 | ||
| + | | Records a 128 Byte (0..BLM): | ganze Blöcke! | ||
| + | | | | ||
| + | # | ||
| + | | Rec 0 | | ||
| + | # | ||
| + | | | | ||
| + | | | | ||
| + | | | ||
| + | | | | ||
| + | | | | ||
| + | | | | ||
| + | # | ||
| + | | Block m m=DSM-1 | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | 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, | ||
| + | |||
| + | 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/ | Track/ | ||
| - | +-----------------------------------+ | + | #-----------------------------------# |
| 0 | | 0 | | ||
| | | ||
| a-1 | | a-1 | | ||
| - | +-----------------------------------+ | + | #-----------------------------------# |
| a | Block 0 | Block 1 | ... | n Blöcke | a | Block 0 | Block 1 | ... | n Blöcke | ||
| | | ||
| | | ||
| | | ||
| + | | ||
| | | ||
| - | +-----------------------------------+ | + | #-----------------------------------# |
| b | Block n | Block n+1 | ... | m-n Blöcke | b | Block n | Block n+1 | ... | m-n Blöcke | ||
| | | ||
| Zeile 281: | Zeile 330: | ||
| | | ||
| trk-1 | | Block m-1 | Block m | da max. DSM+1 Records möglich | trk-1 | | Block m-1 | Block m | da max. DSM+1 Records möglich | ||
| - | +-----------------------------------+ | + | #-----------------------------------# |
| - | </ | + | </a2s> |
| - | + | ||
| - | 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. Ein Bereich vor dem Directory kann für Urlader und das CP/M-System reserviert werden. | + | |
| - | + | ||
| - | Siehe [[#der_disk_parameter_block|Disk Parameter Block DPB]] | + | |
| - | + | ||
| - | < | + | |
| - | +---------------------------------------------+ | + | |
| - | Track 0 | n Systemspuren (0..n-1) n=OFS | | + | |
| - | | belegt OFS*SPT*128 Byte | | + | |
| - | +------------------------------+--------------+ | + | |
| - | Track n | Block 0 (directory) | + | |
| - | +------------------------------+ | + | |
| - | | Block 1 | | + | |
| - | +------------------------------+ | + | |
| - | | | | + | |
| - | | jeder Block hat b=BLM+1 | + | |
| - | | Records a 128 Byte (0..BLM): | | + | |
| - | | | | + | |
| - | +-------+------------+---------+ | + | |
| - | | Rec 0 | | + | |
| - | +-------+------------+---------+ | + | |
| - | | | | + | |
| - | | | | + | |
| - | | | | + | |
| - | | | | + | |
| - | | | | + | |
| - | | | | + | |
| - | +------------------------------+ | + | |
| - | | Block m m=DSM-1 | + | |
| - | +------------------------------+ | + | |
| - | </code> | + | |
| - | + | ||
| - | CP/M rechnet Blocknummer+Rec-Nummer in Track und 128-Byte-Sector um. | + | |
| - | + | ||
| ==== Dateien ==== | ==== Dateien ==== | ||
| Zeile 342: | Zeile 355: | ||
| - | ==== Die Directory ==== | + | ==== Das Directory ==== |
| Die Information, | Die Information, | ||
| Zeile 348: | 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 434: | 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 530: | 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 550: | 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, | + | auf 16 begrenzt, |
| kbytes erreichen kann. | kbytes erreichen kann. | ||