📄 sdrv_regioncopy.lst
字号:
\ 00F1 3874 JR C,?0005
\ 00F3 ?0004:
\ 00F3 ?0007:
76 {
77 //源在目标的下面时,可从上面开始读数据(这样不会覆盖)
78 while (line_cnt > block_line)
\ 00F3 DD7EF9 LD A,(IX-7)
\ 00F6 DDBEF8 CP (IX-8)
\ 00F9 3037 JR NC,?0006
\ 00FB ?0008:
79 {
80 //读出对应区域的图片内容放在暂存中
81 Hdrv_SetWindow(&sregionram);
\ 00FB 210000 LD HL,0
\ 00FE 39 ADD HL,SP
\ 00FF EB EX DE,HL
\ 0100 CD0000 CALL Hdrv_SetWindow
82 Hdrv_GetBuffData (DisplayBuffer, block_pixel, NORTransMode_def);
\ 0103 210000 LD HL,0
\ 0106 E5 PUSH HL
\ 0107 FDE5 PUSH IY
\ 0109 C1 POP BC
\ 010A 110000 LD DE,DisplayBuffer
\ 010D CD0000 CALL Hdrv_GetBuffData
\ 0110 F1 POP AF
83
84 //把暂时显存区的数据送到LCM
85 Hdrv_SetWindow(&tregionram);
\ 0111 210400 LD HL,4
\ 0114 39 ADD HL,SP
\ 0115 CD1A02 CALL ?0029
86 Hdrv_BuffDataTrans(DisplayBuffer, block_pixel*2);
87
88 line_cnt -= block_line;
\ 0118 39 ADD HL,SP
\ 0119 7E LD A,(HL)
\ 011A DD96F9 SUB (IX-7)
\ 011D 77 LD (HL),A
89 sregionram.y += block_line; //坐标增加
\ 011E DD7EEF LD A,(IX-17)
\ 0121 DD86F9 ADD A,(IX-7)
\ 0124 DD77EF LD (IX-17),A
90 tregionram.y += block_line;
\ 0127 DD7EF3 LD A,(IX-13)
\ 012A DD86F9 ADD A,(IX-7)
\ 012D DD77F3 LD (IX-13),A
\ 0130 18C1 JR ?0004
\ 0132 ?0006:
91 }
92
93 i = sregionram.width * line_cnt;//余下的象素个数
\ 0132 CDFE01 CALL ?0028
94
95 sregionram.height = line_cnt;
96 tregionram.height = line_cnt;
97
98 //读出余下不足一个块的区域内容
99 Hdrv_SetWindow(&sregionram);
\ 0135 C3C701 JP ?0018
\ 0138 39 ADD HL,SP
\ 0139 C3CB01 JP ?0019
\ 013C CD0000 CALL Hdrv_SetWindow
100 Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);
\ 013F C3CF01 JP ?0020
\ 0142 E5 PUSH HL
\ 0143 C3D301 JP ?0021
\ 0146 110000 LD DE,DisplayBuffer
\ 0149 C3DC01 JP ?0022
\ 014C F1 POP AF
101
102 //把暂时显存区的数据送到LCM
103 Hdrv_SetWindow(&tregionram);
\ 014D C3E001 JP ?0023
\ 0150 39 ADD HL,SP
\ 0151 C3E401 JP ?0024
\ 0154 CD0000 CALL Hdrv_SetWindow
104 Hdrv_BuffDataTrans(DisplayBuffer, i*2);
\ 0157 C3E801 JP ?0025
\ 015A 29 ADD HL,HL
\ 015B C3EF01 JP ?0026
\ 015E 110000 LD DE,DisplayBuffer
\ 0161 C3F401 JP ?0027
105 }
106 else
\ 0164 C3F701 JP ?0009
\ 0167 ?0005:
107 {
108 sregiony_tmp = sregionram.y;
\ 0167 DD46EF LD B,(IX-17)
\ 016A DD70FB LD (IX-5),B
109 tregiony_tmp = tregionram.y;
\ 016D DD46F3 LD B,(IX-13)
\ 0170 DD70FA LD (IX-6),B
\ 0173 ?0011:
110
111
112 //源在目标的上面时,要从下面开始读数据(这样不会覆盖)
113 while (line_cnt > block_line)
\ 0173 DD7EF9 LD A,(IX-7)
\ 0176 DDBEF8 CP (IX-8)
\ 0179 303D JR NC,?0010
\ 017B ?0012:
114 {
115 //读出对应区域的图片内容放在暂存中
116 sregionram.y = sregiony_tmp + (line_cnt - block_line);//从下面开始读
\ 017B DD7EF8 LD A,(IX-8)
\ 017E DD96F9 SUB (IX-7)
\ 0181 DD86FB ADD A,(IX-5)
\ 0184 DD77EF LD (IX-17),A
117 tregionram.y = tregiony_tmp + (line_cnt - block_line);
\ 0187 DD7EF8 LD A,(IX-8)
\ 018A DD96F9 SUB (IX-7)
\ 018D DD86FA ADD A,(IX-6)
\ 0190 DD77F3 LD (IX-13),A
118 Hdrv_SetWindow(&sregionram);
\ 0193 210000 LD HL,0
\ 0196 39 ADD HL,SP
\ 0197 EB EX DE,HL
\ 0198 CD0000 CALL Hdrv_SetWindow
119 Hdrv_GetBuffData (DisplayBuffer, block_pixel, NORTransMode_def);
\ 019B 210000 LD HL,0
\ 019E E5 PUSH HL
\ 019F FDE5 PUSH IY
\ 01A1 C1 POP BC
\ 01A2 110000 LD DE,DisplayBuffer
\ 01A5 CD0000 CALL Hdrv_GetBuffData
\ 01A8 F1 POP AF
120
121 //把暂时显存区的数据送到LCM
122 Hdrv_SetWindow(&tregionram);
\ 01A9 210400 LD HL,4
\ 01AC 39 ADD HL,SP
\ 01AD CD1A02 CALL ?0029
123 Hdrv_BuffDataTrans(DisplayBuffer, block_pixel*2);
124
125 line_cnt -= block_line;
\ 01B0 39 ADD HL,SP
\ 01B1 7E LD A,(HL)
\ 01B2 DD96F9 SUB (IX-7)
\ 01B5 77 LD (HL),A
\ 01B6 18BB JR ?0011
\ 01B8 ?0010:
126 }
127
128 i = sregionram.width * line_cnt;//余下的象素个数
\ 01B8 CDFE01 CALL ?0028
129
130 sregionram.height = line_cnt;
131 tregionram.height = line_cnt;
132 sregionram.y = sregiony_tmp;
\ 01BB DD46FB LD B,(IX-5)
\ 01BE DD70EF LD (IX-17),B
133 tregionram.y = tregiony_tmp;
\ 01C1 DD46FA LD B,(IX-6)
\ 01C4 DD70F3 LD (IX-13),B
134
135 //读出余下不足一个块的区域内容
136 Hdrv_SetWindow(&sregionram);
\ 01C7 ?0018:
\ 01C7 210000 LD HL,0
\ 01CA 39 ADD HL,SP
\ 01CB ?0019:
\ 01CB EB EX DE,HL
\ 01CC CD0000 CALL Hdrv_SetWindow
137 Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);
\ 01CF ?0020:
\ 01CF 210000 LD HL,0
\ 01D2 E5 PUSH HL
\ 01D3 ?0021:
\ 01D3 DD4EF6 LD C,(IX-10)
\ 01D6 DD46F7 LD B,(IX-9)
\ 01D9 110000 LD DE,DisplayBuffer
\ 01DC ?0022:
\ 01DC CD0000 CALL Hdrv_GetBuffData
\ 01DF F1 POP AF
138
139 //把暂时显存区的数据送到LCM
140 Hdrv_SetWindow(&tregionram);
\ 01E0 ?0023:
\ 01E0 210400 LD HL,4
\ 01E3 39 ADD HL,SP
\ 01E4 ?0024:
\ 01E4 EB EX DE,HL
\ 01E5 CD0000 CALL Hdrv_SetWindow
141 Hdrv_BuffDataTrans(DisplayBuffer, i*2);
\ 01E8 ?0025:
\ 01E8 DD6EF6 LD L,(IX-10)
\ 01EB DD66F7 LD H,(IX-9)
\ 01EE 29 ADD HL,HL
\ 01EF ?0026:
\ 01EF 4D LD C,L
\ 01F0 44 LD B,H
\ 01F1 110000 LD DE,DisplayBuffer
\ 01F4 ?0027:
\ 01F4 CD0000 CALL Hdrv_BuffDataTrans
\ 01F7 ?0009:
142 }
143
144
145 }
\ 01F7 ?0013:
\ 01F7 DDF9 LD SP,IX
\ 01F9 DDE1 POP IX
\ 01FB FDE1 POP IY
\ 01FD C9 RET
\ 01FE ?0028:
\ 01FE DD4EF0 LD C,(IX-16)
\ 0201 0600 LD B,0
\ 0203 50 LD D,B
\ 0204 DD5EF8 LD E,(IX-8)
\ 0207 CD0000 CALL ?S_MUL_L02
\ 020A DD73F6 LD (IX-10),E
\ 020D DD72F7 LD (IX-9),D
\ 0210 DD46F8 LD B,(IX-8)
\ 0213 DD70F1 LD (IX-15),B
\ 0216 DD70F5 LD (IX-11),B
\ 0219 C9 RET
\ 021A ?0029:
\ 021A EB EX DE,HL
\ 021B CD0000 CALL Hdrv_SetWindow
\ 021E FDE5 PUSH IY
\ 0220 E1 POP HL
\ 0221 29 ADD HL,HL
\ 0222 4D LD C,L
\ 0223 44 LD B,H
\ 0224 110000 LD DE,DisplayBuffer
\ 0227 CD0000 CALL Hdrv_BuffDataTrans
\ 022A 210A00 LD HL,10
\ 022D C9 RET
146
\ 022E END
Errors: none
Warnings: none
Code size: 558
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -