    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