Dos-Tabellen initialisieren ($eb3a)
Einsprung von $AFD3:
AFE9: AD 00 40 LDA $4000 Geraetenummer auslesen
AFEC: 29 18 AND #$18
AFEE: 4A LSR
AFEF: 4A LSR
AFF0: 4A LSR Schalter-Bits + 8
AFF1: 09 48 ORA #$48 TALK (+ $40)
AFF3: 85 78 STA $78
AFF5: 49 60 EOR #$60 LISTEN (+ $20)
AFF7: 85 77 STA $77
AFF9: A2 08 LDX #$08 Hi-Bytes der Pufferadressen
AFFB: A9 0B LDA #$0B berechnen
Einsprung von $B004:
AFFD: 9D F1 01 STA $01F1,X $01F1: 03 04 .. 0b
B000: 38 SEC
B001: E9 01 SBC #$01
B003: CA DEX
B004: 10 F7 BPL $AFFD
B006: A2 00 LDX #$00 Pufferzeiger initialisieren
B008: A0 00 LDY #$00
Einsprung von $B018:
B00A: A9 00 LDA #$00
B00C: 95 BB STA $BB,X Lo-Byte = 0
B00E: E8 INX
B00F: B9 F1 01 LDA $01F1,Y Hi-Byte = 03 04 .. 0b
B012: 95 BB STA $BB,X
B014: E8 INX
B015: C8 INY
B016: C0 09 CPY #$09
B018: D0 F0 BNE $B00A
B01A: A9 00 LDA #$00 INPUT-Puffer nach $0200
B01C: 95 BB STA $BB,X
B01E: A9 02 LDA #$02
B020: 95 BC STA $BC,X
B022: A9 D0 LDA #$D0 ERROR-Puffer nach $02d0
B024: 95 BD STA $BD,X
B026: A9 02 LDA #$02
B028: 95 BE STA $BE,X
B02A: A9 FF LDA #$FF Kanalzuordnung loeschen
B02C: A2 12 LDX #$12 (SA sind keinem Kanal zugeordnet)
Einsprung von $B031:
B02E: 95 A8 STA $A8,X
B030: CA DEX
B031: 10 FB BPL $B02E
B033: A2 06 LDX #$06
Einsprung von $B03D:
B035: 95 D1 STA $D1,X 1. Pufferzuordnung freigeben
B037: 95 D8 STA $D8,X 2. Pufferzuordnung freigeben
B039: 9D 65 02 STA $0265,X Side-Sektor Tabelle loeschen
B03C: CA DEX Puffer 7+8 werden nicht
B03D: 10 F6 BPL $B035 Kanaelen zugeordnet (BAM)
B03F: A9 09 LDA #$09 Puffer 9 (INPUT) auf Kanal 5
B041: 85 D6 STA $D6
B043: A9 0A LDA #$0A Puffer 10 (ERROR) auf Kanal 6
B045: 85 D7 STA $D7
B047: A9 06 LDA #$06 SA 16 belegt Kanal 6 (lesen)
B049: 85 B8 STA $B8
B04B: A9 85 LDA #$85 SA 15 belegt Kanal 5 (schreiben)
B04D: 85 B7 STA $B7
B04F: A9 1F LDA #$1F Kanal 0-4 freigeben
B051: 85 70 STA $70
B053: A9 01 LDA #$01 Kanal 5 auf Schreiben stellen
B055: 8D 39 02 STA $0239
B058: A9 88 LDA #$88 Kanal 6 auf Lesen / kein EOI
B05A: 8D 3A 02 STA $023A
B05D: A9 80 LDA #$80 Pufferbelegung: Puffer 7 belegen
B05F: 85 6D STA $6D [Puffer 8 hat kein Bit; ist immer belegt]
B061: A9 01 LDA #$01 Diskette wurde gewechselt
B063: 85 25 STA $25
B065: 20 C3 89 JSR $89C3 Standard Uservektoren-Tabelle setzen
B068: 20 59 8D JSR $8D59 Reihenfolge der Pufferbelegung festlegen
B06B: A9 01 LDA #$01 Sektorversatz auf 1
B06D: 85 2E STA $2E
B06F: A9 02 LDA #$02 Anzahl der Leseversuche
B071: 85 30 STA $30
B073: A9 00 LDA #$00 Burst-OR-Maske
B075: 85 8A STA $8A
B077: A9 FF LDA #$FF Burst-AND-Maske
B079: 85 89 STA $89
B07B: A9 00 LDA #$00 Zeiger auf Cachepuffer
B07D: 85 8B STA $8B
B07F: A9 0C LDA #$0C nach $0c00
B081: 85 8C STA $8C
B083: A9 08 LDA #$08 FSM-Bus aktiv / C64-Modus
B085: 85 76 STA $76
B087: A9 33 LDA #$33 Dos-Version
B089: 8D EC 01 STA $01EC
B08C: A9 44 LDA #$44 1581-Formatkennzeichen
B08E: 8D EB 01 STA $01EB
B091: A9 C0 LDA #$C0 E/A-Byte: b6=1: CRC-Test ein; b7:Verify ein
B093: 85 8D STA $8D b5=0: Super-Side-Sektoren verwenden
B095: A9 50 LDA #$50 Anlaufzeit des Motors setzen (0,8 sec)
B097: 8D D9 01 STA $01D9
B09A: A9 20 LDA #$20 Cache-Verzoegerung auf 32 (= 320 ms) setzen
B09C: 85 9D STA $9D
B09E: A2 00 LDX #$00 Job 0 benutzen
B0A0: A9 82 LDA #$82 RESET_DV: Controller initialisieren
B0A2: 20 9D 95 JSR $959D Job ausfuehren
B0A5: C9 02 CMP #$02 Fehler ?
B0A7: B0 05 BCS $B0AE ja, (Controller Error) ==>
B0A9: A9 C0 LDA #$C0 RESTORE_DV: ('Bump')
B0AB: 4C 9D 95 JMP $959D Job ausfuehren
Einsprung von $B0A7:
B0AE: A9 76 LDA #$76 76, Controller Error
B0B0: 4C 67 A8 JMP $A867
Previous Page / Next Page