📄 sdrv_puts_thai.lst
字号:
\ 003F ?0008:
87 {
88 str++;
89 //region.x = 0;
90 region.x = rowNum_sav;
\ 003F 210100 LD HL,1
\ 0042 39 ADD HL,SP
\ 0043 7E LD A,(HL)
\ 0044 320000 LD (region),A
91 region.y += StrHeight;
\ 0047 3A0100 LD A,(StrHeight)
\ 004A 47 LD B,A
\ 004B 3A0100 LD A,(region+1)
\ 004E 80 ADD A,B
\ 004F 320100 LD (region+1),A
92 lineNum_sav = region.y;//保存当前行顶的y轴坐标
\ 0052 2B DEC HL
\ 0053 77 LD (HL),A
93 if (AsciiSelect == FONT_TYPE_SMALL)
\ 0054 ?0010:
94 {
95 StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
96 }
97 else
\ 0054 ?0011:
98 {
99 StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
\ 0054 3E10 LD A,16
\ 0056 320100 LD (StrHeight),A
\ 0059 DD23 INC IX
\ 005B ?0012:
\ 005B ?0009:
100 }
101
102 }
103
104 code = *str;
\ 005B DD4E00 LD C,(IX+0)
\ 005E 0600 LD B,0
105 str++;
106
107 if(*str == 0xd1 || (*str >=0xd4 && *str<0xdb) ||(*str >=0xe7 && *str<0xef))
\ 0060 DD7E01 LD A,(IX+1)
\ 0063 FED1 CP 209
\ 0065 DD23 INC IX
\ 0067 281C JR Z,?0020
\ 0069 DD7E00 LD A,(IX+0)
\ 006C FED4 CP 212
\ 006E 3807 JR C,?0018
\ 0070 DD7E00 LD A,(IX+0)
\ 0073 FEDB CP 219
\ 0075 380E JR C,?0020
\ 0077 ?0018:
\ 0077 ?0017:
\ 0077 DD7E00 LD A,(IX+0)
\ 007A FEE7 CP 231
\ 007C 380A JR C,?0014
\ 007E DD7E00 LD A,(IX+0)
\ 0081 FEEF CP 239
\ 0083 3003 JR NC,?0014
\ 0085 ?0020:
\ 0085 ?0019:
\ 0085 ?0015:
\ 0085 ?0016:
\ 0085 ?0013:
108 next_thai_flag = 0;
\ 0085 AF XOR A
\ 0086 1802 JR ?0032
109 else
\ 0088 ?0014:
110 next_thai_flag = 1;
\ 0088 3E01 LD A,1
\ 008A ?0032:
\ 008A 320000 LD (next_thai_flag),A
\ 008D ?0021:
111 // next_thai_flag = chech_symple(*str);
112
113
114 result = Sdrv_PutChar(code);
\ 008D 59 LD E,C
\ 008E 50 LD D,B
\ 008F CD0000 CALL Sdrv_PutChar
\ 0092 210400 LD HL,4
\ 0095 39 ADD HL,SP
\ 0096 77 LD (HL),A
115 if (!result) //输出字符
\ 0097 AF XOR A
\ 0098 B6 OR (HL)
\ 0099 2005 JR NZ,?0023
\ 009B ?0022:
116 {
117 //当输出区域超出范围时退出
118 return lastcharpt;//返回上一个字符的指针,因为当前指针已加一了
\ 009B FDE5 PUSH IY
\ 009D E1 POP HL
119 }
\ 009E 181B JR ?0026
\ 00A0 ?0023:
120 if(next_thai_flag)
\ 00A0 3A0000 LD A,(next_thai_flag)
\ 00A3 B7 OR A
\ 00A4 2803 JR Z,?0025
\ 00A6 ?0024:
121 {
122 (unsigned char)strlen--;//不理负号直接减(因为0xff时表示显示全部)
\ 00A6 23 INC HL
\ 00A7 23 INC HL
\ 00A8 35 DEC (HL)
\ 00A9 ?0025:
123 }
124 region.y = lineNum_sav;//恢复当前行顶y的轴坐标
\ 00A9 68 LD L,B
\ 00AA 60 LD H,B
\ 00AB 39 ADD HL,SP
\ 00AC 7E LD A,(HL)
\ 00AD 320100 LD (region+1),A
\ 00B0 C31D00 JP ?0002
\ 00B3 ?0003:
125 //暂时不让某些地方显示过长
126 ///if ( ((unsigned char)strlen > 200) && (region.x > 188) )
127 //if ( ((unsigned char)strlen > 128) && (region.x > 120) )
128 //{
129 // break;
130 //}
131 }
132 next_thai_flag = 1;
\ 00B3 3E01 LD A,1
\ 00B5 320000 LD (next_thai_flag),A
133 return str;
\ 00B8 DDE5 PUSH IX
\ 00BA E1 POP HL
134 }
\ 00BB ?0026:
\ 00BB F1 POP AF
\ 00BC F1 POP AF
\ 00BD F1 POP AF
\ 00BE F1 POP AF
\ 00BF DDE1 POP IX
\ 00C1 FDE1 POP IY
\ 00C3 C9 RET
135 /*
136 non_banked char chech_symple(unsigned char code)
137 {
138
139 }
140 */
\ 0000 RSEG IDATA0
\ 0000 next_thai_flag:
\ 0001 DEFS 1
\ 0001 StrHeight:
\ 0002 DEFS 1
\ 0000 RSEG CDATA0
\ 0000 01 DEFB 1
\ 0001 08 DEFB 8
\ 0002 END
Errors: none
Warnings: none
Code size: 196
Constant size: 2
Static variable size: Data(2) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -