1000 SYS700 1010 ; * DYNABORDER * 1020 ; * PAL SOURCE CODE * 1030 ; * BY JEAN-YVES LEMIEUX * 1040 ; * RIMOUSKI (QC) DEC 88 * 1050 ; ************************ 1060 ; 1070 .OPT OO 1080 ; 1090 TEM =$254 ;TEMPORARY STORAGE 1100 IRQOLD =$257 1110 IRQVEC =$314 ;IRQ VECTOR 1120 RASHI =$D011 ;RASTER LINE 1130 RASLO =$D012 ;REGISTERS 1140 IRR =$D019 ;INT. REQUEST REG 1150 IMR =$D01A ;INT. MASK REG 1160 BCOL =$D020 ;BORDER COLOR 1170 ICR =$DC0D ;INT. CNTRL REG 1180 ; 1190 *=$3000 1200 ; 1210 SEI 1220 LDA IRQVEC ;PREPARE NEW 1230 LDY IRQVEC+1 ;INTERRUPT 1240 STA IRQOLD ;PROCEDURE 1250 STY IRQOLD+1 1260 LDA #NEWIRQ 1280 DI STA IRQVEC 1290 STY IRQVEC+1 1300 CLI 1310 LDA #1 ;ENABLE RASTER 1320 STA IMR ;LINE INTERRUPT 1330 STA IRR ;RESET IRR 1340 LDA #$1B ;CLEAR RASTER 1350 STA RASHI ;COMPARE BIT (8) 1360 LDA #$7F ;CLEAR IRQ 1370 STA ICR ;FLAG BIT 1380 LDA #$00 1390 STA TEM ;PREPARE 1400 STA TEM+2 ;SELF-MODIFYING 1410 LDA #$05 ;ROUTINE 1420 STA TEM+1 1430 LDA #$D7 1440 STA N6+1 1450 RTS 1460 ; 1470 NEWIRQ =* 1480 ; 1490 LDA #$32 ;FIRST INTERRUPT 1500 STA RASLO ;AT LINE 50 1510 LDX #1 ;RESET 1520 STX IRR ;REGISTER 1530 LDY #0 1540 N1 ADC #2 ;IF A RASTER LINE 1550 N2 CMP RASLO ;HAS BEEN REACHED 1560 BNE N2 ;WE DISPLAY 1570 STX BCOL ;A COLOR STRIPE 1580 N3 INX 1590 ADC TEM+1 ;SEPARATED BY 1600 N4 CMP RASLO 1610 BNE N4 1620 STY BCOL ;A BLACK LINE 1630 N5 CPX #$05 1640 BNE N1 1650 BIT TEM 1660 BVS REST 1670 ; 1680 LDX #0 ;MODIFY PRIOR 1690 STX N5+1 ;ROUTINE 1700 LDX #$CA ;'DEX' OPCODE 1710 STX N3 1720 N6 LDA #$00 ;DISPLAY BOTTOM 1730 STA RASLO ;RAINBOW 1740 LDX #1 1750 STX IRR 1760 DEC TEM 1770 LDX #4 1780 BNE N1 1790 ; 1800 REST =* ;RESTORE NEWIRQ 1810 ; ROUTINE 1820 LDA #$E8 ;'INX' OPCODE 1830 STA N3 1840 LDA #5 1850 STA N5+1 1860 INC TEM 1870 LDA TEM+2 1880 BEQ R1 1890 SEC ;MODIFY RASTER 1900 LDA N6+1 ;LINE VALUE 1910 SBC #4 1920 STA N6+1 1930 LDX TEM+1 ;AND STRIPE WIDTH 1940 INX 1950 CPX #$16 1960 BNE CIRQ 1970 INC TEM+2 1980 BEQ CIRQ 1990 R1 LDX TEM+1 2000 CLC 2010 LDA N6+1 2020 ADC #$04 2030 STA N6+1 2040 DEX 2050 BNE CIRQ 2060 DEC TEM+2 2070 ; 2080 CIRQ =* ;CONTINUE IRQ 2090 ; 2100 STX TEM+1 2110 LDA #$30 ;NEXT RASTER LINE 2120 STA RASLO ;INTERRUPT 2130 LDA #1 2140 STA IRR 2150 JMP (IRQOLD) 2160 DISABLE =* 2170 SEI 2180 LDA IRQOLD 2190 LDY IRQOLD+1 2200 JMP DI