                1  *KERNEL EXAMPLE - BY DAN PINAL
                2  *    KERNEL CHANGES COLOR MIDSCREEN DURING EACH SCAN LINE
                3  PDATA	EQU	$6000
                4  PMBASE	EQU	$D407
                5  SDLSTL	EQU	$230
                6  HPOSP0	EQU	$D000
                7  PCOLR0	EQU	$2C0
                8  COLPMO	EQU	$D012
                9  COLBAK	EQU	$D01A
               10  WSYNC	EQU	$D40A
               11  VCOUNT	EQU	$D40B
               12  IRQEN	EQU	$D20E
               13  NMIEN	EQU	$D40E
               14  VDSLST	EQU	$200
               15  VVBLKD	EQU	$224
               16  SDMCTL	EQU	$22F
               17  DMACTL	EQU	$D400
               18  GRACTL	EQU	$D01D
               19  SETVBV	EQU	$E45C
               20  XITVBV	EQU	$E462
               21  MISSL0	EQU	PDATA+$300
               22  PLAYR0	EQU	MISSL0+$100
               23  PLAYR1	EQU	PLAYR0+$100
               24  PLAYR2	EQU	PLAYR1+$100
               25  PLAYR3	EQU	PLAYR2+$100
               26  STICK0	EQU	$278
               27  *ZERO PAGE EQUATES
               28  VTEMP0	EQU	$F0
               29  VTEMP1	EQU	$F1
               30  POTMP0	EQU	$F8
               31  POTMP1	EQU	$F9
               32  *
               33  	ORG	$4000
               34  *
               35  INIT
4000 A9FB      36  	LDA	#>DLIST
4002 8D3002    37  	STA	SDLSTL
4005 A940      38  	LDA	#<DLIST
4007 8D3102    39  	STA	SDLSTL+1
400A A998      40  	LDA	#>KERNEL	; SET DISPLAY LIST INTERRUPT
400C 8D0002    41  	STA	VDSLST
400F A940      42  	LDA	#<KERNEL
4011 8D0102    43  	STA	VDSLST+1
4014 A056      44  	LDY	#>VBLANK	; SET VERTICAL BLANK
4016 A240      45  	LDX	#<VBLANK
4018 A907      46  	LDA	#$07		; DEFFERRED
401A 205CE4    47  	JSR	SETVBV
401D A960      48  	LDA	#<PDATA		; INIT PM GRAPHICS
401F 8D07D4    49  	STA	PMBASE
4022 A93E      50  	LDA	#$3E
4024 8D2F02    51  	STA	SDMCTL
4027 A903      52  	LDA	#03
4029 8D1DD0    53  	STA	GRACTL
402C A963      54  	LDA	#<MISSL0	; CLEAR PLAYER/MISSILE RAM
402E 85F9      55  	STA	POTMP1
4030 A900      56  	LDA	#00
4032 85F8      57  	STA	POTMP0
4034 A8        58  	TAY
4035 A205      59  	LDX	#$05		; 5 PAGES
               60  CLEARP
4037 91F8      61  	STA	(POTMP0),Y
4039 C8        62  	INY
403A D0FB      63  	BNE	CLEARP
403C E6F9      64  	INC	POTMP1
403E CA        65  	DEX
403F D0F6      66  	BNE	CLEARP
4041 A90E      67  	LDA	#$0E		; WHITE
4043 8DC002    68  	STA	PCOLR0
4046 A980      69  	LDA	#$80
4048 8DFF40    70  	STA	PLAYRH
404B 8D0041    71  	STA	PLAYRV
               72  * ENABLE INTERRUPTS
404E A9C0      73  	LDA	#$C0
4050 8D0ED4    74  	STA	NMIEN
               75  HERE
4053 4C5340    76  	JMP	HERE
               77  *
               78  VBLANK
4056 A9C0      79  	LDA	#$C0
4058 8D0ED4    80  	STA	NMIEN		; 'REENABLE DLI (FOR REV. A O.S.)
405B AE7802    81  	LDX	STICK0
405E 18        82  	CLC
405F ADFF40    83  	LDA	PLAYRH
4062 7DD740    84  	ADC	HOFF,X
4065 C930      85  	CMP	#$30
               86  * CHECK IF PAST RIGHT OR LEFT EDGE
4067 900A      87  	BCC	NEWV
4069 C9D0      88  	CMP	#$D0
406B B006      89  	BCS	NEWV
406D 8DFF40    90  	STA	PLAYRH
4070 8D00D0    91  	STA	HPOSP0 ;TELL ANTIC
               92  NEWV
4073 18        93  	CLC
4074 AD0041    94  	LDA	PLAYRV
4077 7DE740    95  	ADC	VOFF,X
               96  * CHECK IF PAST TOP OR BOTTOM
407A C922      97  	CMP	#$22
407C 9017      98  	BCC	XVBLANK
407E C9D0      99  	CMP	#$D0
4080 B013     100  	BCS	XVBLANK
4082 8D0041   101  	STA	PLAYRV
4085 85F0     102  	STA	VTEMP0
4087 A964     103  	LDA	#<PLAYR0
4089 85F1     104  	STA	VTEMP1
408B A013     105  	LDY	#$13		; 20 ELEMENTS
              106  PDRAW
408D B9C440   107  	LDA	IMAGE,Y
4090 91F0     108  	STA	(VTEMP0),Y
4092 88       109  	DEY
4093 10F8     110  	BPL	PDRAW
              111  XVBLANK
4095 4C62E4   112  	JMP	XITVBV
              113  ;
              114  KERNEL
4098 48       115  	PHA			; SAVE REGISTERS
4099 8A       116  	TXA
409A 48       117  	PHA
409B 98       118  	TYA
409C 48       119  	PHA
409D A070     120  	LDY	#$70
              121  DALOOP
409F 8D0AD4   122  	STA	WSYNC		; WAIT TILL BEAM OFFSCREEN
40A2 A900     123  	LDA	#$00		; BLACK
40A4 A206     124  	LDX	#$06		; DELAY TIMER
              125  UNTIL
40A6 CC0BD4   126  	CPY	VCOUNT		; STILL ON SCREEN?
40A9 900E     127  	BCC	XKERNEL		; LEAVE IF TOO LOW
40AB 8D1AD0   128  	STA	COLBAK		; TURN BACKGROND TO BLACK
              129  HANGON
40AE CA       130  	DEX			; COUNTDOWN FROM 6 TO 0
40AF D0FD     131  	BNE	HANGON		; BEAM MID-LINE YET
40B1 A244     132  	LDX	#$44		; PINK
40B3 8E1AD0   133  	STX	COLBAK		; TURN SCREEN PINK
40B6 4C9F40   134  	JMP	DALOOP		; GO GET READY FOR NEXT LINE
              135  XKERNEL
40B9 A900     136  	LDA	#$00		; TURN SCREEN BLACK
40BB 8D1AD0   137  	STA	COLBAK
40BE 68       138  	PLA			; RESTORE THE REGISTERS & LEAVE
40BF A8       139  	TAY
40C0 68       140  	PLA
40C1 AA       141  	TAX
40C2 68       142  	PLA
40C3 40       143  	RTI
40C4 000010   144  IMAGE	DB	$00,$00,$10,$10,$10,$10,$38,$38
40CC 38387C   145  	DB	$38,$38,$7C,$7C,$7C,$FE,$FE,$54
40D4 540000   146  	DB	$54,$00,$00
40D7 000000   147  HOFF	DB	$00,$00,$00,$00,$00,$02,$02,$02
40DF 00FEFE   148  	DB	$00,$FE,$FE,$FE,$00,$00,$00,$00
40E7 000000   149  VOFF	DB	$00,$00,$00,$00,$00,$02,$FE,$00
40EF 0002FE   150  	DB	$00,$02,$FE,$00,$00,$02,$FE,$00
40F7 4476B8   151  COLOR	DB	$44,$76,$B8,$3A
40FB 8041     152  DLIST	DB	$80,$41
              153  *	DA	DLIST
40FD FB40     154  	DW	DLIST
40FF 00       155  PLAYRH	DS	1
4100 00       156  PLAYRV	DS	1
