;------------------------------------------------- ; ; AKI-H8 VCO module : November 1998 ; ;------------------------------------------------- ;##### Port Defines ##### smr .equ h'0fffb0 brr .equ h'0fffb1 scr .equ h'0fffb2 tdr .equ h'0fffb3 ssr .equ h'0fffb4 rdr .equ h'0fffb5 pbddr .equ h'0fffd4 pbdr .equ h'0fffd6 iprb .equ h'0ffff8 tstr .equ h'0fff60 tsnc .equ h'0fff61 tmdr .equ h'0fff62 tfcr .equ h'0fff63 toer .equ h'0fff90 tocr .equ h'0fff91 tcr0 .equ h'0fff64 tior0 .equ h'0fff65 tier0 .equ h'0fff66 tsr0 .equ h'0fff67 tcnt0 .equ h'0fff68 gra0 .equ h'0fff6a grb0 .equ h'0fff6c dadr0 .equ h'0fffdc dadr1 .equ h'0fffdd dacr .equ h'0fffde dastcr .equ h'0fff5c ;##### Vector Defines ##### .section vector,data,locate=h'000000 .data.l start .org h'000060 .data.l int_timer0 .org h'0000d0 .data.l int_rx_error .data.l int_rx_full ;##### Work RAM Data Defines ##### .section ram,data,locate=h'0fef10 timer1 .res.w 1 timer2 .res.w 1 rx_top .res.w 1 rx_end .res.w 1 fn_0 .res.w 1 fn_1 .res.w 1 fn_2 .res.w 1 fn_3 .res.w 1 ad_0 .res.w 1 ad_1 .res.w 1 ad_2 .res.w 1 ad_3 .res.w 1 rsb .res.b 1 channel .res.b 1 dcb .res.b 1 keyno .res.b 1 data .res.b 1 led .res.b 1 flag .res.b 1 ch .res.b 1 st_0 .res.b 1 st_1 .res.b 1 st_2 .res.b 1 st_3 .res.b 1 bank .res.b 1 .org h'0ff400 rx_fifo .res.b 1024 ;***** Constant Table Defines ***** .section rom,data,locate=h'001000 table_w: ; ##### Data 70 ##### .data.b h'80,h'91,h'a1,h'b1,h'bf,h'cd,h'd9,h'e4 .data.b h'ed,h'f4,h'f9,h'fd,h'ff,h'ff,h'fe,h'fc .data.b h'f8,h'f5,h'f0,h'ec,h'e7,h'e3,h'df,h'dc .data.b h'd9,h'd8,h'd7,h'd7,h'd8,h'da,h'dc,h'df .data.b h'e2,h'e6,h'e9,h'ec,h'ee,h'f0,h'f1,h'f1 .data.b h'f0,h'ee,h'eb,h'e7,h'e2,h'dd,h'd6,h'd0 .data.b h'c9,h'c2,h'bb,h'b5,h'af,h'aa,h'a6,h'a2 .data.b h'a0,h'9f,h'9e,h'9f,h'a1,h'a3,h'a6,h'a9 .data.b h'ad,h'b1,h'b4,h'b8,h'ba,h'bc,h'bd,h'be .data.b h'bd,h'bb,h'b9,h'b5,h'b1,h'ac,h'a7,h'a1 .data.b h'9b,h'95,h'8f,h'8a,h'85,h'81,h'7e,h'7c .data.b h'7a,h'7a,h'7a,h'7c,h'7d,h'80,h'83,h'85 .data.b h'88,h'8b,h'8d,h'8e,h'8f,h'8f,h'8d,h'8b .data.b h'87,h'83,h'7d,h'77,h'70,h'68,h'61,h'59 .data.b h'52,h'4b,h'45,h'40,h'3c,h'39,h'38,h'39 .data.b h'3c,h'40,h'45,h'4d,h'55,h'5f,h'69,h'75 .data.b h'8b,h'97,h'a1,h'ab,h'b3,h'bb,h'c0,h'c4 .data.b h'c7,h'c8,h'c7,h'c4,h'c0,h'bb,h'b5,h'ae .data.b h'a7,h'9f,h'98,h'90,h'89,h'83,h'7d,h'79 .data.b h'75,h'73,h'71,h'71,h'72,h'73,h'75,h'78 .data.b h'7b,h'7d,h'80,h'83,h'84,h'86,h'86,h'86 .data.b h'84,h'82,h'7f,h'7b,h'76,h'71,h'6b,h'65 .data.b h'5f,h'59,h'54,h'4f,h'4b,h'47,h'45,h'43 .data.b h'57,h'5a,h'5d,h'5f,h'61,h'62,h'61,h'60 .data.b h'5e,h'5a,h'56,h'51,h'4b,h'45,h'3e,h'37 .data.b h'30,h'2a,h'23,h'1e,h'19,h'15,h'12,h'10 .data.b h'0f,h'0f,h'10,h'12,h'14,h'17,h'1a,h'1e .data.b h'21,h'24,h'26,h'28,h'29,h'29,h'28,h'27 .data.b h'24,h'21,h'1d,h'19,h'14,h'10,h'0b,h'08 .data.b h'04,h'02,h'01,h'01,h'03,h'07,h'0c,h'13 .data.b h'1c,h'27,h'33,h'41,h'4f,h'5f,h'6f,h'80 ; ##### Data 71 ##### .data.b h'80,h'9a,h'b3,h'c9,h'dc,h'ea,h'f4,h'fb .data.b h'ee,h'eb,h'e7,h'e3,h'e0,h'dd,h'd9,h'd7 .data.b h'd4,h'd1,h'cf,h'cc,h'ca,h'c8,h'c5,h'c3 .data.b h'c1,h'bf,h'be,h'bc,h'ba,h'b9,h'b7,h'b6 .data.b h'b4,h'b3,h'b1,h'b0,h'af,h'ae,h'ad,h'ac .data.b h'aa,h'a9,h'a8,h'a7,h'a6,h'a5,h'a4,h'a4 .data.b h'a3,h'a2,h'a1,h'a0,h'a0,h'9f,h'9e,h'9d .data.b h'9d,h'9c,h'9b,h'9b,h'9a,h'9a,h'99,h'98 .data.b h'98,h'97,h'96,h'96,h'95,h'95,h'94,h'94 .data.b h'93,h'93,h'92,h'92,h'91,h'91,h'90,h'90 .data.b h'90,h'8f,h'8f,h'8e,h'8e,h'8d,h'8d,h'8c .data.b h'8c,h'8c,h'8b,h'8b,h'8a,h'8a,h'8a,h'89 .data.b h'89,h'88,h'88,h'88,h'87,h'87,h'87,h'86 .data.b h'86,h'85,h'85,h'85,h'84,h'84,h'84,h'83 .data.b h'83,h'83,h'82,h'82,h'81,h'81,h'81,h'80 .data.b h'80,h'7f,h'7f,h'7f,h'7e,h'7e,h'7d,h'7d .data.b h'7d,h'7c,h'7c,h'7c,h'7b,h'7b,h'7b,h'7a .data.b h'7a,h'79,h'79,h'79,h'78,h'78,h'78,h'77 .data.b h'77,h'76,h'76,h'76,h'75,h'75,h'74,h'74 .data.b h'74,h'73,h'73,h'72,h'72,h'71,h'71,h'70 .data.b h'70,h'70,h'6f,h'6f,h'6e,h'6e,h'6d,h'6d .data.b h'6c,h'6c,h'6b,h'6b,h'6a,h'6a,h'69,h'68 .data.b h'68,h'67,h'66,h'66,h'65,h'65,h'64,h'63 .data.b h'63,h'62,h'61,h'60,h'60,h'5f,h'5e,h'5d .data.b h'5c,h'5c,h'5b,h'5a,h'59,h'58,h'57,h'56 .data.b h'54,h'53,h'52,h'51,h'50,h'4f,h'4d,h'4c .data.b h'4a,h'49,h'47,h'46,h'44,h'42,h'41,h'3f .data.b h'3d,h'3b,h'38,h'36,h'34,h'31,h'2f,h'2c .data.b h'29,h'27,h'23,h'20,h'1d,h'19,h'15,h'12 .data.b h'0e,h'0b,h'08,h'06,h'03,h'02,h'01,h'02 .data.b h'05,h'0c,h'16,h'24,h'37,h'4d,h'66,h'80 ; ##### Data 72 ##### .data.b h'80,h'9c,h'b1,h'bb,h'bc,h'b6,h'b0,h'a9 .data.b h'a3,h'9d,h'98,h'96,h'97,h'9a,h'9c,h'9c .data.b h'9b,h'9c,h'a0,h'a6,h'aa,h'aa,h'a6,h'a0 .data.b h'9e,h'a4,h'b0,h'be,h'cb,h'd3,h'd7,h'd8 .data.b h'd5,h'ce,h'c3,h'b5,h'a8,h'9e,h'98,h'95 .data.b h'93,h'92,h'94,h'9e,h'b0,h'c6,h'da,h'e7 .data.b h'ea,h'e5,h'de,h'd7,h'd2,h'd1,h'd3,h'd9 .data.b h'e1,h'ea,h'f0,h'ef,h'e6,h'd9,h'cc,h'c4 .data.b h'c1,h'c1,h'c1,h'c0,h'c0,h'c5,h'd0,h'de .data.b h'ed,h'f8,h'fe,h'ff,h'fb,h'f3,h'e5,h'd3 .data.b h'c0,h'b2,h'aa,h'aa,h'ab,h'ac,h'aa,h'a7 .data.b h'a7,h'ab,h'b1,h'b7,h'b9,h'b6,h'b2,h'ae .data.b h'ae,h'b1,h'b7,h'be,h'c8,h'd3,h'db,h'dc .data.b h'd3,h'bf,h'a7,h'91,h'83,h'7f,h'82,h'87 .data.b h'8d,h'94,h'9d,h'a6,h'b0,h'b6,h'b9,h'b8 .data.b h'b5,h'b2,h'ab,h'a1,h'94,h'88,h'7f,h'7d .data.b h'83,h'81,h'78,h'6c,h'5f,h'55,h'4e,h'4b .data.b h'48,h'47,h'4a,h'50,h'5a,h'63,h'6c,h'73 .data.b h'79,h'7e,h'81,h'7d,h'6f,h'59,h'41,h'2d .data.b h'24,h'25,h'2d,h'38,h'42,h'49,h'4f,h'52 .data.b h'52,h'4e,h'4a,h'47,h'49,h'4f,h'55,h'59 .data.b h'59,h'56,h'54,h'55,h'56,h'56,h'4e,h'40 .data.b h'2d,h'1b,h'0d,h'05,h'01,h'02,h'08,h'13 .data.b h'22,h'30,h'3b,h'40,h'40,h'3f,h'3f,h'3f .data.b h'3c,h'34,h'27,h'1a,h'11,h'10,h'16,h'1f .data.b h'27,h'2d,h'2f,h'2e,h'29,h'22,h'1b,h'16 .data.b h'19,h'26,h'3a,h'50,h'62,h'6c,h'6e,h'6d .data.b h'6b,h'68,h'62,h'58,h'4b,h'3d,h'32,h'2b .data.b h'28,h'29,h'2d,h'35,h'42,h'50,h'5c,h'62 .data.b h'60,h'5a,h'56,h'56,h'5a,h'60,h'64,h'65 .data.b h'64,h'64,h'66,h'69,h'6a,h'68,h'63,h'5d .data.b h'57,h'50,h'4a,h'44,h'45,h'4f,h'64,h'80 ; ##### Data 73 ##### .data.b h'80,h'8f,h'9e,h'ac,h'ba,h'c6,h'd2,h'dd .data.b h'e6,h'ee,h'f4,h'f9,h'fd,h'fe,h'ff,h'fe .data.b h'fc,h'f9,h'f4,h'ef,h'e8,h'e1,h'da,h'd1 .data.b h'c9,h'c0,h'b7,h'ae,h'a5,h'9c,h'93,h'8b .data.b h'83,h'7b,h'75,h'6f,h'69,h'65,h'61,h'5e .data.b h'5c,h'5a,h'5a,h'5a,h'5b,h'5d,h'60,h'63 .data.b h'66,h'6b,h'6f,h'74,h'79,h'7f,h'84,h'89 .data.b h'8e,h'93,h'97,h'9b,h'9e,h'a0,h'a2,h'a3 .data.b h'a3,h'a2,h'a1,h'9e,h'9a,h'96,h'90,h'8a .data.b h'83,h'7c,h'74,h'6b,h'63,h'5a,h'52,h'49 .data.b h'41,h'3a,h'33,h'2e,h'29,h'25,h'22,h'21 .data.b h'21,h'22,h'24,h'28,h'2d,h'33,h'3a,h'42 .data.b h'4b,h'55,h'60,h'6b,h'76,h'82,h'8d,h'98 .data.b h'a3,h'ad,h'b6,h'bf,h'c7,h'cd,h'd2,h'd6 .data.b h'd9,h'da,h'da,h'd9,h'd7,h'd3,h'cf,h'ca .data.b h'c3,h'bd,h'b5,h'ad,h'a4,h'9c,h'93,h'89 .data.b h'77,h'6d,h'64,h'5c,h'53,h'4b,h'43,h'3d .data.b h'36,h'31,h'2d,h'29,h'27,h'26,h'26,h'27 .data.b h'2a,h'2e,h'33,h'39,h'41,h'4a,h'53,h'5d .data.b h'68,h'73,h'7e,h'8a,h'95,h'a0,h'ab,h'b5 .data.b h'be,h'c6,h'cd,h'd3,h'd8,h'dc,h'de,h'df .data.b h'df,h'de,h'db,h'd7,h'd2,h'cd,h'c6,h'bf .data.b h'b7,h'ae,h'a6,h'9d,h'95,h'8c,h'84,h'7d .data.b h'76,h'70,h'6a,h'66,h'62,h'5f,h'5e,h'5d .data.b h'5d,h'5e,h'60,h'62,h'65,h'69,h'6d,h'72 .data.b h'77,h'7c,h'81,h'87,h'8c,h'91,h'95,h'9a .data.b h'9d,h'a0,h'a3,h'a5,h'a6,h'a6,h'a6,h'a4 .data.b h'a2,h'9f,h'9b,h'97,h'91,h'8b,h'85,h'7d .data.b h'75,h'6d,h'64,h'5b,h'52,h'49,h'40,h'37 .data.b h'2f,h'26,h'1f,h'18,h'11,h'0c,h'07,h'04 .data.b h'02,h'01,h'02,h'03,h'07,h'0c,h'12,h'1a .data.b h'23,h'2e,h'3a,h'46,h'54,h'62,h'71,h'80 ; ##### Data 74 ##### .data.b h'80,h'9a,h'b2,h'c8,h'db,h'ea,h'f4,h'fb .data.b h'fe,h'ff,h'fe,h'fb,h'f9,h'f6,h'f3,h'f0 .data.b h'ee,h'ec,h'eb,h'e9,h'e7,h'e5,h'e4,h'e2 .data.b h'e1,h'e0,h'df,h'df,h'df,h'de,h'de,h'de .data.b h'dd,h'dc,h'dc,h'db,h'da,h'd9,h'd8,h'd8 .data.b h'd7,h'd6,h'd5,h'd4,h'd2,h'd1,h'd0,h'cf .data.b h'ce,h'cd,h'cc,h'cb,h'ca,h'c9,h'c8,h'c7 .data.b h'c6,h'c5,h'c4,h'c3,h'c2,h'c2,h'c1,h'c1 .data.b h'c0,h'bf,h'be,h'bd,h'bc,h'bb,h'ba,h'b9 .data.b h'b8,h'b8,h'b7,h'b6,h'b5,h'b4,h'b2,h'b1 .data.b h'b0,h'ae,h'ad,h'ac,h'aa,h'a9,h'a8,h'a7 .data.b h'a6,h'a5,h'a4,h'a3,h'a2,h'a0,h'9f,h'9e .data.b h'9d,h'9c,h'9b,h'9b,h'9a,h'99,h'98,h'97 .data.b h'96,h'95,h'94,h'93,h'92,h'91,h'90,h'8f .data.b h'8f,h'8e,h'8d,h'8c,h'8b,h'8a,h'89,h'88 .data.b h'87,h'86,h'85,h'84,h'84,h'83,h'82,h'81 .data.b h'7f,h'7e,h'7d,h'7c,h'7c,h'7b,h'7a,h'79 .data.b h'78,h'77,h'76,h'75,h'74,h'73,h'72,h'71 .data.b h'71,h'70,h'6f,h'6e,h'6d,h'6c,h'6b,h'6a .data.b h'69,h'68,h'67,h'66,h'65,h'65,h'64,h'63 .data.b h'62,h'61,h'60,h'5e,h'5d,h'5c,h'5b,h'5a .data.b h'59,h'58,h'57,h'56,h'54,h'53,h'52,h'50 .data.b h'4f,h'4e,h'4c,h'4b,h'4a,h'49,h'48,h'48 .data.b h'47,h'46,h'45,h'44,h'43,h'42,h'41,h'40 .data.b h'3f,h'3f,h'3e,h'3e,h'3d,h'3c,h'3b,h'3a .data.b h'39,h'38,h'37,h'36,h'35,h'34,h'33,h'32 .data.b h'31,h'30,h'2f,h'2e,h'2c,h'2b,h'2a,h'29 .data.b h'28,h'28,h'27,h'26,h'25,h'24,h'24,h'23 .data.b h'22,h'22,h'22,h'21,h'21,h'21,h'20,h'1f .data.b h'1e,h'1c,h'1b,h'19,h'17,h'15,h'14,h'12 .data.b h'10,h'0d,h'0a,h'07,h'05,h'02,h'01,h'02 .data.b h'05,h'0c,h'16,h'25,h'38,h'4e,h'66,h'80 ; ##### Data 75 ##### .data.b h'80,h'd5,h'ff,h'fe,h'ee,h'e4,h'dd,h'd3 .data.b h'ca,h'c5,h'c1,h'bb,h'b5,h'b2,h'af,h'aa .data.b h'a6,h'a3,h'a1,h'9d,h'99,h'97,h'95,h'92 .data.b h'8f,h'8e,h'8d,h'8b,h'8a,h'8a,h'8a,h'8a .data.b h'8a,h'8b,h'8c,h'8d,h'8d,h'8f,h'90,h'91 .data.b h'92,h'93,h'94,h'94,h'94,h'94,h'94,h'93 .data.b h'92,h'91,h'90,h'8e,h'8c,h'8b,h'89,h'87 .data.b h'85,h'83,h'82,h'80,h'7e,h'7e,h'7d,h'7c .data.b h'7b,h'7c,h'7c,h'7c,h'7d,h'7e,h'7f,h'80 .data.b h'82,h'83,h'85,h'86,h'87,h'89,h'8a,h'8a .data.b h'8b,h'8c,h'8c,h'8b,h'8b,h'8b,h'8a,h'88 .data.b h'87,h'86,h'84,h'82,h'81,h'7f,h'7e,h'7c .data.b h'7b,h'7a,h'79,h'78,h'78,h'78,h'78,h'79 .data.b h'79,h'7b,h'7c,h'7d,h'7e,h'80,h'82,h'83 .data.b h'85,h'86,h'87,h'88,h'89,h'8a,h'8a,h'8a .data.b h'8a,h'89,h'88,h'87,h'86,h'85,h'83,h'81 .data.b h'7f,h'7d,h'7b,h'7a,h'79,h'78,h'77,h'76 .data.b h'76,h'76,h'76,h'77,h'78,h'79,h'7a,h'7b .data.b h'7d,h'7e,h'80,h'82,h'83,h'84,h'85,h'87 .data.b h'87,h'88,h'88,h'88,h'88,h'87,h'86,h'85 .data.b h'84,h'82,h'81,h'7f,h'7e,h'7c,h'7a,h'79 .data.b h'78,h'76,h'75,h'75,h'75,h'74,h'74,h'75 .data.b h'76,h'76,h'77,h'79,h'7a,h'7b,h'7d,h'7e .data.b h'80,h'81,h'82,h'83,h'84,h'84,h'84,h'85 .data.b h'84,h'83,h'82,h'82,h'80,h'7e,h'7d,h'7b .data.b h'79,h'77,h'75,h'74,h'72,h'70,h'6f,h'6e .data.b h'6d,h'6c,h'6c,h'6c,h'6c,h'6c,h'6d,h'6e .data.b h'6f,h'70,h'71,h'73,h'73,h'74,h'75,h'76 .data.b h'76,h'76,h'76,h'76,h'75,h'73,h'72,h'71 .data.b h'6e,h'6b,h'69,h'67,h'63,h'5f,h'5d,h'5a .data.b h'56,h'51,h'4e,h'4b,h'45,h'3f,h'3b,h'36 .data.b h'2d,h'23,h'1c,h'12,h'02,h'01,h'2b,h'80 ; ##### Data 76 ##### .data.b h'80,h'a1,h'bf,h'd8,h'eb,h'f7,h'fd,h'ff .data.b h'fd,h'f9,h'f3,h'ec,h'e4,h'db,h'd3,h'cc .data.b h'c5,h'bf,h'ba,h'b6,h'b1,h'ad,h'aa,h'a7 .data.b h'a5,h'a2,h'a0,h'9e,h'9c,h'9b,h'9a,h'9a .data.b h'9a,h'9a,h'9a,h'9a,h'99,h'98,h'97,h'97 .data.b h'96,h'95,h'94,h'93,h'93,h'92,h'91,h'91 .data.b h'90,h'8f,h'8e,h'8c,h'8b,h'8a,h'89,h'88 .data.b h'87,h'86,h'86,h'86,h'86,h'87,h'89,h'8b .data.b h'8d,h'90,h'92,h'94,h'95,h'95,h'95,h'94 .data.b h'93,h'92,h'91,h'8f,h'8e,h'8d,h'8b,h'8a .data.b h'89,h'88,h'87,h'87,h'86,h'86,h'85,h'84 .data.b h'84,h'83,h'83,h'82,h'82,h'82,h'83,h'83 .data.b h'84,h'85,h'86,h'86,h'86,h'86,h'85,h'85 .data.b h'84,h'84,h'83,h'83,h'82,h'80,h'7f,h'7d .data.b h'7a,h'77,h'73,h'6e,h'69,h'64,h'5e,h'59 .data.b h'53,h'4f,h'4b,h'4a,h'4c,h'53,h'5f,h'6e .data.b h'92,h'a1,h'ad,h'b4,h'b6,h'b5,h'b1,h'ad .data.b h'a7,h'a2,h'9c,h'97,h'92,h'8d,h'89,h'86 .data.b h'83,h'81,h'80,h'7e,h'7d,h'7d,h'7c,h'7c .data.b h'7b,h'7b,h'7a,h'7a,h'7a,h'7a,h'7b,h'7c .data.b h'7d,h'7d,h'7e,h'7e,h'7e,h'7d,h'7d,h'7c .data.b h'7c,h'7b,h'7a,h'7a,h'79,h'79,h'78,h'77 .data.b h'76,h'75,h'73,h'72,h'71,h'6f,h'6e,h'6d .data.b h'6c,h'6b,h'6b,h'6b,h'6c,h'6e,h'70,h'73 .data.b h'75,h'77,h'79,h'7a,h'7a,h'7a,h'7a,h'79 .data.b h'78,h'77,h'76,h'75,h'74,h'72,h'71,h'70 .data.b h'6f,h'6f,h'6e,h'6d,h'6d,h'6c,h'6b,h'6a .data.b h'69,h'69,h'68,h'67,h'66,h'66,h'66,h'66 .data.b h'66,h'66,h'65,h'64,h'62,h'60,h'5e,h'5b .data.b h'59,h'56,h'53,h'4f,h'4a,h'46,h'41,h'3b .data.b h'34,h'2d,h'25,h'1c,h'14,h'0d,h'07,h'03 .data.b h'01,h'03,h'09,h'15,h'28,h'41,h'5f,h'80 ; ##### Data 77 ##### .data.b h'80,h'91,h'a1,h'b0,h'bd,h'c8,h'd2,h'd9 .data.b h'de,h'e3,h'e6,h'e9,h'ec,h'ef,h'f1,h'f4 .data.b h'f6,h'f7,h'f9,h'fa,h'fa,h'fb,h'fb,h'fc .data.b h'fc,h'fd,h'fd,h'fe,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'fe,h'fe,h'fe,h'fd,h'fd,h'fc,h'fc .data.b h'fb,h'fb,h'fa,h'f9,h'f9,h'f8,h'f7,h'f7 .data.b h'f7,h'f7,h'f7,h'f7,h'f7,h'f7,h'f6,h'f6 .data.b h'f6,h'f6,h'f6,h'f6,h'f6,h'f6,h'f6,h'f6 .data.b h'f6,h'f6,h'f6,h'f6,h'f5,h'f5,h'f5,h'f5 .data.b h'f5,h'f5,h'f5,h'f5,h'f5,h'f5,h'f5,h'f5 .data.b h'f5,h'f5,h'f6,h'f6,h'f7,h'f7,h'f8,h'f8 .data.b h'f9,h'fa,h'fa,h'fa,h'fb,h'fb,h'fc,h'fc .data.b h'fc,h'fd,h'fd,h'fc,h'fc,h'fc,h'fb,h'fb .data.b h'fa,h'fa,h'f9,h'f9,h'f8,h'f8,h'f7,h'f6 .data.b h'f4,h'f2,h'f0,h'ed,h'eb,h'e8,h'e5,h'e2 .data.b h'dd,h'd8,h'd1,h'c8,h'bd,h'b0,h'a1,h'91 .data.b h'6f,h'5f,h'50,h'43,h'38,h'2f,h'28,h'23 .data.b h'1e,h'1b,h'18,h'15,h'13,h'10,h'0e,h'0c .data.b h'0a,h'09,h'08,h'08,h'07,h'07,h'06,h'06 .data.b h'05,h'05,h'04,h'04,h'04,h'03,h'03,h'04 .data.b h'04,h'04,h'05,h'05,h'06,h'06,h'06,h'07 .data.b h'08,h'08,h'09,h'09,h'0a,h'0a,h'0b,h'0b .data.b h'0b,h'0b,h'0b,h'0b,h'0b,h'0b,h'0b,h'0b .data.b h'0b,h'0b,h'0b,h'0b,h'0a,h'0a,h'0a,h'0a .data.b h'0a,h'0a,h'0a,h'0a,h'0a,h'0a,h'0a,h'0a .data.b h'0a,h'0a,h'09,h'09,h'09,h'09,h'09,h'09 .data.b h'09,h'09,h'08,h'07,h'07,h'06,h'05,h'05 .data.b h'04,h'04,h'03,h'03,h'02,h'02,h'02,h'01 .data.b h'01,h'01,h'01,h'01,h'02,h'03,h'03,h'04 .data.b h'04,h'05,h'05,h'06,h'06,h'07,h'09,h'0a .data.b h'0c,h'0f,h'11,h'14,h'17,h'1a,h'1d,h'22 .data.b h'27,h'2e,h'38,h'43,h'50,h'5f,h'6f,h'80 ; ##### Data 78 ##### .data.b h'80,h'8e,h'9c,h'a8,h'b3,h'bc,h'c4,h'ca .data.b h'ce,h'd1,h'd4,h'd6,h'd8,h'd9,h'db,h'dd .data.b h'df,h'e0,h'e1,h'e1,h'e0,h'de,h'db,h'd8 .data.b h'd4,h'cf,h'c9,h'c3,h'bd,h'b7,h'b1,h'ab .data.b h'a4,h'9e,h'97,h'90,h'88,h'81,h'79,h'70 .data.b h'68,h'60,h'58,h'52,h'4c,h'48,h'45,h'44 .data.b h'46,h'49,h'4e,h'55,h'5d,h'65,h'6d,h'75 .data.b h'7c,h'83,h'88,h'8d,h'91,h'95,h'9a,h'9f .data.b h'a4,h'ab,h'b3,h'bb,h'c4,h'cd,h'd6,h'de .data.b h'e5,h'eb,h'f0,h'f5,h'f8,h'fa,h'fc,h'fe .data.b h'ff,h'ff,h'ff,h'fe,h'fc,h'fa,h'f5,h'f0 .data.b h'e9,h'e0,h'd6,h'cc,h'c0,h'b4,h'a8,h'9d .data.b h'92,h'88,h'7f,h'78,h'71,h'6c,h'68,h'64 .data.b h'61,h'5e,h'5b,h'57,h'53,h'4e,h'4a,h'44 .data.b h'40,h'3b,h'38,h'36,h'35,h'37,h'39,h'3e .data.b h'44,h'4b,h'52,h'5a,h'62,h'6a,h'72,h'79 .data.b h'87,h'8e,h'96,h'9e,h'a6,h'ae,h'b5,h'bc .data.b h'c2,h'c7,h'c9,h'cb,h'ca,h'c8,h'c5,h'c0 .data.b h'bc,h'b6,h'b2,h'ad,h'a9,h'a5,h'a2,h'9f .data.b h'9c,h'98,h'94,h'8f,h'88,h'81,h'78,h'6e .data.b h'63,h'58,h'4c,h'40,h'34,h'2a,h'20,h'17 .data.b h'10,h'0b,h'06,h'04,h'02,h'01,h'01,h'01 .data.b h'02,h'04,h'06,h'08,h'0b,h'10,h'15,h'1b .data.b h'22,h'2a,h'33,h'3c,h'45,h'4d,h'55,h'5c .data.b h'61,h'66,h'6b,h'6f,h'73,h'78,h'7d,h'84 .data.b h'8b,h'93,h'9b,h'a3,h'ab,h'b2,h'b7,h'ba .data.b h'bc,h'bb,h'b8,h'b4,h'ae,h'a8,h'a0,h'98 .data.b h'90,h'87,h'7f,h'78,h'70,h'69,h'62,h'5c .data.b h'55,h'4f,h'49,h'43,h'3d,h'37,h'31,h'2c .data.b h'28,h'25,h'22,h'20,h'1f,h'1f,h'20,h'21 .data.b h'23,h'25,h'27,h'28,h'2a,h'2c,h'2f,h'32 .data.b h'36,h'3c,h'44,h'4d,h'58,h'64,h'72,h'80 ; ##### Data 79 ##### .data.b h'80,h'89,h'92,h'9b,h'a4,h'ac,h'b4,h'bb .data.b h'c1,h'c7,h'cc,h'd1,h'd5,h'd9,h'dc,h'df .data.b h'e1,h'e3,h'e5,h'e7,h'e9,h'eb,h'ed,h'ef .data.b h'f1,h'f3,h'f5,h'f7,h'f9,h'fb,h'fc,h'fd .data.b h'fe,h'ff,h'ff,h'ff,h'fe,h'fd,h'fc,h'fa .data.b h'f8,h'f5,h'f2,h'ef,h'ec,h'e9,h'e6,h'e2 .data.b h'df,h'dc,h'd8,h'd5,h'd2,h'cf,h'cc,h'c8 .data.b h'c5,h'c2,h'bf,h'bc,h'b9,h'b6,h'b3,h'b0 .data.b h'ad,h'aa,h'a7,h'a4,h'a2,h'9f,h'9d,h'9a .data.b h'98,h'96,h'95,h'93,h'92,h'91,h'90,h'8f .data.b h'8e,h'8e,h'8d,h'8d,h'8c,h'8c,h'8c,h'8b .data.b h'8b,h'8a,h'8a,h'8a,h'89,h'89,h'89,h'89 .data.b h'89,h'89,h'89,h'89,h'89,h'89,h'89,h'89 .data.b h'89,h'89,h'8a,h'8a,h'8a,h'89,h'89,h'89 .data.b h'89,h'88,h'88,h'87,h'86,h'86,h'85,h'84 .data.b h'84,h'83,h'83,h'82,h'82,h'81,h'81,h'80 .data.b h'80,h'7f,h'7f,h'7e,h'7e,h'7d,h'7d,h'7c .data.b h'7c,h'7b,h'7a,h'7a,h'79,h'78,h'78,h'77 .data.b h'77,h'77,h'77,h'76,h'76,h'76,h'77,h'77 .data.b h'77,h'77,h'77,h'77,h'77,h'77,h'77,h'77 .data.b h'77,h'77,h'77,h'77,h'76,h'76,h'76,h'75 .data.b h'75,h'74,h'74,h'74,h'73,h'73,h'72,h'72 .data.b h'71,h'70,h'6f,h'6e,h'6d,h'6b,h'6a,h'68 .data.b h'66,h'63,h'61,h'5e,h'5c,h'59,h'56,h'53 .data.b h'50,h'4d,h'4a,h'47,h'44,h'41,h'3e,h'3b .data.b h'38,h'34,h'31,h'2e,h'2b,h'28,h'24,h'21 .data.b h'1e,h'1a,h'17,h'14,h'11,h'0e,h'0b,h'08 .data.b h'06,h'04,h'03,h'02,h'01,h'01,h'01,h'02 .data.b h'03,h'04,h'05,h'07,h'09,h'0b,h'0d,h'0f .data.b h'11,h'13,h'15,h'17,h'19,h'1b,h'1d,h'1f .data.b h'21,h'24,h'27,h'2b,h'2f,h'34,h'39,h'3f .data.b h'45,h'4c,h'54,h'5c,h'65,h'6e,h'77,h'80 ; ##### Data 7A ##### .data.b h'80,h'8b,h'95,h'a0,h'aa,h'b4,h'bd,h'c6 .data.b h'cf,h'd7,h'de,h'e4,h'ea,h'ef,h'f3,h'f7 .data.b h'fa,h'fc,h'fe,h'ff,h'ff,h'ff,h'fe,h'fe .data.b h'fc,h'fb,h'f9,h'f7,h'f5,h'f2,h'f0,h'ed .data.b h'eb,h'e8,h'e6,h'e4,h'e1,h'df,h'dd,h'db .data.b h'd9,h'd7,h'd5,h'd4,h'd2,h'd1,h'd0,h'cf .data.b h'cf,h'ce,h'ce,h'ce,h'ce,h'ce,h'cf,h'cf .data.b h'd0,h'd1,h'd1,h'd2,h'd3,h'd4,h'd5,h'd6 .data.b h'd7,h'd7,h'd8,h'd8,h'd8,h'd7,h'd6,h'd5 .data.b h'd4,h'd2,h'd0,h'ce,h'cb,h'c8,h'c5,h'c1 .data.b h'bd,h'b9,h'b4,h'b0,h'ab,h'a7,h'a2,h'9e .data.b h'99,h'94,h'90,h'8c,h'88,h'84,h'80,h'7d .data.b h'7a,h'77,h'74,h'72,h'70,h'6e,h'6c,h'6b .data.b h'69,h'68,h'68,h'67,h'67,h'66,h'66,h'67 .data.b h'67,h'68,h'68,h'69,h'6a,h'6b,h'6d,h'6e .data.b h'70,h'72,h'73,h'75,h'77,h'79,h'7c,h'7e .data.b h'82,h'84,h'87,h'89,h'8b,h'8d,h'8e,h'90 .data.b h'92,h'93,h'95,h'96,h'97,h'98,h'98,h'99 .data.b h'99,h'9a,h'9a,h'99,h'99,h'98,h'98,h'97 .data.b h'95,h'94,h'92,h'90,h'8e,h'8c,h'89,h'86 .data.b h'83,h'80,h'7c,h'78,h'74,h'70,h'6c,h'67 .data.b h'62,h'5e,h'59,h'55,h'50,h'4c,h'47,h'43 .data.b h'3f,h'3b,h'38,h'35,h'32,h'30,h'2e,h'2c .data.b h'2b,h'2a,h'29,h'28,h'28,h'28,h'29,h'29 .data.b h'2a,h'2b,h'2c,h'2d,h'2e,h'2f,h'2f,h'30 .data.b h'31,h'31,h'32,h'32,h'32,h'32,h'32,h'31 .data.b h'31,h'30,h'2f,h'2e,h'2c,h'2b,h'29,h'27 .data.b h'25,h'23,h'21,h'1f,h'1c,h'1a,h'18,h'15 .data.b h'13,h'10,h'0e,h'0b,h'09,h'07,h'05,h'04 .data.b h'02,h'02,h'01,h'01,h'01,h'02,h'04,h'06 .data.b h'09,h'0d,h'11,h'16,h'1c,h'22,h'29,h'31 .data.b h'3a,h'43,h'4c,h'56,h'60,h'6b,h'75,h'80 ; ##### Data 7B ##### .data.b h'80,h'9f,h'bb,h'd0,h'df,h'e8,h'ee,h'f2 .data.b h'f6,h'fa,h'fd,h'ff,h'ff,h'fd,h'fa,h'f7 .data.b h'f5,h'f3,h'f2,h'f0,h'ef,h'ee,h'ee,h'ef .data.b h'f1,h'f4,h'f7,h'f8,h'f8,h'f7,h'f5,h'f4 .data.b h'f4,h'f3,h'f1,h'ee,h'e8,h'e0,h'd6,h'ce .data.b h'c7,h'c3,h'c2,h'c2,h'c2,h'c2,h'c1,h'bf .data.b h'bc,h'bb,h'ba,h'ba,h'ba,h'ba,h'b9,h'b9 .data.b h'b8,h'b7,h'b5,h'b3,h'b0,h'ad,h'aa,h'a6 .data.b h'a4,h'a2,h'a3,h'a4,h'a7,h'aa,h'ae,h'b2 .data.b h'b6,h'b9,h'bb,h'bb,h'ba,h'b8,h'b6,h'b4 .data.b h'b4,h'b5,h'b6,h'b7,h'b7,h'b4,h'af,h'a9 .data.b h'a2,h'9c,h'97,h'93,h'8e,h'8a,h'85,h'81 .data.b h'7f,h'7e,h'7e,h'7f,h'81,h'81,h'81,h'80 .data.b h'7f,h'7f,h'7f,h'80,h'80,h'7f,h'7d,h'7a .data.b h'79,h'7a,h'7c,h'80,h'85,h'87,h'88,h'86 .data.b h'84,h'81,h'80,h'81,h'83,h'84,h'84,h'83 .data.b h'7d,h'7c,h'7c,h'7d,h'7f,h'80,h'7f,h'7c .data.b h'7a,h'78,h'79,h'7b,h'80,h'84,h'86,h'87 .data.b h'86,h'83,h'81,h'80,h'80,h'81,h'81,h'81 .data.b h'80,h'7f,h'7f,h'7f,h'81,h'82,h'82,h'81 .data.b h'7f,h'7b,h'76,h'72,h'6d,h'69,h'64,h'5e .data.b h'57,h'51,h'4c,h'49,h'49,h'4a,h'4b,h'4c .data.b h'4c,h'4a,h'48,h'46,h'45,h'45,h'47,h'4a .data.b h'4e,h'52,h'56,h'59,h'5c,h'5d,h'5e,h'5c .data.b h'5a,h'56,h'53,h'50,h'4d,h'4b,h'49,h'48 .data.b h'47,h'47,h'46,h'46,h'46,h'46,h'45,h'44 .data.b h'41,h'3f,h'3e,h'3e,h'3e,h'3e,h'3d,h'39 .data.b h'32,h'2a,h'20,h'18,h'12,h'0f,h'0d,h'0c .data.b h'0c,h'0b,h'09,h'08,h'08,h'09,h'0c,h'0f .data.b h'11,h'12,h'12,h'11,h'10,h'0e,h'0d,h'0b .data.b h'09,h'06,h'03,h'01,h'01,h'03,h'06,h'0a .data.b h'0e,h'12,h'18,h'21,h'30,h'45,h'61,h'80 ; ##### Data 7C ##### .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff .data.b h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff,h'ff ; ##### Data 7D ##### .data.b h'ff,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 .data.b h'00,h'00,h'00,h'00,h'00,h'00,h'00,h'00 ; ##### Data 7E ##### .data.b h'80,h'82,h'84,h'86,h'88,h'8a,h'8c,h'8e .data.b h'90,h'92,h'94,h'96,h'98,h'9a,h'9c,h'9e .data.b h'a0,h'a2,h'a4,h'a6,h'a8,h'aa,h'ac,h'ae .data.b h'b0,h'b2,h'b4,h'b6,h'b8,h'ba,h'bc,h'be .data.b h'c0,h'c2,h'c4,h'c6,h'c8,h'ca,h'cc,h'ce .data.b h'd0,h'd2,h'd4,h'd6,h'd8,h'da,h'dc,h'de .data.b h'e0,h'e2,h'e4,h'e6,h'e8,h'ea,h'ec,h'ee .data.b h'f0,h'f2,h'f4,h'f6,h'f8,h'fa,h'fc,h'fe .data.b h'ff,h'fd,h'fb,h'f9,h'f7,h'f5,h'f3,h'f1 .data.b h'ef,h'ed,h'eb,h'e9,h'e7,h'e5,h'e3,h'e1 .data.b h'df,h'dd,h'db,h'd9,h'd7,h'd5,h'd3,h'd1 .data.b h'cf,h'cd,h'cb,h'c9,h'c7,h'c5,h'c3,h'c1 .data.b h'bf,h'bd,h'bb,h'b9,h'b7,h'b5,h'b3,h'b1 .data.b h'af,h'ad,h'ab,h'a9,h'a7,h'a5,h'a3,h'a1 .data.b h'9f,h'9d,h'9b,h'99,h'97,h'95,h'93,h'91 .data.b h'8f,h'8d,h'8b,h'89,h'87,h'85,h'83,h'81 .data.b h'7f,h'7d,h'7b,h'79,h'77,h'75,h'73,h'71 .data.b h'6f,h'6d,h'6b,h'69,h'67,h'65,h'63,h'61 .data.b h'5f,h'5d,h'5b,h'59,h'57,h'55,h'53,h'51 .data.b h'4f,h'4d,h'4b,h'49,h'47,h'45,h'43,h'41 .data.b h'3f,h'3d,h'3b,h'39,h'37,h'35,h'33,h'31 .data.b h'2f,h'2d,h'2b,h'29,h'27,h'25,h'23,h'21 .data.b h'1f,h'1d,h'1b,h'19,h'17,h'15,h'13,h'11 .data.b h'0f,h'0d,h'0b,h'09,h'07,h'05,h'03,h'01 .data.b h'00,h'02,h'04,h'06,h'08,h'0a,h'0c,h'0e .data.b h'10,h'12,h'14,h'16,h'18,h'1a,h'1c,h'1e .data.b h'20,h'22,h'24,h'26,h'28,h'2a,h'2c,h'2e .data.b h'30,h'32,h'34,h'36,h'38,h'3a,h'3c,h'3e .data.b h'40,h'42,h'44,h'46,h'48,h'4a,h'4c,h'4e .data.b h'50,h'52,h'54,h'56,h'58,h'5a,h'5c,h'5e .data.b h'60,h'62,h'64,h'66,h'68,h'6a,h'6c,h'6e .data.b h'70,h'72,h'74,h'76,h'78,h'7a,h'7c,h'7e ; ##### Data 7F ##### .data.b h'00,h'01,h'02,h'03,h'04,h'05,h'06,h'07 .data.b h'08,h'09,h'0a,h'0b,h'0c,h'0d,h'0e,h'0f .data.b h'10,h'11,h'12,h'13,h'14,h'15,h'16,h'17 .data.b h'18,h'19,h'1a,h'1b,h'1c,h'1d,h'1e,h'1f .data.b h'20,h'21,h'22,h'23,h'24,h'25,h'26,h'27 .data.b h'28,h'29,h'2a,h'2b,h'2c,h'2d,h'2e,h'2f .data.b h'30,h'31,h'32,h'33,h'34,h'35,h'36,h'37 .data.b h'38,h'39,h'3a,h'3b,h'3c,h'3d,h'3e,h'3f .data.b h'40,h'41,h'42,h'43,h'44,h'45,h'46,h'47 .data.b h'48,h'49,h'4a,h'4b,h'4c,h'4d,h'4e,h'4f .data.b h'50,h'51,h'52,h'53,h'54,h'55,h'56,h'57 .data.b h'58,h'59,h'5a,h'5b,h'5c,h'5d,h'5e,h'5f .data.b h'60,h'61,h'62,h'63,h'64,h'65,h'66,h'67 .data.b h'68,h'69,h'6a,h'6b,h'6c,h'6d,h'6e,h'6f .data.b h'70,h'71,h'72,h'73,h'74,h'75,h'76,h'77 .data.b h'78,h'79,h'7a,h'7b,h'7c,h'7d,h'7e,h'7f .data.b h'80,h'81,h'82,h'83,h'84,h'85,h'86,h'87 .data.b h'88,h'89,h'8a,h'8b,h'8c,h'8d,h'8e,h'8f .data.b h'90,h'91,h'92,h'93,h'94,h'95,h'96,h'97 .data.b h'98,h'99,h'9a,h'9b,h'9c,h'9d,h'9e,h'9f .data.b h'a0,h'a1,h'a2,h'a3,h'a4,h'a5,h'a6,h'a7 .data.b h'a8,h'a9,h'aa,h'ab,h'ac,h'ad,h'ae,h'af .data.b h'b0,h'b1,h'b2,h'b3,h'b4,h'b5,h'b6,h'b7 .data.b h'b8,h'b9,h'ba,h'bb,h'bc,h'bd,h'be,h'bf .data.b h'c0,h'c1,h'c2,h'c3,h'c4,h'c5,h'c6,h'c7 .data.b h'c8,h'c9,h'ca,h'cb,h'cc,h'cd,h'ce,h'cf .data.b h'd0,h'd1,h'd2,h'd3,h'd4,h'd5,h'd6,h'd7 .data.b h'd8,h'd9,h'da,h'db,h'dc,h'dd,h'de,h'df .data.b h'e0,h'e1,h'e2,h'e3,h'e4,h'e5,h'e6,h'e7 .data.b h'e8,h'e9,h'ea,h'eb,h'ec,h'ed,h'ee,h'ef .data.b h'f0,h'f1,h'f2,h'f3,h'f4,h'f5,h'f6,h'f7 .data.b h'f8,h'f9,h'fa,h'fb,h'fc,h'fd,h'fe,h'ff ;***** Reset --> Initialize --> Main Loop ***** .section program,code,locate=h'002000 start: mov.l #h'0fff0f,er7 ; stack pointer set mov.l #h'0fef10,er2 mov.w #h'0fe0,r1 mov.b #0,r0l _ram_clear: mov.b r0l,@er2 inc.l #1,er2 dec.w #1,r1 bne _ram_clear jsr @sci0_init ; SCI initialize mov.b #b'00100011,r0l mov.b r0l,@tcr0 ; Timer0 init : 2MHz clock bclr #0,@tsr0 ; Clear IMFA bset #0,@tier0 ; timer INT set mov.w #49,r0 ; 25usec INT mov.w r0,@gra0 mov.b #b'11111111,r0l mov.b r0l,@pbddr ; set : Port[B] all output mov.b #b'01100000,r0l mov.b r0l,@dacr ; D/A 0 enable ! jsr @wait_500msec mov.b #255,r0l mov.b r0l,@st_0 ; all CH empty mov.b r0l,@st_1 mov.b r0l,@st_2 mov.b r0l,@st_3 mov.b #b'00010000,r0l mov.b r0l,@bank mov.b #b'01110000,r0l ; tx/rx start ! mov.b r0l,@scr bset #0,@tstr ; timer start ! andc.b #b'01111111,ccr ; interrupt enable loop: jsr @timer_check jsr @rx_midi_check jmp @loop ;***** SCI init / MIDI Transmit Routines ***** sci0_init: mov.b #b'00000000,r0l mov.b r0l,@scr mov.b #b'00000000,r0l mov.b r0l,@smr mov.b #15,r0l mov.b r0l,@brr mov.w #500,r0 _sci0_wait: dec.w #1,r0 bne _sci0_wait mov.b @ssr,r0l ; (dummy read) mov.b #0,r0l mov.b r0l,@ssr mov.b #b'00001000,r0l mov.b r0l,@iprb ; SCI0-int priority UP ! rts ;***** Timer / Counter Routines ***** wait_500msec: mov.l #500,er1 _wait_1: jsr @wait_1msec sub.l #1,er1 bne _wait_1 rts wait_1msec: mov.l #2048,er2 _wait_2: sub.l #1,er2 bne _wait_2 rts int_timer0: push.w r0 mov.b #1,r0l mov.b r0l,@flag btst #0,@tsr0 bclr #0,@tsr0 ; Clear IMFA pop.w r0 rte timer_check: mov.b @flag,r0l cmp.b #0,r0l bne _timer_event rts _timer_event: mov.b #0,r0l mov.b r0l,@flag mov.b @ch,r0l inc.b r0l and.b #b'00000011,r0l mov.b r0l,@ch cmp.b #0,r0l beq _ch_0 cmp.b #1,r0l beq _ch_1 cmp.b #2,r0l beq _ch_2 cmp.b #3,r0l beq _ch_3 _ch_0: mov.b @st_0,r0l cmp.b #255,r0l beq _pass mov.w @fn_0,r2 mov.w @ad_0,r3 add.w r2,r3 mov.w r3,@ad_0 _f_set: mov.b r3h,r1l mov.b @bank,r1h mov.w #0,e1 mov.b @er1,r0l mov.b r0l,@dadr0 rts _pass: mov.b #128,r0l mov.b r0l,@dadr0 rts _ch_1: mov.b @st_1,r0l cmp.b #255,r0l beq _pass mov.w @fn_1,r2 mov.w @ad_1,r3 add.w r2,r3 mov.w r3,@ad_1 jmp @_f_set _ch_2: mov.b @st_2,r0l cmp.b #255,r0l beq _pass mov.w @fn_2,r2 mov.w @ad_2,r3 add.w r2,r3 mov.w r3,@ad_2 jmp @_f_set _ch_3: mov.b @st_3,r0l cmp.b #255,r0l beq _pass mov.w @fn_3,r2 mov.w @ad_3,r3 add.w r2,r3 mov.w r3,@ad_3 jmp @_f_set ;***** Rx Interrupt / MIDI Receive Routines ***** int_rx_error: bclr #5,@ssr bclr #4,@ssr rte int_rx_full: push.w r0 push.l er5 btst #6,@ssr bclr #6,@ssr mov.w @rx_top,r5 mov.w #0,e5 mov.b @rdr,r0l mov.b r0l,@(rx_fifo,er5) inc.w #1,r5 bclr #2,r5h mov.w r5,@rx_top pop.l er5 pop.w r0 rte rx_midi_check: mov.w @rx_top,r1 mov.w @rx_end,r5 cmp.w r1,r5 bne _rx_exist rts _rx_exist: mov.w #0,e5 mov.b @(rx_fifo,er5),r0h ; received data = [r0h] inc.w #1,r5 bclr #2,r5h mov.w r5,@rx_end btst #7,r0h beq running mov.b r0h,r0l and.b #b'11111000,r0l cmp.b #b'11111000,r0l bne _lower_f8 rts _lower_f8: and.b #b'11110000,r0l cmp.b #b'11110000,r0l bne _lower_f0 mov.b #0,r0l mov.b r0l,@rsb rts _lower_f0 mov.b r0h,r0l and.b #b'00001111,r0l mov.b r0l,@channel mov.b r0h,r0l and.b #b'11110000,r0l mov.b r0l,@rsb mov.b #0,r0l mov.b r0l,@dcb rts running: mov.b @rsb,r0l bne _normal rts _normal: cmp.b #b'11000000,r0l beq _2byte cmp.b #b'11010000,r0l beq _2byte mov.b @dcb,r1l bne _3byte inc.b r1l mov.b r1l,@dcb mov.b r0h,@keyno rts _2byte: mov.b r0h,@data mov.b @channel,r1l or.b r1l,r0l cmp.b #h'c0,r0l ; C0 program change ? beq _2_hit rts _2_hit: mov.b @data,r0l and.b #b'00001111,r0l or.b #b'00010000,r0l mov.b r0l,@bank rts _3byte: mov.b #0,r1h mov.b r1h,@dcb mov.b r0h,@data mov.b @channel,r1l or.b r1l,r0l cmp.b #h'90,r0l ; 90 note event ? beq _3_hit cmp.b #h'80,r0l ; 80 note event ? beq _3_off rts _3_hit: cmp.b #0,r0h ; velociry > 0 ? bne _3_cont _3_off: mov.b @keyno,r0l mov.b @st_0,r0h cmp.b r0l,r0h beq _off_0 mov.b @st_1,r0h cmp.b r0l,r0h beq _off_1 mov.b @st_2,r0h cmp.b r0l,r0h beq _off_2 mov.b @st_3,r0h cmp.b r0l,r0h beq _off_3 rts _off_0: mov.b #255,r0l mov.b r0l,@st_0 rts _off_1: mov.b #255,r0l mov.b r0l,@st_1 rts _off_2: mov.b #255,r0l mov.b r0l,@st_2 rts _off_3: mov.b #255,r0l mov.b r0l,@st_3 rts _3_pass: rts _3_cont: mov.b @keyno,r0l cmp.b #24,r0l bmi _3_pass cmp.b #97,r0l bpl _3_pass mov.b @st_0,r0h cmp.b r0l,r0h beq _3_pass mov.b @st_1,r0h cmp.b r0l,r0h beq _3_pass mov.b @st_2,r0h cmp.b r0l,r0h beq _3_pass mov.b @st_3,r0h cmp.b r0l,r0h beq _3_pass mov.b #24,r4l sub.b r4l,r0l shal.b r0l mov.b #0,r0h mov.w #0,e0 mov.w @(f_num_d,er0),r1 mov.b @keyno,r0l mov.b r0l,@pbdr ; write to Port[B] mov.b @st_0,r0h cmp.b #255,r0h beq start_ch_0 mov.b @st_1,r0h cmp.b #255,r0h beq start_ch_1 mov.b @st_2,r0h cmp.b #255,r0h beq start_ch_2 mov.b @st_3,r0h cmp.b #255,r0h beq start_ch_3 rts start_ch_0: mov.w r1,@fn_0 mov.w #0,r1 mov.w r1,@ad_0 mov.b @keyno,r0h mov.b r0h,@st_0 rts start_ch_1: mov.w r1,@fn_1 mov.w #0,r1 mov.w r1,@ad_1 mov.b @keyno,r0h mov.b r0h,@st_1 rts start_ch_2: mov.w r1,@fn_2 mov.w #0,r1 mov.w r1,@ad_2 mov.b @keyno,r0h mov.b r0h,@st_2 rts start_ch_3: mov.w r1,@fn_3 mov.w #0,r1 mov.w r1,@ad_3 mov.b @keyno,r0h mov.b r0h,@st_3 rts f_num_d: .data.w 214,227,240,254,270,286,303,321 .data.w 340,360,381,404,428,454,481,509 .data.w 540,572,606,642,680,720,763,809 .data.w 857,908,962,1019,1080,1144,1212,1284 .data.w 1360,1441,1527,1618,1714,1816,1924,2039 .data.w 2160,2288,2424,2568,2721,2883,3055,3236 .data.w 3429,3633,3849,4078,4320,4577,4849,5137 .data.w 5443,5767,6110,6473,6858,7266,7698,8156 .data.w 8640,9154,9699,10275,10886,11534,12220,12946 .data.w 13716 .end