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 |