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