0 SYS32768:.OPT P,OO 10 .TIT "RASTERZEILEN-INTERRUPT" 11 .PAG 255 12 *= $C000 13 RANDO = 106 14 RANDU = 194 15 IRQALT = $EA31 16 RASTER = $D012 17 MASK = $D01A 18 REQUEST = $D019 19 MODUS = $D018 20 KLEIN = 21 21 GROSS = 23 22 ; 23 ;INITIALISIERUNG 24 ;=============== 25 ; 26 SEI ;INTERRRUPT VERHINDERN 27 LDA #IRQNEU 29 STA $0314 ;IRQ-VEKTOR AUF NEUE 30 STX $0315 ;ROUTINE SETZEN 31 LDA #RANDO 32 STA RASTER ;1.ZEILE FUER IRQ 33 LDA RASTER-1 34 AND #%01111111 ;HIGH-BYTE LOESCHEN 35 STA RASTER-1 36 LDA #%10000001 ;IRQ DURCH RASTER- 37 STA MASK ;ZEILEN FESTLEGEN 38 CLI ;IRQ FREIGEBEN 39 RTS 40 ; 41 ;NEUE INTERRUPTROUTINE 42 ;===================== 43 ; 44 IRQNEU LDA REQUEST ;IRQ-REGISTER 45 STA REQUEST ;LOESCHEN 46 BMI RASTERIRQ ;ZUM RASTER - IRQ 47 ; 48 ;TIMER-INTERRUPT 49 ;=============== 50 ; 51 LDA $DC0D ;IRQ-REG. LOESCHEN 52 CLI ;IRQ ZULASSEN 53 JMP IRQALT ;TIMER-IRQ-ROUTINE 54 ; 55 ;RASTERZEILEN-INTERRUPT 56 ;====================== 57 ; 58 RASTERIRQ LDA RASTER ;ZEILE HOLEN 59 CMP #RANDU ;UNTERER RAND 60 BCS OK ;JA, SPRUNG 61 LDA #KLEIN ;NEIN, AUF KEIN- 62 STA MODUS ;SCHRIFT SCHALTEN 63 LDA #RANDU 64 JMP EXIT ;ZUM SCHLUSS 65 OK LDA #GROSS ;GROSSSCHRIFTMODUS 66 STA MODUS ;EINSCHALTEN 67 LDA #RANDO 68 EXIT STA RASTER 69 JMP $EA7E ;IRQ BEENDEN