Copy ($c8f0) 876E: A9 00 LDA #$00 Flag: 'Bampuffer leer' setzen 8770: 8D 00 0A STA $0A00 8773: A9 1F LDA #$1F alle Kanaele freigeben 8775: 85 70 STA $70 8777: 20 99 80 JSR $8099 ':' suchen 877A: D0 03 BNE $877F gefunden 877C: 4C 7E 89 JMP $897E 31, SYNTAX ERROR Einsprung von $877A: 877F: 20 AC 80 JSR $80AC Eingabezeile pruefen 8782: 20 0B 82 JSR $820B Drivenummer(n) holen 8785: AD A2 02 LDA $02A2 Syntaxflag pruefen (Bedeutung: s. $db9c) 8788: 29 55 AND #$55 Ist ein ',' hinter dem '=' ? 878A: D0 0F BNE $879B ja, ==> 878C: AE 91 02 LDX $0291 878F: BD 00 02 LDA $0200,X beginnt der 1. Filename mit einem '*' ? 8792: C9 2A CMP #$2A 8794: D0 05 BNE $879B nein, ==> Einsprung von $87A0: 8796: A9 30 LDA #$30 30, Syntax Error 8798: 4C 7C 80 JMP $807C Einsprung von $878A, $8794: 879B: AD A2 02 LDA $02A2 Ist ein '*' in der Befehlszeile ? 879E: 29 D9 AND #$D9 87A0: D0 F4 BNE $8796 ja, ==> 87A2: 20 B9 82 JSR $82B9 alle angegebenen Files suchen 87A5: AD 2F 02 LDA $022F Anzahl der gefundenen Files 87A8: C9 03 CMP #$03 < 3 (also = 2) ? 87AA: 90 42 BCC $87EE ja, ==> File vor dem '=' mit 1. File hinter dem '=' vergleichen 87AC: A5 EF LDA $EF sind die Drivenummern gleich ? [Wenn keine 87AE: C5 F0 CMP $F0 Nummern angegeben werden, ist die eine $00 87B0: D0 3C BNE $87EE und die andere $80 !!!] nein, ==> 87B2: A5 EA LDA $EA Zeiger in Dir-Block gleich ? 87B4: C5 EB CMP $EB 87B6: D0 36 BNE $87EE nein, ==> 87B8: A5 E5 LDA $E5 Stehen beide Files im selben Dir-Block ? 87BA: C5 E6 CMP $E6 87BC: D0 30 BNE $87EE nein, ==> Neue Datei(en) an eine alte anhaengen (CONCAT) 87BE: 20 03 89 JSR $8903 pruefen, ob alle Files existieren 87C1: A9 01 LDA #$01 Zeiger auf das 1. File nach dem '=' setzen 87C3: 8D 30 02 STA $0230 87C6: 20 41 88 JSR $8841 File zum Lesen oeffnen 87C9: 20 5F 90 JSR $905F aktuellen Dateityp holen 87CC: B0 04 BCS $87D2 = REL-Datei, ==> 87CE: C9 02 CMP #$02 Wenn keine SEQ Datei, dann: 87D0: D0 05 BNE $87D7 Einsprung von $87CC: 87D2: A9 64 LDA #$64 64, File type mismatch 87D4: 20 7C 80 JSR $807C Einsprung von $87D0: 87D7: A9 12 LDA #$12 Auf internen Schreibkanal schalten 87D9: 85 52 STA $52 87DB: A5 B9 LDA $B9 internen Schreibkanal in 87DD: 85 BA STA $BA Lesekanal umwandeln 87DF: A9 FF LDA #$FF Lesekanal loeschen 87E1: 85 B9 STA $B9 [Nun ist das 1. File hinter dem '=' auf dem Schreibkanal zum Lesen geoeffnet. Bei dem Aufruf der Append-Funktion wird der benutzte Lesekanal automatisch wieder in einen Schreibkanal zurueckverwandelt.] 87E3: 20 CC 98 JSR $98CC Append: Dateiende suchen 87E6: A2 02 LDX #$02 mit 2. File nach dem '=' 87E8: 20 00 88 JSR $8800 'normales' COPY beginnen 87EB: 4C 4C 80 JMP $804C normales COPY Einsprung von $87AA, $87B0, $87B6, $87BC: 87EE: 20 F4 87 JSR $87F4 eigentliche Copy-Routine aufrufen 87F1: 4C 4C 80 JMP $804C Einsprung von $87EE: 87F4: 20 1E 89 JSR $891E existieren nur die Files hinter dem '=' ? (Rueckkehr nur bei 'Ja') 87F7: 20 E0 93 JSR $93E0 neues File anlegen 87FA: 20 AB 95 JSR $95AB und im Directory eintragen 87FD: AE 2E 02 LDX $022E 1. File nach dem '=' Einsprung von $87E8, $8838: 8800: 8E 30 02 STX $0230 als aktuelles File setzen 8803: 20 41 88 JSR $8841 File auf SA 17 zum Lesen oeffnen 8806: A9 11 LDA #$11 und aktivieren 8808: 85 52 STA $52 880A: 20 27 90 JSR $9027 (Kanalnummer holen) 880D: 20 5F 90 JSR $905F Filetyp holen 8810: D0 03 BNE $8815 kein REL-File, ==> 8812: 20 95 88 JSR $8895 REL-File zum Kopieren vorbereiten Einsprung von $8810: 8815: A9 08 LDA #$08 Flag 'EOI empfangen' loeschen 8817: 85 51 STA $51 8819: 4C 1F 88 JMP $881F Einsprung von $8827: 881C: 20 5C 8E JSR $8E5C Byte in Ziel-Datei schreiben Einsprung von $8819: 881F: 20 76 88 JSR $8876 Byte aus Quell-Datei holen 8822: A9 80 LDA #$80 b7=1: 'Dateiende' ? 8824: 20 E4 9C JSR $9CE4 (Dateistatus testen) 8827: F0 F3 BEQ $881C nein, ==> 8829: 20 5F 90 JSR $905F Filetyp holen 882C: F0 03 BEQ $8831 REL-Datei, ==> 882E: 20 5C 8E JSR $8E5C Byte in Zieldatei schreiben [Das Byte, das bei EOI zurueckgegeben wird, ist noch gueltig; bei REL-Dateien wurde bereits auf einen nicht existierenden Record zugegriffen.] Einsprung von $882C: 8831: AE 30 02 LDX $0230 naechstes File holen 8834: E8 INX 8835: EC 2F 02 CPX $022F noch eins vorhanden ? 8838: 90 C6 BCC $8800 ja, ==> 883A: A9 12 LDA #$12 Schreibkanal holen 883C: 85 52 STA $52 883E: 4C 9F 99 JMP $999F Ziel-Datei schliessen Previous Page / Next Page |