 |
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
|