📄 splc501sys.asm
字号:
.public _FG_GetCircleStyle
_FG_GetCircleStyle: .proc
call _FG_GetLineStyle
retf
.endp
//*****************************************************************
.public _FG_GetEllipseStyle
_FG_GetEllipseStyle: .proc
call _FG_GetLineStyle
retf
.endp
//*****************************************************************
.public _FG_GetCharMode
_FG_GetCharMode: .proc
call _FG_GetBMPMode
retf
.endp
///////////////////////////////////////////////////////////////////
//Function Name: FG_SetBMPMode
//Parameters: Mode
//Description: Set bitmap put style.
//Mode: DG_BMP_COVER(default)
// DG_BMP_and
// DG_BMP_XOR
//Destroy: r1,r2
//Memory Modified: R_GraphicMode
//Usage:
// FG_SetBMPMode(short Mode)
//Example:
// FG_SetBMPMode(DG_BMP_clear)
///////////////////////////////////////////////////////////////////
.public _FG_SetBMPMode
_FG_SetBMPMode: .proc
PUSH BP,BP TO [SP]
r1=sp
r2=bp
r2-=r1
cmp r2,0x04
je L_no_SetBMPMode_Parameters //parmeters?
bp=sp
bp+=0x04
r1=[bp] //get parmeters
cmp r1,DG_BMP_COVER
jne L_SetBMPMode_1_Parameters
L_SetBMPMode_0_Parameters:
L_no_SetBMPMode_Parameters:
r1=[R_GraphicMode]
r1&=bmp_mode_bit_clear
[R_GraphicMode]=r1
jmp l_SetBMPMode_end
L_SetBMPMode_1_Parameters:
cmp r1,DG_BMP_CLEAR
jne L_SetBMPMode_2_Parameters
r1=[R_GraphicMode]
r1&=bmp_mode_bit_clear
r1|=BMP_mode_CLEAR
[R_GraphicMode]=r1
jmp l_SetBMPMode_end
L_SetBMPMode_2_Parameters:
cmp r1,DG_BMP_XOR
jne l_SetBMPMode_end
r1=[R_GraphicMode]
r1&=bmp_mode_bit_clear
r1|=BMP_mode_XOR
[R_GraphicMode]=r1
l_SetBMPMode_end:
call _FG_GetBMPMode
pop bp,bp from [sp]
retf
.endp
//*****************************************************************
.public _FG_SetCharMode
_FG_SetCharMode:
goto _FG_SetBMPMode
//*****************************************************************
.public _FG_SetLineStyle
_FG_SetLineStyle:
PUSH BP,BP TO [SP]
r1=sp
r2=bp
r2-=r1
cmp r2,0x04
je L_no_SetLineMode_Parameters //parmeters?
bp=sp
bp+=0x04
r1=[bp] //get parmeters
L_cover_SetLineMode_Parameters:
cmp r1,DG_LINE_COVER
jne L_erase_SetLineMode_Parameters
L_no_SetLineMode_Parameters:
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
[R_GraphicMode]=r1
L_erase_SetLineMode_Parameters:
cmp r1,DG_LINE_ERASE
jne L_solid_SetLineMode_Parameters
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_ERASE
[R_GraphicMode]=r1
jmp l_SetLineMode_end
L_solid_SetLineMode_Parameters:
cmp r1,DG_LINE_HOLLOW
jne L_dotted_SetLineMode_Parameters
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_HOLLOW
[R_GraphicMode]=r1
jmp l_SetLineMode_end
L_dotted_SetLineMode_Parameters:
cmp r1,DG_LINE_DOTTED
jne L_solid_cover_SetLineMode
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_DOTTED
[R_GraphicMode]=r1
jmp l_SetLineMode_end
L_solid_cover_SetLineMode:
cmp r1,DG_LINE_HOLLOW_ERASE
jne L_dotted_cover_SetLineMode
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_HOLLOW_ERASE
[R_GraphicMode]=r1
jmp l_SetLineMode_end
L_dotted_cover_SetLineMode:
cmp r1,DG_LINE_DOTTED_COVER
jne L_solid_xor_SetLineMode
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_DOTTED_COVER
[R_GraphicMode]=r1
jmp l_SetLineMode_end
L_solid_xor_SetLineMode:
cmp r1,DG_LINE_SOLID_XOR
jne L_dotted_xor_SetLineMode
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_SOLID_XOR
[R_GraphicMode]=r1
jmp l_SetLineMode_end
L_dotted_xor_SetLineMode:
cmp r1,DG_LINE_DOTTED_XOR
jne l_SetLineMode_end
r1=[R_GraphicMode]
r1&=line_mode_bit_clear
r1|=line_mode_DOTTED_XOR
[R_GraphicMode]=r1
l_SetLineMode_end:
call _FG_GetLineStyle
pop bp,bp from [sp]
retf
//*****************************************************************
.public _FG_SetRectStyle
_FG_SetRectStyle:
goto _FG_SetLineStyle
//*****************************************************************
.public _FG_SetCircleStyle
_FG_SetCircleStyle:
goto _FG_SetLineStyle
//*****************************************************************
.public _FG_SetEllipseStyle
_FG_SetEllipseStyle:
goto _FG_SetLineStyle
//*****************************************************************
FG_SetMode: .proc
L_SetMode_cover_Parameters:
cmp r1,DG_PIXEL_COVER
jne L_SetMode_clear_Parameters
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
[R_GraphicMode_temp]=r1
jmp l_SetMode_end
L_SetMode_clear_Parameters:
cmp r1,DG_PIXEL_CLEAR
jne L_xor_Parameters
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=pixel_mode_CLEAR
[R_GraphicMode_temp]=r1
jmp l_SetMode_end
L_xor_Parameters:
cmp r1,DG_PIXEL_XOR
jne l_SetMode_end
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=pixel_mode_XOR
[R_GraphicMode_temp]=r1
l_SetMode_end:
retf
.endp
//*****************************************************************
FG_SetStyle:
L_cover_SetStyle_Parameters:
cmp r1,DRAW_COVER
jne L_erase_SetStyle_Parameters
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
[R_GraphicMode_temp]=r1
L_erase_SetStyle_Parameters:
cmp r1,DRAW_ERASE
jne L_solid_SetStyle_Parameters
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=draw_mode_ERASE
[R_GraphicMode_temp]=r1
jmp l_SetStyle_end
L_solid_SetStyle_Parameters:
cmp r1,DRAW_HOLLOW
jne L_dotted_SetStyle_Parameters
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=draw_mode_HOLLOW
[R_GraphicMode_temp]=r1
jmp l_SetStyle_end
L_dotted_SetStyle_Parameters:
cmp r1,DRAW_DOTTED
jne L_solid_cover_SetStyle
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=draw_mode_DOTTED
[R_GraphicMode_temp]=r1
jmp l_SetStyle_end
L_solid_cover_SetStyle:
cmp r1,DRAW_HOLLOW_ERASE
jne L_dotted_cover_SetStyle
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=draw_mode_HOLLOW_ERASE
[R_GraphicMode_temp]=r1
jmp l_SetStyle_end
L_dotted_cover_SetStyle:
cmp r1,DRAW_DOTTED_COVER
jne L_solid_xor_SetStyle
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=draw_mode_DOTTED_COVER
[R_GraphicMode_temp]=r1
jmp l_SetStyle_end
L_solid_xor_SetStyle:
cmp r1,DRAW_SOLID_XOR
jne L_dotted_xor_SetStyle
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=draw_mode_SOLID_XOR
[R_GraphicMode_temp]=r1
jmp l_SetStyle_end
L_dotted_xor_SetStyle:
cmp r1,DRAW_DOTTED_XOR
jne l_SetStyle_end
r1=[R_GraphicMode_temp]
r1&=line_mode_bit_clear
r1|=line_mode_bit
[R_GraphicMode_temp]=r1
l_SetStyle_end:
retf
///////////////////////////////////////////////////////////////////
//Function Name: FG_PutBitmap
//Parameters: BmpX,BmpY,BmpNum,Mode
//Description: Print a bitmap at (BmpX,BmpY) with assigned mode.
//Mode:
// DG_BMP_COVER(default)
// DG_BMP_clear
// DG_BMP_XOR
//Destroy: r1,r2,r3,r4
//Usage: FG_PutBitmap(short BmpNum,short BmpX,short BmpY,short Mode)
//Example:
// FG_PutBitmap(0,10,tab,DG_BMP_COVER)
// FG_PutBitmap(1,10,tab)
// FG_PutBitmap(tab,DG_BMP_XOR)
// FG_PutBitmap(tab)
///////////////////////////////////////////////////////////////////
.external bp_temp
.external R_GraphicMode_temp
.external _TAB_0
.external sign
//-----------------------------------
.public _FG_PutBitmap
_FG_PutBitmap: .proc
PUSH BP,BP TO [SP]
r1=sp
r2=bp
[bp_temp]=r2
r2-=r1
push r1,r4 to [sp]
call _F_image_bank
pop r1,r4 from [sp]
L_PutBitmap_Parameters_none:
cmp r2,0x04
je L_no_PutBitmap_Parameters
L_PutBitmap_Parameters_one:
cmp r2,0x05
jne L_PutBitmap_Parameters_two
call F_PutBitmap_Parameters_one
jmp L_PutBitmap
L_PutBitmap_Parameters_two:
cmp r2,0x06
jne L_PutBitmap_Parameters_three
call F_PutBitmap_Parameters_two
jmp L_PutBitmap
L_PutBitmap_Parameters_three:
cmp r2,0x07
jne L_PutBitmap_Parameters_four
call F_PutBitmap_Parameters_three
jmp L_PutBitmap
L_PutBitmap_Parameters_four:
cmp r2,0x08
jne L_PutBitmap_Parameters_three
call F_PutBitmap_Parameters_four
L_PutBitmap:
r1=[sign]
r1|=0x09
[sign]=r1
// CALL F_image_bank
call F_image
r1=[sign]
r1&=0xfff7
[sign]=r1
r1=[R_GraphicMode_temp]
r1&=bmp_mode_bit_clear
[R_GraphicMode_temp]=r1
r1=[R_GraphicMode]
r1&=bmp_mode_bit
r1|=[R_GraphicMode_temp]
[R_GraphicMode_temp]=r1
L_no_PutBitmap_Parameters:
POP BP,BP FROM [SP]
retf
.endp
/////////////////////////////////
.external picture_data
.external bank
.public _F_image_bank
_F_image_bank:
r4=0x00
//////
r2=sr
r2&=0x03ff
r1+=0x04
r1=[r1]
F_image_bank_loop:
sr=r2
r3=D:[r1]
cmp r3,r1
je F_image_bank_0
r4+=0x0400
r2+=0x0400
jmp F_image_bank_loop
F_image_bank_0:
[bank]=r4
retf
//----------------------------------------------------------------
F_PutBitmap_Parameters_one:
r2=[bp_temp]
r2-=0x01
r1=[r2]
r1+=0x01
[image_tab]=r1
r1=[_x0]
[image_jumpoff_point_x]=r1
r1=[_y0]
[image_jumpoff_point_y]=r1
r1=[R_GraphicMode_temp]
r1&=bmp_mode_bit_clear
[R_GraphicMode_temp]=r1
r1=[R_GraphicMode]
r1&=bmp_mode_bit
r1|=[R_GraphicMode_temp]
[R_GraphicMode_temp]=r1
r2=[image_tab]
r2-=0x02
sr|=[bank]
r1=d:[r2]
[image_high_bit]=r1
r2=[image_tab]
r2-=0x03
r1=d:[r2]
[image_width_byte]=r1
retf
//----------------------------------------------------------------
F_PutBitmap_Parameters_two:
r1=[R_GraphicMode_temp]
r1&=bmp_mode_bit_clear
[R_GraphicMode_temp]=r1
r2=[bp_temp]
r2-=0x01
r1=[r2]
F_Put_Para_two_1:
cmp r1,DG_BMP_CLEAR
jne F_Put_Para_two_2
r1=[R_GraphicMode_temp]
r1|=BMP_mode_CLEAR
[R_GraphicMode_temp]=r1
jmp F_Put_Para_two_0
F_Put_Para_two_2:
cmp r1,DG_BMP_XOR
jne F_Put_Para_two_0
r1=[R_GraphicMode_temp]
r1|=BMP_mode_XOR
[R_GraphicMode_temp]=r1
F_Put_Para_two_0:
r2-=0x01
r1=[r2]
r1+=0x01
[image_tab]=r1
r1=[_x0]
[image_jumpoff_point_x]=r1
r1=[_y0]
[image_jumpoff_point_y]=r1
sr|=[bank]
r2=[image_tab]
r2-=0x02
r1=d:[r2]
[image_high_bit]=r1
r2=[image_tab]
r2-=0x03
r1=d:[r2]
[image_width_byte]=r1
retf
//----------------------------------------------------------------
F_PutBitmap_Parameters_three:
r2=[bp_temp]
r2-=0x01
r1=[r2]
[image_jumpoff_point_y]=r1
r2-=0x01
r1=[r2]
[image_jumpoff_point_x]=r1
r2-=0x01
r1=[r2]
r1+=0x01
[image_tab]=r1
r1=[R_GraphicMode_temp]
r1&=bmp_mode_bit_clear
[R_GraphicMode_temp]=r1
r1=[R_GraphicMode]
r1&=bmp_mode_bit
r1|=[R_GraphicMode_temp]
[R_GraphicMode_temp]=r1
r2=[image_tab]
r2-=0x02
sr|=[bank]
r1=d:[r2]
[image_high_bit]=r1
r2=[image_tab]
r2-=0x03
r1=d:[r2]
[image_width_byte]=r1
retf
//----------------------------------------------------------------
F_PutBitmap_Parameters_four:
r1=[R_GraphicMode_temp]
r1&=bmp_mode_bit_clear
[R_GraphicMode_temp]=r1
r2=[bp_temp]
r2-=0x01
r1=[r2]
F_Put_Para_four_1:
cmp r1,DG_BMP_CLEAR
jne F_Put_Para_four_2
r1=[R_GraphicMode_temp]
r1|=BMP_mode_CLEAR
[R_GraphicMode_temp]=r1
jmp F_Put_Para_four_0
F_Put_Para_four_2:
cmp r1,DG_BMP_XOR
jne F_Put_Para_four_0
r1=[R_GraphicMode_temp]
r1|=BMP_mode_XOR
[R_GraphicMode_temp]=r1
F_Put_Para_four_0:
r2-=0x01
r1=[r2]
[image_jumpoff_point_y]=r1
r2-=0x01
r1=[r2]
[image_jumpoff_point_x]=r1
r2-=0x01
r1=[r2]
r1+=0x01
[image_tab]=r1
r2=[image_tab]
r2-=0x02
sr|=[bank]
r1=d:[r2]
[image_high_bit]=r1
r2=[image_tab]
r2-=0x03
r1=d:[r2]
[image_width_byte]=r1
retf
//////////////////////////////////////////////////////////////////////////////
//Filename : _FG_LineTo
//参数: _line_x0,_line_y0,_line_x1,_line_y1
//Mode: DG_LINE_COVER(default)
// DG_LINE_ERASE
// DG_LINE_SOLID
// DG_LINE_DOTTED
// DG_LINE_SOLID_COVER
// DG_LINE_DOTTED_COVER
// DG_LINE_SOLID_XOR
// DG_LINE_DOTTED_XOR
//Function Description :GIVE A jumping_off POINT and end point
// DISPLAY A line ON LCD with the style assigned in R_GraphicMode.
//
//Input :(_line_x0,_line_y0)(_line_x1,_line_y1)
//Output :
//Destory : R1,R2,R3,R4
//用法: FG_LineTo(short StartX,short StartY,short EndX,short EndY)
//Example: FG_LineTo(0,0,20,20)
// FG_LineTo(R_Var1,R_Var2)
//////////////////////////////////////////////////////////////////////////////
.external _line_x0 //直线起点X值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -