📄 splc501sys.lst
字号:
image_split_1_2:
00008426 40 44 cmp r2 ,0x00
00008427 0A 5E je image_split_1_3
00008428 43 97 r3=r3 lsl 0x01
00008429 41 24 r2-=0x01
0000842A 45 EE jmp image_split_1_2
image_split_1_1:
0000842B 5B 97 r3=r3 lsl 0x04
0000842C 44 24 r2-=0x04
image_split_1_4:
0000842D 40 44 cmp r2 ,0x00
0000842E 03 5E je image_split_1_3
0000842F 43 97 r3=r3 lsl 0x01
00008430 41 24 r2-=0x01
00008431 45 EE jmp image_split_1_4
image_split_1_3:
00008432 1B D7 16 06 [image_temp_data]=r3 //split data of image end
//r3&=0xff00
00008434 0B B7 00 FF r3&=0xff00
00008436 11 93 69 06 r1=[R_GraphicMode_temp]
00008438 09 B3 C0 01 r1&=0x001c0
image_process_cover_frist:
0000843A 03 4E jnz image_process_xor_frist
0000843B 13 A7 15 06 r3|=[image_lcd_data] //or data on lcd
0000843D 0A EE jmp image_proc_mod_frist_end
image_process_xor_frist:
0000843E 09 43 00 01 cmp r1,0x0100
00008440 03 5E je image_process_clear_frist
00008441 13 87 15 06 r3^=[image_lcd_data] //xor data on lcd
00008443 04 EE jmp image_proc_mod_frist_end
image_process_clear_frist:
00008444 0B 87 00 FF r3^=0xff00
00008446 13 B7 15 06 r3&=[image_lcd_data]
image_proc_mod_frist_end:
//r3|=[image_lcd_data]
00008448 7B 97 r3=r3 lsr 0x04
00008449 7B 97 r3=r3 lsr 0x04
0000844A 40 F0 AE CC call F_Display_point //display frist part data
0000844C 11 93 13 06 R1 = [image_page]
0000844E 41 22 r1-=0x01
0000844F 48 42 cmp r1,0x08 //if overstep area
00008450 02 0E jb image_second_begin
00008451 80 FE 7D 84 goto image_process_end
image_second_begin:
00008453 40 F0 D5 CB CALL F_Set_LCD_Page_No
00008455 12 95 10 06 R2 = [image_jumpoff_point_x]
00008457 40 F0 FE CB CALL F_Set_LCD_Column_Addr
00008459 40 F0 80 CC call F_Read_Lcd_data //read data on lcd
0000845B 0B B7 00 FF r3&=0xff00
0000845D 7B 97 r3=r3 lsr 0x04
0000845E 7B 97 r3=r3 lsr 0x04
0000845F 1B D7 15 06 [image_lcd_data]=r3
00008461 12 95 10 06 R2 = [image_jumpoff_point_x]
00008463 40 F0 FE CB CALL F_Set_LCD_Column_Addr
00008465 13 97 16 06 r3=[image_temp_data]
//r3|=[image_lcd_data]
00008467 0B B7 FF 00 r3&=0x00ff
00008469 11 93 69 06 r1=[R_GraphicMode_temp]
0000846B 09 B3 C0 01 r1&=bmp_mode_bit
image_process_cover_second:
0000846D 03 4E jne image_process_xor_second
0000846E 13 A7 15 06 r3|=[image_lcd_data] //or data on lcd
// [image_temp_data1]=r3
00008470 0A EE jmp image_proc_mod_second_end
image_process_xor_second:
00008471 09 43 00 01 cmp r1,0x0100
00008473 03 5E je image_process_clear_second
00008474 13 87 15 06 r3^=[image_lcd_data] //xor data on lcd
00008476 04 EE jmp image_proc_mod_second_end
image_process_clear_second:
00008477 0B 87 FF 00 r3^=0x00ff
00008479 13 B7 15 06 r3&=[image_lcd_data]
image_proc_mod_second_end:
0000847B 40 F0 AE CC call F_Display_point //display remanent part data
image_process_end:
0000847D 11 93 10 06 r1=[image_jumpoff_point_x]
0000847F 41 22 r1-=0x01
00008480 19 D3 10 06 [image_jumpoff_point_x]=r1
00008482 13 97 18 06 r3=[image_tab_pointer]
00008484 13 07 0E 06 r3+=[image_width_byte]
00008486 1B D7 18 06 [image_tab_pointer]=r3
00008488 14 49 0F 06 cmp r4,[image_high_bit]
0000848A 02 5E je image_process_complete //if display complete
0000848B 80 FE FF 83 goto image_display_eightrow_begin
image_process_complete:
0000848D 90 9A retf
//////////////////////////////////////////////////////////////////////////////
//R_GraphicMode:
// 1 byte for graphic mode.
//
// Bit7,6: Bitmap/Char/String
// 00:COVER ;Default Mode
// 01:AND
// 10:OR
// 11:XOR
// Bit5: (unused)
// Bit4,3: Rect/Line/Pixel
// 00:SOLID_COVER ;Default (Bar) Mode
// 01:DOTTED_COVER
// 10:SOLID_XOR
// 11:DOTTED_XOR
//
// Bit2: Pixel Toggle
// 0:COVER(black)(default)
// 1:ERASE(white)
//
// (Toggle Bit for Dotted Line Mode)
// IF bit3=1, that is dotted mode
// then bit2 will be toggled between pixels
// IF bit3=0 then no toggle occured
// Bit1: (unused)
// Bit0: Swapping Flag for LineTo
// @
//X0: 1 byte x-coordinate of current point (CP).
//Y0: 1 byte y-coordinate of CP.
.external R_GraphicMode
.external _x0
.external _y0
///////////////////////////////////////////////////////////////////
//Function Name: FG_InitGraphic
//Parameters:
//Description: Initializing LCD graphics parameters
//Destroy:r1,r2,f3
//Memory Modified:
//Usage: FG_InitGraphic()
//Example:
// FG_InitGraphic()
///////////////////////////////////////////////////////////////////
.public _FG_InitGraphic
_FG_InitGraphic: .proc
0000848E 40 F0 C9 CC call _Init_IO //Initial i/o
00008490 40 F0 E1 CA call _Init_LCD_501 //Initial SPLC501
00008492 40 92 r1=0x00
00008493 19 D3 69 06 [R_GraphicMode_temp]=r1
00008495 19 D3 6A 06 [sign]=r1
00008497 19 D3 AD 06 [_x0]=r1
00008499 19 D3 AE 06 [_y0]=r1
0000849B 90 9A retf
.endp
///////////////////////////////////////////////////////////////////
//Function Name: FG_ClearScreen
//Parameters: DG_CLS_ERASE(default), DG_CLS_FILL
//Description: Clear LCD screen with 0 or 1.
//Destroy: r1,r2,r3,r4
//Memory Modified: None
//Usage: FG_ClearScreen(short arg)
//Example:
// FG_ClearScreen()
// FG_ClearScreen(DG_CLS_FILL)
///////////////////////////////////////////////////////////////////
.public _FG_ClearScreen
_FG_ClearScreen: .proc
0000849C 88 DA PUSH BP,BP TO [SP]
0000849D 00 93 r1=sp
0000849E 05 95 r2=bp
0000849F 01 25 r2-=r1
000084A0 44 44 cmp r2,0x04
000084A1 06 5E je clearscreen
000084A2 00 9B bp=sp
000084A3 44 0A bp+=0x04
000084A4 C5 92 r1=[bp]
000084A5 40 42 cmp r1,0x00
000084A6 01 5E je clearscreen
000084A7 02 EE jmp fillscreen
clearscreen:
000084A8 40 96 r3=0x0000
000084A9 02 EE jmp fillaction
fillscreen:
000084AA 0B 97 00 FF r3=0xff00
fillaction:
000084AC 40 F0 34 CC call F_Fill_All_LCD_Value
000084AE 88 98 pop bp,bp from [sp]
000084AF 90 9A retf
.endp
///////////////////////////////////////////////////////////////////
//Function Name: FG_GetBMPMode
// FG_GetLineStyle
// FG_GetRectStyle
// FG_GetCircleStyle
// FG_GetEllipseStyle
// FG_GetCharMode
//Description: Get current graphic mode.
//Destroy: r1
//Memory Modified:
//Usage:
// FG_GetBMPMode()
// FG_GetLineStyle()
// FG_GetRectStyle()
// FG_GetCircleStyle()
// FG_GetEllipseStyle()
// FG_GetCharMode()
///////////////////////////////////////////////////////////////////
.public _FG_GetBMPMode
_FG_GetBMPMode: .proc
000084B0 88 DA PUSH BP,BP TO [SP]
000084B1 11 93 69 06 r1=[R_GraphicMode_temp]
000084B3 09 B3 3F FE r1&=bmp_mode_bit_clear
000084B5 19 D3 69 06 [R_GraphicMode_temp]=r1
000084B7 11 93 AC 06 r1=[R_GraphicMode]
000084B9 09 B3 C0 01 r1&=bmp_mode_bit
000084BB 11 A3 69 06 r1|=[R_GraphicMode_temp]
000084BD 19 D3 69 06 [R_GraphicMode_temp]=r1
000084BF 88 98 pop bp,bp from [sp]
000084C0 90 9A retf
.endp
//*****************************************************************
.public _FG_GetLineStyle
_FG_GetLineStyle: .proc
000084C1 88 DA PUSH BP,BP TO [SP]
000084C2 11 93 69 06 r1=[R_GraphicMode_temp]
000084C4 09 B3 C3 FF r1&=dotted_mode_bit_clear
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -