scene.org File Archive

File download

<root>­/­parties­/­2000­/­assembly00­/­in4k/pac4ksrc.zip

File size:
19 927 bytes (19.46K)
File date:
2019-06-12 03:43:55
Download count:
all-time: 140

Screenshot (by Demozoo)

Screenshot

Preview

  • pac4ksrc.txt 193.48K

file_id.diz

;*****************************************************************************
; PACMAN4K source code - released first in HUGI diskmag issue #20
; 8th at ASM2K on 03/08/2000 - all code by KOZMIK/NEXTEMPIRE
; "A fully playable pacMan level in 4089 bytes"
; TASM  /la /kh1024   PACMAN4K.ASM
; TLINK /3 /m3 PACMAN4K.OBJ
; APACK   -ST  PACMAN4K.EXE
; MOVE         OUT.EXE PACMAN4K.COM
; DEL          PACMAN4K.EXE
; DEL          PACMAN4K.MAP
; DEL          PACMAN4K.OBJ
; DIR          PACMAN4K.COM
;-----------------------------------------------------------------------------
; Assembler directives
;-----------------------------------------------------------------------------
.486P
;-----------------------------------------------------------------------------
; Structures
;-----------------------------------------------------------------------------
Descriptor       STRUC 
 Seg_limit       DW  4*(4*1+2*2)       ;segment limit
 Base_A15_A00    DW  ?                 ;A00..A15 of base address
 Base_A23_A16    DB  ?                 ;A16..A23 of base address
 Access_rights   DB  ?                 ;segment access rights
 GDLimit_A19_A16 DB  ?                 ;granularity, Op-size, Limit A16..A19
 Base_A31_A24    DB  ?                 ;A24..A31 of base address
Descriptor       ENDS
;-----------------------------------------------------------------------------
; Equates & macros
;-----------------------------------------------------------------------------
MAZEHEIGHT       EQU 31 
MAZEWIDTH        EQU 28
SPRIHEIGHT       EQU 12
SPRIWIDTH        EQU 24   
CHARMAX          EQU 05
;164=3000/18.207 3khz sound
NEWRATE          EQU 164;  280;  140;365;120;240;80                ; number of times to increase
SPEED            EQU  4
G1               EQU 800*32
BPTR             EQU BYTE  PTR
WPTR             EQU WORD  PTR
DPTR             EQU DWORD PTR
QPTR             EQU QWORD PTR
;-----------------------------------------------------------------------------
; .DAT
;-----------------------------------------------------------------------------
_DATA   SEGMENT PARA PUBLIC USE16 'DATA'
GDT386  Descriptor <>
SELCS4G equ        $-GDT386
GDTCS4G Descriptor <-1,,,9bh,8fh,>         ; CS Descriptor
SELDS4G equ        $-GDT386
GDTDS4G Descriptor <-1h,0,0h,93h,8fh,0h>   ; 4G Descriptor
SELSS4G equ        $-GDT386
GDTSS4G Descriptor <-1h,0,0h,93h,8fh,0h>   ; 4G Descriptor
GDTSIZ  equ        ($-GDT386) - 1


marqueecol      dw       1
lifecnt         dw       4
                dw      12
                dw      -2
                dw      14
ADPCMTTL        DB      10000000B
                DB      01000000B
                DB      00100000B
                DB      00010000B
                DB      00001000B
                DB      00000100B
                DB      00000010B
                DB      00000001B
                DB      00000000B
ghostnum        dd      0    ; blue ghost number eaten
ghosttime       dd      0    ; blue ghost countdown timer
ghoststate      dd      0    ; blue ghost flag
cherrytime      dd      0    ; cherrycountdown timer
cherrystate     dd      0    ; cherry state
democount       dw      0
bytecnt         dw      0
bitcnt          dw      0
oneeveryfour    dd      0                                               ;
score_num       dd      0
pillstate       dw      0
score_str2      db      0
score_str3      db      15 dup (0)
countdown       dw      0; NEWRATE    ; countdown timer
INT08H          DD      0           ;INT08H=ROMFONTS-BANKINFSIZ
BANKINFSIZ EQU ($-offset INT08H)
romfonts        DD      0     ;+000; #5. 8x8 ROM fonts ptr (0-128-255)
                DD      0     ;+004; #4. 8x8 ROM fonts ptr (0-255)
                DD      0     ;+008; #3. 8x14 ROM fonts ptr (0-255)
                DD      0     ;+012; #2. int 43h ptr
                DD      0     ;+016; #1. int 1fh ptr
PHYSCR          DD      0
LOGSCR          DD      0
SAMPNUM         DD      1     ;PHYSCR=SOUND1-SAMPINFSIZ
SAMPINFSIZ EQU ($-offset PHYSCR)
;         bank beg  size
;----     ---- ---- ----
;         +000 +004 +008
                           
SOUND1 DD 0002,0355,0050 ; back
SOUND2 DD 0002,0355-13,0050 ; ghost back
SOUND3 DD 0002,0355-13,0050 ; dot
SOUND4 DD 0002,0355-13-13,0050 ; ghost dot


;SOUND1 DD 0001,0355,0050 ; back
;SOUND2 DD 0001,0355,0050 ; ghost back
;SOUND3 DD 0001,0655,0054 ; dot
;SOUND4 DD 0001,0355,0050 ; ghost dot


;SOUND5 DD 0005,0620,0055 ; ghost dot           done nodots
;SOUND6 DD 0002,0655,0055 ; ghost eat           
;SOUND7 DD 0002,0655,0055 ; prize               done
;SOUND8 DD 0002,0655,0055 ; death






pal_state1 DB  8,255,255,255;powerpill white
           DB 11,191,  0,  0;ghost #1  red
           DB  4,  0,250,255;ghost #2  turquoise
           DB  9,255, 79,191;ghost #3  pink
           DB 13, 63, 47, 15;ghost #4  orange
           DB  7,255,255,255;dots      white
           DB  8,  0,  0,  0;powerpill black
pal_state2 DB  8,255,255,255;powerpill white
           DB 11,  0,  0,255;ghost #1  blue
           DB  4,  0,  0,255;ghost #2  blue
           DB 13,  0,  0,255;ghost #3  blue
           DB  9,  0,  0,255;ghost #4  blue
           DB  7,255,255,255;dots      white
           DB  8,  0,  0,  0;powerpill black

pal_state3 DB  8,255,255,255;powerpill white
           DB 11,255,255,255;ghost #1  blue
           DB  4,255,255,255;ghost #2  blue
           DB 13,255,255,255;ghost #3  blue
           DB  9,255,255,255;ghost #4  blue
           DB  7,255,255,255;dots      white
           DB  8,  0,  0,  0;powerpill black



pacpal     db       14 ; PACMAN ;index 14
           db       11 ; GHOST1 
           db        4 ; GHOST2
           db       13 ; GHOST3
           db        9 ; GHOST4
           db       12 ; CHERRY


;below are fixed indexed "strucs" per character to be addressed through ebp
;
;-------------- character 0 = pacman -----------------------------------;----
paccordx        dd      (800*(35+24*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex        dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey        dd      ((MAZEWIDTH*23)*1);24                           ;+008
pacstart        dd      OFFSET S3          ; base offset of pacindex    ;+012
pacstartprev    dd      0                                               ;+016
paccount        dd      0          ; pacindex count                     ;+020
pacoldkey       dd      0                                               ;+024
pacflag         dd      1                                               ;+028
packeytab       dd      offset KEYTAB                                   ;+032
pacresoff       dd      0                                               ;+036
pactile         dd      0                                               ;+040
pacprevcoord    dd      0                                               ;+044
pacprevtile     dd      0                                               ;+048
charstructsiz   equ     ($-offset paccordx)
;-------------- character 1 = ghost1 -----------------------------------;----
paccordx1       dd      (800*(35+12*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex1       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey1       dd      ((MAZEWIDTH*11)*1);24                           ;+008
pacstart1       dd      OFFSET T3          ; base offset of pacindex    ;+012
pacstartprev1   dd      0                                               ;+016
paccount1       dd      0          ; pacindex count                     ;+020
pacoldkey1      dd      0                                               ;+024
pacflag1        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab1      dd      offset KEYTAB1                                  ;+032
pacresoff1      dd      0                                               ;+036
pactile1        dd      0                                               ;+040
pacprevcoord1   dd      0                                               ;+044
pacprevtile1    dd      0                                               ;+048
;-------------- character 2 = ghost2 -----------------------------------;----
paccordx2       dd      (800*(35+12*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex2       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey2       dd      ((MAZEWIDTH*11)*1);24                           ;+008
pacstart2       dd      OFFSET U2          ; base offset of pacindex    ;+012
pacstartprev2   dd      0                                               ;+016
paccount2       dd      0          ; pacindex count                     ;+020
pacoldkey2      dd      0                                               ;+024
pacflag2        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab2      dd      offset KEYTAB2                                  ;+032
pacresoff2      dd      0                                               ;+036
pactile2        dd      0                                               ;+040
pacprevcoord2   dd      0                                               ;+044
pacprevtile2    dd      0                                               ;+048
;-------------- character 3 = ghost3 -----------------------------------;----
paccordx3       dd      (800*(35+12*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex3       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey3       dd      ((MAZEWIDTH*11)*1);24                           ;+008
pacstart3       dd      OFFSET V3          ; base offset of pacindex    ;+012
pacstartprev3   dd      0                                               ;+016
paccount3       dd      0          ; pacindex count                     ;+020
pacoldkey3      dd      0                                               ;+024
pacflag3        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab3      dd      offset KEYTAB3                                  ;+032
pacresoff3      dd      0                                               ;+036
pactile3        dd      0                                               ;+040
pacprevcoord3   dd      0                                               ;+044
pacprevtile3    dd      0                                               ;+048
;-------------- character 4 = ghost4 -----------------------------------;----
paccordx4       dd      (800*(35+14*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex4       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey4       dd      ((MAZEWIDTH*13)*1);24                           ;+008
pacstart4       dd      OFFSET W4          ; base offset of pacindex    ;+012
pacstartprev4   dd      0                                               ;+016
paccount4       dd      0          ; pacindex count                     ;+020
pacoldkey4      dd      0                                               ;+024
pacflag4        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab4      dd      offset KEYTAB4                                  ;+032
pacresoff4      dd      0                                               ;+036
pactile4        dd      0                                               ;+040
pacprevcoord4   dd      0                                               ;+044
pacprevtile4    dd      0                                               ;+048
;-------------- usr key table-------------------------------------------;----
KEYTAB          DB      72,0
                DD      OFFSET S1  ;up
                DB      80,0
                DD      OFFSET S2  ;down
                DB      75,0
                DD      OFFSET S3  ;left
                DB      77,0
                DD      OFFSET S4  ;right
;-------------- cpu key table-1-----------------------------------------;----
KEYTAB1         DB      0,1
                DD      OFFSET T1  ;up
                DB      1,0
                DD      OFFSET T2  ;down
                DB      2,3
                DD      OFFSET T3  ;left
                DB      3,2
                DD      OFFSET T4  ;right
;-------------- cpu key table-2-----------------------------------------;----
KEYTAB2         DB      0,1
                DD      OFFSET U1  ;up
                DB      1,0
                DD      OFFSET U2  ;down
                DB      2,3
                DD      OFFSET U3  ;left
                DB      3,2
                DD      OFFSET U4  ;right
;-------------- cpu key table-3-----------------------------------------;----
KEYTAB3         DB      0,1
                DD      OFFSET V1  ;up
                DB      1,0
                DD      OFFSET V2  ;down
                DB      2,3
                DD      OFFSET V3  ;left
                DB      3,2
                DD      OFFSET V4  ;right
;-------------- cpu key table-4-----------------------------------------;----
KEYTAB4         DB      0,1
                DD      OFFSET W1  ;up
                DB      1,0
                DD      OFFSET W2  ;down
                DB      2,3
                DD      OFFSET W3  ;left
                DB      3,2
                DD      OFFSET W4  ;right





charnum         dd      0

DOTNUMS         db      0
;S1=up S2=down S3=left S4=right
;         sprite#1/4         ;sprite#2/4         ;sprite#3/4         ;sprite#4/4         ;phy. off. ;log. x;log. y    
;         +00                ;+04                ;+08                ;+12                ;+16       ;+20   ;+24       
;------------- PACMAN
S1     DD 448+96*0+32*2+2+800+G1*0,448+96*2+32*0+2+800+G1*0,448+96*2+32*1+2+800+G1*0,448+96*2+32*0+2+800+G1*0,-800*SPEED,     0,-(MAZEWIDTH*1)
S2     DD 448+96*0+32*2+2+800+G1*0,448+96*3+32*0+2+800+G1*0,448+96*3+32*1+2+800+G1*0,448+96*3+32*0+2+800+G1*0,+800*SPEED,     0,+(MAZEWIDTH*1)
S3     DD 448+96*0+32*2+2+800+G1*0,448+96*1+32*0+2+800+G1*0,448+96*1+32*1+2+800+G1*0,448+96*1+32*0+2+800+G1*0,-001*SPEED,    -1,     0
S4     DD 448+96*0+32*2+2+800+G1*0,448+96*0+32*0+2+800+G1*0,448+96*0+32*1+2+800+G1*0,448+96*0+32*0+2+800+G1*0,+001*SPEED,    +1,     0    
;------------- GHOST1
T1     DD 448+96*0+32*2+2+800+G1*1,448+96*2+32*0+2+800+G1*1,448+96*2+32*1+2+800+G1*1,448+96*2+32*0+2+800+G1*1,-800*SPEED,     0,-(MAZEWIDTH*1)
T2     DD 448+96*0+32*2+2+800+G1*1,448+96*3+32*0+2+800+G1*1,448+96*3+32*1+2+800+G1*1,448+96*3+32*0+2+800+G1*1,+800*SPEED,     0,+(MAZEWIDTH*1)
T3     DD 448+96*0+32*2+2+800+G1*1,448+96*1+32*0+2+800+G1*1,448+96*1+32*1+2+800+G1*1,448+96*1+32*0+2+800+G1*1,-001*SPEED,    -1,     0
T4     DD 448+96*0+32*2+2+800+G1*1,448+96*0+32*0+2+800+G1*1,448+96*0+32*1+2+800+G1*1,448+96*0+32*0+2+800+G1*1,+001*SPEED,    +1,     0    
;------------- GHOST2
U1     DD 448+96*0+32*2+2+800+G1*2,448+96*2+32*0+2+800+G1*2,448+96*2+32*1+2+800+G1*2,448+96*2+32*0+2+800+G1*2,-800*SPEED,     0,-(MAZEWIDTH*1)
U2     DD 448+96*0+32*2+2+800+G1*2,448+96*3+32*0+2+800+G1*2,448+96*3+32*1+2+800+G1*2,448+96*3+32*0+2+800+G1*2,+800*SPEED,     0,+(MAZEWIDTH*1)
U3     DD 448+96*0+32*2+2+800+G1*2,448+96*1+32*0+2+800+G1*2,448+96*1+32*1+2+800+G1*2,448+96*1+32*0+2+800+G1*2,-001*SPEED,    -1,     0
U4     DD 448+96*0+32*2+2+800+G1*2,448+96*0+32*0+2+800+G1*2,448+96*0+32*1+2+800+G1*2,448+96*0+32*0+2+800+G1*2,+001*SPEED,    +1,     0    
;------------- GHOST3
V1     DD 448+96*0+32*2+2+800+G1*3,448+96*2+32*0+2+800+G1*3,448+96*2+32*1+2+800+G1*3,448+96*2+32*0+2+800+G1*3,-800*SPEED,     0,-(MAZEWIDTH*1)
V2     DD 448+96*0+32*2+2+800+G1*3,448+96*3+32*0+2+800+G1*3,448+96*3+32*1+2+800+G1*3,448+96*3+32*0+2+800+G1*3,+800*SPEED,     0,+(MAZEWIDTH*1)
V3     DD 448+96*0+32*2+2+800+G1*3,448+96*1+32*0+2+800+G1*3,448+96*1+32*1+2+800+G1*3,448+96*1+32*0+2+800+G1*3,-001*SPEED,    -1,     0
V4     DD 448+96*0+32*2+2+800+G1*3,448+96*0+32*0+2+800+G1*3,448+96*0+32*1+2+800+G1*3,448+96*0+32*0+2+800+G1*3,+001*SPEED,    +1,     0    
;------------- GHOST4
W1     DD 448+96*0+32*2+2+800+G1*4,448+96*2+32*0+2+800+G1*4,448+96*2+32*1+2+800+G1*4,448+96*2+32*0+2+800+G1*4,-800*SPEED,     0,-(MAZEWIDTH*1)
W2     DD 448+96*0+32*2+2+800+G1*4,448+96*3+32*0+2+800+G1*4,448+96*3+32*1+2+800+G1*4,448+96*3+32*0+2+800+G1*4,+800*SPEED,     0,+(MAZEWIDTH*1)
W3     DD 448+96*0+32*2+2+800+G1*4,448+96*1+32*0+2+800+G1*4,448+96*1+32*1+2+800+G1*4,448+96*1+32*0+2+800+G1*4,-001*SPEED,    -1,     0
W4     DD 448+96*0+32*2+2+800+G1*4,448+96*0+32*0+2+800+G1*4,448+96*0+32*1+2+800+G1*4,448+96*0+32*0+2+800+G1*4,+001*SPEED,    +1,     0    

credits          db      13,10
                 db      " PACMAN 4 KILOBYTES";                                               PLAYER 1  ",13,10;CRLF$
                 db      47 dup (' ')
                 db      "PLAYER 1  ",13,10," a NEXTEMPIRE intro"
                 db      13,10
                 db      " ASM'2000 demoparty",13,10,13,10
                 DB      "                      0   1   2   3   4   5   6   7   8   9   00",24h

;maze actual WIDTH=28
MAZE DB 001H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,003H,01DH,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,01EH
TTL_PRIZE     DB 004H,0C5H,085H,085H,085H,085H,0C5H,085H,085H,085H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,085H,085H,085H,0C5H,085H,085H,085H,085H,0C5H,018H
     DB 004H,085H,007H,008H,008H,009H,085H,007H,008H,008H,008H,009H,085H,006H,00BH,085H,007H,008H,008H,008H,009H,085H,007H,008H,008H,009H,085H,018H
     DB 004H,08AH,006H,000H,000H,00BH,085H,006H,000H,000H,000H,00BH,085H,006H,00BH,085H,006H,000H,000H,000H,00BH,085H,006H,000H,000H,00BH,08AH,018H
     DB 004H,085H,00CH,00DH,00DH,00EH,085H,00CH,00DH,00DH,00DH,00EH,085H,00CH,00EH,085H,00CH,00DH,00DH,00DH,00EH,085H,00CH,00DH,00DH,00EH,085H,018H
     DB 004H,0C5H,085H,085H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,085H,085H,0C5H,018H
     DB 004H,085H,007H,008H,008H,009H,085H,007H,009H,085H,007H,008H,008H,008H,008H,008H,008H,009H,085H,007H,009H,085H,007H,008H,008H,009H,085H,018H
     DB 004H,085H,00CH,00DH,00DH,00EH,085H,006H,00BH,085H,00CH,00DH,00DH,00FH,014H,00DH,00DH,00EH,085H,006H,00BH,085H,00CH,00DH,00DH,00EH,085H,018H
     DB 004H,0C5H,085H,085H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,085H,085H,0C5H,018H
     DB 010H,011H,011H,011H,011H,009H,085H,006H,013H,008H,008H,009H,000H,006H,00BH,000H,007H,008H,008H,01CH,00BH,085H,007H,011H,011H,011H,011H,020H
     DB 000H,000H,000H,000H,000H,004H,085H,006H,014H,00DH,00DH,00EH,000H,00CH,00EH,000H,00CH,00DH,00DH,00FH,00BH,085H,018H,000H,000H,000H,000H,000H
     DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,040H,000H,000H,040H,000H,000H,040H,000H,000H,040H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
     DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,000H,015H,011H,016H,097H,097H,021H,011H,022H,000H,006H,00BH,085H,018H,000H,000H,000H,000H,000H

;     DB 002H,002H,002H,002H,002H,00EH,085H,00CH,00EH,000H,018H,000H,000H,000H,000H,000H,000H,004H,000H,00CH,00EH,085H,00CH,002H,002H,002H,002H,002H

;     DB 000H,000H,000H,000H,000H,000H,0C5H,000H,000H,040H,018H,000H,000H,040H,040H,000H,000H,004H,040H,000H,000H,0C5H,000H,000H,000H,000H,000H,000H

;     DB 011H,011H,011H,011H,011H,009H,085H,007H,009H,000H,018H,000H,000H,000H,000H,000H,000H,004H,000H,007H,009H,085H,007H,011H,011H,011H,011H,011H



     DB 002H,002H,002H,002H,002H,00EH,085H,00CH,00EH,000H,018H,038H,038H,000H,000H,038H,038H,004H,000H,00CH,00EH,085H,00CH,002H,002H,002H,002H,002H
     DB 000H,000H,000H,000H,000H,000H,0C5H,000H,000H,040H,018H,038H,000H,040H,040H,000H,038H,004H,040H,000H,000H,0C5H,000H,000H,000H,000H,000H,000H
     DB 011H,011H,011H,011H,011H,009H,085H,007H,009H,000H,018H,038H,038H,038H,038H,038H,038H,004H,000H,007H,009H,085H,007H,011H,011H,011H,011H,011H


     DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,000H,019H,002H,002H,002H,002H,002H,002H,023H,000H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
     DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,040H,000H,000H,000H,000H,000H,000H,000H,000H,040H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
     DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,000H,007H,008H,008H,008H,008H,008H,008H,009H,000H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
     DB 001H,002H,002H,002H,002H,00EH,085H,00CH,00EH,000H,00CH,00DH,00DH,00FH,014H,00DH,00DH,00EH,000H,00CH,00EH,085H,00CH,002H,002H,002H,002H,01EH
     DB 004H,0C5H,085H,085H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,085H,085H,0C5H,018H
     DB 004H,085H,007H,008H,008H,009H,085H,007H,008H,008H,008H,009H,085H,006H,00BH,085H,007H,008H,008H,008H,009H,085H,007H,008H,008H,009H,085H,018H
     DB 004H,085H,00CH,00DH,00FH,00BH,085H,00CH,00DH,00DH,00DH,00EH,085H,00CH,00EH,085H,00CH,00DH,00DH,00DH,00EH,085H,006H,014H,00DH,00EH,085H,018H
     DB 004H,0CAH,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,085H,085H,0C5H,000H,000H,0C5H,085H,085H,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,0CAH,018H
     DB 01AH,008H,009H,085H,006H,00BH,085H,007H,009H,085H,007H,008H,008H,008H,008H,008H,008H,009H,085H,007H,009H,085H,006H,00BH,085H,007H,008H,024H
     DB 01BH,00DH,00EH,085H,00CH,00EH,085H,006H,00BH,085H,00CH,00DH,00DH,00FH,014H,00DH,00DH,00EH,085H,006H,00BH,085H,00CH,00EH,085H,00CH,00DH,025H
     DB 004H,0C5H,085H,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,085H,0C5H,018H
     DB 004H,085H,007H,008H,008H,008H,008H,01CH,013H,008H,008H,009H,085H,006H,00BH,085H,007H,008H,008H,01CH,013H,008H,008H,008H,008H,009H,085H,018H
     DB 004H,085H,00CH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00EH,085H,00CH,00EH,085H,00CH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00EH,085H,018H
     DB 004H,0C5H,085H,085H,085H,085H,085H,085H,085H,085H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,085H,085H,085H,085H,085H,085H,085H,085H,0C5H,018H
     DB 010H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,020H







;38 16x16 tiles = 38 * 256 = 9728 bytes uncompressed

tiles001_raw DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,001H,001H
  DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

sprites_raw  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;sprites_raw db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h

  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h
  db 001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 001h,001h,001h,001h,000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,001h,001h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h
  db 000h,000h,000h,000h,000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
  db 000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h
  db 000h,000h,000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
SAVESTRUCT  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
ModeInfoBlockPtr db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h

;width=24 tiles height=12 tiles high
SPRT DB 001H,015H,002H,003H,004H,005H,001H,015H,01CH,01DH,02FH,030H,001H,015H,006H,020H,008H,022H,001H,015H,024H,025H,028H,029H
     DB 016H,017H,018H,019H,01AH,01BH,016H,017H,01EH,01FH,031H,023H,016H,017H,007H,021H,009H,023H,016H,017H,026H,027H,02AH,02BH
     DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
     DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
     DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
     DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
     DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
     DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
     DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
     DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
     DB 00DH,00EH,011H,012H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
     DB 00FH,010H,013H,014H,000H,000H,000H,000H,000H,000H

SPRI DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
     DB 00DH,000H,000H,000H,000H,000H,000H,001H,041H,016H,042H,043H
     DB 044H,045H,003H,002H,019H,018H,006H,007H,008H,009H,047H,024H
     DB 046H,026H,049H,028H,048H,02AH,00AH,00BH,00CH,005H,004H,01BH


;49*16 tiles=784*16









; 7-bit encoding format for compressed tiles
; bit 7 6 5 4 3 2 1 0
;     | X x x x x x x
;     | | -----------
;     | |     | 
;     | |      ---> tile number 0...31 (max referring tile is #24)
;     |  ---------> 0=horizontal symetry        4=vertical symetry     
;      -----------> unused (counting on compression...)
;note tiles 18 and 31 are redundant to tile 0
TILE DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,007H,000H,006H,047H
     DB 048H,049H,000H,041H,000H,000H,000H,00FH,000H,000H,000H,004H,055H
     DB 000H,000H,013H,003H,001H,000H,010H,016H,015H,019H,01AH,01BH




;SPRI DB 000H ; tile 00
;        000H ; tile 01
;        000H ; tile 02
;        000H ; tile 03
;        000H ; tile 04
;        000H ; tile 05
;        000H ; tile 06
;        000H ; tile 07
;        000H ; tile 08
;        000H ; tile 09
;        000H ; tile 0A
;        000H ; tile 0B
;        000H ; tile 0C
;        000H ; tile 0D
;        00DH ; tile 0E
;        000H ; tile 0F
;        000H ; tile 10
;        000H ; tile 11
;        000H ; tile 12
;        000H ; tile 13
;        000H ; tile 14
;        001H ; tile 15
;        041H ; tile 16
;        010H ; tile 17
;        042H ; tile 18
;        043H ; tile 19
;        044H ; tile 1A
;        045H ; tile 1B
;        003H ; tile 1C
;        002H ; tile 1D
;        019H ; tile 1E
;        018H ; tile 1F
;        006H ; tile 20
;        007H ; tile 21
;        008H ; tile 22
;        009H ; tile 23
;        047H ; tile 24
;        024H ; tile 25
;        046H ; tile 26
;        026H ; tile 27
;        049H ; tile 28
;        028H ; tile 29
;        048H ; tile 2A
;        02AH ; tile 2B
;        00AH ; tile 2C
;        00BH ; tile 2D
;        00CH ; tile 2E

;        005H ; tile 2F
;        004H ; tile 30
;        01BH ; tile 31


  db 050h,0c3h,001h,000h,008h,000h,004h,004h,000h,000h,00eh,000h,000h,000h,028h,000h
  db 000h,000h,0e0h,000h,000h,000h,023h,000h,000h,000h,001h,000h,001h,000h,000h,000h
  db 000h,000h,0d4h,003h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,002h,000h
  db 000h,000h,002h,000h,000h,000h,000h,000h,000h,000h,0ffh,0ffh,0ffh,000h,0ffh,0ffh
  db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0c0h
  db 007h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,000h,000h,000h,01fh,0c0h,000h
  db 000h,000h,000h,07eh,000h,000h,000h,007h,0ffh,0ffh,0ffh,000h,0e1h,0f0h,000h,000h
  db 000h,000h,01fh,0fch,000h,07fh,000h,000h,000h,01fh,0e0h,000h,000h,000h,000h,0feh
  db 000h,000h,000h,007h,0ffh,0ffh,0feh,03fh,0bfh,078h,000h,000h,000h,000h,03fh,0fch
  db 000h,07fh,03fh,0ffh,0ffh,0ffh,0f1h,0ffh,0ffh,0ffh,0ffh,0feh,07fh,0ffh,0ffh,0ffh
  db 0ffh,0ffh,0f8h,070h,001h,0fch,07fh,0ffh,0ffh,0ffh,0ffh,0fch,0ffh,0ffh,020h,000h
  db 000h,000h,0f1h,000h,000h,000h,000h,01eh,040h,000h,000h,000h,07fh,0ffh,0f0h,0c0h
  db 000h,07ch,040h,000h,000h,000h,007h,0fch,080h,007h,020h,000h,000h,000h,0f9h,080h
  db 000h,000h,000h,03eh,040h,000h,000h,000h,07fh,0ffh,0e3h,080h,000h,03eh,060h,000h
  db 000h,000h,00fh,0fch,080h,007h,020h,000h,000h,000h,09ch,0c0h,000h,000h,000h,062h
  db 040h,000h,000h,000h,04fh,0ffh,0e6h,000h,000h,00fh,030h,000h,000h,000h,018h,0fch
  db 080h,004h,020h,000h,000h,000h,09ch,040h,000h,000h,000h,046h,040h,000h,000h,000h
  db 04fh,0ffh,0c4h,000h,000h,007h,010h,000h,000h,000h,011h,0fch,080h,004h,020h,000h
  db 000h,000h,09eh,060h,000h,000h,000h,0ceh,040h,000h,000h,000h,04fh,0ffh,08ch,000h
  db 000h,007h,098h,000h,000h,000h,033h,0fch,080h,004h,020h,000h,000h,000h,09fh,030h
  db 000h,000h,001h,08eh,040h,000h,000h,000h,04fh,0ffh,0f8h,000h,000h,003h,0cch,000h
  db 000h,000h,063h,0fch,080h,004h,020h,000h,000h,000h,09fh,010h,000h,000h,001h,01eh
  db 040h,000h,000h,000h,04fh,0ffh,0f0h,000h,000h,001h,044h,000h,000h,000h,047h,0fch
  db 080h,004h,020h,000h,000h,000h,09fh,098h,000h,000h,003h,03eh,040h,000h,000h,000h
  db 04ch,00fh,0fch,000h,000h,001h,0e6h,000h,000h,000h,0cfh,0fch,080h,004h,020h,000h
  db 000h,000h,09fh,0cch,000h,060h,006h,03eh,040h,000h,000h,000h,04ch,00fh,0ffh,000h
  db 000h,000h,0f3h,000h,018h,001h,08eh,000h,080h,004h,020h,000h,000h,000h,09fh,0c4h
  db 000h,0f0h,004h,07eh,040h,000h,000h,000h,04ch,0ffh,0ffh,0c0h,000h,000h,0b1h,000h
  db 03ch,001h,018h,000h,080h,004h,020h,000h,000h,000h,09fh,0e6h,000h,0f0h,00ch,0feh
  db 040h,000h,000h,000h,04ch,081h,0ffh,0f0h,000h,000h,099h,080h,03ch,003h,031h,0ffh
  db 080h,004h,020h,000h,000h,000h,09fh,0f3h,000h,060h,018h,0feh,040h,000h,000h,000h
  db 04fh,081h,0ffh,0fch,000h,000h,09ch,0c0h,018h,006h,023h,080h,000h,004h,020h,000h
  db 080h,000h,09fh,0f1h,000h,000h,011h,0feh,040h,000h,040h,000h,04fh,081h,0ffh,0fbh
  db 000h,000h,0dch,040h,000h,004h,04eh,000h,000h,004h,020h,000h,0c0h,000h,09fh,0f9h
  db 080h,000h,033h,0feh,040h,000h,0e0h,000h,04fh,081h,03fh,0e1h,0c0h,000h,05eh,060h
  db 000h,00ch,0cch,000h,000h,004h,020h,000h,0e0h,000h,09fh,0fch,0c0h,000h,063h,0feh
  db 040h,001h,0b0h,000h,04fh,0ffh,03fh,087h,000h,000h,0dfh,030h,000h,018h,098h,000h
  db 000h,004h,020h,000h,0b0h,000h,09fh,0fch,040h,000h,047h,0feh,040h,003h,098h,000h
  db 04fh,0e0h,03eh,01ch,000h,000h,08fh,010h,000h,011h,098h,000h,000h,004h,020h,000h
  db 098h,000h,09fh,0feh,060h,000h,0cfh,0feh,040h,006h,04ch,000h,04fh,0e0h,038h,070h
  db 000h,000h,09fh,098h,000h,033h,090h,000h,000h,004h,020h,000h,0cch,000h,09fh,0ffh
  db 030h,001h,08fh,0feh,040h,00ch,0e6h,000h,04fh,0ffh,0e1h,0c0h,000h,000h,09fh,0cch
  db 000h,063h,090h,000h,0c0h,004h,020h,000h,0a6h,000h,09fh,0ffh,010h,001h,01fh,0feh
  db 040h,019h,0f3h,000h,04fh,0ffh,0f7h,000h,000h,000h,09fh,0c4h,000h,047h,090h,001h
  db 0e0h,004h,020h,000h,093h,000h,09fh,0ffh,098h,003h,03fh,0feh,040h,033h,0f9h,080h
  db 04fh,0ffh,0fch,000h,000h,001h,09fh,0e6h,000h,0cfh,090h,001h,0e0h,004h,020h,000h
  db 099h,080h,09fh,0ffh,0c8h,002h,03fh,0feh,040h,067h,0fch,0c0h,04fh,0ffh,0f0h,000h
  db 000h,001h,01fh,0f2h,000h,08fh,090h,000h,0c0h,004h,020h,000h,09ch,0c0h,09fh,0ffh
  db 0cch,006h,07fh,0feh,040h,0cfh,0feh,060h,04fh,0ffh,0f8h,000h,000h,003h,03fh,0f3h
  db 001h,09fh,0d0h,000h,000h,004h,020h,000h,09eh,060h,09fh,0ffh,0e6h,00ch,07fh,0feh
  db 041h,09fh,0ffh,030h,04fh,0ffh,0fch,000h,000h,006h,03fh,0f9h,083h,01fh,0d8h,000h
  db 000h,004h,020h,000h,09fh,030h,09fh,0ffh,0f6h,008h,0ffh,0feh,043h,03fh,0ffh,098h
  db 04fh,0ffh,0fch,000h,000h,004h,07fh,0fdh,082h,03fh,0e8h,000h,000h,004h,020h,000h
  db 09fh,098h,09fh,0ffh,0f7h,019h,0ffh,0feh,046h,07fh,0ffh,0cch,04fh,0ffh,0feh,000h
  db 000h,00ch,0ffh,0fdh,0c6h,07fh,0fch,000h,000h,004h,0e0h,000h,09fh,0dch,09fh,0ffh
  db 0ffh,0b1h,0ffh,0feh,04ch,0ffh,0ffh,0e6h,04fh,0ffh,0ffh,080h,000h,038h,0ffh,0ffh
  db 0ech,07fh,0feh,000h,000h,004h,0e0h,000h,09fh,0feh,09fh,0ffh,0ffh,0b3h,0ffh,0feh
  db 0d9h,0ffh,0ffh,0f7h,04fh,0ffh,0ffh,0c0h,000h,063h,0ffh,0ffh,0ech,0ffh,0ffh,080h
  db 000h,004h,0ffh,0ffh,09fh,0ffh,09fh,0ffh,0ffh,0f7h,0ffh,0ffh,0f3h,0ffh,0ffh,0ffh
  db 0cfh,0ffh,0ffh,0f0h,001h,0c3h,0ffh,0ffh,0fdh,0ffh,0ffh,0ffh,0ffh,0fch,0f8h,000h
  db 01fh,0ffh,0dfh,0ffh,0ffh,0f7h,0ffh,0ffh,0f7h,0ffh,0ffh,0ffh,0efh,0ffh,0ffh,0ffh
  db 0bfh,00fh,0ffh,0ffh,0fdh,0ffh,0ffh,0e0h,000h
  marquee db 000h





_DATA   ENDS
;-----------------------------------------------------------------------------
; .COD (REAL MODE)
;-----------------------------------------------------------------------------
_TEXT   SEGMENT PARA PUBLIC USE16 'CODE'
ASSUME  CS:_TEXT, DS:_DATA, ES:_DATA, SS:_TEXT, FS:0

start:  MOV     SP,OFFSET _STACK       ; 1 byte smaller
        mov     eax,ds                 ; make pointer to GDT table
                                       ; note above line can be stripped but
                                       ;then it will only work once 
        shl     eax,4             ; have physical address of segment
        add     eax,offset GDT386      ; now have physical addr of table
        mov     GDT386.Base_A15_A00,ax
	shr	eax,10h 		; get other address bits
        mov     GDT386.Base_A23_A16,al
        mov     GDT386.Access_rights,ah

	mov	eax,cs			; get CS
	shl	eax,4			; now have physical address
        mov     GDTCS4G.Base_A15_A00,ax
	shr	eax,10h 		; get other address bits
        mov     GDTCS4G.Base_A23_A16,al
        mov     GDTCS4G.Base_A31_A24,ah
	mov	eax,ds			; get DS
	shl	eax,4			; now have physical address
        mov     GDTDS4G.Base_A15_A00,ax
        shr     eax,10h                 ; get other address bits
        mov     GDTDS4G.Base_A23_A16,al
        mov     GDTDS4G.Base_A31_A24,ah
        mov     eax,ss                  ; get SS
	shl	eax,4			; now have physical address
        mov     GDTSS4G.Base_A15_A00,ax
	shr	eax,10h 		; get other address bits
        mov     GDTSS4G.Base_A23_A16,al
        mov     GDTSS4G.Base_A31_A24,ah

        lgdt    GDT386
        mov     eax,cr0                 ; get control register
        or      ax,1
        mov     cr0,eax

        push    cs                      ;push return selector on stack
        push    offset PMRET            ;set return offset
        DB      0EAH                    ;jmp instruction
        DW      OFFSET $+2              ;jumpfar offset word
        DW      SELCS4G                 ;jumpfar segment selector word
        mov     ax,SELDS4G              ;set all selectors to 4GB limits
	mov	ds,ax
	mov	es,ax
        mov     ax,SELSS4G
	mov	ss,ax
        mov     ebx,cr0                 ;get 386 control register
        and     ebx,not 80000001h       ;clear paging bit
        mov     cr0,ebx                 ;and store in CR0
        retf                            ;return to caller
;-----------------------------------------------------------------------------
; .COD (UNREAL MODE)
;-----------------------------------------------------------------------------
PMRET:    MOV   AX,SEG _DATA
          MOV   DS,AX
          MOV   ES,AX
          MOV   GS,AX
          MOV   SS,AX
;-UNCOMPRESS-DATA----------------------;--------------------------------------
          CALL  UNCTIL000              ;uncompress maze   tiles passes 1 and 2
          CALL  UNCTIL000              ;uncompress maze   tiles passes 3 and 4
          CALL  UNCTIL001              ;uncompress sprite tiles passes 1 and 2
          CALL  UNCTIL001              ;uncompress sprite tiles passes 3 and 4
;**************************************;**************************************
; INTRO STARTS HERE
;**************************************;**************************************
;-INITIALIZE-HIRES-VIDEO-MODE----------;--------------------------------------
          MOV   AX,4F01H               ;get vesa vbe 2.0 mode information
          MOV   CX,100H                ;size of vbe information is 256 bytes
          MOV   DI,OFFSET ModeInfoBlockPtr;es:di points to buffer
          INT   10H                    ;bios video system call
          MOV   AX,4F02H               ;set vesa vbe 2.0 mode
          MOV   BX,0C103H              ;mode 800x600x08 (256 colors)
          INT   10H                    ;bios video system call
;-DRAW-MAZEBOARD-----------------------;--------------------------------------
          MOV   EDI,DWORD PTR ES:DI[28H];ModeInfoBlock[28h] = 'PhysBasePtr'
          XOR   AX,AX                  ;ax=0
          MOV   GS,AX                  ;gs=0
          MOV   ES,AX                  ;es:edi=1st add.of 256KB video buffer
          MOV   DS:[PHYSCR],EDI        ;save start of physical screen
          MOV   ECX,240000             ;240000=800*600/2
          REP   STOS WPTR ES:[EDI]     ;clear 256kb video buffer
          MOV   DS:[LOGSCR],EDI        ;save start of logical screen
          ADD   EDI,448-32             ;edi=offset of sprites in logical scr.
          MOV   ESI,OFFSET SPRT        ;esi=offset of map
          MOV   EBX,OFFSET sprites_raw ;ebx=offset of tiles
          MOV   ECX,SPRIHEIGHT         ;ecx=map height
          MOV   EDX,SPRIWIDTH          ;edx=map width       ;12416=800*16
          MOV   EAX,800*16-SPRIWIDTH*16;eax=column alignment
          MOV   EBP,((49-1)*16)        ;ebp=tilemap alignment
          CALL  SETMAZ000              ;draw maze in logical screen
;-INITIALIZE-GFX-FONTS-----------------;--------------------------------------
          MOV   DX,OFFSET CREDITS      ;dx=offset of credits+digit string
          MOV   AH,9                   ;print message
          INT   21H                    ;call dos
          MOV   ESI,DS:[PHYSCR]        ;esi=offset of physical screen
          ADD   ESI,800*(64-4-4)+176   ;esi=offset of printed digit string
          MOV   EDI,DS:[LOGSCR]        ;edi=offset of logical screen
          ADD   EDI,800*500            ;edi=offset of score fonts
          MOV   CX,10                  ;10=0....9 sprites
NUMERIC:  CALL  PUTSPRITE              ;put prize on screen
          ADD   ESI,32                 ;align on shl5 boundaries
          ADD   EDI,32                 ;align on shl5 boundaries
          LOOP  NUMERIC                ;repeat for all digits
;-DO-EYES------------------------------;--------------------------------------
;         SUB   ESI,800*4              ;esi points to ->"00"
          MOV   EDI,DS:[LOGSCR]        ;address of logical screen
          ADD   EDI,455+800*22         ;sub edi,356665
          MOV   BX,4                   ;number of ghosts
EYES1:    MOV   CX,11                  ;11=0....10 sprites
EYES2:    CALL  PUTSPRITE2             ;put prize on screen
          ADD   EDI,32                 ;align on shl5 boundaries
          LOOP  EYES2                  ;repeat for all moves of 1 ghost 
          ADD   EDI,25248              ;25248=800*32-32*11
          DEC   BX                     ;decrement number of ghosts left
          JNZ   EYES1                  ;repeat for all ghosts
;-INITIALIZE-RTC-----------------------;--------------------------------------
          PUSH  ES                     ;save es register
          PUSH  DS                     ;save ds register
          MOV   AX,3508H               ;read rtc vector in ivt
          INT   21H                    ;dos call (raw ivt fails)
          MOV   AX,2508H               ;read rtc vector in ivt
          MOV   WPTR DS:[INT08H+00],BX ;save    handler offset
          MOV   WPTR DS:[INT08H+02],ES ;restore handler offset
          PUSH  CS                     ;set new handler segment
          POP   DS                     ;set new handler segment
          MOV   DX,OFFSET SNDDRV000    ;set new handler offset
          INT   21H                    ;dos call (raw ivt fails) 
          POP   DS                     ;restore ds register
          MOV   BX,65532/NEWRATE       ;new frequency
          CALL  SETHTZ000              ;set new frequency
;-INITIALIZE-CONSTANTS-----------------;--------------------------------------
          MOV   ESI,OFFSET PACCORDX    ;here we save the original structures
          MOV   EDI,OFFSET SAVESTRUCT  ;because contrary to start of code we
          CALL  COPYBLK                ;will need them again
;-INITIALIZE-SOUNDS--------------------;--------------------------------------
          MOV   ECX,5                  ;random data of sound (5 banks)
          MOV   EDI,OFFSET ROMFONTS    ;store in array sequentially
GETDATA:  MOV   AX,1130H               ;"return font pointer" bios call 
          MOV   BH,CL                  ;bh=font number requested
          PUSH  CX                     ;save cx register
          INT   10H                    ;video bios call
          POP   CX                     ;restore cx register
          MOV   WPTR DS:[DI+2],ES      ;es=segment of requested font
          MOV   WPTR DS:[DI+0],BP      ;bp=offset of requested font
          ADD   DI,4                   ;add fontinfo array entry size
          LOOP  GETDATA                ;repeat for all fonts (aka sound banks)
          POP   ES                     ;restore es register
;-DISPLAY-UPPER-BAR--------------------;--------------------------------------
          mov   cx,3                   ;
          MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
          mov   ebx,offset marqueecol  ;
tricol:   mov   dx,wptr ds:[ebx]       ;
          pushad                       ;
          MOV   ESI,OFFSET MARQUEE     ;  ;length =984 bytes
          add   edi,288+800*13         ;
          mov   ecx,33                 ;height in pixel
marquee0: push  cx                     ;
          mov   ecx,28                 ;
marquee1: mov   ax,ds:[esi]            ;
          mov   bx,8                   ;
marquee2: test  al,BPTR DS:[ADPCMTTL+BX-1]
          jz    marquee3               ;
          jmp   short marquee4         ;
marquee3: mov   bptr es:[edi],dl       ;
marquee4: inc   edi                    ;
          DEC   bx                     ;
          jnz    marquee2              ;
          dec   esi                    ;
          loop  marquee1               ;
          pop   cx                     ;
          add   edi,576                ;
          loop  marquee0               ;
          popad                        ;
          add   di,wptr ds:[ebx+2]     ;
          add   ebx,4                  ;
          loop  tricol                 ;
;-ONE-LIFE-----------------------------;--------------------------------------
; everytime a player loses a life we   ;
; come back here, which redraws the    ;
; whole maze                           ;
;-ONE-LIFE-----------------------------;--------------------------------------
ONELIFE:  MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
          MOV   ESI,OFFSET MAZE        ;esi=offset of map
          MOV   EBX,OFFSET TILES001_RAW;ebx=offset of tiles
          MOV   ECX,MAZEHEIGHT         ;ecx=map height
          MOV   EDX,MAZEWIDTH          ;edx=map width
          MOV   EAX,800*16-MAZEWIDTH*16;eax=column alignment
          MOV   EBP,((38-1)*16)        ;ebp=tilemap alignment
          CALL  SETMAZ000              ;draw maze in logical screen
          CALL  SETPAL000              ;color tiles
;-- SAVE A DOT AND A POWERPIL          ;we copy a dot and a power
          MOV   CX,2                   ;since only tiles need play restoring
          MOV   ESI,DS:[LOGSCR]        ;esi=offset of screen
          ADD   ESI,(23*16-7)*800+10   ;esi=offset of src powerpill-dot
          MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
          ADD   EDI,(159*800+448+32)+32;esi=offset of dst powerpill-dot
DOBOTH:   CALL  PUTSPRITE              ;put prize on screen
          ADD   ESI,32                 ;add size of tile
          ADD   EDI,32                 ;add size of tile
          LOOP  DOBOTH                 ;repeat for all tiles
;-DISPLAY-LOWER-BAR--------------------;--------------------------------------
;display bottom status bar ie : LIVES qnd FRUIT level
          MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
          ADD   ESI,(175*800+448+32-800*16-32)  
          MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
          ADD   EDI,800*560+592
          CALL  PUTSPRITE              ;put prize on screen
          DEC   WPTR DS:[lifecnt]
          JZ    GAMEEXIT
;show lives
          MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
          ADD   ESI,448+96*1+32*0+2+800+G1*0
          MOV   CX,WPTR DS:[lifecnt]
          MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
          ADD   EDI,800*560+176+32*2
ONELIFEL: CALL  PUTSPRITE              ;put prize on screen
          SUB   EDI,32
          LOOP  ONELIFEL
; clear the taken life away at bottom
          MOV   ESI,(175*800+448+32-800*16)+96   ; we CLEAR it
          ADD   ESI,DS:[LOGSCR]        ;edi=offset of screen
          MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
          MOV   DX,32
          MOV   CX,WPTR DS:[lifecnt]
          sub   cx,2
          shl   dx,cl
          add   edi,800*560+176+32*2
          sub   EDi,edx
          CALL  PUTSPRITE              ;put prize on screen
          MOV   ESI,OFFSET SAVESTRUCT    ;base of all CSTs
          MOV   EDI,OFFSET PACCORDX
          CALL  COPYBLK               
ghoststd1:MOV   EDI,OFFSET pal_state1  ;
          CALL  SETSTATE               ;
          mov   dptr ds:[ghoststate],0
;-----------------------------------------------------------------------------
; INTRO ENDS HERE
;-----------------------------------------------------------------------------
ALIGN 4                                ;align for fastest branching
GAMELOOP: test  dptr ds:[ghoststate],1
          jz    ghoststd2
          CMP   dptr ds:[ghosttime],16
          JNC   NOFLASH
          MOV   EDI,OFFSET pal_state3  ;
          TEST  dptr ds:[ghosttime],2
          JZ    WHITE
          MOV   EDI,OFFSET pal_state2  ;
WHITE:    CALL  SETSTATE               ;
NOFLASH:  dec   dptr ds:[ghosttime]
          jnz   ghoststd2
          jmp   short ghoststd1
ghoststd2:CALL  SWPSCR000              ;copy logical to physical screen
          MOV   EBP,OFFSET PACCORDX4   ;process ghost number 4
          CALL  GETKBD000              ;read keyboard
          MOV   EBP,OFFSET PACCORDX3   ;process ghost number 3
          CALL  GETKBD000              ;read keyboard
          MOV   EBP,OFFSET PACCORDX2   ;process ghost number 2
          CALL  GETKBD000              ;read keyboard
          MOV   EBP,OFFSET PACCORDX1   ;process ghost number 1
          CALL  GETKBD000              ;read keyboard
          MOV   EBP,OFFSET PACCORDX    ;process ghost number 
          CALL  GETKBD000              ;read keyboard
          CMP   DS:[DOTNUMS],244       ;if board cleared
          JZ    GAMEEXIT               ;continue gameloop
          CMP   AX,011BH               ;if esc key not pressed
;         CMP   AL,1BH                 ;if esc key not pressed
          JNZ   GAMELOOP               ;continue gameloop
;**************************************;***********************************************
; GAME EXIT
;**************************************;***********************************************
GAMEEXIT: MOV   AX,2508H               ;write rtc vector in ivt
          MOV   DX,WPTR DS:[INT08H+00] ;set old handler offset
          PUSH  WPTR DS:[INT08H+02]    ;set old handler segment
          POP   DS                     ;set old handler segment
          INT   21H                    ;dos call (raw ivt fails)
          MOV   BX,65532               ;old frequency
          CALL  SETHTZ000              ;set old frequency
          IN    AL,61H                 ;read speaker state
          AND   AX,0FCH                ;set speaker off
          OUT   61H,AL                 ;output command
          MOV   AX,3                   ;else set tty mode co80
          INT   10H                    ;bios video system call
          MOV   AX,4C00H               ;set error code
          INT   21H                    ;return to dos shell
;**************************************;***********************************************
;SET COLORS
;**************************************;***********************************************
SETPAL000:MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
          add   esi,mazewidth*16
          mov   bx,offset pacpal
          mov   cx,6
dobands:  push  cx
          mov   cx,32
          mov   ah,bptr ds:[bx]
SETPAL001:push  cx
          mov   cx,176*2;800-592;((38-1)*16)        ;ebp=tilemap alignment
setpal002:mov   al,bptr es:[esi]
          test  al,al
          jz    setpal003
          mov   bptr es:[esi],ah
setpal003:inc   esi
          loop  setpal002
          add   esi,(800-176*2);592
          pop   cx
          loop  setpal001
          inc   bx
          pop   cx
          loop  dobands
          RET                          ;return to caller
;--------------------------------------;--------------------------------------
;                                      ;
; Do maze collision test (part #1)     ;out: a) DS:[EBP+36] is displacement
;                                      ;     b) a!=0 =>EDX=ydelta ECX=xdelta
;                                      ;     c) a!=0 =>AL=tile value
;                                      ;
;--------------------------------------;--------------------------------------
TSTCOLXXX:MOV   EDI,DS:[EBP+12]        ;start of pac index
          MOV   EAX,DS:[EBP+04]        ;refresh pacman maze x position
          MOV   EBX,DS:[EBP+08]        ;refresh pacman maze y position
          MOV   EDX,DS:[EDI+24]        ;pacman maze position y delta
          MOV   ECX,DS:[EDI+20]        ;pacman maze position x delta
          ADD   EBX,EDX                ;absolute maze index
          ADD   EAX,ECX                ;absolute maze index
          ADD   EBX,EAX                ;absolute maze index
          MOV   AL,BPTR DS:[MAZE+EBX]  ;dl=read tile value
          RET                          ;return to caller
TSTCOL000:CALL  TSTCOLXXX              ;get current maze tile value
          MOV   EDI,DS:[EDI+16]        ;potential screen offset diplacement
          TEST  AL,AL                  ;test if empty previously dot tile
          JZ    TSTCOL555              ;if so validate move
          TEST  AL,0C0H                ;test if dot/energizer or intersection
          JNZ   TSTCOL555              ;if so validate move
          XOR   EDI,EDI                ;else displacement is zero
TSTCOL555:CMP   DPTR DS:[EBP+04],27    ;test if tunnel right
          JNZ   TSTCOL666              ;else test if tunnel left
          CMP   BPTR DS:[EBP+24],77    ;and test if key right
          JNZ   TSTCOL666              ;else test if tunnel left
          CALL  CLRBLK000              ;clear block at this postion
          MOV   DPTR DS:[EBP+04],0     ;refresh pacman maze x position
          SUB   DPTR DS:[EBP+00],2*(176+32+8)     ;refresh pacman maze x position
          JMP   SHORT TSTCOL999        ;exit
TSTCOL666:CMP   DPTR DS:[EBP+04],0     ;test if tunnel left
          JNZ   TSTCOL999              ;else exit
          CMP   BPTR DS:[EBP+24],75    ;and test if key left
          JNZ   TSTCOL999              ;else test if tunnel left
          CALL  CLRBLK000              ;clear block at this postion
          MOV   DPTR DS:[EBP+04],27     ;refresh pacman maze x position
          ADD   DPTR DS:[EBP+00],2*(176+32+8)     ;refresh pacman maze x position
TSTCOL999:MOV   DPTR DS:[EBP+36],EDI   ;save *this* potential screen offset
;--------------------------------------;--------------------------------------
;CLEAR BLOCK                           ;
;--------------------------------------;--------------------------------------
CLRBLK000:PUSH  EDI
          PUSH  DPTR DS:[EBP+00]
          POP   DPTR DS:[EBP+44]
          MOV   ESI,(175*800+448+32-800*16)+96 ;else is pill
          CALL  RESTX
          POP   EDI
          RET
;--------------------------------------;--------------------------------------
;                                      ;
;SWAP SCREEN                           ;
;                                      ;
;--------------------------------------;--------------------------------------
ALIGN 4                                ;align for fastest branching
SWPSCR000:MOV   EBP,OFFSET paccordx    ;base of all CSTs
;-FOR-EACH-CHARACTER-------------------;-BEGIN--------------------------------
          PUSHAD                       ;save all registers
          MOV   DPTR DS:[CHARNUM],CHARMAX    ;start with character 0
onecharx: CALL  TSTCOL000              ;test collision
          TEST  DPTR DS:[EBP+36],0FFFFH;test if displacement granted
          JZ    BADMOVE                ;if not then do not test for events
;################ DIFFERENCIATES PACMAN FROM OTHER CHARACTERS
          TEST  DPTR DS:[EBP+28],1     ;1=user (key) 0=computer (auto)
          JZ    AUTOCHAR               ;if user then querry keyboard
;################ PACMAN TESTS EXCLUSIVELY
          PUSHAD
          PUSH  EBP
          MOV   EAX,DS:[EBP+0004]       ;EAX= pacman maze x position
          MOV   EBX,DS:[EBP+0008]       ;EBX= pacman maze y position
;--------- begin CHERRY TEST-----------;--------------------------------------
          CMP   DPTR DS:[CHERRYSTATE],1
          JZ    SHOWIT
          CMP   DPTR DS:[CHERRYSTATE],0
          JZ    DONEIT
TIMEIT:   DEC   DPTR DS:[CHERRYTIME]   ;else CHERRYSTATE= 2
          JNZ   SHOWIT
          MOV   ESI,(175*800+448+32-800*16)+96   ; we CLEAR it
          MOV   DPTR DS:[CHERRYSTATE],0
          JMP   SHORT WIPEIT
SHOWIT:   MOV   ESI,(175*800+448+32-800*16-32)   ; we SHOW it
WIPEIT:   ADD   ESI,DS:[LOGSCR]        ;edi=offset of screen
          MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
          ADD   EDI,(800*(35+24*16)+160+14*16-170-800*(60+64+32))
          CALL  PUTSPRITE              ;put prize on screen
TESTIT:   CMP   EAX,((MAZEWIDTH/02)*1)
          JNZ   NOCHERRY
          CMP   EBX,((MAZEWIDTH*17)*1)
          JNZ   NOCHERRY
          ADD   DS:[SCORE_NUM],10      ;add 100 for cherry
          MOV   DPTR DS:[CHERRYSTATE],0
NOCHERRY:
DONEIT:
;--------- begin GHOSTs TEST-----------;--------------------------------------
          MOV  ECX,4
NOGHOSTS: ADD  EBP,CHARSTRUCTSIZ
          CMP  EAX,DS:[EBP+0004]      ;refresh pacman maze x position
          JNZ  NOGHOST
          CMP  EBX,DS:[EBP+0008]      ;refresh pacman maze y position
          JNZ  NOGHOST
;-------------- ghost collision
          TEST DPTR DS:[GHOSTSTATE],1
          JNZ  BLUESTATE
;-------------- pac dies
NOPSEC000:XOR   DX,DX                  ;number of milliseconds=0 5 DONTCARE
          MOV   AH,86H                 ;function wait
          INT   15H                    ;bios function call
          POP   EBP
          POPAD
          JMP   ONELIFE
BLUESTATE:INC   dptr ds:[ghostnum]      ;increment number of eaten ghosts
          mov   ebx,10                  ;1=200 2=400 3=800 4=1600 pts
          mov   ecx,dptr ds:[ghostnum]  ;ghostnum is at least 1 therefore
          shl   ebx,cl                  ;cl=1=200 cl=2=400 cl=3=800 cl=4=1600
          ADD   dptr DS:[SCORE_NUM],ebx ;update player's score
          MOV   DPTR DS:[EBP+0000],(800*(35+14*16)+160+14*16+8-800*60-176)+800*2+6-4      ;refresh pacman maze phy offset
          MOV   DPTR DS:[EBP+0004],((MAZEWIDTH/02)*1)      ;refresh pacman maze x position
          MOV   DPTR DS:[EBP+0008],((MAZEWIDTH*13)*1)      ;refresh pacman maze y position
NOGHOST:  LOOP  NOGHOSTS
GHOSTSEND:POP   EBP
          POPAD
;--------- begin DOTs TEST-------------;--------------------------------------
          MOV   WPTR DS:[SAMPNUM],1    ;default back sound
          test  WPTR DS:[ghoststate],1
          jz    sound1ok
          INC   WPTR DS:[SAMPNUM]      ;ghost back sound
sound1ok: TEST  AL,080H                ;test if dot/powerpill present
          JZ    AUTOCHAR               ;if not then do not test for events
          MOV   WPTR DS:[SAMPNUM],3    ;dot chomp sound
          test  WPTR DS:[ghoststate],1
          jz    sound2ok
          INC   WPTR DS:[SAMPNUM]      ;ghost dot chomp sound
sound2ok: INC   DS:[DOTNUMS]
          INC   DS:[SCORE_NUM]         ;add 10 to score per dot       
          CMP   DS:[DOTNUMS],70        ;test if 70 dots passed
          JNZ   NOCHERRY0
          JMP   SHORT CHERRY3
NOCHERRY0:CMP   DS:[DOTNUMS],170        ;test if 70 dots passed
          JNZ   CHERRY0
CHERRY3:  MOV   DPTR DS:[CHERRYSTATE],2
          MOV   DPTR DS:[CHERRYTIME],50
CHERRY0:  CMP   BPTR DS:[MAZE+EBX],08AH;test if powepill
          JNZ   yof
          jmp   SHORT yaf
yof:      CMP   BPTR DS:[MAZE+EBX],0CAH;test if powepill
          JNZ   NOPOWER
yaf:      ADD   DS:[SCORE_NUM],4       ;add 40 to score per dot so total = 50
          MOV   EDI,OFFSET pal_state2  ;
          pushad
          CALL  SETSTATE               ;
          popad
          mov   dptr ds:[ghostnum],0   ;reset number of eaten ghosts
          mov   dptr ds:[ghosttime],50 ;set time of counter-attack
          mov   dptr ds:[ghoststate],1 ;set state of ghost to blue
NOPOWER:  AND   BPTR DS:[MAZE+EBX],40H ;dl=clear tile value
;-UPDATE-MAZE-POS----------------------;--------------------------------------
AUTOCHAR: ADD   DS:[EBP+0004],ECX      ;we end up here if not pacman
          ADD   DS:[EBP+0008],EDX      ;refresh pacman maze x & y positions
          PUSH  DPTR DS:[EBP+0040]
          POP   DPTR DS:[EBP+0048]
          MOV   DS:[EBP+0040],EAX      ;save- the tile to restore 
          PUSH  DPTR DS:[EBP+0000]     ;get base offset of tile
          POP   DPTR DS:[EBP+0044]     ;save- the offset where to restore tile
BADMOVE:  ADD   EBP,CHARSTRUCTSIZ        ;we end  up here if displacement was refused
          dec   DPTR DS:[CHARNUM]      ;next character data off is+=structsiz
          JNZ   onecharx               ;repeat for all characters
          POPAD                        ;restore all registers
;-FOR-EACH-ANIM-FRAME------------------;--------------------------------------
          MOV   EBP,OFFSET paccordx    ;base of all CSTs
          MOV   DS:[oneeveryfour],4    ;repeat for all 4 comp pac anim frames
onemove:PUSHAD                       ;save all registers
;-FOR-EACH-CHARACTER-------------------;-BEGIN--------------------------------
          MOV   DPTR DS:[CHARNUM],CHARMAX    ;start with character 0
;-CLEAR-PREVIOUS-POS-BLOCK-------------;--------------------------------------
onechar:  CMP  DPTR DS:[CHARNUM],CHARMAX ;start with character 0
          JZ    NORESTORE
;-RESTORE-BACKGROUND-OF-OLD-SPRITE-----;--------------------------------------
          MOV   EAX,DPTR DS:[EBP+0048] ;get old tile number
REST1:    CMP   AL,85H                 ;is it dot
          JNZ   REST2
          JMP   SHORT REST3
REST2:    CMP   AL,0C5H                 ;is it dot
          JNZ   REST4
REST3:    MOV   ESI,(175*800+448+32-800*16)+64
          JMP   SHORT REST9
REST4:    CMP   AL,8AH                 ;is it dot
          JNZ   REST5
          JMP   SHORT REST6
REST5:    CMP   AL,0CAH                 ;is it dot
          JNZ   REST7
REST6:    MOV   ESI,(175*800+448+32-800*16)+32 ;else is pill
          JMP   SHORT REST9
REST7:    MOV   ESI,(175*800+448+32-800*16)    
REST9:    call  restx
          JMP   SHORT RESTORED
NORESTORE:MOV   ESI,(175*800+448+32-800*16)+96 ;else is pill
          call  restx
;-LOAD-THIS-INSTANCE'S-VALS-AND-ALIGN--;--------------------------------------
RESTORED: MOV   EDI,DS:[EBP+12]        ;start of pac index
          MOV   EAX,DS:[EBP+36]        ;pacman screen position pixel delta
          ADD   EDI,DS:[EBP+20]        ;get animated pac sprite number value
          MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
          ADD   ESI,DS:[EDI]           ;get animated pac sprite offset value
          MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
;-UPDATE-SPRITE-POS-AND-DOUBLE-BUFFER--;--------------------------------------
          ADD   DS:[EBP+00],EAX        ;update sprite position
          ADD   EDI,DS:[EBP+00]        ;also set new position this frame
          CALL  PUTSPRITE              ;put character on screen
;-TEST-ANIM-OVERLAP--------------------;--------------------------------------
          ADD   WPTR DS:[EBP+20],4     ;get next of four chomp positions
          TEST  WPTR DS:[EBP+20],0FFF0H;test if less than 4 position
          JZ    getnexta               ;if so keep going
          MOV   WPTR DS:[EBP+20],0     ;else reset count to position 0
;-SET-SCORE----------------------------;--------------------------------------
          xor     dx,dx
          mov     ax,wptr ds:[score_num]
          add     ax,10000             ;artificial align digits
          mov     di,offset score_str2
          mov     si,dx                ;Save high word in SI as well
          mov     bx,10                ;Divisor
          mov     cx,sp                ;Remember stack location
          STC
SETSCO001:div     bx                   ;Divide, result stays in AX, remainder in DX
          push    dx                   ;Save remainder
          xor     dx,dx                ;Prepare for next round
          test    ax,ax                ;Any more digits?
          jnz     SETSCO001
store:    POP     WPTR DS:[DI]
          INC     DI
          cmp     cx,sp
          jne     store
          MOV     ESI,DS:[LOGSCR]        ;edi=offset of screen
          add     ESI,509*800
          MOV     EDI,DS:[PHYSCR]        ;edi=offset of screen
          ADD     EDI,800*29+448+104-8-8
          MOV     eCX,5
          MOV     EBX,offset score_str3
PUTDIGITS:MOV     AL,BPTR DS:[EBX]
          AND     EAX,0FFH
          SHL     EAX,5
          ADD     ESI,EAX
          CALL    PUTSPRITE              ;put prize on screen
          ADD     EDI,8
          INC     EBX
          SUB     ESI,EAX
          LOOP    PUTDIGITS
;-FOR-EACH-CHARACTER-------------------;-END----------------------------------
getnexta: ADD   EBP,CHARSTRUCTSIZ      ;next character data off is+=structsiz
          dec   DPTR DS:[CHARNUM]      ;start with character 0
          JNZ   onechar                ;repeat for all characters
;-BLIT-SCREEN--------------------------;--------------------------------------
          MOV   EDI,DS:[PHYSCR]        ;set physical screen as destination
          MOV   ESI,DS:[LOGSCR]        ;set logical screen as source
          ADD   EDI,176+800*60         ;
          MOV   BX,495                 ;
swpscr00x:MOV   CX,112                 ;112=448/4
SWPSCR001:LODS  DPTR ES:[ESI]          ;read 4 bytes from source
          STOS  DPTR ES:[EDI]          ;write 4 pixels to destination
          LOOP  SWPSCR001              ;repeat n times
          ADD   ESI,800-448            ;
          ADD   EDI,800-448            ;
          DEC   BX                     ;decrement counter
          JNZ   SWPSCR00x              ;repeat n times
;-FOR-EACH-ANIM-FRAME------------------;-END----------------------------------
          POPAD                        ;restore al registers
          DEC   DS:[oneeveryfour]      ;decrement  anim count
          JNZ   onemove                ;repeat for all 4 positions
          RET                          ;return to caller
;**************************************;***********************************************
;GENERIC 32x32 PUTSPRITE 
;**************************************;***********************************************
PUTSPRITE:pushAd
          MOV   BX,28                 ;
swpscr00y:MOV   CX,7                 ;112=448/4
SWPSCR00z:LODS  DPTR ES:[ESI]          ;read 4 bytes from source
          STOS  DPTR ES:[EDI]          ;write 4 pixels to destination
          LOOP  SWPSCR00z              ;repeat n times
          ADD   ESI,800-28            ;
          ADD   EDI,800-28            ;
          DEC   BX                     ;decrement counter
          JNZ   SWPSCR00y              ;repeat n times
          popAd
          RET                          ;return to caller

PUTSPRITE2:pushAd
          MOV   BX,28                  ;
swpscr01y:MOV   CX,7                  ;112=448/4
SWPSCR01z:LODS  DPTR ES:[ESI]          ;read 4 bytes from source
          OR    EAX,DPTR ES:[EDI]
          STOS  DPTR ES:[EDI]          ;write 4 pixels to destination
          LOOP  SWPSCR01z              ;repeat n times
          ADD   ESI,800-28            ;
          ADD   EDI,800-28            ;
          DEC   BX                     ;decrement counter
          JNZ   SWPSCR01y              ;repeat n times
          popAd
          RET                          ;return to caller

;**************************************;***********************************************
;GENERIC TILE DECOMPRESSION
;UNCOMPRESS TILES
;**************************************;***********************************************
UNCTIL000:                             ;decompresses maze tiles
;first we do HORIZONTAL PASS
          MOV   ESI,(38-1)*16          ;reposition line or column source 
          MOV   EDI,OFFSET tiles001_raw+(16-1);get ptr to raw pixel data
          MOV   EDX,-1                 ;pixel destination position delta
          MOV   EBP,(38+1)*16          ;line destination position delta
          MOV   EAX,OFFSET tiles001_raw;data source offset
          MOV   EBX,OFFSET TILE        ;get ptr to decompressing table
          MOV   ECX,0F000026H          ;ecx = 00 15 00 38 d =# 8x8 tiles
          PUSHAD                       ;save ebx ecx registers
          CALL  UNCTIL002              ;uncompress tiles horizontally
;second we do HORIZONTAL PASS
          POPAD                        ;restore ebx ecx registers 
          MOV   EDI,OFFSET tiles001_raw+38*16*14;
trythis:  NEG   EDX                    ;pixel destination position delta
          NEG   EBP                    ;column destination position delta    
          CALL  UNCTIL002              ;uncompress tiles vertically
          RET
;- - - - - - - - - - - - - - - - - -
UNCTIL001:;decompresses sprite tiles
;first we do HORIZONTAL PASS
          MOV   ESI,(49-1)*16          ;reposition line or column source 
          MOV   EDI,OFFSET sprites_raw+(16-1);get ptr to raw pixel data
          MOV   EDX,-1                 ;pixel destination position delta
          MOV   EBP,(49+1)*16          ;line destination position delta
          MOV   EAX,OFFSET sprites_raw;data source offset
          MOV   EBX,OFFSET SPRI        ;get ptr to decompressing table
          MOV   ECX,10000031H          ;ecx = 00 16 00 49 d =# 8x8 tiles
          PUSHAD                       ;save ebx ecx registers
          CALL  UNCTIL002              ;uncompress tiles horizontally
;second we do HORIZONTAL PASS
          POPAD                        ;restore ebx ecx registers 
          MOV   EDI,OFFSET sprites_raw+49*16*15
          call  trythis
          RET                          ;return to caller
UNCTIL002:PUSHAD                       ;save number of 8x8 tiles to decompress
          MOV   BL,BYTE PTR DS:[EBX]   ;read tile
          TEST  BL,BL                  ;is this still uncompressed already
          JZ    UNCTIL999              ;if so then skip uncompressing
          TEST  BL,40H                 ;test for horizontal code
          JZ    UNCTIL003              ;if so the process horizontally
          TEST  EBP,80000000H          ;test for vertical decompression pass
          JNZ   UNCTIL004              ;if so process this tile
          JMP   SHORT UNCTIL999        ;else skip this tile
UNCTIL003:TEST  EBP,80000000H          ;test for vertical decompression pass
          JNZ   UNCTIL999              ;if not then skip this tile
UNCTIL004:AND   EBX,0000003FH          ;get source tile number
          SHL   BX,4                   ;get source offset
          ADD   eBX,EAX                ;tasm warning vs. saves one byte
          bswap ecx
UNCTIL005:PUSH  CX                     ;save number of colums or lines
          MOV   CX,16                  ;number of pixels per colums or lines
UNCTIL006:MOV   AL,BYTE PTR DS:[EBX]   ;get source pixel value
          MOV   BYTE PTR DS:[EDI],AL   ;set destination pixel value
          INC   EBX                    ;inc source
          ADD   EDI,EDX                ;reposition pixel destination 
          LOOP  UNCTIL006              ;process next pixel
          ADD   EBX,ESI                ;reposition line or column source
          ADD   EDI,EBP                ;reposition line or column destination
          POP   CX                     ;restore number of colums or lines
          LOOP  UNCTIL005              ;process next line or column
UNCTIL999:POPAD                        ;restore bx cx edi
          INC    eBX                   ;point to next tile in uncompress table
          ADD    EDI,16                ;keep edi=ebx*16
          LOOP   UNCTIL002             ;process next tile
          RET                          ;return to caller
;**************************************;***********************************************
;GENERIC  TILEMAPPING (tiles are 8x8)  ;
;1.draws  the maze tilemap             ;
;2.draws  the sprites tilemap          ;
;INPUT:   ESI=offset of map            ;
;         EDI=offset of screen         ;
;         EBX=offset of tiles          ;
;         ECX=map height(ie:MAZEHEIGHT);
;         EDX=map width (ie:MAZEWIDTH) ;
;         EAX=edi add  (12352)
;         EBP=innerloop ADD ESI,592 (tilemap width)
;         16 is constant 784=800-16 is constant 48176
;**************************************;***********************************************
SETMAZ000:
DOROWS:   PUSH  CX                    ;save number or rows
          MOV   ECX,EDX                ;get mapwidth
DO1ROW:   PUSHAD                       ;push esi/push edi/push ecx
READTILE: XOR   EAX,EAX                ;clear ah
          PUSHAD                       ;push esi/push edi/push ecx
          LODSB                        ;al=ds:[esi]
          MOV   DX,AX                  ;mov dl,al
          AND   AL,3FH                 ;remove 3rd color mask
          MOV   ESI,EBX                ;esi=offset of tiles
          SHL   EAX,4                  ;get indexed tile displacement
          ADD   ESI,EAX                ;get raw tile offset
          MOV   CX,16                 ;tileheight rows
COPYBITMAP:PUSH CX                    ;save number of rows
          MOV   CX,16                  ;mov cl,16 tilewidth columns
copypix:  LODSB                        ;load value
          TEST  AL,AL                  ;test if visible
          JZ    nocolortst             ;if not skip
          TEST  DL,80h;DL                  ;test if NOT 3rd color case
          JZ    nocolortst             ;if so skip
          MOV   AL,7                   ;else 3rd color=7 (pale white)
          TEST  DL,0AH                 ;test if power pill
          JZ    nocolortst             ;if not keep palette index 7
          INC   AL                     ;if so asign palette index 8
nocolortst:STOS BPTR ES:[EDI]          ;write color byte to screen
          LOOP  copypix                ;repeat for all the tilewidth columns
          ADD   ESI,EBP                ;realign src with next data column 
          ADD   EDI,(800-16)           ;realign dst with next screen column 
          POP   CX                    ;restore number of rows
          LOOP  COPYBITMAP             ;repeat for mapheight rows
          POPAD                        ;pop ecx/pop edi/pop esi
          LOOP  READTILE               ;repeat for number of tiles
          POPAD                        ;pop ecx/pop edi/pop esi
          INC   ESI                    ;esi++
          ADD   EDI,16                 ;edi=edi+16
          LOOP  DO1ROW                 ;and do one mapcolumns
          ADD   EDI,EAX                ;edi=edi+maprow sourcewidth in pixel
          POP   CX                    ;restore number of maprows
          LOOP  DOROWS                 ;repeat for mapheight rows
          RET                          ;return to caller
;**************************************;***********************************************
;INSTALL SOUND DRIVER                  ; 
;**************************************;***********************************************
;    at frequency higher than the normal 18 times a second, by
;    speeding up system timer 0.  In this example, interrupts 
;    occur at 50 times normal, or 910 times per second.
SETHTZ000:
;         CLI                          ;disable interrupts
          MOV   AL,36H                 ;command for 16-bit,
          OUT   43H,AL                 ;mode 3, binary operation
;         JMP   $+2                    ;hardware wait
;         JMP   $+2                    ;hardware wait
          MOV   AX,BX                  ;counter value
          OUT   40H,AL                 ;load timer 0 count LSB
;         JMP   $+2                    ;hardware wait
;         JMP   $+2                    ;hardware wait
          MOV   AL,AH                  ;get most significant byte
          OUT   40H,AL                 ;load timer 0 count MSB
;         STI                          ;enable interrupts
          RET                          ;return to caller
;**************************************;***********************************************
;PLAY SOUND                            ; 
;**************************************;***********************************************
SNDDRV000:cli
          PUSHFd
          pushad
;xor ecx,ecx
          MOV     CX,WPTR DS:[SAMPNUM]
;and cx,7
          MOV     ESI,OFFSET PHYSCR;   ;load off. of snd. data
GETSAMP:  ADD     ESI,SAMPINFSIZ    ;PHYSCR=SOUND1-SAMPINFSIZ
          LOOP    GETSAMP              ;repeat till selected sample
          MOV     EBX,OFFSET INT08H    ;load off.of bank data
          MOV     ECX,DPTR DS:[ESI+0]  ;load bank num.
GETBANK:  ADD     EBX,BANKINFSIZ       ;INT08H=ROMFONTS-BANKINFSIZ
          LOOP    GETBANK
          LGS     DI,DPTR DS:[EBX]     ;load seg./off. of bank
          ADD     EDI,DPTR DS:[ESI+4]  ;load beg. off. of sample
          CALL    SNDSPK000            ;play sample
          popad
          DEC   DS:[countdown]
          JNZ   int8_exit         
          MOV   DS:[countdown],NEWRATE ; reload counter
          POPFd
          jmp   dword ptr DS:[INT08H+0]     ; process old interrupt 8
int8_exit:CLI                        ; disable interrupts
          PUSH  AX
          MOV   AL,20H            ; end-of-interrupt command
          OUT   20H,AL            ; issue command to controller
          POP   AX
          POPFd
          IRET
;**************************************;***********************************************
;SOUND SPEAKER                         ; 1BIT TTL LOGIC ADPCM
;**************************************;***********************************************
SNDSPK000:MOV   BX,WPTR DS:[BITCNT]
          INC   WPTR DS:[BITCNT]
          MOV   CL,BPTR DS:[ADPCMTTL+BX]
          TEST  CL,CL
          JNZ   BITOK
          MOV   WPTR DS:[BITCNT],0
          MOV   CL,128
          INC   WPTR DS:[BYTECNT]
          MOV   EDX,DPTR DS:[ESI+8]    ; Load siz. of sample
          CMP   WPTR DS:[BYTECNT],DX
          JC    BITOK
          MOV   WPTR DS:[BYTECNT],0
BITOK:    MOV   BX,WPTR DS:[BYTECNT]
          IN    AL,61H                 ;read speaker state
          TEST  BPTR GS:[DI+BX],CL        ;EDI=SOUND
          JZ    SPKOFF
          OR    AL,3                   ;set speaker on BRUIT
          JMP   SHORT SPKOK
SPKOFF:   AND   AL,0FCH                ;set speaker off
SPKOK:    OUT   61H,AL                 ;set speaker state
          INC   DS:[democount]
          CMP   wptr DS:[democount],182*(NEWRATE/10) ; 1 second elapsed ?
          JB    demo3              ; jump if not
          MOV   DS:[democount],0  ; reset democount
;;******** end code that executes every second         
demo3:    RET
;**************************************;***********************************************
;READ KEYBOARD GAME CONTROL ADAPTER    ; -> GCAI holds commands
;**************************************;***********************************************
GETKBD000: push  dptr DS:[EBP+12]      ;push pacstart
           pop   dptr DS:[EBP+16]      ;restore pacstart as pacstartprev
;-CPU-OR-USER-?------------------------;--------------------------------------
GETKBDXXX:TEST  DPTR DS:[EBP+28],1     ;1=user (key) 0=computer (auto)
          JNZ   GETKBDYYY              ;if user then querry keyboard
;-------- only executed for ghosts
          CALL  TSTCOLXXX
          TEST  AL,40H
          JnZ   aga2
          MOV   EBX,DS:[EBP+32]        ;get key table values as base (KEYTABs)
          db    0fh,31h                ;Reqd time Stamp Counter opcode
          bswap edx
          xor   eax,edx
;agan:    dec   ah
;         AND   AH,3                   ;normalize to [0...3] for index
;         CMP   AH,BPTR DS:[EBX+01]
;         JZ    agan
;         mov   BPTR DS:[EBX+01],ah
          mov   al,1
          cmp   dptr ds:[pacmazey],((MAZEWIDTH*23)*1)
          jc    agan
          neg   al
          test  dptr ds:[ghoststate],0ffh
          jz    agan
          neg   al
agan:     sub   ah,al
          AND   AH,3                   ;normalize to [0...3] for index
          mov   BPTR DS:[EBX+01],ah
;----------- only executed for ghosts
          JMP   SHORT aga              ;and skip keyboard querry
GETKBDYYY:MOV   AH,1                   ;non blocking read keyboard function
          INT   16H                    ;bios kbd call
          JNZ   qhoq                   ;if new key in buffer then retrieve it
aga2:     MOV   AH,BPTR DS:[EBP+24]    ;else key <= old key
          JMP   SHORT aga              ;and skip kbd new key retrieval
qhoq:     XOR   AX,AX                  ;blocking read keyboard function
          INT   16H                    ;bios kbd call
aga:      MOV   BPTR DS:[EBP+24],AH    ;save oldkey <= this key
          MOV   ECX,4                  ;4 directions/keys to test in all
          MOV   EBX,DS:[EBP+32]        ;get key table values as base (KEYTABs)
GETKBDBBB:PUSHAD                       ;save all registers
          CALL  GETKBDAAA              ;test all keys
          POPAD                        ;restore all registers
          mov   edx,dptr DS:[EBP+16]
          cmp   edx,dptr DS:[EBP+12]
          jnz   GETKBD999
          ADD   EBX,6                  ;entries are 6 bytes per call in tab
          LOOP  GETKBDBBB              ;repeat for all four key/directions
GETKBD999:RET                          ;return to caller
;--------------------------------------;--------------------------------------
GETKBDAAA:CMP   AH,DS:[EBX+00]         ;test if this direction key pressed
          JNZ   GETKBDqqq              ;cycle comparaison with all cases
          MOV   EDX,DS:[EBX+02]        ;else get anim offset in tab
          MOV   DS:[EBP+12],EDX        ;get that sequence as base
GETKBDOOO:CALL  TSTCOLXXX              ;do collision detection
          TEST  AL,AL                  ;test if empty previous dotted element
          JZ    GETKBD999              ;if so then keep pactstart value
          TEST  AL,0C0H                ;test if dotted or intersection element
          JNZ   GETKBD999              ;if so then keep pactstart value
          push  dptr DS:[EBP+16]       ;push pacstart prev
          pop   dptr DS:[EBP+12]       ;restore as pacstart
GETKBDQQQ:RET                          ;return to caller
;--------------------------------------;--------------------------------------
;----------------------------------------------------------------------------
COPYBLK:  MOV   CX,CHARMAX*charstructsiz            ;for each characters
xetstruct:LODS  BPTR DS:[ESI]          ;read 4 bytes from source
          MOV   BPTR DS:[EDI],AL
          INC   EDI
          LOOP  xetstruct
          RET
;----------------------------------------------------------------------------
; set palette to palette pointed by edi
;----------------------------------------------------------------------------
SETSTATE: test  word ptr DS:[pillstate],1
          jz    SETSTATE1
          add   edi,4
SETSTATE1:mov   cx,6
palloop0: mov   dx,3C8H
          mov   ax,wptr ds:[di+0]
          out   dx,ax
          inc   dx
          mov   ax,wptr ds:[di+2]
          out   dx,al
          mov   al,ah
          out   dx,al
          add   di,4
          loop  palloop0
          ret
RESTX:    ADD   ESI,DS:[LOGSCR]        ;edi=offset of screen
          MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
          ADD   EDI,DPTR DS:[EBP+0044]
          CALL  PUTSPRITE              ;put prize on screen
          RET
;**************************************;***********************************************
;ORG       2043                         ;high score 0-->2047-4=2043
;HIGHSCOR  LABEL WORD                   ;saved in last dword of compressed file
;-----------------------------------------------------------------------------
; .STACK
;-----------------------------------------------------------------------------
;ORG       0FFFCH                       ; 1 byte smaller
;_STACK    LABEL WORD                   ; 1 byte smaller
_STACK   EQU   0FFFCH
;-----------------------------------------------------------------------------
_TEXT     ENDS                         ;end of code segment
;-----------------------------------------------------------------------------
; PROGRAM END
;-----------------------------------------------------------------------------
          END   START                  ;end of program