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