📄 main.lst
字号:
106 TimeCount = 0;
\ 0091 210000 LD HL,0
\ 0094 220000 LD (TimeCount),HL
107 ///////////////////////////////
108 // buffer_f3=input8(0xf3); //由于外部rtc时间需要用到c0和c1口需要将其使能关闭
109 // output8(0xf3,0x00);
110 //////////////////////////////
111 for (i = 0; i < 599; i++)
\ 0097 23 INC HL
\ 0098 23 INC HL
\ 0099 39 ADD HL,SP
\ 009A AF XOR A
\ 009B 77 LD (HL),A
\ 009C 23 INC HL
\ 009D 77 LD (HL),A
\ 009E ?0008:
\ 009E 015782 LD BC,33367
\ 00A1 2B DEC HL
\ 00A2 56 LD D,(HL)
\ 00A3 23 INC HL
\ 00A4 66 LD H,(HL)
\ 00A5 6A LD L,D
\ 00A6 3E80 LD A,128
\ 00A8 AC XOR H
\ 00A9 67 LD H,A
\ 00AA ED42 SBC HL,BC
\ 00AC 3024 JR NC,?0007
\ 00AE ?0009:
112 {
113 j = 50;
\ 00AE DD213200 LD IX,50
\ 00B2 ?0012:
114 for (; j > 0; j--)
\ 00B2 DDE5 PUSH IX
\ 00B4 C1 POP BC
\ 00B5 210000 LD HL,0
\ 00B8 F680 OR 128
\ 00BA ED42 SBC HL,BC
\ 00BC E2C000 JP PO,?0134
\ 00BF AC XOR H
\ 00C0 ?0134:
\ 00C0 F2C700 JP P,?0011
\ 00C3 ?0013:
115 {
116 ;
117 }
118 }
\ 00C3 DD2B DEC IX
\ 00C5 18EB JR ?0012
\ 00C7 ?0011:
\ 00C7 210200 LD HL,2
\ 00CA 39 ADD HL,SP
\ 00CB 34 INC (HL)
\ 00CC 23 INC HL
\ 00CD 20CF JR NZ,?0008
\ 00CF 34 INC (HL)
\ 00D0 18CC JR ?0008
\ 00D2 ?0007:
\ 00D2 ?0016:
119 //if(!DRV_Install("I2C_SLA.DRV",0)) while(1) {;}
120
121 //clear message queue for make sure delay 0.5s
122 while (ap_get_message() != 0)
\ 00D2 CD0000 CALL LWRD ap_get_message
\ 00D5 B7 OR A
\ 00D6 20FA JR NZ,?0007
\ 00D8 ?0017:
\ 00D8 ?0015:
123 {
124 ;
125 }
126 ap_sleep(1);
\ 00D8 110100 LD DE,1
\ 00DB 3E00 LD A,BYTE3 ap_sleep
\ 00DD 210000 LD HL,LWRD ap_sleep
\ 00E0 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
127
128 res_fp = ResOpen("ui30.res"); //打开资源
\ 00E3 110000 LD DE,?0018
\ 00E6 3E00 LD A,BYTE3 ResOpen
\ 00E8 210000 LD HL,LWRD ResOpen
\ 00EB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00EE 220000 LD (res_fp),HL
129 ASSERT(res_fp != NULL); //问题报错,DEBUG时有效
130 //-------安装ud驱动------------
131 DRV_ActiveUD(0x00, MODE_SLOW);
\ 00F1 0E01 LD C,1
\ 00F3 1E00 LD E,0
\ 00F5 CD0000 CALL LWRD DRV_ActiveUD
132
133 result = VMRead(&F_comval, VM_SYSTEM, sizeof(F_comval)); //读系统变量
\ 00F8 212000 LD HL,32
\ 00FB E5 PUSH HL
\ 00FC 010002 LD BC,512
\ 00FF 111D00 LD DE,g_comval
\ 0102 CD0000 CALL LWRD VMRead
\ 0105 E1 POP HL
134 ASSERT(result);
135 //check if valid
136 if (F_comval.magic != MAGIC_COMVAL) //第一次读,初始化
\ 0106 21ADDE LD HL,57005
\ 0109 ED4B1D00 LD BC,(g_comval)
\ 010D A7 AND A
\ 010E ED42 SBC HL,BC
\ 0110 2806 JR Z,?0020
\ 0112 ?0019:
137 {
138 DUMP_STRING("F_comval init-ed!");
139 //COMVAL_INIT(F_comval);
140 GetDefaultComval(&F_comval);
\ 0112 111D00 LD DE,g_comval
\ 0115 CD0000 CALL LWRD GetDefaultComval
\ 0118 ?0020:
141 }
142 ap_message_init(&F_comval); //系统消息(如RTC COUNTER)初始化
\ 0118 111D00 LD DE,g_comval
\ 011B 3E00 LD A,BYTE3 ap_message_init
\ 011D 210000 LD HL,LWRD ap_message_init
\ 0120 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
143 result = VMRead(FMStationTab, VM_AP_RADIO, 80 + sizeof(fm_play_status_t) * 3 + 3); //长度重新计算
\ 0123 216E00 LD HL,110
\ 0126 E5 PUSH HL
\ 0127 010020 LD BC,8192
\ 012A 113D00 LD DE,FMStationTab
\ 012D CD0000 CALL LWRD VMRead
\ 0130 E1 POP HL
144 ASSERT(result);
145 // BatValue=GetBattery();
146 {
147 BYTE KeyTone_bak;
148 KeyTone_bak = F_comval.KeyTone;
\ 0131 3A3A00 LD A,(g_comval+29)
\ 0134 210700 LD HL,7
\ 0137 39 ADD HL,SP
\ 0138 77 LD (HL),A
149 if (F_comval.KeyTone)
\ 0139 B7 OR A
\ 013A 2804 JR Z,?0022
\ 013C ?0021:
150 {
151 F_comval.KeyTone = 0;
\ 013C AF XOR A
\ 013D 323A00 LD (g_comval+29),A
\ 0140 ?0022:
152 //sKY_Beep(F_comval.KeyTone);
153 }
154 result = FMdeal(param);
\ 0140 23 INC HL
\ 0141 5E LD E,(HL)
\ 0142 23 INC HL
\ 0143 56 LD D,(HL)
\ 0144 3E00 LD A,BYTE3 FMdeal
\ 0146 21B601 LD HL,LWRD FMdeal
\ 0149 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 014C E5 PUSH HL
\ 014D FDE1 POP IY
155 F_comval.KeyTone = KeyTone_bak;
\ 014F 210700 LD HL,7
\ 0152 39 ADD HL,SP
\ 0153 7E LD A,(HL)
\ 0154 323A00 LD (g_comval+29),A
156 }
157 //保存变量
158 fmSendCommand(MC_BACKUP, (int) &radio_param);
\ 0157 010200 LD BC,radio_param
\ 015A 1E44 LD E,68
\ 015C CD4A00 CALL LWRD ?0167
159 if (result == RESULT_RECORD) //截获FM中所有Rec热键录音。
\ 015F FDE5 PUSH IY
\ 0161 E1 POP HL
\ 0162 3E33 LD A,51
\ 0164 AD XOR L
\ 0165 B4 OR H
\ 0166 2004 JR NZ,?0024
\ 0168 ?0023:
160 result = RESULT_FMREC_START;
\ 0168 FD212200 LD IY,34
\ 016C ?0024:
161 if ((result != RESULT_FMREC_NOSTART) && (result != RESULT_FMREC_START)) //非电台录音退出!for FM record by ccm
\ 016C FDE5 PUSH IY
\ 016E E1 POP HL
\ 016F 3E23 LD A,35
\ 0171 AD XOR L
\ 0172 B4 OR H
\ 0173 281A JR Z,?0026
\ 0175 3E22 LD A,34
\ 0177 AD XOR L
\ 0178 B4 OR H
\ 0179 2814 JR Z,?0026
\ 017B ?0028:
\ 017B ?0027:
\ 017B ?0025:
162 {
163 fmSendCommand(MC_CLOSE, 0);
\ 017B 010000 LD BC,0
\ 017E 1E02 LD E,2
\ 0180 CD4A00 CALL LWRD ?0167
164 //Close VCCOUT. by ccm
165 // CloseFMPower();
166 CloseFMPower2();
\ 0183 DBC2 IN A,(194)
\ 0185 CBC7 SET 0,A
\ 0187 D3C2 OUT (194),A
167 CloseFMPower1();
\ 0189 DBC2 IN A,(194)
\ 018B CBC7 SET 0,A
\ 018D D3C2 OUT (194),A
\ 018F ?0026:
168 }
169 ///////////////////////////////
170 //由于外部rtc时间需要用到c0和c1口,需要将其使能恢复
171 // output8(0xf3,buffer_f3);
172 //////////////////////////////
173 VMWrite(FMStationTab, VM_AP_RADIO);
\ 018F 010020 LD BC,8192
\ 0192 113D00 LD DE,FMStationTab
\ 0195 CD0000 CALL LWRD VMWrite
174 ResClose(res_fp); //资源关闭
\ 0198 ED5B0000 LD DE,(res_fp)
\ 019C 3E00 LD A,BYTE3 ResClose
\ 019E 210000 LD HL,LWRD ResClose
\ 01A1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
175
176 return result;
\ 01A4 FDE5 PUSH IY
\ 01A6 E1 POP HL
177 }
\ 01A7 ?0029:
\ 01A7 EB EX DE,HL
\ 01A8 210A00 LD HL,10
\ 01AB 39 ADD HL,SP
\ 01AC F9 LD SP,HL
\ 01AD EB EX DE,HL
\ 01AE ?0165:
\ 01AE DDE1 POP IX
\ 01B0 FDE1 POP IY
\ 01B2 C1 POP BC
\ 01B3 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01B6 FMdeal:
178
179 int FMdeal(int test)
180 {
\ 01B6 C5 PUSH BC
\ 01B7 FDE5 PUSH IY
\ 01B9 DDE5 PUSH IX
\ 01BB DD210000 LD IX,0
\ 01BF DD39 ADD IX,SP
\ 01C1 D5 PUSH DE
\ 01C2 21F4FF LD HL,65524
\ 01C5 39 ADD HL,SP
\ 01C6 F9 LD SP,HL
181 int result = 0, key;
182 char FMBand[3], buf[4] =
183 { "FM" };
\ 01C7 210600 LD HL,6
\ 01CA 39 ADD HL,SP
\ 01CB EB EX DE,HL
\ 01CC 213000 LD HL,?0030
\ 01CF 010400 LD BC,4
\ 01D2 EDB0 LDIR
184 //标志:need_draw,重画 BandSwitch,频段切换 FirstWait,刚进AP
185 bool need_draw = TRUE, BandSwitch = TRUE, FirstWait = TRUE;
186 long i;
187 int k, h;
188 static char active = 0; //进入菜单的选中号
189
190 if (test == 0xff)
\ 01D4 FD210000 LD IY,0
\ 01D8 DD36F201 LD (IX-14),1
\ 01DC DD36F301 LD (IX-13),1
\ 01E0 DD36FC01 LD (IX-4),1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -