📄 splc501sys.asm
字号:
r3-=0x01
cmp r3,0x00
jbe rectangle_entity_second_2
goto rectangle_entity_second_loop
rectangle_entity_second_2:
//jbe rectangle_process2_2
//goto rectangle_process2_loop
//rectangle_process2_2:
r1=[rectangle_temp_bit]
call rectangle_display_in_a_page //rectangle_process3
//rectangle_process2_3:
rectangle_entity_second_3:
retf
//////////////////////////////////////////////////////////////////////////////
//rectangle_process3
//rectangle_display_in_a_page
//////////////////////////////////////////////////////////////////////////////
.external _rectangle_wide_temp
.external _rectangle_end_place_temp
//.public rectangle_process3
//rectangle_process3: .proc
rectangle_display_in_a_page:
r1=[_rectangle_wide]
[_rectangle_wide_temp]=r1
R1 =[_page];
CALL F_Set_LCD_Page_No;
R2 =[_rectangle_end_place]
[_rectangle_end_place_temp]=r2
CALL F_Set_LCD_Column_Addr
rectangle_process3_loop:
call _Read_Lcd_data
r3=r3 lsr 0x04
r3=r3 lsr 0x04
rectangle_process3_loop_cover:
r4=[R_GraphicMode_temp]
r4&=line_mode_bit
cmp r4,0x00
jne rectangle_process3_loop_erase
r3|=[rectangle_temp_bit]
rectangle_process3_loop_erase:
r4&=line_mode_bit
cmp r4,0x08
jne rectangle_process3_loop_solid_xor
push r1,r2 to [sp]
r1=[rectangle_temp_bit]
r1^=0xff
r3&=r1
pop r1,r2 from [sp]
rectangle_process3_loop_solid_xor:
r4&=line_mode_bit
cmp r4,0x30
jne rectangle_process3_mod_loop_end
push r1,r2 to [sp]
r1=[rectangle_temp_bit]
r2=r3
r3&=r1
r3^=r1
r1^=0xff
r2&=r1
r3|=r2
pop r1,r2 from [sp]
rectangle_process3_mod_loop_end:
R2 =[_rectangle_end_place_temp]
// r2+=0x01
// [_rectangle_end_place_temp]=r2
CALL F_Set_LCD_Column_Addr;
call F_Display_point
R2 =[_rectangle_end_place_temp]
r2+=0x01
[_rectangle_end_place_temp]=r2
CALL F_Set_LCD_Column_Addr;
r1=[_rectangle_wide_temp]
r1-=0x01
[_rectangle_wide_temp]=r1
cmp r1,0x00
je rectangle_process3_1
goto rectangle_process3_loop
rectangle_process3_1:
retf
//////////////////////////////////////////////////////////////////////////////
//Filename : _FG_Circle
//Function Description :display a Circle on lcd
//Input : [_ellipse_origin_y][_ellipse_origin_x]
// [_ellipse_long_axes][_ellipse_short_axes]
//Mode:
// DG_CIRCLE_COVER (default)
// DG_CIRCLE_ERASE
// DG_CIRCLE_HOLLOW
// DG_CIRCLE_DOTTED
// DG_CIRCLE_HOLLOW_ERASE
// DG_CIRCLE_DOTTED_COVER
// DG_CIRCLE_SOLID_XOR
// DG_CIRCLE_DOTTED_XOR
//usage: FG_Circle(short originx,short originy,short radius)
//Destory : R1,R2,R3,R4
//////////////////////////////////////////////////////////////////////////////
.public _FG_Circle
_FG_Circle:
PUSH BP,BP TO [SP]
r1=sp
r2=bp
[bp_temp]=r2
r2-=r1
L_Circle_Parameters_three:
cmp r2,0x07
jne L_Circle
call F_Circle_Parameters_three
L_Circle:
// call _ellipes
call ellipes
pop bp from [sp]
retf
//------------------------------------------------------------------------------
F_Circle_Parameters_three:
r2=[bp_temp]
r2-=0x01
r1=[r2]
[_ellipse_short_axes]=r1
[_ellipse_long_axes]=r1
r2-=0x01
r1=[r2]
[_ellipse_origin_y]=r1
r2-=0x01
r1=[r2]
[_ellipse_origin_x]=r1
retf
//////////////////////////////////////////////////////////////////////////////
//Filename : _FG_Ellipse
//Function Description :display a Ellipse on lcd
//Input : [_ellipse_origin_y][_ellipse_origin_x]
// [_ellipse_long_axes][_ellipse_short_axes]
//Mode:
// DG_ELLIPSE_COVER (default)
// DG_ELLIPSE_ERASE
// DG_ELLIPSE_HOLLOW
// DG_ELLIPSE_DOTTED
// DG_ELLIPSE_HOLLOW_ERASE
// DG_ELLIPSE_DOTTED_COVER
// DG_ELLIPSE_SOLID_XOR
//
//usage: FG_Ellipse(short originx,short originy,short radius)
//Destory : R1,R2,R3,R4
//////////////////////////////////////////////////////////////////////////////
.public _FG_Ellipse
_FG_Ellipse:
PUSH BP,BP TO [SP]
r1=sp
r2=bp
[bp_temp]=r2
r2-=r1
L_Ellipse_Parameters_four:
cmp r2,0x08
jne L_Ellipse
call F_Ellipse_Parameters_four
call ellipes
L_Ellipse:
pop bp from [sp]
retf
//----------------------------------------------------------------------------
F_Ellipse_Parameters_four:
r2=[bp_temp]
r2-=0x01
r1=[r2]
[_ellipse_short_axes]=r1
r2-=0x01
r1=[r2]
[_ellipse_long_axes]=r1
r2-=0x01
r1=[r2]
[_ellipse_origin_y]=r1
r2-=0x01
r1=[r2]
[_ellipse_origin_x]=r1
retf
//-----------------------------------------------------------------------------
.external _ellipse_long_axes
.external _ellipse_short_axes
.external _ellipse_x
.external _ellipse_y
.external _ellipse_origin_x
.external _ellipse_origin_y
.external _ellipse_x_temp //public
.external _ellipse_y_temp //public
.external _a_square_mul_y_square_l //a平方乘以y平方
.external _a_square_mul_y_square_h //a平方乘以y平方
.external _b_square_mul_x_square_l //b平方乘以x平方
.external _b_square_mul_x_square_h //b平方乘以x平方
.external _a_square_mul_b_square_l //a平方乘以b平方
.external _a_square_mul_b_square_h //b平方乘以b平方
.external _ellipse_reckon_offset_first_l //椭圆计偏移量X-1,Y-1
.external _ellipse_reckon_offset_first_h //椭圆计偏移量X-1,Y-1
.external _ellipse_reckon_offset_second_l //椭圆计偏移量
.external _ellipse_reckon_offset_second_h //椭圆计偏移量
.external _ellipse_reckon_offset_sign //椭圆计偏移量符号
ellipes: .proc
r1=0x00
[_ellipse_x]=r1
r1=[_ellipse_long_axes]
[_public_b]=r1
r1=[_ellipse_short_axes]
[_public_a]=r1
[_ellipse_y]=r1
call _a_square_b_square
r1=[_public_a_squ_mul_b_squ_l]
[_a_square_mul_b_square_l]=r1
[_public_offset_in_a_l]=r1
r1=[_public_a_squ_mul_b_squ_h]
[_a_square_mul_b_square_h]=r1
[_public_offset_in_a_h]=r1
r1=0x00
r1+=[_ellipse_origin_x]
[_x]=r1
r1=[_ellipse_short_axes]
r1+=[_ellipse_origin_y]
[_y]=r1
r1=[sign]
r4=[R_GraphicMode_temp]
r4&=0x0030
cmp r4,0x10
jne _ellipes_mode_solidcover1
call _ellipse_process3
jmp _ellipes_loop
_ellipes_mode_solidcover1:
r4&=line_mode_bit
cmp r4,0x20
jne _ellipes_loop
call _ellipse_process3
_ellipes_loop:
r1=[_ellipse_y]
cmp r1,0x00
ja ellipes_5
goto ellipse_end
ellipse_1_temp:
goto ellipse_1
ellipes_5:
r1=[_ellipse_y]
r1-=0x01
[_ellipse_y_temp]=r1
r1=[_ellipse_x]
r1+=0x01
[_ellipse_x_temp]=r1
call _ellipse_process1
call _offset
r1=[_public_offset_out_l]
[_ellipse_reckon_offset_first_l]=r1
r1=[_public_offset_out_h]
[_ellipse_reckon_offset_first_h]=r1
r1= [_sign]
[_ellipse_reckon_offset_sign]=r1
r1=[_ellipse_reckon_offset_sign]
cmp r1,0xff
je ellipse_1_temp
//右上点
r1=[_ellipse_y]
[_ellipse_y_temp]=r1
r1=[_ellipse_x]
r1+=0x01
[_ellipse_x_temp]=r1
call _ellipse_process1
call _offset
r1=[_public_offset_out_l]
[_ellipse_reckon_offset_second_l]=r1
r1=[_public_offset_out_h]
[_ellipse_reckon_offset_second_h]=r1
call _ellipse_process2
r1=0x00
cmp r1,[_process_sign]
je ellipse_2
//选择对角点
r1=[_ellipse_y] ///***
r1-=0x01
[_ellipse_y]=r1
r1+=[_ellipse_origin_y]
[_y]=r1
r1=[_ellipse_x]
r1+=0x01
[_ellipse_x]=r1
r1+=[_ellipse_origin_x]
[_x]=r1
r4=[R_GraphicMode_temp]
r4&=line_mode_bit
cmp r4,0x10
jne _ellipes_mode_solidcover2
call _ellipse_process3
goto _ellipes_loop
_ellipes_mode_solidcover2:
r4&=line_mode_bit
cmp r4,0x20
jne ellipse_mode_solidecover3
call _ellipse_process3
goto _ellipes_loop
ellipse_mode_solidecover3:
call _ellipse_process4
goto _ellipes_loop
ellipse_2:
//选择右上点
r1=[_ellipse_y]
[_ellipse_y]=r1
r1+=[_ellipse_origin_y]
[_y]=r1
r1=[_ellipse_x]
r1+=0x01
[_ellipse_x]=r1
r1+=[_ellipse_origin_x]
[_x]=r1
// call _ellipse_process3
r4=[R_GraphicMode_temp]
r4&=line_mode_bit
cmp r4,0x10
jne _ellipes_mode_solidcover4
call _ellipse_process3
_ellipes_mode_solidcover4:
r4&=line_mode_bit
cmp r4,0x20
jne ellipse_mode_solidecover5
call _ellipse_process3
ellipse_mode_solidecover5:
goto _ellipes_loop
ellipse_1:
//左下点
r1=[_ellipse_y] ///****
r1-=0x01
[_ellipse_y_temp]=r1
r1=[_ellipse_x]
[_ellipse_x_temp]=r1
call _ellipse_process1
call _offset
r1=[_public_offset_out_l]
[_ellipse_reckon_offset_second_l]=r1
r1=[_public_offset_out_h]
[_ellipse_reckon_offset_second_h]=r1
call _ellipse_process2
r1=0x00
cmp r1,[_process_sign]
je ellipse_3
//选择对角点
r1=[_ellipse_y]
r1-=0x01
[_ellipse_y]=r1 ///****
r1+=[_ellipse_origin_y]
[_y]=r1
r1=[_ellipse_x]
r1+=0x01
[_ellipse_x]=r1
r1+=[_ellipse_origin_x]
[_x]=r1
// call _ellipse_process3
r4=[R_GraphicMode_temp]
r4&=line_mode_bit
cmp r4,0x10
jne _ellipes_mode_solidcover6
call _ellipse_process3
goto _ellipes_loop
_ellipes_mode_solidcover6:
r4&=line_mode_bit
cmp r4,0x20
jne ellipse_mode_solidecover7
call _ellipse_process3
goto _ellipes_loop
ellipse_mode_solidecover7:
call _ellipse_process4
goto _ellipes_loop
ellipse_3:
//左下点
r1=[_ellipse_y]
r1-=0x01
[_ellipse_y]=r1 ///***
r1+=[_ellipse_origin_y]
[_y]=r1
r1=[_ellipse_x]
[_ellipse_x]=r1
r1+=[_ellipse_origin_x]
[_x]=r1
// call _ellipse_process3
r4=[R_GraphicMode_temp]
r4&=line_mode_bit
cmp r4,0x10
jne _ellipes_mode_solidcover8
call _ellipse_process3
goto _ellipes_loop
_ellipes_mode_solidcover8:
r4&=line_mode_bit
cmp r4,0x20
jne ellipse_mode_solidecover9
call _ellipse_process3
goto _ellipes_loop
ellipse_mode_solidecover9:
call _ellipse_process4
goto _ellipes_loop
ellipse_end:
retf
.endp
//////////////////////////////////////////////////////////////////////////////
// ellipse process 1
//////////////////////////////////////////////////////////////////////////////
.public _ellipse_process1
_ellipse_process1: .proc
r1=[_ellipse_long_axes]
[_public_b]=r1
r1=[_ellipse_y_temp]
[_public_a]=r1
call _a_square_b_square
r1=[_public_a_squ_mul_b_squ_l]
[_a_square_mul_y_square_l]=r1
[_public_offset_in_b_l]=r1
r1=[_public_a_squ_mul_b_squ_h]
[_a_square_mul_y_square_h]=r1
[_public_offset_in_b_h]=r1
r1=[_ellipse_short_axes]
[_public_b]=r1
r1=[_ellipse_x_temp]
[_public_a]=r1
call _a_square_b_square
r1=[_public_a_squ_mul_b_squ_l]
[_b_square_mul_x_square_l]=r1
[_public_offset_in_c_l]=r1
r1=[_public_a_squ_mul_b_squ_h]
[_b_square_mul_x_square_h]=r1
[_public_offset_in_c_h]=r1
retf
.endp
//////////////////////////////////////////////////////////////////////////////
// ellipse process 2
//////////////////////////////////////////////////////////////////////////////
.external _process_sign
.public _ellipse_process2
_ellipse_process2: .proc
r1=[_ellipse_reckon_offset_first_h]
cmp r1,[_ellipse_reckon_offset_second_h]
jb _ellipse_process2_1
//大于等于
r1=[_ellipse_reckon_offset_first_h]
cmp r1,[_ellipse_reckon_offset_second_h]
je _ellipse_process2_2
r1=0x00
[_process_sign]=r1
retf
_ellipse_process2_2:
//高位等于
r1=[_ellipse_reckon_offset_first_l]
cmp r1,[_ellipse_reckon_offset_second_l]
jb _ellipse_process2_1
r1=0x00
[_process_sign]=r1
retf
_ellipse_process2_1:
//小于
r1=0xff
[_process_sign]=r1
retf
.endp
//////////////////////////////////////////////////////////////////////////////
// ellipse process 3
//////////////////////////////////////////////////////////////////////////////
.public _ellipse_process3
_ellipse_process3: .proc
r1=[sign]
push r1 to [sp]
call DISPLAY_A_POINT
pop r1 from [sp]
[sign]=r1
r1=[_x]
r1-=[_ellipse_x]
r1-=[_ellipse_x]
[_x]=r1
r1=[sign]
push r1 to [sp]
call DISPLAY_A_POINT
pop r1 from [sp]
[sign]=r1
r1=[_y]
r1-=[_ellipse_y]
r1-=[_ellipse_y]
[_y]=r1
r1=[sign]
push r1 to [sp]
call DISPLAY_A_POINT
pop r1 from [sp]
[sign]=r1
r1=[_x]
r1+=[_ellipse_x]
r1+=[_ellipse_x]
[_x]=r1
call DISPLAY_A_POINT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -