naechsten Block einer Partition holen
A: c: 1: Track wurde gewechselt;
z: 1: Ende der Partition erreicht
Einsprung von $86D3, $B342, $B7CD, $B830, $B8AD:
B2EF: AD EE 01 LDA $01EE Anzahl der uebrigen Blocks -1
B2F2: D0 08 BNE $B2FC Lo-Byte >0, ==>
B2F4: AD ED 01 LDA $01ED Hi-Byte =0 (fertig), ==>
B2F7: F0 1D BEQ $B316
B2F9: CE ED 01 DEC $01ED Hi-Byte -1
Einsprung von $B2F2:
B2FC: CE EE 01 DEC $01EE Lo-Byte -1
B2FF: E6 4E INC $4E Sektornummer erhoehen
B301: A5 75 LDA $75 'letzter Sektor +1' erreicht ?
B303: C5 4E CMP $4E
B305: D0 0F BNE $B316 nein, ==>
B307: A9 00 LDA #$00 Sektornummer =0
B309: 85 4E STA $4E
B30B: A5 4D LDA $4D Aktueller Track =
B30D: CD 2B 02 CMP $022B Direktory-Track ?
B310: F0 0C BEQ $B31E ja, ==>
B312: E6 4D INC $4D Tracknummer +1
[Es ist ein Fehler, dass die Tracknummer erst nach der Gueltigkeitsabfrage
erhoeht wird; so merkt die Routine es erst am Ende des Tracks, wenn die
Partition Directory-Blocks umfassen soll. Trotzdem ist das Directory davor
geschuetzt, ueberschrieben zu werden, da der erste Block im Directory
(Verzeichnis-Header) immer als belegt gekennzeichnet ist und dadurch der
Partition-Befehl abbricht. Ausserdem verhindert eine zusaetzliche Abfrage
($b822), dass eine Partition im Track 40 beginnt. Innerhalb von Partitions
ist es moeglich, im Verzeichnis-Track eine Partition zu definieren, die den
letzten Block des Tracks nicht beinhalten darf.]
B314: 38 SEC c=1: Track wurde gewechselt
B315: 24 B $24
Einsprung von $B2F7, $B305:
B316: 18 CLC c=0: gleicher Track
B317: AD ED 01 LDA $01ED Ist die Anzahl der uebrigen Blocks =0 ?
B31A: 0D EE 01 ORA $01EE ja, dann z=1
B31D: 60 RTS
Einsprung von $B310:
B31E: A9 67 LDA #$67 67, Illegal Track or Sector
B320: 4C 3F FF JMP $FF3F
Previous Page / Next Page