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