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 ; LOAD ADDRESS OF NEXT 0410 STA VDSLST ; INTERRUPT INTO THE 0420 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 ; LOAD ADDRESS OF NEXT 0680 STA VDSLST ; INTERRUPT INTO 0690 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 ; LOAD ADDRESS OF NEXT 0870 STA VDSLST ; INTERRUPT INTO THE 0880 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 ; LOAD ADDRESS OF NEXT 1100 STA VDSLST ; INTERRUPT INTO 1110 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 ; LOAD ADDRESS OF FIRST 1360 STA VDSLST ; INTERRUPT INTO THE 1370 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 Y WITH LSB OF INTERRUPT ADDRESS 1450 LDX # >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
Back to previous page