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 |