📄 ap_common2.lst
字号:
97
98 //读entry
99 SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t)); // 指针指向字符在文件中的位置
\ 0060 EB EX DE,HL
\ 0061 010000 LD BC,0
\ 0064 3E04 LD A,4
\ 0066 CD0000 CALL LWRD ?L_LSH_L03
\ 0069 C5 PUSH BC
\ 006A E5 PUSH HL
\ 006B 0E00 LD C,0
\ 006D ED5B0000 LD DE,(res_fp)
\ 0071 CD0000 CALL LWRD SD_FSeek
\ 0074 E1 POP HL
\ 0075 E1 POP HL
100 SD_FRead(res_fp, &res_entry, sizeof(res_entry_t)); //res_fp->&res_entry
\ 0076 211000 LD HL,16
\ 0079 E5 PUSH HL
\ 007A 010000 LD BC,res_entry
\ 007D ED5B0000 LD DE,(res_fp)
\ 0081 CD0000 CALL LWRD SD_FRead
\ 0084 F1 POP AF
101 if( res_entry.type != RES_TYPE_MSTRING) return 0; //非Multisring 返回
\ 0085 3A0600 LD A,(res_entry+6)
\ 0088 FE03 CP 3
\ 008A 2806 JR Z,?0014
\ 008C ?0013:
\ 008C 210000 LD HL,0
102
103 ASSERT(res_entry.length <= sizeof(buf));
\ 008F C32801 JP LWRD ?0024
\ 0092 ?0014:
104
105 //读数据
106 SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
\ 0092 2A0200 LD HL,(res_entry+2)
\ 0095 E5 PUSH HL
\ 0096 2A0000 LD HL,(res_entry)
\ 0099 E5 PUSH HL
\ 009A 0E00 LD C,0
\ 009C ?0030:
\ 009C ED5B0000 LD DE,(res_fp)
\ 00A0 CD0000 CALL LWRD SD_FSeek
\ 00A3 E1 POP HL
\ 00A4 E1 POP HL
107 SD_FRead(res_fp, buf, 50);
\ 00A5 213200 LD HL,50
\ 00A8 E5 PUSH HL
\ 00A9 2E06 LD L,6
\ 00AB 39 ADD HL,SP
\ 00AC 4D LD C,L
\ 00AD 44 LD B,H
\ 00AE ED5B0000 LD DE,(res_fp)
\ 00B2 CD0000 CALL LWRD SD_FRead
\ 00B5 F1 POP AF
108
109 //定位到 string_id
110 p = buf;
\ 00B6 210400 LD HL,4
\ 00B9 39 ADD HL,SP
\ 00BA E5 PUSH HL
\ 00BB FDE1 POP IY
111 string_idtemp=string_id;
\ 00BD ?0016:
112 while(string_id)
\ 00BD AF XOR A
\ 00BE DDB6FE OR (IX-2)
\ 00C1 282B JR Z,?0015
\ 00C3 ?0017:
113 {
114 AddBuf=1;
\ 00C3 DD36C601 LD (IX-58),1
\ 00C7 ?0019:
115 while(*p!=0)
\ 00C7 AF XOR A
\ 00C8 FDB600 OR (IY+0)
\ 00CB 2807 JR Z,?0018
\ 00CD ?0020:
116 {
117 AddBuf++; //找到第string_id 个0
\ 00CD DD34C6 INC (IX-58)
118 p++;
\ 00D0 FD23 INC IY
\ 00D2 18F3 JR ?0019
\ 00D4 ?0018:
119 }
120 string_id--;
\ 00D4 DD35FE DEC (IX-2)
121 res_entry.offset=res_entry.offset+AddBuf;
\ 00D7 210000 LD HL,res_entry
\ 00DA DD5EC6 LD E,(IX-58)
\ 00DD 4F LD C,A
\ 00DE 51 LD D,C
\ 00DF 47 LD B,A
\ 00E0 CD0000 CALL LWRD ?L_ADDASG_L03
122 SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
\ 00E3 2A0200 LD HL,(res_entry+2)
\ 00E6 E5 PUSH HL
\ 00E7 2A0000 LD HL,(res_entry)
\ 00EA E5 PUSH HL
\ 00EB 4F LD C,A
\ 00EC 18AE JR ?0030
123 SD_FRead(res_fp, buf, 50);
124 p = buf;
\ 00EE ?0015:
125 }
126 string_id=string_idtemp;
127 ASSERT((WORD)(p - buf) <= res_entry.length);
128
129 StrLength=(BYTE)strlen(p);
\ 00EE CD0000 CALL LWRD ?STRLEN_L11
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字体居中显示
\ 00F1 DD4608 LD B,(IX+8)
\ 00F4 04 INC B
\ 00F5 DD4E0A LD C,(IX+10)
\ 00F8 201D JR NZ,?0022
\ 00FA ?0021:
163 {
164 SetTextPos((SCR_WIDTH - (BYTE)get_large_text_width(p)) /2, y);
\ 00FA C5 PUSH BC
\ 00FB FDE5 PUSH IY
\ 00FD D1 POP DE
\ 00FE 3E00 LD A,BYTE3 get_large_text_width
\ 0100 214000 LD HL,LWRD get_large_text_width
\ 0103 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0106 5D LD E,L
\ 0107 50 LD D,B
\ 0108 21B000 LD HL,176
\ 010B A7 AND A
\ 010C ED52 SBC HL,DE
\ 010E EB EX DE,HL
\ 010F 0E02 LD C,2
\ 0111 CD0000 CALL LWRD ?SS_DIV_L02
\ 0114 C1 POP BC
\ 0115 1803 JR ?0029
165 PutS(p, -1);
166 }
167 else //16*16字体非居中显示
\ 0117 ?0022:
168 {
169 SetTextPos(x, y);
\ 0117 DD5E08 LD E,(IX+8)
\ 011A ?0029:
\ 011A CD0000 CALL LWRD SetTextPos
170 PutS(p, -1);
\ 011D 0EFF LD C,255
\ 011F FDE5 PUSH IY
\ 0121 D1 POP DE
\ 0122 CD0000 CALL LWRD PutS
\ 0125 ?0023:
171 }
172
173 return 1;
\ 0125 210100 LD HL,1
174 }
\ 0128 ?0024:
\ 0128 DDF9 LD SP,IX
\ 012A DDE1 POP IX
\ 012C FDE1 POP IY
\ 012E 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: 305
Constant size: 0
Static variable size: Data(42) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -