📄 sdrv_invert.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/May/107 10:54:39 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = large #
# Source file = d:\case_i_d913f\drv\ui_ssd1332\sdrv\sdrv_invert.c #
# List file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_invert.lst#
# Object file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\obj\sdrv_invert.r01#
# ASM file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_invert.s01#
# Command line = -v0 -ml -uu #
# -OD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\Obj\ #
# -e -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG #
# -LD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\List\ #
# -q -t8 #
# -AD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\List\ #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# -Id:\case_i_d913f\drv\ui_ssd1332\inc\ #
# d:\case_i_d913f\DRV\UI_SSD1332\SDRV\Sdrv_Invert.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sdrv_invert(16)
\ 0000 RSEG BBC_HFUN(0)
\ 0000 EXTERN DisplayBuffer
\ 0000 EXTERN Hdrv_GetBuffData
\ 0000 EXTERN Hdrv_InvBuffDataTrans
\ 0000 EXTERN Hdrv_SetWindow
\ 0000 PUBLIC Sdrv_Invert
\ 0000 EXTERN region_win
\ 0000 EXTERN ?CLZ80L_4_04_L00
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 RSEG BBC_HFUN
\ 0000 Sdrv_Invert:
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 : Sdrv_Invert.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(BBS_HFUN)
18 #pragma memory=default
19
20 #pragma memory=dataseg(BBD_HFUN)
21 //SD_RW sdrw;
22 //extern unsigned char BufPage;
23 #pragma memory=default
24
25 #pragma codeseg(BBC_HFUN)
26
27 ////*******************************************************************************/
28 ///* 把指定区域作反白显示
29 //** FUNCTION: Sdrv_Invert
30 //**
31 //** Description:
32 //**
33 //** input
34 //** region_t * D3region: 要反白区域的区域大小
35 //**
36 //** output
37 //** none
38 //********************************************************************************/
39
40 void Sdrv_Invert (region_t * Invregion)
41 {
\ 0000 C5 PUSH BC
\ 0001 FDE5 PUSH IY
\ 0003 DDE5 PUSH IX
\ 0005 DD210000 LD IX,0
\ 0009 DD39 ADD IX,SP
\ 000B D5 PUSH DE
\ 000C F5 PUSH AF
\ 000D F5 PUSH AF
\ 000E F5 PUSH AF
\ 000F F5 PUSH AF
42
43 int block_pixel;//每一小块象素的个数
44 BYTE block_line; //每一小块的行数
45 int i;
46
47 region_t tmpregion;//临时使用
48 BYTE line_cnt;//行数计数器
49
50 tmpregion = *Invregion;
\ 0010 210000 LD HL,0
\ 0013 39 ADD HL,SP
\ 0014 EB EX DE,HL
\ 0015 010400 LD BC,4
\ 0018 EDB0 LDIR
51
52 if ((tmpregion.x + tmpregion.width) > (region_win.x+region_win.width)
53 || (tmpregion.y + tmpregion.height) > (region_win.y + region_win.height) )
\ 001A DD6EF8 LD L,(IX-8)
\ 001D DD5EF6 LD E,(IX-10)
\ 0020 50 LD D,B
\ 0021 60 LD H,B
\ 0022 19 ADD HL,DE
\ 0023 4D LD C,L
\ 0024 44 LD B,H
\ 0025 ED5B0200 LD DE,(region_win+2)
\ 0029 1600 LD D,0
\ 002B 2A0000 LD HL,(region_win)
\ 002E 62 LD H,D
\ 002F 19 ADD HL,DE
\ 0030 F680 OR 128
\ 0032 ED42 SBC HL,BC
\ 0034 E23800 JP PO,?0008
\ 0037 AC XOR H
\ 0038 ?0008:
\ 0038 FA0901 JP M,?0007
\ 003B DD6EF9 LD L,(IX-7)
\ 003E 62 LD H,D
\ 003F DD5EF7 LD E,(IX-9)
\ 0042 19 ADD HL,DE
\ 0043 4D LD C,L
\ 0044 44 LD B,H
\ 0045 ED5B0300 LD DE,(region_win+3)
\ 0049 1600 LD D,0
\ 004B 2A0100 LD HL,(region_win+1)
\ 004E 62 LD H,D
\ 004F 19 ADD HL,DE
\ 0050 F680 OR 128
\ 0052 ED42 SBC HL,BC
\ 0054 E25800 JP PO,?0009
\ 0057 AC XOR H
\ 0058 ?0009:
\ 0058 FA0901 JP M,?0007
\ 005B ?0002:
\ 005B ?0003:
\ 005B ?0000:
54 {
55 return;//超限返回
56 }
\ 005B ?0001:
57
58 //把一个大的矩形分成N个小的矩形块,每个小矩形数据应能用一个page buf 传送完,
59 block_line = DisplayBufLen/(2*(tmpregion.width));
\ 005B DD6EF8 LD L,(IX-8)
\ 005E 62 LD H,D
\ 005F 29 ADD HL,HL
\ 0060 4D LD C,L
\ 0061 44 LD B,H
\ 0062 110002 LD DE,512
\ 0065 CD0000 CALL ?SS_DIV_L02
\ 0068 DD73FD LD (IX-3),E
60 block_pixel = block_line * (tmpregion.width);
\ 006B DD4EF8 LD C,(IX-8)
\ 006E 0600 LD B,0
\ 0070 50 LD D,B
\ 0071 CD0000 CALL ?S_MUL_L02
\ 0074 D5 PUSH DE
\ 0075 FDE1 POP IY
61
62 line_cnt = tmpregion.height;//保存高度值
\ 0077 DD46F9 LD B,(IX-7)
\ 007A DD70FC LD (IX-4),B
63 tmpregion.height = block_line;
\ 007D DD46FD LD B,(IX-3)
\ 0080 DD70F9 LD (IX-7),B
\ 0083 ?0005:
64
65 while (line_cnt > block_line)
\ 0083 DD7EFD LD A,(IX-3)
\ 0086 DDBEFC CP (IX-4)
\ 0089 303B JR NC,?0004
\ 008B ?0006:
66 {
67 //把数据读出
68 Hdrv_SetWindow(&tmpregion);
\ 008B 210000 LD HL,0
\ 008E 39 ADD HL,SP
\ 008F EB EX DE,HL
\ 0090 CD0000 CALL Hdrv_SetWindow
69 Hdrv_GetBuffData(DisplayBuffer, block_pixel, NORTransMode_def);
\ 0093 210000 LD HL,0
\ 0096 E5 PUSH HL
\ 0097 FDE5 PUSH IY
\ 0099 C1 POP BC
\ 009A 110000 LD DE,DisplayBuffer
\ 009D CD0000 CALL Hdrv_GetBuffData
\ 00A0 F1 POP AF
70 Hdrv_SetWindow(&tmpregion);
\ 00A1 210000 LD HL,0
\ 00A4 39 ADD HL,SP
\ 00A5 EB EX DE,HL
\ 00A6 CD0000 CALL Hdrv_SetWindow
71 Hdrv_InvBuffDataTrans(DisplayBuffer,block_pixel);
\ 00A9 FDE5 PUSH IY
\ 00AB C1 POP BC
\ 00AC 110000 LD DE,DisplayBuffer
\ 00AF CD0000 CALL Hdrv_InvBuffDataTrans
72 line_cnt -= block_line;
\ 00B2 210600 LD HL,6
\ 00B5 39 ADD HL,SP
\ 00B6 7E LD A,(HL)
\ 00B7 DD96FD SUB (IX-3)
\ 00BA 77 LD (HL),A
73 tmpregion.y += block_line;
\ 00BB DD7EF7 LD A,(IX-9)
\ 00BE DD86FD ADD A,(IX-3)
\ 00C1 DD77F7 LD (IX-9),A
\ 00C4 18BD JR ?0005
\ 00C6 ?0004:
74 }
75
76 //反相余下的
77 tmpregion.height = line_cnt;
\ 00C6 DD46FC LD B,(IX-4)
\ 00C9 DD70F9 LD (IX-7),B
78 i = line_cnt * tmpregion.width;
\ 00CC DD4EF8 LD C,(IX-8)
\ 00CF 0600 LD B,0
\ 00D1 50 LD D,B
\ 00D2 DD5EFC LD E,(IX-4)
\ 00D5 CD0000 CALL ?S_MUL_L02
\ 00D8 DD73FA LD (IX-6),E
\ 00DB DD72FB LD (IX-5),D
79 Hdrv_SetWindow(&tmpregion);
\ 00DE 68 LD L,B
\ 00DF 60 LD H,B
\ 00E0 39 ADD HL,SP
\ 00E1 EB EX DE,HL
\ 00E2 CD0000 CALL Hdrv_SetWindow
80 Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);
\ 00E5 68 LD L,B
\ 00E6 60 LD H,B
\ 00E7 E5 PUSH HL
\ 00E8 DD4EFA LD C,(IX-6)
\ 00EB DD46FB LD B,(IX-5)
\ 00EE 110000 LD DE,DisplayBuffer
\ 00F1 CD0000 CALL Hdrv_GetBuffData
\ 00F4 F1 POP AF
81 Hdrv_SetWindow(&tmpregion);
\ 00F5 210000 LD HL,0
\ 00F8 39 ADD HL,SP
\ 00F9 EB EX DE,HL
\ 00FA CD0000 CALL Hdrv_SetWindow
82 Hdrv_InvBuffDataTrans(DisplayBuffer, i);
\ 00FD DD4EFA LD C,(IX-6)
\ 0100 DD46FB LD B,(IX-5)
\ 0103 110000 LD DE,DisplayBuffer
\ 0106 CD0000 CALL Hdrv_InvBuffDataTrans
83 }
\ 0109 ?0007:
\ 0109 DDF9 LD SP,IX
\ 010B DDE1 POP IX
\ 010D FDE1 POP IY
\ 010F C1 POP BC
\ 0110 C9 RET
\ 0111 END
Errors: none
Warnings: none
Code size: 273
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -