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 |