📄 sdrv_putchar_thai.lst
字号:
\ 002F 5F LD E,A
\ 0030 CD0000 CALL CheckDisplaySpace
\ 0033 210000 LD HL,0
\ 0036 39 ADD HL,SP
\ 0037 77 LD (HL),A
85 if (!putchar_result)
\ 0038 AF XOR A
\ 0039 B6 OR (HL)
\ 003A 200D JR NZ,?0001
\ 003C ?0000:
86 {
87 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模式
\ 003C 5F LD E,A
\ 003D 57 LD D,A
\ 003E CD0000 CALL Hdrv_SetDrawMode
88 return putchar_result;//如显示范围不对,则不做显示动作而直接退出
\ 0041 210000 LD HL,0
\ 0044 39 ADD HL,SP
\ 0045 7E LD A,(HL)
89 }
\ 0046 C3DA00 JP ?0008
\ 0049 ?0001:
90 switch(charmode)
\ 0049 23 INC HL
\ 004A 7E LD A,(HL)
\ 004B FE00 CP 0
\ 004D 2029 JR NZ,?0004
\ 004F ?0003:
91 {
92 case CharMode0608://06*08点阵模式(ascii小字体)
93 //设置字模输出的大小
94 region.width = ASCII_SMALL_WIDTH_DEF;
\ 004F 3E06 LD A,6
\ 0051 320200 LD (region+2),A
95 region.height = ASCII_SMALL_HEIGHT_DEF;
\ 0054 3E08 LD A,8
\ 0056 320300 LD (region+3),A
96
97 Hdrv_SetWindow(®ion);
\ 0059 110000 LD DE,region
\ 005C CD0000 CALL Hdrv_SetWindow
98
99 //把黑白字模转为彩色字模放在Buff中
100 BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
\ 005F 010000 LD BC,CharPointBuffer
\ 0062 110600 LD DE,6
\ 0065 CD0000 CALL BlackCharToColor
101 //把暂时显存区的数据送到LCM
102 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_SMALL_HEIGHT_DEF*ASCII_SMALL_WIDTH_DEF*2);
\ 0068 016000 LD BC,96
\ 006B 110000 LD DE,DisplayBuffer
\ 006E CD0000 CALL Hdrv_BuffDataTrans
103 region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
\ 0071 3A0000 LD A,(region)
\ 0074 C606 ADD A,6
\ 0076 1857 JR ?0010
104 break;
\ 0078 ?0004:
\ 0078 FE01 CP 1
\ 007A 2056 JR NZ,?0006
105
106 case CharMode0816://08*16点阵模式(ascii大字体)
107 //设置字模输出的大小//上半个字
108 region.width = ASCII_LARGE_WIDTH_DEF;
\ 007C 3E08 LD A,8
\ 007E 320200 LD (region+2),A
109 region.height = ASCII_LARGE_HEIGHT_DEF/2;
\ 0081 320300 LD (region+3),A
110 region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 0084 3A0100 LD A,(region+1)
\ 0087 C608 ADD A,8
\ 0089 320100 LD (region+1),A
111
112 Hdrv_SetWindow(®ion);
\ 008C 110000 LD DE,region
\ 008F CD0000 CALL Hdrv_SetWindow
113
114 //把黑白字模转为彩色字模放在Buff中(上区)
115 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
116 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF); //change by ybfu
\ 0092 010800 LD BC,CharPointBuffer+8
\ 0095 110800 LD DE,8
\ 0098 CD0000 CALL BlackCharToColor
117 //把暂时显存区的数据送到LCM
118 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
\ 009B 018000 LD BC,128
\ 009E 110000 LD DE,DisplayBuffer
\ 00A1 CD0000 CALL Hdrv_BuffDataTrans
119
120 region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 00A4 3A0100 LD A,(region+1)
\ 00A7 C6F8 ADD A,248
\ 00A9 320100 LD (region+1),A
121
122 Hdrv_SetWindow(®ion);
\ 00AC 110000 LD DE,region
\ 00AF CD0000 CALL Hdrv_SetWindow
123
124 //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
125 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 00B2 010000 LD BC,CharPointBuffer
\ 00B5 110800 LD DE,8
\ 00B8 CD0000 CALL BlackCharToColor
126 //把暂时显存区的数据送到LCM
127 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
\ 00BB 018000 LD BC,128
\ 00BE 110000 LD DE,DisplayBuffer
\ 00C1 CD0000 CALL Hdrv_BuffDataTrans
128 //坐标移到下一个字的左上角
129 if(next_thai_flag)
\ 00C4 3A0000 LD A,(next_thai_flag)
\ 00C7 B7 OR A
\ 00C8 2808 JR Z,?0006
\ 00CA ?0005:
130 {
131 region.x += ASCII_LARGE_WIDTH_DEF;
\ 00CA 3A0000 LD A,(region)
\ 00CD C608 ADD A,8
\ 00CF ?0010:
\ 00CF 320000 LD (region),A
\ 00D2 ?0006:
132 //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
133 }
134 break;
\ 00D2 ?0007:
135
136 default:
137 break;
\ 00D2 ?0002:
138 }
139 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 00D2 110000 LD DE,0
\ 00D5 CD0000 CALL Hdrv_SetDrawMode
140 return TRUE;
\ 00D8 3E01 LD A,1
141 }
\ 00DA ?0008:
\ 00DA E1 POP HL
\ 00DB DDE1 POP IX
\ 00DD C1 POP BC
\ 00DE C9 RET
\ 0000 RSEG IDATA0
\ 0000 thai_flag:
\ 0001 DEFS 1
\ 0000 RSEG CDATA0
\ 0000 00 DEFB 0
\ 0001 END
Errors: none
Warnings: none
Code size: 223
Constant size: 1
Static variable size: Data(1) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -