Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
cpm:write_a_bios:teil_2 [2021/09/28 08:23] – volkerp | cpm:write_a_bios:teil_2 [2025/04/19 15:36] (aktuell) – volkerp | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
weiter geht es mit dem **DPB** | weiter geht es mit dem **DPB** | ||
- | das folgende Beispiel stammt aus einer [[cpm: | + | Das BIOS erhält die Information, |
+ | * SETDSK (Laufwerk, 0..15), | ||
+ | * SETTRK (Track, Spur 0...x, berechnet aus Blocknummer + Systempuren), | ||
+ | * SECTRAN (Transformation der aktuellen log. Record-Nummer 0..BSM, Sektorversatz, | ||
+ | * und SETSEC (Sector, transformierte Record-Nummer). | ||
+ | |||
+ | Das BDOS ruft diese genannten BIOS-Funktionen immer vor Aufruf von READ oder WRITE in dieser Reihenfolge auf. Ein BIOS speichert daher die Werte für Laufwerk, Spur, Sektor zwischen und greift bei Lese- und Schreiboperationen darauf zu. Pro Format/ | ||
+ | |||
+ | Das folgende Beispiel stammt aus einer [[cpm: | ||
Bei CP/A erfolgt die Sektorzählung ab 1, deshalb steht in sectran ein inc hl. | Bei CP/A erfolgt die Sektorzählung ab 1, deshalb steht in sectran ein inc hl. | ||
- | Die Zählung ab 1 muss bei den direkten Zugriffen beachtet werden! | + | Die Zählung ab 1 muss bei den direkten Zugriffen |
< | < | ||
Zeile 29: | Zeile 37: | ||
- Ausgabe A17..A16 auf Port " | - Ausgabe A17..A16 auf Port " | ||
- Ausgabe A15..A8 auf Port " | - Ausgabe A15..A8 auf Port " | ||
- | - Einblenden in den Hauptspeicher (auf Adresse " | + | - Einblenden |
- Zugriff auf " | - Zugriff auf " | ||
Zeile 242: | Zeile 250: | ||
CP/M ermittelt anhand DSM, ob 16Bit- oder 8-Bit-Blocknummern genutzt werden: DSM > 255 -> 16Bit-Blocknummern. | 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/ | + | Die max. Spurnummer berechnet sich als DSM*BLS/ |
CP/M arbeitet aber intern nicht mit einer maximalen Spurnummer, sondern testet auf Überschreiten von DSM. | CP/M arbeitet aber intern nicht mit einer maximalen Spurnummer, sondern testet auf Überschreiten von DSM. | ||
Zeile 278: | Zeile 286: | ||
Blocking/ | Blocking/ | ||
+ | TODO |