📄 basal_fmradio.lst
字号:
\ 00C7 3E01 LD A,1
\ 00C9 1859 JR ?0129
\ 00CB ?0019:
85 }
86 break;
\ 00CB ?0020:
\ 00CB 79 LD A,C
\ 00CC B0 OR B
\ 00CD 2058 JR NZ,?0032
87 case DOWN: //找到上一电台频率
88 if (m_FMPlaystatus.station == 1)
\ 00CF 3A2B00 LD A,(m_FMPlaystatus+3)
\ 00D2 3D DEC A
\ 00D3 2007 JR NZ,?0022
\ 00D5 ?0021:
89 m_FMPlaystatus.station = m_FMPlaystatus.station_count + 1;
\ 00D5 3A2C00 LD A,(m_FMPlaystatus+4)
\ 00D8 3C INC A
\ 00D9 322B00 LD (m_FMPlaystatus+3),A
\ 00DC ?0022:
90 m_FMPlaystatus.station--;
\ 00DC 212B00 LD HL,m_FMPlaystatus+3
\ 00DF 35 DEC (HL)
91 for (i = 0; i < 20; i++)
\ 00E0 FD210000 LD IY,0
\ 00E4 ?0024:
\ 00E4 011480 LD BC,32788
\ 00E7 FDE5 PUSH IY
\ 00E9 E1 POP HL
\ 00EA 78 LD A,B
\ 00EB AC XOR H
\ 00EC 67 LD H,A
\ 00ED ED42 SBC HL,BC
\ 00EF 301E JR NC,?0023
\ 00F1 ?0025:
92 {
93 if (m_FMStationTab[i] != 0)
\ 00F1 FDE5 PUSH IY
\ 00F3 E1 POP HL
\ 00F4 29 ADD HL,HL
\ 00F5 010000 LD BC,m_FMStationTab
\ 00F8 09 ADD HL,BC
\ 00F9 7E LD A,(HL)
\ 00FA 23 INC HL
\ 00FB B6 OR (HL)
\ 00FC 280D JR Z,?0030
\ 00FE ?0027:
94 {
95 k++;
\ 00FE DD34F8 INC (IX-8)
96 if (k == m_FMPlaystatus.station)
\ 0101 3A2B00 LD A,(m_FMPlaystatus+3)
\ 0104 47 LD B,A
\ 0105 DD7EF8 LD A,(IX-8)
\ 0108 B8 CP B
\ 0109 2804 JR Z,?0023
\ 010B ?0029:
97 break;
\ 010B ?0030:
\ 010B ?0028:
\ 010B FD23 INC IY
\ 010D 18D5 JR ?0024
\ 010F ?0023:
98 }
99 }
100 if (i >= 20) // 如没有找到电台,重新设置电台数
\ 010F 011480 LD BC,32788
\ 0112 FDE5 PUSH IY
\ 0114 E1 POP HL
\ 0115 78 LD A,B
\ 0116 AC XOR H
\ 0117 67 LD H,A
\ 0118 ED42 SBC HL,BC
\ 011A 380B JR C,?0032
\ 011C ?0031:
101 {
102 m_FMPlaystatus.station = m_FMPlaystatus.station_count = k + 1;
\ 011C DD46F8 LD B,(IX-8)
\ 011F 04 INC B
\ 0120 78 LD A,B
\ 0121 322C00 LD (m_FMPlaystatus+4),A
\ 0124 ?0129:
\ 0124 322B00 LD (m_FMPlaystatus+3),A
\ 0127 ?0032:
103 }
104 break;
\ 0127 ?0033:
105 default:
106 break;
\ 0127 ?0006:
107 }
108 m_FMPlaystatus.freq = m_FMStationTab[i];
\ 0127 FDE5 PUSH IY
\ 0129 E1 POP HL
\ 012A 29 ADD HL,HL
\ 012B 010000 LD BC,m_FMStationTab
\ 012E 09 ADD HL,BC
\ 012F 46 LD B,(HL)
\ 0130 23 INC HL
\ 0131 66 LD H,(HL)
\ 0132 68 LD L,B
\ 0133 1851 JR ?0118
109 BankSwitch(address_24_of(FM_SetFreq) >> 16);
110 Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
111 FM_SetFreq(Tempfreq);
112 return TRUE;
113
114 case MC_STEPGRID:
\ 0135 ?0034:
115 switch (param)
\ 0135 3E01 LD A,1
\ 0137 A9 XOR C
\ 0138 B0 OR B
\ 0139 2028 JR NZ,?0047
\ 013B ?0036:
116 {
117 case UP:
118 if(((m_FMPlaystatus.freq+1)>210)&&(m_FMPlaystatus.mode==0))
\ 013B ED4B2900 LD BC,(m_FMPlaystatus+1)
\ 013F 03 INC BC
\ 0140 21D200 LD HL,210
\ 0143 ED42 SBC HL,BC
\ 0145 3006 JR NC,?0038
\ 0147 3A2D00 LD A,(m_FMPlaystatus+5)
\ 014A B7 OR A
\ 014B 280E JR Z,?0130
\ 014D ?0040:
\ 014D ?0039:
\ 014D ?0037:
119 m_FMPlaystatus.freq=0;
\ 014D ?0038:
120 else if(((m_FMPlaystatus.freq+1)>140)&&(m_FMPlaystatus.mode==1))
\ 014D 218C00 LD HL,140
\ 0150 A7 AND A
\ 0151 ED42 SBC HL,BC
\ 0153 300A JR NC,?0043
\ 0155 3A2D00 LD A,(m_FMPlaystatus+5)
\ 0158 3D DEC A
\ 0159 2004 JR NZ,?0043
\ 015B ?0045:
\ 015B ?0044:
\ 015B ?0042:
121 m_FMPlaystatus.freq=0;
\ 015B ?0130:
\ 015B 6F LD L,A
\ 015C 67 LD H,A
\ 015D 1827 JR ?0118
122 else
\ 015F ?0043:
123 {
124 m_FMPlaystatus.freq += 1;
\ 015F 69 LD L,C
\ 0160 60 LD H,B
\ 0161 1823 JR ?0118
\ 0163 ?0046:
\ 0163 ?0041:
125 }
126 break;
\ 0163 ?0047:
\ 0163 79 LD A,C
\ 0164 B0 OR B
\ 0165 2030 JR NZ,?0057
127 case DOWN:
128 if((m_FMPlaystatus.freq == 0)&&(m_FMPlaystatus.mode==0))m_FMPlaystatus.freq=210;
\ 0167 2A2900 LD HL,(m_FMPlaystatus+1)
\ 016A 7D LD A,L
\ 016B B4 OR H
\ 016C 200B JR NZ,?0049
\ 016E 3A2D00 LD A,(m_FMPlaystatus+5)
\ 0171 B7 OR A
\ 0172 2005 JR NZ,?0049
\ 0174 ?0051:
\ 0174 ?0050:
\ 0174 ?0048:
\ 0174 21D200 LD HL,210
\ 0177 180D JR ?0118
\ 0179 ?0049:
129 else if((m_FMPlaystatus.freq==0)&&(m_FMPlaystatus.mode==1))m_FMPlaystatus.freq=140;
\ 0179 7D LD A,L
\ 017A B4 OR H
\ 017B 200E JR NZ,?0054
\ 017D 3A2D00 LD A,(m_FMPlaystatus+5)
\ 0180 3D DEC A
\ 0181 2008 JR NZ,?0054
\ 0183 ?0056:
\ 0183 ?0055:
\ 0183 ?0053:
\ 0183 218C00 LD HL,140
\ 0186 ?0118:
\ 0186 222900 LD (m_FMPlaystatus+1),HL
130
131 // if(((m_FMPlaystatus.freq-1)<0)&&
132 else
\ 0189 180C JR ?0057
\ 018B ?0054:
133 {
134 m_FMPlaystatus.freq-=1;
\ 018B 212900 LD HL,m_FMPlaystatus+1
\ 018E 7E LD A,(HL)
\ 018F C6FF ADD A,255
\ 0191 77 LD (HL),A
\ 0192 23 INC HL
\ 0193 7E LD A,(HL)
\ 0194 CEFF ADC A,255
\ 0196 77 LD (HL),A
\ 0197 ?0057:
\ 0197 ?0052:
135 }
136 break;
\ 0197 ?0058:
137 default:
138 break;
\ 0197 ?0035:
139 }
140 BankSwitch(address_24_of(FM_SetFreq) >> 16);
\ 0197 210000 LD HL,FM_SetFreq
\ 019A 0E00 LD C,BYTE3 FM_SetFreq
\ 019C CD0C04 CALL LWRD ?0140
141 Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
142 //SetFreq = m_FMPlaystatus.freq;
143 FM_SetFreq(Tempfreq);
\ 019F EB EX DE,HL
\ 01A0 CD0000 CALL LWRD FM_SetFreq
144 return TRUE;
\ 01A3 C30104 JP LWRD ?0000
145
146 case MC_SEARCH:
\ 01A6 ?0059:
147 FM_MUTE(SetMUTE);
\ 01A6 1E01 LD E,1
\ 01A8 CD0000 CALL LWRD FM_MUTE
148 BankSwitch(address_24_of(FM_Search) >> 16);
\ 01AB 210000 LD HL,FM_Search
\ 01AE 0E00 LD C,BYTE3 FM_Search
\ 01B0 CD0C04 CALL LWRD ?0140
149 Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
150 //SearchFreq = m_FMPlaystatus.freq ;
151 return FM_Search(Tempfreq,param);
\ 01B3 DD4EFE LD C,(IX-2)
\ 01B6 EB EX DE,HL
\ 01B7 CD0000 CALL LWRD FM_Search
\ 01BA ?0126:
\ 01BA 6F LD L,A
152
153 case MC_SAVESTATION:
\ 01BB C30304 JP LWRD ?0114
\ 01BE ?0060:
154 if (m_FMPlaystatus.station != 0) //当前电台在电台表中有保存的情况
\ 01BE 3A2B00 LD A,(m_FMPlaystatus+3)
\ 01C1 B7 OR A
\ 01C2 283F JR Z,?0062
\ 01C4 ?0061:
155 {
156 k = 0;
157 for (i = 0; i < 20; i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -