📄 sdrv_charoutrect_thai.lst
字号:
\ 0097 FE00 CP 0
\ 0099 2057 JR NZ,?0018
\ 009B ?0012:
97 {
98 case CharMode0608://06*08点阵模式(ascii小字体)
99
100 if (colcnt >= 6)
\ 009B DD7E08 LD A,(IX+8)
\ 009E FE06 CP 6
\ 00A0 305B JR NC,?0032
\ 00A2 ?0013:
101 {//计数值超出
102 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
103 return FALSE;
104 }
\ 00A2 ?0014:
105 //确定输出区域
106 region.x = CRregion->x;
\ 00A2 FD7E00 LD A,(IY+0)
\ 00A5 320000 LD (region),A
107 region.y = CRregion->y;
\ 00A8 FD7E01 LD A,(IY+1)
\ 00AB 320100 LD (region+1),A
108 region.width = CRregion->width;
\ 00AE FD7E02 LD A,(IY+2)
\ 00B1 320200 LD (region+2),A
109 region.height = ASCII_SMALL_HEIGHT_DEF;
\ 00B4 3E08 LD A,8
\ 00B6 320300 LD (region+3),A
110
111 Hdrv_SetWindow(®ion);
\ 00B9 110000 LD DE,region
\ 00BC CD0000 CALL Hdrv_SetWindow
112
113 //取最小的值.
114 tmpwidth = (CRregion->width < (6-colcnt))? (CRregion->width):(6-colcnt);
\ 00BF DD4E08 LD C,(IX+8)
\ 00C2 0600 LD B,0
\ 00C4 210600 LD HL,6
\ 00C7 A7 AND A
\ 00C8 ED42 SBC HL,BC
\ 00CA 4D LD C,L
\ 00CB 44 LD B,H
\ 00CC FD6E02 LD L,(IY+2)
\ 00CF 2600 LD H,0
\ 00D1 F680 OR 128
\ 00D3 ED42 SBC HL,BC
\ 00D5 E2D900 JP PO,?0026
\ 00D8 AC XOR H
\ 00D9 ?0026:
\ 00D9 F2E100 JP P,?0016
\ 00DC FD7E02 LD A,(IY+2)
\ 00DF 1805 JR ?0017
\ 00E1 ?0016:
\ 00E1 3E06 LD A,6
\ 00E3 DD9608 SUB (IX+8)
\ 00E6 ?0017:
\ 00E6 DD77FA LD (IX-6),A
115
116 //把黑白字模转为彩色字模放在Buff中
117 BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
\ 00E9 010000 LD BC,CharPointBuffer
\ 00EC 110600 LD DE,6
\ 00EF C37201 JP ?0029
118 //把暂时显存区的数据送到LCM
119 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*ASCII_SMALL_HEIGHT_DEF*2,
120 ASCII_SMALL_HEIGHT_DEF*tmpwidth*2);
121
122 //region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
123 break;
\ 00F2 ?0018:
\ 00F2 FE01 CP 1
\ 00F4 207F JR NZ,?0011
124
125 case CharMode0816://08*16点阵模式(ascii大字体)
126 //设置字模输出的大小//上半个字
127 //region.width = ASCII_LARGE_WIDTH_DEF;
128 if (colcnt >= 8)
\ 00F6 DD7E08 LD A,(IX+8)
\ 00F9 FE08 CP 8
\ 00FB 3809 JR C,?0020
\ 00FD ?0019:
129 {//计数值超出
130 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 00FD ?0032:
\ 00FD 110000 LD DE,0
\ 0100 CD0000 CALL Hdrv_SetDrawMode
131 return FALSE;
\ 0103 ?0031:
\ 0103 AF XOR A
132 }
\ 0104 1877 JR ?0025
\ 0106 ?0020:
133 //确定输出区域
134 region.x = CRregion->x;
\ 0106 FD7E00 LD A,(IY+0)
\ 0109 320000 LD (region),A
135 region.y = CRregion->y;
\ 010C FD7E01 LD A,(IY+1)
\ 010F 320100 LD (region+1),A
136 region.width = CRregion->width;
\ 0112 FD7E02 LD A,(IY+2)
\ 0115 320200 LD (region+2),A
137 region.height = ASCII_LARGE_HEIGHT_DEF/2;
\ 0118 3E08 LD A,8
\ 011A 320300 LD (region+3),A
138 region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 011D 3A0100 LD A,(region+1)
\ 0120 C608 ADD A,8
\ 0122 320100 LD (region+1),A
139
140 Hdrv_SetWindow(®ion);
\ 0125 110000 LD DE,region
\ 0128 CD0000 CALL Hdrv_SetWindow
141
142 //取最小的值.
143 tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);
\ 012B DD4E08 LD C,(IX+8)
\ 012E 0600 LD B,0
\ 0130 210800 LD HL,8
\ 0133 A7 AND A
\ 0134 ED42 SBC HL,BC
\ 0136 4D LD C,L
\ 0137 44 LD B,H
\ 0138 FD6E02 LD L,(IY+2)
\ 013B 2600 LD H,0
\ 013D F680 OR 128
\ 013F ED42 SBC HL,BC
\ 0141 E24501 JP PO,?0027
\ 0144 AC XOR H
\ 0145 ?0027:
\ 0145 F24D01 JP P,?0022
\ 0148 FD7E02 LD A,(IY+2)
\ 014B 1805 JR ?0023
\ 014D ?0022:
\ 014D 3E08 LD A,8
\ 014F DD9608 SUB (IX+8)
\ 0152 ?0023:
\ 0152 DD77FA LD (IX-6),A
144
145 //把黑白字模转为彩色字模放在Buff中(上区)
146 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
147 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
\ 0155 010800 LD BC,CharPointBuffer+8
\ 0158 110800 LD DE,8
\ 015B CD8401 CALL ?0033
148 //把暂时显存区的数据送到LCM
149 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
150 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
151
152 region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 015E 3A0100 LD A,(region+1)
\ 0161 C6F8 ADD A,248
\ 0163 320100 LD (region+1),A
153
154 Hdrv_SetWindow(®ion);
\ 0166 110000 LD DE,region
\ 0169 CD0000 CALL Hdrv_SetWindow
155
156 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
157 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 016C 010000 LD BC,CharPointBuffer
\ 016F 110800 LD DE,8
\ 0172 ?0029:
\ 0172 CD8401 CALL ?0033
158 //把暂时显存区的数据送到LCM
159 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
160 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
161 //坐标移到下一个字的左上角
162 //region.x += ASCII_LARGE_WIDTH_DEF;
163 //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
164 break;
\ 0175 ?0024:
165
166 default:
167 break;
\ 0175 ?0011:
168 }
169
170 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 0175 110000 LD DE,0
\ 0178 CD0000 CALL Hdrv_SetDrawMode
171 return TRUE;
\ 017B 3E01 LD A,1
172 }
\ 017D ?0025:
\ 017D DDF9 LD SP,IX
\ 017F DDE1 POP IX
\ 0181 FDE1 POP IY
\ 0183 C9 RET
\ 0184 ?0033:
\ 0184 CD0000 CALL BlackCharToColor
\ 0187 DD6EFA LD L,(IX-6)
\ 018A 2600 LD H,0
\ 018C 29 ADD HL,HL
\ 018D 29 ADD HL,HL
\ 018E 29 ADD HL,HL
\ 018F 29 ADD HL,HL
\ 0190 4D LD C,L
\ 0191 44 LD B,H
\ 0192 DD6E08 LD L,(IX+8)
\ 0195 2600 LD H,0
\ 0197 29 ADD HL,HL
\ 0198 29 ADD HL,HL
\ 0199 29 ADD HL,HL
\ 019A 29 ADD HL,HL
\ 019B 110000 LD DE,DisplayBuffer
\ 019E 19 ADD HL,DE
\ 019F EB EX DE,HL
\ 01A0 CD0000 CALL Hdrv_BuffDataTrans
\ 01A3 C9 RET
\ 01A4 END
Errors: none
Warnings: none
Code size: 420
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -