sdrv_charoutrect_latin1.lst
来自「一种彩屏驱动以及画点,填充图片和填充数据的一些程序」· LST 代码 · 共 440 行 · 第 1/2 页
LST
440 行
103 tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);
\ 009C DD4E06 LD C,(IX+6)
\ 009F 0600 LD B,0
\ 00A1 210800 LD HL,8
\ 00A4 A7 AND A
\ 00A5 ED42 SBC HL,BC
\ 00A7 4D LD C,L
\ 00A8 44 LD B,H
\ 00A9 FD6E02 LD L,(IY+2)
\ 00AC 2600 LD H,0
\ 00AE F680 OR 128
\ 00B0 ED42 SBC HL,BC
\ 00B2 E2B600 JP PO,?0024
\ 00B5 AC XOR H
\ 00B6 ?0024:
\ 00B6 F2BE00 JP P,?0013
\ 00B9 FD7E02 LD A,(IY+2)
\ 00BC 1805 JR ?0014
\ 00BE ?0013:
\ 00BE 3E08 LD A,8
\ 00C0 DD9606 SUB (IX+6)
\ 00C3 ?0014:
\ 00C3 DD77FC LD (IX-4),A
104
105 //把黑白字模转为彩色字模放在Buff中(上区)
106 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
107 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
\ 00C6 010800 LD BC,CharPointBuffer+8
\ 00C9 110800 LD DE,8
\ 00CC CD8801 CALL ?0038
108 //把暂时显存区的数据送到LCM
109 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
110 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
111
112 region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
113 Hdrv_SetWindow(®ion);
\ 00CF CD7F01 CALL ?0037
114 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
115 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 00D2 010000 LD BC,CharPointBuffer
\ 00D5 110800 LD DE,8
\ 00D8 185B JR ?0033
116 //把暂时显存区的数据送到LCM
117 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
118 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
119 //坐标移到下一个字的左上角
120 //region.x += ASCII_LARGE_WIDTH_DEF;
121 //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
122 break;
\ 00DA ?0015:
\ 00DA FE02 CP 2
\ 00DC 2076 JR NZ,?0002
123
124 case CharMode1616://16*16点阵模式(汉字)
125 //设置字模输出的大小(上半个汉字)
126 if (colcnt >= 16)
\ 00DE DD7E06 LD A,(IX+6)
\ 00E1 FE10 CP 16
\ 00E3 3809 JR C,?0017
\ 00E5 ?0016:
127 {//计数值超出
128 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 00E5 ?0032:
\ 00E5 110000 LD DE,0
\ 00E8 CD0000 CALL Hdrv_SetDrawMode
129 return FALSE;
\ 00EB ?0031:
\ 00EB AF XOR A
130 }
\ 00EC 186E JR ?0022
\ 00EE ?0017:
131 //确定输出区域
132 region.x = CRregion->x;
133 region.y = CRregion->y;
134 region.width = CRregion->width;
135 region.height = CHINESE_HEIGHT_DEF/2;
136 region.y += CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
137 Hdrv_SetWindow(®ion);
\ 00EE CD6301 CALL ?0036
138
139 //取最小的值.
140 tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt);
\ 00F1 DD4E06 LD C,(IX+6)
\ 00F4 0600 LD B,0
\ 00F6 211000 LD HL,16
\ 00F9 A7 AND A
\ 00FA ED42 SBC HL,BC
\ 00FC 4D LD C,L
\ 00FD 44 LD B,H
\ 00FE FD6E02 LD L,(IY+2)
\ 0101 2600 LD H,0
\ 0103 F680 OR 128
\ 0105 ED42 SBC HL,BC
\ 0107 E20B01 JP PO,?0025
\ 010A AC XOR H
\ 010B ?0025:
\ 010B F21301 JP P,?0019
\ 010E FD7E02 LD A,(IY+2)
\ 0111 1805 JR ?0020
\ 0113 ?0019:
\ 0113 3E10 LD A,16
\ 0115 DD9606 SUB (IX+6)
\ 0118 ?0020:
\ 0118 DD77FC LD (IX-4),A
141
142 //把黑白字模转为彩色字模放在Buff中
143 //putCharChFlag=4;
144 BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
\ 011B 011000 LD BC,CharPointBuffer+16
\ 011E 111000 LD DE,16
\ 0121 CD8801 CALL ?0038
145 //putCharChFlag=8;
146 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
147
148 //把暂时显存区的数据送到LCM
149 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2,
150 (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);
151 region.y -= CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
\ 0124 320100 LD (region+1),A
152 region.height = CHINESE_HEIGHT_DEF/2;
\ 0127 3E08 LD A,8
\ 0129 320300 LD (region+3),A
153 Hdrv_SetWindow(®ion);
\ 012C CD8201 CALL ?0035
154 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
155 BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
\ 012F 010000 LD BC,CharPointBuffer
\ 0132 111000 LD DE,16
\ 0135 ?0033:
\ 0135 CD0000 CALL BlackCharToColor
156 //把暂时显存区的数据送到LCM
157 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2,
158 (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);
\ 0138 DD6EFC LD L,(IX-4)
\ 013B 2600 LD H,0
\ 013D 29 ADD HL,HL
\ 013E 29 ADD HL,HL
\ 013F 29 ADD HL,HL
\ 0140 29 ADD HL,HL
\ 0141 4D LD C,L
\ 0142 44 LD B,H
\ 0143 DD6E06 LD L,(IX+6)
\ 0146 2600 LD H,0
\ 0148 29 ADD HL,HL
\ 0149 29 ADD HL,HL
\ 014A 29 ADD HL,HL
\ 014B 29 ADD HL,HL
\ 014C 110000 LD DE,DisplayBuffer
\ 014F 19 ADD HL,DE
\ 0150 EB EX DE,HL
\ 0151 CD0000 CALL Hdrv_BuffDataTrans
159
160 break;
\ 0154 ?0021:
161
162 default:
163 break;
\ 0154 ?0002:
164 }
165 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 0154 110000 LD DE,0
\ 0157 CD0000 CALL Hdrv_SetDrawMode
166 return TRUE;
\ 015A 3E01 LD A,1
167
168
169 }
\ 015C ?0022:
\ 015C DDF9 LD SP,IX
\ 015E DDE1 POP IX
\ 0160 FDE1 POP IY
\ 0162 C9 RET
\ 0163 ?0036:
\ 0163 FD7E00 LD A,(IY+0)
\ 0166 320000 LD (region),A
\ 0169 FD7E01 LD A,(IY+1)
\ 016C 320100 LD (region+1),A
\ 016F FD7E02 LD A,(IY+2)
\ 0172 320200 LD (region+2),A
\ 0175 3E08 LD A,8
\ 0177 320300 LD (region+3),A
\ 017A 3A0100 LD A,(region+1)
\ 017D C608 ADD A,8
\ 017F ?0037:
\ 017F 320100 LD (region+1),A
\ 0182 ?0035:
\ 0182 110000 LD DE,region
\ 0185 C30000 JP Hdrv_SetWindow
\ 0188 ?0038:
\ 0188 CD0000 CALL BlackCharToColor
\ 018B DD6EFC LD L,(IX-4)
\ 018E 2600 LD H,0
\ 0190 29 ADD HL,HL
\ 0191 29 ADD HL,HL
\ 0192 29 ADD HL,HL
\ 0193 29 ADD HL,HL
\ 0194 4D LD C,L
\ 0195 44 LD B,H
\ 0196 DD6E06 LD L,(IX+6)
\ 0199 2600 LD H,0
\ 019B 29 ADD HL,HL
\ 019C 29 ADD HL,HL
\ 019D 29 ADD HL,HL
\ 019E 29 ADD HL,HL
\ 019F 110000 LD DE,DisplayBuffer
\ 01A2 19 ADD HL,DE
\ 01A3 EB EX DE,HL
\ 01A4 CD0000 CALL Hdrv_BuffDataTrans
\ 01A7 3A0100 LD A,(region+1)
\ 01AA C6F8 ADD A,248
\ 01AC C9 RET
\ 01AD END
Errors: none
Warnings: none
Code size: 429
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?