basal_fmradio.lst
来自「MP3 整个 SDK」· LST 代码 · 共 984 行 · 第 1/4 页
LST
984 行
\ 00D8 212B00 LD HL,m_FMPlaystatus+3
\ 00DB 35 DEC (HL)
64 for(i=0;i<20;i++)
\ 00DC FD210000 LD IY,0
\ 00E0 ?0024:
\ 00E0 011480 LD BC,32788
\ 00E3 FDE5 PUSH IY
\ 00E5 E1 POP HL
\ 00E6 78 LD A,B
\ 00E7 AC XOR H
\ 00E8 67 LD H,A
\ 00E9 ED42 SBC HL,BC
\ 00EB 301E JR NC,?0023
\ 00ED ?0025:
65 {
66 if(m_FMStationTab[i]!=0)
\ 00ED FDE5 PUSH IY
\ 00EF E1 POP HL
\ 00F0 29 ADD HL,HL
\ 00F1 010000 LD BC,m_FMStationTab
\ 00F4 09 ADD HL,BC
\ 00F5 7E LD A,(HL)
\ 00F6 23 INC HL
\ 00F7 B6 OR (HL)
\ 00F8 280D JR Z,?0030
\ 00FA ?0027:
67 {
68 k++;
\ 00FA DD34FA INC (IX-6)
69 if(k==m_FMPlaystatus.station)break;
\ 00FD 3A2B00 LD A,(m_FMPlaystatus+3)
\ 0100 47 LD B,A
\ 0101 DD7EFA LD A,(IX-6)
\ 0104 B8 CP B
\ 0105 2804 JR Z,?0023
\ 0107 ?0029:
\ 0107 ?0030:
\ 0107 ?0028:
\ 0107 FD23 INC IY
\ 0109 18D5 JR ?0024
\ 010B ?0023:
70 }
71 }
72 if(i>=20) // 如没有找到电台,重新设置电台数
\ 010B 011480 LD BC,32788
\ 010E FDE5 PUSH IY
\ 0110 E1 POP HL
\ 0111 78 LD A,B
\ 0112 AC XOR H
\ 0113 67 LD H,A
\ 0114 ED42 SBC HL,BC
\ 0116 380B JR C,?0032
\ 0118 ?0031:
73 {
74 m_FMPlaystatus.station = m_FMPlaystatus.station_count = k +1;
\ 0118 DD46FA LD B,(IX-6)
\ 011B 04 INC B
\ 011C 78 LD A,B
\ 011D 322C00 LD (m_FMPlaystatus+4),A
\ 0120 ?0129:
\ 0120 322B00 LD (m_FMPlaystatus+3),A
\ 0123 ?0032:
75 }
76 break;
\ 0123 ?0033:
77 default:
78 break;
\ 0123 ?0006:
79 }
80 m_FMPlaystatus.freq=m_FMStationTab[i];
\ 0123 FDE5 PUSH IY
\ 0125 E1 POP HL
\ 0126 29 ADD HL,HL
\ 0127 010000 LD BC,m_FMStationTab
\ 012A 09 ADD HL,BC
\ 012B 46 LD B,(HL)
\ 012C 23 INC HL
\ 012D 66 LD H,(HL)
\ 012E 68 LD L,B
\ 012F C3B301 JP LWRD ?0118
81 BankSwitch(address_24_of(FM_SetFreq) >> 16);
82 FM_SetFreq(m_FMPlaystatus.freq);
83 return TRUE;
84
85 case MC_STEPGRID:
\ 0132 ?0034:
86 switch(param)
\ 0132 3E01 LD A,1
\ 0134 A9 XOR C
\ 0135 B0 OR B
\ 0136 2045 JR NZ,?0047
\ 0138 ?0036:
87 {
88 case UP:
89 if(((m_FMPlaystatus.freq+100)>0xa5e0+20)&&
90 (m_FMPlaystatus.mode==0))m_FMPlaystatus.freq=0x53d8;
\ 0138 2A2900 LD HL,(m_FMPlaystatus+1)
\ 013B 016400 LD BC,100
\ 013E 09 ADD HL,BC
\ 013F 4D LD C,L
\ 0140 44 LD B,H
\ 0141 21F4A5 LD HL,42484
\ 0144 A7 AND A
\ 0145 ED42 SBC HL,BC
\ 0147 300B JR NC,?0038
\ 0149 3A2D00 LD A,(m_FMPlaystatus+5)
\ 014C B7 OR A
\ 014D 2005 JR NZ,?0038
\ 014F ?0040:
\ 014F ?0039:
\ 014F ?0037:
\ 014F 21D853 LD HL,21464
\ 0152 185F JR ?0118
\ 0154 ?0038:
91 else if(((m_FMPlaystatus.freq+100)>0x5f90+20)&&
92 (m_FMPlaystatus.mode==1))m_FMPlaystatus.freq=0x28e0;
\ 0154 2A2900 LD HL,(m_FMPlaystatus+1)
\ 0157 016400 LD BC,100
\ 015A 09 ADD HL,BC
\ 015B 4D LD C,L
\ 015C 44 LD B,H
\ 015D 21A45F LD HL,24484
\ 0160 A7 AND A
\ 0161 ED42 SBC HL,BC
\ 0163 300B JR NC,?0043
\ 0165 3A2D00 LD A,(m_FMPlaystatus+5)
\ 0168 3D DEC A
\ 0169 2005 JR NZ,?0043
\ 016B ?0045:
\ 016B ?0044:
\ 016B ?0042:
\ 016B 21E028 LD HL,10464
\ 016E 1843 JR ?0118
93 else
\ 0170 ?0043:
94 m_FMPlaystatus.freq+=100;
\ 0170 212900 LD HL,m_FMPlaystatus+1
\ 0173 7E LD A,(HL)
\ 0174 C664 ADD A,100
\ 0176 77 LD (HL),A
\ 0177 304B JR NC,?0057
\ 0179 23 INC HL
\ 017A 34 INC (HL)
\ 017B ?0046:
\ 017B ?0041:
95 break;
\ 017B 1847 JR ?0057
\ 017D ?0047:
\ 017D 79 LD A,C
\ 017E B0 OR B
\ 017F 2043 JR NZ,?0057
96 case DOWN:
97 if(((m_FMPlaystatus.freq-100)<0x53d8-20)&&
98 (m_FMPlaystatus.mode==0))m_FMPlaystatus.freq=0xa5e0;
\ 0181 2A2900 LD HL,(m_FMPlaystatus+1)
\ 0184 019CFF LD BC,65436
\ 0187 09 ADD HL,BC
\ 0188 01C453 LD BC,21444
\ 018B A7 AND A
\ 018C ED42 SBC HL,BC
\ 018E 300B JR NC,?0049
\ 0190 3A2D00 LD A,(m_FMPlaystatus+5)
\ 0193 B7 OR A
\ 0194 2005 JR NZ,?0049
\ 0196 ?0051:
\ 0196 ?0050:
\ 0196 ?0048:
\ 0196 21E0A5 LD HL,42464
\ 0199 1818 JR ?0118
\ 019B ?0049:
99 else if(((m_FMPlaystatus.freq-100)<0x28e0-20)&&
100 (m_FMPlaystatus.mode==1))m_FMPlaystatus.freq=0x5f90;
\ 019B 2A2900 LD HL,(m_FMPlaystatus+1)
\ 019E 019CFF LD BC,65436
\ 01A1 09 ADD HL,BC
\ 01A2 01CC28 LD BC,10444
\ 01A5 A7 AND A
\ 01A6 ED42 SBC HL,BC
\ 01A8 300E JR NC,?0054
\ 01AA 3A2D00 LD A,(m_FMPlaystatus+5)
\ 01AD 3D DEC A
\ 01AE 2008 JR NZ,?0054
\ 01B0 ?0056:
\ 01B0 ?0055:
\ 01B0 ?0053:
\ 01B0 21905F LD HL,24464
\ 01B3 ?0118:
\ 01B3 222900 LD (m_FMPlaystatus+1),HL
101 else
\ 01B6 180C JR ?0057
\ 01B8 ?0054:
102 m_FMPlaystatus.freq-=100;
\ 01B8 212900 LD HL,m_FMPlaystatus+1
\ 01BB 7E LD A,(HL)
\ 01BC C69C ADD A,156
\ 01BE 77 LD (HL),A
\ 01BF 23 INC HL
\ 01C0 7E LD A,(HL)
\ 01C1 CEFF ADC A,255
\ 01C3 77 LD (HL),A
\ 01C4 ?0057:
\ 01C4 ?0052:
103 break;
\ 01C4 ?0058:
104 default:
105 break;
\ 01C4 ?0035:
106 }
107 BankSwitch(address_24_of(FM_SetFreq) >> 16);
\ 01C4 210000 LD HL,FM_SetFreq
\ 01C7 0E00 LD C,BYTE3 FM_SetFreq
\ 01C9 CD4B04 CALL LWRD ?0140
108 FM_SetFreq(m_FMPlaystatus.freq);
\ 01CC ED5B2900 LD DE,(m_FMPlaystatus+1)
\ 01D0 CD0000 CALL LWRD FM_SetFreq
109 return TRUE;
\ 01D3 C33104 JP LWRD ?0000
110
111
112 case MC_SEARCH:
\ 01D6 ?0059:
113 FM_MUTE(SetMUTE);
\ 01D6 1E01 LD E,1
\ 01D8 CD0000 CALL LWRD FM_MUTE
114 BankSwitch(address_24_of(FM_Search) >> 16);
\ 01DB 210000 LD HL,FM_Search
\ 01DE 0E00 LD C,BYTE3 FM_Search
\ 01E0 CD3C04 CALL LWRD ?0139
115 return FM_Search(m_FMPlaystatus.freq,param);
\ 01E3 ED5B2900 LD DE,(m_FMPlaystatus+1)
\ 01E7 CD0000 CALL LWRD FM_Search
\ 01EA ?0126:
\ 01EA 6F LD L,A
116
117 case MC_SAVESTATION:
\ 01EB C33304 JP LWRD ?0114
\ 01EE ?0060:
118 if(m_FMPlaystatus.station!=0) //当前电台在电台表中有保存的情况
\ 01EE 3A2B00 LD A,(m_FMPlaystatus+3)
\ 01F1 B7 OR A
\ 01F2 283F JR Z,?0062
\ 01F4 ?0061:
119 {
120 k=0;
121 for(i=0;i<20;i++)
\ 01F4 DD36FA00 LD (IX-6),0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?