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