main.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,391 行 · 第 1/5 页
LST
1,391 行
154 }
\ 0063 18F3 JR ?0005
\ 0065 ?0004:
\ 0065 D1 POP DE
\ 0066 C1 POP BC
\ 0067 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 006A main:
155 /*
156 ********************************************************************************
157 * Description : 主函数
158 *
159 * Arguments :
160 *
161 * Returns : 结果消息或0
162 *
163 * Notes :
164 *
165 ********************************************************************************
166 */
167 int main(int param)
168 {
\ 006A DDE5 PUSH IX
\ 006C DD210000 LD IX,0
\ 0070 DD39 ADD IX,SP
\ 0072 D5 PUSH DE
\ 0073 21DEFF LD HL,65502
\ 0076 39 ADD HL,SP
\ 0077 F9 LD SP,HL
169 char *IRQCounter=(char *)(0x37);
\ 0078 DD36DC37 LD (IX-36),55
\ 007C DD36DD00 LD (IX-35),0
170 int active=0; //当前活动的项目
171 int i,TheFirstId,TheLastId;
172 char key;
173 char IsUDisk=0;
174 char tempbuf[]="abcde";
\ 0080 210C00 LD HL,12
\ 0083 39 ADD HL,SP
\ 0084 EB EX DE,HL
\ 0085 215800 LD HL,?0008
\ 0088 010600 LD BC,6
\ 008B EDB0 LDIR
175 int result;
176 int result_bak=0; //关机时把上次执行的ap记在此
177 BOOL need_draw=TRUE;
178 BOOL need_draw_all=TRUE;
179 // BYTE sec_tester_count = 0;
180 // BYTE sec_staff_count = 0;
181 BYTE item_count,n; //主界面有几个项目
182 BOOL with_fm; //存在fm模块
183 BOOL FlashFlag=TRUE;
184 int counter;
185 BYTE REG_8_BAK;
186
187 output8(0x4e,input8(0x4e) | 0x08);
\ 008D DB4E IN A,(78)
\ 008F CBDF SET 3,A
\ 0091 D34E OUT (78),A
188 output8(0x3c,((input8(0x3c)&0xf8) | 0x03));
\ 0093 DB3C IN A,(60)
\ 0095 E6F8 AND 248
\ 0097 F603 OR 3
\ 0099 D33C OUT (60),A
189 #ifdef CHGVDD
190 output8(0x4f,0x46); //VCC set to 3.0V, VDD set to 2.2V first step
191 #else
192 output8(0x4f,0x49); //VCC set to 3.0V, VDD set to 2.5V second step
\ 009B 3E49 LD A,73
\ 009D D34F OUT (79),A
193 #endif
194 for (counter=0; counter<0x80; counter++){;}
\ 009F AF XOR A
\ 00A0 DD77DE LD (IX-34),A
\ 00A3 DD77DF LD (IX-33),A
\ 00A6 DD77F0 LD (IX-16),A
\ 00A9 DD77F1 LD (IX-15),A
\ 00AC DD36F201 LD (IX-14),1
\ 00B0 DD36F301 LD (IX-13),1
\ 00B4 DD77F8 LD (IX-8),A
\ 00B7 DD77F9 LD (IX-7),A
\ 00BA ?0010:
\ 00BA 018080 LD BC,32896
\ 00BD DD6EF8 LD L,(IX-8)
\ 00C0 DD66F9 LD H,(IX-7)
\ 00C3 78 LD A,B
\ 00C4 AC XOR H
\ 00C5 67 LD H,A
\ 00C6 ED42 SBC HL,BC
\ 00C8 300A JR NC,?0009
\ 00CA ?0011:
\ 00CA DD34F8 INC (IX-8)
\ 00CD 20EB JR NZ,?0010
\ 00CF DD34F9 INC (IX-7)
\ 00D2 18E6 JR ?0010
\ 00D4 ?0009:
195
196 //装显示驱动之前要把USB FIFO切给z80使用
197 output8(0x8c,input8(0x8c) | 0x10);
\ 00D4 DB8C IN A,(140)
\ 00D6 CBE7 SET 4,A
\ 00D8 D38C OUT (140),A
198
199 //安装驱动
200 if(!DRV_Install("UI_S0724.DRV",0)) while(1) {;} //缺省简体
\ 00DA 010000 LD BC,0
\ 00DD 110000 LD DE,?0015
\ 00E0 CD0000 CALL LWRD DRV_Install
\ 00E3 B7 OR A
\ 00E4 2002 JR NZ,?0014
\ 00E6 ?0013:
\ 00E6 ?0017:
\ 00E6 18FE JR ?0013
\ 00E8 ?0014:
201 if(!DRV_Install("ky_hard.drv",0)) while(1) {;}
\ 00E8 010000 LD BC,0
\ 00EB 110D00 LD DE,?0021
\ 00EE CD0000 CALL LWRD DRV_Install
\ 00F1 B7 OR A
\ 00F2 2002 JR NZ,?0020
\ 00F4 ?0019:
\ 00F4 ?0023:
\ 00F4 18FE JR ?0019
\ 00F6 ?0020:
202 if(!DRV_Install("vm_nanf.drv",0)) while(1) {;}
\ 00F6 010000 LD BC,0
\ 00F9 111900 LD DE,?0027
\ 00FC CD0000 CALL LWRD DRV_Install
\ 00FF B7 OR A
\ 0100 2002 JR NZ,?0026
\ 0102 ?0025:
\ 0102 ?0029:
\ 0102 18FE JR ?0025
\ 0104 ?0026:
203
204 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0104 DB4E IN A,(78)
\ 0106 CBDF SET 3,A
\ 0108 D34E OUT (78),A
205 *IRQCounter=0;
\ 010A DD6EDC LD L,(IX-36)
\ 010D DD66DD LD H,(IX-35)
\ 0110 3600 LD (HL),0
206 enable_interrupt();
\ 0112 FB EI
207
208
209 read_var();
\ 0113 3E00 LD A,BYTE3 read_var
\ 0115 210000 LD HL,LWRD read_var
\ 0118 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
210
211 output8(0xf5,input8(0xf5)|0x01);
\ 011B DBF5 IN A,(245)
\ 011D CBC7 SET 0,A
\ 011F D3F5 OUT (245),A
212 REG_8_BAK=input8(0x8b);
\ 0121 DB8B IN A,(139)
\ 0123 DD77FA LD (IX-6),A
213 //安装驱动
214 switch (g_comval.langid)
\ 0126 ED5B0C00 LD DE,(g_comval+12)
\ 012A CD0000 CALL LWRD ?C_S_SWITCH_L06
\ 012D 01 DEFB 1
\ 012E 0400 DEFW 4
\ 0130 7801 DEFW ?0055
\ 0132 6A01 DEFW ?0053
\ 0134 3A01 DEFW ?0032
\ 0136 4A01 DEFW ?0039
\ 0138 5A01 DEFW ?0046
\ 013A ?0032:
215 {
216 case 2:
217 if(!DRV_Install("UI_T0724.DRV",1)) while(1) {;}
\ 013A 010100 LD BC,1
\ 013D 112500 LD DE,?0035
\ 0140 CD0000 CALL LWRD DRV_Install
\ 0143 B7 OR A
\ 0144 2032 JR NZ,?0055
\ 0146 ?0033:
\ 0146 ?0037:
218 break;
\ 0146 18FE JR ?0033
\ 0148 ?0034:
\ 0148 182E JR ?0055
\ 014A ?0039:
219 case 3:
220 if(!DRV_Install("UI_J0724.DRV",1)) while(1) {;}
\ 014A 010100 LD BC,1
\ 014D 113200 LD DE,?0042
\ 0150 CD0000 CALL LWRD DRV_Install
\ 0153 B7 OR A
\ 0154 2022 JR NZ,?0055
\ 0156 ?0040:
\ 0156 ?0044:
221 break;
\ 0156 18FE JR ?0040
\ 0158 ?0041:
\ 0158 181E JR ?0055
\ 015A ?0046:
222 case 4:
223 if(!DRV_Install("UI_K0724.DRV",1)) while(1) {;}
\ 015A 010100 LD BC,1
\ 015D 113F00 LD DE,?0049
\ 0160 CD0000 CALL LWRD DRV_Install
\ 0163 B7 OR A
\ 0164 2012 JR NZ,?0055
\ 0166 ?0047:
\ 0166 ?0051:
224 break;
\ 0166 18FE JR ?0047
\ 0168 ?0048:
\ 0168 180E JR ?0055
\ 016A ?0053:
225 case LAN_ID_ENGLISH:
226 if(!DRV_Install("UI_L0724.DRV",1)) while(1) {;}
\ 016A 010100 LD BC,1
\ 016D 114C00 LD DE,?0056
\ 0170 CD0000 CALL LWRD DRV_Install
\ 0173 B7 OR A
\ 0174 2002 JR NZ,?0055
\ 0176 ?0054:
\ 0176 ?0058:
227 break;
\ 0176 18FE JR ?0054
\ 0178 ?0055:
\ 0178 ?0060:
228 default:
229 break;
\ 0178 ?0031:
230 }
231 SetBackgdColor(Color_BLACK_def);
\ 0178 010000 LD BC,0
\ 017B 59 LD E,C
\ 017C 50 LD D,B
\ 017D CD0000 CALL LWRD SetBackgdColor
232 SetPenColor(Color_WHITE_def);
\ 0180 CDB407 CALL LWRD ?0294
233 ClearScreen(NULL);
\ 0183 110000 LD DE,0
\ 0186 CD0000 CALL LWRD ClearScreen
234
235
236
237 UpdateScreen(NULL); //recommended by chliang
\ 0189 110000 LD DE,0
\ 018C CD0000 CALL LWRD UpdateScreen
238 StandbyScreen(TRUE);
\ 018F 1E01 LD E,1
\ 0191 CD0000 CALL LWRD StandbyScreen
239 //TODO: support other language
240
241 //初始化资源文件
242 res_fp = ResOpen("ui30.res");
\ 0194 115900 LD DE,?0061
\ 0197 3E00 LD A,BYTE3 ResOpen
\ 0199 210000 LD HL,LWRD ResOpen
\ 019C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 019F 220000 LD (res_fp),HL
243 ASSERT( res_fp != NULL);
244
245 SetTextOutMode(1); //设字体透明 1;
\ 01A2 1E01 LD E,1
\ 01A4 CD0000 CALL LWRD SetTextOutMode
246 // SetPenColor(Color_BLACK_def);
247 // SetAsciiFont(FONT_TYPE_LARGE);
248
249
250
251 result = NULL;//RESULT_MAIN;
\ 01A7 FD210000 LD IY,0
\ 01AB ?0063:
252
253 //clear the message pool
254 while(GetSysMsg() != Msg_KeyNull) {;}
\ 01AB CD0000 CALL LWRD GetSysMsg
\ 01AE B7 OR A
\ 01AF 20FA JR NZ,?0063
\ 01B1 ?0064:
\ 01B1 ?0062:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?