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