10 ; COLOR PALETTE INTERRUPTS›20 ; JOHN W. FELTON›30 ; (c) 1985, ANTIC PUBLISHING›40 ;›50 DRKMSK = $4E ; ATTRACT MODE REDUCED LUMINANCE MASK›60 COLRSH = $4F ; ATTRACT MODE COLOR SHIFT MASK›70 WSYNC = $D40A ; WAIT FOR HORIZONTAL SYNCHRONIZATION REGISTER›80 COLPF0 = $D016 ; COLOR REGISTER FOR PLAYFIELD ZERO›90 COLPF1 = $D017 ; COLOR REGISTER FOR PLAYFIELD ONE›0100 COLPF2 = $D018 ; COLOR REGISTER FOR PLAYFIELD TWO›0110 COLPF3 = $D019 ; COLOR REGISTER FOR PLAYFIELD THREE›0120 COLOR4 = $02C8 ; BACKGROUND COLOR REGISTER SHADOW›0130 VDSLST = $0200 ; DISPLAY LIST INTERRUPT VECTOR›0140 SYSVBV = $E45F ; STAGE ONE VERTICAL BLANK ENTRY›0150 SETVBV = $E45C ; SET VERTICAL BLANK VECTOR ROUTINE›0160 CHBASE = $D409 ; CHARACTER BASE ADDRESS›0170 .ORG $0600 ; POSITION ON PAGE SIX›0180 COLR0 .DS 1 ; DEFINE STORAGE FOR DISPLAY COLORS›0190 COLR1 .DS 1›0200 COLR2 .DS 1›0210 COLR3 .DS 1›0220 COLR4 .DS 1›0230 COLR5 .DS 1›0240 COLR6 .DS 1›0250 COLR7 .DS 1›0260 .DS 4 ; EXTRA STORAGE›0270 ;›0280 ; INTERRUPT #1›0290 ;›0300 INT1 PHA ; PUSH ACCUMULATOR ON STACK›0310 LDA COLOR4 ; LOAD BACKGROUND COLOR›0320 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0330 AND DRKMSK›0340 STA WSYNC ; WAIT FOR HORIZONTAL BLANK›0350 STA COLPF2 ; STORE IN GR.0 BACKGROUND COLOR REGISTER›0360 LDA COLR7 ; LOAD DISPLAY COLOR SEVEN›0370 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0380 AND DRKMSK›0390 STA COLPF1 ; STORE IN GR.0 LUMINANCE COLOR REGISTER›0400 LDA # INT2 ; DISPLAY LIST INTERRUPT›0430 STA VDSLST+1 ; VECTOR›0440 PLA ; POP ACCUMULATOR OFF OF STACK›0450 RTI ; RETURN FROM INTERRUPT›0460 ;›0470 ; INTERRUPT #2›0480 ;›0490 INT2 PHA ; PUSH ACCUMULATOR ON STACK›0500 LDA COLR0 ; LOAD DISPLAY COLOR ZERO›0510 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0520 AND DRKMSK›0530 STA WSYNC ; WAIT FOR HORIZONTAL BLANK›0540 STA COLPF0 ; STORE IN COLOR REGISTER ZERO›0550 LDA COLR1 ; LOAD DISPLAY COLOR ONE›0560 EOR COLRSH ; PERFORM ATTRACT OPERATIONS›0570 AND DRKMSK›0580 STA COLPF1 ; STORE IN COLOR REGISTER ONE›0590 LDA COLR2 ; LOAD DISPLAY COLOR TWO›0600 EOR COLRSH ; PERFORM ATTRACT OPERATIONS›0610 AND DRKMSK›0620 STA COLPF2 ; STORE IN COLOR REGISTER TWO›0630 LDA COLR3 ; LOAD DISPLAY COLOR 3›0640 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0650 AND DRKMSK›0660 STA COLPF3 ; STORE IN COLOR REGISTER THREE›0670 LDA # INT3 ; DISPLAY LIST INTERRUPT›0700 STA VDSLST+1 ; VECTOR›0710 PLA ; POP ACCUMULATOR OFF OF STACK›0720 RTI ; RETURN FROM INTERRUPT›0730 ;›0740 ; INTERRUPT #3›0750 ;›0760 INT3 PHA ; PUSH ACCUMULATOR ON STACK›0770 LDA COLOR4 ; LOAD BACKGROUND COLOR›0780 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0790 AND DRKMSK›0800 STA WSYNC ; WAIT FOR HORIZONTAL BLANK›0810 STA COLPF2 ; STORE IN GR.0 BACKGROUND COLOR REGISTER›0820 LDA COLR7 ; LOAD DISPLAY COLOR SEVEN›0830 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0840 AND DRKMSK›0850 STA COLPF1 ; STORE IN GR.0 LUMINANCE COLOR REGISTER›0860 LDA # INT4 ; DISPLAY LIST INTERRUPT›0890 STA VDSLST+1 ; VECTOR›0900 PLA ; POP ACCUMULATOR OFF OF STACK›0910 RTI ; RETURN FROM INTERRUPT›0920 ;›0930 ; INTERRUPT #4›0940 ;›0950 INT4 PHA ; PUSH ACCUMULATOR ON STACK›0960 LDA COLR4 ; LOAD DISPLAY COLOR FOUR›0970 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›0980 AND DRKMSK›0990 STA WSYNC ; WAIT FOR HORIZONTAL BLANK›1000 STA COLPF0 ; STORE IN COLOR REGISTER ZERO›1010 LDA COLR5 ; LOAD DISPLAY COLOR FIVE›1020 EOR COLRSH ; PERFORM ATTRACT OPERATIONS›1030 AND DRKMSK›1040 STA COLPF1 ; STORE IN COLOR REGISTER ONE›1050 LDA COLR6 ; LOAD DISPLAY COLOR SIX›1060 EOR COLRSH ; PERFORM ATTRACT OPERATIONS›1070 AND DRKMSK›1080 STA COLPF2 ; STORE IN COLOR REGISTER TWO›1090 LDA # INT5 ; DISPLAY LIST INTERRUPT›1120 STA VDSLST+1 ; VECTOR›1130 PLA ; POP ACCUMULATOR OFF OF STACK›1140 RTI ; RETURN FROM INTERRUPT›1150 ;›1160 ; INTERRUPT #5›1170 ;›1180 INT5 PHA ; PUSH ACCUMULATOR ON STACK›1190 LDA COLOR4 ; LOAD BACKGROUND COLOR›1200 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›1210 AND DRKMSK›1220 STA WSYNC ; WAIT FOR HORIZONTAL BLANK›1230 STA COLPF2 ; STORE IN GR.0 BACKGROUND COLOR REGISTER›1240 LDA #$E0 ; LOAD MSB OF ADDRESS OF CHARACTER SET IN ROM›1250 STA CHBASE ; STORE IN CHARACTER SET BASE POINTER›1260 LDA COLR7 ; LOAD DISPLAY COLOR SEVEN›1270 EOR COLRSH ; PERFORM ATTRACT MODE OPERATIONS›1280 AND DRKMSK›1290 STA COLPF1 ; STORE IN GR.0 LUMINANCE COLOR REGISTER›1300 PLA ; POP ACCUMULATOR OFF OF STACK›1310 RTI ; RETURN FROM INTERRUPT›1320 ;›1330 ; VERTICAL BLANK INTERRUPT›1340 ;›1350 VBI LDA # INT1 ; DISPLAY LIST INTERRUPT›1380 STA VDSLST+1 ; VECTOR›1390 JMP SYSVBV ; JUMP TO OS VERTICAL BLANK ROUTINE›1400 ;›1410 ; SET VECTOR TO VERTICAL BLANK INTERRUPT›1420 ;›1430 PLA ; DISCARD NUMBER OF PARAMETERS PASSED IN BASIC CALL›1440 LDY # VBI ; LOAD X WITH MSB OF INTERRUPT ADDRESS›1460 LDA #6 ; LOAD ACCUMULATOR WITH SIX FOR IMMEDIATE VBI›1470 JSR SETVBV ; CALL OS ROUTINE TO SET VECTOR›1480 RTS ; RETURN FROM SUBROUTINE›