📄 splc501sys.asm
字号:
call display_point_erase
retf
//----------------------------------------------------------------------------
display_point_dotted_cover:
r1=[sign]
r1&=0x0010
jz display_dotted_cover_empty_point
call display_point_solid
r1=[sign]
r1&=0xffef
[sign]=r1
retf
display_dotted_cover_empty_point:
call display_point_erase
r1=[sign]
r1|=0x0010
[sign]=r1
retf
//----------------------------------------------------------------------------
display_point_solid_xor:
r2=[_page_place_bit]
r1=TAB_pixel;
r1=r1+r2;
r1=[r1]
push r1 to [sp]
call _Read_Lcd_data
r3=r3 lsr 0x04
r3=r3 lsr 0x04
pop r1 from [sp]
r1^=r3
[_point_value]=r1
retf
//----------------------------------------------------------------------------
display_point_dotted_xor:
r1=[sign]
r1&=0x0010
jz display_xor_empty_point
call display_point_solid_xor
r1=[sign]
r1&=0xffef
[sign]=r1
retf
display_xor_empty_point:
r2=[_page_place_bit]
r1=TAB_pixel;
r1=r1+r2;
r1=[r1]
push r1 to [sp]
call _Read_Lcd_data
r3=r3 lsr 0x04
r3=r3 lsr 0x04
pop r1 from [sp]
r3^=r1
r3^=r1
[_point_value]=r3
r1=[sign]
r1|=0x0010
[sign]=r1
retf
//---------------------------------------------------------------------------------
////Filename : get_a_point_address
//Function Description :work out place of appoint point
//Input : [_x][_y]
//Output : [_page][_page_place][_page_place_bit]
//Destory : R1,R2,R3,R4
//---------------------------------------------------------------------------------
.public get_a_point_address
get_a_point_address: .proc
//get a point page,page_place_bit,page_place
r1=0x00
[_page]=r1
[_page_place]=r1
[_page_place_bit]=r1
r1=[_x]
[_page_place]=r1
r1=[_y]
[_y]=r1
cmp r1,_public_area_y_l
jae lab_get_address_1
r1=0xff
[_public_area_sign]=r1
retf
lab_get_address_1:
cmp r1,_public_area_y_h
jb lab_get_address_2
r1=0xff
[_public_area_sign]=r1
retf
lab_get_address_2:
cmp r1,_public_area_x_l
jae lab_get_address_3
r1=0xff
[_public_area_sign]=r1
retf
lab_get_address_3:
cmp r1,_public_area_x_h
jb lab_get_page
r1=0xff
[_public_area_sign]=r1
retf
lab_get_page:
r1=0x00
[_public_area_sign]=r1
r1=[_y]
r1+=0x01
lab_get_page1:
cmp r1, 0x08
jbe lab_get_page_place_bit
r1-=0x08
r2=r1
r1=[_page]
r1+=0x01
[_page]=r1
r1=r2
jmp lab_get_page1
lab_get_page_place_bit:
[_page_place_bit]=r1
lab_get_address_end:
retf
.endp
//////////////////////////////////////////////////////////////////////////////
//Filename : _FG_Rectangle
//Function Description :display a rectangle on lcd
//Input : [_rectangle_jumping_off_y][_rectangle_jumping_off_x]
// [_rectangle_end_point_x][_rectangle_end_point_y]
//the jump off point must is left downside point of rectangle.the end point must is
//right upside of rectangle
//Mode:
// DG_RECT_COVER (default)
// DG_RECT_ERASE
// DG_RECT_HOLLOW
// DG_RECT_DOTTED
// DG_RECT_HOLLOW_ERASE
// DG_RECT_DOTTED_COVER
// DG_RECT_SOLID_XOR
// DG_RECT_DOTTED_XOR
//usage: FG_Rectangle(short _rectangle_jumping_off_x,short _rectangle_jumping_off_y
// ,short _rectangle_end_point_x,short _rectangle_end_point_y)
//Destory : R1,R2,R3,R4
//////////////////////////////////////////////////////////////////////////////
.public _FG_Rectangle
_FG_Rectangle:
PUSH BP,BP TO [SP]
r1=sp
r2=bp
[bp_temp]=r2
r2-=r1
L_Rectangle_Parameters_two:
cmp r2,0x06
jne L_Rectangle_Parameters_four
call F_Rectangle_Parameters_two
jmp L_Rectangle
L_Rectangle_Parameters_four:
cmp r2,0x08
jne L_Rectangle
call F_Rectangle_Parameters_four
L_Rectangle:
call rectagle //_rectagle1
pop bp from [sp]
retf
//----------------------------------------------------------------------------
F_Rectangle_Parameters_two:
r1=[R_GraphicMode_temp]
r1&=dotted_mode_bit_clear
[R_GraphicMode_temp]=r1
r1=[R_GraphicMode]
r1&=dotted_mode_bit
r1|=[R_GraphicMode_temp]
[R_GraphicMode_temp]=r1
r1=[_x0]
[_rectangle_jumping_off_x]=r1
r1=[_y0]
[_rectangle_jumping_off_y]=r1
r2=[bp_temp]
r2-=0x01
r1=[r2]
r1-=[_rectangle_jumping_off_y]
[_rectangle_high]=r1
r2-=0x01
r1=[r2]
r1-=[_rectangle_jumping_off_x]
[_rectangle_wide]=r1
retf
//----------------------------------------
F_Rectangle_Parameters_four:
r1=[R_GraphicMode_temp]
r1&=dotted_mode_bit_clear
[R_GraphicMode_temp]=r1
r1=[R_GraphicMode]
r1&=dotted_mode_bit
r1|=[R_GraphicMode_temp]
[R_GraphicMode_temp]=r1
r2=[bp_temp]
r2-=0x01
r1=[r2]
[_rectangle_high]=r1
r2-=0x01
r1=[r2]
[_rectangle_wide]=r1
r2-=0x01
r1=[r2]
[_rectangle_jumping_off_y]=r1
r2-=0x01
r1=[r2]
[_rectangle_jumping_off_x]=r1
r1=[_rectangle_wide]
r1-=[_rectangle_jumping_off_x]
[_rectangle_wide]=r1
r1=[_rectangle_high]
r1-=[_rectangle_jumping_off_y]
[_rectangle_high]=r1
retf
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// display a rectange on lcd
//input _rectangle_jumping_off_x,_rectangle_jumping_off_y,_rectagle_shape
// _rectagle_mode,_rectangle_wide,_rectangle_high
//////////////////////////////////////////////////////////////////////////////
.external _rectagle_shape
.external _rectagle_mode
.external _rectagle_high_temp
.external _rectagle_wide_temp
.external _rectangle_temp_x //矩形x
//.public _rectagle
//_rectagle: .proc
rectangle_hollow:
r1=[_rectangle_jumping_off_x]
[_line_x0]=r1
r1+=[_rectangle_wide]
r1-=0x01
[_line_x1]=r1
r1=[_rectangle_jumping_off_y]
[_line_y0]=r1
[_line_y1]=r1
call DISPLAY_A_LINE
r1=[_line_x0]
[_line_x1]=r1
r1=[_line_y0]
r1+=[_rectangle_high]
r1-=0x01
[_line_y1]=r1
call DISPLAY_A_LINE
r1=[_line_y1]
[_line_y0]=r1
r1=[_line_x1]
r1+=[_rectangle_wide]
r1-=0x01
[_line_x1]=r1
call DISPLAY_A_LINE
r1=[_line_x1]
[_line_x0]=r1
r1=[_line_y1]
r1-=[_rectangle_high]
r1+=0x01
[_line_y1]=r1
call DISPLAY_A_LINE
retf
//----------------------------------------------------------
//r2-->high
rectangle_dotted:
r1=[R_GraphicMode_temp]
r1|=0x0004
[R_GraphicMode_temp]=r1
r2=0x00
r1=[_rectangle_jumping_off_x]
[_line_x0]=r1
r1=[_rectangle_jumping_off_y]
[_line_y0]=r1
[_line_y1]=r1
r1=[_rectangle_jumping_off_x]
r1+=[_rectangle_wide]
r1-=0x01
[_line_x1]=r1
rectangle_dotted_loop:
push r2 to [sp]
call DISPLAY_A_LINE
r1=[R_GraphicMode_temp]
r1^=0x0004
[R_GraphicMode_temp]=r1
pop r2 from [sp]
r2+=0x01
cmp r2,[_rectangle_high]
je rectangle_dotted_end
r1=[_line_y0]
r1+=0x01
[_line_y0]=r1
[_line_y1]=r1
jmp rectangle_dotted_loop
rectangle_dotted_end:
retf
//////////////////////////////////////////////////////////////////////////////
// display a rectange on lcd
// put in [_rectangle_jumping_off_x][_rectangle_jumping_off_y]
// [_rectangle_high][_rectangle_wide]
//////////////////////////////////////////////////////////////////////////////
.external _rectangle_jumping_off_x //矩形起点x
.external _rectangle_jumping_off_y //矩形起点y
.external _rectangle_high //矩形高
.external _rectangle_wide //矩形宽
.external _rectangle_jumping_off_page //矩形起点page
.external _rectangle_jumping_off_place //矩形起点place
.external _rectangle_jumping_off_bit //矩形起点bit
.external _rectangle_end_place //矩形终点page
.external _rectangle_end_page //矩形终点place
.external _rectangle_end_bit //矩形终点bit
//.public _rectagle1
//_rectagle1: .proc
rectagle:
r4=[R_GraphicMode_temp]
rectangle_mod_dotted:
r4&=line_mode_bit
cmp r4,rect_mode_DOTTED
jne rectangle_mod_dotted_cove
call rectangle_dotted
retf
rectangle_mod_dotted_cove:
r4&=line_mode_bit
cmp r4,rect_mode_DOTTED_COVER
jne rectangle_mod_dotted_xor
call rectangle_dotted
retf
rectangle_mod_dotted_xor:
r4&=line_mode_bit
cmp r4,rect_mode_DOTTED_XOR
jne rectangle_process3_loop_solid
call rectangle_dotted
retf
rectangle_process3_loop_solid:
r4&=line_mode_bit
cmp r4,rect_mode_HOLLOW
jne rectangle_process3_loop_solid_cover
call rectangle_hollow //_rectagle
retf
rectangle_process3_loop_solid_cover:
r4&=line_mode_bit
cmp r4,rect_mode_HOLLOW_ERASE
jne rectangle_mod_part_end
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=rect_mode_ERASE
[R_GraphicMode_temp]=r1
push r1 to [sp]
call rectangle_hollow //_rectagle
pop r1 from [sp]
[R_GraphicMode_temp]=r1
retf
rectangle_mod_part_end:
r1=[_rectangle_jumping_off_x]
[_x]=r1
r1=[_rectangle_jumping_off_y]
[_y]=r1
call get_a_point_address
r1=[_page]
[_rectangle_jumping_off_page]=r1
r1=[_page_place]
[_rectangle_end_place]=r1
r1=[_page_place_bit]
[_rectangle_jumping_off_bit]=r1
r1=[_rectangle_high]
r1-=0x01
r1+=[_rectangle_jumping_off_y]
// r1-=0x01
[_y]=r1
r1=[_rectangle_jumping_off_x]
[_x]=r1
call get_a_point_address
r1=[_page]
[_rectangle_end_page]=r1
r1=[_page_place_bit]
[_rectangle_end_bit]=r1
r1=[_rectangle_end_page]
cmp r1,[_rectangle_jumping_off_page]
jae rectangle_entity //rectangle_1
r1=[_rectangle_high]
jne rectangle_entity
// r1=[_public_area_sign]
// cmp r1,0xff
// jne rectangle_5
// call rectangle_process1
//小于非法
//rectangle_5:
retf
//rectangle_1:
rectangle_entity:
r1=[_rectangle_end_page]
cmp r1,[_rectangle_jumping_off_page]
je rectangle_2
//大于
call rectangle_entity_frist //rectangle_process1
retf
rectangle_2:
//等于
r1=[_public_area_sign]
cmp r1,0xff
jne rectangle_3
call rectangle_entity_frist //rectangle_process1
jmp rectangle_4
rectangle_3:
call rectangle_entity_second //rectangle_process2
rectangle_4:
retf
//////////////////////////////////////////////////////////////////////////////
//rectangle_process1
//rectangle_entity_frist
//////////////////////////////////////////////////////////////////////////////
.external tab_rectangle2
.external tab_rectangle1
.external _rectangle_jumping_off_page_temp
//.public rectangle_process1
//rectangle_process1: .proc
rectangle_entity_frist:
r1=[_rectangle_jumping_off_page]
[_page]=r1
r2=[_rectangle_jumping_off_bit]
r1=tab_rectangle2;
r1=r1+r2;
r1=[r1]
[rectangle_temp_bit]=r1
call rectangle_display_in_a_page //rectangle_process3
r2=[_rectangle_jumping_off_page]
//rectangle_process1_loop1:
rectangle_entity_frist_loop:
r2=[_page]
r2+=0x01
[_page]=r2
cmp r2,0x08
//jae rectangle_process1_1
jae rectangle_entity_frist_1
r1=[_public_area_sign]
cmp r1, 0xff
//jne rectangle_process1_2
//jmp rectangle_process1_3
jne rectangle_entity_frist_2
jmp rectangle_entity_frist_3
//rectangle_process1_2:
rectangle_entity_frist_2:
cmp r2,[_rectangle_end_page]
//jae rectangle_process1_1
jae rectangle_entity_frist_1
//rectangle_process1_3:
rectangle_entity_frist_3:
r1=0xff
[rectangle_temp_bit]=r1
call rectangle_display_in_a_page //rectangle_process3
goto rectangle_entity_frist_loop //rectangle_process1_loop1
//rectangle_process1_1:
rectangle_entity_frist_1:
r1=[_public_area_sign]
cmp r1, 0xff
//jne rectangle_process1_4
//jmp rectangle_process1_5
jne rectangle_entity_frist_4
jmp rectangle_entity_frist_5
//rectangle_process1_4:
rectangle_entity_frist_4:
r1=[_rectangle_end_page]
[_page]=r1
r2=[_rectangle_end_bit]
r1=tab_rectangle1;
r1=r1+r2;
r1=[r1]
[rectangle_temp_bit]=r1
call rectangle_display_in_a_page //rectangle_process3
//rectangle_process1_5:
rectangle_entity_frist_5:
retf
//////////////////////////////////////////////////////////////////////////////
//rectangle_process2
//rectangle_entity_second
//////////////////////////////////////////////////////////////////////////////
.external rectangle_temp_bit
.external rectangle_temp_page
.external _rectangle_jumping_off_bit_temp
//.public rectangle_process2
//rectangle_process2: .proc
rectangle_entity_second:
r1=[_rectangle_end_page]
[_page]=r1
r1=[_rectangle_end_bit]
cmp r1,[_rectangle_jumping_off_bit]
//jae rectangle_process2_1
jae rectangle_entity_second_begin
retf
//rectangle_process2_1:
rectangle_entity_second_begin:
r2=[_rectangle_jumping_off_bit]
r1=TAB_pixel;
r1=r1+r2;
r2=[r1]
[rectangle_temp_bit]=r2
r1=[_rectangle_end_bit]
r1-=[_rectangle_jumping_off_bit]
r3=r1
// cmp r3,0x01
// je rectangle_process2_loop
cmp r3,0x00
//je rectangle_process2_2
je rectangle_entity_second_2
r2=[rectangle_temp_bit]
[_rectangle_jumping_off_bit_temp]=r2
// r3-=0x01
//rectangle_process2_loop:
rectangle_entity_second_loop:
r2= [_rectangle_jumping_off_bit_temp]
r2=r2 lsl 0x01
[_rectangle_jumping_off_bit_temp]=r2
r2+=[rectangle_temp_bit]
[rectangle_temp_bit]=r2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -