sdrv_charoutrect_latin1.lst
来自「MP3 整个 SDK」· LST 代码 · 共 431 行 · 第 1/2 页
LST
431 行
\ 0089 4D LD C,L
\ 008A 44 LD B,H
\ 008B FD6E02 LD L,(IY+2)
\ 008E 2600 LD H,0
\ 0090 F680 OR 128
\ 0092 ED42 SBC HL,BC
\ 0094 E29800 JP PO,?0024
\ 0097 AC XOR H
\ 0098 ?0024:
\ 0098 F2A000 JP P,?0013
\ 009B FD7E02 LD A,(IY+2)
\ 009E 1805 JR ?0014
\ 00A0 ?0013:
\ 00A0 3E08 LD A,8
\ 00A2 DD9606 SUB (IX+6)
\ 00A5 ?0014:
\ 00A5 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);
\ 00A8 010800 LD BC,CharPointBuffer+8
\ 00AB 110800 LD DE,8
\ 00AE CD7601 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准备输出下区(下半个字)
\ 00B1 3A0100 LD A,(region+1)
\ 00B4 C608 ADD A,8
\ 00B6 320100 LD (region+1),A
113 Hdrv_SetWindow(®ion);
\ 00B9 CD7001 CALL ?0036
114 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
115 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 00BC 010000 LD BC,CharPointBuffer
\ 00BF 110800 LD DE,8
\ 00C2 C34701 JP ?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;
\ 00C5 ?0015:
\ 00C5 FE02 CP 2
\ 00C7 C24A01 JP NZ,?0002
123
124 case CharMode1616://16*16点阵模式(汉字)
125 //设置字模输出的大小(上半个汉字)
126 if (colcnt >= 16)
\ 00CA DD7E06 LD A,(IX+6)
\ 00CD FE10 CP 16
\ 00CF 3809 JR C,?0017
\ 00D1 ?0016:
127 {//计数值超出
128 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 00D1 ?0032:
\ 00D1 110000 LD DE,0
\ 00D4 CD0000 CALL Hdrv_SetDrawMode
129 return FALSE;
\ 00D7 ?0031:
\ 00D7 AF XOR A
130 }
\ 00D8 1878 JR ?0022
\ 00DA ?0017:
131 //确定输出区域
132 region.x = CRregion->x;
133 region.y = CRregion->y;
134 region.width = CRregion->width;
135 region.height = CHINESE_HEIGHT_DEF1-8;
136 Hdrv_SetWindow(®ion);
\ 00DA CD5901 CALL ?0035
137
138 //取最小的值.
139 tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt);
\ 00DD DD4E06 LD C,(IX+6)
\ 00E0 0600 LD B,0
\ 00E2 211000 LD HL,16
\ 00E5 A7 AND A
\ 00E6 ED42 SBC HL,BC
\ 00E8 4D LD C,L
\ 00E9 44 LD B,H
\ 00EA FD6E02 LD L,(IY+2)
\ 00ED 2600 LD H,0
\ 00EF F680 OR 128
\ 00F1 ED42 SBC HL,BC
\ 00F3 E2F700 JP PO,?0025
\ 00F6 AC XOR H
\ 00F7 ?0025:
\ 00F7 F2FF00 JP P,?0019
\ 00FA FD7E02 LD A,(IY+2)
\ 00FD 1805 JR ?0020
\ 00FF ?0019:
\ 00FF 3E10 LD A,16
\ 0101 DD9606 SUB (IX+6)
\ 0104 ?0020:
\ 0104 DD77FC LD (IX-4),A
140
141 //把黑白字模转为彩色字模放在Buff中
142 putCharChFlag=8;
\ 0107 3E08 LD A,8
\ 0109 320000 LD (putCharChFlag),A
143 BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer + CHINESE_WIDTH_DEF1);//+8
\ 010C 011000 LD BC,CharPointBuffer+16
\ 010F 111000 LD DE,16
\ 0112 CD0000 CALL BlackCharToColor
144 putCharChFlag=8;
\ 0115 3E08 LD A,8
\ 0117 320000 LD (putCharChFlag),A
145 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
146
147 //把暂时显存区的数据送到LCM
148 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF1-8)*2,
149 (CHINESE_HEIGHT_DEF1-8)*tmpwidth*2);
\ 011A DD6EFC LD L,(IX-4)
\ 011D 2600 LD H,0
\ 011F 29 ADD HL,HL
\ 0120 29 ADD HL,HL
\ 0121 29 ADD HL,HL
\ 0122 29 ADD HL,HL
\ 0123 4D LD C,L
\ 0124 44 LD B,H
\ 0125 DD6E06 LD L,(IX+6)
\ 0128 2600 LD H,0
\ 012A 29 ADD HL,HL
\ 012B 29 ADD HL,HL
\ 012C 29 ADD HL,HL
\ 012D 29 ADD HL,HL
\ 012E 110000 LD DE,DisplayBuffer
\ 0131 19 ADD HL,DE
\ 0132 EB EX DE,HL
\ 0133 CD0000 CALL Hdrv_BuffDataTrans
150 region.y += CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字) 8
\ 0136 3A0100 LD A,(region+1)
\ 0139 C608 ADD A,8
\ 013B 320100 LD (region+1),A
151 region.height = CHINESE_HEIGHT_DEF1-8;
152 Hdrv_SetWindow(®ion);
\ 013E CD6B01 CALL ?0037
153 //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
154 BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer);
\ 0141 010000 LD BC,CharPointBuffer
\ 0144 111000 LD DE,16
\ 0147 ?0033:
\ 0147 CD7601 CALL ?0038
155 //把暂时显存区的数据送到LCM
156 Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF1-8)*2,
157 (CHINESE_HEIGHT_DEF1-8)*tmpwidth*2);
158
159 break;
\ 014A ?0021:
160
161 default:
162 break;
\ 014A ?0002:
163 }
164 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 014A 110000 LD DE,0
\ 014D CD0000 CALL Hdrv_SetDrawMode
165 return TRUE;
\ 0150 3E01 LD A,1
166
167
168 }
\ 0152 ?0022:
\ 0152 DDF9 LD SP,IX
\ 0154 DDE1 POP IX
\ 0156 FDE1 POP IY
\ 0158 C9 RET
\ 0159 ?0035:
\ 0159 FD7E00 LD A,(IY+0)
\ 015C 320000 LD (region),A
\ 015F FD7E01 LD A,(IY+1)
\ 0162 320100 LD (region+1),A
\ 0165 FD7E02 LD A,(IY+2)
\ 0168 320200 LD (region+2),A
\ 016B ?0037:
\ 016B 3E08 LD A,8
\ 016D 320300 LD (region+3),A
\ 0170 ?0036:
\ 0170 110000 LD DE,region
\ 0173 C30000 JP Hdrv_SetWindow
\ 0176 ?0038:
\ 0176 CD0000 CALL BlackCharToColor
\ 0179 DD6EFC LD L,(IX-4)
\ 017C 2600 LD H,0
\ 017E 29 ADD HL,HL
\ 017F 29 ADD HL,HL
\ 0180 29 ADD HL,HL
\ 0181 29 ADD HL,HL
\ 0182 4D LD C,L
\ 0183 44 LD B,H
\ 0184 DD6E06 LD L,(IX+6)
\ 0187 2600 LD H,0
\ 0189 29 ADD HL,HL
\ 018A 29 ADD HL,HL
\ 018B 29 ADD HL,HL
\ 018C 29 ADD HL,HL
\ 018D 110000 LD DE,DisplayBuffer
\ 0190 19 ADD HL,DE
\ 0191 EB EX DE,HL
\ 0192 CD0000 CALL Hdrv_BuffDataTrans
\ 0195 C9 RET
\ 0196 END
Errors: none
Warnings: none
Code size: 406
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?