sdrv_putchar_thai.lst
来自「一种彩屏驱动以及画点,填充图片和填充数据的一些程序」· LST 代码 · 共 349 行 · 第 1/2 页
LST
349 行
\ 0079 ?0004:
\ 0079 FE01 CP 1
\ 007B C20C01 JP NZ,?0013
70
71 case CharMode0816://08*16点阵模式(ascii大字体)
72 //设置字模输出的大小//上半个字
73 region.width = ASCII_LARGE_WIDTH_DEF;
\ 007E 3E08 LD A,8
\ 0080 320200 LD (region+2),A
74
75 if(SFlag == 5)
\ 0083 3A0000 LD A,(SFlag)
\ 0086 FE05 CP 5
\ 0088 2016 JR NZ,?0006
\ 008A ?0005:
76 {
77 region.height = 5;
\ 008A 3E05 LD A,5
\ 008C 320300 LD (region+3),A
78 Hdrv_SetWindow(®ion);
\ 008F CD1C01 CALL ?0022
79 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 0092 010000 LD BC,CharPointBuffer
\ 0095 110800 LD DE,8
\ 0098 CD0000 CALL BlackCharToColor
80 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*5*2);
\ 009B 015000 LD BC,80
\ 009E 1852 JR ?0019
\ 00A0 ?0006:
81 }
82 else if(SFlag == 3)
\ 00A0 FE03 CP 3
\ 00A2 201B JR NZ,?0009
\ 00A4 ?0008:
83 {
84 region.height = 3;
\ 00A4 3E03 LD A,3
\ 00A6 320300 LD (region+3),A
85 region.y += 13;
\ 00A9 3A0100 LD A,(region+1)
\ 00AC C60D ADD A,13
86 Hdrv_SetWindow(®ion);
\ 00AE CD1901 CALL ?0023
87 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF); //change by ybfu
\ 00B1 010800 LD BC,CharPointBuffer+8
\ 00B4 110800 LD DE,8
\ 00B7 CD0000 CALL BlackCharToColor
88 //把暂时显存区的数据送到LCM
89 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*3*2);
\ 00BA 013000 LD BC,48
\ 00BD 1833 JR ?0019
90 //region.y -= 13;
91 }
92 else
\ 00BF ?0009:
93 {
94 region.height = ASCII_LARGE_HEIGHT_DEF/2;
\ 00BF 3E08 LD A,8
\ 00C1 320300 LD (region+3),A
95 region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
\ 00C4 3A0100 LD A,(region+1)
\ 00C7 C608 ADD A,8
96 Hdrv_SetWindow(®ion);
\ 00C9 CD1901 CALL ?0023
97 //把黑白字模转为彩色字模放在Buff中(上区)
98 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF); //change by ybfu
\ 00CC 010800 LD BC,CharPointBuffer+8
\ 00CF 110800 LD DE,8
\ 00D2 CD0000 CALL BlackCharToColor
99 //把暂时显存区的数据送到LCM
100 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
\ 00D5 018000 LD BC,128
\ 00D8 110000 LD DE,DisplayBuffer
\ 00DB CD0000 CALL Hdrv_BuffDataTrans
101
102 region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标减8准备输出上区(上半个字)
\ 00DE 3A0100 LD A,(region+1)
\ 00E1 C6F8 ADD A,248
103 Hdrv_SetWindow(®ion);
\ 00E3 CD1901 CALL ?0023
104 BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
\ 00E6 010000 LD BC,CharPointBuffer
\ 00E9 110800 LD DE,8
\ 00EC CD0000 CALL BlackCharToColor
105 //把暂时显存区的数据送到LCM
106 Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
\ 00EF 018000 LD BC,128
\ 00F2 ?0019:
\ 00F2 110000 LD DE,DisplayBuffer
\ 00F5 CD0000 CALL Hdrv_BuffDataTrans
\ 00F8 ?0010:
\ 00F8 ?0007:
107 }
108
109 //坐标移到下一个字的左上角
110 if(NextSFlag == 0)
\ 00F8 3A0000 LD A,(NextSFlag)
\ 00FB B7 OR A
\ 00FC 200A JR NZ,?0012
\ 00FE ?0011:
111 {
112 region.x += ASCII_LARGE_WIDTH_DEF;
\ 00FE 3A0000 LD A,(region)
\ 0101 C608 ADD A,8
\ 0103 ?0021:
\ 0103 320000 LD (region),A
113 }
114 else
\ 0106 1804 JR ?0013
\ 0108 ?0012:
115 NextSFlag = 0; //如果是符号,X坐标不增加
\ 0108 AF XOR A
\ 0109 320000 LD (NextSFlag),A
\ 010C ?0013:
116 //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
117 break;
\ 010C ?0014:
118 #if 0
119 case CharMode1616://16*16点阵模式(汉字)
120 //设置字模输出的大小(上半个汉字)
121 region.width = CHINESE_WIDTH_DEF;
122 region.height = CHINESE_HEIGHT_DEF/2;
123 region.y += CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
124
125 Hdrv_SetWindow(®ion);
126
127 //把黑白字模转为彩色字模放在Buff中
128 //putCharChFlag=8;
129 BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF); //change by ybfu
130 //putCharChFlag=8;
131 //把暂时显存区的数据送到LCM
132 Hdrv_BuffDataTrans(DisplayBuffer, (CHINESE_HEIGHT_DEF/2)*CHINESE_WIDTH_DEF*2);
133 region.y -= CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
134 region.height = CHINESE_HEIGHT_DEF/2;
135 Hdrv_SetWindow(®ion);
136 BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
137
138 //把暂时显存区的数据送到LCM
139 Hdrv_BuffDataTrans(DisplayBuffer, (CHINESE_HEIGHT_DEF/2)*CHINESE_WIDTH_DEF*2);
140
141 //坐标移到下一个字的左上角
142 region.x += CHINESE_WIDTH_DEF;
143 //region.y -= CHINESE_HEIGHT_DEF/2;
144 break;
145 #endif
146 default:
147 break;
\ 010C ?0002:
148 }
149 Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
\ 010C 110000 LD DE,0
\ 010F CD0000 CALL Hdrv_SetDrawMode
150 return TRUE;
\ 0112 3E01 LD A,1
151 }
\ 0114 ?0015:
\ 0114 E1 POP HL
\ 0115 DDE1 POP IX
\ 0117 C1 POP BC
\ 0118 C9 RET
\ 0119 ?0023:
\ 0119 320100 LD (region+1),A
\ 011C ?0022:
\ 011C 110000 LD DE,region
\ 011F C30000 JP Hdrv_SetWindow
\ 0122 END
Errors: none
Warnings: none
Code size: 290
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?