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 |