📄 ap_common2.lst
字号:
\ 0089 3E04 LD A,4
\ 008B CD0000 CALL LWRD ?L_LSH_L03
\ 008E C5 PUSH BC
\ 008F E5 PUSH HL
\ 0090 0E00 LD C,0
\ 0092 ED5B0000 LD DE,(res_fp)
\ 0096 CD0000 CALL LWRD SD_FSeek
\ 0099 E1 POP HL
\ 009A E1 POP HL
100 SD_FRead(res_fp, &res_entry, sizeof(res_entry_t)); //res_fp->&res_entry
\ 009B 211000 LD HL,16
\ 009E E5 PUSH HL
\ 009F 010000 LD BC,res_entry
\ 00A2 ED5B0000 LD DE,(res_fp)
\ 00A6 CD0000 CALL LWRD SD_FRead
\ 00A9 F1 POP AF
101 if( res_entry.type != RES_TYPE_MSTRING) return 0; //非Multisring 返回
\ 00AA 3A0600 LD A,(res_entry+6)
\ 00AD FE03 CP 3
\ 00AF 2806 JR Z,?0014
\ 00B1 ?0013:
\ 00B1 210000 LD HL,0
102
103 ASSERT(res_entry.length <= sizeof(buf));
\ 00B4 C39401 JP LWRD ?0024
\ 00B7 ?0014:
104
105 //读数据
106 SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
\ 00B7 2A0200 LD HL,(res_entry+2)
\ 00BA E5 PUSH HL
\ 00BB 2A0000 LD HL,(res_entry)
\ 00BE E5 PUSH HL
\ 00BF 0E00 LD C,0
\ 00C1 ED5B0000 LD DE,(res_fp)
\ 00C5 CD0000 CALL LWRD SD_FSeek
\ 00C8 E1 POP HL
\ 00C9 E1 POP HL
107 SD_FRead(res_fp, buf, 50);
\ 00CA 213200 LD HL,50
\ 00CD E5 PUSH HL
\ 00CE 210600 LD HL,6
\ 00D1 39 ADD HL,SP
\ 00D2 4D LD C,L
\ 00D3 44 LD B,H
\ 00D4 ED5B0000 LD DE,(res_fp)
\ 00D8 CD0000 CALL LWRD SD_FRead
\ 00DB F1 POP AF
108
109 //定位到 string_id
110 p = buf;
\ 00DC 210400 LD HL,4
\ 00DF 39 ADD HL,SP
\ 00E0 E5 PUSH HL
\ 00E1 FDE1 POP IY
111 string_idtemp=string_id;
\ 00E3 DD46FE LD B,(IX-2)
\ 00E6 DD70C7 LD (IX-57),B
\ 00E9 ?0016:
112 while(string_id)
\ 00E9 AF XOR A
\ 00EA DDB6FE OR (IX-2)
\ 00ED 284F JR Z,?0015
\ 00EF ?0017:
113 {
114 AddBuf=1;
\ 00EF DD36C601 LD (IX-58),1
\ 00F3 ?0019:
115 while(*p!=0)
\ 00F3 AF XOR A
\ 00F4 FDB600 OR (IY+0)
\ 00F7 2807 JR Z,?0018
\ 00F9 ?0020:
116 {
117 AddBuf++; //找到第string_id 个0
\ 00F9 DD34C6 INC (IX-58)
118 p++;
\ 00FC FD23 INC IY
\ 00FE 18F3 JR ?0019
\ 0100 ?0018:
119 }
120 string_id--;
\ 0100 DD35FE DEC (IX-2)
121 res_entry.offset=res_entry.offset+AddBuf;
\ 0103 210000 LD HL,res_entry
\ 0106 DD5EC6 LD E,(IX-58)
\ 0109 010000 LD BC,0
\ 010C 51 LD D,C
\ 010D CD0000 CALL LWRD ?L_ADDASG_L03
122 SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
\ 0110 2A0200 LD HL,(res_entry+2)
\ 0113 E5 PUSH HL
\ 0114 2A0000 LD HL,(res_entry)
\ 0117 E5 PUSH HL
\ 0118 0E00 LD C,0
\ 011A ED5B0000 LD DE,(res_fp)
\ 011E CD0000 CALL LWRD SD_FSeek
\ 0121 E1 POP HL
\ 0122 E1 POP HL
123 SD_FRead(res_fp, buf, 50);
\ 0123 213200 LD HL,50
\ 0126 E5 PUSH HL
\ 0127 210600 LD HL,6
\ 012A 39 ADD HL,SP
\ 012B 4D LD C,L
\ 012C 44 LD B,H
\ 012D ED5B0000 LD DE,(res_fp)
\ 0131 CD0000 CALL LWRD SD_FRead
\ 0134 F1 POP AF
124 p = buf;
\ 0135 210400 LD HL,4
\ 0138 39 ADD HL,SP
\ 0139 E5 PUSH HL
\ 013A FDE1 POP IY
\ 013C 18AB JR ?0016
\ 013E ?0015:
125 }
126 string_id=string_idtemp;
\ 013E DD46C7 LD B,(IX-57)
\ 0141 DD70FE LD (IX-2),B
127 ASSERT((WORD)(p - buf) <= res_entry.length);
128
129 StrLength=(BYTE)strlen(p);
\ 0144 FDE5 PUSH IY
\ 0146 E1 POP HL
\ 0147 CD0000 CALL LWRD ?STRLEN_L11
\ 014A DD75C8 LD (IX-56),L
130 /*
131 if((x == 255)&&(string_id!=1)&&(string_id<5)) //16*16字体居中显示
132 {
133 SetTextPos((SCR_WIDTH - (BYTE)get_large_text_width(p)) /2, y);
134 PutS(p, -1);
135 }
136 else if((string_id!=1)&&(string_id<5)) ////16*16字体非居中显示
137 {
138 SetTextPos(x, y);
139 PutS(p, -1);
140 }
141 else //6*8字体显示
142 {
143 if(x == 255)
144 {
145 SetTextPos((SCR_WIDTH - StrLength*CHAR_WIDTH) /2, y);
146 PutS(p, -1);
147 }
148 else if(StrLength<22)
149 {
150 SetTextPos(x, y);
151 PutS(p, -1);
152 }
153 else
154 {
155 SetTextPos(0, y);
156 PutS(p, 21);
157 SetTextPos(0, y+8);
158 PutS(p+21, -1);
159 }
160 }
161 */
162 if(x == 255) //16*16字体居中显示
\ 014D DD4608 LD B,(IX+8)
\ 0150 04 INC B
\ 0151 202D JR NZ,?0022
\ 0153 ?0021:
163 {
164 SetTextPos((SCR_WIDTH - (BYTE)get_large_text_width(p)) /2, y);
\ 0153 DD4E0A LD C,(IX+10)
\ 0156 C5 PUSH BC
\ 0157 FDE5 PUSH IY
\ 0159 D1 POP DE
\ 015A 3E00 LD A,BYTE3 get_large_text_width
\ 015C 215D00 LD HL,LWRD get_large_text_width
\ 015F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0162 5D LD E,L
\ 0163 1600 LD D,0
\ 0165 21B000 LD HL,176
\ 0168 A7 AND A
\ 0169 ED52 SBC HL,DE
\ 016B EB EX DE,HL
\ 016C 010200 LD BC,2
\ 016F CD0000 CALL LWRD ?SS_DIV_L02
\ 0172 C1 POP BC
\ 0173 CD0000 CALL LWRD SetTextPos
165 PutS(p, -1);
\ 0176 0EFF LD C,255
\ 0178 FDE5 PUSH IY
\ 017A D1 POP DE
\ 017B CD0000 CALL LWRD PutS
166 }
167 else //16*16字体非居中显示
\ 017E 1811 JR ?0023
\ 0180 ?0022:
168 {
169 SetTextPos(x, y);
\ 0180 DD4E0A LD C,(IX+10)
\ 0183 DD5E08 LD E,(IX+8)
\ 0186 CD0000 CALL LWRD SetTextPos
170 PutS(p, -1);
\ 0189 0EFF LD C,255
\ 018B FDE5 PUSH IY
\ 018D D1 POP DE
\ 018E CD0000 CALL LWRD PutS
\ 0191 ?0023:
171 }
172
173 return 1;
\ 0191 210100 LD HL,1
174 }
\ 0194 ?0024:
\ 0194 DDF9 LD SP,IX
\ 0196 DDE1 POP IX
\ 0198 FDE1 POP IY
\ 019A C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0000 RSEG UDATA0
\ 0000 file_name:
\ 000C DEFS 12
\ 000C dir_name:
\ 002A DEFS 30
\ 002A END
Errors: none
Warnings: none
Code size: 413
Constant size: 0
Static variable size: Data(42) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -