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:write_a_bios:teil_1 [2021/09/22 06:30] – [Der Disk Parameter Block] volkerpcpm:write_a_bios:teil_1 [2024/12/05 12:54] (aktuell) – [Der Disk Parameter Block] volkerp
Zeile 235: Zeile 235:
  
 **SETSEC** bezieht sich auf den im Registerpaar **SETSEC** bezieht sich auf den im Registerpaar
-BC übergebenen Sektor. Die so gesetzte Sektornummer ist immer+BC übergebenen **transformiertem** Sektor. Die so gesetzte Sektornummer ist immer
 das Ergebnis der SECTRAN-Funktion (s.u.). Auch hier ist ein das Ergebnis der SECTRAN-Funktion (s.u.). Auch hier ist ein
 tatsächlicher Diskzugriff auf diesen Sektor nicht garantiert. tatsächlicher Diskzugriff auf diesen Sektor nicht garantiert.
 +
 +Vor direktem Aufruf von SETSEC muss daher immer SECTRAN erfolgen!
  
 **SETDMA**: Alle nachfolgenden Diskzugriffe müssen die DMA-Adresse als **SETDMA**: Alle nachfolgenden Diskzugriffe müssen die DMA-Adresse als
Zeile 330: Zeile 332:
  
 Ein DPH umfasst 8 Einträge zu je 16 Bit und hat folgende Struktur:  Ein DPH umfasst 8 Einträge zu je 16 Bit und hat folgende Struktur: 
-<ditaa+<a2s
-    +-----------------------------------------------------++    #-----#------#------#------#--------#-----#-----#-----#
     | XLT | NHDE | CLTK | FSCT | DIRBUF | DPB | CSV | ALV |     | XLT | NHDE | CLTK | FSCT | DIRBUF | DPB | CSV | ALV |
-    +-----------------------------------------------------++    #-----#------#------#------#--------#-----#-----#-----#
 Byte  0/1   2/   4/5    6/7    8/9      A/B   C/  E/F Byte  0/1   2/   4/5    6/7    8/9      A/B   C/  E/F
-</ditaa>+</a2s>
  
 XLT (s.o.), NHDE, CLTK, FSCT sind mit 0 vorbelegt, DIRBUF ist ein 128 Byte  XLT (s.o.), NHDE, CLTK, FSCT sind mit 0 vorbelegt, DIRBUF ist ein 128 Byte 
Zeile 509: Zeile 511:
 Ein DPB umfasst 15 Bytes in folgender Aufteilung:  Ein DPB umfasst 15 Bytes in folgender Aufteilung: 
  
-<ditaa+<a2s
-+----------------------------------------------------------++#-----#-----#-----#-----#-----#----#-----#-----#-----#-----#
 | SPT | BSH | BLM | EXM | DSM | DRM| AL0 | AL1 | CKS | OFF | | SPT | BSH | BLM | EXM | DSM | DRM| AL0 | AL1 | CKS | OFF |
-+----------------------------------------------------------++#-----#-----#-----#-----#-----#----#-----#-----#-----#-----#
   0/1               5/  7/   9       B/  D/E     0/1               5/  7/   9       B/  D/E  
    16                16    16    8        16    16    16                16    16    8        16    16
-</ditaa>+</a2s>
  
  
Zeile 553: Zeile 555:
 :!: CP/A nutzt die erste Variante. :!: CP/A nutzt die erste Variante.
  
-Unabhängig von der physischen Sektorlänge gibt es im CP/M noch die **Blockgröße** (engl. block size, BLS).+Unabhängig von der physischen Sektorlänge gibt es im CP/M noch die **Blockgröße** (engl. block size, **BLS**).
 Das BDOS teilt jede Diskette in Blöcke (engl. Blocks) auf, um damit den  Das BDOS teilt jede Diskette in Blöcke (engl. Blocks) auf, um damit den 
 Verwaltungs- und Speicheraufwand für die Belegungstabelle zu verkleinern. Verwaltungs- und Speicheraufwand für die Belegungstabelle zu verkleinern.
Zeile 616: Zeile 618:
 sollte gewahrt bleiben. Es ist wenig sinnvoll, mehr Directory-Einträge als Blöcke zu haben. sollte gewahrt bleiben. Es ist wenig sinnvoll, mehr Directory-Einträge als Blöcke zu haben.
 DSM/(durchschnittliche Dateigröße) kann ein Anhaltspunkt sein. DSM/(durchschnittliche Dateigröße) kann ein Anhaltspunkt sein.
 +
 +Es sollte außerdem
 +
 +für 8-Bit-Blocknummern: DRM * 16 >= DSM\\
 +für 16-Bit-Blocknummern: DRM * 8 >= DSM
 + 
 +sein, sonst bekommt man die Diskette gar nicht voll.
  
 Im Beispiel ergibt sich für drei 2K-Blöcke 3 * 2048/32 = maximal mögliche 192 Einträge,  Im Beispiel ergibt sich für drei 2K-Blöcke 3 * 2048/32 = maximal mögliche 192 Einträge, 
  • cpm/write_a_bios/teil_1.1632292207.txt.gz
  • Zuletzt geändert: 2021/09/22 06:30
  • von volkerp