    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