📄 sdrv_charoutrect.lst
字号:
\ 00A6 0600 LD B,0
\ 00A8 210800 LD HL,8
\ 00AB A7 AND A
\ 00AC ED42 SBC HL,BC
\ 00AE 4D LD C,L
\ 00AF 44 LD B,H
\ 00B0 FD6E02 LD L,(IY+2)
\ 00B3 2600 LD H,0
\ 00B5 F680 OR 128
\ 00B7 ED42 SBC HL,BC
\ 00B9 E2BD00 JP PO,?0024
\ 00BC AC XOR H
\ 00BD ?0024:
\ 00BD F2C500 JP P,?0013
\ 00C0 FD7E02 LD A,(IY+2)
\ 00C3 1805 JR ?0014
\ 00C5 ?0013:
\ 00C5 3E08 LD A,8
\ 00C7 DD9608 SUB (IX+8)
\ 00CA ?0014:
\ 00CA DD77FA LD (IX-6),A
106
107 //把黑白字模转为彩色字模放在Buff中(上区)
108 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
109 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
\ 00CD 010800 LD BC,CharPointBuffer+8
\ 00D0 110800 LD DE,8
\ 00D3 CDA501 CALL ?0038
110 //把暂时显存区的数据送到LCM
111 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
112 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
113
114 region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 00D6 3A0100 LD A,(region+1)
\ 00D9 C6F8 ADD A,248
115
116 Hdrv_SetWindow(®ion);
\ 00DB CD9C01 CALL ?0037
117
118 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
119 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 00DE 010000 LD BC,CharPointBuffer
\ 00E1 110800 LD DE,8
\ 00E4 C36E01 JP ?0033
120 //把暂时显存区的数据送到LCM
121 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
122 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
123 //坐标移到下一个字的左上角
124 //region.x += ASCII_LARGE_WIDTH_DEF;
125 //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
126 break;
\ 00E7 ?0015:
\ 00E7 FE02 CP 2
\ 00E9 C27101 JP NZ,?0002
127
128 case CharMode1616://16*16点阵模式(汉字)
129 //设置字模输出的大小(上半个汉字)
130 if (colcnt >= 16)
\ 00EC DD7E08 LD A,(IX+8)
\ 00EF FE10 CP 16
\ 00F1 3809 JR C,?0017
\ 00F3 ?0016:
131 {//计数值超出
132 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 00F3 ?0032:
\ 00F3 110000 LD DE,0
\ 00F6 CD0000 CALL Hdrv_SetDrawMode
133 return FALSE;
\ 00F9 ?0031:
\ 00F9 AF XOR A
134 }
\ 00FA 187D JR ?0022
\ 00FC ?0017:
135 //确定输出区域
136 region.x = CRregion->x;
137 region.y = CRregion->y;
138 region.width = CRregion->width;
139 region.height = CHINESE_HEIGHT_DEF1-8;
140 region.y += CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字)
141
142 Hdrv_SetWindow(®ion);
\ 00FC CD8001 CALL ?0036
143
144 //取最小的值.
145 tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt);
\ 00FF DD4E08 LD C,(IX+8)
\ 0102 0600 LD B,0
\ 0104 211000 LD HL,16
\ 0107 A7 AND A
\ 0108 ED42 SBC HL,BC
\ 010A 4D LD C,L
\ 010B 44 LD B,H
\ 010C FD6E02 LD L,(IY+2)
\ 010F 2600 LD H,0
\ 0111 F680 OR 128
\ 0113 ED42 SBC HL,BC
\ 0115 E21901 JP PO,?0025
\ 0118 AC XOR H
\ 0119 ?0025:
\ 0119 F22101 JP P,?0019
\ 011C FD7E02 LD A,(IY+2)
\ 011F 1805 JR ?0020
\ 0121 ?0019:
\ 0121 3E10 LD A,16
\ 0123 DD9608 SUB (IX+8)
\ 0126 ?0020:
\ 0126 DD77FA LD (IX-6),A
146
147 //把黑白字模转为彩色字模放在Buff中
148 putCharChFlag=8;
\ 0129 3E08 LD A,8
\ 012B 320000 LD (putCharChFlag),A
149 BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer + CHINESE_WIDTH_DEF1);//+8
\ 012E 011000 LD BC,CharPointBuffer+16
\ 0131 111000 LD DE,16
\ 0134 CD0000 CALL BlackCharToColor
150 putCharChFlag=8;
\ 0137 3E08 LD A,8
\ 0139 320000 LD (putCharChFlag),A
151 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
152
153 //把暂时显存区的数据送到LCM
154 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_WIDTH_DEF1-8)*2,
155 (CHINESE_WIDTH_DEF1-8)*tmpwidth*2);
\ 013C DD6EFA LD L,(IX-6)
\ 013F 2600 LD H,0
\ 0141 29 ADD HL,HL
\ 0142 29 ADD HL,HL
\ 0143 29 ADD HL,HL
\ 0144 29 ADD HL,HL
\ 0145 4D LD C,L
\ 0146 44 LD B,H
\ 0147 DD6E08 LD L,(IX+8)
\ 014A 2600 LD H,0
\ 014C 29 ADD HL,HL
\ 014D 29 ADD HL,HL
\ 014E 29 ADD HL,HL
\ 014F 29 ADD HL,HL
\ 0150 110000 LD DE,DisplayBuffer
\ 0153 19 ADD HL,DE
\ 0154 EB EX DE,HL
\ 0155 CD0000 CALL Hdrv_BuffDataTrans
156 region.y -= CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字)
\ 0158 3A0100 LD A,(region+1)
\ 015B C6F8 ADD A,248
\ 015D 320100 LD (region+1),A
157 region.height = CHINESE_HEIGHT_DEF1-8;
\ 0160 3E08 LD A,8
\ 0162 320300 LD (region+3),A
158
159 Hdrv_SetWindow(®ion);
\ 0165 CD9F01 CALL ?0035
160
161 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
162 BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer);
\ 0168 010000 LD BC,CharPointBuffer
\ 016B 111000 LD DE,16
\ 016E ?0033:
\ 016E CDA501 CALL ?0038
163 //把暂时显存区的数据送到LCM
164 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_WIDTH_DEF1-8)*2,
165 (CHINESE_WIDTH_DEF1-8)*tmpwidth*2);
166 break;
\ 0171 ?0021:
167
168 default:
169 break;
\ 0171 ?0002:
170 }
171 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 0171 110000 LD DE,0
\ 0174 CD0000 CALL Hdrv_SetDrawMode
172 return TRUE;
\ 0177 3E01 LD A,1
173 }
\ 0179 ?0022:
\ 0179 DDF9 LD SP,IX
\ 017B DDE1 POP IX
\ 017D FDE1 POP IY
\ 017F C9 RET
\ 0180 ?0036:
\ 0180 FD7E00 LD A,(IY+0)
\ 0183 320000 LD (region),A
\ 0186 FD7E01 LD A,(IY+1)
\ 0189 320100 LD (region+1),A
\ 018C FD7E02 LD A,(IY+2)
\ 018F 320200 LD (region+2),A
\ 0192 3E08 LD A,8
\ 0194 320300 LD (region+3),A
\ 0197 3A0100 LD A,(region+1)
\ 019A C608 ADD A,8
\ 019C ?0037:
\ 019C 320100 LD (region+1),A
\ 019F ?0035:
\ 019F 110000 LD DE,region
\ 01A2 C30000 JP Hdrv_SetWindow
\ 01A5 ?0038:
\ 01A5 CD0000 CALL BlackCharToColor
\ 01A8 DD6EFA LD L,(IX-6)
\ 01AB 2600 LD H,0
\ 01AD 29 ADD HL,HL
\ 01AE 29 ADD HL,HL
\ 01AF 29 ADD HL,HL
\ 01B0 29 ADD HL,HL
\ 01B1 4D LD C,L
\ 01B2 44 LD B,H
\ 01B3 DD6E08 LD L,(IX+8)
\ 01B6 2600 LD H,0
\ 01B8 29 ADD HL,HL
\ 01B9 29 ADD HL,HL
\ 01BA 29 ADD HL,HL
\ 01BB 29 ADD HL,HL
\ 01BC 110000 LD DE,DisplayBuffer
\ 01BF 19 ADD HL,DE
\ 01C0 EB EX DE,HL
\ 01C1 CD0000 CALL Hdrv_BuffDataTrans
\ 01C4 C9 RET
\ 01C5 END
Errors: none
Warnings: none
Code size: 453
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -