📄 splc501sys.lst
字号:
//Filename : _pixel
//Function : display appoint pixel
//Input : x,y
//Output : display a appoint pixel on lcd
//Destroy : R1,r2,r3
//////////////////////////////////////////////////////////////////////////////
.external pixel_page
.external pixel_column
.external pixel_bit
.external TAB_pixel
.public _pixel
_pixel: .proc
0000834D 88 DA PUSH BP,BP TO [SP];
0000834E 00 9B bp=sp
0000834F 44 0A bp+=0x04
00008350 C5 92 r1=[bp]
00008351 41 0A bp+=0x01
00008352 C5 94 r2=[bp]
F_pixel:
00008353 19 D3 0F 06 [pixel_column]=r1 //work out column
00008355 40 92 r1=0x00
00008356 19 D3 0E 06 [pixel_page]=r1
F_pixel_2:
00008358 48 44 cmp r2,0x08
00008359 09 0E jb F_pixel_1
0000835A 48 44 cmp r2,0x08
0000835B 07 5E je F_pixel_1
0000835C 48 24 r2-=0x08
0000835D 11 93 0E 06 r1=[pixel_page]
0000835F 41 02 r1+=0x01
00008360 19 D3 0E 06 [pixel_page]=r1
00008362 4B EE jmp F_pixel_2
F_pixel_1:
00008363 09 93 08 83 r1=TAB_pixel
00008365 02 03 r1+=r2
00008366 C1 94 r2=[r1]
00008367 1A D5 10 06 [pixel_bit]=r2 //work out pixel_bit,pixel_page
// R1 = [pixel_page]
// CALL F_Set_LCD_Page_No
// R2 = [pixel_column]
// CALL F_Set_LCD_Column_Addr
00008369 11 93 0E 06 r1=[pixel_page]
0000836B 19 D3 82 06 [_page]=r1
0000836D 11 93 0F 06 r1=[pixel_column]
0000836F 19 D3 83 06 [_page_place]=r1
00008371 13 97 10 06 r3=[pixel_bit]
00008373 1B D7 89 06 [_point_value]=r3
00008375 40 F0 BD 88 call display_a_point
00008377 13 97 6A 06 r3=[sign]
00008379 41 B6 r3&=0x01
0000837A 01 4E jnz F_pixel_end
0000837B 88 98 POP BP,BP FROM [SP]
F_pixel_end:
0000837C 13 97 6A 06 r3=[sign]
0000837E 0B B7 FE FF r3&=0xfffe
00008380 1B D7 6A 06 [sign]=r3
00008382 90 9A retf
.endp
//////////////////////////////////////////////////////////////////////////////
//Filename : F_Get_pixel
//参数: PlotX,PlotY
//Function : appoint pixel state,if r1=0 then point is white else point is black.
//Get the pixel color at (PlotX,PlotY), and store in A.
//Input : x,y
//Output : r1 appoint pixel state on lcd
//Destroy : R1,r2,r3
//用法: FG_GetPixel(short PlotX,short PlotY)
//Example: FG_GetPixel()
// FG_GetPixel(10,20)
//////////////////////////////////////////////////////////////////////////////
F_Get_pixel:
00008383 19 D3 0F 06 [pixel_column]=r1 //work out column
00008385 40 92 r1=0x00
00008386 19 D3 0E 06 [pixel_page]=r1
F_Get_pixel_2:
00008388 48 44 cmp r2,0x08
00008389 09 0E jb F_Get_pixel_1
0000838A 48 44 cmp r2,0x08
0000838B 07 5E je F_Get_pixel_1
0000838C 48 24 r2-=0x08
0000838D 11 93 0E 06 r1=[pixel_page]
0000838F 41 02 r1+=0x01
00008390 19 D3 0E 06 [pixel_page]=r1
00008392 4B EE jmp F_Get_pixel_2
F_Get_pixel_1:
00008393 09 93 08 83 r1=TAB_pixel
00008395 02 03 r1+=r2
00008396 C1 94 r2=[r1]
00008397 1A D5 10 06 [pixel_bit]=r2 //work out pixel_bit,pixel_page
00008399 11 93 0E 06 R1 = [pixel_page]
0000839B 40 F0 D5 CB CALL F_Set_LCD_Page_No
0000839D 12 95 0F 06 R2 = [pixel_column]
0000839F 40 F0 FE CB CALL F_Set_LCD_Column_Addr
000083A1 40 F0 80 CC call F_Read_Lcd_data
000083A3 11 93 10 06 r1=[pixel_bit]
000083A5 7B 97 r3=r3 lsr 0x04
000083A6 7B 97 r3=r3 lsr 0x04
000083A7 03 B3 r1&=r3
F_Get_pixel_end:
000083A8 90 9A retf
//////////////////////////////////////////////////////////////////////////////
//Filename : image
//Function : display image
//Input : x,y,tab
//Output : display image at appoint place
//Destroy : R1,r2,r3
//////////////////////////////////////////////////////////////////////////////
.external image_width_byte
.external image_high_bit
.external image_jumpoff_point_x
.external image_jumpoff_point_y
.external image_tab
.external image_page
.external image_bit
.external image_lcd_data
.external image_temp_data
.external image_temp_data1
.external image_tab_pointer
.public image
image: .proc
000083A9 88 DA PUSH BP,BP TO [SP];
000083AA 00 9B bp=sp
000083AB 44 0A bp+=0x04
000083AC C5 92 r1=[bp]
000083AD 19 D3 10 06 [image_jumpoff_point_x]=r1
000083AF 41 0A bp+=0x01
000083B0 C5 92 r1=[bp]
000083B1 19 D3 11 06 [image_jumpoff_point_y]=r1
000083B3 41 0A bp+=0x01
000083B4 C5 92 r1=[bp]
000083B5 41 02 r1+=0x01
000083B6 19 D3 12 06 [image_tab]=r1
000083B8 41 0A bp+=0x01
000083B9 C5 92 r1=[bp]
000083BA 19 D3 0E 06 [image_width_byte]=r1
000083BC 41 0A bp+=0x01
000083BD C5 92 r1=[bp]
000083BE 19 D3 0F 06 [image_high_bit]=r1 //get parameter form c
F_image:
000083C0 40 92 r1=0x00
000083C1 19 D3 13 06 [image_page]=r1
000083C3 19 D3 19 06 [image_temp_data1]=r1
000083C5 12 95 11 06 r2=[image_jumpoff_point_y]
F_image_page_no_end:
000083C7 48 44 cmp r2,0x08
000083C8 09 0E jb F_image_page_end
000083C9 48 44 cmp r2,0x08
000083CA 07 5E je F_image_page_end
000083CB 48 24 r2-=0x08
000083CC 11 93 13 06 r1=[image_page]
000083CE 41 02 r1+=0x01
000083CF 19 D3 13 06 [image_page]=r1
000083D1 4B EE jmp F_image_page_no_end
F_image_page_end:
000083D2 1A D5 14 06 [image_bit]=r2 //work out page and bit of jumping off point
000083D4 40 94 r2=0x00
F_image_no_end:
000083D5 11 93 12 06 r1=[image_tab]
000083D7 19 D3 18 06 [image_tab_pointer]=r1
000083D9 11 93 10 06 r1=[image_jumpoff_point_x]
000083DB 90 D4 push r1,r2 to [sp] //save [image_jumpoff_point_x],r2
// call F_image_process_1 //display eight row
000083DC 40 F0 FE 83 call F_image_display_eightrow
000083DE 90 90 pop r1,r2 from [sp]
000083DF 41 04 r2+=0x01
000083E0 19 D3 10 06 [image_jumpoff_point_x]=r1
000083E2 11 93 12 06 r1=[image_tab]
000083E4 41 02 r1+=0x01
000083E5 19 D3 12 06 [image_tab]=r1
000083E7 19 D3 18 06 [image_tab_pointer]=r1 //data pointer of image
000083E9 11 93 13 06 R1 = [image_page]
000083EB 41 22 r1-=0x01
000083EC 19 D3 13 06 [image_page]=r1
000083EE 12 45 0E 06 cmp r2,[image_width_byte] //if image end
000083F0 01 5E je F_image_finish
000083F1 5D EE jmp F_image_no_end
F_image_finish:
000083F2 11 93 6A 06 r1=[sign] //if assembler transfer
000083F4 41 B2 r1&=0x01
000083F5 01 4E jne F_image_end
000083F6 88 98 POP BP,BP FROM [SP];
F_image_end:
000083F7 11 93 6A 06 r1=[sign]
000083F9 09 B3 FE FF r1&=0xfffe
000083FB 19 D3 6A 06 [sign]=r1
000083FD 90 9A retf
.endp
/////////////////////////////////////////////////////////////////////////
F_image_display_eightrow:
000083FE 40 98 r4=0x00 //pointer of tier data
image_display_eightrow_begin:
000083FF 11 93 13 06 R1 = [image_page]
00008401 49 42 cmp r1,0x0009 //area of page
00008402 01 0E jb image_eightrow_begin
00008403 90 9A retf
image_eightrow_begin:
00008404 40 F0 D5 CB CALL F_Set_LCD_Page_No
00008406 12 95 10 06 R2 = [image_jumpoff_point_x]
00008408 40 F0 FE CB CALL F_Set_LCD_Column_Addr
0000840A 40 F0 80 CC call F_Read_Lcd_data //read data on lcd
0000840C 0B B7 00 FF r3&=0xff00
0000840E 1B D7 15 06 [image_lcd_data]=r3
00008410 12 95 10 06 R2 = [image_jumpoff_point_x]
00008412 40 F0 FE CB CALL F_Set_LCD_Column_Addr
00008414 13 97 18 06 r3=[image_tab_pointer]
00008416 88 D2 push r1 to [sp]
00008417 11 93 6A 06 r1=[sign]
00008419 48 B2 r1&=sign_zk_bank //0x008
0000841A 04 5E jz image_process_bank_1
0000841B 16 AD 0C 06 sr|=[bank] //
0000841D E3 96 r3=d:[r3]
0000841E 01 EE jmp image_process_bank_2
image_process_bank_1:
0000841F C3 96 r3=[r3]
image_process_bank_2:
00008420 88 90 pop r1 from [sp]
00008421 41 08 r4+=0x01
00008422 12 95 14 06 r2=[image_bit] //analyze place of image
00008424 44 44 cmp r2,0x04 //split data of image begin
00008425 05 9E ja image_split_1_1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -