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 |