📄 splc501sys.lst
字号:
0000B4D2 90 9A retf
image_eightrow_begin:
0000B4D3 40 F0 3E E8 CALL F_Set_LCD_Page_No
0000B4D5 12 95 A8 01 R2 = [image_jumpoff_point_x]
0000B4D7 40 F0 67 E8 CALL F_Set_LCD_Column_Addr
0000B4D9 40 F0 E9 E8 call F_Read_Lcd_data //read data on lcd
0000B4DB 0B B7 00 FF r3&=0xff00
0000B4DD 1B D7 AD 01 [image_lcd_data]=r3
0000B4DF 12 95 A8 01 R2 = [image_jumpoff_point_x]
0000B4E1 40 F0 67 E8 CALL F_Set_LCD_Column_Addr
0000B4E3 13 97 B0 01 r3=[image_tab_pointer]
0000B4E5 88 D2 push r1 to [sp]
0000B4E6 11 93 02 02 r1=[sign]
0000B4E8 48 B2 r1&=sign_zk_bank //0x008
0000B4E9 04 5E jz image_process_bank_1
0000B4EA 16 AD A4 01 sr|=[bank] //
0000B4EC E3 96 r3=d:[r3]
0000B4ED 01 EE jmp image_process_bank_2
image_process_bank_1:
0000B4EE C3 96 r3=[r3]
image_process_bank_2:
0000B4EF 88 90 pop r1 from [sp]
0000B4F0 41 08 r4+=0x01
0000B4F1 12 95 AC 01 r2=[image_bit] //analyze place of image
0000B4F3 44 44 cmp r2,0x04 //split data of image begin
0000B4F4 05 9E ja image_split_1_1
image_split_1_2:
0000B4F5 40 44 cmp r2 ,0x00
0000B4F6 0A 5E je image_split_1_3
0000B4F7 43 97 r3=r3 lsl 0x01
0000B4F8 41 24 r2-=0x01
0000B4F9 45 EE jmp image_split_1_2
image_split_1_1:
0000B4FA 5B 97 r3=r3 lsl 0x04
0000B4FB 44 24 r2-=0x04
image_split_1_4:
0000B4FC 40 44 cmp r2 ,0x00
0000B4FD 03 5E je image_split_1_3
0000B4FE 43 97 r3=r3 lsl 0x01
0000B4FF 41 24 r2-=0x01
0000B500 45 EE jmp image_split_1_4
image_split_1_3:
0000B501 1B D7 AE 01 [image_temp_data]=r3 //split data of image end
//r3&=0xff00
0000B503 0B B7 00 FF r3&=0xff00
0000B505 11 93 01 02 r1=[R_GraphicMode_temp]
0000B507 09 B3 C0 01 r1&=0x001c0
image_process_cover_frist:
0000B509 03 4E jnz image_process_xor_frist
0000B50A 13 A7 AD 01 r3|=[image_lcd_data] //or data on lcd
0000B50C 0A EE jmp image_proc_mod_frist_end
image_process_xor_frist:
0000B50D 09 43 00 01 cmp r1,0x0100
0000B50F 03 5E je image_process_clear_frist
0000B510 13 87 AD 01 r3^=[image_lcd_data] //xor data on lcd
0000B512 04 EE jmp image_proc_mod_frist_end
image_process_clear_frist:
0000B513 0B 87 00 FF r3^=0xff00
0000B515 13 B7 AD 01 r3&=[image_lcd_data]
image_proc_mod_frist_end:
//r3|=[image_lcd_data]
0000B517 7B 97 r3=r3 lsr 0x04
0000B518 7B 97 r3=r3 lsr 0x04
0000B519 40 F0 17 E9 call F_Display_point //display frist part data
0000B51B 11 93 AB 01 R1 = [image_page]
0000B51D 41 22 r1-=0x01
0000B51E 48 42 cmp r1,0x08 //if overstep area
0000B51F 02 0E jb image_second_begin
0000B520 80 FE 4C B5 goto image_process_end
image_second_begin:
0000B522 40 F0 3E E8 CALL F_Set_LCD_Page_No
0000B524 12 95 A8 01 R2 = [image_jumpoff_point_x]
0000B526 40 F0 67 E8 CALL F_Set_LCD_Column_Addr
0000B528 40 F0 E9 E8 call F_Read_Lcd_data //read data on lcd
0000B52A 0B B7 00 FF r3&=0xff00
0000B52C 7B 97 r3=r3 lsr 0x04
0000B52D 7B 97 r3=r3 lsr 0x04
0000B52E 1B D7 AD 01 [image_lcd_data]=r3
0000B530 12 95 A8 01 R2 = [image_jumpoff_point_x]
0000B532 40 F0 67 E8 CALL F_Set_LCD_Column_Addr
0000B534 13 97 AE 01 r3=[image_temp_data]
//r3|=[image_lcd_data]
0000B536 0B B7 FF 00 r3&=0x00ff
0000B538 11 93 01 02 r1=[R_GraphicMode_temp]
0000B53A 09 B3 C0 01 r1&=bmp_mode_bit
image_process_cover_second:
0000B53C 03 4E jne image_process_xor_second
0000B53D 13 A7 AD 01 r3|=[image_lcd_data] //or data on lcd
// [image_temp_data1]=r3
0000B53F 0A EE jmp image_proc_mod_second_end
image_process_xor_second:
0000B540 09 43 00 01 cmp r1,0x0100
0000B542 03 5E je image_process_clear_second
0000B543 13 87 AD 01 r3^=[image_lcd_data] //xor data on lcd
0000B545 04 EE jmp image_proc_mod_second_end
image_process_clear_second:
0000B546 0B 87 FF 00 r3^=0x00ff
0000B548 13 B7 AD 01 r3&=[image_lcd_data]
image_proc_mod_second_end:
0000B54A 40 F0 17 E9 call F_Display_point //display remanent part data
image_process_end:
0000B54C 11 93 A8 01 r1=[image_jumpoff_point_x]
0000B54E 41 22 r1-=0x01
0000B54F 19 D3 A8 01 [image_jumpoff_point_x]=r1
0000B551 13 97 B0 01 r3=[image_tab_pointer]
0000B553 13 07 A6 01 r3+=[image_width_byte]
0000B555 1B D7 B0 01 [image_tab_pointer]=r3
0000B557 14 49 A7 01 cmp r4,[image_high_bit]
0000B559 02 5E je image_process_complete //if display complete
0000B55A 80 FE CE B4 goto image_display_eightrow_begin
image_process_complete:
0000B55C 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
0000B55D 40 F0 32 E9 call _Init_IO //Initial i/o
0000B55F 40 F0 4A E7 call _Init_LCD_501 //Initial SPLC501
0000B561 40 92 r1=0x00
0000B562 19 D3 01 02 [R_GraphicMode_temp]=r1
0000B564 19 D3 02 02 [sign]=r1
0000B566 19 D3 45 02 [_x0]=r1
0000B568 19 D3 46 02 [_y0]=r1
0000B56A 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
0000B56B 88 DA PUSH BP,BP TO [SP]
0000B56C 00 93 r1=sp
0000B56D 05 95 r2=bp
0000B56E 01 25 r2-=r1
0000B56F 44 44 cmp r2,0x04
0000B570 06 5E je clearscreen
0000B571 00 9B bp=sp
0000B572 44 0A bp+=0x04
0000B573 C5 92 r1=[bp]
0000B574 40 42 cmp r1,0x00
0000B575 01 5E je clearscreen
0000B576 02 EE jmp fillscreen
clearscreen:
0000B577 40 96 r3=0x0000
0000B578 02 EE jmp fillaction
fillscreen:
0000B579 0B 97 00 FF r3=0xff00
fillaction:
0000B57B 40 F0 9D E8 call F_Fill_All_LCD_Value
0000B57D 88 98 pop bp,bp from [sp]
0000B57E 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:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -