Source code of "To be slender"

; To Be Slender
; for HispaMSX 4KB Programming Contest
; (C) GW's-Workshop 2000

;BIOS SUB ROUTINES
BREAKX  EQU 000B7h MSX-BIOS call entry.
CLS  EQU 000C3h
ERAFNK  EQU 000CCh
WRTPSG  EQU 00093h
INIT32 EQU 0006Fh
LDIRVM  EQU 0005Ch
GTSTCK  EQU 000D5h
GTTRIG  EQU 000D8h
BEEP  EQU 000C0h
;CONSTANTS
HTIMI  EQU 0FD9Fh Timer interrupt hook.
INTID  EQU 0002Bh ID byte to identfy international MSX.
JPCODE  EQU 0C3h
SPPAT  EQU 03800h
VDP1  EQU 0F3E0h
VDPWRT  EQU 00007h
;ENVIRONMENTS
TONEV  EQU 10
TIMI1  EQU 1   ;50Hz=1 / 60Hz= 2 Adjusting timer for each interruption environment.
TIMI2  EQU 5   ;50Hz=5 / 60Hz= 6
TIMI3  EQU 7   ;50Hz=7 / 60Hz= 8
ORG 0C000h
;INITIALIZE
START: XOR A
LD E,0E7h
CALL WRTPSG
LD A,1
LD E,11
CALL WRTPSG
LD A,6
LD E,16
CALL WRTPSG
LD A,7
LD E,170
CALL WRTPSG
LD A,12
LD E,8
CALL WRTPSG
LD A,11
LD E,0
CALL WRTPSG
LD A,10
CALL WRTPSG
LD A,5
CALL WRTPSG
XOR A
LD D,A
PSG initialization.
FINAL: LD E,A
CALL RND
AND 31
LD HL,RSONG
ADD HL,DE
LD (HL),A
LD A,E
INC A
AND 63
JR NZ,FINAL
LD (REC1),A
LD (REC1+1),A
LD (REC2),A
LD (PAT),A
LD (TIME),A
LD (LOOPF),A
LD (LOOPC),A
LD (LOOPR),A
LD (SPRITE+2),A
LD (BGC),A
LD (GOF),A
LD A,255
LD (CHK4),A
LD (CHK3),A
LD (CHK2),A
LD (CHK1),A
LD A,162
LD (SPRITE+21),A
Game parameter initialization.
; ENVIRONMENT SETUP
CALL INIT32
CALL ERAFNK
LD HL,VDPWRT
LD C,(HL)
INC C
LD HL,VDP1
LD A,(HL)
OR 3
DI 
OUT (C),A
LD A,129
OUT (C),A
EI
LD HL,CHR
LD DE,SPPAT
LD BC,1536
CALL LDIRVM
Set screen mode and sprite pattern.
;TIMER INTERRUPT SET UP
DI
LD HL,HTIMI
LD DE,HKSAVE
LD BC,5
LDIR
LD A,JPCODE
LD (HTIMI),A
LD HL,INTR
LD (HTIMI+1),HL
EI
Start user timer interruption.
MAIN:  LD A,(CHECK)
CP 255
JR Z,M2
XOR A
CALL GTSTCK
LD B,A
PUSH BC
LD A,1
CALL GTSTCK
POP BC
OR B
LD IX,SPRITE
CP 1
CALL Z,UP
CP 3
CALL Z,RIGHT
CP 5
CALL Z,DOWN
CP 7
CALL Z,LEFT
Main loop only check which key a player pushes.
M2:  LD HL,SPRITE
LD DE,SPATR
LD BC,24
CALL LDIRVM
DI
CALL BREAKX
JP C,XQUIT
EI
LD A,(GOF)
AND A
JR Z,MAIN
JP OVER
UP:  LD B,8
LD C,0
JR ACT
RIGHT:  LD B,16
LD C,1
JR ACT
DOWN:  LD B,12
LD C,2
JR ACT
LEFT:  LD B,20
LD C,3
ACT: LD A,(IX+2)
OR B
LD (IX+2),A
LD A,(CHECK)
CP 1
CALL NZ,MISS
LD A,255
LD (CHECK),A
LD A,(CHK3)
LD (CHK4),A
LD A,(CHK2)
LD (CHK3),A
LD A,(CHK1)
LD (CHK2),A
LD A,C
LD (CHK1),A
LD A,(CHK2)
CP C
JR NZ,ACTE
CALL MISS
LD A,(CHK4)
CP C
JR NZ,ACTE
CALL MISS
Judgement.
ACTE:  XOR A
RET
; RETURN TO BASIC PROMPT
INTOFF: DI
LD HL,HKSAVE
LD DE,HTIMI
LD BC,5
LDIR
EI
RET
Stop timer interruption.
OVER:  CALL INTOFF
LD IX,SPRITE
LD A,(IX+2)
AND 224
OR 24
LD (IX+2),A
LD HL,SPRITE
LD DE,SPATR
LD BC,24
CALL LDIRVM
CALL BEEP
Game over.
OVERL:  DI
CALL BREAKX
JR C,QUIT
EI
XOR A
CALL GTTRIG
AND A
JP Z,OVERL
JP START
Replay game.
XQUIT: CALL INTOFF
CALL BEEP
QUIT:  CALL INIT32
RET
MISS: LD A,(IX+21)
DEC A
DEC A
LD (IX+21),A
CP 62
RET NC
LD A,255
LD (GOF),A
RET
;TIMER INTERRUPT ROUTINE
INTR:  PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH IX
PUSH IY
LD A,(TIME)
AND A
CALL Z,INT0
Routine called by timer interruption.
T1:  CP TIMI1
CALL Z,INT2
T2:  CP TIMI2
CALL Z,INT3
INC A
T3:  CP TIMI3
JR NZ,INTE
XOR A
INTE: LD (TIME),A
POP IY
POP IX
POP HL
POP DE
POP BC
POP AF
CALL HKSAVE
RET
INT0:  PUSH AF
LD A,(REC2)
AND A
JR NZ,INT01
LD HL,(REC1)
INC HL
LD (REC1),HL
LD DE,SONG
ADD HL,DE
LD A,(HL)
LD D,0
LD E,A
LD HL,DRUM
ADD HL,DE
LD A,(HL)
LD (PAT),A
INT01:  LD A,(PAT)
AND 3
AND A
JR Z,INT04
PUSH AF
LD IX,SPRITE
LD A,(CHECK)
CP 1
CALL Z,MISS
LD A,(IX+2)
AND 224
LD (IX+2),A
POP AF
CP 1
JR NZ,INT011
XOR A
LD (CHECK),A
JR INT04
INT011: CP 2
JR NZ,INT04
LD A,1
LD (CHECK),A
INT04:  POP AF
RET
INT2:  PUSH AF
LD IX,SPRITE
LD A,(LOOPF)
AND A
JR NZ,INT205
LD A,(LOOPC)
RL A
RL A
LD B,A
LD A,255
SUB B
LD E,A
LD A,4
CALL WRTPSG
LD A,10
LD E,TONEV
CALL WRTPSG
LD A,(IX+21)
INC A
CP 162
JR C,INT201
LD A,162
INT201:  LD (IX+21),A
JR INT20E
INT205:  LD A,(BGC)
PUSH AF
LD E,A
LD D,0
LD HL,BGTRK
ADD HL,DE
POP AF
INC A
AND 15
LD (BGC),A
LD A,(HL)
AND A
JR NZ,INT206
LD A,10
LD E,0
CALL WRTPSG
JR INT20E
INT206:  LD E,A
LD HL,BGM
ADD HL,DE
LD A,(HL)
LD E,A
LD A,4
CALL WRTPSG
LD A,10
LD E,TONEV
CALL WRTPSG
INT20E:  LD A,8
LD E,0
CALL WRTPSG
LD A,9
LD E,0
CALL WRTPSG
LD A,(PAT)
AND 3
CP 1
JR NZ,INT21
LD A,8
LD E,16
CALL WRTPSG
LD A,(CHECK)
CP 255
JR Z,INT22
LD A,(IX+2)
OR 4
LD (IX+2),A
JR INT22
INT21:  CP 2
JR NZ,INT22
LD A,9
LD E,16
CALL WRTPSG
INT22:  LD A,13
LD E,0
CALL WRTPSG
LD A,(PAT)
RR A
RR A
LD (PAT),A
LD A,(REC2)
INC A
AND 3
LD (REC2),A
POP AF
RET
INT3:  PUSH AF
LD IX,LOOPF
LD A,(IX)
AND A
JR NZ,INT31
LD A,(IX+1)
INC A
AND 31
JR NZ,INT3E
LD A,1
LD (IX),A
XOR A
INT30:  JR INT3E
INT31:  LD A,(IX+1)
INC A
JR NZ,INT3E
LD A,(IX+2)
INC A
CP 6
JR NZ,INT32
LD A,255
LD (GOF),A
JR INT3E
INT32:  LD (IX+2),A
LD IY,SPRITE
LD A,(IY+2)
ADD A,32
LD (IY+2),A
XOR A
LD (IX),A 
INT3E:  LD (IX+1),A
POP AF
RET
; RANDOMIZE
RND:  PUSH BC
LD A,(RNDWK)
LD B,A
ADD A,A
ADD A,A
ADD A,B
INC A
LD (RNDWK),A
POP BC
RET
Subroutine to make pseudorandom numbers.
;DATA AREA
RNDWK:  DEFB 0
SPRITE: DEFB 90,112,0,15
DEFB 50,96,124,10
DEFB 50,128,156,10
DEFB 130,62,28,8
DEFB 130,162,60,4
DEFB 130,162,92,10
Sprite attribute table.
SONG: DEFB 0
DEFB 1, 1, 1, 1, 1, 1, 1, 1
DEFB 1, 2, 1, 2, 1, 2, 1, 2
DEFB 1, 2, 1, 2, 1, 2, 1, 2
DEFB 1, 2, 1, 2, 1, 2, 1, 2
DEFB 1, 2, 1, 2, 1, 2, 1, 2
DEFB 1, 2, 3, 2, 1, 2, 3, 2
DEFB 1, 2, 3, 2, 1, 2, 3, 4
DEFB 1, 2, 3, 2, 1, 2, 3, 2
DEFB 1, 2, 3, 2, 1, 2, 3, 4
DEFB 1, 1, 1, 5, 1, 1, 1, 5
DEFB 6, 6, 6, 7, 6, 6, 6, 7
DEFB 6, 6, 6, 7, 6, 6, 6, 7
DEFB 6, 6, 6, 7, 6, 6, 6, 7
DEFB 6, 6, 6, 7, 6, 6, 6, 8
DEFB 6, 9, 6, 6, 6, 9, 6, 8
DEFB 6, 9, 6, 6, 6, 9, 9, 1
DEFB 6, 9, 6, 6, 6, 9, 6, 8
DEFB 6, 9, 6, 6, 6, 9, 2, 0
DEFB 10,10,10,10,10,10,10,10
DEFB 10, 4,10, 4,10, 4, 6,12
DEFB 10, 4,10, 4,10, 4, 6,12
DEFB 10,13,10, 4,10,13, 6, 8
DEFB 10,13,10, 4,10,13, 6, 8
DEFB 10,13,10, 4,10,13, 6, 8
DEFB 10,13,10, 4,10,13, 6, 8
DEFB 14,15,14,15,14,15,14,15
DEFB 16,16,16,16,16, 8, 2, 0
DEFB 1, 1,10,17, 1, 1,10,17
DEFB 3, 4,18, 4, 3, 4,18, 4
DEFB 3, 4,18, 4, 3, 4,18,14
DEFB 3, 4,18, 4, 3, 4,18, 4
DEFB 3, 4,18, 4, 3, 4,18,14
DEFB 8,11,19,15, 8,11,18,20
DEFB 8,11,19,15, 8,11,18,20
DEFB 8,11,19,15, 8,11,18,20
DEFB 8,11,19,15,14,14, 9, 3
DEFB 5, 5, 5, 5, 5, 5, 5, 5
DEFB 22,22,22,22,22,22,22,22
DEFB 22,22,22,22,22,22,22,22
DEFB 23,24,23,25,23,24,23,25
DEFB 23,24,23,25,23,24,23,25
DEFB 26,27,28,29,26,29,28,27
DEFB 2, 0,14,14,30,15,15,11
DEFB 26,27,28,29,26,29,28,27
DEFB 2, 0,14,14, 2, 8,14, 0
DEFB 1, 0, 1, 0, 1, 1, 3,15
Song data.
RSONG:  DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DEFB 00,00,00,00,00,00,00,00
DRUM: DEFB 000h,001h,002h,011h,082h,051h,021h,061h
DEFB 022h,012h,041h,095h,020h,02Ah,0AAh,055h
DEFB 0A5h,014h,024h,028h,042h,069h,0A1h,096h
DEFB 099h,066h,0A9h,0A6h,09Ah,06Ah,056h,088h
Rhythm pattern.
CHR:  DEFB 003h,003h,003h,001h,01Fh,03Fh,06Fh,05Fh
DEFB 05Fh,05Fh,05Fh,01Fh,00Fh,006h,00Eh,006h
DEFB 080h,080h,080h,000h,0F0h,0F8h,0ECh,0F4h
DEFB 0F4h,0F4h,0F4h,0F0h,0E0h,0C0h,0C0h,0E0h
DEFB 003h,003h,003h,001h,01Fh,03Fh,06Fh,05Fh
DEFB 05Fh,05Fh,05Fh,01Fh,00Fh,006h,006h,00Eh
DEFB 080h,080h,080h,000h,0F0h,0F8h,0ECh,0F4h
DEFB 0F4h,0F4h,0F4h,0F0h,0E0h,0C0h,0C0h,0E0h
DEFB 063h,043h,043h,061h,03Fh,01Fh,00Fh,01Fh
DEFB 01Fh,01Fh,01Fh,01Fh,00Fh,006h,006h,00Eh
DEFB 08Ch,084h,084h,00Ch,0F8h,0F0h,0E0h,0F0h
DEFB 0F0h,0F0h,0F0h,0F0h,0E0h,0C0h,0C0h,0E0h
DEFB 000h,003h,003h,003h,001h,01Fh,03Fh,07Fh
DEFB 05Fh,05Fh,07Fh,01Fh,01Fh,01Eh,00Ch,01Ch
DEFB 000h,080h,080h,080h,000h,0F0h,0F8h,0FCh
DEFB 0F4h,0F4h,0FCh,0F0h,0F0h,0F0h,060h,070h
DEFB 003h,003h,003h,001h,03Fh,0FFh,08Fh,09Fh
DEFB 0DFh,01Fh,01Fh,01Fh,05Fh,038h,010h,000h
DEFB 08Ch,0C4h,084h,00Ch,0F8h,0F0h,0E0h,0F0h
DEFB 0F0h,0F0h,0F0h,0F0h,0E0h,0C0h,0C0h,0E0h
DEFB 0C7h,08Fh,087h,0C2h,07Fh,03Fh,01Fh,03Fh
DEFB 03Fh,03Fh,03Fh,03Fh,01Fh,00Ch,00Ch,01Ch
DEFB 000h,000h,000h,000h,0F0h,0FCh,0C4h,0E4h
DEFB 0ECh,0E0h,0E0h,0E0h,0E8h,070h,020h,000h
DEFB 000h,000h,000h,000h,003h,003h,003h,01Fh
DEFB 07Fh,0CFh,09Fh,09Fh,01Fh,05Fh,07Fh,07Fh
DEFB 000h,000h,000h,000h,080h,0F8h,088h,0F8h
DEFB 0F0h,0E0h,0F0h,0F0h,0F0h,0F4h,0FCh,0FCh
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 001h,003h,000h,03Ah,02Ah,02Ah,02Ah,03Bh
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 000h,080h,000h,0B8h,090h,090h,090h,090h
DEFB 003h,003h,003h,001h,00Fh,01Fh,02Fh,02Fh
DEFB 02Fh,02Fh,02Fh,00Fh,00Fh,006h,00Eh,006h
DEFB 080h,080h,080h,000h,0E0h,0F0h,0E8h,0E8h
DEFB 0E8h,0E8h,0E8h,0E0h,0E0h,0C0h,0C0h,0E0h
DEFB 003h,003h,003h,001h,00Fh,01Fh,02Fh,02Fh
DEFB 02Fh,02Fh,02Fh,00Fh,00Fh,006h,006h,00Eh
DEFB 080h,080h,080h,000h,0E0h,0F0h,0E8h,0E8h
DEFB 0E8h,0E8h,0E8h,0E0h,0E0h,0C0h,0C0h,0E0h
DEFB 033h,023h,023h,021h,03Fh,01Fh,00Fh,00Fh
DEFB 00Fh,00Fh,00Fh,00Fh,00Fh,006h,006h,00Eh
DEFB 098h,088h,088h,008h,0F8h,0F0h,0E0h,0E0h
DEFB 0E0h,0E0h,0E0h,0E0h,0E0h,0C0h,0C0h,0E0h
DEFB 000h,003h,003h,003h,001h,00Fh,01Fh,03Fh
DEFB 02Fh,02Fh,02Fh,01Fh,01Eh,01Ch,00Ch,01Ch
DEFB 000h,098h,088h,088h,018h,0F0h,0E0h,0E0h
DEFB 0E0h,0E0h,0E0h,0E0h,0F0h,070h,060h,070h
DEFB 003h,003h,003h,001h,03Fh,04Fh,08Fh,08Fh
DEFB 04Fh,00Fh,00Fh,00Fh,05Fh,038h,010h,000h
DEFB 088h,0C4h,084h,004h,0F8h,0E0h,0E0h,0E0h
DEFB 0E0h,0E0h,0E0h,0E0h,0E0h,0C0h,0C0h,0E0h
DEFB 047h,08Fh,087h,082h,07Fh,01Fh,01Fh,01Fh
DEFB 01Fh,01Fh,01Fh,01Fh,01Fh,00Ch,00Ch,01Ch
DEFB 000h,000h,000h,000h,0F0h,0C8h,0C4h,0C4h
DEFB 0C8h,0C0h,0C0h,0C0h,0E8h,070h,020h,000h
DEFB 000h,000h,003h,003h,003h,007h,00Fh,01Fh
DEFB 03Fh,02Fh,02Fh,01Fh,00Fh,04Fh,07Eh,07Eh
DEFB 000h,000h,080h,0F8h,088h,0C8h,0F8h,0F0h
DEFB 0E0h,0E0h,0E0h,0E0h,0E0h,0E4h,0FCh,0FCh
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 001h,003h,000h,0EEh,08Ah,0AAh,0AAh,0EEh
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 000h,080h,000h,0ECh,0AAh,0AAh,0AAh,0ECh
DEFB 003h,003h,003h,001h,007h,00Fh,01Fh,02Fh
DEFB 02Fh,02Fh,017h,007h,006h,006h,00Eh,006h
DEFB 080h,080h,080h,000h,0C0h,0E0h,0F0h,0E8h
DEFB 0E8h,0E8h,0D0h,0C0h,0C0h,0C0h,0C0h,0E0h
DEFB 003h,003h,003h,001h,007h,00Fh,01Fh,02Fh
DEFB 02Fh,02Fh,017h,007h,006h,006h,006h,00Eh
DEFB 080h,080h,080h,000h,0C0h,0E0h,0F0h,0E8h
DEFB 0E8h,0E8h,0D0h,0C0h,0C0h,0C0h,0C0h,0E0h
DEFB 013h,023h,023h,021h,037h,01Fh,00Fh,00Fh
DEFB 00Fh,00Fh,007h,007h,02Ch,03Ch,018h,000h
DEFB 090h,088h,088h,008h,0D8h,0F0h,0E0h,0E0h
DEFB 0E0h,0E0h,0C0h,0C0h,068h,078h,030h,000h
DEFB 000h,003h,003h,003h,001h,003h,007h,00Fh
DEFB 00Fh,01Fh,017h,017h,017h,00Ch,006h,00Eh
DEFB 000h,090h,090h,090h,030h,0E0h,0E0h,0E0h
DEFB 0C0h,0C0h,0C0h,0C0h,0C0h,060h,0C0h,0E0h
DEFB 001h,001h,001h,000h,003h,007h,01Fh,027h
DEFB 027h,013h,003h,007h,00Ch,058h,030h,000h
DEFB 0C8h,0E4h,0C4h,084h,0C8h,0F8h,0F0h,0E0h
DEFB 0E0h,0E0h,0E0h,0E0h,0E0h,060h,0C0h,0E0h
DEFB 04Eh,09Eh,08Eh,084h,04Fh,07Fh,03Fh,01Fh
DEFB 01Fh,01Fh,01Fh,01Fh,01Ch,018h,00Ch,01Ch
DEFB 000h,000h,000h,000h,000h,080h,0E0h,090h
DEFB 090h,020h,000h,080h,0C0h,068h,030h,000h
DEFB 000h,000h,003h,003h,003h,007h,00Fh,01Fh
DEFB 01Fh,02Fh,027h,027h,02Fh,01Ch,00Eh,01Ch
DEFB 000h,000h,080h,080h,080h,0C0h,0E0h,0F0h
DEFB 0F0h,0E8h,0C8h,0C8h,0E8h,070h,0E0h,070h
DEFB 000h,03Fh,01Fh,00Fh,007h,003h,001h,000h
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 000h,0F8h,0F0h,0E0h,0C0h,080h,000h,000h
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 003h,003h,003h,001h,007h,00Fh,017h,017h
DEFB 017h,017h,017h,006h,006h,002h,00Eh,006h
DEFB 080h,080h,080h,000h,0C0h,0E0h,0D0h,0D0h
DEFB 0D0h,0D0h,0D0h,0C0h,0C0h,080h,0C0h,0E0h
DEFB 003h,003h,003h,001h,007h,00Fh,017h,017h
DEFB 017h,017h,017h,006h,006h,002h,006h,00Eh
DEFB 080h,080h,080h,000h,0C0h,0E0h,0D0h,0D0h
DEFB 0D0h,0D0h,0D0h,0C0h,0C0h,080h,0C0h,0E0h
DEFB 003h,003h,003h,081h,07Fh,00Fh,007h,007h
DEFB 007h,007h,00Eh,01Ch,0B0h,060h,000h,000h
DEFB 080h,080h,080h,002h,0FCh,0E0h,0C0h,0C0h
DEFB 0C0h,0C0h,0E0h,070h,01Ah,00Ch,000h,000h
DEFB 000h,000h,007h,007h,007h,003h,007h,00Fh
DEFB 017h,017h,017h,026h,026h,024h,00Ch,01Ch
DEFB 010h,010h,030h,060h,0E0h,0E0h,0C0h,0C0h
DEFB 0C0h,0C0h,0C0h,0C0h,080h,080h,0C0h,0E0h
DEFB 001h,041h,041h,030h,00Fh,003h,003h,003h
DEFB 007h,007h,0E7h,0ACh,038h,030h,001h,001h
DEFB 0C4h,0E2h,0C2h,082h,0FCh,0E0h,0E0h,0E0h
DEFB 0C0h,0C0h,0C0h,0C0h,040h,0C0h,080h,0C0h
DEFB 047h,08Fh,087h,082h,07Fh,00Fh,00Fh,00Fh
DEFB 007h,007h,007h,006h,004h,006h,003h,007h
DEFB 000h,004h,004h,018h,0E0h,080h,080h,080h
DEFB 0C0h,0C0h,0CEh,06Ah,038h,018h,000h,000h
DEFB 000h,003h,003h,003h,007h,00Fh,04Fh,037h
DEFB 007h,007h,007h,006h,006h,002h,006h,00Eh
DEFB 000h,080h,080h,080h,0C0h,0E0h,0E4h,0D8h
DEFB 0C0h,0C0h,0C0h,0C0h,0C0h,080h,0C0h,0E0h
DEFB 0FCh,030h,033h,036h,036h,036h,033h,000h
DEFB 076h,0CAh,0C2h,072h,00Ah,0CAh,073h,000h
DEFB 01Eh,019h,019h,09Eh,099h,099h,01Eh,000h
DEFB 000h,000h,060h,0D7h,0F6h,0C6h,076h,000h
DEFB 003h,003h,003h,001h,007h,00Fh,017h,017h
DEFB 017h,013h,00Bh,002h,002h,002h,00Eh,006h
DEFB 080h,080h,080h,000h,0C0h,0E0h,0D0h,0D0h
DEFB 0D0h,090h,0A0h,080h,080h,080h,0C0h,0E0h
DEFB 003h,003h,003h,001h,007h,00Fh,017h,017h
DEFB 017h,013h,00Bh,002h,002h,002h,006h,00Eh
DEFB 080h,080h,080h,000h,0C0h,0E0h,0D0h,0D0h
DEFB 0D0h,090h,0A0h,080h,080h,080h,0C0h,0E0h
DEFB 003h,043h,083h,0C1h,03Fh,00Fh,007h,007h
DEFB 003h,007h,09Eh,0F0h,000h,000h,000h,000h
DEFB 080h,084h,082h,006h,0F8h,0E0h,0C0h,0C0h
DEFB 080h,0C0h,0F2h,01Eh,000h,000h,000h,000h
DEFB 000h,000h,000h,000h,000h,007h,007h,007h
DEFB 007h,00Fh,017h,012h,012h,022h,026h,02Eh
DEFB 000h,000h,010h,010h,020h,020h,060h,0C0h
DEFB 0C0h,0C0h,0C0h,080h,080h,080h,0C0h,0E0h
DEFB 000h,000h,000h,000h,003h,00Dh,031h,041h
DEFB 001h,001h,003h,00Eh,030h,020h,000h,000h
DEFB 0E4h,0F2h,0E2h,042h,0FCh,0F0h,0F0h,0F0h
DEFB 0E0h,0E0h,010h,020h,040h,0C0h,0E0h,000h
DEFB 04Eh,09Eh,08Eh,084h,07Fh,01Fh,01Fh,01Fh
DEFB 00Fh,00Fh,011h,008h,004h,006h,00Eh,000h
DEFB 000h,000h,000h,000h,080h,060h,018h,004h
DEFB 000h,000h,080h,0E0h,018h,008h,000h,000h
DEFB 000h,003h,003h,003h,007h,00Fh,017h,017h
DEFB 017h,013h,00Bh,002h,002h,002h,006h,00Eh
DEFB 000h,080h,080h,080h,0C0h,0E0h,0D0h,0D0h
DEFB 0D0h,090h,0A0h,080h,080h,080h,0C0h,0E0h
DEFB 000h,000h,030h,068h,078h,060h,038h,000h
DEFB 006h,004h,004h,01Dh,0B5h,0B5h,09Ch,000h
DEFB 000h,000h,000h,000h,000h,000h,000h,000h
DEFB 000h,000h,0CEh,0ADh,0ECh,08Ch,0ECh,000h
DEFB 003h,003h,003h,001h,007h,00Fh,00Fh,00Bh
DEFB 00Bh,00Bh,00Bh,002h,002h,00Ah,006h,002h
DEFB 080h,080h,080h,000h,0C0h,0E0h,0E0h,0A0h
DEFB 0A0h,0A0h,0A0h,080h,080h,080h,080h,0C0h
DEFB 003h,003h,003h,001h,007h,00Fh,00Fh,00Bh
DEFB 00Bh,00Bh,00Bh,002h,002h,002h,002h,006h
DEFB 080h,080h,080h,000h,0C0h,0E0h,0E0h,0A0h
DEFB 0A0h,0A0h,0A0h,080h,080h,080h,080h,0C0h
DEFB 023h,043h,043h,041h,03Fh,007h,007h,003h
DEFB 083h,0FFh,000h,000h,000h,000h,000h,000h
DEFB 088h,084h,084h,004h,0F8h,0C0h,0C0h,080h
DEFB 082h,0FEh,000h,000h,000h,000h,000h,000h
DEFB 000h,000h,000h,000h,000h,007h,007h,007h
DEFB 003h,007h,00Ah,00Ah,00Ah,012h,012h,016h
DEFB 000h,000h,010h,010h,020h,020h,040h,0C0h
DEFB 080h,080h,080h,080h,080h,080h,080h,0C0h
DEFB 000h,000h,000h,000h,001h,003h,00Dh,011h
DEFB 011h,001h,002h,004h,078h,040h,000h,000h
DEFB 0E4h,0F2h,0E2h,042h,0FCh,0F0h,0F0h,0C0h
DEFB 0C0h,0F8h,004h,008h,010h,018h,000h,000h
DEFB 04Eh,09Eh,08Eh,084h,0FFh,01Fh,01Fh,007h
DEFB 007h,03Fh,040h,020h,010h,030h,000h,000h
DEFB 000h,000h,000h,000h,000h,080h,060h,010h
DEFB 010h,000h,080h,040h,03Ch,004h,000h,000h
DEFB 000h,000h,000h,000h,000h,003h,003h,003h
DEFB 007h,00Fh,017h,013h,013h,013h,043h,07Eh
DEFB 000h,000h,000h,000h,000h,094h,094h,08Ch
DEFB 0C8h,0F0h,0C0h,080h,080h,080h,084h,0FCh
Sprite pattern data.
BGTRK:  DEFB 1,0,2,0,3,0,0,4,0,4,5,0,4,0,5,0 BGM data
BGM:  DEFB 000h,035h,030h,02Ah,047h,040h
;BOTTOM WORK AREA
BGC: DEFB 0 Parameters
CHK1:  DEFB 0
CHK2:  DEFB 0
CHK3:  DEFB 0
CHK4:  DEFB 0
GOF:  DEFB 0
CHECK:  DEFB 0
REC1:  DEFB 0,0
REC2:  DEFB 0
PAT:  DEFB 0
TIME:  DEFB 0
LOOPF:  DEFB 0
LOOPC:  DEFB 0
LOOPR:  DEFB 0
HKSAVE: NOP
NOP
NOP
NOP
NOP
Area to save the old timer interrupt hook.
DEFM 'GWSWORKSHOP2000'