

$MAXIMUM


;;----------------------------------------------------------------------------
;;	external functions
;;----------------------------------------------------------------------------
extern	Sound_Init
extern	Sound_Buf_Init
extern	Put_Sound_Buf
extern	Sound_Periodic_Func
extern	Sound_List_Dt_Send

_BGM_START_900H	equ	0x0020
_SE_START_900H	equ	0x0080

LIST_MAX	equ	27

;;----------------------------------------------------------------------------

AREA_WORK_RAM	equ	0x4000
SIZE_WORK_RAM	equ	0x2C00

AREA_MAIN_KEY	equ	0x6F82		;; Byte Read Only !! ( old = 0x00B0 )

AREA_OBJE_RAM	equ	0x8800		;; object area, inverse, character number
SIZE_ONE_OBJE	equ	4		;; byte size necessary to define 1 object
MAX_OBJE	equ	64		;; maximum objects displayable
SIZE_OBJE_RAM	equ	(SIZE_ONE_OBJE*MAX_OBJE)

AREA_BACK0_RAM	equ	0x9000		;; background (virtual size 256 x256 dot)
AREA_BACK1_RAM	equ	0x9800		;; background (virtual size 256 x256 dot)
SIZE_BACK_RAM	equ	(32*32*2)
SIZE_BACK_1LINE	equ	64		;; background 1 row byte size

AREA_PAL_BACK0	equ	0x8108

AREA_CHAR_RAM	equ	0xA000
SIZE_ONE_CHAR	equ	16		;; 1 character byte size

KEY_BIT_NUM_UP		equ	0
KEY_BIT_NUM_DOWN	equ	1
KEY_BIT_NUM_LEFT	equ	2
KEY_BIT_NUM_RIGHT	equ	3
KEY_BIT_NUM_A		equ	4
KEY_BIT_NUM_B		equ	5

AREA_WATCH_DOG		equ	0x6F	;; watch dog timer control register
WATCH_DOG_CLEAR		equ	0x4E	;; clear code



;;----------------------------------------------------------------------------

;;[TRUN](address:0x020)timer operation control register
_trun_t0run	equ	(0y00000001)	;;timer 0 (0=stop & clear, 1=count)
_trun_t1run	equ	(0y00000010)	;;timer 1 (0=stop & clear, 1=count)
_trun_t2run	equ	(0y00000100)	;;timer 2 (0=stop & clear, 1=count)
_trun_t3run	equ	(0y00001000)	;;timer 3 (0=stop & clear, 1=count)
_trun_t4run	equ	(0y00010000)	;;timer 4 (0=stop & clear, 1=count)
_trun_t5run	equ	(0y00100000)	;;timer 5 (0=stop & clear, 1=count)
_trun_prrun	equ	(0y10000000)	;;prescalar stop & clear

;;[T23MOD](address:0x028)
_t23mod_3_t1	equ	0y00000100	;;T23MOD = T1
_t23mod_3_t16	equ	0y00001000	;;T23MOD = T16
_t23mod_3_t256	equ	0y00001100	;;T23MOD = T256

TRUN		EQU	0x20			;timer operation control register
T23MOD		EQU	0x28			;timer 2,3 cotnrol register
TREG3		EQU	0x27			;timer register 3
INTET23		EQU	0x74			;set interrupt level

;;----------------------------------------------------------------------------

SELECT_BGM	equ	0
SELECT_SE	equ	1

LOCATE_BGM	equ	AREA_BACK0_RAM+(SIZE_BACK_1LINE*8)+5*2
LOCATE_SE	equ	AREA_BACK0_RAM+(SIZE_BACK_1LINE*10)+5*2

WND_X_OFS	EQU	0x8002			;; display area X offset
WND_Y_OFS	EQU	0x8003			;; display area Y offset
WND_X_SIZE	EQU	0x8004			;; display area X size
WND_Y_SIZE	EQU	0x8005			;; display area Y size

;;----------------------------------------------------------------------------
	work section data large align=2,1
;;----------------------------------------------------------------------------
watch_dog_cnt		dsb	1
v_flag		dsb	1
se_code		dsb	1
bgm_code	dsb	1
select_code	dsb	1
host_code	dsw	1
KEY_REAL	dsb	1
KEY_TRIGGER	dsb	1
Sound_List_No	dsw	1

;;----------------------------------------------------------------------------
	prog section code large align=2,1
;;----------------------------------------------------------------------------
	db	"COPYRIGHT BY SNK CORPORATION"	;; external software recognition code
	dl	reset				;; external software startup address
	dw	0				;; external software ID code
	db	0				;; external software subcode
	db	0				;; reserved (set 0)
	db	"SOUND TEST 1"			;; external software title name
	dl	0,0,0,0				;; reserved (set 0)
;;----------------------------------------------------------------------------
	public	__STARTUP
__STARTUP:
	nop
	jp	0xff1800



reset:
		;; set clock gear
		ld	rw3,0x01
		ld	rb3,0x00
		ld	rc3,0x00
		swi	1
		
		;; 0 clear work RAM
		ld	xhl,AREA_WORK_RAM
		ld	xde,xhl
		ld	(xde+),0
		ld	bc,SIZE_WORK_RAM-1
		ldir	(xde+),(xhl+)

		;; 0 clear object RAM
		ld	xhl,AREA_OBJE_RAM
		ld	xde,xhl
		ld	(xde+),0
		ld	bc,SIZE_OBJE_RAM-1
		ldir	(xde+),(xhl+)

		;; 0 clear background RAM0
		ld	xhl,AREA_BACK0_RAM
		ld	xde,xhl
		ld	(xde+),0
		ld	bc,SIZE_BACK_RAM-1
		ldir	(xde+),(xhl+)

		;; 0 clear background RAM 1
		ld	xhl,AREA_BACK1_RAM
		ld	xde,xhl
		ld	(xde+),0
		ld	bc,SIZE_BACK_RAM-1
		ldir	(xde+),(xhl+)

		ld	xwa,-1
		ld	(AREA_PAL_BACK0),xwa

		;; set vector address on RAM
		ld	xhl,software_vector
		ld	xde,0x6FB8
		ld	bc,18*2
		ldirw	(xde+),(xhl+)

		;; transfer ascii letters to character RAM
		ld	xhl,ascii_data
		ld	xde,AREA_CHAR_RAM+SIZE_ONE_CHAR*32
		ld	bc,SIZE_ONE_CHAR*96
		ldir	(xde+),(xhl+)

		;; sound exchange pointer set
		cal	Sound_Init
		cal	Init_key
		cal	Sound_Buf_Init

		sub	a,a
		ld	(se_code),a
		ld	(bgm_code),a
		ld	(select_code),a
		ld	(host_code),0

		ldb	(WND_X_OFS),0		;; initialize window register
		ldb	(WND_Y_OFS),0
		ldb	(WND_X_SIZE),160
		ldb	(WND_Y_SIZE),152

		; transfer bank 0
		xor	xwa, xwa
		call	Sound_List_Dt_Send

		ei	0

;;----------------------------------------------------------------------------
main_loop:
		ld	(v_flag),0
v_wait:
		cp	(v_flag),0
		j	z,v_wait

		cal	Key_read_in_port

		ld	(watch_dog_cnt),0
		
		bit	KEY_BIT_NUM_UP,(KEY_TRIGGER)
		j	z,main_050
			and	(KEY_TRIGGER),3
			and	(KEY_REAL),3
			xor	(select_code),1
		main_050:
		bit	KEY_BIT_NUM_DOWN,(KEY_TRIGGER)
		j	z,main_060
			and	(KEY_TRIGGER),3
			and	(KEY_REAL),3
			xor	(select_code),1
		main_060:

		bit	KEY_BIT_NUM_A,(KEY_TRIGGER)
		j	z,main_100
			cp	(select_code),SELECT_BGM
			j	nz,main_110
				ld	a,(bgm_code)
				extz	wa
				add	wa,_BGM_START_900H	;; sound code specified in
				cal	Put_Sound_Buf		;; INC file set and sent
				j	main_100
			main_110:
				ld	a,(se_code)
				extz	wa
				add	wa,_SE_START_900H	;; sound code specified in
				cal	Put_Sound_Buf		;; INC file set and sent
		main_100:
		bit	KEY_BIT_NUM_RIGHT,(KEY_TRIGGER)
		j	z,main_200
			cp	(select_code),SELECT_BGM
			j	nz,main_210
				inc	1,(bgm_code)
				j	main_200
			main_210:
				inc	1,(se_code)
		main_200:

		bit	KEY_BIT_NUM_LEFT,(KEY_TRIGGER)
		j	z,main_300
			cp	(select_code),SELECT_BGM
			j	nz,main_310
				dec	1,(bgm_code)
				j	main_300
			main_310:
				dec	1,(se_code)
		main_300:

		bit	KEY_BIT_NUM_B,(KEY_TRIGGER)
		j	z,mainskip
			;; data replace set
			push	xwa
			ld	wa, (Sound_List_No)
			inc	1, wa
			cp	wa, LIST_MAX
			jr	c, Slist_Send_J
			xor	wa, wa
		Slist_Send_J:
			extz	xwa
			ld	(Sound_List_No), wa
			call	Sound_List_Dt_Send
			pop	xwa
		mainskip:
		ld	xbc,LOCATE_BGM
		ld	xix,str_bgm
		sub	w,w
		cal	put_string

		ld	xbc,LOCATE_SE
		ld	xix,str_se
		sub	w,w
		cal	put_string

		ld	xbc,LOCATE_BGM
		cp	(select_code),SELECT_BGM
		j	z,main_400
			ld	xbc,LOCATE_SE
		main_400:
		sub	w,w
		ld	a,'*'
		cal	put_1chr

		ld	xbc,(LOCATE_BGM)+6*2
		ld	a,(bgm_code)
		cal	put_byte

		ld	xbc,(LOCATE_SE)+6*2
		ld	a,(se_code)
		cal	put_byte

		j	main_loop

;;----------------------------------------------------------------------------
str_bgm:
	db	"  BGM",0
str_se:
	db	"  SE ",0
;;----------------------------------------------------------------------------
put_byte:
;;[in]
;;	a	: display data
;;	xbc	: VRAM address
;;----------------------------------------------------------------------------

		sub	w,w
	push	a
		srl	4,a
		cp	a,10
		j	ult,putby_100
			add	a,'A'-'9'-1
		putby_100:
		add	a,'0'
		ld	(xbc+),wa
	pop	a
		and	a,15
		cp	a,10
		j	ult,putby_200
			add	a,'A'-'9'-1
		putby_200:
		add	a,'0'
		ld	(xbc+),wa
		ret

;;----------------------------------------------------------------------------
put_1chr:
;;	1 character display of ascii character
;;[in]
;;	a	: ascii character
;;	w	: palette and flip
;;	xbc	: VRAM address
;;[out]
;;	xbc	: VRAM address 1 character right
;;----------------------------------------------------------------------------

		ld	(xbc),wa
		ld	a,c
		inc	2,a
		and	a,SIZE_BACK_1LINE-1
		and	c,~(SIZE_BACK_1LINE-1)
		or	c,a
		ret

;;----------------------------------------------------------------------------
put_string:
;;	display characters which end with 0
;;[in]
;;	xix	: pointer to character string
;;	w	: palette and flip
;;	xbc	: VRAM address
;;[out]
;;	xbc	: VRAM address moved right number of characters in string
;;----------------------------------------------------------------------------

		ld	a,(xix+)
		and	a,a
		ret	z
		push	w
			cal	put_1chr
		pop	w
		jr	put_string

;;----------------------------------------------------------------------------
Init_key:
;;	work initialization for key input
;;	call once before use of Key_ type routines
;;----------------------------------------------------------------------------

		sub	a,a
		ld	(KEY_REAL),a
		ld	(KEY_TRIGGER),a
		ret

;;----------------------------------------------------------------------------
Key_read_in_port:
;;	save to work status read from controller input port
;;----------------------------------------------------------------------------

		ld	w,(KEY_REAL)
		ld	a,(AREA_MAIN_KEY)
		xor	w,a
		and	w,a
		ld	(KEY_TRIGGER),w
		ld	(KEY_REAL),a
		ret

;;----------------------------------------------------------------------------
v_int:
		pushl	xix
		pushl	xiy
		pushl	xiz
		pushl	xwa
		pushl	xbc
		pushl	xde
		pushl	xhl

		cal	Sound_Periodic_Func
		ld	(v_flag),1

		;; check watchdog. if main CPU is in "runaway," do not check.
		inc	1,(watch_dog_cnt)
		cp	(watch_dog_cnt),10
		j	ge,watch_dog_100
			ld	(AREA_WATCH_DOG),WATCH_DOG_CLEAR
		watch_dog_100:

		popl	xhl
		popl	xde
		popl	xbc
		popl	xwa
		popl	xiz
		popl	xiy
		popl	xix
		reti

;;----------------------------------------------------------------------------
vec_z80:
		ld	a,a
		ld	a,a
		ld	a,a
;		andb	(0x20),~8
		reti

;;----------------------------------------------------------------------------
vec_timer3:
		nop
		nop
		nop
		reti

;;----------------------------------------------------------------------------
vec_swi3:
vec_swi4:
vec_swi5:
vec_swi6:
vec_rtc:
vec_timer0:
vec_timer1:
vec_timer2:
vec_serial_catch:
vec_serial_send:
vec_reserve:
vec_finish_DMA0:
vec_finish_DMA1:
vec_finish_DMA2:
vec_finish_DMA3:
		reti
;;----------------------------------------------------------------------------
software_vector:
	dl	vec_swi3		;; 0
	dl	vec_swi4		;; 1
	dl	vec_swi5		;; 2
	dl	vec_swi6		;; 3
	dl	vec_rtc			;; 4
	dl	v_int			;; 5
	dl	vec_z80			;; 6
	dl	vec_timer0		;; 7
	dl	vec_timer1		;; 8
	dl	vec_timer2		;; 9
	dl	vec_timer3		;; 10
	dl	vec_serial_catch	;; 11
	dl	vec_serial_send		;; 12
	dl	vec_reserve		;; 13
	dl	vec_finish_DMA0		;; 14
	dl	vec_finish_DMA1		;; 15
	dl	vec_finish_DMA2		;; 16
	dl	vec_finish_DMA3		;; 17


;;----------------------------------------------------------------------------
;;
;;	data pattern (96 characters)
;;
ascii_data:
	;;	(0x0000)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x0001)
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05
	db	0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x0002)
	db	0x50,0x14,0x50,0x14,0x40,0x10,0x10,0x04
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x0003)
	db	0x40,0x00,0x50,0x11,0x40,0x54,0x40,0x10
	db	0x50,0x11,0x40,0x54,0x00,0x10,0x00,0x00
	;;	(0x0004)
	db	0x00,0x01,0x54,0x15,0x00,0x41,0x54,0x55
	db	0x04,0x01,0x50,0x55,0x00,0x01,0x00,0x00
	;;	(0x0005)
	db	0x04,0x54,0x10,0x44,0x40,0x54,0x00,0x01
	db	0x54,0x04,0x44,0x10,0x54,0x40,0x00,0x00
	;;	(0x0006)
	db	0x40,0x05,0x40,0x10,0x04,0x05,0x44,0x10
	db	0x10,0x40,0x44,0x40,0x04,0x15,0x00,0x00
	;;	(0x0007)
	db	0x00,0x05,0x00,0x05,0x00,0x04,0x00,0x01
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x0008)
	db	0x40,0x01,0x00,0x04,0x00,0x10,0x00,0x10
	db	0x00,0x10,0x00,0x04,0x40,0x01,0x00,0x00
	;;	(0x0009)
	db	0x00,0x05,0x40,0x00,0x10,0x00,0x10,0x00
	db	0x10,0x00,0x40,0x00,0x00,0x05,0x00,0x00
	;;	(0x000A)
	db	0x00,0x01,0x10,0x11,0x40,0x05,0x00,0x01
	db	0x40,0x05,0x10,0x11,0x00,0x01,0x00,0x00
	;;	(0x000B)
	db	0x00,0x01,0x00,0x01,0x00,0x01,0x54,0x55
	db	0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00
	;;	(0x000C)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05
	db	0x00,0x05,0x00,0x01,0x00,0x04,0x00,0x00
	;;	(0x000D)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x54,0x55
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x000E)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x000F)
	db	0x04,0x00,0x10,0x00,0x40,0x00,0x00,0x01
	db	0x00,0x04,0x00,0x10,0x00,0x40,0x00,0x00
	;;	(0x0010)
	db	0x50,0x15,0x14,0x50,0x54,0x50,0x14,0x51
	db	0x14,0x54,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0011)
	db	0x40,0x01,0x40,0x05,0x40,0x01,0x40,0x01
	db	0x40,0x01,0x40,0x01,0x54,0x15,0x00,0x00
	;;	(0x0012)
	db	0x50,0x15,0x14,0x50,0x14,0x00,0x50,0x05
	db	0x00,0x14,0x00,0x50,0x54,0x55,0x00,0x00
	;;	(0x0013)
	db	0x50,0x15,0x14,0x50,0x14,0x00,0x50,0x05
	db	0x14,0x00,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0014)
	db	0x50,0x01,0x50,0x05,0x50,0x14,0x50,0x50
	db	0x54,0x55,0x50,0x00,0x50,0x00,0x00,0x00
	;;	(0x0015)
	db	0x54,0x55,0x00,0x50,0x50,0x55,0x14,0x00
	db	0x14,0x00,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0016)
	db	0x54,0x05,0x00,0x14,0x00,0x50,0x50,0x55
	db	0x14,0x50,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0017)
	db	0x54,0x55,0x14,0x50,0x50,0x00,0x40,0x01
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x0018)
	db	0x50,0x15,0x14,0x50,0x14,0x50,0x50,0x15
	db	0x14,0x50,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0019)
	db	0x50,0x15,0x14,0x50,0x14,0x50,0x54,0x15
	db	0x14,0x00,0x50,0x00,0x40,0x55,0x00,0x00
	;;	(0x001A)
	db	0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x00
	db	0x00,0x05,0x00,0x05,0x00,0x00,0x00,0x00
	;;	(0x001B)
	db	0x00,0x05,0x00,0x05,0x00,0x00,0x00,0x05
	db	0x00,0x05,0x00,0x04,0x00,0x01,0x00,0x00
	;;	(0x001C)
	db	0x40,0x00,0x00,0x01,0x00,0x04,0x00,0x10
	db	0x00,0x04,0x00,0x01,0x40,0x00,0x00,0x00
	;;	(0x001D)
	db	0x00,0x00,0x50,0x15,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x50,0x15,0x00,0x00,0x00,0x00
	;;	(0x001E)
	db	0x00,0x04,0x00,0x01,0x40,0x00,0x10,0x00
	db	0x40,0x00,0x00,0x01,0x00,0x04,0x00,0x00
	;;	(0x001F)
	db	0x50,0x15,0x14,0x50,0x14,0x00,0x50,0x05
	db	0x00,0x05,0x00,0x00,0x00,0x05,0x00,0x00
	;;	(0x0020)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x0021)
	db	0x40,0x05,0x50,0x14,0x14,0x50,0x14,0x50
	db	0x54,0x55,0x14,0x50,0x14,0x50,0x00,0x00
	;;	(0x0022)
	db	0x50,0x55,0x14,0x50,0x14,0x50,0x50,0x55
	db	0x14,0x50,0x14,0x50,0x50,0x55,0x00,0x00
	;;	(0x0023)
	db	0x50,0x05,0x14,0x14,0x00,0x50,0x00,0x50
	db	0x00,0x50,0x14,0x14,0x50,0x05,0x00,0x00
	;;	(0x0024)
	db	0x40,0x55,0x50,0x50,0x14,0x50,0x14,0x50
	db	0x14,0x50,0x50,0x50,0x40,0x55,0x00,0x00
	;;	(0x0025)
	db	0x54,0x55,0x00,0x50,0x00,0x50,0x50,0x55
	db	0x00,0x50,0x00,0x50,0x54,0x55,0x00,0x00
	;;	(0x0026)
	db	0x54,0x55,0x00,0x50,0x00,0x50,0x50,0x55
	db	0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x00
	;;	(0x0027)
	db	0x54,0x05,0x00,0x14,0x00,0x50,0x54,0x50
	db	0x14,0x50,0x14,0x14,0x54,0x05,0x00,0x00
	;;	(0x0028)
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x54,0x55
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x00,0x00
	;;	(0x0029)
	db	0x50,0x55,0x00,0x05,0x00,0x05,0x00,0x05
	db	0x00,0x05,0x00,0x05,0x50,0x55,0x00,0x00
	;;	(0x002A)
	db	0x14,0x00,0x14,0x00,0x14,0x00,0x14,0x00
	db	0x14,0x00,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x002B)
	db	0x14,0x50,0x50,0x50,0x40,0x51,0x00,0x55
	db	0x40,0x51,0x50,0x50,0x14,0x50,0x00,0x00
	;;	(0x002C)
	db	0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50
	db	0x00,0x50,0x00,0x50,0x54,0x55,0x00,0x00
	;;	(0x002D)
	db	0x14,0x50,0x54,0x54,0x54,0x55,0x14,0x51
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x00,0x00
	;;	(0x002E)
	db	0x14,0x50,0x14,0x54,0x14,0x55,0x54,0x55
	db	0x54,0x51,0x54,0x50,0x14,0x50,0x00,0x00
	;;	(0x002F)
	db	0x50,0x15,0x14,0x50,0x14,0x50,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0030)
	db	0x50,0x55,0x14,0x50,0x14,0x50,0x50,0x55
	db	0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x00
	;;	(0x0031)
	db	0x50,0x15,0x14,0x50,0x14,0x50,0x14,0x50
	db	0x54,0x51,0x10,0x50,0x44,0x15,0x00,0x00
	;;	(0x0032)
	db	0x50,0x55,0x14,0x50,0x14,0x50,0x50,0x55
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x00,0x00
	;;	(0x0033)
	db	0x50,0x15,0x14,0x50,0x00,0x50,0x50,0x15
	db	0x14,0x00,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0034)
	db	0x50,0x55,0x00,0x05,0x00,0x05,0x00,0x05
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x0035)
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0036)
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x54,0x54
	db	0x50,0x15,0x40,0x05,0x00,0x01,0x00,0x00
	;;	(0x0037)
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x14,0x51
	db	0x54,0x55,0x54,0x54,0x14,0x50,0x00,0x00
	;;	(0x0038)
	db	0x14,0x50,0x54,0x54,0x50,0x15,0x40,0x05
	db	0x50,0x15,0x54,0x54,0x14,0x50,0x00,0x00
	;;	(0x0039)
	db	0x50,0x50,0x50,0x50,0x50,0x50,0x40,0x15
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x003A)
	db	0x54,0x55,0x54,0x00,0x50,0x01,0x40,0x05
	db	0x00,0x15,0x00,0x54,0x54,0x55,0x00,0x00
	;;	(0x003B)
	db	0x40,0x15,0x00,0x10,0x00,0x10,0x00,0x10
	db	0x00,0x10,0x00,0x10,0x40,0x15,0x00,0x00
	;;	(0x003C)
	db	0x10,0x10,0x40,0x04,0x00,0x01,0x54,0x55
	db	0x00,0x01,0x54,0x55,0x00,0x01,0x00,0x00
	;;	(0x003D)
	db	0x40,0x15,0x40,0x00,0x40,0x00,0x40,0x00
	db	0x40,0x00,0x40,0x00,0x40,0x15,0x00,0x00
	;;	(0x003E)
	db	0x00,0x01,0x40,0x04,0x10,0x10,0x04,0x40
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x003F)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x00,0x00,0x54,0x55,0x00,0x00
	;;	(0x0040)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x0041)
	db	0x00,0x00,0x00,0x00,0x50,0x15,0x14,0x00
	db	0x54,0x15,0x14,0x50,0x44,0x15,0x00,0x00
	;;	(0x0042)
	db	0x00,0x50,0x00,0x50,0x50,0x55,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x50,0x55,0x00,0x00
	;;	(0x0043)
	db	0x00,0x00,0x00,0x00,0x50,0x15,0x14,0x50
	db	0x00,0x50,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0044)
	db	0x14,0x00,0x14,0x00,0x54,0x15,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x44,0x15,0x00,0x00
	;;	(0x0045)
	db	0x00,0x00,0x00,0x00,0x50,0x15,0x14,0x50
	db	0x54,0x55,0x00,0x50,0x54,0x15,0x00,0x00
	;;	(0x0046)
	db	0x50,0x01,0x00,0x05,0x00,0x05,0x50,0x55
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x0047)
	db	0x00,0x00,0x00,0x00,0x44,0x15,0x14,0x50
	db	0x14,0x50,0x54,0x15,0x14,0x00,0x50,0x55
	;;	(0x0048)
	db	0x00,0x50,0x00,0x50,0x50,0x55,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x00,0x00
	;;	(0x0049)
	db	0x00,0x05,0x00,0x00,0x00,0x05,0x00,0x05
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x004A)
	db	0x40,0x01,0x00,0x00,0x40,0x01,0x40,0x01
	db	0x40,0x01,0x40,0x01,0x00,0x15,0x00,0x00
	;;	(0x004B)
	db	0x00,0x50,0x00,0x50,0x50,0x50,0x40,0x51
	db	0x00,0x55,0x40,0x51,0x50,0x50,0x00,0x00
	;;	(0x004C)
	db	0x00,0x15,0x00,0x05,0x00,0x05,0x00,0x05
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x004D)
	db	0x00,0x00,0x00,0x00,0x50,0x54,0x14,0x51
	db	0x14,0x51,0x14,0x51,0x14,0x51,0x00,0x00
	;;	(0x004E)
	db	0x00,0x00,0x00,0x00,0x50,0x45,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x14,0x50,0x00,0x00
	;;	(0x004F)
	db	0x00,0x00,0x00,0x00,0x50,0x15,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x50,0x15,0x00,0x00
	;;	(0x0050)
	db	0x00,0x00,0x00,0x00,0x50,0x45,0x14,0x50
	db	0x14,0x50,0x50,0x55,0x00,0x50,0x00,0x50
	;;	(0x0051)
	db	0x00,0x00,0x00,0x00,0x44,0x15,0x14,0x50
	db	0x14,0x50,0x54,0x15,0x14,0x00,0x14,0x00
	;;	(0x0052)
	db	0x00,0x00,0x00,0x00,0x50,0x50,0x50,0x51
	db	0x00,0x54,0x00,0x50,0x00,0x50,0x00,0x00
	;;	(0x0053)
	db	0x00,0x00,0x00,0x00,0x50,0x15,0x00,0x50
	db	0x50,0x55,0x50,0x00,0x40,0x55,0x00,0x00
	;;	(0x0054)
	db	0x00,0x05,0x00,0x05,0x50,0x55,0x00,0x05
	db	0x00,0x05,0x00,0x05,0x50,0x01,0x00,0x00
	;;	(0x0055)
	db	0x00,0x00,0x00,0x00,0x14,0x50,0x14,0x50
	db	0x14,0x50,0x14,0x50,0x44,0x15,0x00,0x00
	;;	(0x0056)
	db	0x00,0x00,0x00,0x00,0x14,0x50,0x14,0x50
	db	0x50,0x14,0x40,0x05,0x00,0x01,0x00,0x00
	;;	(0x0057)
	db	0x00,0x00,0x00,0x00,0x14,0x51,0x14,0x51
	db	0x14,0x51,0x14,0x51,0x50,0x14,0x00,0x00
	;;	(0x0058)
	db	0x00,0x00,0x00,0x00,0x14,0x50,0x50,0x14
	db	0x40,0x05,0x50,0x14,0x14,0x50,0x00,0x00
	;;	(0x0059)
	db	0x00,0x00,0x00,0x00,0x50,0x50,0x50,0x50
	db	0x50,0x50,0x50,0x15,0x50,0x00,0x40,0x55
	;;	(0x005A)
	db	0x00,0x00,0x00,0x00,0x54,0x55,0x50,0x01
	db	0x40,0x05,0x00,0x15,0x54,0x55,0x00,0x00
	;;	(0x005B)
	db	0x40,0x01,0x00,0x04,0x00,0x04,0x00,0x10
	db	0x00,0x04,0x00,0x04,0x40,0x01,0x00,0x00
	;;	(0x005C)
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	db	0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00
	;;	(0x005D)
	db	0x00,0x05,0x40,0x00,0x40,0x00,0x10,0x00
	db	0x40,0x00,0x40,0x00,0x00,0x05,0x00,0x00
	;;	(0x005E)
	db	0x00,0x00,0x00,0x00,0x00,0x14,0x04,0x41
	db	0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	;;	(0x005F)
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
;;----------------------------------------------------------------------------
	end

