📄 sdrv_rectfill.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 28/Dec/106 14:32:06 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = large #
# Source file = d:\case_i_d90f\drv\ui_ssd1332\sdrv\sdrv_rectfill.c #
# List file = d:\case_i_d90f\drv\ui_ssd1332\ui_ssd13\list\sdrv_rectfill.lst#
# Object file = d:\case_i_d90f\drv\ui_ssd1332\ui_ssd13\obj\sdrv_rectfill.r01#
# ASM file = d:\case_i_d90f\drv\ui_ssd1332\ui_ssd13\list\sdrv_rectfill.s01#
# Command line = -v0 -ml -uu #
# -OD:\case_i_d90f\drv\Ui_SSD1332\UI_SSD13\Obj\ -e #
# -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG #
# -LD:\case_i_d90f\drv\Ui_SSD1332\UI_SSD13\List\ -q #
# -t8 -AD:\case_i_d90f\drv\Ui_SSD1332\UI_SSD13\List\ #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# -Id:\case_i_d90f\drv\Ui_SSD1332\inc\ #
# D:\CASE_I_D90F\DRV\UI_SSD1332\SDRV\Sdrv_RectFill.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sdrv_rectfill(16)
\ 0000 RSEG BAC_DW1(0)
\ 0000 EXTERN CheckDisplaySpace
\ 0000 EXTERN DisplayBuffer
\ 0000 EXTERN Hdrv_BuffDataTrans
\ 0000 EXTERN Hdrv_SetWindow
\ 0000 EXTERN RectBuffFillColor
\ 0000 PUBLIC Sdrv_FillRect
\ 0000 EXTERN region
\ 0000 EXTERN ?CLZ80L_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 0000 RSEG BAC_DW1
\ 0000 Sdrv_FillRect:
1 /*
2 ********************************************************************************
3 * ACTOS
4 * ui dirver show picture
5 *
6 * (c) Copyright 2002-2003, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * File : FillRect.c
10 * By : Rcmai
11 * Version: 1> v1.00 first version 10/17/2003 10:46PM
12 ********************************************************************************
13 */
14 #include "display.h"
15 #include "Drv_S6B33B0A.h"
16
17 #pragma memory=constseg(BAS_DW1)
18 #pragma memory=default
19
20 #pragma memory=dataseg(BAD_DW1)
21 //SD_RW sdrw;
22 //extern unsigned char BufPage;
23 #pragma memory=default
24
25 #pragma codeseg(BAC_DW1)
26
27 ////*******************************************************************************/
28 ///* 把指定区域填充成画笔颜色
29 //** FUNCTION: Sdrv_FillRect
30 //**
31 //** Description:
32 //**
33 //** input
34 //** region_t * Fillregion:要填充的区域
35 //**
36 //** output
37 //** none
38 //********************************************************************************/
39
40 void Sdrv_FillRect (region_t * Fillregion)
41 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
\ 0003 D5 PUSH DE
42 unsigned int pixelcnt;
43 region = *Fillregion;
\ 0004 110000 LD DE,region
\ 0007 210000 LD HL,0
\ 000A 39 ADD HL,SP
\ 000B 46 LD B,(HL)
\ 000C 23 INC HL
\ 000D 66 LD H,(HL)
\ 000E 68 LD L,B
\ 000F 010400 LD BC,4
\ 0012 EDB0 LDIR
44
45 if ( (region.x > Displaylength-1)
46 || (region.y > Displayhight-1) )
\ 0014 3A0000 LD A,(region)
\ 0017 47 LD B,A
\ 0018 3E7F LD A,127
\ 001A B8 CP B
\ 001B 385C JR C,?0005
\ 001D 3A0100 LD A,(region+1)
\ 0020 47 LD B,A
\ 0021 3E9F LD A,159
\ 0023 B8 CP B
\ 0024 3853 JR C,?0005
\ 0026 ?0002:
\ 0026 ?0003:
\ 0026 ?0000:
47 {
48 return; //坐标超出,退出
49 }
\ 0026 ?0001:
50
51 if (CheckDisplaySpace(PicDisMode)) //检测显示区域是否超出
\ 0026 1E03 LD E,3
\ 0028 CD0000 CALL CheckDisplaySpace
\ 002B B7 OR A
\ 002C 284B JR Z,?0005
\ 002E ?0004:
52 {
53 Hdrv_SetWindow(®ion);//设定区域 //设定 要填入数据的 起始地址 和 结束地址
\ 002E 110000 LD DE,region
\ 0031 CD0000 CALL Hdrv_SetWindow
54 pixelcnt = region.width * region.height;
\ 0034 ED4B0300 LD BC,(region+3)
\ 0038 0600 LD B,0
\ 003A ED5B0200 LD DE,(region+2)
\ 003E 50 LD D,B
\ 003F CD0000 CALL ?S_MUL_L02
\ 0042 D5 PUSH DE
\ 0043 DDE1 POP IX
\ 0045 ?0007:
55 while(pixelcnt > DisplayBufLen/2)
\ 0045 DDE5 PUSH IX
\ 0047 C1 POP BC
\ 0048 210001 LD HL,256
\ 004B A7 AND A
\ 004C ED42 SBC HL,BC
\ 004E 3017 JR NC,?0006
\ 0050 ?0008:
56 {
57 //找出整个PAGE的送出
58 RectBuffFillColor(DisplayBufLen/2);
\ 0050 110001 LD DE,256
\ 0053 CD0000 CALL RectBuffFillColor
59 Hdrv_BuffDataTrans(DisplayBuffer, DisplayBufLen);//把暂时显存区DisplayBuffer里面的数据送到LCM
\ 0056 010002 LD BC,512
\ 0059 110000 LD DE,DisplayBuffer
\ 005C CD0000 CALL Hdrv_BuffDataTrans
60 //这里只管 填入数据,不管地方,因为在这之前 Hdrv_SetWindow 已经设定好了起始位置地点
61
62 pixelcnt = pixelcnt - DisplayBufLen/2;
\ 005F 3EFF LD A,255
\ 0061 DD84 ADD A,IXH
\ 0063 DD67 LD IXH,A
\ 0065 18DE JR ?0007
\ 0067 ?0006:
63 }
64 //把剩余的数据送出
65 RectBuffFillColor(pixelcnt);
\ 0067 DDE5 PUSH IX
\ 0069 D1 POP DE
\ 006A CD0000 CALL RectBuffFillColor
66 Hdrv_BuffDataTrans(DisplayBuffer, pixelcnt*2);//把暂时显存区的数据送到LCM
\ 006D DDE5 PUSH IX
\ 006F E1 POP HL
\ 0070 29 ADD HL,HL
\ 0071 4D LD C,L
\ 0072 44 LD B,H
\ 0073 110000 LD DE,DisplayBuffer
\ 0076 CD0000 CALL Hdrv_BuffDataTrans
\ 0079 ?0005:
67 }
68 return;
69 }
\ 0079 ?0009:
\ 0079 E1 POP HL
\ 007A DDE1 POP IX
\ 007C C1 POP BC
\ 007D C9 RET
70
\ 007E END
Errors: none
Warnings: none
Code size: 126
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -