naechsten Record holen ($dfd0)

Einsprung von $A0E1:

9F4C: A9 20     LDA #$20         b5=0: Flag 'Record voll' loeschen
9F4E: 20 DB 9C  JSR $9CDB        Dateistatus loeschen
9F51: A9 80     LDA #$80         b7=0: Existiert der gesuchte Record ?
9F53: 20 E4 9C  JSR $9CE4        (Dateistatus testen)
9F56: D0 46     BNE $9F9E        nein, ==>
9F58: A6 50     LDX $50          aktuelle Recordnummer +1
9F5A: FE 49 02  INC $0249,X      Lo
9F5D: D0 03     BNE $9F62
9F5F: FE 50 02  INC $0250,X      Hi

Einsprung von $9F5D:

9F62: A6 50     LDX $50
9F64: BD 57 02  LDA $0257,X      Position des naechsten Records im Block = 0
9F67: F0 30     BEQ $9F99        (Record nicht vorhanden) ?, ==>
9F69: 20 42 94  JSR $9442        Pufferzeiger Lo nach a
9F6C: A6 50     LDX $50          [Wenn der 'Zeiger auf den naechsten Record'
9F6E: DD 57 02  CMP $0257,X       < Pufferzeiger ist, dann geht der Record
9F71: 90 03     BCC $9F76         bis in den naechsten Datenblock hinein.]
                                Steht Record in einem Block?, ==>
9F73: 20 BF 9F  JSR $9FBF        Block ggf. schreiben, Folgeblock lesen

Einsprung von $9F71:

9F76: A6 50     LDX $50
9F78: BD 57 02  LDA $0257,X      Pufferzeiger auf naechsten Record setzen
9F7B: 20 22 94  JSR $9422
9F7E: A1 BB     LDA ($BB,X)      Byte aus Record holen
9F80: 85 54     STA $54          und merken
9F82: A9 20     LDA #$20         b5=0: Flag 'Record voll' loeschen
9F84: 20 DB 9C  JSR $9CDB        Dateistatus loeschen
9F87: 20 BC A2  JSR $A2BC        'Zeiger auf naechsten Record' holen

Einsprung von $A22A:

9F8A: 48        PHA              (steht in a)
9F8B: 90 29     BCC $9FB6        Steht der Record in einem Block ? ja, ==>
9F8D: A9 00     LDA #$00         Tracknummer des Folgeblocks holen
9F8F: 20 50 94  JSR $9450        existiert ein Folgeblock ?
9F92: D0 22     BNE $9FB6        ja, ==>
9F94: 68        PLA              Passt der Record noch genau in den Block ?
9F95: C9 02     CMP #$02         [Dann steht der 'Zeiger auf den naechsten
                                 Record' im neuen Block auf dem 2. Byte.]
9F97: F0 12     BEQ $9FAB        ja, ==>
                                [Es ist nicht mehr moeglich, einen voll-
                                 staendigen Record im letzten Datenblock
                                 unterzubringen.]

Einsprung von $9F67:

9F99: A9 80     LDA #$80         Flag fuer 'Record nicht vorhanden' setzen
9F9B: 20 D5 9C  JSR $9CD5        Status setzen

Record existiert nicht; CR und EOI ausgeben

Einsprung von $9F56:

9F9E: 20 69 90  JSR $9069        Kanal- und Puffernummer holen
9FA1: B5 BB     LDA $BB,X        Recordende auf aktuellen Pufferzeiger
9FA3: 99 42 02  STA $0242,Y      setzen (provoziert EOI)
9FA6: A9 0D     LDA #$0D         CR als Ausgabebyte setzen
9FA8: 85 54     STA $54
9FAA: 60        RTS

Record passt noch genau in den Datenblock

Einsprung von $9F97:

9FAB: 20 B7 9F  JSR $9FB7        benutzte Recordlaenge feststellen
9FAE: A6 50     LDX $50
9FB0: A9 00     LDA #$00         Flag 'letzter Record passt genau' setzen
9FB2: 9D 57 02  STA $0257,X
9FB5: 60        RTS

benutzte Recordlaenge feststellen

Einsprung von $9F8B, $9F92:

9FB6: 68        PLA

Einsprung von $9FAB:

9FB7: A6 50     LDX $50          Zeiger auf naechsten Record merken
9FB9: 9D 57 02  STA $0257,X
9FBC: 4C FD A0  JMP $A0FD        Letztes Zeichen im Record suchen

    Previous Page / Next Page