               00010 *KERNEL EXAMPLE - MULTICOLORED PLAYER -MOVES WITH JOYSTICK
               00020 *CODED BY DAN PINAL
6000:          00040 PDATA    EQ $6000
D407:          00050 PMBASE    EQ $D407
0230:          00060 SDLSTL    EQ $230
D000:          00070 HPOSP0    EQ $D000
02C0:          00080 PCOLR0    EQ $2C0
D012:          00090 COLPM0    EQ $D012
D40A:          00100 WSYNC    EQ $D40A
D40B:          00110 VCOUNT    EQ $D40B
D20E:          00120 IRQEN    EQ $D20E
D40E:          00130 NMIEN    EQ $D40E
0200:          00140 VDSLST    EQ $200
0224:          00150 VVBLKD    EQ $224
022F:          00160 SDMCTL    EQ $22F
D400:          00170 DMACTL    EQ $D400
D01D:          00180 GRACTL    EQ $D0ID
E45C:          00190 SETVBV    EQ $E45C
E462:          00200 XITVBV    EQ $E462
6300:          00210 MISSL0    EQ PDATA+$300
6400:          00220 PLAYR0    EQ MISSL0+$100
6500:          00230 PLAYR1    EQ PLAYR0+$100
6600:          00240 PLAYR2    EQ PLAYR1+$100
6700:          00250 PLAYR3    EQ PLAYR2+$100
0278:          00260 STICK0    EQ $278

               00270 *ZERO PAGE EQUATES

00F0:          00280 VTEMP0    EQ $F0
00F1:          00290 VTEMP1    EQ $Fl
00F8:          00300 P0TMP0    EQ $F8
00F9:          00310 P0TMP1    EQ $F9
               00340
               00350
               00360 INIT
4000: A9 F9    00370    LDA MIST

4002: 8D 30 02 00380    STA SDLSTL
4005: A9 40    00390    LDA /DLIST
4007: 8D 31 02 00400    STA SDLSTL+l
400A: A9 98    00410    LDA #KERNEL    SET DISPLAY LIST INTERRUPT
400C: 8D 00 02 00420    STA VDSLST
400F: A9 40    00430    LDA /KERNEL
4011: 8D 01 02 00440    STA VDSLST+l
4014: A0 56    00450    LDY #VBLANK    SET VERTICAL BLANK
4016: A2 40    00460    LDX /VBLANK
4018: A9 07    00470    LDA #$07    ;DEFFERRED
401A: 20 5C E4 00480    JSR SETVBV

401D: A9 60    00490    LDA /PDATA ; INIT PM GRAPHICS
401F: 8D 07 D4 00500    STA PMBASE
4022: A9 3E    00510    LDA WE
4024: 8D 2F 02 00520    STA SDMCTL
4027: A9 03    00530    LDA #03
4029: 8D 1D D0 00540    STA GRACTL

402C: A9 63    00550    LDA /MISSL0 CLEAR PLAYER/MISSILE RAM
402E: 85 F9    00560    STA P0TMP1
4030: A9 00    00570    LDA #00

4032: 85 F8    00580    STA P0TMP0
4034: A8       00590    TAY
4035: A2 05    00600    LDX 005    5 PAGES
               00610 CLEARP
4037: 91 F8    00620    STA (P0TMP0),Y
4039: C8       00630    INY
403A: D0 FB    00640    BNE CLEARP

403C: E6 F9    00650    INC P0TMPI
403E: CA       00660    DEX
403F: D0 F6    00670    BNE CLEARP
4041: A9 0E    00680    LDA #$0E    WHITE

4043: 8D C0 02 00690    STA PCOLR0
4046: A9 80    00700    LDA #$80

4048: 8D FD 40 00710    STA PLAYRH
404B: 8D FE 40 00720    STA PLAYRV
               00730 ; ENABLE    INTERRUPTS
404E: A9 C0    00740    LDA #$C0
4050: 8D 0E D4 00750    STA NMIEN
               00760 HERE
4053: 4C 53 40 00770    JMP HERE    ;ENDLESS LOOP OUTSIDE VBLANK
               00780 *VBLANK ROUTINE
               00790 VBLANK

4056: A9 C0    00800    LDA #$C0

4058: 8D 0E D4 00810        STA NMIEN    REENABLE DLI (FOR REV. A O.S.)
405B: AE 78 02 00820        LDX STICK0    JOYSTICK0 VALUE
405E: 18       00830    CLC
405F: AD FD 40 00840        LDA PLAYRH    LOAD OLD HORIZ. PLAYER POS
4062: 7D D5 40 00850        ADC HOFF,X    ADD HORIZ DIRECTION VECTOR

4065: C9 30    00860        CMP #$30
               00870    CHECK IF PAST RIGHT OR LEFT EDGE

4067: 90 0A    00880    BCC NEWT
4069: C9 D0    00890    CMP #$D0
406B: B0 06    00900    BCS NEWV
406D: 8D FD 40 00910    STA PLAYRH;STORE NEW HORIZ PLAYER POSITION

4070: 8D 00 D0 00920    STA HPOSP0    ;TELL ANTIC
               00930 NEWV
4073: 18       00940    CLC
4074: AD FE 40 00950    LDA PLAYRV    ;LOAD OLD VERT PLAYER POS
4077: 7D E5 40 00960    ADC VOFF,X    ;ADD VERT DIRECTION VECTOR

               00970 CHECK IF PAST TOP OR BOTTOM
407A: C9 22    00980    CMP #$22
407C: 90 17    00990    BCC XVBLANK
407E: C9 D0    01000    CMP #$D0
4080: B0 13    01010    BCS XVBLANK

4082: 8D FE 40 01020    STA PLAYRV;STORE NEW VERT POSITION

4085: 85 F0    01030    STA VTEMPO ;LO BYTE OF P/M AREA
4087: A9 64    01040    LDA /PLAYR0

4089: 85 F1    01050    STA VTEMP1    ;HI BYTE OF P/M AREA
408B: A0 13    01060    LDY #$13    ;20 ELEMENTS
               01070 PDRAW

408D: B9 C2 40 01080    LDA IMAGE,Y ;GET BYTE FROM SHAPE TABLE

4090: 91 F0    01090    STA (VTEMP0),Y ;STORE BYTE IN P/M AREA

4092: 88       01100    DEY    ;NEXT BYTE
4093: 10 F8    01110    BPL PDRAW    ;DONE?
               01120 XVBLANK
4095: 4C 62 E4 01130    JMP XITVBV
               01140 *
               01150 KERNEL

4098: 48       01160    PHA    SAVE REGISTERS
4099: 8A       01170    TXA
409A: 48       01180    PHA
409B: 98       01190    TYA
409C: 48       01200    PHA

409D: A2 03    01210    LDX #$03    USE X FOR INDEX To COLOR TABLE

409F: AD FE 40 01220    LDA PLAYRV    GET VERT. POS.
40A2: 4A       01230    LSR    VCOUNT COUNTS EVERY OTHER LINE
40A3: A8       01240    TAY
40A4: C8       01250    INY
               01260 UNTIL
40A5: 8D 0A D4 01270    STA WSYNC    ;WAIT TILL OFF SCREEN
40A8: CC 0B D4 01280    CPY VCOUNT    ;ARE WE AT LINE TO BFGIN CHANGING
40AB: B0 F8    01290    BCS UNTIL    ;NO HAVEN'T REACHED IT-BRANCH
               01300 CHANGE
40AD: BD F5 40 01310    LDA COLOR,X    GET COLOR

40B0: 8D 12 D0 01320            STA COLPM0    STUFF COLOR
40B3: 8D 0A D4 01330            STA WSYNC    WAIT 3 LINES # DO NEXT CHANGE
40B6: 8D 0A D4 01340        STA WSYNC
40B9: 8D 0A D4 01350            STA WSYNC
40BC: CA       01360    DEX
40BD: 10 EE    01370    BPL CHANGE    GO BACK TILL ALL CHANGES MADE
40BF: 4C 62 E4 01380        JMP XITVBV    LET O.S. RESTORE REGISTERS
               01390
40C2: 00 00 10
40C5: 10 10 10

40C8: 38 38    01400 IMAGE    HS 0000101010103838
40CA: 38 38 7C
40CD: 7C 7C FE

40D0: FE 54    01410    HS 38387C7C7CFEFE54
40D2: 54 00 00 01420    HS 540000
40D5: 00 00 00
40D8: 00 00 02
40DB: 02 02    01430 HOFF    HS 0000000000020202

40DD: 00 FE FE
40E0: FE 00 00
40E3: 00 00    01440    HS 00FEFEFE00000000
40E5: 00 00 00
40E8: 00 00 02

40EB: FE 00    01450 VOFF    HS 000000000002FE00
40ED: 00 02 FE
40F0: 00 00 02

40F3: FE 00    01460    HS 0002FE000002FE00

40F5: 44 76 B8
40F8: 3A       01470 COLOR    HS 4476B83A
40F9: 80 41    01480 DUST    HS 8041
40FB: F9 40    01490    DA DLIST
40FD: 00       01500 PLAYRH    HS 00
40FE: 00       01510 PLAYRV    HS 00
