{
unsigned long val;
_CLS();
- _LOCATE(0,0);
+// _LOCATE(0,0);
printstr("Set Freq:");
- _LOCATE(0,1);
+ _LOCATE_0_1();
if(setup.fm != 0){
// FM
printstr("FM ");
unsigned long band;
unsigned char band2;
unsigned int freq;
+ unsigned char mode3k;
+
_CLS();
- _LOCATE(0,0);
+// _LOCATE(0,0);
if(setup.fm != 0){
printstr("Set Band:FM#");
band2 = setup.fmband & 7;
+ if(band2 == AKC6955_BAND_FMUSER) {
+ userband.fm_usrbands[setup.fm_userbandnum].freq = setup.fmfreq;
+ }
setup.fmfreq_bank[setup.fmband] = setup.fmfreq;
band2 = pollkey_numeric(band2);
- if(band2 < 8) {
- setup.fmband = band2 & 7;
- setup.fmfreq = setup.fmfreq_bank[setup.fmband];
- akc6955_set_fmband(setup.fmband);
- freq = setup.fmfreq;
+ band2 &= 7;
+ if(band2 == AKC6955_BAND_FMUSER) {
+ call_userband(setup.fm_userbandnum);
+ freq = userband.fm_usrbands[setup.fm_userbandnum].freq;
+ } else {
+ freq = setup.fmfreq_bank[band2];
}
- akc6955_set_fmband(setup.fmband);
- freq = setup.fmfreq;
+ setup.fmband = band2;
+ akc6955_set_fmband(band2);
+ setup.fmfreq = freq;
} else {
printstr("Set Band:AM#");
band = setup.amband & 0x1f;
- setup.amfreq_bank[setup.amband] = setup.amfreq;
+ setup.amfreq_bank[band] = setup.amfreq;
+ if(band == AKC6955_BAND_AMUSER) {
+ userband.am_usrbands[setup.am_userbandnum].freq = setup.amfreq;
+ }
band = read_numeric(band, 2, 7, 1);
if((band & 0x80000000) != 0) return;
- setup.amband = band & 0x1f;
- setup.amfreq = setup.amfreq_bank[setup.amband];
+ band &= 0x1f;
+ setup.amband = band;
+ freq = setup.amfreq_bank[setup.amband];
switch(band) {
case AKC6955_BAND_LW:
case AKC6955_BAND_MW2:
- setup.am_mode3k = 0xff;
- break;
- case AKC6955_BAND_MW1:
- case AKC6955_BAND_MW3:
- case AKC6955_BAND_MW4:
- setup.am_mode3k = 0x00;
+ mode3k = 0xff;
break;
+ case AKC6955_BAND_AMUSER:
+ call_userband(setup.am_userbandnum);
+ mode3k = userband.am_usrbands[setup.am_userbandnum].mode3k;
+ freq = userband.am_usrbands[setup.am_userbandnum].freq;
+ break;
default:
+ mode3k = 0x00;
break;
}
-
- akc6955_set_amband(setup.amband);
- freq = setup.amfreq;
+ akc6955_mode3k(mode3k);
+ akc6955_set_amband(band);
+ setup.amfreq = freq;
+ setup.am_mode3k = mode3k;
}
akc6955_do_tune();
akc6955_set_freq(freq);
}
}
+void menu_setfmresolution(void)
+{
+ unsigned char c;
+ if(setup.fm != 0){
+ _CLS();
+// _LOCATE(0,0);
+ c = akc6955_get_scanrate_fm();
+ printstr("FM pitch:");
+ _PUTCHAR('0' + c);
+ printstr("->");
+ c = pollkey_numeric(c);
+ setup.fm_tunepitch = c & 3;
+ akc6955_set_scanrate_fm(c);
+ _CLS();
+// _LOCATE(0,0);
+ }
+}
+
void setup_akc6955(void)
{
akc6955_writecmd(AKC6955_POWER, 0xc0); // You musto *not* mute, set b2 to '0".
akc6955_set_thresh_fmstereo(setup.threshold_fmstereo);
akc6955_setvolumemode(0);
akc6955_set_lowboost(setup.lowboost);
+ akc6955_set_scanrate_fm(setup.fm_tunepitch);
set_stereomode();
}
printhelp_2lines("Menu:F=HELP", "B=CANCEL");
c = pollkey_single(); // 1012ms
- if(c == charcode_1){
+ switch(c) {
+ case charcode_1:
// Band
setband_direct();
- } else if(c == charcode_3){
+ break;
+ case charcode_3:
// Band
setfreq_direct();
- }else if(c == charcode_4){
+ break;
+ case charcode_4:
on_call_userfreq();
+ break;
// Scan
- }else if(c == charcode_5){
- // scan_start();
- // Scan
- }else if(c == charcode_6){
+ case charcode_5:
+ break;
+ case charcode_6:
on_set_userfreq();
+ break;
// Scan
- } else if(c == charcode_7){
+ case charcode_7:
menu_poweroff();
- } else if(c == charcode_8){
+ break;
+ case charcode_8:
// Set volume
set_volume();
- } else if(c == charcode_9){
- unsigned int freq;
+ break;
+ case charcode_9:
freq = akc6955_get_freq();
akc6955_set_freq(freq);
- } else if(c == charcode_0){
+ break;
+ case charcode_0:
// Setup Menu
setup_menu();
- } else if(c == charcode_a){
+ break;
+ case charcode_a:
toggle_amfm();
- } else if(c == charcode_c){
- // Set userband
+ break;
+ case charcode_c:
set_userband();
- } else if(c == charcode_d){
- // Call userband
+ break;
+ case charcode_d:
input_userband();
- } else if (c == charcode_f){
+ break;
+ case charcode_e:
+ menu_setfmresolution();
+ break;
+ case charcode_f:
mainmenu_help();
// HELP
+ break;
+ default:
+ break;
}
_CLS();
- _LOCATE(0,0);
+ _LOCATE_0_0();
}