Hauptsteuerroutine des Controllers
Einsprung von $C0DB, $C146, $C3B5, $CB06, $CDB9:
CE00: A6 2C LDX $2C Stackpointer vom Controlleraufruf
CE02: E8 INX +2 (JSR)
CE03: E8 INX
CE04: BD 04 01 LDA $0104,X p-Register (Flags) vom IRQ-Aufruf holen
CE07: 29 10 AND #$10 b-Flag (BRK) gesetzt ?
CE09: D0 66 BNE $CE71 ja, (die folgenden Routinen muessen in
festen Zeitabstaenden aufgerufen werden) ==>
CE0B: A5 9C LDA $9C Cache-Schreibverzoegerung abzaehlen
CE0D: F0 02 BEQ $CE11 [wird bei Busbetrieb gesetzt und von der
CE0F: C6 9C DEC $9C Haupt-Warteschleife abgefragt]
LEDs-setzen
Einsprung von $CE0D:
CE11: A5 79 LDA $79 LED-Blinken ?
CE13: 29 20 AND #$20
CE15: F0 10 BEQ $CE27 nein ==>
CE17: C6 9E DEC $9E Blinkgeschwindigkeit
CE19: 10 0C BPL $CE27 warten, dann ==>
CE1B: A9 09 LDA #$09 Zaehler neu setzen
CE1D: 85 9E STA $9E alle 1/10 sec LED umschalten
CE1F: AD 00 40 LDA $4000 LED-umschalten
CE22: 49 20 EOR #$20
CE24: 8D 00 40 STA $4000
Einsprung von $CE15, $CE19:
CE27: A5 79 LDA $79 Drive LED anschalten ?
CE29: 29 40 AND #$40 B6:1 :an
CE2B: 25 79 AND $79
CE2D: 85 36 STA $36
CE2F: AD 00 40 LDA $4000 LED ein-/ausschalten
CE32: 29 BF AND #$BF
CE34: 05 36 ORA $36
CE36: 8D 00 40 STA $4000
Laufwerk behandeln
CE39: AD 00 40 LDA $4000 b7=0: wurde die Diskette gewechselt ?
CE3C: 29 80 AND #$80
CE3E: D0 0A BNE $CE4A nein, ==>
CE40: 85 87 STA $87 Cache nicht zurueckschreiben
CE42: A9 80 LDA #$80 $80: Flag fuer 'Cache ist leer' setzen
CE44: 85 95 STA $95
CE46: A9 01 LDA #$01 Flag fuer Diskettenwechsel setzen
CE48: 85 25 STA $25
Einsprung von $CE3E:
CE4A: A5 26 LDA $26 Ist Laufwerk aktiv ?
CE4C: F0 1F BEQ $CE6D nein, (Ende) ==>
CE4E: A8 TAY
CE4F: C9 20 CMP #$20 b5=1: Motor eingeschaltet ?
CE51: F0 20 BEQ $CE73 nein, ==>
CE53: C6 2A DEC $2A Laufwerk Anfahren (Nachlaufen Lo)
CE55: D0 1C BNE $CE73 noch nicht fertig, ==>
CE57: 98 TYA
CE58: 10 04 BPL $CE5E b7=0: Laufwerk bereit ? ja, ==>
CE5A: 29 7F AND #$7F Anlaufvorgang ist abgeschlossen
CE5C: 85 26 STA $26
Einsprung von $CE58:
CE5E: 29 10 AND #$10 Motor nachlaufen lassen ?
CE60: F0 11 BEQ $CE73 nein, ==>
CE62: C6 2B DEC $2B Nachlaufzeit abwarten
CE64: D0 0D BNE $CE73 noch warten, ==>
CE66: 20 BA CB JSR $CBBA Drivemotor ausschalten
CE69: A9 00 LDA #$00 0: 'Laufwerk inaktiv'
CE6B: 85 26 STA $26 in Drivemodus eintragen
Einsprung von $CE4C, $CE76, $CEA1:
CE6D: A6 2C LDX $2C Stackpointer zurueckholen
CE6F: 9A TXS
CE70: 60 RTS Ende der Controllerroutine ==>
Previous Page / Next Page