    Datei mit SA 0-14 oeffnen ($d7b4)
    Geoeffnet werden:
    - 'normale' Dateien im Zweipuffer-Betrieb,
      - '*' (alte Datei),
      - '@' (Save & Replace),
      - Append und Modify werden unterstuetzt
    - relative Dateien,
    - Direktory ('$') mit und ohne Formatierung,
    - Direktzugriffe ('#').

    Einsprung von $8015:

    9678: A5 52     LDA $52          SA merken
    967A: 85 7A     STA $7A
    967C: 20 65 81  JSR $8165        Kommandozeilenende feststellen
    967F: 8E 2A 02  STX $022A        und merken

    letzte Datei wieder oeffnen ?

    9682: AE 00 02  LDX $0200        1. Zeichen aus der Kommandozeile holen
    9685: A5 7A     LDA $7A          SA holen
    9687: D0 27     BNE $96B0        SA<>0, ==>
    9689: E0 2A     CPX #$2A         ist 1. Zeichen ein '*' ?
    968B: D0 23     BNE $96B0        nein, ==>
    968D: A5 4C     LDA $4C          Starttrack der Datei holen
    968F: F0 45     BEQ $96D6        keine Datei gespeichert, ==>
    9691: 85 4D     STA $4D
    9693: A9 00     LDA #$00         Drivenummer setzen
    9695: 85 EF     STA $EF
    9697: A9 02     LDA #$02         Dateityp auf PRG setzen
    9699: 85 F4     STA $F4
    969B: AD 8B 02  LDA $028B        Startsektor setzen
    969E: 85 4E     STA $4E
    96A0: 20 F6 81  JSR $81F6        Drive-LED einschalten
    96A3: 20 0D 9B  JSR $9B0D        Kanal suchen, 1. Block lesen
    96A6: A9 04     LDA #$04         Dateityp auf PRG setzen

    Einsprung von $96CC:

    96A8: A6 50     LDX $50
    96AA: 99 F9 00  STA $00F9,Y
    96AD: 4C 4C 80  JMP $804C

    Directory oeffnen

    Einsprung von $9687, $968B:

    96B0: E0 24     CPX #$24         Directory oeffnen ?
    96B2: D0 1B     BNE $96CF        nein, ==>
    96B4: A5 7A     LDA $7A          SA>0 ?
    96B6: D0 03     BNE $96BB        ja, ==>
    96B8: 4C F7 98  JMP $98F7        Directory ausgeben
    Verzeichnis unformatiert ausgeben

    Einsprung von $96B6:

    96BB: 20 85 80  JSR $8085        Drivenummer suchen, Drive-LED einschalten
    96BE: AD 2B 02  LDA $022B        T&S des Verzeichnisheaders
    96C1: 85 4D     STA $4D          als Dateianfang setzen
    96C3: A9 00     LDA #$00
    96C5: 85 4E     STA $4E
    96C7: 20 0D 9B  JSR $9B0D        Kanal suchen, 1. Block lesen
    96CA: A9 02     LDA #$02         Dateityp auf SEQ setzen
    96CC: 4C A8 96  JMP $96A8

    Direktzugriffskanal oeffnen

    Einsprung von $96B2:

    96CF: E0 23     cpx #'#        Filename ='#23?
    96D1: D0 0B     BNE $96DE        nein, ==>
    96D3: 4C E4 89  JMP $89E4        Direktzugriffskanal oeffnen

    LOAD"*", wenn noch kein File vorher geoeffnet worden war

    Einsprung von $968F:

    96D6: A9 02     LDA #$02         Dateityp auf PRG setzen
    96D8: 8D 33 02  STA $0233
    96DB: 20 03 8F  JSR $8F03        Partition initialisieren

    Dateinamen und Zugriffsart feststellen; Datei suchen

    Einsprung von $96D1:

    96DE: 20 99 80  JSR $8099        Eingabezeile bis zum ':' auswerten
    96E1: D0 04     BNE $96E7        ':' gefunden, ==>
    96E3: A2 00     LDX #$00         Anzahl gefundener Kommas = 0
    96E5: F0 0C     BEQ $96F3        immer, ==>

    Einsprung von $96E1:

    96E7: 8A        TXA              Wurde vor dem ':' ein Komma gefunden ?
    96E8: F0 05     BEQ $96EF        nein, ==>
    96EA: A9 30     LDA #$30         30, Syntax Error
    96EC: 4C 7C 80  JMP $807C

    Einsprung von $96E8:

    96EF: 88        DEY              War der ':' das 1. Zeichen
    96F0: F0 01     BEQ $96F3        (LOAD":xxx") ? ja, ==>
    96F2: 88        DEY              y -2: Position der Drivenummer

    Einsprung von $96E5, $96F0:

    96F3: 8C 91 02  STY $0291        Position der Drivenummer merken
    96F6: A9 8D     LDA #$8D         nach <SHIFT-RETURN> suchen
    96F8: 20 1C 81  JSR $811C        Rest der Befehlszeile auswerten
    96FB: E8        INX              x: Anzahl Kommas +1 =
    96FC: 8E 2F 02  STX $022F        Anzahl gefundener Parameter merken
    96FF: 20 FD 81  JSR $81FD        Laufwerksnummer holen
    9702: 20 A2 82  JSR $82A2        Drive initialisieren, LED einschalten
    9705: 20 ED 82  JSR $82ED        Datei suchen
    9708: A2 00     LDX #$00
    970A: 8E 6F 02  STX $026F        aktuelle Recordlaenge =0
    970D: 8E A7 02  STX $02A7        Default Zugriffsmodus
    9710: 8E 2D 02  STX $022D        aktuellen Dateityp loeschen
    9713: E8        INX              x=1
    9714: EC 2E 02  CPX $022E        = Anzahl der Parameter ?
    9717: B0 10     BCS $9729        ja, (open x,y,z,"BSP") ==>
    9719: 20 AB 98  JSR $98AB        Filetyp oder Zugriffsart holen
    971C: E8        INX              x=2
    971D: EC 2E 02  CPX $022E        = Anzahl der Parameter ?
    9720: B0 07     BCS $9729        ja, (open x,y,z,"BSP,S" oder
                                         open x,y,z,"BSP,R")    ==>
    9722: C0 04     CPY #$04         Ist Parameter der Filetyp 'L' (REL-Datei) ?
    9724: F0 38     BEQ $975E        ja, ==>
    9726: 20 AB 98  JSR $98AB        Filetyp oder Zugriffsart holen
                                    (open x,y,z,"BSP,S,R")

    Einsprung von $9717, $9720, $976A, $9771:

    9729: A6 7A     LDX $7A          SA zurueckholen
    972B: 86 52     STX $52
    972D: E0 02     CPX #$02         SA>=2 (also nicht LOAD/SAVE) ?
    972F: B0 0D     BCS $973E        ja, ==>

    9731: 8E A7 02  STX $02A7        Modus bei LOAD/SAVE durch die SA ermitteln
    9734: AD 2D 02  LDA $022D        Wurde ein Filetyp angegeben
    9737: D0 1B     BNE $9754        ja, ==>
    9739: A9 02     LDA #$02         Filetyp PRG setzen
    973B: 8D 2D 02  STA $022D

    Einsprung von $972F:

    973E: AD 2D 02  LDA $022D        Wurde bereits ein Filetyp festgelegt ?
    9741: D0 11     BNE $9754        ja, ==>
    9743: A5 F4     LDA $F4          Typ des gefundenen Files als aktuellen Typ
    9745: 29 07     AND #$07         uebernehmen
    9747: 8D 2D 02  STA $022D
    974A: AD 97 02  LDA $0297        Tracknummer des 1. Blocks holen
    974D: D0 05     BNE $9754        >0 (File wurde gefunden), ==>
    974F: A9 01     LDA #$01         Filetyp SEQ festlegen (wenn kein File
    9751: 8D 2D 02  STA $022D        gefunden wurde, kann auch der Typ nicht
                                    uebernommen werden)

    Einsprung von $9737, $9741, $974D:

    9754: AD A7 02  LDA $02A7        Zugriffsart 'Write' festgelegt ?
    9757: C9 01     CMP #$01
    9759: F0 18     BEQ $9773        ja, (File zum Schreiben oeffnen) ==>
    975B: 4C ED 97  JMP $97ED        File zum Lesen oeffnen

    REL-Datei oeffnen

    Einsprung von $9724:

    975E: BC 91 02  LDY $0291,X      Position des 3. Parameters holen
    9761: B9 00 02  LDA $0200,Y      Recordlaenge aus Kommandozeile holen
    9764: 8D 6F 02  STA $026F        und merken
    9767: AD 97 02  LDA $0297        Tracknummer des 1. Blocks holen
    976A: D0 BD     BNE $9729        > 0 (REL-Datei gefunden), ==>
    976C: A9 01     LDA #$01         Zugriffsart 'Schreiben' festlegen
    976E: 8D A7 02  STA $02A7        (damit die Datei angelegt wird)
    9771: D0 B6     BNE $9729        ==>

        Previous Page / Next Page