;演示直线、圆、和1-9。A-Z英文字母
;clear_lcd为清屏子程序，write_dot为写一点子程序，编程时可参考
t2con equ 0c8h
t2mod equ 0c9h
rtl2  equ  0cah
rth2  equ  0cbh
th2   equ  0cch
tl2   equ  0cdh
cs_flash equ #00h;0-7fffh
cs_lcd   equ #8000h
cs_lcdh  equ #80h
port0 equ #3;   0 0  11
port1 equ #2;   0 1  10
port2 equ #1;   1 0  01
port3 equ #0;   1 1  00
speed_buf equ 21h
speed_co  equ 22h
line_1    equ 23h;start display line number
line_2    equ 24h
page_num  equ 25h
;byte 8 is sio recive buffer addreas
;bit 0=0 move  =1 not_move
;bit 1=0 up_move =1 down move
;-----------------------------
org 0
ljmp start
org 3
   reti;ajmp int0
org 0bh
 reti;  ljmp intt0;
org 13h
;ajmp recivedata;reti;ajmp trdata;
org 1bh
reti
org 23h
;-------------------------------------
;1-DISPLAY RAM 2-DISPLAY FLASH 3-DISPLAY EX-RAM
;4-DISPLAY LCD-BUFFER
;5-RECIVE DATA TO LCD-BUFFER
;6-RECIVE DATA AND WRITE TO FLASH
;7-RESET CPU
;8-GOTO FLASH
;9-erase flash secttor
;--------------------------------------
start:mov ie,#0
      mov sp,#60h
      mov tmod ,#21h
      mov th0,#0
      mov tl0,#0
      setb tr0
      mov psw,#0
        mov scon,#01010000b
        mov pcon,#80h
mov t2con,#00110000b;0c8h
mov t2mod,#0
mov rth2,#0ffh
mov rtl2,#0f7h ;baud_rate=115200BPS at 33m
mov t2con,#00110100b;0c8h  setb tr2
;----------set sio work as 1200 baud rate
mov ip,#10h;sio is high
setb tr1
mov th1,#0fdh;57600 at 24m
clr et1
setb tr0
       lcall wait_time
clearit:mov r0,#7fh
       clr a
clear_ram:mov @r0,a
       djnz r0,clear_ram
lcall clear_lcd
mov 8,#30h
clr 0
setb es
setb ea
mov r7,#0
mon:jb 0,mon
     lcall clear_lcd
     MOV 30H,#0FFH
     MOV 31H,#0
     MOV 32H,#0
     MOV 33H,#0
     MOV 34H,#0
     MOV 35H,#1
     MOV 36H,#0DFH
     MOV 37H,#1
     MOV 38H,#0DFH
     LCALL LINE
     MOV 31H,#2
     MOV 32H,#7FH
     MOV 33H,#2
     MOV 34H,#7FH
     MOV 35H,#0
     MOV 36H,#160
     MOV 37H,#0
     MOV 38H,#160
     LCALL LINE
     MOV DPTR,#0
     MOV P2,CS_LCDH
WRITELINE:MOV A,DPH
     SWAP A
     ANL A,#10H
     ORL A,DPH
     MOV R0,port2
     MOVX @R0,A
     MOV A,DPL
     MOVX @R0,A
     mov r0,port1
     MOVX @R0,A
     mov r0,port0
     MOV A,#0FFH
     MOVX @R0,A
     INC DPTR
     MOV A,DPL
     CJNE A,#0E0H,WRITELINE
     MOV A,DPH
     CJNE A,#1,WRITELINE
       lcall wait_time
     mov 40h,#0
     mov 41h,#0
     mov 42h,#0
     mov 43h,#0
     mov 44h,#1
     mov 45h,#0dfh
     mov 46h,#1
     mov 47h,#0dfh
     mov 30h,#0ffh
test_lxxy:lcall test_lxx
     inc 30h
     mov a,45h
     clr c
     subb a,#1
     mov 45h,a
     mov a,44h
     subb a,#0
     mov 44h,a
     mov a,43h
     add a,#1
     mov 43h,a
     mov a,42h
     addc a,#0
     mov 42h,a
     mov a,43h
     cjne a,#0e0h,test_lxxy
     mov a,42h
     cjne a,#1,test_lxxy
       lcall wait_time
       lcall wait_time
mov 40h,#1
     mov 41h,#255
     mov 42h,#0
     mov 43h,#0
     mov 44h,#1
     mov 45h,#0
     mov 46h,#0
     mov 47h,#255
     mov 30h,#0ffh
test_lxxz:lcall test_lxx
inc 30h
 inc 43h
 inc 45h
 mov a,45h
 jnz test_lxxz
       lcall wait_time
lcall clear_lcd
mov 30h,#0ffh
mov 41h,#0
test_linexc:mov 40h,#0
mov 42h,#0
mov 43h,#0
mov 44h,#0
mov 45h,#0
mov 46h,#0
mov 47h,#250
test_line:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_line:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_line
lcall line
inc 30h
mov a,45h
add a,#4
mov 45h,a
mov a,44h
addc a,#0
mov 44h,a
cjne a,#2,test_line
mov a,45h
cjne a,#7fh,test_linexx
test_linexx:jc test_line
mov a,41h
cjne a,#250,countest_line
sjmp test_line_end
countest_line:mov 41h,#250
    sjmp test_linexc
test_line_end:
   mov 41h,#160
test_lineyc:mov 40h,#0
            mov 42h,#0
            mov 43h,#239
 mov 44h,#0
 mov 45h,#0
 mov 46h,#0
 mov 47h,#0
test_linex:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_linex:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_linex
lcall line
inc 30h
mov a,45h
add a,#4
mov 45h,a
mov a,44h
addc a,#0
mov 44h,a
cjne a,#1,test_linex
mov a,45h
cjne a,#3fh,test_linexy
test_linexy:jc test_linex
       lcall wait_time
lcall clear_lcd
          mov 30h,#0ffh
          mov 31h,#240
          mov 33h,#0
          mov 34h,#240
          mov 35h,#0
          mov 36h,#240
test_circle:lcall circle ;30h color 31h radius  (33-34h,35-36h) centre
inc 30h
mov a,31h
clr c
subb a,#1
mov 31h,a
jnc test_circle
lcall clear_lcd
          mov 30h,#0ffh
          mov 31h,#80
          mov 33h,#0
          mov 34h,#80
          mov 35h,#0
          mov 36h,#80
test_circlxe:lcall circle ;30h color 31h radius  (33-34h,35-36h) centre
inc 30h
mov a,31h
clr c
subb a,#4
mov 31h,a
jnc test_circlxe
          mov 30h,#0ffh
          mov 31h,#80
          mov 33h,#0
          mov 34h,#240
          mov 35h,#0
          mov 36h,#80
test_circlye:lcall circle ;30h color 31h radius  (33-34h,35-36h) centre
inc 30h
mov a,31h
clr c
subb a,#4
mov 31h,a
jnc test_circlye
lcall wait_time
lcall clear_lcd
linexx:mov 30h,#0ffh
        mov 40h,#1
            mov 41h,#40h
            mov 42h,#0
            mov 43h,#239
 mov 44h,#0
 mov 45h,#0
 mov 46h,#0
 mov 47h,#0
test_lineccx:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_lineccx:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_lineccx
lcall line
inc 30h
mov a,45h
add a,#4
mov 45h,a
mov a,44h
addc a,#0
mov 44h,a
mov a,45h
clr c
subb a,#80h
mov a,44h
subb a,#2
jc test_lineccx
linexy:mov 30h,#0ffh
       mov 40h,#1
            mov 41h,#40h
            mov 42h,#0
            mov 43h,#239
 mov 44h,#0
 mov 45h,#0
 mov 46h,#0
 mov 47h,#0
test_lineccy:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_lineccy:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_lineccy
lcall line
inc 30h
mov a,47h
add a,#4
mov 47h,a
mov a,46h
addc a,#0
mov 46h,a
mov a,47h
clr c
subb a,#0dfh
mov a,46h
subb a,#1
jc test_lineccy
linexz:mov 30h,#0ffh
       mov 40h,#1
            mov 41h,#40h
            mov 42h,#0
            mov 43h,#239
 mov 44h,#2
 mov 45h,#7fh
 mov 46h,#0
 mov 47h,#0
test_lineccz:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_lineccz:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_lineccz
lcall line
inc 30h
mov a,47h
add a,#4
mov 47h,a
mov a,46h
addc a,#0
mov 46h,a
mov a,47h
clr c
subb a,#0dfh
mov a,46h
subb a,#1
jc test_lineccz
linexw:mov 30h,#0ffh
       mov 40h,#1
            mov 41h,#40h
            mov 42h,#0
            mov 43h,#239
 mov 44h,#0
 mov 45h,#0
 mov 46h,#1
 mov 47h,#0dfh
test_lineccw:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_lineccw:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_lineccw
lcall line
inc 30h
mov a,45h
add a,#4
mov 45h,a
mov a,44h
addc a,#0
mov 44h,a
mov a,45h
clr c
subb a,#80h
mov a,44h
subb a,#2
jc test_lineccw
;write ascii
monx: mov r0,port1
 mov a,#8
 movx @r0,a
 movx a,@r0 ;x=s y=inc
 mov r5,#0
mov r3,#15 ;240/16=15
hzkup:mov r4,#80 ;80/linehzk8x16
hzkline: mov r0,port2
 clr a
 movx @r0,a
 mov a,#15
 clr c
 subb a,r3
 swap a
 anl a,#0f0h
 movx @r0,a
 mov a,#80
 clr c
 subb a,r4
 mov r0,port1
 movx @r0,a
mov r2,#16 ;16line
 mov dptr,#hzk8x16
 mov a,r3
 add a,r4
 swap a
 mov 31h,a
 mov 30h,a
 anl 30h,#0fh
 anl 31h,#0f0h
 mov a,31h
 add a,dpl
 mov dpl,a
 mov a,30h
 addc a,dph
 mov dph,a
 mov r0,#30h
readhzk:clr a
        movc a,@a+dptr
        mov @r0,a
        inc r0
        inc dptr
        djnz r2,readhzk
mov r2,#16 ;16line
 mov r1,#30h
 mov r0,port0
wrhzk: mov a,@r1
       movx @r0,a
       inc r1
       djnz r2,wrhzk
       djnz r4,hzkline
       djnz r3,hzkup
mov r3,#15 ;240/16=15
hzkdow:mov r4,#80 ;80/linehzk8x16
hzkline1: mov r0,port2
 mov a,#1
 movx @r0,a
 mov a,#15
 clr c
 subb a,r3
 swap a
 anl a,#0f0h
 movx @r0,a
 mov a,#80
 clr c
 subb a,r4
 mov r0,port1
 movx @r0,a
mov r2,#16 ;16line
 mov dptr,#hzk8x16
 mov a,r4
 add a,r3
 swap a
 mov 31h,a
 mov 30h,a
 anl 30h,#0fh
 anl 31h,#0f0h
 mov a,31h
 add a,dpl
 mov dpl,a
 mov a,30h
 addc a,dph
 mov dph,a
 mov r0,#30h
readhzk1:clr a
        movc a,@a+dptr
        mov @r0,a
        inc r0
        inc dptr
        djnz r2,readhzk1
mov r2,#16 ;16line
 mov r1,#30h
 mov r0,port0
wrhzk1: mov a,@r1
       movx @r0,a
       inc r1
       djnz r2,wrhzk1
       djnz r4,hzkline1
       djnz r3,hzkdow
       lcall wait_time
       lcall wait_time
       lcall wait_time
       lcall wait_time
       ljmp mon
transmit_line_rom:clr a
                  movc a,@a+dptr
                  inc dptr
                  mov sbuf,a
                  clr ti
                  jnb ti,$
                  cjne a,#0ah,tr_l_rom1
ret
tr_l_rom1:jb ti,transmit_line_rom
           sjmp tr_l_rom1
CHHexTOAS:MOV B,A ;CHANGE HEX OF A TO TWO BYTE ASCII IN A(h) and B(l)
  ANL A,#0FH
   ADD A,#30H
CJNE A,#3AH,CHHTAS1
CHHTAS1:JC CHHTAS2
   ADD A,#7
CHHTAS2:XCH A,B
   swap a
    ANL A,#0FH
 ADD A,#30H
CJNE A,#3AH,CHHTAS3
CHHTAS3:JC CHHTAS4
    ADD A,#7
CHHTAS4:RET
CHASTOHex:CJNE A,#3AH,CHASTH1  ;CHANGE ASCII IN A(h) and B  TO HEX IN A
CHASTH1:JC CHASTH2
      CLR C
      SUBB A,#7
CHASTH2:ANL A,#0FH
XCH A,B
CJNE A,#3AH,CHASTH3
CHASTH3:JC CHASTH4
    CLR C
    SUBB A,#7
CHASTH4:ANL A,#0FH
SWAP A
ORL A,B
swap a
RET
transmit_20h:mov sbuf,#20h
          clr ti
          jnb ti,$
          ret
transmit_changeline:mov sbuf,#0dh
          clr ti
          jnb ti,$
          mov sbuf,#0ah
          clr ti
          jnb ti,$
ret
clear_lcd:mov p2,cs_lcdh
          mov r5,#2
clear_lcd3:mov a,r5
           dec a
           anl a,#3
           mov b,a
           swap a
           orl a,b
           orl a,#44h
           mov r0,port1;#1
           movx @r0,a
           movx a,@r0
           mov r2,#240
clear_lcd1:mov r0,port2;#2
           clr a
           movx @r0,a
           mov a,r2
           dec a
           movx @r0,a
           clr a
           mov r0,port1;dec r0
           movx @r0,a
           movx @r0,a
           mov r0,port0;dec r0
           mov r3,#8
clear_lcdx0:mov r4,#160
clear_lcd0:movx @r0,a
           djnz r4,clear_lcd0
           djnz r3,clear_lcdx0
           djnz r2,clear_lcd1
clear_lcd2:mov r0,port2;#2
           mov a,#1
           movx @r0,a
           mov a,r2
           dec a
           movx @r0,a
           clr a
           mov r0,port1;dec r0
           movx @r0,a
           movx @r0,a
           mov r0,port0;dec r0
           mov r3,#8
clear_lcdx1:mov r4,#160
clear_lcdx2:movx @r0,a
           djnz r4,clear_lcdx2
           djnz r3,clear_lcdx1
           djnz r2,clear_lcd2
           djnz r5,clear_lcd3
           ret
write_loady:mov a,r5
            clr c
            subb a,#240
            mov a,r2
            subb a,#0
            jc noadd16
            mov a,r5
            add a,#16
            mov a,r2
            addc a,#0
         mov r0,port2;#2
         movx @r0,a
         mov a,r5
         add a,#16
         movx @r0,a
         ret
noadd16: mov r0,port2;#2
         mov a,r2
         movx @r0,a
         mov a,r5
         movx @r0,a
         ret
read5byte:mov r3,#5
          mov r1,#80h
lop_rd6byte:mov p1,30h
         mov dph,31h
         mov dpl,32h
         movx a,@dptr
         mov  @r1,a
         inc r1
        inc dptr
        mov a,dph
        cjne a,#80h,xdnoinc30h
        inc 30h
        mov dptr,#0h
xdnoinc30h:mov 32h,dpl
        mov 31h,dph
djnz r3,lop_rd6byte
        ret
write_8dot:mov r1,#84h
           mov b,@r1
           mov r1,#80h ;80 81 82 83 84
           mov a,@r1
           swap a
           mov c,b.7
           mov acc.4,c
           movx @r0,a ;x80h
           mov a,@r1
           mov c,b.6
           mov acc.4,c
           movx @r0,a ;x80h
           inc r1
           mov a,@r1
           swap a
           mov c,b.5
           mov acc.4,c
           movx @r0,a ;x80h
           mov a,@r1
           mov c,b.4
           mov acc.4,c
           movx @r0,a ;x80h
           inc r1
           mov a,@r1
           swap a
           mov c,b.3
           mov acc.4,c
           movx @r0,a ;x80h
           mov a,@r1
           mov c,b.2
           mov acc.4,c
           movx @r0,a ;x80h
           inc r1
           mov a,@r1
           swap a
           mov c,b.1
           mov acc.4,c
           movx @r0,a ;x80h
           mov a,@r1
           mov c,b.0
           mov acc.4,c
           movx @r0,a ;x80h
          ret
wait_time:mov r0,#5h
mov dptr,#0
wait1:inc dptr
jb 0,wait_end
mov a,dph
orl a,dpl
jnz wait1
djnz r0,wait1
wait_end:ret
drawe:
ret
;write one byte to amd 19f016  wadl wadh wads wd is address  anl data
write_f160:mov p1,30h
           mov r2,#5
write_f016x0:mov dptr,#00aaah
           mov a,#0aah
           movx @dptr,a
           mov dptr,#00555h
           mov a,#55h
           movx @dptr,a
           mov dptr,#00aaah
           mov a,#0a0h
           movx @dptr,a
           mov dph,31h
           mov dpl,32h
           mov a,@r0
           movx @dptr,a
           lcall test_f160
           jc wr_f_erx
           ret
wr_f_erx: mov a,#0f0h  ;reset flash
           movx @dptr,a
           djnz r2,write_f016x0
           setb c
           ret
test_f160: movx a,@dptr
           mov b,a
           movx a,@dptr
           xrl a,b
           jb acc.6,test_f401
flash_ok:  clr c
           ret
test_f401:jnb b.5,test_f160
           movx a,@dptr
           mov b,a
           movx a,@dptr
           xrl a,b
           jnb acc.6,flash_ok
           mov a,#0f0h  ;reset flash
           movx @dptr,a
           setb c
           ret
;f160t s0-s30 64k s31 32k s32 8k s33 8k s34 16k
;30h is sector 
erase_sect_flash:mov a,30h
     anl a,#1fh
     jnz nosector0
     lcall read_id
     mov a,b
     cjne a,#49h,nosect31
     sjmp erase_00
nosector0:cjne a,#31,nosect31
     lcall read_id
     mov a,b
     cjne a,#0c4h,nosect31
sjmp erase_31
nosect31:mov a,30h
     rl a
     anl a,#3eh
     orl a,#0c0h
     mov p1,a
lcall wr_er_h ;write erase hand
mov dptr,#0000h
mov a,#30h
movx @dptr,a
lcall test_f160
jc erase_er
erase_ok:mov a,r3
  lcall transmit_acc
  mov dptr,#er_f_ok
  lcall transmit_line_rom
ret
erase_er:  mov dptr,#er_f_er
  lcall transmit_line_rom
ret
;erase s31 32k p1=7eh dptr=0
;erase s32 8k  p1=7fh dptr=0
;erase s33 8k  p1=7fh dptr=2000h
;erase s34 16k p1=7fh dptr=4000h
erase_31:lcall wr_er_h
         mov p1,#0feh
         mov dptr,#0000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc erase_er
         lcall wr_er_h
         mov p1,#0ffh
         mov dptr,#0000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc erase_er
         mov p1,#0ffh
         mov dptr,#2000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc erase_er
         mov p1,#0ffh
         mov dptr,#4000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc erase_er
         sjmp  erase_ok
erase_00:lcall wr_er_h
         mov p1,#0c0h
         mov dptr,#0000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc erase_er
         lcall wr_er_h
         mov p1,#0c1h
         mov dptr,#0000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc goerase_er
         mov p1,#0c1h
         mov dptr,#2000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc goerase_er
         mov p1,#0c1h
         mov dptr,#4000h
         mov a,#30h
         movx @dptr,a
         lcall test_f160
         jc goerase_er
         ljmp  erase_ok
goerase_er:ljmp erase_er
wr_er_h:mov dptr,#0aaah
mov a,#0f0h
movx @dptr,a
mov a,#0aah
movx @dptr,a
mov dptr,#0555h
mov a,#55h
movx @dptr,a
mov dptr,#0aaah
mov a,#080h
movx @dptr,a
mov a,#0aah
movx @dptr,a
mov dptr,#00555h
mov a,#055h
movx @dptr,a
ret
read_id:mov dptr,#0aaah
        mov a,#0aah
        movx @dptr,a
        mov dptr,#0555h
        mov a,#055h
        movx @dptr,a
        mov dptr,#0aaah
        mov a,#090h
        movx @dptr,a
        mov dptr,#4
        movx a,@dptr
        mov b,a  ;a=id c4 top 49 bot
        mov dptr,#s_f_bot
        cjne a,#049h,is_bot
        mov dptr,#s_f_top
is_bot: lcall transmit_line_rom
        ret
s_f_top:db 'Flash is LV160T',0dh,0ah
s_f_bot:db 'Flash is LV160B',0dh,0ah
er_f_ok:db 'Erase flash ok...',0dh,0ah
er_f_er:db 'Erase flash error...',0dh,0ah
wait_rec:clr tr0
         mov tl0,#0
         mov th0,#0
         clr tf0
         setb tr0
wait_rec1:jb ri,have_rec
         jnb tf0,wait_rec1
         setb c
         ret
have_rec:mov a,sbuf
         clr ri
         clr c
         ret
transmit_acc:push b
             lcall chhextoas
             jnb ti,$
             mov sbuf,a
             clr ti
             jnb ti,$
             mov sbuf,b
             clr ti
             jnb ti,$
             mov sbuf,#20h
             clr ti
             pop b
             ret
circle:mov a,31h;30h color 31h radius  (33-34h,35-36h) centre
       mov 32h,31h  ;used 30-3fh a b r0 p2 256*sin(45)=0b5h
       mov 3eh,#0
circle_1:mov a,3eh
         cjne a,32h,circle_end
         sjmp circle_2
circle_end:jc  circle_2
         ret
circle_2:lcall circle_point
         mov a,3eh
         mov 3eh,32h
         mov 32h,a
         lcall circle_point
         mov a,3eh
         mov 3eh,32h
         mov 32h,a
         mov b,31h
         mov a,31h
         mul ab
         mov 37h,b
         mov 38h,a ;r*r
         inc 3eh
circle_4:mov a,3eh
         mov b,a
         mul ab
         mov 39h,b
         mov 3ah,a
         mov a,38h
         clr c
         subb a,3ah
         mov 3ah,a
         mov a,37h
         subb a,39h
         mov 39h,a;39-3a=r*r-y*y
         mov a,32h
         mov b,a
         mul ab
         mov 3ch,a
         mov 3bh,b;
         mov a,3ch
         clr c
         subb a,3ah
         mov 38h,a
         mov a,3bh
         subb a,39h
         mov 37h,a  ;37-38=x*x-(r*r-y*y)
         orl a,38h
         jz circle_1
         jc circle_1
          mov a,32h
          dec a
          mov b,a
          mul ab
          mov 3ch,a
          clr c
          mov a,3ah
          subb a,3ch
          mov 3ch,a
          mov a,39h
          subb a,b
          mov 3bh,a       ;3b-3c=[r*r-y*y]-(x-1)*(x-1)
          orl a,3ch
          jz circle_minx
          jnc circle_3_min
circle_minx:dec 32h
          sjmp circle_1
circle_3_min:mov a,3ch
          clr c
          subb a,38h
          mov a,3bh
          subb a,37h
          jc circle_minx
circle_3: ljmp circle_1
test_lxx:mov r0,#40h
          mov r1,#31h
          mov r2,#10
set_op_lxx:mov a,@r0
          mov @r1,a
          inc r0
          inc r1
          djnz r2,set_op_lxx
lcall line
ret
;-------------------------------
write_dot: push b
           mov p2,cs_lcdh;(x,y) (33-34h,35-36h)
           MOV r0,port2
           mov a,36h
           clr c
           subb a,#240
           mov a,35h
           subb a,#0
           jnc write_dot0
           mov a,35h
           movx @r0,a
           mov a,36h
           sjmp write_dot0x
write_dot0:mov a,36h
           add a,#16
           mov b,a
           mov a,35h
           addc a,#0
           movx @r0,a
           mov a,b
write_dot0x:movx @r0,a
           mov b,33h
           mov a,34h
           mov c,b.0
           rrc a   ;8-7
           mov c,b.1
           rrc a   ;8-6
           rrc a
           mov r0,port3
           movx @r0,a  ;write x/8
           mov r0,port0
           movx a,@r0
           mov b,a
           mov a,34h
           anl a,#7
           cjne a,#0,nwrbit7
           orl b,#80h
           sjmp write_dot1
nwrbit7:   cjne a,#1,nwrbit6
           orl b,#40h
           sjmp write_dot1
nwrbit6:   cjne a,#2,nwrbit5
           orl b,#20h
           sjmp write_dot1
nwrbit5:   cjne a,#3,nwrbit4
           orl b,#10h
           sjmp write_dot1
nwrbit4:   cjne a,#4,nwrbit3
           orl b,#8
           sjmp write_dot1
nwrbit3:   cjne a,#5,nwrbit2
           orl b,#4
           sjmp write_dot1
nwrbit2:   cjne a,#6,nwrbit1
           orl b,#2
           sjmp write_dot1
nwrbit1:   orl b,#1
write_dot1:mov r0,b
           mov b,33h
           mov a,34h
           mov c,b.0
           rrc a
           mov c,b.1
           rrc a
           rrc a
           mov b,r0
           mov r0,port1
           movx @r0,a  ;write x/8
           mov r0,port0
           mov a,b
           movx @r0,a
           pop b
           ret
;-------------------------------
circle_point:mov b,30h
       mov a,34h ;x
       add a,32h
       mov 34h,a
       mov a,33h
       addc a,#0
       mov 33h,a  ;+x
       mov a,36h
       add a,3eh
       mov 36h,a
       mov a,35h
       addc a,#0 ;+y
       mov 35h,a ;y (x,y)
       lcall write_dot;(x,y) (33-34h,35-36h)
            mov a,34h
            clr c
            subb a,32h
            mov 34h,a
            mov a,33h
            subb a,#0
            mov 33h,a
            mov a,34h
            clr c
            subb a,32h
            mov 34h,a
            mov a,33h
            subb a,#0
            mov 33h,a  ;(-x,y)
       lcall write_dot;(x,y) (33-34h,35-36h)
            mov a,36h
            clr c
            subb a,3eh
            mov 36h,a
            mov a,35h
            subb a,#0
            mov 35h,a
            mov a,36h
            clr c
            subb a,3eh
            mov 36h,a
            mov a,35h
            subb a,#0
            mov 35h,a ;(-x,-y)
       lcall write_dot;(x,y) (33-34h,35-36h)
           mov a,34h ;x
       add a,32h
       mov 34h,a
       mov a,33h
       addc a,#0
       mov 33h,a
       mov a,34h ;x
       add a,32h
       mov 34h,a
       mov a,33h
       addc a,#0
       mov 33h,a       ;(x,-y)
       lcall write_dot;(x,y) (33-34h,35-36h)
           mov a,34h
            clr c
            subb a,32h
            mov 34h,a
            mov a,33h
            subb a,#0
            mov 33h,a
            mov a,36h
            add a,3eh
            mov 36h,a
            mov a,35h
            addc a,#0
            mov 35h,a
            ret
;-------------------------------------
sub_r0_r1:mov a,@r0
          clr c
          subb a,@r1
          mov b,a
          dec r0
          dec r1
          mov a,@r0
          subb a,@r1
ret
comp_r0_r1:mov a,@r0
          clr c
          subb a,@r1
          dec r0
          dec r1
          mov a,@r0
          subb a,@r1
ret
;-------------------------------
gotoline_end:ljmp line_end
line_x_equ_y:mov a,3fh;y>=x x=ay+b  ;form(31h32h,33h34h)to (35h36h-37h38h)
             jnb acc.7,noch_line_xy
             mov r0,#31h
             mov r1,#35h
             lcall exch_r0_r1
             mov a,3fh
             mov c,acc.6
             cpl c
             mov acc.6,c
             mov 3fh,a
noch_line_xy: mov a,3bh
             orl a,3ch
             jnz xyno_point
             ljmp line_is_point
xyno_point:mov 31h,33h  ;y1 31-32h x2 33-34h y2 35-36h
           mov 32h,34h
           mov 33h,35h   ;(31-32,33-34) (35-36,37-38)
           mov 34h,36h
           mov 35h,37h
           mov 36h,38h
         mov a,3fh
         anl a,#0c0h
         mov b,a
;for y=y1(37-38h) to y2 (33-34h)  (31h32h,33h34h)to (35h36h-37h38h)
line_xy_dr:mov r0,#32h
          mov r1,#36h
          lcall comp_r0_r1
          jc gotoline_end
          lcall write_dot;write dot (x,y) (33-34h,35-36h)
          mov a,36h
          add a,#1
          mov 36h,a
          mov a,35h
          addc a,#0
          mov 35h,a
          jnb b.6,xy_drx1
          mov a,34h
          clr c
          subb a,#1
          mov 34h,a
          mov a,33h
          subb a,#0
          mov 33h,a
          sjmp line_xy_dr
xy_drx1:  mov a,34h
          add a,#1
          mov 34h,a
          mov a,33h
          addc a,#0
          mov 33h,a
          sjmp line_xy_dr
;-------------------------------------
line:mov 3fh,#0
     mov r0,#32h      ;used r0,30h-3fh,p2
     mov r1,#36h      ;30h color 0-63  64-127 is broken line
     lcall sub_r0_r1  ;form(31h32h,33h34h)to (35h36h-37h38h)
     jnc noex_line_x   ;form(x1,y1)-(x2,y2)
     orl 3fh,#40h
     mov r0,#36h
     mov r1,#32h
     lcall sub_r0_r1
noex_line_x:mov 39h,a
            mov 3ah,b
      mov r0,#34h
      mov r1,#38h
      lcall sub_r0_r1
      jnc no_abs_y
      orl 3fh,#80h
      mov r0,#38h
      mov r1,#34h
      lcall sub_r0_r1
no_abs_y:mov 3ch,b
         mov 3bh,a
         mov r0,#3ah
         mov r1,#3ch
         lcall sub_r0_r1
         jnc line_x_gt_y
line_x_lt_y:mov a,3fh;y>=x x=ay+b  ;form(31h32h,33h34h)to (35h36h-37h38h)
             jnb acc.7,noch_line_y
             mov r0,#31h
             mov r1,#35h
             lcall exch_r0_r1
             mov a,3fh
             mov c,acc.6
             cpl c
             mov acc.6,c
             mov 3fh,a
noch_line_y: mov a,3bh
             orl a,3ch
             jnz no_point
             ljmp line_is_point
no_point:mov 3eh,#0 ;39 3a 3b 3c 3d 3e
         mov 3dh,3ch
         mov 3ch,3bh
         mov 3bh,#0
         lcall div_39_3c;back value is 3eh
         mov 31h,33h  ;y1 31-32h x2 33-34h y2 35-36h
         mov 32h,34h
         mov 33h,35h
         mov 34h,36h
         mov 35h,37h
         mov 36h,38h
         mov 37h,#0
         mov a,3fh
         anl a,#0c0h
         mov b,a
;for y=y1(37-38h) to y2 (33-34h)  (31h32h,33h34h)to (35h36h-37h38h)
line_y_dr:mov r0,#32h
          mov r1,#36h
          lcall comp_r0_r1
          jc goto_y_line_end
          lcall ca_x_form_y
          lcall write_dot;write dot (x,y) (33-34h,35-36h)
          mov a,36h
          add a,#1
          mov 36h,a
          mov a,35h
          addc a,#0
          mov 35h,a
          sjmp line_y_dr
goto_y_line_end:ljmp line_end
line_x_gt_y:orl a,b
         jnz  line_x_ne_y
         ljmp line_x_equ_y
line_x_ne_y:mov a,3fh   ;x>y  y=ax+b form(31h32h,33h34h)to (35h36h-37h38h)
             jnb acc.6,noch_line_x
             mov r0,#31h
             mov r1,#35h
             lcall exch_r0_r1
             mov a,3fh
             mov c,acc.7
             cpl c
             mov acc.7,c
             mov 3fh,a
noch_line_x: mov a,39h
             orl a,3ah
             jnz no_point_x
             ljmp line_is_point
no_point_x:mov 3eh,#0 ;39 3a 3b 3c 3d 3e
           mov 3dh,3ah
           mov 3ah,3ch
           mov 3ch,39h
           mov 39h,3bh
           mov 3bh,#0
         lcall div_39_3c;back value is 3eh
         mov a,3fh
         anl a,#0c0h
         mov b,a
;for x=x1(35-36h) to x2 (31-32h)  (31h32h,33h34h)to (35h36h-37h38h)
          mov 33h,35h
          mov 34h,36h
          mov 35h,37h
          mov 36h,38h
          mov 37h,#0
line_x_dr:mov r0,#32h
          mov r1,#34h
          lcall comp_r0_r1
          jc line_end
          lcall ca_y_form_x
          lcall write_dot;write dot (x,y) (33-34h,35-36h)
          mov a,34h
          add a,#1
          mov 34h,a
          mov a,33h
          addc a,#0
          mov 33h,a
          sjmp line_x_dr
line_end:ret
line_is_point:mov 33h,35h
              mov 34h,36h
              mov 35h,37h
              mov 36h,38h
              lcall write_dot
ret
;for x=x1(35-36h) to x2 (31-32h)  (31h32h,33h34h)to (35h36h-37h38h)
ca_y_form_x:jb b.7,ca_y_form_x1
            mov a,37h
            add a,3eh
            mov 37h,a
            mov a,36h
            addc a,#0
            mov 36h,a
            mov a,35h
            addc a,#0
            mov 35h,a
            ret
ca_y_form_x1:mov a,37h
             clr c
             subb a,3eh
             mov 37h,a
             mov a,36h
             subb a,#0
             mov 36h,a
             mov a,35h
             subb a,#0
             mov 35h,a
             ret
;y1 31-32h x2 33-34h y2 35-36h
ca_x_form_y:jb b.6,ca_x_form_y1
            mov a,37h
            add a,3eh
            mov 37h,a
            mov a,34h
            addc a,#0
            mov 34h,a
            mov a,33h
            addc a,#0
            mov 33h,a
            ret
ca_x_form_y1:mov a,37h
             clr c
             subb a,3eh
             mov 37h,a
             mov a,34h
             subb a,#0
             mov 34h,a
             mov a,33h
             subb a,#0
             mov 33h,a
             ret
exch_r0_r1:mov b,#4
lb_exch_r0_r1:mov a,@r0
           xch a,@r1
           mov @r0,a
           inc r0
           inc r1
           djnz b,lb_exch_r0_r1
ret
div_39_3c:mov 3eh,#0
        mov 3bh,#0
        mov b,#9
div32_1:mov a,3ah
clr c
subb a,3dh
mov 3ah,a
mov a,39h
subb a,3ch
mov 39h,a
jnc div32_2
mov a,3ah
clr c
add a,3dh
mov 3ah,a
mov a,3ch
addc a,39h
mov 39h,a
clr c
sjmp div32_3
div32_2:setb c
div32_3:mov a,3eh
rlc a
mov 3eh,a
clr c
mov a,3bh
rlc a
mov 3bh,a
mov a,3ah
rlc a
mov 3ah,a
mov a,39h
rlc a
mov 39h,a
djnz b,div32_1
ret
hzk8x16:db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H
db 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H
db 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H
db 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H
db 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H
db 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H
db 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
db 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H
db 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH
db 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H
db 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H
db 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H
db 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H
db 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H
db 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H
db 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H
db 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H
db 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H
db 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H
db 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H
db 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H
db 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H
db 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H
db 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H
db 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H
db 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H
db 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H
db 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H
db 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,030H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H
db 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H
db 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H
db 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H
db 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H
db 000H,000H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H
db 000H,000H,0FCH,066H,066H,066H,07CH,066H,066H,066H,066H,0FCH,000H,000H,000H,000H
db 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C0H,0C2H,066H,03CH,000H,000H,000H,000H
db 000H,000H,0F8H,06CH,066H,066H,066H,066H,066H,066H,06CH,0F8H,000H,000H,000H,000H
db 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,062H,066H,0FEH,000H,000H,000H,000H
db 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,060H,060H,0F0H,000H,000H,000H,000H
db 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0DEH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H
db 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H
db 000H,000H,03CH,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H
db 000H,000H,01EH,00CH,00CH,00CH,00CH,00CH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H
db 000H,000H,0E6H,066H,06CH,06CH,078H,078H,06CH,066H,066H,0E6H,000H,000H,000H,000H
db 000H,000H,0F0H,060H,060H,060H,060H,060H,060H,062H,066H,0FEH,000H,000H,000H,000H
db 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H
db 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H
db 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H
db 000H,000H,0FCH,066H,066H,066H,07CH,060H,060H,060H,060H,0F0H,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H
db 000H,000H,0FCH,066H,066H,066H,07CH,06CH,066H,066H,066H,0E6H,000H,000H,000H,000H
db 000H,000H,07CH,0C6H,0C6H,060H,038H,00CH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,07EH,07EH,05AH,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H
db 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,010H,000H,000H,000H,000H
db 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H
db 000H,000H,0C6H,0C6H,06CH,06CH,038H,038H,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H
db 000H,000H,066H,066H,066H,066H,03CH,018H,018H,018H,018H,03CH,000H,000H,000H,000H
db 000H,000H,0FEH,0C6H,086H,00CH,018H,030H,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H
db 000H,000H,03CH,030H,030H,030H,030H,030H,030H,030H,030H,03CH,000H,000H,000H,000H
db 000H,000H,000H,080H,0C0H,0E0H,070H,038H,01CH,00EH,006H,002H,000H,000H,000H,000H
db 000H,000H,03CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,03CH,000H,000H,000H,000H
db 010H,038H,06CH,0C6H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H
db 030H,030H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H
db 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H
db 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H
db 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H
db 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H
db 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H
db 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H
db 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H
db 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H
db 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H
db 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H
db 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H
db 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H
db 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H
db 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
