Site Map | Contact Info | Home  
  
 Home
 Products
 ROMHACK Toolbox
 Ordering Info
 Code Disassembly
  Bega's Battle
  Cliffhanger
  Thayer's Quest
 My Gameroom
 Links

 

 

Page1

Page2 

Page3 

Page4 

Page5 

Page6

         ORA DOSINI
LCA4F:   ORA DOSINI+
1
         ASL A
         .
BYTE $0F
LCA53:   ASL A
         ORA L0B05
         ASL A
         .
BYTE $03
         ASL A
         .
BYTE $0F
         ASL A
         ORA L0B0A
         ASL A
         .
BYTE $03
         ASL A
         .
BYTE $0F
         ASL A
         ORA POKMSK
         .
BYTE $13
         BPL LCA7D
         BPL LCAB4
         BVC LCA79
         ORA DOSVEC+
1,X
         ORA BOOT
         ORA Sprite2_Prop
         ORA BUFADR+
1
         ORA BUFADR
         ASL A
         .
BYTE $13
LCA79:   ASL A
         ORA Ptr2_HI+
1,X
         .
BYTE $17
LCA7D:   ASL A
         .
BYTE $07
         ASL A
         .
BYTE $13
         ASL A
         ORA DOSVEC,X
         .
BYTE $17
         ASL A
LCA86:   .
BYTE $07
         ASL A
         .
BYTE $13
         ASL A
         ORA POKMSK
         .
BYTE $0F
         BPL LCA9D
         BPL LCACA
         BVC LCAA8
         ORA L0716,Y
         
CLC
         .
BYTE $03
         ORA #$07
         .
BYTE $02,$03
         ORA LEF06,X
         .
BYTE $0B
         ASL VTIMR1,X
         BPL LCAA6
         ORA CMCMD,X
         BPL LCABD
         .
BYTE $3A,$27,$1F
         
AND FPTR2+1
         ORA DiagMessage_LO,X
         ASL CMCMD,X
         
CLC
         .
BYTE $03
LCAB4:   ORA #$07
         .
BYTE $02,$03
         ORA LEF06,X
         .
BYTE $0B
         ASL VTIMR1,X
         BPL LCAC2
         ORA CMCMD,X
         BPL LCAD8
         BMI LCAEE
         .
BYTE $1F
         
AND FPTR2+1
LCACA:   ORA DiagMessage_LO,X
         ASL CMCMD,X
         
CLC
         .
BYTE $03
         ORA #$07
         .
BYTE $02,$03
         ORA LEF06,X
         .
BYTE $0B
LCAD8:   ASL VTIMR1,X
         BPL LCADE
         ORA CMCMD,X
         BPL LCAF3
         
AND ICPTHZ
         .
BYTE $1F
         
AND FPTR2+1
         ORA L0C19
         .
BYTE $07
         ASL A
         .
BYTE $03
         ORA #$07
LCAEE:   PHP
         .
BYTE $03
         
AND LD506
LCAF3:   .
BYTE $0B
         BIT L0810
         BPL LCAFA
         ORA Ptr2_LO,X
         BPL LCB0B
         .
BYTE $3A,$23,$1F
         
AND FPTR2+1
         ORA L0C19
         .
BYTE $07
         ASL A
         .
BYTE $03
         ORA #$07
         PHP
LCB0B:   .
BYTE $03
         
AND LD506
         .
BYTE $0B
         BIT L0810
         BPL LCB16
         ORA Ptr2_LO,X
         BPL LCB28
         BMI LCB3E
         .
BYTE $1F
         
AND FPTR2+1
         ORA L0C19
         .
BYTE $07
         ASL A
         .
BYTE $03
         ORA #$07
         PHP
         .
BYTE $03
LCB28:   
AND LD506
         .
BYTE $0B
         BIT L0810
         BPL LCB32
         ORA Ptr2_LO,X
         BPL LCB45
         
AND FactoryTestNo
         .
BYTE $1F
         
AND FPTR2+1
         ASL WARMST,X
         ORA WARMST,X
LCB3E:   .
BYTE $14
         PHP
         .
BYTE $12
         PHP
         ORA (WARMST),Y
         BPL LCB4E
         .
BYTE $0F
         PHP
         ORA WARMST
         RTI
         SBC (L0000),Y
LCB4E:   ORA L0C04
         PHP
         .
BYTE $0B
         PHP
         .
BYTE $1A
         PHP
         ORA L1808,Y
         PHP
         ASL WARMST,X
         ORA WARMST,X
         
BRK
         RTI
         .
BYTE $D3
         
BRK
         ORA Ptr2_HI,X
         .
BYTE $14
         PHP
         .
BYTE $13
         PHP
         .
BYTE $12
         PHP
         ORA (Sprite2_Prop),Y
         STA (FCHRFLG),Y
         .
BYTE $0C
         PHP
         ORA L0E08
         PHP
         BPL LCB7E
         ORA (WARMST),Y
         .
BYTE $12
         PHP
         .
BYTE $13
         PHP
         ORA WARMST,X
LCB7E:   
BRK
         RTI
         .
BYTE $D3
         
BRK
         ORA Ptr2_HI,X
         ASL WARMST,X
         .
BYTE $17
         PHP
         BMI LCB92
         ORA L0A08,Y
         PHP
         .
BYTE $0C
         PHP
         ORA WARMST
         RTI
         SBC (L0000),Y
         ORA L0E04
         PHP
         .
BYTE $0F
         PHP
         BPL LCBA6
         ORA (WARMST),Y
         STA (FCHRFLG),Y
         .
BYTE $14
         PHP
         .
BYTE $13
         PHP
LCBA6:   .
BYTE $12
         PHP
         ORA (Ptr2_HI),Y
         BPL LCBB4
         .
BYTE $0F
         PHP
         BPL LCBB8
         ORA (Ptr2_HI),Y
         .
BYTE $12
         PHP
LCBB4:   .
BYTE $13
         PHP
         .
BYTE $12
         PHP
LCBB8:   ORA (WARMST),Y
         BPL LCBC4
         .
BYTE $0F
         PHP
         BPL LCBC8
         ORA (WARMST),Y
         .
BYTE $12
         PHP
LCBC4:   .
BYTE $13
         PHP
         .
BYTE $12
         PHP
LCBC8:   ORA (WARMST),Y
         BPL LCBD4
         .
BYTE $0F
         PHP
         BPL LCBD8
         ORA (WARMST),Y
         .
BYTE $12
         PHP
LCBD4:   .
BYTE $13
         PHP
         .
BYTE $12
         PHP
LCBD8:   ORA (WARMST),Y
         BPL LCBE4
         .
BYTE $0F
         PHP
         BPL LCBE8
         ORA (FCHRFLG),Y
         .
BYTE $1F
         
ROL A
LCBE4:   .
BYTE $0C
         PHP
         ASL A
         PHP
LCBE8:   ORA #$08
         
CLC
         PHP
         ASL WARMST,X
         ORA WARMST,X
         .
BYTE $14
         PHP
         .
BYTE $12
         PHP
         ORA (WARMST),Y
         BPL LCC00
         ASL L1F08
         
ROL A
         STA FCHRFLG
         
AND L3A08,Y
         PHP
         .
BYTE $3F
         ASL SOUNDR
         ASL CRITIC
         ASL BegaPic
         ASL BegaPic+
2
         .
BYTE $02
         EOR #$02
         EOR L5002
         .
BYTE $04
         
AND (Ptr2_HI),Y
         .
BYTE $32
         ASL BUFRHI
         ASL BFENHI
         ASL Buff1
         ASL Buff2
         .
BYTE $02,$3A
         PHP
         .
BYTE $3F
         ASL SOUNDR
         ASL CRITIC
         ASL BegaPic
         ASL BegaPic+
2
         .
BYTE $02
         EOR #$02
         EOR L5002
         ASL CHKSUM
         .
BYTE $04,$32
         ASL BUFRHI
         ASL BFENHI
         .
BYTE $04
         SEC
         ASL Buff2
         .
BYTE $02,$3A
         PHP
         .
BYTE $3F
         ASL SOUNDR
         ASL CRITIC
         ASL BegaPic
         ASL BegaPic+
2
         .
BYTE $02
         EOR #$02
         EOR L5002
         ASL CHKSUM
         .
BYTE $02,$32
         ASL BUFRHI
         ASL Buff1
         ASL Buff2
         BEQ LCC89
         .
BYTE $04,$2F,$04
         
AND L2C04
         .
BYTE $04
         
AND L2504
         .
BYTE $04
         BIT Ptr2_HI
         .
BYTE $23,$04
         
AND Ptr2_HI
         
ROL Ptr2_HI
         .
BYTE $27,$04
         
AND Ptr2_HI
         BIT Ptr2_HI
         .
BYTE $23,$04
         
AND Ptr2_HI
         
ROL Ptr2_HI
         .
BYTE $27,$04
         
AND Ptr2_HI
         BIT Ptr2_HI
         .
BYTE $23,$04
         
AND Ptr2_HI
         
ROL Ptr2_HI
         .
BYTE $27,$04
         
AND Ptr2_HI
         BIT Ptr2_HI
         .
BYTE $23,$04
         
AND FCHRFLG
LCC8E:   RTI
         
ROL A
         .
BYTE $23,$02,$22,$02
         
AND (Ptr1_HI,X)
         JSR L1F02
         .
BYTE $04
         ASL L1D02,X
         .
BYTE $02,$1C
         PHP
         .
BYTE $1B,$02,$1A,$02
         ORA L3002,Y
         .
BYTE $02,$2F,$02
         
AND L2C02
         .
BYTE $02,$2B,$02
         
ROL A
         ORA (ICBLHZ,X)
         ORA (ICBLLZ,X)
         ORA (ICPTHZ,X)
         ORA (ICPTLZ,X)
         ORA (ICBAHZ,X)
         .
BYTE $02
         BIT Ptr2_HI
         BIT Ptr2_HI
         .
BYTE $23,$02,$22,$02
         
AND (Ptr1_HI,X)
         JSR L1F02
         .
BYTE $02
         ASL L1D02,X
         .
BYTE $02,$1C
         BEQ LCD13
         
ROL A
         .
BYTE $27,$02
         PLP
         .
BYTE $02
         
AND #$02
         
ROL A
         .
BYTE $02,$2B,$04
         BIT L2D02
         .
BYTE $02
         
ROL L2F08
         .
BYTE $02
         BMI LCCE8
         ORA L1A02,Y
         .
BYTE $02,$1B,$02
         ORA L1E02,X
         .
BYTE $02,$1F,$02
         JSR L2101
         ORA (ICCOMZ,X)
         ORA (FactoryTestNo,X)
         ORA (DiagTestNo,X)
         ORA (ICBAHZ,X)
         .
BYTE $02
         
ROL Ptr2_HI
         
ROL Ptr2_HI
         .
BYTE $27,$02
         PLP
         .
BYTE $02
         
AND #$02
         
ROL A
         .
BYTE $02,$2B,$02
         BIT L2D02
         .
BYTE $02
         
ROL LCEF0


;----------------------------------------------------
;              SEARCH Frame Pointers
;----------------------------------------------------
LCD12:   .WORD $CDCE,$CDD3,$CDD8,$CDDD,$CDE2,$CDE7
         .
WORD $CDEC,$CDF1,$CDF6,$CDFB,$CE00,$CE05
         .
WORD $CE0A,$CE0F,$CE14,$CE19,$CE1E,$CE23
         .
WORD $CE28,$CE2D,$CE32,$CE37,$CE3C,$CE41
         .
WORD $CE46,$CE4B,$CE50,$CE55,$CE5A,$CE5F
         .
WORD $CE64,$CE69,$CE6E,$CE73,$CE78,$CE7D
         .
WORD $CE82,$CE87,$CE8C,$CE91,$CE96,$CE9B
         .
WORD $CEA0,$CEA5,$CEAA,$CEAF,$CEB4


;----------------------------------------------------
;             REPEAT Frame Pointers
;----------------------------------------------------
LCD70:   .WORD $CEB9,$CEBE,$CEC3,$CEC8,$CECD,$CED2
         .
WORD $CED7,$CEDC,$CEE1,$CEE6,$CEEB,$CEF0
         .
WORD $CEF5,$CEFA,$CEFF,$CF04,$CF09,$CF0E
         .
WORD $CF13,$CF18,$CF1D,$CF22,$CF27,$CF2C
         .
WORD $CF31,$CF36,$CF3B,$CF40,$CF45,$CF4A
         .
WORD $CF4F,$CF54,$CF59,$CF5E,$CF63,$CF68
         .
WORD $CF6D,$CF72,$CF77,$CF7C,$CF81,$CF86
         .
WORD $CF8B,$CF90,$CF95,$CF9A,$CF9F

;----------------------------------------------------
;              SEARCH Frame Number Data
;----------------------------------------------------
LCDCE:   .BYTE $30,$35,$33,$36,$35    ; Frame = 05365
         .BYTE $30,$35,$31,$33,$30    ; Frame = 05130
         .BYTE $31,$32,$39,$33,$35    ; Frame = 12935
         .BYTE $31,$31,$32,$39,$38    ; Frame = 11298
         .BYTE $32,$30,$35,$39,$34    ; Frame = 20594
         .BYTE $32,$33,$30,$33,$34    ; Frame = 23034
         .BYTE $32,$35,$39,$35,$37    ; Frame = 25957
         .BYTE $32,$39,$30,$35,$36    ; Frame = 29056
         .BYTE $33,$32,$30,$35,$36    ; Frame = 32056
         .BYTE $33,$33,$33,$33,$32    ; Frame = 33332
         .BYTE $33,$39,$34,$32,$30    ; Frame = 39420
         .BYTE $34,$31,$39,$31,$37    ; Frame = 41917
         .BYTE $32,$32,$32,$31,$34    ; Frame = 22214
         .BYTE $31,$38,$33,$38,$30    ; Frame = 18380
         .BYTE $32,$32,$33,$37,$32    ; Frame = 22372
         .BYTE $32,$36,$32,$32,$37    ; Frame = 26227
         .BYTE $33,$39,$39,$30,$37    ; Frame = 39907
         .BYTE $34,$32,$31,$33,$34    ; Frame = 42134
         .BYTE $31,$35,$31,$38,$35    ; Frame = 15185
         .BYTE $34,$32,$34,$35,$34    ; Frame = 42454
         .BYTE $34,$33,$35,$34,$32    ; Frame = 43542
         .BYTE $30,$36,$37,$39,$38    ; Frame = 06798   $xx, 21:
         .BYTE $31,$33,$33,$38,$35    ; Frame = 13385
         .BYTE $31,$36,$33,$35,$38    ; Frame = 16358
         .BYTE $30,$38,$35,$39,$38    ; Frame = 08598
         .BYTE $32,$31,$33,$31,$34    ; Frame = 21314
         .BYTE $32,$33,$39,$33,$36    ; Frame = 23936
         .BYTE $32,$37,$32,$35,$36    ; Frame = 27256
         .BYTE $32,$39,$33,$35,$36    ; Frame = 29356
         .BYTE $33,$32,$33,$31,$36    ; Frame = 32316
         .BYTE $33,$35,$34,$34,$33    ; Frame = 35443
         .BYTE $33,$38,$33,$38,$30    ; Frame = 38380
         .BYTE $34,$31,$30,$31,$37    ; Frame = 41017
         .BYTE $30,$35,$38,$39,$38    ; Frame = 05898
         .BYTE $31,$30,$33,$39,$38    ; Frame = 10398
         .BYTE $31,$37,$32,$35,$38    ; Frame = 17258
         .BYTE $31,$39,$36,$39,$34    ; Frame = 19694
         .BYTE $32,$33,$39,$33,$36    ; Frame = 23936
         .BYTE $32,$34,$38,$33,$36    ; Frame = 24836
         .BYTE $33,$30,$32,$35,$36    ; Frame = 30256
         .BYTE $33,$34,$35,$34,$33    ; Frame = 34543
         .BYTE $34,$31,$30,$31,$37    ; Frame = 41017
         .BYTE $30,$39,$34,$39,$38    ; Frame = 09498
         .BYTE $30,$37,$36,$39,$38    ; Frame = 07698
         .BYTE $31,$38,$37,$39,$34    ; Frame = 18794
         .BYTE $34,$33,$39,$30,$31    ; Frame = 43901   $2D,45:  Attract Mode
         .BYTE $34,$36,$33,$34,$34    ; Frame = 46344   $2E,46:  High Score

;----------------------------------------------------
;      REPEAT Frame Data (PLAY until frame reached)
;----------------------------------------------------
LCEB9:   .BYTE $30,$35,$35,$36,$37    ; Repeat = 05567
         .BYTE $30,$35,$33,$36,$33    ; Repeat = 05363
         .BYTE $31,$33,$31,$34,$34    ; Repeat = 13144
         .BYTE $31,$31,$35,$30,$39    ; Repeat = 11509
         .BYTE $32,$30,$39,$33,$38    ; Repeat = 20938
         .BYTE $32,$33,$31,$39,$38    ; Repeat = 23198
         .BYTE $32,$36,$32,$32,$36    ; Repeat = 26226
         .BYTE $32,$39,$32,$30,$35    ; Repeat = 29205
         .BYTE $33,$32,$33,$31,$34    ; Repeat = 32314
         .BYTE $33,$33,$35,$34,$31    ; Repeat = 33541
         .BYTE $33,$39,$37,$33,$35    ; Repeat = 39735
         .BYTE $34,$32,$31,$33,$33    ; Repeat = 42133
         .BYTE $32,$32,$33,$37,$31    ; Repeat = 22371
         .BYTE $31,$38,$36,$35,$36    ; Repeat = 18656
         .BYTE $32,$32,$36,$37,$31    ; Repeat = 22671
         .BYTE $32,$36,$37,$38,$38    ; Repeat = 26788
         .BYTE $34,$30,$31,$31,$36    ; Repeat = 40116
         .BYTE $34,$32,$33,$30,$30    ; Repeat = 42300
         .BYTE $31,$35,$34,$33,$37    ; Repeat = 15437
         .BYTE $34,$32,$39,$32,$31    ; Repeat = 42921
         .BYTE $34,$33,$37,$34,$39    ; Repeat = 43749
         .BYTE $30,$37,$36,$39,$37    ; Repeat = 07697
         .BYTE $31,$34,$31,$33,$35    ; Repeat = 14135
         .BYTE $31,$37,$31,$30,$37    ; Repeat = 17107
         .BYTE $30,$39,$33,$34,$37    ; Repeat = 09347
         .BYTE $32,$32,$30,$36,$33    ; Repeat = 22063
         .BYTE $32,$34,$36,$38,$35    ; Repeat = 24685
         .BYTE $32,$38,$30,$30,$35    ; Repeat = 28005
         .BYTE $33,$30,$31,$30,$35    ; Repeat = 30105
         .BYTE $33,$33,$30,$36,$35    ; Repeat = 33065
         .BYTE $33,$36,$31,$39,$32    ; Repeat = 36192
         .BYTE $33,$39,$31,$32,$39    ; Repeat = 39129
         .BYTE $34,$31,$37,$36,$36    ; Repeat = 41766
         .BYTE $30,$36,$36,$34,$37    ; Repeat = 06647
         .BYTE $31,$31,$31,$34,$37    ; Repeat = 11147
         .BYTE $31,$38,$30,$30,$37    ; Repeat = 18007
         .BYTE $32,$30,$34,$34,$33    ; Repeat = 20443
         .BYTE $32,$34,$36,$38,$35    ; Repeat = 24685
         .BYTE $32,$35,$35,$38,$35    ; Repeat = 25585
         .BYTE $33,$31,$30,$30,$35    ; Repeat = 31005
         .BYTE $33,$35,$32,$39,$32    ; Repeat = 35292
         .BYTE $34,$31,$37,$36,$36    ; Repeat = 41766
         .BYTE $31,$30,$32,$34,$37    ; Repeat = 10247
         .BYTE $30,$38,$34,$34,$37    ; Repeat = 08447
         .BYTE $31,$39,$35,$34,$33    ; Repeat = 19543
         .BYTE $34,$36,$33,$34,$33    ; Repeat = 46343
         .BYTE $34,$36,$37,$33,$35    ; Repeat = 46735


;----------------------------------------------------
;                    unused ROM
;----------------------------------------------------
LCFA4:   .BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF



;----------------------------------------------------
;                Interrupt Routines
;----------------------------------------------------
LE000::  JMP LE068              ; NMI_VECTOR 
LE003::  JMP LE0F8              ; RESET_VECTOR
LE006::  JMP LE009              ; IRQ_VECTOR



;----------------------------------------------------
;                   IRQ_VECTOR
;----------------------------------------------------
;             Check for Diagnostic Mode
;----------------------------------------------------
LE009:   PHA                    ; Save A Register
         TXA                    ; Move X
         PHA                    ; Save X Register
         TYA                    ; Move Y
         PHA                    ; Save Y Register
         LDA L1002              ; Get DIP Bank 2
         AND #$80               ; Check sw8, diagnostic mode
         BEQ LE01D              ; sw8=ON, go Enter Diagnostic Mode
         PLA                    ; Restore Y Register
         TAY                    ; Move Y
         PLA                    ; Restore X Register
         TAX                    ; Move X
         PLA                    ; Restore A Register
         JMP L4006              ; Jump back to main loop
;----------------------------------------------------
;                Check Diagnostic Mode
;----------------------------------------------------
LE01D:   LDA ICAX1Z             ;
         BNE LE02E              ; Yes, do diagnostics
         SEI                    ; Enable Interrupts
         LDA L1006              ; reset NMI
         LDA L1007              ; reset NMI
         PLA                    ; Restore Y Register
         TAY                    ; Move Y
         PLA                    ; Restore X Register
         TAX                    ; Move X
         PLA                    ; Restore A Register
         RTI                    ; Return from Interrupt
;----------------------------------------------------
;              Enter Diagnostic Mode
;----------------------------------------------------
LE02E:   LDA ICAX1Z             ; Get test number
         CMP #$01               ; Are we at Test #1?
         BNE LE037              ; No, so skip ahead
         JMP LE055              ; Perform Diagnostic Test #1

LE037:   
CMP #$02               ; Are we at Test #2?
         BNE LE044              ; No, so skip ahead
         PLA                    ;
         PLA                    ;
         PLA                    ;
         PLA                    ;
         PLA                    ;
         PLA                    ;
         JMP LEBBF              ;
LE044:   CMP #$03               ;
         BNE LE04B              ;
         JMP LF323              ; Perform Diagnostic Test #3
LE04B:   CMP #$04
         BNE LE052
         
JMP LF264
LE052:   
JMP LE055
;----------------------------------------------------
;                Diagnostic Mode
;----------------------------------------------------
LE055:   PLA
         PLA
         PLA
         PLA
         PLA
         PLA
         SEI
LE05C:   LDA L1006
         BPL LE05C
         JSR LE99F             
; Send CLEAR_ALL if not ACKNOWLEDGED
         INX
         
JMP LE96A




;----------------------------------------------------
;             NMI_VECTOR  (every TBD ms)
;----------------------------------------------------
;               Diagnostic Check
;----------------------------------------------------
LE068:   PHA                    ; Save A Register
         TXA                    ; Move X
         PHA                    ; Save X Register
         TYA                    ; Move Y
         PHA                    ; Save Y Register
         LDA L1002              ; Get DIP Bank 2
         AND #$80               ; Check sw8, diagnostic mode
         BEQ LE07C              ; sw8=ON, continue Diagnostic Mode
         PLA                    ; Restore Y Register
         TAY                    ; Move Y
         PLA                    ; Restore X Register
         TAX                    ; Move X
         PLA                    ; Restore A Register
         JMP L4000              ; Jump to Check for Coins
;----------------------------------------------------
;                 Diagnostic Mode
;----------------------------------------------------
LE07C:   SEI                    ; Enable Interrupts
         LDA #$00               ; A = No Sound
         STA L1004              ; Write to Sound Chip
         JSR LE3FE              ; Wait for Verticle Blanking
         LDA L1001              ; Get switch inputs
         AND #$C0               ; Check Coin Slots
         BEQ LE0D7              ; Yes coins so skip diagnostics
         LDA #$00               ;
         STA DSTAT              ;
         LDA L1000              ; Get switch inputs
         EOR #$FF               ; Toggle all bits
         AND #$10               ; Check S3 switch
         BNE LE0A8              ; Pressed so don't advance test
;----------------------------------------------------
;           Cycle to next Diagnostic Test
;----------------------------------------------------
LE099:   INC DiagTestNo         ; Goto next Diagnostic Test
         LDA #$0B               ; Check for all 11 tests
         CMP DiagTestNo         ; Have we finished all tests?
         BCS LE0A8              ; No, so skip ahead
         LDA #$00               ; Loop back to the first test
         STA DiagTestNo         ; Save test number
         STA L1001
LE0A8:   LDX #$FF
         TXS
         LDA #$1F               
; 31 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
LE0B2:   LDY #$FF               ; Don't erase screen
         JSR LE467              ; Reset Color RAM
         LDA #$00               ; A = 00
         STA ICAX1Z             ;
         STA L1001              ; Clear
         STA L1003              ; Clear
         LDA #$19               ; A = Coin Sound
         STA L1004              ; Write to Sound Chip
;----------------------------------------------------
;                Call Diagnostic Test
;----------------------------------------------------
         LDA DiagTestNo         ; Get routine number
         ASL A                  ; 2 bytes per address
         TAX                    ; Index to routine address
         LDA LE0E0,X            ; Get routine address LO
         STA ICBAHZ             ; Setup routine address
         LDA LE0E1,X            ; Get routine address HI
         STA Sprite4_Prop       ; Setup routine address
         JMP (ICBAHZ)           ; Jump to diagnostic routine
LE0D7:   STA L1001              ; reset inputs?
         PLA                    ; Restore Y Register
         TAY                    ; Move Y
         PLA                    ; Restore X Register
         TAX                    ; Move X
         PLA                    ; Restore A Register
         RTI                    ; Return from Interrupt

;----------------------------------------------------
;           Diagnostic Routine Addresses
;----------------------------------------------------
LE0E0:   .WORD LE53F   ; #1  Zero Stack Test
         .WORD LE651   ; #3  ROM Checksum Test   
         .WORD LEDAB   ;     Monitor Adjustments (16 tests)
         .WORD LE8D3   ; #4  Character Display Test
         .WORD LE754   ; #5  Mix Test             
         .WORD LF126   ; #6  DIP Switch Test
         .WORD LF09C   ; #7  Panel switch Test
         .WORD LECFD   ; #8  Sound Test
         .WORD LF206   ; #9  Line Test
         .WORD LE939   ; #10 LDP Test
         .WORD LEA80   ; #11 LaserDisc Test (upright only)
         .WORD LF2A3   ;



;----------------------------------------------------
;                  RESET_VECTOR
;----------------------------------------------------
LE0F8:   SEI                    ; Enable Interrupts
         CLD                    ; Clear Decimal Mode
         LDX #$FF               ;
         TXS                    ;
         LDA L1002              ; Get DIP Bank 2
         AND #$80               ; Check Diagnostic sw8
         BEQ LE107              ;
         JMP L4003              ; Next Routine, Start Program
LE107:   LDA #$03
         STA L1006
         LDA #$96
         STA L1006
         LDA #$00
         STA L1000             
; Clear timer2
         STA L1004
         STA L1003             
; Clear timer1
         STA ICAX1Z
         
JMP LE121
LE121:   LDY #$00               
; Check ZERO PAGE RAM
         JMP LE467              ; Reset Color RAM
LE126:   JMP LF19C              ; Erase Screen




;----------------------------------------------------
;       Perform "ZERO PAGE AREA" Diagnostic Test
;----------------------------------------------------
LE129:   LDX #$00               ; Start at first character
LE12B:   LDA LF413,X            ; Get Diagnostic message text
         STA L3908,X            ; Print message text
         INX                    ; Go to next character
         CPX #$0E               ; Have we printed entire message?
         BNE LE12B              ; No, so loop back until message printed
;----------------------------------------------------
;   Fill Zero Page RAM with Test Bytes ($0000-$0FFF)
;----------------------------------------------------
         LDY #$08               ; 8 Test Bytes to use
         LDX #$00               ; Start at beginning of RAM
LE13A:   LDA LE244,Y            ; Get Test Byte from table below
         STA L0000,X            ; Write Test Byte to RAM
         STA L0100,X            ; Write Test Byte to RAM
         STA L0200,X            ; Write Test Byte to RAM
         STA L0300,X            ; Write Test Byte to RAM
         STA L0400,X            ; Write Test Byte to RAM
         STA L0500,X            ; Write Test Byte to RAM
         STA L0600,X            ; Write Test Byte to RAM
         STA L0700,X            ; Write Test Byte to RAM
         STA L0800,X            ; Write Test Byte to RAM
         STA L0900,X            ; Write Test Byte to RAM
         STA L0A00,X            ; Write Test Byte to RAM
         STA L0B00,X            ; Write Test Byte to RAM
         STA L0C00,X            ; Write Test Byte to RAM
         STA L0D00,X            ; Write Test Byte to RAM
         STA L0E00,X            ; Write Test Byte to RAM
         STA L0F00,X            ; Write Test Byte to RAM
         INX                    ; Go to next RAM location
         BNE LE13A              ; Loop back until all of RAM has been written
;----------------------------------------------------
;          Check RAM location for Test Byte
;----------------------------------------------------
LE16F:   LDA LE244,Y            ; Get Test Byte
         EOR L0000,X            ; Check RAM for Test Byte
         BEQ LE179              ; Test Byte present so skip ahead
         JMP LE24D              ; Jump ahead and Print "0"
LE179:   LDA LE244,Y            ; Get Test Byte
         EOR L0100,X            ; Check RAM for Test Byte
         BEQ LE184              ; Test Byte present so skip ahead
         JMP LE255              ; Jump ahead and Print "1"
LE184:   LDA LE244,Y            ; Get Test Byte
         EOR L0200,X            ; Check RAM for Test Byte
         BEQ LE18F              ; Test Byte present so skip ahead
         JMP LE25D              ; Jump ahead and Print "2"
LE18F:   LDA LE244,Y            ; Get Test Byte
         EOR L0300,X            ; Check RAM for Test Byte
         BEQ LE19A              ; Test Byte present so skip ahead
         JMP LE265              ; Jump ahead and Print "3"
LE19A:   LDA LE244,Y            ; Get Test Byte
         EOR L0400,X            ; Check RAM for Test Byte
         BEQ LE1A5              ; Test Byte present so skip ahead
         JMP LE26D              ; Jump ahead and Print "4"
LE1A5:   LDA LE244,Y            ; Get Test Byte
         EOR L0500,X            ; Check RAM for Test Byte
         BEQ LE1B0              ; Test Byte present so skip ahead
         JMP LE275              ; Jump ahead and Print "5"
LE1B0:   LDA LE244,Y            ; Get Test Byte
LE1B3:   EOR L0600,X            ; Check RAM for Test Byte
         BEQ LE1BB              ; Test Byte present so skip ahead
         JMP LE27D              ; Jump ahead and Print "6"
LE1BB:   LDA LE244,Y            ; Get Test Byte
         EOR L0700,X            ; Check RAM for Test Byte
         BEQ LE1C6              ; Test Byte present so skip ahead
         JMP LE285              ; Jump ahead and Print "7"
LE1C6:   LDA LE244,Y            ; Get Test Byte
         EOR L0800,X            ; Check RAM for Test Byte
         BEQ LE1D1              ; Test Byte present so skip ahead
         JMP LE28D              ; Jump ahead and Print "8"
LE1D1:   LDA LE244,Y            ; Get Test Byte
         EOR L0900,X            ; Check RAM for Test Byte
         BEQ LE1DC              ; Test Byte present so skip ahead
         JMP LE295              ; Jump ahead and Print "9"
LE1DC:   LDA LE244,Y            ; Get Test Byte
         EOR L0A00,X            ; Check RAM for Test Byte
         BEQ LE1E7              ; Test Byte present so skip ahead
         JMP LE29D              ; Jump ahead and Print "A"
LE1E7:   LDA LE244,Y            ; Get Test Byte
         EOR L0B00,X            ; Check RAM for Test Byte
         BEQ LE1F2              ; Test Byte present so skip ahead
         JMP LE2A5              ; Jump ahead and Print "B"
LE1F2:   LDA LE244,Y            ; Get Test Byte
         EOR L0C00,X            ; Check RAM for Test Byte
         BEQ LE1FD              ; Test Byte present so skip ahead
         JMP LE2AD              ; Jump ahead and Print "C"
LE1FD:   LDA LE244,Y            ; Get Test Byte
         EOR L0D00,X            ; Check RAM for Test Byte
         BEQ LE208              ; Test Byte present so skip ahead
         JMP LE2B5              ; Jump ahead and Print "D"
LE208:   LDA LE244,Y            ; Get Test Byte
         EOR L0E00,X            ; Check RAM for Test Byte
         BEQ LE213              ; Test Byte present so skip ahead
         JMP LE2BD              ; Jump ahead and Print "E"
LE213:   LDA LE244,Y            ; Get Test Byte
         EOR L0F00,X            ; Check RAM for Test Byte
         BEQ LE21E              ; Test Byte present so skip ahead
         JMP LE2C5              ; Jump ahead and Print "F"

LE21E:   INX                   
; Go to next RAM location
         BEQ LE224              ; Jump ahead if we're finished
         JMP LE16F              ; Loop back until all RAM locations verified
LE224:   DEY                    ; Go to next Test Byte in table
         BEQ LE22A              ; All Test Byte used so skip ahead
         JMP LE13A              ; Loop back and repeat with new Test Byte
;----------------------------------------------------
;          RAM Check finished and passed
;----------------------------------------------------
LE22A:   LDA #$FF               ; Start at first Diagnostic Test
         STA DiagTestNo         ; Save Diagnostic Test number
         STA L1001              ; reset inputs?
         LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         JSR LE467              ; Reset Color RAM
         JSR LE309              ; Print Diagnostic Program Intro Message
         LDA #$09               ; A = Dong Sound #9
         STA L1004              ; Write to Sound Chip
LE241:   JMP LE241              ; Wait here


;----------------------------------------------------
;             RAM Check Test Bytes
;----------------------------------------------------
LE244:   .BYTE $00,$80,$40,$20,$10,$08,$04,$02,$01

   
;----------------------------------------------------
;                Print "0"
;----------------------------------------------------
LE24D:   LDA #$01               ; Char = "0"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "1"
;----------------------------------------------------
LE255:   LDA #$02               ; Char = "1"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "2"
;----------------------------------------------------
LE25D:   LDA #$03               ; Char = "2"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "3"
;----------------------------------------------------
LE265:   LDA #$04               ; Char = "3"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "4"
;----------------------------------------------------
LE26D:   LDA #$05               ; Char = "4"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "5"
;----------------------------------------------------
LE275:   LDA #$06               ; Char = "5"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "6"
;----------------------------------------------------
LE27D:   LDA #$07               ; Char = "6"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "7"
;----------------------------------------------------
LE285:   LDA #$08               ; Char = "7"
         STA L3973              ; Print character
         JMP LE2CD              ; Jump ahead
;----------------------------------------------------
;                Print "8"
;----------------------------------------------------
LE28D:   LDA #$09               ; Char = "8"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "9"
;----------------------------------------------------
LE295:   LDA #$0A               ; Char = "9"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "A"
;----------------------------------------------------
LE29D:   LDA #$0B               ; Char = "A"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "B"
;----------------------------------------------------
LE2A5:   LDA #$0C               ; Char = "B"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "C"
;----------------------------------------------------
LE2AD:   LDA #$0D               ; Char = "C"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "D"
;----------------------------------------------------
LE2B5:   LDA #$0E               ; Char = "D"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "E"
;----------------------------------------------------
LE2BD:   LDA #$0F               ; Char = "E"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead
;----------------------------------------------------
;                Print "F"
;----------------------------------------------------
LE2C5:   LDA #$10               ; Char = "F"
         STA L3973              ; Print character
         JMP LE2DC              ; Jump ahead

;----------------------------------------------------
;        Print RAM Socket location "3F"
;----------------------------------------------------
LE2CD:   LDA #$04               ; Char = "3"
         STA L396F              ; Print character
         LDA #$10               ; Char = "F"
         STA L3970              ; Print character
         LDY #$00               ;
         JMP LE2EB              ; Jump ahead
;----------------------------------------------------
;        Print RAM Socket location "5F"
;----------------------------------------------------
LE2DC:   LDA #$06               ; Char = "5"
         STA L398F              ; Print character
         LDA #$10               ; Char = "F"
         STA L3990              ; Print character
         LDY #$00               ;
         JMP LE2EB              ;
;----------------------------------------------------
;               
;----------------------------------------------------
LE2EB:   TXA
         
AND #$0F
         
CLC
         
ADC #$01
         STA L3975
         TXA
         LSR A
         LSR A
         LSR A
         LSR A
         
CLC
         
ADC #$01
         STA L3974
         
JMP LE4F9              ; Diagnostic Test Failed, print "ERROR"


;----------------------------------------------------
;
;----------------------------------------------------
LE302:   LDX #$3F               ;
         LDY #$00               ;
         JMP LE3EA              ;


;----------------------------------------------------
;    Print Diagnostic Program Introduction Screen
;----------------------------------------------------
LE309:   LDX #$00               ; Start at first character
LE30B:   LDA LE345,X            ; Get text message
         STA L38C2,X            ; Write Text Line 1
         LDA LE361,X            ; Get text message
         STA L3902,X            ; Write Text Line 2
         LDA LE37D,X            ; Get text message
         STA L3942,X            ; Write Text Line 3
         LDA LE399,X            ; Get text message
         STA L3A22,X            ; Write Text Line 4
         LDA LE3B5,X            ; Get text message
         STA L3A62,X            ; Write Text Line 5
         INX                    ; Go to next character
         CPX #$1C               ; Have all characters been printed?
         BNE LE30B              ; No, loop back until all characters printed
;----------------------------------------------------
;         Check Factory Diagnostic Switch
;----------------------------------------------------
         LDA L1002              ; Get DIP bank 2
         AND #$40               ; Check Sw7,0=User Diagnostics,1=Factory Diagnostics
         BNE LE344              ; Factory Diagnostics, so leave
;----------------------------------------------------
;   Erase "LX2A" and "VER0" from Diagnostic Intro
;----------------------------------------------------
         LDX #$00               ; Starting location
LE337:   LDA #$00               ; Char = SPACE
         STA L38C2,X            ; Erase "LX2A" characters
         STA L38DA,X            ; Erase "VER0" characters
         INX                    ; Next location
         CPX #$04               ; Have all characters been erased?
         BNE LE337              ; No, loop unitl all characters erased
LE344:   RTS                    ; Return

;----------------------------------------------------
;        Diagnostic Program Text Messages
;----------------------------------------------------
LE345:   .BYTE $16,$22,$03,$0B ; "LX2A DIAGNOSTIC PROGRAM VER0"
         .BYTE $00,$0E,$13,$0B
         .
BYTE $11,$18,$19,$1D
         .
BYTE $1E,$13,$0D,$00
         .
BYTE $1A,$1C,$19,$11
         .
BYTE $1C,$0B,$17,$00
         .
BYTE $20,$0F,$1C,$01

LE361:   .
BYTE $00,$0E,$0B,$1E ; " DATE - 20 83 BY S KUMAGAI  " 
         .BYTE $0F,$00,$0A,$00
         .
BYTE $03,$01,$00,$09
         .
BYTE $04,$00,$0C,$23
         .
BYTE $00,$1D,$00,$15
         .
BYTE $1F,$17,$0B,$11
         .
BYTE $0B,$13,$00,$00

LE37D:   .
BYTE $00,$0E,$0B,$1E ; " DATA EAST CORPORATION **** "
         .BYTE $0B,$00,$0F,$0B
         .
BYTE $1D,$1E,$00,$0D
         .
BYTE $19,$1C,$1A,$19
         .
BYTE $1C,$0B,$1E,$13
         .
BYTE $19,$18,$00,$68
         .
BYTE $69,$6A,$6B,$00

LE399:   .
BYTE $00,$1A,$1F,$1D ; " PUSH SERVICE SW TO START   "
         .BYTE $12,$00,$1D,$0F
         .
BYTE $1C,$20,$13,$0D
         .
BYTE $0F,$00,$1D,$21
         .
BYTE $00,$1E,$19,$00
         .
BYTE $1D,$1E,$0B,$1C
         .
BYTE $1E,$00,$00,$00

LE3B5:   .
BYTE $00,$00,$00,$00 ; "                            "
         .BYTE $00,$00,$00,$00
         .
BYTE $00,$00,$00,$00
         .
BYTE $00,$00,$00,$00
         .
BYTE $00,$00,$00,$00
         .
BYTE $00,$00,$00,$00
         .
BYTE $00,$00,$00,$00


;----------------------------------------------------
;      Print Diagnostic Test Name to Screen
;----------------------------------------------------
LE3D1:   LDY #$00               ; Initialize loop
LE3D3:   LDA (DiagMessage_LO),Y ; Get text characters
         STA L3908,Y            ; Print text to screen
         INY                    ; Increment loop
         CPY #$0E               ; Have all 14 characters been printed?
         BNE LE3D3              ; No, loop until message complete
         RTS                    ; Return


;----------------------------------------------------
;         Wait for 64 Verticle Blanking Pulses   
;----------------------------------------------------
LE3DE:   LDA #$3F               ; Count = 63
         STA NumberBlanks       ; Save Blanking Count
;----------------------------------------------------
;        Wait for number of Blanking pulses
;----------------------------------------------------
LE3E2:   JSR LE3FE              ; Wait for Verticle Blanking
         DEC NumberBlanks       ; Count blanking pulse
         BNE LE3E2              ; Loop until count is zero
         RTS                    ; Return



;----------------------------------------------------
;               
;----------------------------------------------------
LE3EA:   LDA L1003
         BPL LE3EA
LE3EF:   LDA L1003
         BMI LE3EF
         DEX
         BNE LE3EA
         TYA
         BEQ LE3FB
         RTS
LE3FB:   
JMP LE121


;----------------------------------------------------
;            Wait for Verticle Blanking
;----------------------------------------------------
LE3FE:   LDA L1003              ; Get VBlank
         BPL LE3FE              ; Loop until VBlank = 0
LE403:   LDA L1003              ; Get VBlank
         BMI LE403              ; Loop until VBlank = 1
         RTS                    ; Return

;----------------------------------------------------
;           Wait for Horizontal Blanking     
;----------------------------------------------------
LE409:   LDA L1003              ; Get Blanking
         ASL A                  ; Check Horizontal Blanking
         BPL LE409              ; Loop until HBlank = 0
LE40F:   LDA L1003              ; Get Blanking
         ASL A                  ; Check Horizontal Blanking
         BMI LE40F              ; Loop until HBlank = 1
         RTS                    ; Return


;----------------------------------------------------
;               Wait until S1 Pressed
;----------------------------------------------------
LE416:   LDA L1000              ; Get S1 Switch input
         AND #$40               ; Check S1 Switch
         BNE LE416              ; Wait here until S1 pressed
         RTS                    ; S1 pressed so leave

;----------------------------------------------------
;               Wait until S2 Pressed
;----------------------------------------------------
LE41E:   LDA L1000              ; Get S2 Switch input
         AND #$20               ; Check S2 Switch
         BNE LE41E              ; Wait here until S2 pressed
         RTS                    ; S2 pressed so leave

;----------------------------------------------------
;               Wait until S3 Pressed
;----------------------------------------------------
LE426:   LDA L1000              ; Get S3 Switch input
         AND #$10               ; Check S3 Switch
         BNE LE426              ; Wait here until S3 pressed
         RTS                    ; S3 pressed so leave

;----------------------------------------------------
;            Wait until Player1 Pressed
;----------------------------------------------------
LE42E:   LDA L1001              ; Get Switch input
         AND #$20               ; Check Player1 button
         BNE LE42E              ; Wait here until Player1 pressed
         RTS                    ; Player1 pressed so leave

;----------------------------------------------------
;            Wait until Player2 Pressed
;----------------------------------------------------
LE436:   LDA L1001              ; Get Switch input
         AND #$10               ; Check Player2 button
         BNE LE436              ; Wait here until Player2 pressed
         RTS                    ; Player2 pressed so leave

;----------------------------------------------------
;                    unknown
;----------------------------------------------------
LE43E:   LDY #$00               ;
LE440:   TXA                    ;
         STA (SpritePic1),Y     ;
         INY                    ;
         BNE LE440              ;
         INC SpritePic2         ;
         LDA SpritePic2         ;
         CMP ICDNOZ             ;
         BNE LE440              ;
         RTS                    ;


;----------------------------------------------------
;                    unknown
;----------------------------------------------------
LE44F:   LDY #$00               ;
LE451:   TXA                    ;
         STA (SpritePic1),Y     ;
         INC SpritePic1         ;
         BNE LE45A              ;
         INC SpritePic2         ;
LE45A:   LDA SpritePic1
         
CMP ICCOMZ
         BNE LE451
         LDA SpritePic2
         
CMP ICDNOZ
         BNE LE451
         RTS


;----------------------------------------------------
;          Reset Color RAM, Erase screen
;----------------------------------------------------
;           Y = 00, Erase screen
;           Y = FF, Keep screen
;----------------------------------------------------
;         Copy E47B-E4B3 to 1800-1838
;----------------------------------------------------
LE467:   LDX #$00               ; Loop = 0
LE469:   LDA LE47B,X            ; Get data
         STA L1800,X            ; Copy data here
         INX                    ; Next byte
         CPX #$38               ; All bytes copied?
         BNE LE469              ; No, so loop until all bytes copied
         TYA                    ; Test Y Flag
         BEQ LE478              ; Yes, so erase screen
         RTS                    ; No, so just return
LE478:   JMP LE126              ; Erase screen




;----------------------------------------------------
;             unknown
;----------------------------------------------------
LE47B:   .BYTE $FF
         SBC (L00C7),Y
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $FF
         CPY #$D5
         .
BYTE $9B
         BCC LE48B
LE48B:   .
BYTE $FF
         SED
         .
BYTE $FF
         CPY #$D5
         .
BYTE $9B
         BCC LE493
LE493:   .
BYTE $FF
         SED
         .
BYTE $FF
         CPY #$D5
         .
BYTE $9B
         BCC LE49B
LE49B:   .
BYTE $FF
         SED
         .
BYTE $FF
         CPY #$3F
         .
BYTE $9B
         EOR #$00
         .
BYTE $FF
         SED
         .
BYTE $FF
         CPY #$3F
         .
BYTE $9B
         EOR #$00
         .
BYTE $FF
         SED
         .
BYTE $FF
         CPY #$3F
         .
BYTE $9B
         EOR #$00
;----------------------------------------------------
;                     jsr
;----------------------------------------------------
LE4B3:   LDX #$00               ;
LE4B5:   LDA LE4C1,X            ;
         STA L1800,X            ; Copy data here
         INX                    ;
         CPX #$38               ;
         BNE LE4B5              ;
         RTS                    ; Return


;----------------------------------------------------
;                  unknown data
;----------------------------------------------------
LE4C1:   .BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK
         .
BYTE $FF
         SED
         .
BYTE $C7
         CPY #$3F
         SEC
         .
BYTE $07
         
BRK


;----------------------------------------------------
;      Diagnostic Test Failed, print "ERROR"
;----------------------------------------------------
;         Y = 0, print #
;----------------------------------------------------
LE4F9:   LDA #$05               ; A = ERROR Sound
         STA L1004              ; Write to Sound Chip
         LDA #$0F               ; Char = "E"
         STA L394D              ; Print character
         LDA #$1C               ; Char = "R"
         STA L394E              ; Print character
         STA L394F              ; Print character
         STA L3951              ; Print character
         LDA #$19               ; Char = "O"
         STA L3950              ; Print character
         TYA                    ;
         BEQ LE517              ;
         RTS                    ; Return
LE517:   JMP LE302              ;

;----------------------------------------------------
;          Diagnostic Test Passed, print "OK"
;----------------------------------------------------
LE51A:   LDA #$09               ; A = PASS Sound
         STA L1004              ; Write to Sound Chip
         LDA #$19               ; Char = "O"
         STA L396F              ; Print character
         LDA #$15               ; Char = "K"
         STA L3970              ; Print character
         RTS                    ; Return



;----------------------------------------------------
;                   Print "END"
;----------------------------------------------------
LE52A:   LDA #$02               ;
         STA L1004              ;
         LDA #$0F               ; Char = "E"
         STA L398E              ; Print character
         LDA #$18               ; Char = "N"
         STA L398F              ; Print character
         LDA #$0E               ; Char = "D"
         STA L3990              ; Print character
         RTS                    ; Return



;----------------------------------------------------
;       Diagnostic Test #1 - Zero Page RAM Test
;----------------------------------------------------
LE53F:   LDA #$00               ; Clear RAM check results
         STA DOSVEC+1           ; Save RAM check results
         LDX #$00               ; Point to first Test byte to use
         LDY #$00               ; Index = 0 for some reason
         LDA #$00               ; RAM Start = $2000
         STA BOOT               ; Setup RAM Start location (low)
LE54B:   LDA #$20               ; RAM Start = $2000
         STA BOOT+1             ; Setup RAM Start location (high)
;----------------------------------------------------
;         Write test data to RAM ($2000-$3FFF)
;----------------------------------------------------
LE54F:   LDA LE643,X            ; Get Test byte from table
         STA (BOOT),Y           ; Write Test Byte into RAM location
         INC BOOT               ; Proceed to next RAM location
         BNE LE54F              ; Loop back until all 256 locations written
         INC BOOT+1             ; Increment RAM high byte pointer
         LDA BOOT+1             ; Check RAM end location
         CMP #$40               ; Have we reached $3FFF?
         BNE LE54F              ; No so continue writing
;----------------------------------------------------
;       Read test data from RAM ($2000-$3FFF)
;----------------------------------------------------
         LDA #$20               ; Reset RAM pointer to $2000
         STA BOOT+1             ; Save RAM start pointer
LE564:   LDA LE643,X            ; Get Test Byte from table
         CMP (BOOT),Y           ; Did RAM location contain value?
         BEQ LE56E              ; Yes, so skip ahead
         JSR LE61F              ; Otherwise mark RAM Failure
LE56E:   INC BOOT               ; Check next RAM location
         BNE LE564              ; Loop back until 256 locations have been checked
         INC BOOT+1             ; Increment RAM high byte pointer
         LDA BOOT+1             ; Check RAM end location
         CMP #$40               ; Have we reached $3FFF?
         BNE LE564              ; No so continue checking
         INX                    ; Do next Test byte
         CPX #$0E               ; Have all Test bytes been verified?
         BNE LE54B              ; No, so continue RAM test with new byte
;----------------------------------------------------
;         Write test data to RAM ($1800-$1837)
;----------------------------------------------------
         LDX #$00               ; Point to
LE581:   LDY #$00               ; Loop = 0
         LDA LE643,X            ; Get Test byte from table
LE586:   STA L1800,Y            ; Write Test Byte into RAM location
         INY                    ; Go to next RAM location
         CPY #$38               ; Have we written to all RAM locations?
         BNE LE586              ; No, so loop until all locations written
;----------------------------------------------------
;        Read test data from RAM ($1800-$1837)
;----------------------------------------------------
         LDY #$00               ; Start at first RAM location
LE590:   LDA LE643,X            ; Get Test Byte from table
         CMP L1800,Y            ; Did RAM location contain value?
         BEQ LE59E              ; Yes, so skip ahead
         LDA #$10               ; Mark Error
         ORA DOSVEC+1           ; Store error in results
         STA DOSVEC+1           ; Save RAM check results
LE59E:   INY                    ; Go to next RAM location
         CPY #$38               ; Have we checked all locations?
         BNE LE590              ; No, loop back until all locations checked
         INX                    ; Do next Test byte
         CPX #$0E               ; Have all Test bytes been verified?
         BNE LE581              ; No, so continue RAM test with new byte
;----------------------------------------------------
;          Display RAM Check test results
;----------------------------------------------------
         LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDY #$FF               ; Call for erase screen
         JSR LE467              ; Reset Color RAM
         LDA DOSVEC+1           ; Check test results
         BNE LE5BC              ; Failure found so print location
         JSR LE51A              ; Diagnostic Test Passed, print "OK"
         JMP LE611              ; Skip to end of test

;----------------------------------------------------
;           Display RAM Failure Location
;----------------------------------------------------
LE5BC:   LDY #$FF               ; FF = reset?
         JSR LE4F9              ; Diagnostic Test Failed, print "ERROR"

         LSR DOSVEC+
1           ; RAM 6A Failure?
         BCC LE5CF              ; No, so skip ahead
         LDA #$07               ; Char = "6"
         STA L396F              ; Print character
         LDA #$0B               ; Char = "A"
         STA L3970              ; Print character

LE5CF:   LSR DOSVEC+
1           ; RAM 8A Failure?
         BCC LE5DD              ; No, so skip ahead
         LDA #$09               ; Char = "8"
         STA L398F              ; Print character
         LDA #$0B               ; Char = "A"
         STA L3990              ; Print character

LE5DD:   LSR DOSVEC+
1           ; RAM 12A Failure?
         BCC LE5F0              ; No, so skip ahead
         LDA #$02               ; Char = "1"
         STA L39AE              ; Print character
         LDA #$03               ; Char = "2"
         STA L39AF              ; Print character
         LDA #$0B               ; Char = "A"
         STA L39B0              ; Print character

LE5F0:   LSR DOSVEC+
1           ; RAM 10A Failure?
         BCC LE603              ; No, so skip ahead
         LDA #$02               ; Char = "1"
         STA L39CE              ; Print character
         LDA #$01               ; Char = "0"
         STA L39CF              ; Print character
         LDA #$0B               ; Char = "A"
         STA L39D0              ; Print character

LE603:   LSR DOSVEC+
1           ; RAM 5J Failure?
         BCC LE611              ; No, so skip ahead
         LDA #$06               ; Char = "5"
         STA L39EF              ; Print character
         LDA #$14               ; Char = "J"
         STA L39F0              ; Print character

LE611:   LDA #$34               
; LF434 = "RAM TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF434 = "RAM TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen 
LE61C:   JMP LE61C              ; Wait here after diagnostic test


;----------------------------------------------------
;              Mark RAM as failed
;----------------------------------------------------
LE61F:   LDA BOOT+1             ; Check RAM address
         CMP #$28               ; Was RAM ($2000-$27FF) bad?
         BCS LE62A              ; No, so skip ahead
         LDA #$01               ; A = Bad RAM Marker
         JMP LE63E              ; Store failure
LE62A:   CMP #$30               ; Was RAM ($2800-$2FFF) bad?
         BCS LE633              ; No, so skip ahead
         LDA #$02               ; A = Bad RAM Marker
         JMP LE63E              ; Store failure
LE633:   CMP #$38               ; Was RAM ($3000-$37FF) bad?
         BCS LE63C              ; No, so skip ahead
         LDA #$04               ; A = Bad RAM Marker
         JMP LE63E              ; Store failure
LE63C:   LDA #$08               ; A = Bad RAM Marker ($3800-$3FFF)
LE63E:   ORA DOSVEC+1           ; Mark RAM failure in results
         STA DOSVEC+1           ; Store test results
         RTS                    ; Return


;----------------------------------------------------
;                   RAM Test Data
;----------------------------------------------------
LE643:   .BYTE  $AA, $55, $FF, $01, $0F, $F0, $66
         .
BYTE  $99, $CC, $33, $75, $57, $E7, $00




;----------------------------------------------------
;         Diagnostic Test #3 - ROM Checksum Test
;----------------------------------------------------
LE651:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDA #$26               ; LF426 = "ROM READ TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF426 = "ROM READ TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
;----------------------------------------------------
;               Setup ROM Checksum Test
;----------------------------------------------------
         LDY #$00               ; No Failures
         LDX #$00               ; Reset Checksum pointer
         LDA #$00               ; A = 0
         STA Ptr1_HI            ; Start at beginning of ROM
         STA TRAMSZ             ; Clear test results
         LDA #$40               ; ROM Start Address = $4000
         STA Ptr2_LO            ; Save ROM Start Address
         LDA #$60               ; ROM End Address = $6000
         STA Ptr2_HI            ; Save ROM End Address
         LDA #$01               ; Mark first ROM
         STA Ptr2_HI+1          ; First ROM checksum results
         JSR LE716              ; Verify ROM05 $4000-5FFF
         LDA #$80               ; ROM End Address = $8000
         STA Ptr2_HI            ; Save ROM End Address
         JSR LE716              ; Verify ROM04 $6000-$7FFF
         LDA #$A0               ; ROM End Address = $A000
         STA Ptr2_HI            ; Save ROM End Address
         JSR LE716              ; Verify ROM03 $8000-$9FFF
         LDA #$C0               ; ROM End Address = $C000
         STA Ptr2_HI            ; Save ROM End Address
         JSR LE716              ; Verify ROM02 $A000-$BFFF
         LDA #$E0               ; ROM End Address = $E000
         STA Ptr2_HI            ; Save ROM End Address
         JSR LE716              ; Verify ROM01 $C000-$DFFF
         LDA #$F0               ; ROM End Address = $F000
         STA Ptr2_HI            ; Save ROM End Address
         JSR LE716              ; Verify ROM00 $E000-$EFFF
;----------------------------------------------------
;          Display ROM Checksum Test Results
;----------------------------------------------------
         LDA TRAMSZ             ; Get Checksum results
         AND #$1F               ; Isolate results
         STA TRAMSZ             ; Save results
         BEQ LE710              ; No problems, so skip ahead
;----------------------------------------------------
;        Display ROM Failure Location (6F-14F)
;----------------------------------------------------
         LSR TRAMSZ             ; ROM05 Failure?
         BCC LE6B3              ; No, so skip ahead
         LDA #$07               ; Char = "6"
         STA L3970              ; Print character
         LDA #$10               ; Char = "F"
LE6B0:   STA L3971              ; Print character

LE6B3:   LSR TRAMSZ             
; ROM05 Failure?
         BCC LE6C1              ; No, so skip ahead
         LDA #$09               ; Char = "8"
         STA L3990              ; Print character
         LDA #$10               ; Char = "F"
         STA L3991              ; Print character

LE6C1:   LSR TRAMSZ             
; ROM05 Failure?
         BCC LE6CF              ; No, so skip ahead
         LDA #$0A               ; Char = "9"
         STA L39B0              ; Print character
         LDA #$10               ; Char = "F"
         STA L39B1              ; Print character

LE6CF:   LSR TRAMSZ             
; ROM05 Failure?
         BCC LE6E2              ; No, so skip ahead
         LDA #$02               ; Char = "1"
         STA L39CF              ; Print character
         LDA #$02               ; Char = "1"
         STA L39D0              ; Print character
         LDA #$10               ; Char = "F"
         STA L39D1              ; Print character

LE6E2:   LSR TRAMSZ             
; ROM05 Failure?
         BCC LE6F5              ; No, so skip ahead
         LDA #$02               ; Char = "1"
         STA L39EF              ; Print character
         LDA #$03               ; Char = "2"
         STA L39F0              ; Print character
         LDA #$10               ; Char = "F"
         STA L39F1              ; Print character

LE6F5:   LSR TRAMSZ             
; ROM05 Failure?
         BCC LE708              ; No, so skip ahead
         LDA #$02               ; Char = "1"
         STA L3A0F              ; Print character
         LDA #$05               ; Char = "4"
         STA L3A10              ; Print character
         LDA #$10               ; Char = "F"
         STA L3A11              ; Print character

LE708:   LDY #$FF               
; FF = Issue reset?
         JSR LE4F9              ; Diagnostic Test Failed, print "ERROR"
LE70D:   JMP LE70D              ; Stop here after checksum failure

LE710:   JSR LE51A             
; Diagnostic Test Passed, print "OK"
LE713:   JMP LE713              ; Stop here after checksum test


;----------------------------------------------------
;             Calculate ROM Checksum
;----------------------------------------------------
LE716:   LDA #$00               ; Initialize Checksum = $0000
         STA L0000              ; Clear Checksum (low)
         STA Ptr1_LO            ; Clear Checksum (high)
LE71C:   LDA (Ptr1_HI),Y        ; Get ROM byte
         CLC                    ; Clear carry for addition
         ADC L0000              ; Add byte to checksum
         STA L0000              ; Save checksum (low)
         LDA #$00               ; Get carry from addition
         ADC Ptr1_LO            ; Add carry to upper byte
         STA Ptr1_LO            ; Save checksum (high)
         INY                    ; Next byte
         BNE LE71C              ; Loop until 256 bytes have been checked
         INC Ptr2_LO            ; Go to next ROM location
         LDA Ptr2_LO            ; Check for end of ROM
         CMP Ptr2_HI            ; Have we reached end of ROM?
         BNE LE71C              ; No, so loop back and continue calculation
;----------------------------------------------------
;              Verify ROM Checksum
;----------------------------------------------------
         LDA LFFEE,X            ; Get correct checksum value (low)
         CMP Ptr1_LO            ; Does the checksum match?
         BEQ LE73E              ; Yes, so check high byte
         JSR LE74D              ; ERROR, Mark ROM as faulty
LE73E:   INX                    ; Point to next checksum byte
         LDA LFFEE,X            ; Get correct Checksum
         CMP L0000              ; Does the Checksum match?
         BEQ LE749              ; Yes so skip ahead
         JSR LE74D              ; ERROR, Mark ROM as faulty
LE749:   ASL Ptr2_HI+1            ; Mark ROM as pass
         INX                    ; Point to next checksum byte
         RTS                    ; Return

;----------------------------------------------------
;              Mark ROM as failed
;----------------------------------------------------
LE74D:   LDA Ptr2_HI+1            ; Get which ROM failed
         ORA TRAMSZ             ; Mark failure with a "1"
         STA TRAMSZ             ; Save checksum results
         RTS                    ; Return
                               
                               
                               
                               
;----------------------------------------------------
;       Diagnostic Test #5 - Mix Test
;----------------------------------------------------
LE754:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         JSR LE4B3              ; color?
         LDA #$6C               ; LF46C = "MIX TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF46C = "MIX TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
         LDA #$00               ;
         STA L1003              ;
         STA DOSINI+1           ;
         JSR LE7AF              ;
         JSR LE3DE              ; Wait for 64 Verticle Blanking Pulses
LE774:   LDA #$FF               ;
         STA DOSINI+1           ;
         LDA #$08               ;
         STA L1003              ;
         JSR LE7AF              ;
LE780:   LDA L1000              ;
         EOR #$FF               ;
         AND #$20               ;
         BEQ LE791              ;
         LDA #$07               ;
         STA L1004              ;
         JMP LE774              ;
LE791:   LDA L1000
         EOR #$FF
         
AND #$10
         BEQ LE780
         LDA #$07
         STA L1004
         LDA #$00
         STA DOSINI+
1
         STA L1003
         JSR LE7AF
         JSR LE3DE             
; Wait for 64 Verticle Blanking Pulses
         JMP LE780
LE7AF:   LDA #$00
         STA DOSINI
         JSR LE7DE
LE7B6:   JSR LE7F7
         JSR LE82B
LE7BC:   JSR LE859
         JSR LE887             
; Wait for 1 Verticle Blanking Pulse
         JSR LE870              ; Draw
         JSR LE887              ; Wait for 1 Verticle Blanking Pulse
         LDA L3BE3
         
CMP #$00
         BNE LE7BC
         
INC DOSINI
         LDA DOSINI
         
CMP #$04
         BNE LE7B6
         JSR LE7F7
         JSR LE82B
         RTS
LE7DE:   LDX #$01
         LDA #$1E
LE7E2:   STA L2800,X
         STA L2BE0,X
         STA L3800,X
         STA L3BE0,X
         INX
         INX
         INX
         INX
         CPX #$21
         BNE LE7E2
         RTS
LE7F7:   LDA DOSINI
         TAY
         LDX #$00
         LDA LE826,Y
LE7FF:   STA L2800,X
         STA L2BE0,X
         STA L3800,X
         STA L3BE0,X
         INX
         INX
         INX
         INX
         CPX #$20
         BNE LE7FF
         LDA DOSINI+
1
         BEQ LE825
         LDA #$00
         STA L281C
         STA L2BFC
         STA L381C
         STA L3BFC
LE825:   RTS
LE826:   ORA (Ptr2_LO,X)
         ORA CMCMD
         ORA (L00A0,X)
         
BRK
         LDX #$02
LE82F:   JSR LE840
         INX
         INY
         JSR LE840
         INX
         INX
         INX
         INY
         CPY #$10
         BNE LE82F
         RTS


LE840:   LDA LE893,Y
         STA L2800,X
         LDA LE8A3,Y
         STA L2BE0,X
         LDA LE8B3,Y
         STA L3800,X
         LDA LE8C3,Y
         STA L3BE0,X
         RTS                   
; Return


LE859:   LDX #$02
LE85B:   
INC L2800,X
         
INC L2BE0,X
         
INC L3800,X
         
INC L3BE0,X
         INX
         INX
         INX
         INX
         CPX #$22
         BNE LE85B
         RTS                   
; Return



;----------------------------------------------------
;           
;----------------------------------------------------
LE870:   LDX #$03               ;
LE872:   DEC L2800,X            ;
         DEC L2BE0,X            ;
         DEC L3800,X            ;
         DEC L3BE0,X            ;
         INX                    ;
         INX                    ;
         INX                    ;
         INX                    ;
         CPX #$23               ;
         BNE LE872              ;
         RTS                    ; Return


;----------------------------------------------------
;           Wait for 1 Blanking Pulse       
;----------------------------------------------------
LE887:   LDA #$01               ; 1 Blanking Pulse
         STA NumberBlanks       ; Save number of blanking pulses to wait for
LE88B:   JSR LE3FE              ; Wait for Blanking pulse
         DEC NumberBlanks       ; Have we counted down?
         BNE LE88B              ; No, loop back and wait more
         RTS                    ; Return


LE893:   RTI
         .
BYTE $2F
         RTI
         .
BYTE $47
         RTI
         .
BYTE $5F
         RTI
         .
BYTE $77
         RTI
         .
BYTE $97
         RTI
         .
BYTE $AF
         RTI
         .
BYTE $C7
         RTI
LE8A2:   .
BYTE $DF
LE8A3:   
CLI
         .
BYTE $2F
         
CLI
         .
BYTE $47
         
CLI
         .
BYTE $5F
         
CLI
         .
BYTE $77
         
CLI
         .
BYTE $97
         
CLI
         .
BYTE $AF
         
CLI
         .
BYTE $C7
         
CLI
         .
BYTE $DF
LE8B3:   BVS LE8E4
         BVS LE8FE
         BVS LE918
         BVS LE932
         BVS LE854
         BVS LE86E
         BVS LE888
         BVS LE8A2
LE8C3:   DEY
         .
BYTE $2F
         DEY
         .
BYTE $47
         DEY
         .
BYTE $5F
         DEY
         .
BYTE $77
         DEY
         .
BYTE $97
         DEY
         .
BYTE $AF
         DEY
         .
BYTE $C7
         DEY
         .
BYTE $DF


;----------------------------------------------------
;      Diagnostic Test #4  Character Display Test
;----------------------------------------------------
LE8D3:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Clear Video RAM
;----------------------------------------------------
;      "A" Group Character ROM  $2000/$2400   
;----------------------------------------------------
         LDA #$00               ; Setup address $2000 $2400
         STA $001B              ; Save address
         STA $001D              ; Save address
         LDA #$20               ; Setup address $2000 $2400
         STA $001C              ; Save address
         LDA #$24               ; Setup address $2000 $2400
LE8E4:   STA $001E              ; Save address
         JSR LE922              ; Draw Color bars
;----------------------------------------------------
;         Wait for S2 Switch to be pressed
;----------------------------------------------------
LE8E9:   LDA L1000              ; Get switch input
         AND #$20               ; Check switch S2
         BNE LE8E9              ; Wait for Switch S2 to be pressed
         LDA #$07               ; A = Dink Sound
         STA L1004              ; Write to Sound Chip
         LDA #$1F               ; 31 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
         LDY #$FF               ; Do not check ZERO PAGE RAM
LE8FE:   JSR LF19C              ; Clear Video RAM
;----------------------------------------------------
;      "B" Group Character ROM  $3000/$3400   
;----------------------------------------------------
         LDA #$30               ; Setup address $3000
         STA $001C              ; Save address
         LDA #$34               ; Setup address $3400
         STA $001E              ; Save address
         JSR LE922              ; Draw Color Bars
;----------------------------------------------------
;         Wait for S2 Switch to be pressed
;----------------------------------------------------
LE90C:   LDA L1000              ; Get switch input
         AND #$20               ; Check switch S2
         BNE LE90C              ; Wait for Switch S2 to be pressed
         LDA #$07               ; A = Dink Sound
         STA L1004              ; Write to Sound Chip
LE918:   LDA #$1F               ; 31 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
         JMP LE8D3              ; Loop back and show Group "A" again



;----------------------------------------------------
;                Draw Character Group
;----------------------------------------------------
;   $001B-$001C       Address1
;   $001D-$001E       Address2
;----------------------------------------------------
LE922:   LDY #$00               ; Y = 0
         LDX #$00               ; X = 0
LE926:   TYA                    ; A <= Y
         STA ($001B),Y          ; 0 - 255
         TXA                    ;
         STA ($001D),Y          ; 0 - 3
         INY                    ;
         BNE LE926              ;
         INC $001C              ;
         INC $001E              ;
         INX                    ; Increment High-byte address
         CPX #$04               ; $3000-3400,$2000-2400?
         BNE LE926              ; Loop and do this 4 times
         RTS                    ; Return




;----------------------------------------------------
;         Diagnostic Test #10 - LDP Test
;----------------------------------------------------
LE939:   LDA #$01
         STA ICAX1Z
         LDY #$FF               
; Do not check ZERO PAGE RAM
         JSR LF19C              ; Clear Video RAM
         LDA #$7A               ; LF47A = "LDP TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF47A = "LDP TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
         LDX #$00
LE94F:   LDA #$7B
         STA L2969,X
         INX
         CPX #$06
         BNE LE94F
         LDX #$00
         LDA #$08
         STA L1003
         LDA #$56               
; Command = CLEAR_ALL
         STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command to LDPlayer
         CLI                    ; Disable interrupts
LE968:   LDX #$00
LE96A:   CPX #$0A
         BCS LE968
;----------------------------------------------------
;         Wait for S2 Switch to be pressed
;----------------------------------------------------
LE96E:   LDA L1000              ; Get switch input
         AND #$20               ; Check switch S2
         BNE LE96E              ; Wait for Switch S2 to be pressed
         LDA #$07               ; A = Dink Sound
         STA L1004              ; Write to Sound Chip
         LDA #$1F               ; 31 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
         JSR LE9B8
         LDA #$50               
; Command = INDEX_ON
         STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command to LDPlayer
         CLI                    ; Disable interrupts
         LDA LE995,X
         STA L1007
LE992:   
JMP LE992              ; Failure - Stop here


;----------------------------------------------------
;                  ROM Checksum Test
;----------------------------------------------------
LE995:   .BYTE $3A,$3B,$3C
         
AND L4A4F,X
         .
BYTE $4B
         
JMP L4F4D


;----------------------------------------------------
;        Send CLEAR_ALL if not ACKNOWLEDGED
;----------------------------------------------------
LE99F:   LDA L1007              ; Get serial data byte (LDP Status Byte)
         CMP #$0A               ; Was response Acknowledge ($0A)?
         BEQ LE9AD              ; Yes, so simply return
         LDA #$56               ; Command = CLEAR_ALL
         STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command to LDPlayer
LE9AD:   RTS                    ; Return


LE9AE:   LDA L1000
         EOR #$FF
         
AND #$20
         BEQ LE9AE
         RTS
LE9B8:   TXA
         PHA
         TAY
         LDA #$00
         STA BegaPic+
3
         TAX
         TYA
         BEQ LE9CD
LE9C3:   LDA #$06
         
CLC
         
ADC BegaPic+3
         STA BegaPic+
3
         DEY
         BNE LE9C3
LE9CD:   LDA BegaPic+
3
         TAY
LE9D0:   LDA LE9DF,Y
         STA L3969,X
         INY
         INX
         CPX #$06
         BNE LE9D0
         PLA
         TAX
         RTS
LE9DF:   BPL LE9E1
LE9E1:   .
BYTE $1A
         ASL DOSVEC+
1,X
         .
BYTE $23
         BPL LE9E7
LE9E7:   BPL LE9F4
         ORA L101E,X
         
BRK
         ORA L1916,X
         
AND (POKMSK,X)
         
BRK
         ORA L0F1E,X
         .
BYTE $1A
         ORA L131E,X
         ASL BUFADR+
1,X
         
BRK
         .
BYTE $1C
         
BRK
         .
BYTE $1A
         ASL DOSVEC+
1,X
         .
BYTE $23,$1C
         
BRK
         BPL LEA12
         ORA L1C1E,X
         
BRK
         ORA L1916,X
         
AND (ABUFPT,X)
         
BRK
         ORA L0F1E,X
         .
BYTE $1A
         ORA L131E,X
         ASL BUFADR+
1,X
         
BRK

;----------------------------------------------------
;               Send RS-232 Serial Data
;----------------------------------------------------
LEA1B:   SEI                    ; Enable Interrupts
         LDA L1007              ; Clear serial buffer
         LDA SerialByte         ; Get byte to send
         STA L1007              ; Save byte into serial buffer
LEA24:   LDA L1006              ; Check byte delivery
         BPL LEA24              ; Wait for byte to get sent out
LEA29:   LDA L1007              ; Get Serial Data byte
         STA LDPStatus          ; Save LDP Status Byte
         JSR LE3FE              ; Wait for Verticle Blanking
         LDA L1006
         BMI LEA29
         LDA DSTAT
         BNE LEA3D
         JSR LEA3E             
; Process LDP Status Byte
LEA3D:   RTS                    ; Return

;----------------------------------------------------
;              Process LDP Status Byte   
;----------------------------------------------------
LEA3E:   LDA LDPStatus          ; Get LDP Status byte
         CMP #$0A               ; Was response ACKNOWLEDGE ($0A)?
         BNE LEA45              ; No, so skip ahead
         RTS                    ; Command acknowledged, so leave
LEA45:   CMP #$01               ; Was response COMPLETION ($01)?
         BNE LEA4A              ; No, so skip ahead
         RTS                    ; Return
;----------------------------------------------------
;                  LDP Error Message   
;----------------------------------------------------
LEA4A:   LDX #$00               ;
LEA4C:   LDA LEA6D,X            ; Get Error Message Text
         STA L39A6,X            ; Print Text
         LDA #$7B               ;
         STA L29A6,X            ;
         INX                    ;
         CPX #$13               ;
         BNE LEA4C              ;
;----------------------------------------------------
;             Stop Software because of error   
;----------------------------------------------------
         LDA LDPStatus          ; Get LDP Response Byte
         CMP #$0B               ; $0B = Not Acknowledged
         BNE LEA62              ; Ignore
LEA62:   CMP #$05               ; $05 = Not Target
         BNE LEA66              ; Ignore this
LEA66:   CMP #$02               ; $02 = Error
         BNE LEA6A              ; Ignore this
LEA6A:   JMP LEA6A              ; Error - End here!


;----------------------------------------------------
;              Error Response Messge RS-232   
;----------------------------------------------------
LEA6D:   .BYTE $1C,$0F,$0D,$0F,$13,$20,$0F,$1C,$00,$0E,$0B,$1E
         .
BYTE $0B,$00,$0F,$1C,$1C,$19,$1C   ; "RECEIVER DATA ERROR"



;----------------------------------------------------
;      Diagnostic Test #11 - unknown
;----------------------------------------------------
LEA80:   LDA L1002              ; Get DIP bank 2
         AND #$40               ;
         BNE LEA8A              ;
         JMP LE099              ;
LEA8A:   LDA #$02
         STA ICAX1Z
         LDY #$FF               
; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDX #$00
LEA95:   LDA LF4A4,X
         STA L3A28,X
         INX
         CPX #$0B
         BNE LEA95
         LDA #$08
         STA L1003
         LDA #$56               
; Command = CLEAR_ALL
         STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command to LDPlayer
         CLI                    ; Disable Interrupts
LEAAD:   LDX #$01               ;
LEAAF:   TXA                    ;
         STA L3A66,X            ;
         INX                    ;
         CPX #$11               ;
         BNE LEAAF
         LDX #$7B
         LDA #$00
         STA SpritePic1
         LDA #$2A
         STA SpritePic2
         LDA #$2B
         STA ICDNOZ
         LDA #$E0
         STA ICCOMZ
         JSR LE44F
         LDA #$79               
;
         STA L3A87              ;
         LDX #$01               ;
         JMP LEB63              ;
;----------------------------------------------------
;        Check for Joystick/Button Input
;----------------------------------------------------
LEAD7:   LDA #$0D               ; 13 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
         LDA L1000              ; Get Joystick input
         EOR #$FF               ; Toggle all bits
         AND #$7C               ; Isolate Buttons and Left/Right
         BEQ LEAD7              ; No buttons pressed so loop back
         STA ICAX3Z             ; Save Joystick press
         LDA #$07               ; A = Dink Sound
         STA L1004              ; Write to Sound Chip
         ASL ICAX3Z             ; Check Left joystick press
         ASL ICAX3Z             ; Check Left joystick press
         BCS LEB0D              ; Left pressed so skip ahead
         ASL ICAX3Z             ; Check Right joystick press
         BCS LEB45              ; Right pressed so skip ahead
         ASL ICAX3Z             ; Check FIRE button
         BCS LEB63              ; Jump ahead and handle FIRE button press
         ASL ICAX3Z             ; Check BARRIER button
         BCC LEB03              ; Barrier not press, check TELEPORT
         JMP LEB9B              ; Jump ahead and handle BARRIER button press
LEB03:   ASL ICAX3Z             ; Check TELEPORT button
         BCC LEB0A              ; TELEPORT not press, so skip ahead
         JMP LEBAD              ; Jump ahead and handle TELEPORT button press
LEB0A:   JMP LEAD7              ; Loop back and monitor joystick input
;----------------------------------------------------
;               Joystick LEFT Pressed
;----------------------------------------------------
LEB0D:   LDA Sprite2_Char       ;
         BNE LEB42              ;
         JSR LEB82              ;
         LDA #$00               ;
         STA ICBLHZ
         LDA #$1D
         STA L3ACC
         LDA #$0F
         STA L3ACD
         LDA #$1E
         STA L3ACE
         
CLI
         LDA L3AC9
         SEC
         SBC #$01
         ASL A
         ASL A
         ASL A
         ASL A
         STA ICAX5Z
         LDA L3ACA
         SEC
         SBC #$01
         ORA ICAX5Z
         STA L1007
LEB3F:   
JMP LEB3F
LEB42:   
JMP LEAD7              ; Loop back and monitor joystick input
;----------------------------------------------------
;               Joystick RIGHT Pressed
;----------------------------------------------------
LEB45:   LDA Sprite2_Char       ;
         BEQ LEB60              ;
         AND #$02               ;
         BNE LEB58              ;
         TXA                    ;
         STA L3ACA              ;
         LDA #$00               ;
         STA Sprite2_Char       ;
         JMP LEAD7              ; Loop back and monitor joystick input
LEB58:   TXA                    ;
         STA L3AC9
         LDA #$01
         STA Sprite2_Char
LEB60:   
JMP LEAD7              ; Loop back and monitor joystick input
;----------------------------------------------------
;              FIRE Button Pressed
;----------------------------------------------------
LEB63:   LDA #$78               ;
         STA L3AC9              ;
         STA L3ACA              ;
         LDA #$03               ;
         STA Sprite2_Char       ;
         LDA #$00               ;
         STA L3ACC              ;
         STA L3ACD              ;
         STA L3ACE              ;
         JSR LEB82              ;
         STA ICBLHZ             ;
         JMP LEAD7              ; Loop back and monitor joystick input
LEB82:   LDY #$00               ;
LEB84:   LDA #$00               ;
         STA L3AD0,Y            ;
         STA L3B10,Y            ;
         STA L3B50,Y            ;
         STA L3B90,Y            ;
         STA L3BD0,Y            ;
         INY                    ;
         CPY #$0D
         BNE LEB84
         RTS
;----------------------------------------------------
;              BARRIER Button Pressed
;----------------------------------------------------
LEB9B:   CPX #$10               ;
         BCS LEBAA              ;
         LDA #$7B               ;
         STA L3A86,X            ;
         INX                    ;
         LDA #$79
         STA L3A86,X
LEBAA:   
JMP LEAD7              ; Loop back and monitor joystick input
;----------------------------------------------------
;              TELEPORT Button Pressed
;----------------------------------------------------
LEBAD:   CPX #$01               ;
         BEQ LEBBC              ;
         LDA #$7B               ;
         STA L3A86,X            ;
         DEX                    ;
         LDA #$79
         STA L3A86,X
LEBBC:   
JMP LEAD7              ; Loop back and monitor joystick input

;----------------------------------------------------
;               Diagnostic Test #2
;----------------------------------------------------
LEBBF:   LDA L1006              ;
         BPL LEBBF              ;
         LDA L1007              ;
         STA ICAX2Z             ;
         AND #$F0               ;
         LSR A
         LSR A
         LSR A
         LSR A
         
CLC
         
ADC #$01
         STA BFENHI
         LDA ICAX2Z
         
AND #$0F
         
CLC
         
ADC #$01
         STA LTEMP
         LDA ICBLHZ
         BNE LEBFC
         LDA BFENHI
         STA L3AD0
         LDA LTEMP
         STA L3AD1
         LDA #$D3
         STA ICCOMT
         LDA #$3A                 
         STA Sprite2_Prop
         JSR LEC68
LEBF6:   
INC ICBLHZ
LEBF8:   
CLI
         
JMP LEAD7              ; Loop back and monitor joystick input

LEBFC:   
CMP #$01
         BNE LEC18
         LDA BFENHI
         STA L3B10
         LDA LTEMP
         STA L3B11
         LDA #$13
         STA ICCOMT
         LDA #$3B
         STA Sprite2_Prop
         JSR LEC68
         
JMP LEBF6
LEC18:   
CMP #$02
         BNE LEC34
         LDA BFENHI
         STA L3B50
         LDA LTEMP
         STA L3B51
         LDA #$53
         STA ICCOMT
         LDA #$3B
         STA Sprite2_Prop
         JSR LEC68
         
JMP LEBF6
LEC34:   
CMP #$03
         BNE LEC50
         LDA BFENHI
         STA L3B90
         LDA LTEMP
         STA L3B91
         LDA #$93
         STA ICCOMT
         LDA #$3B
         STA Sprite2_Prop
         JSR LEC68
         
JMP LEBF6
LEC50:   LDA BFENHI
         STA L3BD0
         LDA LTEMP
         STA L3BD1
         LDA #$D3
         STA ICCOMT
         LDA #$3B
         STA Sprite2_Prop
         JSR LEC68
         
JMP LEBF8
LEC68:   TXA
         PHA
         TYA
         PHA
         LDX #$00
LEC6E:   LDA ICAX2Z
         
CMP LEC9F,X
         BEQ LEC7F
         INX
         CPX #$06
         BNE LEC6E
         PLA
         TAY
         PLA
         TAX
         RTS
LEC7F:   TXA
         ASL A
         TAX
         LDA LECA5,X
         STA BUFADR
         LDA LECA6,X
         STA BUFADR+
1
         LDY #$00
LEC8E:   LDA (BUFADR),Y
         
CMP #$FF
         BEQ LEC9A
         STA (ICCOMT),Y
         INY
         
JMP LEC8E
LEC9A:   PLA
         TAY
         PLA
         TAX
         RTS
LEC9F:   ASL A
         .
BYTE $0B
         ORA (Ptr1_HI,X)
         .
BYTE $04
         ORA L00B1
LECA6:   CPX LECB5
         LDA LC4EC,Y
         CPX LECCA
         .
BYTE $D2
         CPX L0D0B
         ORA FPTR2+
1,X
LECB5:   
CLC
        .
BYTE $0B
         ORA FPTR2+
1,X
         ORA L1719
         .
BYTE $1A
         .
WORD $0F16,$131E
         .
WORD $1819,$0FFF
         .
WORD $1C1C,$1C19
         .
WORD $1AFF,$111C
         .
WORD $0F00,$0E18
         .
WORD $18FF,$1E19
         .
WORD $1E00,$1C0B
         .
WORD $0F11,$FF1E
         .
WORD $FF01,$FF02
         .
WORD $FF03,$FF04
         .
WORD $FF05,$FF06
         .
WORD $FF07,$FF08
         .
WORD $FF09,$FF0A
         .
WORD $1918,$1F1E
         .
WORD $0F1D,$0D00
         .
WORD $0E19,$FF0F




;----------------------------------------------------
;     Diagnostic Test #8 - Sound Test (32 sounds)
;----------------------------------------------------
LECFD:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDA #$5E               ; LF45E = "SOUND TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF45E = "SOUND TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
         LDX #$00
LED0F:   LDA #$00               
; A = No Sound
         STA L1004              ; Write to Sound Chip
         JSR LE3FE              ; Wait for Verticle Blanking
         LDA LED8A,X            ; A = Sound Level 0-22
         STA L1004              ; Write to Sound Chip
         JSR LED51
         JSR LE3DE             
; Wait for 64 Verticle Blanking Pulses
         INX                    ; Go to next sound
         CPX #$16               ; 22 sounds
         BNE LED0F
         LDX #$00               
; Loop = 0
LED2A:   LDA #$00               ; A = No Sound
         STA L1004              ; Write to Sound Chip
         JSR LE3FE              ; Wait for Verticle Blanking
         LDA LEDA0,X            ; A = Sound Level 0-12
         STA L1004              ; Write to Sound Chip
         JSR LED51              ;
         JSR LE3DE              ; Wait for 64 Verticle Blanking Pulses
         JSR LE3DE              ; Wait for 64 Verticle Blanking Pulses
         INX                    ; Go to next sound
         CPX #$0B               ; Have we done 12 sounds?
         BNE LED2A              ; No, loop until all sounds played
         JSR LE52A              ; Print "END"
         LDA #$00               ; A = No Sound
         STA L1004              ; Write to Sound Chip
LED4E:   JMP LED4E              ; Wait here forever



;----------------------------------------------------
;               sound subroutine
;----------------------------------------------------
LED51:   STA Sprite1_Prop
         
INC Sprite1_Prop
         JSR LED7A
         JSR LED82
         LDA L1004
         
CMP Sprite1_Prop
         BEQ LED79
         JSR LE4F9             
; Diagnostic Test Failed, print "ERROR"
         LDA #$1C
         STA L3948
         LDA #$0F
         STA L3949
         LDA #$0B
         STA L394A
         LDA #$0E
         STA L394B
LED79:   RTS
LED7A:   LDA L1005
         
AND #$40
         BNE LED7A
         RTS
LED82:   LDA L1005
         
AND #$80
         BEQ LED82
         RTS

;----------------------------------------------------
;                 Diagnostic Data
;----------------------------------------------------
LED8A:   .BYTE $01,$02,$03,$04
         .
BYTE $05,$06,$07,$08
         .
BYTE $09,$0A,$0B,$16
         .
BYTE $17,$18,$19,$1A
         .
BYTE $1B,$1C,$1D,$1E
         .
BYTE $1F,$20
;----------------------------------------------------
;       Panel Switch Test data
;----------------------------------------------------
LEDA0:   .BYTE $0C,$0D,$0E,$0F
         .
BYTE $10,$11,$12,$13
         .
BYTE $14,$15,$00





;----------------------------------------------------
;   Diagnostic Test - Monitor Adjustments (16 tests)
;----------------------------------------------------
LEDAB:   LDA L1002              ; Get DIP bank 2
         AND #$40               ; Check Sw7,0=User Diagnostics,1=Factory Diagnostics
         BNE LEDB5              ; Factory Diagnostics so continue
         JMP LE099              ; User Diagnostics so leave
;----------------------------------------------------
;       Factory Diagnostics - Monitor Adjustments
;----------------------------------------------------
LEDB5:   LDA #$08               ;
         STA RTCLOK             ;
LEDB9:   LDA #$00               ;
         STA FactoryTestNo      ;
LEDBD:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDA FactoryTestNo      ;
         ASL A                  ;
         TAX                    ;
         LDA LEDED,X            ;
         STA ICPTHZ             ;
         LDA LEDEE,X            ;
         STA ICBLLZ             ;
         JMP (ICPTHZ)           ; Run Monitor Adjustment test
;----------------------------------------------------
;         Test complete, go to next test
;----------------------------------------------------
LEDD3:   JSR LEE13              ;
         LDA #$07               ; A = Dink Sound
         STA L1004              ; Write to Sound Chip
         LDA #$1F               ; 31 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
         INC FactoryTestNo      ; Go to the next test
         LDA #$12               ; Total of 18 tests
         CMP FactoryTestNo      ; Have we completed all 18 tests?
         BCS LEDBD
         
JMP LEDB9

;----------------------------------------------------
;      Monitor Adjustments Routines (16 tests)
;----------------------------------------------------
LEDED:   .WORD LEE3D     ; 1)  RED BARS
         .WORD LEE47     ; 2)  GREEN BARS
         .WORD LEE51     ; 3)  BLUE BARS
         .WORD LEE5B     ; 4)  WHITE SCREEN
         .WORD LEE78     ; 5)  BLUE BORDER
         .WORD LEE90     ; 6)  R G B BLOCKS
         .WORD LF027     ; 7)  CROSS HATCH
         .WORD LEEC5     ; 8)  CHARACTERS
         .WORD LEF6C     ; 9)  R G B COLOR
         .WORD LEF86     ; 10) R G B COLOR 1/2
         .WORD LF03F     ; 11) BLACK REFERENCE
         .WORD LF04E     ; 12) COLOR BAR
         .WORD LF07A     ; 13)
         .WORD LF07A     ; 14)
         .WORD LF07A     ; 15)
         .WORD LF07A     ; 16)
         .WORD LF07A     ; 17)
         .WORD LF07A     ; 18)
         .WORD LF07F


;----------------------------------------------------
;                       unknown
;----------------------------------------------------
LEE13:   LDA $1000              ; Get switch input
         EOR #$FF               ; Invert all bits
         AND #$10               ; Check for S3 Switch
         BEQ LEE33              ; Not pressed, so skip ahead
;----------------------------------------------------
;               Switch S3 pressed
;----------------------------------------------------
         LDA #$1F               ; 31 Blanking Pulses
         STA NumberBlanks       ; Save number of blanking pulses to wait for
         JSR LE3E2              ; Wait for number of Blanking pulses
         LDA RTCLOK             ;
         STA L1003              ;
         BNE LEE2F              ;
         LDA #$00               ;
         JMP LEE31              ;
LEE2F:   LDA #$08               ;
LEE31:   STA RTCLOK             ;
;----------------------------------------------------
;            Check for Switch S2 press
;----------------------------------------------------
LEE33:   LDA L1000              ; Get switch input
         EOR #$FF               ; Invert all bits
         AND #$20               ; Check for S2 Switch
         BEQ LEE13              ; Not pressed, so loop back
         RTS                    ; Return
;----------------------------------------------------
;       Monitor Adjustments Test #1 - RED BARS
;----------------------------------------------------
LEE3D:   LDX #$00               ; Color = RED (0)
         JSR LEFB1              ; Set color
         LDX #$08               ;
         JMP LEF71              ;
;----------------------------------------------------
;      Monitor Adjustments Test #2 - GREEN BARS
;----------------------------------------------------
LEE47:   LDX #$08               ; Color = GREEN (8)
         JSR LEFB1              ; Set color
         LDX #$08               ;
         JMP LEF71              ;
;----------------------------------------------------
;      Monitor Adjustments Test #3 - BLUE BARS
;----------------------------------------------------
LEE51:   LDX #$10               ; Color = BLUE (16)
         JSR LEFB1              ; Set color
         LDX #$08               ;
         JMP LEF71              ;
;----------------------------------------------------
;     Monitor Adjustments Test #4 - WHITE SCREEN
;----------------------------------------------------
LEE5B:   LDY #$FF               ; Call for erase screen
         JSR LE467              ; Reset Color RAM
         LDA #$20
         STA SpritePic1
         LDA #$38
         STA SpritePic2
         LDA #$3B
         STA ICDNOZ
         LDA #$E0
         STA ICCOMZ
         LDX #$7F
         JSR LE44F
         
JMP LEDD3
;----------------------------------------------------
;      Monitor Adjustments Test #5 - BLUE BORDER
;----------------------------------------------------
LEE78:   LDX #$00               ;
LEE7A:   LDA #$7B               ;
         STA L3820,X            ;
         STA L3BC0,X            ;
LEE82:   STA L3000,X            ;
         STA L33E0,X            ;
LEE88:   INX                    ;
         CPX #$20               ; 32?
         BNE LEE7A
         
JMP LEDD3
;----------------------------------------------------
;    Monitor Adjustments Test #6 - R G B BLOCKS
;----------------------------------------------------
LEE90:   JSR LE4B3              ; color?
         LDA #$00               ;
         STA SpritePic1         ;
         LDA #$30               ;
         STA SpritePic2         ;
         LDA #$31
         STA ICDNOZ
         LDA #$40
         STA ICCOMZ
         LDX #$79
         JSR LE44F
         LDA #$32
         STA ICDNOZ
         LDA #$A0
         STA ICCOMZ
         LDX #$7A
         JSR LE44F
         LDA #$34
         STA ICDNOZ
         LDA #$00
         STA ICCOMZ
         LDX #$7B
         JSR LE44F
         
JMP LEF9A
         JSR LE467             
; Reset Color RAM
         LDY #$00
         LDX #$00
LEECC:   LDA LEEEC,X
         STA L2800,X
         LDA LEF0C,X
         STA L2BE0,X
         LDA LEF2C,X
         STA L3800,X
         LDA LEF4C,X
         STA L3BE0,X
         INX
         CPX #$20
         BNE LEECC
         
JMP LEDD3


LEEEC:   ORA (LTEMP,X)
         PLA
         .
BYTE $37
         ORA (BufferOut,X)
         PLA
         .
BYTE $47
         ORA (Sprite2_Char,X)
         .
BYTE $80,$37
         ORA (BFENHI,X)
         .
BYTE $80,$47
         ORA (SerialByte,X)
         TYA
         .
BYTE $37
         ORA (LDPStatus,X)
         TYA
         .
BYTE $47
         
BRK
         
BRK
LEF06:   
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
LEF0C:   ORA (Buff1 ,X)
         PLA
         .
BYTE $67
         ORA (Buff2 ,X)
         PLA
         .
BYTE $77
         ORA (Buff3 ,X)
         .
BYTE $80,$67
         ORA (Sprite3_Char,X)
         .
BYTE $80,$77
         ORA (Sprite3a_Y,X)
         TYA
         .
BYTE $67
         ORA (Sprite3a_Y+
1,X)
         TYA
         .
BYTE $77
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
LEF2C:   ORA (ICBLLZ,X)
         PLA
         .
BYTE $97
         ORA (ICBLHZ,X)
         PLA
         .
BYTE $A7
         ORA (ICAX1Z,X)
         SEI
         .
BYTE $97
         ORA (ICAX2Z,X)
         SEI
         .
BYTE $A7
         ORA (ICAX3Z,X)
         DEY
         .
BYTE $97
         ORA (Sprite1_Char,X)
         DEY
         .
BYTE $A7
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
LEF4C:   ORA (ICAX5Z,X)
         PLA
         .
BYTE $C7
         ORA (ICAX6Z,X)
         PLA
         .
BYTE $D7
         ORA (STATUS,X)
         SEI
         .
BYTE $C7
         ORA (CHKSUM,X)
         SEI
         .
BYTE $D7
         ORA (SerialByte,X)
         DEY
         .
BYTE $C7
         ORA (LDPStatus,X)
         DEY
         .
BYTE $D7
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
         
BRK
LEF6C:   JSR LE4B3             
; color?
         LDX #$00               ;
;----------------------------------------------------
;             Draw bars - monitor test
;----------------------------------------------------
LEF71:   LDA #$00               ;
         STA APPMHI             ;
         LDA #$30               ;
         STA APPMHI+1           ;
         LDA #$34               ;
         STA POKMSK             ;
         JSR LEFF1              ;
         JSR LEFDB              ;
         JMP LEDD3              ;
         LDA #$00               ;
         STA APPMHI
         LDA #$30
         STA APPMHI+
1
         LDA #$34
         STA POKMSK
         LDX #$00
         JSR LEFF1
         JSR LEFDB
LEF9A:   LDA #$00
         STA SpritePic1
         LDA #$38
         STA SpritePic2
         LDA #$3A
         STA ICDNOZ
         LDX #$00               
;
         JSR LE43E              ; Cycle thru sprites?
         JSR LEFDB
         
JMP LEDD3


;----------------------------------------------------
;             Set color for color bars
;----------------------------------------------------
;           X = color (0,8,16)
;----------------------------------------------------
LEFB1:   LDY #$00               ; Loop = 0
LEFB3:   LDA LEFC3,X            ; Get correct color code from table
         STA L1828,Y            ; Save color code $1828-$1830
         STA L1810,Y            ; Save color code $1810-$1818
         INY                    ; Next color RAM location
         INX                    ; Next color code in table
         CPY #$08               ; All 8 color codes stored?
         BNE LEFB3              ; No, so continue until done
         RTS                    ; Return


;----------------------------------------------------
;               24 Color Codes
;----------------------------------------------------
LEFC3:   .BYTE $FF,$FE,$FD,$FC   ; RED
         .BYTE $FB,$FA,$F9,$F8

         .
BYTE $FF,$F7,$EF,$E7   ; GREEN
         .BYTE $DF,$D7,$CF,$C7

         .
BYTE $FF,$FF,$BF,$BF   ; BLUE
         .BYTE $7F,$7F,$3F,$3F


;----------------------------------------------------
;               color routine?
;----------------------------------------------------
LEFDB:   LDX #$00               ;
LEFDD:   LDA #$00               ;
         STA L2800,X            ;
         STA L2BE0,X
         STA L3800,X
         STA L3BE0,X
         INX
         CPX #$20
         BNE LEFDD
         RTS
LEFF1:   LDY #$00
LEFF3:   LDA LF017,X
LEFF6:   STA (APPMHI),Y
         INY
         BEQ LF003
         CPY #$80
         BNE LEFF6
         INX
         
JMP LEFF3
LF003:   INX
         
INC APPMHI+1
         LDA APPMHI+
1
         
CMP POKMSK
         BNE LEFF3
         RTS
LF00D:   LDA L1000
         EOR #$FF
         
AND #$20
         BEQ LF00D
         RTS

;----------------------------------------------------
;                  data
;----------------------------------------------------
LF017:   .BYTE $7F,$7C,$7D,$7A
         .
BYTE $7E,$79,$7B,$00
         .
BYTE $7F,$7D,$7E,$7B  ; 8=7F
         .BYTE $7C,$7A,$79,$00

;----------------------------------------------------
;    Monitor Adjustments Test #7 - CROSS HATCH
;----------------------------------------------------
LF027:   LDA #$38               ;
         STA SpritePic2         ;
         LDA #$20               ;
         STA SpritePic1         ;
         LDA #$3B               ;
         STA ICDNOZ             ;
         LDA #$E0
         STA ICCOMZ
         LDX #$77
         JSR LE44F
         
JMP LEDD3
         LDA #$08
         STA L1003
         LDA #$50               
; Command = INDEX_ON
         STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command to LDPlayer
         JMP LEDD3              ;
         LDA #$03               ;
         STA ICAX1Z             ;
;----------------------------------------------------
;   SEARCH to CROSS HATCH Screen (frame 43800)
;----------------------------------------------------
; Note: Sprite RAM is used to store serial data
;       because no sprites are used for this test
;----------------------------------------------------
         LDA #$56               ; Command = CLEAR_ALL
         STA BufferOut          ; Save command in BufferOut
         LDA #$43               ; Command = SEARCH
         STA Buff1              ; Save command in BufferOut
         LDA #$34               ; Command = "4"
         STA Buff2              ; Save command in BufferOut
         LDA #$33               ; Command = "3"
         STA Buff3              ; Save command in BufferOut
         LDA #$38               ; Command = "8"
         STA Sprite3_Char       ; Save command in BufferOut
         LDA #$30               ; Command = "0","0"
         STA Sprite3a_Char      ; Save command in BufferOut
         STA Buff6              ; Save command in BufferOut
         LDA #$40               ; Command = ENTER
         STA Buff7              ; Save command in BufferOut
         LDA #$FF               ; Command = Last Byte Marker
         STA Buff8              ; Save command in BufferOut
LF074:   JSR LF08A              ; Send BufferOut to LDPlayer
         JMP LEDD3              ;
;----------------------------------------------------
;      Send string of data bytes to LDPlayer
;----------------------------------------------------
LF07A:   INC Sprite3a_Char      ;
         JMP LF074              ;
         LDA #$40               ;
         STA Buff2              ;
         LDA #$FF               ;
         STA Buff3              ;
         JMP LF074              ;
;----------------------------------------------------
;  Send string of data bytes to LDPlayer (BufferOut)
;----------------------------------------------------
LF08A:   LDX #$00               ; Start at first byte
LF08C:   LDA BufferOut,X        ; Get serial data byte
         CMP #$FF               ; Is this the last byte?
         BNE LF093              ; No, so send this byte to the LDPlayer
         RTS                    ; Finished so return
LF093:   STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command to LDPlayer
         INX                    ; Go to next byte
         JMP LF08C              ; Loop back until all bytes sent




;----------------------------------------------------
;       Diagnostic Test #7 - Panel switch Test
;----------------------------------------------------
LF09C:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDA #$42               ; LF442 = "PANEL SW TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF442 = "PANEL SW TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
;----------------------------------------------------
;                  Print "TILT"
;----------------------------------------------------
         LDA #$1E               ; Char = "T"
         STA L3956              ; Print character
         LDA #$13               ; Char = "I"
         STA L3957              ; Print character
         LDA #$16               ; Char = "L"
         STA L3958              ; Print character
         LDA #$1E               ; Char = "T"
         STA L3959              ; Print character
;----------------------------------------------------
;            Read Joystick for diagnosis
;----------------------------------------------------
LF0C0:   LDA L1000              ; Get Joystick data
         EOR #$FF               ; Invert all bits
         STA CMCMD              ; Save joystick byte
         JSR LF11C              ; Get TILE switch status
         STA L2AB2              ; Print TILE switch status
         JSR LF11C              ; Get S1 switch status
         STA L29F2              ; Print S1 switch status
         JSR LF11C              ; Get S2 switch status
         STA L2A4F              ; Print S2 switch status
         JSR LF11C              ; Get S3 switch status
         STA L2A55              ; Print S3 switch status
         JSR LF11C              ; Get RIGHT switch status
         STA L2A5B              ; Print RIGHT switch status
         JSR LF11C              ; Get LEFT switch status
         STA L2A58              ; Print LEFT switch status
         JSR LF11C              ; Get UP switch status
         STA L2A52              ; Print UP switch status
         JSR LF11C              ; Get DOWN switch status
         STA L2954              ; Print DOWN switch status
         JSR LF0FD              ; Check P1 and P2 buttons
         JMP LF0C0              ; Loop continuously checking joystick

;----------------------------------------------------
;         Check Player1 and Player2 buttons
;----------------------------------------------------
LF0FD:   LDA L1001              ; Get button inputs
         EOR #$FF               ; Invert all bits
         AND #$30               ; Isolate P1 and P2 buttons
         LSR A                  ; Shift in bit
         LSR A                  ; Shift in bit
         LSR A                  ; Shift in bit
         LSR A                  ; Shift in bit
         STA CMCMD              ; Save input byte
         EOR #$FF               ; Invert all bits
         STA L1000              ; Save input byte
         JSR LF11C              ; Get PLAYER1 switch status
         STA L2AA9              ; Print PLAYER1 switch status
         JSR LF11C              ; Get PLAYER2 switch status
         STA L29E9              ; Print PLAYER2 switch status
         RTS                    ; Return

;----------------------------------------------------
;          Get graphic to show switch status
;----------------------------------------------------
LF11C:   LSR CMCMD              ; Shift switch bit in
         BCS LF123              ; Check if switch is pressed
         LDA #$78               ; Pressed graphic?
         RTS                    ; Return
LF123:   LDA #$7F               ; Released graphic?
         RTS                    ; Return




;----------------------------------------------------
;       Diagnostic Test #6 - DIP Switch Test
;----------------------------------------------------
LF126:   LDY #$FF               ; Do not check ZERO PAGE RAM
         JSR LF19C              ; Erase Screen
         LDA #$50               ; LF450 = "DIP SW TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF450 = "DIP SW TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
         JSR LF180              ; Print DIP labels on screen for diagnosis
;----------------------------------------------------
;            Display DIP bank 1 switches   
;----------------------------------------------------
LF139:   LDX #$00               ; Start with first switch
         LDA L1001              ; Get DIP bank 1
         EOR #$C0               ; Toggle coin inputs
LF140:   LSR A                  ; Check DIP switch
         JSR LF168              ; Print "0" or "1"
         INX                    ; Go to next switch
         CPX #$04               ; Have we checked all 4 DIPs?
         BNE LF140              ; No, so loop back and check all 4 switches
;----------------------------------------------------
;              Print some graphics? 
;----------------------------------------------------
         LDA #$76               ; Char = ?
         STA L39B0              ; Print character
         STA L39B1              ; Print character
         STA L39B2              ; Print character
         STA L39B3              ; Print character
;----------------------------------------------------
;            Display DIP bank 2 switches   
;----------------------------------------------------
         LDX #$00               ; Start with first switch
         LDA L1002              ; Get DIP bank 2
LF15C:   LSR A                  ; Check DIP switch
         JSR LF174              ; Print "0" or "1"
         INX                    ; Go to next switch
         CPX #$08               ; Have we checked all 8 DIPs?
         BNE LF15C              ; No, so loop back and check all 8 switches
         JMP LF139              ; Loop back and continuously update screen

;----------------------------------------------------
;        Print 0 or 1 depending on DIP status
;----------------------------------------------------
LF168:   PHA                    ; Save DIP value
         LDA #$01               ; Print "0"
         BCS LF16F              ; DIP clear so print to screen
         LDA #$02               ; Print "1"
LF16F:   STA L39AC,X            ; Print DIP status to screen row 1
         PLA                    ; Restore DIP value
         RTS                    ; Return

;----------------------------------------------------
;        Print 0 or 1 depending on DIP status     
;----------------------------------------------------
LF174:   PHA                    ; Save DIP value
         LDA #$01               ; Print "0"
         BCS LF17B              ; DIP clear so print to screen
         LDA #$02               ; Print "1"
LF17B:   STA L3A0C,X            ; Print DIP status to screen row 2
         PLA                    ; Restore DIP value
         RTS                    ; Return

;----------------------------------------------------
;      Print DIP labels on screen for diagnosis
;----------------------------------------------------
LF180:   LDX #$00               ; Screen location
         LDA #$02               ; Char = "1"
         STA L39AA,X            ; Print "1"
         LDA #$03               ; Char = "2"
         STA L3A0A,X            ; Print "2"
         LDY #$02               ; Label starts at "1"
LF18E:   TYA                    ; Char = switch number label
         STA L39CC,X            ; Print DIP bank 1 switch label
         STA L3A2C,X            ; Print DIP bank 2 switch label
         INY                    ; Next label
         INX                    ; Next spot
         CPX #$08               ; All 8 labels printed?
         BNE LF18E              ; Loop until all labels printed
         RTS                    ; Return




;----------------------------------------------------
;            Clear Video RAM 2000-3FFF
;----------------------------------------------------
;          Y = 0, Check ZERO PAGE RAM
;----------------------------------------------------
LF19C:   LDA #$00               ; Clear = $00
         TAX                    ; Loop = 0
LF19F:   STA L2000,X            ; Clear Video RAM locations
         STA L2100,X            ; Clear Video RAM locations
         STA L2200,X            ; Clear Video RAM locations
         STA L2300,X            ; Clear Video RAM locations
         STA L2400,X            ; Clear Video RAM locations
         STA L2500,X            ; Clear Video RAM locations
         STA L2600,X            ; Clear Video RAM locations
         STA L2700,X            ; Clear Video RAM locations
         STA L2800,X            ; Clear Video RAM locations
         STA L2900,X            ; Clear Video RAM locations
         STA L2A00,X            ; Clear Video RAM locations
         STA L2B00,X            ; Clear Video RAM locations
         STA L2C00,X            ; Clear Video RAM locations
         STA L2D00,X            ; Clear Video RAM locations
         STA L2E00,X            ; Clear Video RAM locations
         STA L2F00,X            ; Clear Video RAM locations
         STA L3100,X            ; Clear Video RAM locations
         STA L3200,X            ; Clear Video RAM locations
         STA L3300,X            ; Clear Video RAM locations
         STA L3400,X            ; Clear Video RAM locations
         STA L3500,X            ; Clear Video RAM locations
         STA L3600,X            ; Clear Video RAM locations
         STA L3700,X            ; Clear Video RAM locations
         STA L3800,X            ; Clear Video RAM locations
         STA L3900,X            ; Clear Video RAM locations
         STA L3A00,X            ; Clear Video RAM locations
         STA L3B00,X            ; Clear Video RAM locations
         STA L3C00,X            ; Clear Video RAM locations
         STA L3D00,X            ; Clear Video RAM locations
         STA L3E00,X            ; Clear Video RAM locations
         STA L3F00,X            ; Clear Video RAM locations
         INX                    ; Increment loop
         BNE LF19F              ; Loop until all locations cleared
         TYA                    ; Should check ZERO PAGE RAM?
         BEQ LF203              ; Yes, so go check ZERO PAGE RAM
         RTS                    ; Return
LF203:   JMP LE129              ; Perform ZERO PAGE RAM Test




;----------------------------------------------------
;       Diagnostic Test #9 - Line Test
;----------------------------------------------------
LF206:   LDY #$FF               ; Do not initialize RAM
         JSR LF19C              ; Erase Screen
         LDA #$04               ;
         STA ICAX1Z             ;
         LDA #$C0               ; LF4C0 = "LDP LINE TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF4C0 = "LDP LINE TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
LF21A:   LDA #$2E               ; LF52E = "PUSH BEAM SW TO START"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F5               ; LF52E = "PUSH BEAM SW TO START"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LF293              ; Print Message to screen
LF225:   JSR LE416              ; Wait until S1 Switch pressed (BEAM)
         LDA #$00               ; Char = SPACE
         STA L396F              ; Erase "OK"
         STA L3970              ; Erase "OK"
         LDA #$07               ; A = Special Sound
         STA L1004              ; Write to Sound Chip
         JSR LF287              ;
         LDA #$FF               ;
         STA DSTAT              ;
;----------------------------------------------------
;   Send CLEAR_ALL to check for LDPlayer response
;----------------------------------------------------
         LDA #$56               ; Command = CLEAR_ALL
         STA SerialByte         ; Save LDPlayer Command Byte
         JSR LEA1B              ; Send Command Byte to LDPlayer
         LDA LDPStatus          ; Get LDP Status byte
         CMP #$0A               ; Was response Acknowledge ($0A)?
         BNE LF25A              ; Not acknowledged so skip ahead
         LDA #$F8               ; LF4F8 = "SOCKET NOT PLUGED IN"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF4F8 = "SOCKET NOT PLUGED IN"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LF293              ; Print Message to screen
         JSR LE3DE              ; Wait for 64 Verticle Blanking Pulses
         JMP LF225              ; Loop back and recheck connection
;----------------------------------------------------
;              Test Passed, Play Sound
;----------------------------------------------------
LF25A:   LDX #$00               ; Reset UART
LF25C:   CLI                    ; Disable interrupts
         TXA                    ; X = byte
         STA L1007              ; Write to UART
LF261:   JMP LF261              ; Finished so end here





;----------------------------------------------------
;                unknown
;----------------------------------------------------
LF264:   PLA                    ; Restore Y Register
         TAY                    ; Move Y
         PLA                    ; Restore X Register
         TAX                    ; Move X
         PLA                    ; Restore A Register
         LDA L1007              ; Get serial data byte (LDP Status Byte)
         STA LDPStatus          ; Save LDP Status byte
         CPX LDPStatus          ;
         BEQ LF27B              ;
         JSR LE4F9              ; Diagnostic Test Failed, print "ERROR"
         JSR LE3DE              ; Wait for 64 Verticle Blanking Pulses
         JMP LF206              ;
LF27B:   INX                    ;
         BEQ LF281              ;
         JMP LF25C              ;
LF281:   JSR LE51A              ; Diagnostic Test Passed, print "OK"
         JMP LF21A              ;



;----------------------------------------------------
;               print ? to screen?
;----------------------------------------------------
LF287:   LDY #$00               ;
         TYA                    ;
LF28A:   STA L39C6,Y            ;
         INY                    ;
         CPY #$1A               ;
         BNE LF28A              ;
         RTS                    ; Return


;----------------------------------------------------
;          Print Message to Screen ($FF = EOL)
;----------------------------------------------------
LF293:   LDY #$00               ; Start at beginning of message
LF295:   LDA (DiagMessage_LO),Y ; Get character of message
         CMP #$FF               ; Is this the end of the message?
         BNE LF29C              ; No so continue
         RTS                    ; Done printing to leave
LF29C:   STA L39C6,Y            ; Print character
         INY                    ; Go to next character
         JMP LF295              ; Loop back and continue until done



;----------------------------------------------------
;      Diagnostic Test #11 - LaserDisc Test
;----------------------------------------------------
LF2A3:   LDY #$FF               ; Do not initialize RAM
         JSR LF19C              ; Erase Screen
         LDA #$08               ;
         STA L1003              ;
         LDA #$B2               ; LF4B2 = "DISC TEST"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF4B2 = "DISC TEST"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LE3D1              ; Print Diagnostic Test Name to Screen
;----------------------------------------------------
;                 Turn on INDEX
;----------------------------------------------------
         LDA #$50               ; Command = INDEX_ON
         STA SerialByte         ; Save command in BufferOut
         JSR LEA1B              ; Send RS-232 Serial Data
         LDA #$03
         STA ICAX1Z
         LDA #$39
         STA ZCHAIN+
1
         LDA #$EB
         STA ZCHAIN
LF2CB:   LDA #$2E               
; LF52E = "PUSH BEAM SW TO START"
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F5               ; LF52E = "PUSH BEAM SW TO START"
         STA DiagMessage_HI     ; Save Text Message address
         JSR LF293              ; Print Message to screen
         JSR LE416              ; Wait until S1 Switch pressed
         LDA #$00
         STA L398E
         STA L398F
         STA L3990
         LDA #$DC               
; LF4DC = ""
         STA DiagMessage_LO     ; Save Text Message address
         LDA #$F4               ; LF4DC = ""
         STA DiagMessage_HI     ; Save Text Message address
         JSR LF293              ; Print Message to screen
;----------------------------------------------------
;                buffer search?
;----------------------------------------------------
LF2EF:   LDA #$07               ;
         STA L1004              ;
         LDA #$44               ; Command = REPEAT ($44) 
         STA BegaPic+5          ; Save command in BufferOut
         LDA #$F5               ;
         STA Sprite1_Y          ;
         LDA #$00               ;
         STA BegaPic+4          ;
;----------------------------------------------------
;             Fill BufferOut for SEARCH
;----------------------------------------------------
LF300:   LDY #$00               ; Loop = 0
LF302:   LDA (BegaPic+5),Y      ; Get outgoing data
         STA Buff2 ,Y           ; Transfer to BufferOut
         INY                    ; Increment loop
         CPY #$05               ; Have all 5 digits been copied?
         BNE LF302              ; No, loop until all digits copied
;----------------------------------------------------
;                  Setup SEARCH command
;----------------------------------------------------
         LDA #$56               ; Command = CLEAR_ALL
         STA BufferOut          ; Save command in BufferOut
         LDA #$43               ; Command = SEARCH
         STA Buff1              ; Save command in BufferOut
         LDA #$40               ; Command = ENTER
         STA Buff7              ; Save command in BufferOut
LF318:   LDX #$00
LF31A:   
CLI
         LDA BufferOut,X
         STA L1007
LF320:   
JMP LF320


;----------------------------------------------------
;               Diagnostic Test #3
;----------------------------------------------------
LF323:   PLA
         PLA
         PLA
         PLA
         PLA
         PLA
         LDA L1007             
; Get serial data byte       
         STA LDPStatus          ; Save LDP Status byte
         CMP #$0A               ; Was response Acknowledge ($0A)?
         BNE LF33B
         INX
         CPX #$08
         BNE LF31A
         
CLI
LF338:   
JMP LF338
LF33B:   
CMP #$01
         BNE LF375
LF33F:   LDA L1002             
; Get DIP bank 2
         AND #$01
         BNE LF349
         JSR LE3DE             
; Wait for 64 Verticle Blanking Pulses
LF349:   LDA BegaPic+5
         
CLC
         
ADC #$05
         STA BegaPic+
5
         LDA Sprite1_Y
         
ADC #$00
         STA Sprite1_Y
         LDA #$F7
         
CMP Sprite1_Y
         BEQ LF35F
LF35C:   
JMP LF300
LF35F:   LDA #$1A
         
CMP BegaPic+5
         BNE LF35C
         LDA L1002             
; Get DIP bank 2
         AND #$02               ; Check Number of Bega's
         BNE LF36F              ; No, so print END
         JMP LF2EF
LF36F:   JSR LE52A             
; Print "END"
         JMP LF2CB              ; Return to beginning of test

LF375:   
CMP #$05
         BEQ LF37C
         
JMP LEA4A
LF37C:   LDA BegaPic+
4
         BNE LF385
         
INC BegaPic+4
         
JMP LF318
LF385:   
CMP #$01
         BNE LF391
         
INC BegaPic+4
         JSR LF3CD
         
JMP LF318
LF391:   
CMP #$02
         BNE LF3A0
         
INC BegaPic+4
         JSR LF3B2
         JSR LF3B2
         
JMP LF318
LF3A0:   LDA #$00
         STA BegaPic+
4
         JSR LF3B2
         JSR LF3E8
         LDY #$FF
         JSR LE4F9             
; Diagnostic Test Failed, print "ERROR"
         JMP LF33F
LF3B2:   TXA
         PHA
         LDX #$06
LF3B6:   
INC BufferOut,X
         LDA BufferOut,X
         
CMP #$3A
         BEQ LF3C1
LF3BE:   PLA
         TAX
         RTS
LF3C1:   LDA #$30
         STA BufferOut,X
         DEX
         CPX #$01
         BEQ LF3BE
         
JMP LF3B6
LF3CD:   TXA
         PHA
         LDX #$06
LF3D1:   
DEC BufferOut,X
         LDA BufferOut,X
         
CMP #$2F
         BEQ LF3DC
LF3D9:   PLA
         TXA
         RTS
LF3DC:   LDA #$39
         STA BufferOut,X
         DEX
         CPX #$01
         BEQ LF3D9
         
JMP LF3D1
LF3E8:   TXA
         PHA
         TYA
         PHA
         LDA ZCHAIN+
1
         
CMP #$34
         BCS LF40E
         LDY #$00
LF3F4:   LDA Buff2 ,Y
         
AND #$0F
         
CLC
         
ADC #$01
         STA (ZCHAIN),Y
         INY
         CPY #$05
         BNE LF3F4
         LDA ZCHAIN
         
CLC
         
ADC #$20
         STA ZCHAIN
         BCC LF40E
         
INC ZCHAIN+1
LF40E:   PLA                   
; Restore Y Register
         TAY                    ; Move Y
         PLA                    ; Restore X Register
         TAX                    ; Move X
         RTS                    ; Return



;----------------------------------------------------
;           Diagnostic Text Messages    ASC(x+54)
;----------------------------------------------------
;    In some cases only 14 characters can be printed
;----------------------------------------------------
LF413:   .BYTE $24,$0F,$1C,$19,$00,$1A,$0B,$11,$0F,$00,$0B,$1C,$0F,$0B  ;"ZERO PAGE AREA"       
         .BYTE $00,$1E,$0F,$1D,$1E  ; "TEST" (string too long)

LF426:   .
BYTE $1C,$19,$17,$00,$1C,$0F,$0B,$0E,$00,$1E,$0F,$1D,$1E,$00  ;"ROM READ TEST"

LF434:   .
BYTE $1C,$0B,$17,$00,$1E,$0F,$1D,$1E,$00,$00,$00,$00,$00,$00  ;"RAM TEST"               

LF442:   .
BYTE $1A,$0B,$18,$0F,$16,$00,$1D,$21,$00,$1E,$0F,$1D,$1E,$00  ;"PANEL SW TEST"

LF450:   .
BYTE $0E,$13,$1A,$00,$1D,$21,$00,$1E,$0F,$1D,$1E,$00,$00,$00  ;"DIP SW TEST"

LF45E:   .
BYTE $1D,$19,$1F,$18,$0E,$00,$1E,$0F,$1D,$1E,$00,$00,$00,$00  ;"SOUND TEST"

LF46C:   .
BYTE $17,$13,$22,$00,$1E,$0F,$1D,$1E,$00,$00,$00,$00,$00,$00  ;"MIX TEST"

LF47A:   .
BYTE $16,$0E,$1A,$00,$1E,$0F,$1D,$1E,$00,$00,$00,$00,$00,$00  ;"LDP TEST"

LF488:   .
BYTE $16,$0E,$1A,$00,$0D,$19,$16,$19,$1C,$00,$00,$00,$00,$00  ;"LDP COLOR

LF496:   .
BYTE $12,$0B,$1C,$0E,$00,$0D,$19,$16,$19,$1C,$00,$00,$00,$00  ;"HARD COLOR"

LF4A4:   .
BYTE $16,$0E,$1A,$00,$17,$19,$18,$13,$1E,$19,$1C,$00,$00,$00  ;"LDP MONITOR"

LF4B2:   .
BYTE $0E,$13,$1D,$0D,$00,$1E,$0F,$1D,$1E,$00,$00,$00,$00,$00  ;"DISC TEST"

LF4C0:   .
BYTE $16,$0E,$1A,$00,$16,$13,$18,$0F,$00,$1E,$0F,$1D,$1E,$00  ;"LDP LINE TEST"

LF4CE:   .
BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00  ;"          "
LF4DC:   .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00  ; (blank)
LF4EA:   .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF  ;

LF4F8:   .
BYTE $1D,$19,$0D,$15,$0F,$1E,$00,$18,$19,$1E,$00,$1A,$16,$1F  ;"SOCKET NOT PLUGED IN"
         .BYTE $11,$0F,$0E,$00,$13,$18,$FF

LF50D:   .
BYTE $1D,$1E,$0B,$1C,$1E,$00,$1A,$1F,$1D,$12,$00,$1D,$12,$19  ;"START PUSH SHOOT SW 1"
         .BYTE $19,$1E,$00,$1D,$21,$00,$02,$FF

LF523:   .
BYTE $0F,$22,$0F,$0D,$1F,$1E,$13,$18,$11,$00,$FF              ;"EXECUTING "

LF52E:   .
BYTE $1A,$1F,$1D,$12,$00,$0C,$0F,$0B,$17,$00,$1D,$21,$00,$1E  ;"PUSH BEAM SW TO START"
         .BYTE $19,$00,$1D,$1E,$0B,$1C,$1E,$FF




;----------------------------------------------------
;          Frame Data (UNUSED, repeat from $CDCE)
;----------------------------------------------------
LF544:   .BYTE $30,$35,$33,$36,$35    ; Frame = 05365
         .BYTE $30,$35,$31,$33,$30    ; Frame = 05130
         .BYTE $31,$32,$39,$33,$35    ; Frame = 12935
         .BYTE $31,$31,$32,$39,$38    ; Frame = 11298
         .BYTE $32,$30,$35,$39,$34    ; Frame = 20594
         .BYTE $32,$33,$30,$33,$34    ; Frame = 23034
         .BYTE $32,$35,$39,$35,$37    ; Frame = 25957
         .BYTE $32,$39,$30,$35,$36    ; Frame = 29056
         .BYTE $33,$32,$30,$35,$36    ; Frame = 32056
         .BYTE $33,$33,$33,$33,$32    ; Frame = 33332
         .BYTE $33,$39,$34,$32,$30    ; Frame = 39420
         .BYTE $34,$31,$39,$31,$37    ; Frame = 41917
         .BYTE $32,$32,$32,$31,$34    ; Frame = 22214
         .BYTE $31,$38,$33,$38,$30    ; Frame = 18380
         .BYTE $32,$32,$33,$37,$32    ; Frame = 22372
         .BYTE $32,$36,$32,$32,$37    ; Frame = 26227
         .BYTE $33,$39,$39,$30,$37    ; Frame = 39907
         .BYTE $34,$32,$31,$33,$34    ; Frame = 42134
         .BYTE $31,$35,$31,$38,$35    ; Frame = 15185
         .BYTE $34,$32,$34,$35,$34    ; Frame = 42454
         .BYTE $34,$33,$35,$34,$32    ; Frame = 43542
         .BYTE $30,$36,$37,$39,$38    ; Frame = 06798
         .BYTE $31,$33,$33,$38,$35    ; Frame = 13385
         .BYTE $31,$36,$33,$35,$38    ; Frame = 16358
         .BYTE $30,$38,$35,$39,$38    ; Frame = 08598
         .BYTE $32,$31,$33,$31,$34    ; Frame = 21314
         .BYTE $32,$33,$39,$33,$36    ; Frame = 23936
         .BYTE $32,$37,$32,$35,$36    ; Frame = 27256
         .BYTE $32,$39,$33,$35,$36    ; Frame = 29356
         .BYTE $33,$32,$33,$31,$36    ; Frame = 32316
         .BYTE $33,$35,$34,$34,$33    ; Frame = 35443
         .BYTE $33,$38,$33,$38,$30    ; Frame = 38380
         .BYTE $34,$31,$30,$31,$37    ; Frame = 41017
         .BYTE $30,$35,$38,$39,$38    ; Frame = 05898
         .BYTE $31,$30,$33,$39,$38    ; Frame = 10398
         .BYTE $31,$37,$32,$35,$38    ; Frame = 17258
         .BYTE $31,$39,$36,$39,$34    ; Frame = 19694
         .BYTE $32,$33,$39,$33,$36    ; Frame = 23936
         .BYTE $32,$34,$38,$33,$36    ; Frame = 24836
         .BYTE $33,$30,$32,$35,$36    ; Frame = 30256
         .BYTE $33,$34,$35,$34,$33    ; Frame = 34543
         .BYTE $34,$31,$30,$31,$37    ; Frame = 41017
         .BYTE $30,$39,$34,$39,$38    ; Frame = 09498
         .BYTE $30,$37,$36,$39,$38    ; Frame = 07698
         .BYTE $31,$38,$37,$39,$34    ; Frame = 18794
         .BYTE $34,$33,$39,$30,$31    ; Frame = 43901
         .BYTE $34,$36,$33,$34,$34    ; Frame = 46344

;----------------------------------------------------
;      REPEAT Frame Data (UNUSED, repeat from $CEB9)
;----------------------------------------------------
         .BYTE $30,$35,$35,$36,$37    ; Repeat = 05567
         .BYTE $30,$35,$33,$36,$33    ; Repeat = 05363
         .BYTE $31,$33,$31,$34,$34    ; Repeat = 13144
         .BYTE $31,$31,$35,$30,$39    ; Repeat = 11509
         .BYTE $32,$30,$39,$33,$38    ; Repeat = 20938
         .BYTE $32,$33,$31,$39,$38    ; Repeat = 23198
         .BYTE $32,$36,$32,$32,$36    ; Repeat = 26226
         .BYTE $32,$39,$32,$30,$35    ; Repeat = 29205
         .BYTE $33,$32,$33,$31,$34    ; Repeat = 32314
         .BYTE $33,$33,$35,$34,$31    ; Repeat = 33541
         .BYTE $33,$39,$37,$33,$35    ; Repeat = 39735
         .BYTE $34,$32,$31,$33,$33    ; Repeat = 42133
         .BYTE $32,$32,$33,$37,$31    ; Repeat = 22371
         .BYTE $31,$38,$36,$35,$36    ; Repeat = 18656
         .BYTE $32,$32,$36,$37,$31    ; Repeat = 22671
         .BYTE $32,$36,$37,$38,$38    ; Repeat = 26788
         .BYTE $34,$30,$31,$31,$36    ; Repeat = 40116
         .BYTE $34,$32,$33,$30,$30    ; Repeat = 42300
         .BYTE $31,$35,$34,$33,$37    ; Repeat = 15437
         .BYTE $34,$32,$39,$32,$31    ; Repeat = 42921
         .BYTE $34,$33,$37,$34,$39    ; Repeat = 43749
         .BYTE $30,$37,$36,$39,$37    ; Repeat = 07697
         .BYTE $31,$34,$31,$33,$35    ; Repeat = 14135
         .BYTE $31,$37,$31,$30,$37    ; Repeat = 17107
         .BYTE $30,$39,$33,$34,$37    ; Repeat = 09347
         .BYTE $32,$32,$30,$36,$33    ; Repeat = 22063
         .BYTE $32,$34,$36,$38,$35    ; Repeat = 24685
         .BYTE $32,$38,$30,$30,$35    ; Repeat = 28005
         .BYTE $33,$30,$31,$30,$35    ; Repeat = 30105
         .BYTE $33,$33,$30,$36,$35    ; Repeat = 33065
         .BYTE $33,$36,$31,$39,$32    ; Repeat = 36192
         .BYTE $33,$39,$31,$32,$39    ; Repeat = 39129
         .BYTE $34,$31,$37,$36,$36    ; Repeat = 41766
         .BYTE $30,$36,$36,$34,$37    ; Repeat = 06647
         .BYTE $31,$31,$31,$34,$37    ; Repeat = 11147
         .BYTE $31,$38,$30,$30,$37    ; Repeat = 18007
         .BYTE $32,$30,$34,$34,$33    ; Repeat = 20443
         .BYTE $32,$34,$36,$38,$35    ; Repeat = 24685
         .BYTE $32,$35,$35,$38,$35    ; Repeat = 25585
         .BYTE $33,$31,$30,$30,$35    ; Repeat = 31005
         .BYTE $33,$35,$32,$39,$32    ; Repeat = 35292
         .BYTE $34,$31,$37,$36,$36    ; Repeat = 41766
         .BYTE $31,$30,$32,$34,$37    ; Repeat = 10247
         .BYTE $30,$38,$34,$34,$37    ; Repeat = 08447
         .BYTE $31,$39,$35,$34,$33    ; Repeat = 19543
         .BYTE $34,$36,$33,$34,$33    ; Repeat = 46343
         .BYTE $34,$36,$37,$33,$35    ; Repeat = 46735
         .BYTE $30,$30,$30,$30,$31    ; Repeat = 00001



;----------------------------------------------------
;                   Unused ROM
;----------------------------------------------------
LF71F:   .BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
         .
BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF



;----------------------------------------------------
;              ROM Checksums
;----------------------------------------------------
LFFEE:   .WORD $9D3A,$573A,$9BB9,$DA46
         .
WORD $4D7B,$0000



;----------------------------------------------------
;                Interrupt Vectors
;----------------------------------------------------
LFFFA:   .WORD LE000        ; NMI_VECTOR     
LFFFC:   .WORD LE003        ; RESET_VECTOR   
LFFFE:   .WORD LE006        ; IRQ_VECTOR     



         .
END




;----------------------------------------------------
;               Assembler Definitions
;----------------------------------------------------
ICHID    = $0000
ICDNO    = $0001
ICCOM    = $0002
ICSTA    = $0003
ICBAL    = $0004
ICBAH    = $0005
ICPTL    = $0006
ICPTH    = $0007
ICBLL    = $0008
ICBLH    = $0009
ICAX1    = $000A
ICAX2    = $000B
ICAX3    = $000C
ICAX4    = $000D
ICAX5    = $000E
ICAX6    = $000F
;
; DISPLAY LIST EQUATES
;
ADLI     = $0080
AVB      = $0040
ALMS     = $0040
AVSCR    = $0020
AHSCR    = $0010
AJMP     = $0001
AEMPTY1  = $0000
AEMPTY2  = $0010
AEMPTY3  = $0020
AEMPTY4  = $0030
AEMPTY5  = $0040
AEMPTY6  = $0050
AEMPTY7  = $0060
AEMPTY8  = $0070
;
; OS VARIABLES FOR XL/XE
L0000    = $0000
Ptr1_LO  = $0001
Ptr1_HI  = $0002
Ptr2_LO  = $0003
Ptr2_HI  = $0004
TRAMSZ   = $0006
CMCMD    = $0007
WARMST   = $0008
BOOT     = $0009
DOSVEC   = $000A
DOSINI   = $000C
APPMHI   = $000E
POKMSK   = $0010
Sprite1_Prop   = $0011
RTCLOK   = $0012
BUFADR   = $0015
ICCOMT   = $0017
Sprite2_Prop   = $0018
DiagMessage_HI   = $001A
ABUFPT   = $001C
Sprite3_Prop = $001F
SpritePic2   = $0020
ICDNOZ   = $0021
ICCOMZ   = $0022
FactoryTestNo  = $0023
DiagTestNo     = $0024
ICBAHZ   = $0025
Sprite4_Prop   = $0026
ICPTHZ   = $27
ICBLLZ   = $0028
ICBLHZ   = $0029
ICAX1Z   = $002A
ICAX2Z   = $002B
ICAX3Z   = $002C
Sprite1_Char   = $002D
ICAX5Z   = $002E
ICAX6Z   = $002F
STATUS   = $0030
CHKSUM   = $0031
SerialByte   = $0032
LDPStatus   = $0033
Sprite2_Char   = $0034
BFENHI   = $0035
LTEMP:   = $0036
BufferOut = $0037
Buff1    = $0038
Buff2    = $0039
Buff3    = $003A
Sprite3_Char   = $003B
Sprite3a_Char  = $003C
Buff6    = $003D
Buff7    = $003E
Buff8    = $003F
FREQ     = $0040
SOUNDR   = $0041
Sprite4_Char   = $0042
BegaPic        = $43
Sprite1_Y      = $0049
ZCHAIN   = $004A
DSTAT    = $004C
NumberBlanks   = $004D
DRKMSK   = $004E
COLRSH   = $004F
Sprite2_Y      = $0050
HOLD1    = $0051
LMARG:N   = $0052
RMARGN   = $0053
ROWCRS   = $0054
COLCRS   = $0055
Sprite3_Y      = $0057
Sprite3a_Y     = $0058
OLDROW   = $005A
OLDCOL   = $005B
OLDCHR   = $005D
Sprite4_Y      = $005E
BegaYPos1L     = $005F
BegaYPos1R     = $0060
BegaYPos2L     = $0062
BegaYPos2R     = $0063
BegaYPos3L     = $0064
Sprite1_X      = $0065
MLTTMP   = $0066
SAVADR   = $0068
RAMTOP   = $006A
BUFCNT   = $006B
Sprite2_X   = $006C
BITMSK   = $006E
SHFAMT   = $006F
ROWAC    = $0070
COLAC    = $0072
Sprite3_X   = $0073
Sprite3a_X  = $0074
DELTAR   = $0076
DELTAC   = $0077
KEYDEF   = $0079
BegaXPos1L = $007B
BegaXPos1R = $007C
BegaXPos2L = $007D
BegaXPos2R = $007E
BegaXPos3L = $007F
BegaXPos3R = $0080
VNTP      = $0082
MasterReg = $0083
VNTD      = $0084
Lunas_swap = $0086
STMTAB   = $0088
STMCUR   = $008A
STARP    = $008C
RUNSTK   = $008E
TOPSTK   = $0090
MEOLFLG  = $0092
POKADR   = $0095
L0097    = $97
DATAD    = $00B6
DATALN   = $00B7
STOPLN   = $00BA
SAVCUR   = $00BE
IOCMD    = $00C0
IODVC    = $00C1
PROMPT   = $00C2
ERRSAVE  = $00C3
COLOUR   = $00C8
PTABW    = $00C9
LOADF:LG  = $00CA
RandSeed      = $00D4
FRE      = $00DA
FR1      = $00E0
FR2      = $00E6
FRX      = $00EC
EEXP     = $00ED
NSIGN    = $00EE
ESIGN    = $00EF
FCHRFLG  = $00F0
DIGRT    = $00F1
CIX      = $00F2
INBUFF   = $00F3
ZTEMP1   = $00F5
ZTEMP4   = $00F7
ZTEMP3   = $00F9
Vector1_LO  = $00FA
Vector1_HI  = $00FB
Vector2_LO  = $00FC
Vector2_HI  = $00FD
Vector3_LO  = $00FE
Vector3_HI  = $00FF
;
; PAGE 2
;
VDSLST   = $0200
VPRCED   = $0202
VINTER   = $0204
VBREAK   = $0206
VKEYBD   = $0208
SysTimer   = $020A
VSEROR   = $020C
Random   = $020E
VTIMR1      = $0210
VTIMR2      = $0212
PrintDelay  = $0213
CoinFlag    = $0214
VIMIRQ      = $0216
CDTMV1      = $0218
Credits     = $0219
CoinCount   = $021A
CDTMV3      = $021C
NumPlayers  = $021E
CDTMV5_swap = $021F
CDTMV5      = $0220
CDTMV5+
1    = $0221
Level       = $0222
VVBLKD      = $0224
CDTMA1      = $0226
CDTMA2      = $0228
CDTMF3      = $022A
FlashTime   = $022B
CDTMF4      = $022C
Score       = $022D
Score1      = $022E
Score2      = $022F
P2Score     = $0230
P2Score1    = $0231
P2Score2    = $0232
HiScore0    = $0233
HiScore1    = $0234
HiScore2    = $0235
HiScore3    = $0236
VPIRQ       = $0238
CDEVIC   = $023A
CCOMND   = $023B
CAUX1    = $023C
CAUX2    = $023D
TMPSIO   = $023E
ERRFLG   = $023F
DFLAGS   = $0240
DBSECT   = $0241
BOOTAD   = $0242
COLDST   = $0244
RECLEN   = $0245
DSKTIM   = $0246
PDVMSK   = $0247
SHPDVS   = $0248
PDMSK    = $0249
RELADR   = $024A
PPTMPA   = $024C
PPTMPX   = $024D
CHSALT   = $026B
Bonus    = $026C
Bonus+
1  = $026D
Bonus+
2  = $026E
DemoMove   = $026F
DemoPointer   = $0270
PADDL1     = $0271
DemoTime   = $0272
PADDL3     = $0273
PADDL4     = $0274
PADDL5     = $0275
PADDL6     = $0276
Serial7    = $0277
STICK0     = $0278
SearchStatus   = $0279
ErrorHEX   = $027A
ErrorNAK   = $027B
LDPError   = $027C
SEARCHBuf0 = $027D
PTRIG2   = $027E
PTRIG3   = $027F
PTRIG4   = $0280
PTRIG5   = $0281
PTRIG6   = $0282
PTRIG7   = $0283
REPEATBuf0   = $0284
REPEATBuf1   = $0285
REPEATBuf2   = $0286
STRIG3   = $0287
HIBYTE   = $0288
WMODE    = $0289
BLIM     = $028A
IMASK    = $028B
JVECK    = $028C
NEWADR   = $028E
TXTROW   = $0290
TXTCOL   = $0291
TINDEX   = $0293
TXTMSC   = $0294
TXTOLD   = $0296
CRETRY   = $029C
HOLD3    = $029D
SUBTimer   = $029E
SUBTimer+
1 = $029F
DMASK    = $02A0
TMPLBT   = $02A1
ESCFLG   = $02A2
TABMAP   = $02A3
LOGMA:P   = $02B2
INVFLG   = $02B6
FILFLG   = $02B7
TMPROW   = $02B8
TMPCOL   = $02B9
SCRFLG   = $02BB
HOLD4    = $02BC
DRETRY   = $02BD
SHFLOC   = $02BE
BOTSCR   = $02BF
PCOLR0   = $02C0
PCOLR1   = $02C1
PCOLR2   = $02C2
PCOLR3   = $02C3
COLOR0   = $02C4
COLOR1   = $02C5
COLOR2   = $02C6
COLOR3   = $02C7
COLOR4   = $02C8
RUNADR   = $02C9
HIUSED   = $02CB
ZHIUSE   = $02CD
GBYTEA   = $02CF
LOADA:D   = $02D1
ZLOADA   = $02D3
DSCTLN   = $02D5
ACMISR   = $02D7
KRPDER   = $02D9
KEYREP   = $02DA
NOCLIK   = $02DB
HELPFG   = $02DC
DMASAV   = $02DD
PBPNT    = $02DE
PBUFSZ   = $02DF
RUNAD    = $02E0
INITAD   = $02E2
RAMSIZ   = $02E4
MEMTOP   = $02E5
MEMLO    = $02E7
HNDLOD   = $02E9
DVSTAT   = $02EA
CBAUDL   = $02EE
CBAUDH   = $02EF
CRSINH   = $02F0
KEYDEL   = $02F1
CH1      = $02F2
CHACT    = $02F3
CHBAS    = $02F4
NEWROW   = $02F5
NEWCOL   = $02F6
ROWINC   = $02F8
COLINC   = $02F9
CHAR     = $02FA
ATACHR   = $02FB
CH       = $02FC
FILDAT   = $02FD
DSPFLG   = $02FE
SSFLAG   = $02FF
;
; PAGE 3
;
DDEVIC   = $0300
DUNIT    = $0301
DCOMND   = $0302
DSTATS   = $0303
DBUFLO   = $0304
DBUFHI   = $0305
DTIMLO   = $0306
DUNUSE   = $0307
DBYTLO   = $0308
DBYTHI   = $0309
DAUX1    = $030A
DAUX2    = $030B
TIMER1   = $030C
ADDCOR   = $030E
CASFLG   = $030F
TIMER2   = $0310
TEMP1    = $0312
LaserXPos    = $0314
TEMP3    = $0315
SAVIO    = $0316
TIMFLG   = $0317
STACKP   = $0318
TSTAT    = $0319
HATABS   = $031A
XmitTimeoutLo = $0332
XmitTimeoutHi = $0333
PUPBT1   = $033D
PUPBT2   = $033E
PUPBT3   = $033F
IOCB0    = $0340
IOCB1    = $0350
IOCB2    = $0360
IOCB3    = $0370
IOCB4    = $0380
IOCB5    = $0390
IOCB6    = $03A0
IOCB7    = $03B0
PRNBUF   = $03C0
SUPERF   = $03E8
CKEY     = $03E9
CASSBT   = $03EA
CARTCK   = $03EB
DERRF    = $03EC
ACMVAR   = $03ED
BASICF   = $03F8
MINTLK   = $03F9
GINTLK   = $03FA
CHLINK   = $03FB
CASBUF   = $03FD

 

HOME  

  ROMHACK 2009