Utility-Loader (&) ($e7a3)
Einsprung von $A94A:
A956: 20 AE 84 JSR $84AE auf Diskettenwechsel testen
A959: A5 91 LDA $91 Ist die Sektorgroesse = 512 Bytes ?
A95B: C9 02 CMP #$02
A95D: D0 1D BNE $A97C nein, (Fehler) ==>
A95F: A9 01 LDA #$01 Position der Drivenummer setzen
A961: 8D 91 02 STA $0291
A964: 20 FD 81 JSR $81FD Laufwerksnummer holen
A967: AD 2F 02 LDA $022F Anzahl Dateinamen (= 1 !)
A96A: 48 PHA merken
A96B: A9 01 LDA #$01 Anzahl Dateinamen =1 setzen [is' schon]
A96D: 8D 2F 02 STA $022F
A970: A9 FF LDA #$FF Flag: 'Aufrufadresse gefunden' loeschen
A972: 85 55 STA $55
A974: 20 B9 82 JSR $82B9 Datei suchen
A977: AD 97 02 LDA $0297 Starttrack > 0 (Datei gefunden) ?
A97A: D0 05 BNE $A981 ja, ==>
Einsprung von $A95D:
A97C: A9 39 LDA #$39 39, Syntax Error
A97E: 20 7C 80 JSR $807C ==>
Einsprung von $A97A:
A981: 68 PLA a=1
A982: 8D 2F 02 STA $022F Anzahl Dateinamen =1
A985: AD 97 02 LDA $0297 T&S des 1. Dateiblocks setzen
A988: 85 4D STA $4D
A98A: AD 9C 02 LDA $029C
A98D: 85 4E STA $4E
A98F: A9 03 LDA #$03
A991: 20 D1 93 JSR $93D1 Dateityp USR setzen und Datei oeffnen
Einsprung von $A9EA:
A994: A9 00 LDA #$00
A996: 85 56 STA $56 Checksumme initialisieren
A998: 20 F5 A9 JSR $A9F5 Startadresse (Lo) aus der Datei holen
A99B: 85 57 STA $57 und merken
A99D: 20 07 AA JSR $AA07 zur Checksumme addieren
A9A0: 20 F5 A9 JSR $A9F5 Startadresse (Hi) aus der Datei holen
A9A3: 85 58 STA $58 merken
A9A5: 20 07 AA JSR $AA07 und zur Checksumme addieren
A9A8: A5 55 LDA $55 Wurde die Aufrufadresse schon festgelegt ?
A9AA: F0 0A BEQ $A9B6 ja, ==>
A9AC: A5 57 LDA $57 Startadresse merken
A9AE: 48 PHA
A9AF: A5 58 LDA $58
A9B1: 48 PHA
A9B2: A9 00 LDA #$00 Flag: 'Aufrufadresse gefunden' setzen
A9B4: 85 55 STA $55
Einsprung von $A9AA:
A9B6: 20 F5 A9 JSR $A9F5 Programm-Blockgroesse merken
A9B9: 85 59 STA $59
A9BB: 20 07 AA JSR $AA07 und zur Checksumme addieren
Einsprung von $A9D5:
A9BE: 20 F5 A9 JSR $A9F5 Programmbyte holen
A9C1: A0 00 LDY #$00
A9C3: 91 57 STA ($57),Y und an die geforderte Adresse schreiben
A9C5: 20 07 AA JSR $AA07 Byte zur Checksumme addieren
A9C8: A5 57 LDA $57 Zeiger erhoehen
A9CA: 18 CLC
A9CB: 69 01 ADC #$01
A9CD: 85 57 STA $57
A9CF: 90 02 BCC $A9D3
A9D1: E6 58 INC $58
Einsprung von $A9CF:
A9D3: C6 59 DEC $59 Anzahl zu ladender Bytes -1
A9D5: D0 E7 BNE $A9BE sind noch Bytes des Blocks zu laden, ==>
A9D7: 20 76 88 JSR $8876 Byte aus der Datei holen
A9DA: A5 54 LDA $54 Byte mit Checksumme vergleichen
A9DC: C5 56 CMP $56
A9DE: F0 08 BEQ $A9E8 gleich, ==>
A9E0: 20 7C 9D JSR $9D7C T&S fuer die Fehlermeldung holen
A9E3: A9 50 LDA #$50 50, Record not Present
A9E5: 20 3F FF JSR $FF3F ==>
Einsprung von $A9DE:
A9E8: A5 51 LDA $51 EOI-Flag: Dateiende erreicht ?
A9EA: D0 A8 BNE $A994 nein, ==>
A9EC: 68 PLA
A9ED: 85 58 STA $58 Aufrufadresse zurueckholen
A9EF: 68 PLA
A9F0: 85 57 STA $57
A9F2: 6C 57 00 JMP ($0057) und Programm starten
Byte aus der Datei holen und auf Dateiende pruefen
Einsprung von $A998, $A9A0, $A9B6, $A9BE:
A9F5: 20 76 88 JSR $8876 Byte aus der Datei holen
A9F8: A5 51 LDA $51 EOI gesetzt
A9FA: D0 08 BNE $AA04 nein, ==>
A9FC: 20 7C 9D JSR $9D7C T&S fuer die Fehlermeldung holen
A9FF: A9 51 LDA #$51 51, Overflow in Record
AA01: 20 3F FF JSR $FF3F ==>
Einsprung von $A9FA:
AA04: A5 54 LDA $54 Programmbyte holen
AA06: 60 RTS
Byte zur Checksumme addieren
Einsprung von $A99D, $A9A5, $A9BB, $A9C5:
AA07: 18 CLC
AA08: 65 56 ADC $56 Byte addieren
AA0A: 69 00 ADC #$00 bei Uebertrag +1
AA0C: 85 56 STA $56
AA0E: 60 RTS
Previous Page / Next Page