"5: Cancel", "f: (Exit) Help",
};
-const char *mainmenu_helpstr[14] = {
+const char *mainmenu_helpstr[16] = {
"0: Setup", "1: Band",
"2:Resv", "3: Freq",
"4: Call user", "6: Set user",
"7: Power Off", "8: Volume",
"9: Reload", "A: AM/FM",
"B: Cancel","C: Set user",
- "D: Input user","F: (Exit) Help",
+ "D: Input user","E: FM PITCH",
+ " ", "F: (Exit) Help",
};
const char *numeric_helpstr[8] = {
c = printhelp_2lines(mainmenu_helpstr[l], mainmenu_helpstr[l + 1]);
if(c == charcode_f) return;
l += 2;
- if(l >= 14) {
+ if(l >= 16) {
c = numeric_help();
if(c == charcode_f) return;
if(help_version() == charcode_f) return;
}
}
+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();
}
case charcode_d:
input_userband();
break;
+ case charcode_e:
+ menu_setfmresolution();
+ break;
case charcode_f:
mainmenu_help();
// HELP
int backlight_level;
unsigned int ui_idlecount;
unsigned int memorynum;
+ unsigned char fm_tunepitch;
// _memoryfreq_t memoryfreqs[USER_MEMORY_NUM];
unsigned int pagenum;
+
} __radioset_t;
setup.fmfreq = setup.fmfreq_bank[setup.fmband];
setup.amfreq = setup.amfreq_bank[setup.amband];
setup.stereo = 0xff; // Auto
+ setup.fm_tunepitch = 0x02; // 100KHz
}
void valinit(void)
_PUTCHAR(' ');
set_amfmlamp(~setup.fm);
_PUTCHAR('W');
- print_numeric_nosupress(setup.threshold_width & 3, 1);
+ print_numeric_nosupress((setup.threshold_width & 3) * 10 + (setup.fm_tunepitch & 3), 2);
// vol = volume * 1.5 + prevolume * 3.5[dB]
#if 0
if(volume > 24) {
case charcode_2: // Down band
setband_updown(0x00);
break;
- case charcode_6: // Up Fast;
- case charcode_4: // Down Freq;
+ case charcode_6: // Up Middle;
+ case charcode_4: // Down Middle;
freq = 9; // 27KHz@3K/9KStep.
if(setup.fm != 0) {
- freq = 10; // 250KHz
+ switch(setup.fm_tunepitch & 3) {
+ case 3:
+ freq = 20; // 500KHz excepts TV1/TV2.
+ if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+ freq = 10; // 250KHz
+ }
+ break;
+ default:
+ freq = 10; // 250KHz
+ break;
+ }
} else if(setup.am_mode3k == 0){
freq = 6; // 30KHz
}
case charcode_7: // Down Fast;
freq = 33; // 99KHz@3K/9KStep.
if(setup.fm != 0){
- freq = 40; // 1MHz
+ switch(setup.fm_tunepitch & 3) {
+ case 3:
+ freq = 80; // 2MHz excepts TV1/TV2.
+ if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+ freq = 40; // 1MHz
+ }
+ break;
+ default:
+ freq = 40; // 1MHz
+ break;
+ }
} else if(setup.am_mode3k == 0){
freq = 20; // 100KHz
}
case charcode_3: // Up Slow;
case charcode_1: // Down Slow;
if(setup.fm != 0){
- freq = 4; // DOWN 100KHz
+ switch(setup.fm_tunepitch & 3) {
+ case 0:
+ freq = 1; // 25KHz
+ break;
+ case 1:
+ freq = 2; // 50KHz
+ break;
+ case 2:
+ freq = 4; // 100KHz
+ break;
+ default:
+ freq = 8; // 200KHz excepts TV1/TV2.
+ if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+ freq = 4; // 100KHz
+ }
+ break;
+ }
} else {
freq = 1; // 5KHz or 3KHz
if(setup.amband == AKC6955_BAND_MW2) {