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 |