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