main.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,352 行 · 第 1/5 页
LST
1,352 行
\ 00B4 ?0124:
\ 00B4 F2BB00 JP P,?0009
\ 00B7 ?0011:
82 }
\ 00B7 DD2B DEC IX
\ 00B9 18EB JR ?0010
\ 00BB ?0009:
\ 00BB 210000 LD HL,0
\ 00BE 39 ADD HL,SP
\ 00BF 34 INC (HL)
\ 00C0 23 INC HL
\ 00C1 20CF JR NZ,?0006
\ 00C3 34 INC (HL)
\ 00C4 18CC JR ?0006
\ 00C6 ?0005:
\ 00C6 ?0014:
83 // if(!DRV_Install("I2C_SLA.DRV",0)) while(1) {;}
84 //clear message queue for make sure delay 0.5s
85 while(ap_get_message() != 0) {;}
\ 00C6 CD0000 CALL LWRD ap_get_message
\ 00C9 B7 OR A
\ 00CA 20FA JR NZ,?0005
\ 00CC ?0015:
\ 00CC ?0013:
86 ap_sleep(1);
\ 00CC 110100 LD DE,1
\ 00CF 3E00 LD A,BYTE3 ap_sleep
\ 00D1 210000 LD HL,LWRD ap_sleep
\ 00D4 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
87
88 res_fp=ResOpen("ui30.res"); //打开资源
\ 00D7 110000 LD DE,?0016
\ 00DA 3E00 LD A,BYTE3 ResOpen
\ 00DC 210000 LD HL,LWRD ResOpen
\ 00DF CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00E2 220000 LD (res_fp),HL
89 ASSERT(res_fp!=NULL); //问题报错,DEBUG时有效
90 //-------安装ud驱动------------
91 DRV_ActiveUD(0x00,MODE_SLOW);
\ 00E5 0E01 LD C,1
\ 00E7 1E00 LD E,0
\ 00E9 CD0000 CALL LWRD DRV_ActiveUD
92
93 result=VMRead(&F_comval,VM_SYSTEM,sizeof(F_comval)); //读系统变量
\ 00EC 212000 LD HL,32
\ 00EF E5 PUSH HL
\ 00F0 010002 LD BC,512
\ 00F3 111300 LD DE,g_comval
\ 00F6 CD0000 CALL LWRD VMRead
\ 00F9 E1 POP HL
94 ASSERT(result);
95 //check if valid
96 if(F_comval.magic != MAGIC_COMVAL) //第一次读,初始化
\ 00FA 21ADDE LD HL,57005
\ 00FD ED4B1300 LD BC,(g_comval)
\ 0101 A7 AND A
\ 0102 ED42 SBC HL,BC
\ 0104 2806 JR Z,?0018
\ 0106 ?0017:
97 {
98 DUMP_STRING("F_comval init-ed!");
99 //COMVAL_INIT(F_comval);
100 GetDefaultComval(&F_comval);
\ 0106 111300 LD DE,g_comval
\ 0109 CD0000 CALL LWRD GetDefaultComval
\ 010C ?0018:
101 }
102 ap_message_init(&F_comval); //系统消息(如RTC COUNTER)初始化
\ 010C 111300 LD DE,g_comval
\ 010F 3E00 LD A,BYTE3 ap_message_init
\ 0111 210000 LD HL,LWRD ap_message_init
\ 0114 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
103 result=VMRead(FMStationTab,VM_AP_RADIO,80+8*3+3); //长度重新计算
\ 0117 216B00 LD HL,107
\ 011A E5 PUSH HL
\ 011B 010020 LD BC,8192
\ 011E 113400 LD DE,FMStationTab
\ 0121 CD0000 CALL LWRD VMRead
\ 0124 E1 POP HL
104 ASSERT(result);
105 result=FMdeal();
\ 0125 3E00 LD A,BYTE3 FMdeal
\ 0127 219201 LD HL,LWRD FMdeal
\ 012A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 012D E5 PUSH HL
\ 012E FDE1 POP IY
106 //保存变量
107 fmSendCommand(MC_BACKUP,(int)&radio_param);
\ 0130 010200 LD BC,radio_param
\ 0133 1E44 LD E,68
\ 0135 CD1000 CALL LWRD ?0169
108 if (result == RESULT_RECORD) //截获FM中所有Rec热键录音。
\ 0138 FDE5 PUSH IY
\ 013A E1 POP HL
\ 013B 3E09 LD A,9
\ 013D AD XOR L
\ 013E B4 OR H
\ 013F 2004 JR NZ,?0020
\ 0141 ?0019:
109 result = RESULT_FMREC_START;
\ 0141 FD210D00 LD IY,13
\ 0145 ?0020:
110 if ((result != RESULT_FMREC_NOSTART)&&(result != RESULT_FMREC_START)) //非电台录音退出!for FM record by ccm
\ 0145 FDE5 PUSH IY
\ 0147 E1 POP HL
\ 0148 3E0E LD A,14
\ 014A AD XOR L
\ 014B B4 OR H
\ 014C 2822 JR Z,?0022
\ 014E 3E0D LD A,13
\ 0150 AD XOR L
\ 0151 B4 OR H
\ 0152 281C JR Z,?0022
\ 0154 ?0024:
\ 0154 ?0023:
\ 0154 ?0021:
111 {
112 fmSendCommand(MC_CLOSE,0);
\ 0154 010000 LD BC,0
\ 0157 1E02 LD E,2
\ 0159 CD1000 CALL LWRD ?0169
113 //Close VCCOUT. by ccm
114 CloseFMPower();
\ 015C DBDF IN A,(223)
\ 015E CB8F RES 1,A
\ 0160 CBC7 SET 0,A
\ 0162 D3DF OUT (223),A
115 CloseFMPower2();
\ 0164 DBFA IN A,(250)
\ 0166 CBCF SET 1,A
\ 0168 D3FA OUT (250),A
116 CloseFMPower1();
\ 016A DBF8 IN A,(248)
\ 016C CB8F RES 1,A
\ 016E D3F8 OUT (248),A
\ 0170 ?0022:
117 }
118 VMWrite(FMStationTab,VM_AP_RADIO);
\ 0170 010020 LD BC,8192
\ 0173 113400 LD DE,FMStationTab
\ 0176 CD0000 CALL LWRD VMWrite
119 ResClose(res_fp); //资源关闭
\ 0179 ED5B0000 LD DE,(res_fp)
\ 017D 3E00 LD A,BYTE3 ResClose
\ 017F 210000 LD HL,LWRD ResClose
\ 0182 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
120
121 return result;
\ 0185 FDE5 PUSH IY
\ 0187 E1 POP HL
122 }
\ 0188 F1 POP AF
\ 0189 F1 POP AF
\ 018A DDE1 POP IX
\ 018C FDE1 POP IY
\ 018E C1 POP BC
\ 018F C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0192 FMdeal:
123
124 int FMdeal()
125 {
\ 0192 C5 PUSH BC
\ 0193 D5 PUSH DE
\ 0194 FDE5 PUSH IY
\ 0196 DDE5 PUSH IX
\ 0198 DD210000 LD IX,0
\ 019C DD39 ADD IX,SP
\ 019E 21F4FF LD HL,65524
\ 01A1 39 ADD HL,SP
\ 01A2 F9 LD SP,HL
126 int result=0,key;
127 char FMBand[3],buf[4]={"FM"};
\ 01A3 210400 LD HL,4
\ 01A6 39 ADD HL,SP
\ 01A7 EB EX DE,HL
\ 01A8 211000 LD HL,?0025
\ 01AB 010400 LD BC,4
\ 01AE EDB0 LDIR
128 //标志:need_draw,重画 BandSwitch,频段切换 FirstWait,刚进AP
129 bool need_draw=TRUE,BandSwitch=TRUE,FirstWait=TRUE;
130 long i;
131 int k,h;
132 static char active=0; //进入菜单的选中号
133
134
135 //result=0;
136 if(memcmp(fmdataflag,buf,2)!=0)
\ 01B0 FD210000 LD IY,0
\ 01B4 DD36FC01 LD (IX-4),1
\ 01B8 DD36FD01 LD (IX-3),1
\ 01BC DD36FE01 LD (IX-2),1
\ 01C0 03 INC BC
\ 01C1 03 INC BC
\ 01C2 119C00 LD DE,fmdataflag
\ 01C5 210400 LD HL,4
\ 01C8 39 ADD HL,SP
\ 01C9 CD0000 CALL LWRD ?MEMCMP_L11
\ 01CC 7D LD A,L
\ 01CD B4 OR H
\ 01CE 287B JR Z,?0028
\ 01D0 ?0027:
137 {
138 for(k=0;k<40;k++)
\ 01D0 AF XOR A
\ 01D1 DD77F6 LD (IX-10),A
\ 01D4 DD77F7 LD (IX-9),A
\ 01D7 ?0030:
\ 01D7 012880 LD BC,32808
\ 01DA DD6EF6 LD L,(IX-10)
\ 01DD DD66F7 LD H,(IX-9)
\ 01E0 78 LD A,B
\ 01E1 AC XOR H
\ 01E2 67 LD H,A
\ 01E3 ED42 SBC HL,BC
\ 01E5 3019 JR NC,?0029
\ 01E7 ?0031:
139 {
140 FMStationTab[k]=0;
\ 01E7 DD6EF6 LD L,(IX-10)
\ 01EA DD66F7 LD H,(IX-9)
\ 01ED 29 ADD HL,HL
\ 01EE 013400 LD BC,FMStationTab
\ 01F1 09 ADD HL,BC
\ 01F2 AF XOR A
\ 01F3 77 LD (HL),A
\ 01F4 23 INC HL
\ 01F5 77 LD (HL),A
\ 01F6 DD34F6 INC (IX-10)
\ 01F9 20DC JR NZ,?0030
\ 01FB DD34F7 INC (IX-9)
\ 01FE 18D7 JR ?0030
\ 0200 ?0029:
141 }
142 memcpy(fmdataflag,buf,3); //FM BUFFER标志赋初值
\ 0200 010300 LD BC,3
\ 0203 119C00 LD DE,fmdataflag
\ 0206 210400 LD HL,4
\ 0209 39 ADD HL,SP
\ 020A EDB0 LDIR
143 //US和JP暂存区赋初值
144 // FMStatusUS.freq=0x53d8;
145 FMStatusUS.freq=0x53d8;
\ 020C 21D853 LD HL,21464
\ 020F 228D00 LD (FMStatusUS+1),HL
146 FMStatusUS.mode=0;
\ 0212 AF XOR A
\ 0213 329100 LD (FMStatusUS+5),A
147 FMStatusUS.volume=24;
\ 0216 3E18 LD A,24
\ 0218 329200 LD (FMStatusUS+6),A
148 FMStatusUS.station=0;
\ 021B AF XOR A
\ 021C 328F00 LD (FMStatusUS+3),A
149 FMStatusUS.station_count=0;
\ 021F 329000 LD (FMStatusUS+4),A
150 FMStatusUS.stereo_status=1;
\ 0222 3E01 LD A,1
\ 0224 329300 LD (FMStatusUS+7),A
151 FMStatusJP.freq=0x28E0;
\ 0227 21E028 LD HL,10464
\ 022A 229500 LD (FMStatusJP+1),HL
152 FMStatusJP.mode=1;
\ 022D 329900 LD (FMStatusJP+5),A
153 FMStatusJP.volume=24;
\ 0230 3E18 LD A,24
\ 0232 329A00 LD (FMStatusJP+6),A
154 FMStatusJP.station=0;
\ 0235 AF XOR A
\ 0236 329700 LD (FMStatusJP+3),A
155 FMStatusJP.station_count=0;
\ 0239 329800 LD (FMStatusJP+4),A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?