00010 *KERNEL EXAMPLE - BY DAN PINAL 00020 * KERNEL CHANGES COLOR MIDSCREEN DURING EACH SCAN LINE 6000: 00040 PDATA EQ $6000 D407: 00050 PMBASE EQ $D407 0230: 00060 SDLSTL EQ $230 D000: 00070 HPOSPO EQ $D000 02C0: 00080 PCOLRO EQ $2CO D012: 00090 COLPMO EQ $D012 D01A: 00100 COLBAK EQ $D0IA D40A: 00110 WSYNC EQ $D40A D40B: 00120 VCOUNT EQ $D40B D20E: 00130 IRQEN EQ $D20E D40E: 00140 NMIEN EQ $D40E 0200: 00150 VDSLST EQ $200 0224: 00160 VVBLKD EQ $224 022F: 00170 SDMCTL EQ $22F D400: 00180 DMACTL EQ $D400 D01D: 00190 GRACTL EQ $D01D E45C: 00200 SETVBV EQ $E45C E462: 00210 XITVBV EQ $E462 6300: 00220 MISSLO EQ PDATA+$300 6400: 00230 PLAYRO EQ MISSLO+$100 6500: 00240 PLAYRI EQ PLAYRO+$100 6600: 00250 PLAYR2 EQ PLAYR1+$100 6700: 00260 PLAYR3 EQ PLAYR2+$100 0278: 00270 STICKO EQ $278 00280 *ZERO PAGE EQUATES 00F0: 00290 VTEMPO EQ $FO 00F1: 00300 VTEMPI EQ $Fl 00F8: 00310 POTMPO EQ $F8 00F9: 00320 POTMPI EQ $F9 00350 * 00360 * 00370 INIT 4000: A9 FB 00380 LDA MIST 4002: 8D 30 02 00390 STA SDLSTL 4005: A9 40 00400 LDA /DLIST 4007: 8D 31 02 00410 STA SDLSTL+l 400A: A9 98 00420 LDA #KERNEL SET DISPLAY LIST INTERRUPT 400C: 8D 00 02 00430 STA VDSLST 400F: A9 40 00440 LDA /KERNEL 4011: 8D 01 02 00450 STA VDSLST+l 4014: A0 56 00460 LDY #VBLANK SET VERTICAL BLANK 4016: A2 40 00470 LDX /VBLANK 4018: A9 07 00480 LDA #$07 ;DEFFERRED 401A: 20 5C E4 00490 JSR SETVBV 401D: A9 60 00500 LDA /PDATA ; INIT PM GRAPHICS 401F: 8D 07 D4 00510 STA PMBASE 4022: A9 3E 00520 LDA #$3E 4024: 8D 2F 02 00530 STA SDMCTL 4027: A9 03 00540 LDA #03 4029: 8D 1D D0 00550 STA GRACTL 402C: A9 63 00560 LDA /MISSLO CLEAR PLAYER/MISSILE RAM 402E: 85 F9 00570 STA POTMPI 4030: A9 00 00580 LDA #00 4032: 85 F8 00590 STA POTMPO 4034: A8 00600 TAY 4035: A2 05 00610 LDX #$05 5 PAGES 00620 CLEARP 4037: 91 F8 00630 STA (POTMPO),Y 4039: C8 00640 INY 403A: D0 FB 00650 BNE CLEARP 403C: E6 F9 00660 INC POTMPI 403E: CA 00670 DEX 403F: D0 F6 00680 BNE CLEARP 4041: A9 0E 00690 LDA #$OE WHITE 4043: 8D C0 02 00700 STA PCOLRO 4046: A9 80 00710 LDA #$80 4048: 8D FF 40 00720 STA PLAYRH 404B: 8D 00 41 00730 STA PLAYRV 00740 ENABLE INTERRUPTS 404E: A9 C0 00750 LDA #$CO 4050: 8D 0E D4 00760 STA NMIEN 00770 HERE 4053: 4C 53 40 00780 JMP HERE 00790 * 00800 VBLANK 4056: A9 C0 00810 LDA #$CO 4058: 8D 0E D4 00820 STA NMIEN ;'REENABLE DLI (FOR REV. A O.S.) 405B: AE 78 02 00830 LDX STICKO 405E: 18 00840 CLC 405F: AD FF 40 00850 LDA PLAYRH 4062: 7D D7 40 00860 ADC HOFF,X 4065: C9 30 00870 CMP #$30 00880 CHECK IF PAST RIGHT OR LEFF EDGE 4067: 90 0A 00890 BCC NEWV 4069: C9 D0 00900 CMP #$DO 406B: B0 06 00910 BCS NEWV 406D: 8D FF 40 00920 STA PLAYRE 4070: 8D 00 D0 00930 STA HPOSPO ; TELL ANTIC 00940 NEWV 4073: 18 00950 CLC 4074: AD 00 41 00960 LDA PLAYRV 4077: 7D E7 40 00970 ADC VOFF,X 00980 CHECK IF PAST TOP OR BOTTOM 407A: C9 22 00990 CMP #$22 407C: 90 17 01000 BCC XVBLANK 407E: C9 D0 01010 CMP #$DO 4080: B0 13 01020 BCS XVBLANK 4082: 8D 00 41 01030 STA PLAYRV 4085: 85 F0 01040 STA VTEMPO 4087: A9 64 01050 LDA /PLAYRO 4089: 85 F1 01060 STA VTEMPI 408B: A0 13 01070 LDY 013 20 ELEMENTS 01080 PDRAW 408D: B9 C4 40 01090 LDA IMAGEJ 4090: 91 F0 01100 STA (VTEMPO),Y 4092: 88 01110 DEY 4093: 10 F8 01120 BPL PDRAW 01130 XVBLANK 4095: 4C 62 E4 01140 JMP XITVBV 01150 ; 01160 KERNEL 4098: 48 01170 PHA SAVE REGISTERS 4099: 8A 01180 TXA 409A: 48 01190 PHA 409B: 98 01200 TYA 409C: 48 01210 PHA 409D: A0 70 01220 LDY #$70 01230 DALOOP 409F: 8D 0A D4 01240 STA WSYNC WAIT TILL BEAM OFFSCREEN 40A2: A9 00 01250 LDA #$00 BLACK 40A4: A2 06 01260 LDX #$06 DELAY TIMER 01270 UNTIL 40A6: CC 0B D4 01280 CPY VCOUNT STILL ON SCREEN? 40A9: 90 0E 01290 BCC XKERNEL LEAVE IF TOO LOW 40AB: 8D 1A D0 01300 STA COLBAK TURN BACKGROND TO BLACK 01310 HANGON 40AE: CA 01320 DEX COUNTDOWN FROM 6 TO 0 40AF: D0 FD 01330 BNE HANGON BEAM MID-LINE YET 40B1: A2 44 01340 LDX #$44 PINK 40B3: 8E 1A D0 01350 STX COLBAK TURN SCREEN PINK 40B6: 4C 9F 40 01360 JMP DALOOP GO GET READY FOR NEXT LINE 01370 XKERNEL 40B9: A9 00 01380 LDA #$00 TURN SCREEN BLACK 40BB: 8D 1A D0 01390 STA COLBAK 40BE: 68 01400 PLA RESTORE THE REGISTERS & LEAVE 40BF: A8 01410 TAY 40C0: 68 01420 PLA 40C1: AA 01430 TAX 40C2: 68 01440 PLA 40C3: 40 01450 RTI 01460 40C4: 00 00 10 40C7: 10 10 10 40CA: 38 38 01470 IMAGE HS 0000101010103838 40CC: 38 38 7C 40CF: 7C 7C FE 40D2: FE 54 01480 HS 38387C7C7CFEFE54 40D4: 54 00 00 01490 HS 540000 40D7: 00 00 00 40DA: 00 00 02 40DD: 02 02 01500 HOFF HS 0000000000020202 40DF: 00 FE FE 40E2: FE 00 00 40E5: 00 00 01510 HS 00FEFEFE00000000 40E7: 00 00 00 40EA: 00 00 02 40ED: FE 00 01520 VOFF HS 000000000002FE00 40EF: 00 02 FE 40F2: 00 00 02 40F5: FE 00 01530 HS 0002FE000002FE00 40F7: 44 76 B8 40FA: 3A 01540 COLOR HS 4476B83A 40FB: 80 41 01550 DLIST HS 8041 40FD: FB 40 01560 DA DLIST 40FF: 00 01570 PLAYRH BS 1 4100: 00 01580 PLAYRV BS 1