Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | Letzte ÜberarbeitungBeide Seiten der Revision | ||
cpm:write_a_bios:teil_2 [2018/02/01 06:57] – [Variante 2] volkerp | cpm:write_a_bios:teil_2 [2018/10/05 06:49] – [Variante 2] volkerp | ||
---|---|---|---|
Zeile 63: | Zeile 63: | ||
1 Track = 256 Byte (Fenstergröße)\\ | 1 Track = 256 Byte (Fenstergröße)\\ | ||
- | d.h. 2 Records/ | + | d.h. 2 Records/ |
wir brauchen damit 1600h/256 = 22 Tracks f. Systemspur\\ | wir brauchen damit 1600h/256 = 22 Tracks f. Systemspur\\ | ||
- | insg. 1024 tracks -> DSM = 1023-22 = 1011\\ | + | insg. 1024 tracks -> DSM = 1024-22 = 1012\\ |
wir wählen die kleinstmögliche Blockgröße 2k (1k gehen nicht wg. EXM, da DSM > 255)\\ | wir wählen die kleinstmögliche Blockgröße 2k (1k gehen nicht wg. EXM, da DSM > 255)\\ | ||
und z.B. 128 Dir-Einträge (d.h. 2 Dir-Blöcke)\\ | und z.B. 128 Dir-Einträge (d.h. 2 Dir-Blöcke)\\ | ||
Zeile 127: | Zeile 127: | ||
1 Track = 2048 Byte\\ | 1 Track = 2048 Byte\\ | ||
- | d.h. 16 Records/ | + | d.h. 16 Records/ |
wir brauchen damit 1600h/2048 = 3 Tracks f. Systemspur\\ | wir brauchen damit 1600h/2048 = 3 Tracks f. Systemspur\\ | ||
- | insg. 256 Tracks-> DSM = 255-3\\ | + | insg. 128 Tracks-> DSM = 128-3\\ |
kleinste Blockgröße 1k\\ | kleinste Blockgröße 1k\\ | ||
und z.B. 64 Dir-Einträge (d.h. 2 Dir-Blöcke) | und z.B. 64 Dir-Einträge (d.h. 2 Dir-Blöcke) | ||
Diese Aufteilung ist aufgrund der kleineren Blockgröße günstiger, wenn viele kleine Dateien auf | Diese Aufteilung ist aufgrund der kleineren Blockgröße günstiger, wenn viele kleine Dateien auf | ||
- | der RAM-Disk gehalten werden sollen. Auch wird weniger Platz für den Allocation Vektor ALVxx benötigt. Aber die Umrechnung logischer Track-Sektor -> Adr. f. RAM-Disk ist aufwendiger! | + | der RAM-Disk gehalten werden sollen. Auch wird weniger Platz für den Allocation Vektor ALVxx benötigt. Aber die Umrechnung logischer Track und Sektor -> Adr. f. RAM-Disk ist aufwendiger! |
< | < | ||
- | ;DISKDEF 1, | + | ;DISKDEF 1, |
dpb01: | dpb01: | ||
db 3 ;BSF block shift factor | db 3 ;BSF block shift factor | ||
db 7 ;BLM block mask | db 7 ;BLM block mask | ||
db 0 ;EXM null mask | db 0 ;EXM null mask | ||
- | dw 251 ;DSM disk size-1 | + | dw 124 ;DSM disk size-1 |
dw 63 ; | dw 63 ; | ||
db C0H ; | db C0H ; | ||
Zeile 149: | Zeile 149: | ||
dw 3 ;OFS track offset | dw 3 ;OFS track offset | ||
; | ; | ||
- | alv01: ds 0020h ;allocation vector | + | alv01: ds 0010h ;allocation vector |
csv01: | csv01: | ||
</ | </ | ||
Zeile 181: | Zeile 181: | ||
</ | </ | ||
+ | ===== Beispiel 3 ===== | ||
+ | Ein Floppy-Laufwerk: | ||
+ | |||
+ | log. Sektoren pro Spur 1..40\\ | ||
+ | Blockgröße BLS = 2048\\ | ||
+ | Diskgröße = 800K/BLS = 400\\ | ||
+ | 192 Directory-Einträge\\ | ||
+ | keine Systemspuren | ||
+ | |||
+ | < | ||
+ | ;DISKDEF 0, | ||
+ | dpba: | ||
+ | db 4 ;BSF block shift factor | ||
+ | db 15 ; | ||
+ | db 0 ;EXM null mask | ||
+ | dw 399 ; | ||
+ | dw 191 ; | ||
+ | db 0E0H ; | ||
+ | db 0 ;Al1 alloc 1 | ||
+ | dw 48 ; | ||
+ | dw 0 ;OFS track offset | ||
+ | alva: | ||
+ | csva: | ||
+ | |||
+ | </ | ||
+ | |||
+ | CP/M zählt die logischen Recordnummern pro Spur von 0..39. SECTRAN übersetzt diese Recordnummern in 1..40 (CP/ | ||
+ | |||
+ | CP/M ermittelt anhand DSM, ob 16Bit- oder 8-Bit-Blocknummern genutzt werden: DSM > 255 -> 16Bit-Blocknummern. | ||
+ | |||
+ | Die max. Spurnummer berechnet sich als DSM*BLS/ | ||
+ | CP/M arbeitet aber intern nicht mit einer maximalen Spurnummer, sondern testet auf Überschreiten von DSM. | ||
+ | |||
+ | Der DPB wird vom CP/M wie folgt angezeigt: | ||
+ | < | ||
+ | A>stat dsk: | ||
+ | A: Drive Characteristics | ||
+ | 6400: 128 Byte Record Capacity | ||
+ | 800: Kilobyte Drive Capacity | ||
+ | 192: 32 Byte Directory Entries | ||
+ | 192: Checked | ||
+ | 128: Records/ Extent | ||
+ | 16: Records/ Block | ||
+ | 40: Sectors/ Track | ||
+ | 0: Reserved Tracks | ||
+ | </ | ||
+ | |||
+ | POWER gibt ein paar mehr Informationen aus: | ||
+ | |||
+ | < | ||
+ | POWER 3.03 on CP/M 2.22 1/2 | ||
+ | A=disk | ||
+ | disk capacity: | ||
+ | tracks: | ||
+ | sectors/ | ||
+ | sectors/ | ||
+ | dir entries: | ||
+ | sectors/ | ||
+ | kbytes/ | ||
+ | </ | ||
+ | |||
+ | Bislang wurde noch nicht darauf eingegangen, |