Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
cpm:systemdoku [2018/10/04 10:11] – [Der Disk Parameter Block] volkerp | cpm:systemdoku [2024/12/05 13:01] (aktuell) – [Speicheraufteilung] volkerp | ||
---|---|---|---|
Zeile 126: | Zeile 126: | ||
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 |
| | ||
| | ||
| | ||
- | +----------------+ | + | #----------------# |
| | ||
| | ||
| | ||
- | FBASE: | + | FBASE: |
| | ||
| | ||
| | ||
- | CBASE: | + | CBASE: |
| | ||
| | ||
| | ||
- | TBASE: | + | TBASE: |
| | ||
| | ||
- | BOOT: | + | BOOT: |
- | </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 250: | Zeile 249: | ||
Abmelden als ' | Abmelden als ' | ||
+ | < | ||
+ | Track/ | ||
+ | | ||
+ | 0 | | ||
+ | | ||
+ | a-1 | | ||
+ | | ||
+ | a | Block 0 | Block 1 | ... | n Blöcke | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | b | Block n | Block n+1 | ... | m-n Blöcke | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | trk-1 | | Block m-1 | Block m | | ||
+ | | ||
+ | </ | ||
==== Dateien ==== | ==== Dateien ==== | ||
Zeile 316: | Zeile 349: | ||
von 128 Bytes gemessen. | von 128 Bytes gemessen. | ||
- | CP/M 2.2 hat diese Rechenweise für Files ubernommen, unterscheidet | + | CP/M 2.2 hat diese Rechenweise für Files übernommen, unterscheidet |
aber zwischen Sektoren auf der Diskette und File- | aber zwischen Sektoren auf der Diskette und File- | ||
' | ' | ||
Zeile 330: | Zeile 363: | ||
allgemein für Diskettendaten benutzt. | allgemein für Diskettendaten benutzt. | ||
- | Im Zusammenhang mit Disketten ist auch die Bezeichnung ' | + | Im Zusammenhang mit Disketten ist auch die Bezeichnung '**logischer |
- | Sektor' | + | Sektor**' für einen Record üblich. Damit wird vor allem |
der Unterschied zwischen einem Sektor auf der Diskette (' | der Unterschied zwischen einem Sektor auf der Diskette (' | ||
Sektor' | Sektor' | ||
Zeile 357: | Zeile 390: | ||
Das BIOS muß beim Lesen jeden physikalischen Sektor in logische | Das BIOS muß beim Lesen jeden physikalischen Sektor in logische | ||
Sektoren aufspalten und beim Schreiben logische Sektoren | Sektoren aufspalten und beim Schreiben logische Sektoren | ||
- | zu einem physikalischen | + | zu einem physikalischen |
CP/M 2.2 unterstützt dieses Zusammenfassen und Aufspalten | CP/M 2.2 unterstützt dieses Zusammenfassen und Aufspalten | ||
Zeile 504: | Zeile 537: | ||
verwaltet, um so die Zahlweise der Recordnummern von 0 bis | verwaltet, um so die Zahlweise der Recordnummern von 0 bis | ||
127 zu erhalten. | 127 zu erhalten. | ||
+ | |||
+ | 1 Extend = 128 Records = 16 kByte | ||
==== Extendgruppen ==== | ==== Extendgruppen ==== | ||
Zeile 717: | Zeile 752: | ||
==== Sequentieller Zugriff <-> Direkter Zugriff ==== | ==== Sequentieller Zugriff <-> Direkter Zugriff ==== | ||
- | Im CP/M 1.4 ist es Aufgabe des Programms, die Eintrags- und | + | Im **CP/M 1.4** ist es Aufgabe des Programms, die Eintrags- und |
Recordnummer im FCB zu setzen. Soll ein bestimmter Record | Recordnummer im FCB zu setzen. Soll ein bestimmter Record | ||
innerhalb des Files erreicht werden, so muß das Programm die | innerhalb des Files erreicht werden, so muß das Programm die | ||
Extend- und Recordnummer selbst berechnen und in den FCB | Extend- und Recordnummer selbst berechnen und in den FCB | ||
einsetzen.\\ | einsetzen.\\ | ||
- | Aus der absoluten Recordnummer ergibt sich die Extendnummer | + | Aus der absoluten Recordnummer |
- | aus der Division durch 128. Der Divisionrest ist die Recordnummer | + | aus der Division durch 128. Der Divisionrest ist die Recordnummer |
innerhalb des Extends. Diese Werte müssen aber immer | innerhalb des Extends. Diese Werte müssen aber immer | ||
vor dem Öffnen gesetzt sein, damit das BDOS die richtige | vor dem Öffnen gesetzt sein, damit das BDOS die richtige | ||
Blocktabelle in den FCB überträgt. | Blocktabelle in den FCB überträgt. | ||
+ | |||
+ | < | ||
+ | RRN -> SRN: | ||
+ | RRN = 128 + EX * 128 + CR | ||
+ | | ||
+ | SRN -> RRN: | ||
+ | EX = RRN / 128 | ||
+ | CR = RRN modulo 128 | ||
+ | </ | ||
Alle höheren Recordnummern können im CP/M 1.4 nur sequentiell | Alle höheren Recordnummern können im CP/M 1.4 nur sequentiell | ||
Zeile 735: | Zeile 779: | ||
sequentiellen Zugriff nicht möglich. | sequentiellen Zugriff nicht möglich. | ||
- | CP/M 2.2 bietet daher mit dem direkten Zugriff (engl. Random | + | **CP/M 2.2** bietet daher mit dem direkten Zugriff (engl. Random |
Access) eine weitere Zugriffsart, | Access) eine weitere Zugriffsart, | ||
Files direkt erreicht werden kann. | Files direkt erreicht werden kann. | ||
Zeile 750: | Zeile 794: | ||
Das BDOS berechnet aus dieser ' | Das BDOS berechnet aus dieser ' | ||
- | die ' | + | die ' |
- | Extend und Recordnummer. | + | Extend |
- | Zwischen der Random Record Nummer und der Sequential Record | + | Zwischen der Random Record Nummer |
- | Nummer besteht folgender Zusammenhang: | + | Nummer |
< | < | ||
Zeile 831: | Zeile 875: | ||
Werte sind Verweise auf weitere Tabellen. | Werte sind Verweise auf weitere Tabellen. | ||
- | Die Sektor-Verschränkungs-Tabelle (XLT) dient zur Umrechnung | + | Die Sektor-Verschränkungs-Tabelle (**XLT**) dient zur Umrechnung |
von logischen zu physikalischen Sektornummern einer Spur. Die | von logischen zu physikalischen Sektornummern einer Spur. Die | ||
Länge dieser Tabelle entspricht der Anzahl logischer Sektoren | Länge dieser Tabelle entspricht der Anzahl logischer Sektoren | ||
Zeile 837: | Zeile 881: | ||
NHDE ist die Nummer des höchsten belegten Directory-Eintrags+1 | NHDE ist die Nummer des höchsten belegten Directory-Eintrags+1 | ||
- | und dient der Geschwindigkeitserhohung | + | und dient der Geschwindigkeitserhöhung |
NHDE wird jeweils beim Einloggen eines Laufwerks und beim | NHDE wird jeweils beim Einloggen eines Laufwerks und beim | ||
Löschen oder Neuanlegen eines Eintrages neu berechnet. Die | Löschen oder Neuanlegen eines Eintrages neu berechnet. Die | ||
Zeile 885: | Zeile 929: | ||
auf ein und denselben DPB verweisen. | auf ein und denselben DPB verweisen. | ||
- | Im CSV sind die Prüfsummen (engl. Checksum) der einzelnen | + | Im **CSV** sind die Prüfsummen (engl. Checksum) der einzelnen |
Directory-Records gespeichert.\\ | Directory-Records gespeichert.\\ | ||
Pro Directory-Record ist im CSV ein Byte vorhanden, das die | Pro Directory-Record ist im CSV ein Byte vorhanden, das die | ||
Zeile 895: | Zeile 939: | ||
im Zusammenhang mit dem Warmstart beschrieben. | im Zusammenhang mit dem Warmstart beschrieben. | ||
- | Der Allocation Vektor (ALV) bildet die Belegungstabelle (besser: | + | Der Allocation Vektor (**ALV**) bildet die Belegungstabelle (besser: |
Belegungsvektor) der Diskette.\\ | Belegungsvektor) der Diskette.\\ | ||
Aus dem Belegungsvektor kann das BDOS ersehen, welche Blöcke | Aus dem Belegungsvektor kann das BDOS ersehen, welche Blöcke | ||
Zeile 1014: | Zeile 1058: | ||
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<del>, diese ist aber | + | Gigabyte (65536 Blöcke a 16 kbyte) denkbar, 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</del>. | + | 65536 Records, also 8 Megabyte (65536 * 128 Bytes) beschränkt. |
+ | |||
+ | // | ||
+ | P.Schorn, 04/2019: Ich habe ein Experiment mit einer 16 mb und einer 32 mb Disk | ||
+ | gemacht. In beiden Fällen konnte ich zwar STAT überzeugen, | ||
+ | so gross ist, aber ich konnte sie nicht über 8 mb hinaus füllen. Bei | ||
+ | überschreiten dieser Grenze sind dann BDOS Fehler aufgetreten.)) | ||
+ | Mit anderen BDOS-Varianten können größere Laufwerke genutzt werden.((https:// | ||
+ | Reason they only do 16bit math and the limit is the total number of | ||
+ | sectors not the total number of allocation blocks. | ||
+ | If it were the latter it could go to 1GB. If you want that then look | ||
+ | at P2dos, Novados, suprbdos, Zrdos, Dosplus. | ||
+ | chimes in we also had DRIs improved but those only go to 32mb | ||
+ | namely CP/m+ and MPM.)) | ||
+ | // | ||
**DRM**+1 ist die Anzahl der Directory-Einträge der Diskette. Da | **DRM**+1 ist die Anzahl der Directory-Einträge der Diskette. Da |