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
|