sdrv_charoutrect_thai.lst
来自「一种彩屏驱动以及画点,填充图片和填充数据的一些程序」· LST 代码 · 共 382 行 · 第 1/2 页
LST
382 行
83 //把黑白字模转为彩色字模放在Buff中
84 BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
\ 008D 010000 LD BC,CharPointBuffer
\ 0090 110600 LD DE,6
\ 0093 186E JR ?0019
85 //把暂时显存区的数据送到LCM
86 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*ASCII_SMALL_HEIGHT_DEF*2,
87 ASCII_SMALL_HEIGHT_DEF*tmpwidth*2);
88
89 //region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
90 break;
\ 0095 ?0009:
\ 0095 FE01 CP 1
\ 0097 206D JR NZ,?0002
91
92 case CharMode0816://08*16点阵模式(ascii大字体)
93 //设置字模输出的大小//上半个字
94 //region.width = ASCII_LARGE_WIDTH_DEF;
95 if (colcnt >= 8)
\ 0099 DD7E06 LD A,(IX+6)
\ 009C FE08 CP 8
\ 009E 3809 JR C,?0011
\ 00A0 ?0010:
96 {//计数值超出
97 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 00A0 ?0022:
\ 00A0 110000 LD DE,0
\ 00A3 CD0000 CALL Hdrv_SetDrawMode
98 return FALSE;
\ 00A6 ?0021:
\ 00A6 AF XOR A
99 }
\ 00A7 1865 JR ?0016
\ 00A9 ?0011:
100 //确定输出区域
101 //region.x = CRregion->x;
102 //region.y = CRregion->y;
103 //region.width = CRregion->width;
104 region.height = ASCII_LARGE_HEIGHT_DEF/2;
\ 00A9 3E08 LD A,8
\ 00AB 320300 LD (region+3),A
105 region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 00AE 3A0100 LD A,(region+1)
\ 00B1 C608 ADD A,8
\ 00B3 320100 LD (region+1),A
106 Hdrv_SetWindow(®ion);
\ 00B6 110000 LD DE,region
\ 00B9 CD0000 CALL Hdrv_SetWindow
107
108 //取最小的值.
109 tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);
\ 00BC DD4E06 LD C,(IX+6)
\ 00BF 0600 LD B,0
\ 00C1 210800 LD HL,8
\ 00C4 A7 AND A
\ 00C5 ED42 SBC HL,BC
\ 00C7 4D LD C,L
\ 00C8 44 LD B,H
\ 00C9 FD6E02 LD L,(IY+2)
\ 00CC 2600 LD H,0
\ 00CE F680 OR 128
\ 00D0 ED42 SBC HL,BC
\ 00D2 E2D600 JP PO,?0018
\ 00D5 AC XOR H
\ 00D6 ?0018:
\ 00D6 F2DE00 JP P,?0013
\ 00D9 FD7E02 LD A,(IY+2)
\ 00DC 1805 JR ?0014
\ 00DE ?0013:
\ 00DE 3E08 LD A,8
\ 00E0 DD9606 SUB (IX+6)
\ 00E3 ?0014:
\ 00E3 DD77FC LD (IX-4),A
110
111 //把黑白字模转为彩色字模放在Buff中(上区)
112 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
113 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
\ 00E6 010800 LD BC,CharPointBuffer+8
\ 00E9 110800 LD DE,8
\ 00EC CD1501 CALL ?0023
114 //把暂时显存区的数据送到LCM
115 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
116 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
117
118 region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 00EF 3A0100 LD A,(region+1)
\ 00F2 C6F8 ADD A,248
\ 00F4 320100 LD (region+1),A
119 Hdrv_SetWindow(®ion);
\ 00F7 110000 LD DE,region
\ 00FA CD0000 CALL Hdrv_SetWindow
120 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
121 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 00FD 010000 LD BC,CharPointBuffer
\ 0100 110800 LD DE,8
\ 0103 ?0019:
\ 0103 CD1501 CALL ?0023
122 //把暂时显存区的数据送到LCM
123 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
124 (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
125 //坐标移到下一个字的左上角
126 //region.x += ASCII_LARGE_WIDTH_DEF;
127 //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
128 break;
\ 0106 ?0015:
129 #if 0
130 case CharMode1616://16*16点阵模式(汉字)
131 //设置字模输出的大小(上半个汉字)
132 if (colcnt >= 16)
133 {//计数值超出
134 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
135 return FALSE;
136 }
137 //确定输出区域
138 region.x = CRregion->x;
139 region.y = CRregion->y;
140 region.width = CRregion->width;
141 region.height = CHINESE_HEIGHT_DEF/2;
142 region.y += CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
143 Hdrv_SetWindow(®ion);
144
145 //取最小的值.
146 tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt);
147
148 //把黑白字模转为彩色字模放在Buff中
149 //putCharChFlag=4;
150 BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
151 //putCharChFlag=8;
152 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
153
154 //把暂时显存区的数据送到LCM
155 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2,
156 (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);
157 region.y -= CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
158 region.height = CHINESE_HEIGHT_DEF/2;
159 Hdrv_SetWindow(®ion);
160 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
161 BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
162 //把暂时显存区的数据送到LCM
163 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2,
164 (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);
165
166 break;
167 #endif
168 default:
169 break;
\ 0106 ?0002:
170 }
171 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 0106 110000 LD DE,0
\ 0109 CD0000 CALL Hdrv_SetDrawMode
172 return TRUE;
\ 010C 3E01 LD A,1
173
174
175 }
\ 010E ?0016:
\ 010E DDF9 LD SP,IX
\ 0110 DDE1 POP IX
\ 0112 FDE1 POP IY
\ 0114 C9 RET
\ 0115 ?0023:
\ 0115 CD0000 CALL BlackCharToColor
\ 0118 DD6EFC LD L,(IX-4)
\ 011B 2600 LD H,0
\ 011D 29 ADD HL,HL
\ 011E 29 ADD HL,HL
\ 011F 29 ADD HL,HL
\ 0120 29 ADD HL,HL
\ 0121 4D LD C,L
\ 0122 44 LD B,H
\ 0123 DD6E06 LD L,(IX+6)
\ 0126 2600 LD H,0
\ 0128 29 ADD HL,HL
\ 0129 29 ADD HL,HL
\ 012A 29 ADD HL,HL
\ 012B 29 ADD HL,HL
\ 012C 110000 LD DE,DisplayBuffer
\ 012F 19 ADD HL,DE
\ 0130 EB EX DE,HL
\ 0131 CD0000 CALL Hdrv_BuffDataTrans
\ 0134 C9 RET
\ 0135 END
Errors: none
Warnings: none
Code size: 309
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?