Project

General

Profile

New Model #2531 » ft-991a-memory-map.txt

Dave Wiegman, 02/01/2024 04:02 AM

 
1
# Based on the work by Gil Kloepfer KI5BPK
2
# https://www.kloepfer.org/ft991a/
3
MEM_FORMAT = """
4
struct mem_struct {
5
  u8   mode; // 0=LSB 1=USB 2=CW-USB 3=CW-LSB 4=AM 5=FM 6=RTTY-LSB 7=RTTY-USB 8=DATA-LSB 9=DATA-USB A=DATA-FM B=C4FM
6
  u8   skip:1,
7
       unused0:1,
8
       clarifier_enabled:1,
9
       clarifier_rx:1,
10
       clarifier_tx:1,
11
       tuner_on:1,
12
       unused1:1,
13
       locked:1;
14
  u8   repeater_modified:1, // 0=No, 1=Yes
15
       is_duplex:1, // 0=No, 1=Yes
16
       unused2:2,
17
       duplex:2, // -=0 SIMP=1 +=2
18
       nb_on:1,
19
       unused3:1;
20
  u8   tuning_step:1, // 0=5Hz;*1=10Hz
21
       unused4:1,
22
       tmode:3, // 0=OFF, 1=ENC, 2=CTCSS 3=D.ENC 4=DCS
23
       unused5:2,
24
       att:1;
25
  u8   unused6:2,
26
       is_hf_narrow:1, //*W 2400=1;N 1500=0
27
       unknown0:1,
28
       is_fm_narrow:1, // *W 16k=0; N 9k=1
29
       unused7:3;
30
  u8   unused8:6,
31
       ipo:2; // IPO=0,AMP1=2,AMP2=3
32
  u8   unused9:3,
33
       dnr_on:1,
34
       dnr_level:4; // 1-15
35
  u8   unknown1;
36
  u8   unknown2;
37
  u8   split; // 0x53 (s) split, 0x00 not split
38
  u8   notch_on:1,
39
       contour_on:1,
40
       unused10:3,
41
       unknown3:1,
42
       bk_in_on:1,
43
       unused11:1;
44
  u8   dnf_on:1,
45
       agc_on:1,
46
       agc:2, // 0=AUTO;1=FAST;2=MID;3=SLOW
47
       unused12:4;
48
  u16  contour_freq; // (H..L) x 10 Hz  default=300 (0x001E) range 10->3200 Hz
49
  u16  notch_freq; // (H..L)  x 10 Hz  2 bytes   Default: 1500 (0x0096) range 10->3200 Hz
50
  u8   unknown;
51
  u8   width_code; // see CAT table for SH command
52
  u16  if_shift; // freq (H..L/2sCompl)   2 bytes   Default: 0 range: -1200 -> 1200 Hz step 20 Hz
53
  u8   unused13:2,
54
       apf_on:1,
55
       unused14:1,
56
       ch_dial:2,
57
       unused15:1,
58
       moni_on:1;
59
  u8   weird_filler[49];
60
  u8   tone; // from CAT tone chart table 1
61
  u8   dcs; // from CAT tone chart
62
  u8   tx_ctcss; // from CAT tone chart table 1
63
  u8   rx_dcs; // from CAT tone chart table 1
64
  u16  clarifier_freq;
65
  u32  freq; // Frequency in Hz (H..L)
66
  u32  offset; // Frequency in Hz (H..L)
67
  char name[12];
68
};
69

    
70
struct keyer_memory {
71
  u8   mess_length;
72
  u8   unused; // 0x00
73
  char message[50];
74
};
75

    
76
struct dgid_list {
77
  u8   tx;
78
  u8   rx;
79
  char tag[8];
80
};
81

    
82
#seekto 0x0125;
83
struct {
84
  u8   tuning_mode:3, // Mem=2,MT=3,VFO-A=4
85
       unused1:5;
86
  u8   clarifier:2, // Off=0, RX=3
87
       unused2:4,
88
       current_band:2; // 0=HF, 1=50MHz, 2=VHF, 3=UHF
89
  u8   fast:1, // On=1 Off=0
90
       unused3:1,
91
       lock:1, // On=1 Off=0
92
       unused4:5;
93
  u8   unused5:5,
94
       proc:1, // *Off=0, On=1 (level in 0x016F)
95
       split:1, // *Off=0, On=1
96
       mic_eq:1; // *Off=0, On=1
97
  u8   vox:1, // *Off=0, On=1
98
       keyer:1, // *Off=0, On=1
99
       ununsed6:4,
100
       ars_144:1, // Off=0, *On=1
101
       ars_430:1; // Off=0, *On=1
102
  u8   disp_mode:3, // M-LIST=4, BAND=2, MODE=1, Waterfall=0
103
       unused7:5;
104
  u8   menu_num; // Menu number (-1) selected with MULTI knob (recall with MENU)
105
  u8   menu_line_selected; // Menu display line selected w/MULTI (0=top, 1=middle, 2=bottom)
106
  u8   unknown1;
107
  u8   menu_num_cs; // Menu number (-1) programmed to C.S. (Custom Switch) button
108
  u8   band_stack_b:4, // Band stack ID of VFO-B (using A=B)
109
       band_stack_a:4; // Band stack ID of VFO-A
110
  u8   unknown2;
111
  u8   band_stack_pos_7:2, // 7.0 Band/Band stack stack position (see note 5)
112
       band_stack_pos_5:2, // 5.0 Band/Band stack stack position (see note 5)
113
       band_stack_pos_35:2, // 3.5 Band/Band stack stack position (see note 5)
114
       band_stack_pos_18:2; // 1.8 Band/Band stack stack position (see note 5)
115
  u8   band_stack_pos_21:2, // 21 Band/Band stack stack position (see note 5)
116
       band_stack_pos_18:2, // 18 Band/Band stack stack position (see note 5)
117
       band_stack_pos_14:2, // 14 Band/Band stack stack position (see note 5)
118
       band_stack_pos_10:2; // 10 Band/Band stack stack position (see note 5)
119
  u8   band_stack_pos_air:2, // Air Band/Band stack stack position (see note 5)
120
       band_stack_pos_50:2, // 50 Band/Band stack stack position (see note 5)
121
       band_stack_pos_28:2, // 28 Band/Band stack stack position (see note 5)
122
       band_stack_pos_24:2; // 24 Band/Band stack stack position (see note 5)
123
  u8   band_stack_pos_gen:2, // GEN Band/Band stack stack position (see note 5)
124
       band_stack_pos_mw:2, // MW Band/Band stack stack position (see note 5)
125
       band_stack_pos_430:2, // 430 Band/Band stack stack position (see note 5)
126
       band_stack_pos_144:2; // 144 Band/Band stack stack position (see note 5)
127
  u8   unknown3[7];
128
  u8   moni_level; // MONI level (default=50)
129
  u8   pitch_level; // (key) PITCH level (Hz)  300+(val)*10, default=30, 0->75
130
  char callsign[10]; // Callsign (10 characters, padded with ASCII blank)
131
  u8   unknown4;
132
  u8   multi_knob_vfoa; // (VFO-A) MULTI knob controlling button (see note 6)
133
  u8   multi_knob_5mem; // (5MHz0-Mem) MULTI knob controlling button (see note 6)
134
  u8   unknown5[3];
135
  u8   multi_knob_mem_mt; // (MEM/MT) MULTI knob controlling button (see note 6)
136
  u8   multi_knob_mem_c4fm; // (MEM/C4FM) MULTI knob controlling button (see note 6)
137
  u8   unknown6;
138
  u8   c4fm_ams:1, // C4FM AMS *0=Off, 1=On
139
       c4fm_dig:1, // C4FM DIGITAL mode *0=DN, 1=VW
140
       unused8:6;
141
  u8   unknown7[6];
142
  u8   contest_num; // Menu 017 (CONTEST NUMBER) - Updated only when unit powered off, will change if operating CW in contest mode
143
  u8   unused9:5,
144
       scope_mode:1, // Scope Mode:  0=One-shot, 1=Continuous (SWEEP)
145
       unused:2;
146
  u8   power_hf_ssb; // RF Power HF : USB+LSB
147
  u8   power_hf_am;  // RF Power HF : AM
148
  u8   power_hf_dig;  // RF Power HF : CW+RTTY+DATA
149
  u8   power_50_ssb; // RF Power 50 MHz : USB+LSB
150
  u8   power_50_am;  // RF Power 50 MHz : AM
151
  u8   power_50_dig;  // RF Power 50 MHz : CW+RTTY+DATA
152
  u8   power_vhf_ssb; // RF Power VHF : USB+LSB
153
  u8   power_vhf_am;  // RF Power VHF : AM
154
  u8   power_vhf_fm;  // RF Power VHF : FM
155
  u8   power_uhf_ssb; // RF Power UHF : USB+LSB
156
  u8   power_uhf_am;  // RF Power UHF : AM
157
  u8   power_uhf_fm;  // RF Power UHF : FM
158
  u8   unknown8;
159
  u8   apf_level; // APF level [SV]  (val) * 10Hz, default=0
160
  u8   unknown9[5];
161
  u8   cur_cw_speed; // Current CW speed (wpm)
162
  u8   unknown10;
163
  u8   speech_proc_level; // PROC (Speech Processor) level (0-100), *50 (on/off in 0128)
164
  u16  unknown11;
165
  u8   squelch; // Squelch (SQL) 0-100  (TODO: XXX SQL for other modes???)
166
  u8   unknown12;
167
  u8   meter_mode; // Meter PO=0,ALC=1,SWR=2,COMP=3,IDD=4,VDD=5
168
  u8   unknown13[7];
169
  u8   mic_gain; // "MIC GAIN" 0-100  (TODO: different on different modes)
170
  u8   unknown14;
171
  u8   ssb_p_dt_gain; // (LSB+USB/P) DT GAIN value (0-100) *50
172
  u8   unknown15;
173
  u8   ssb_d_dt_gain; // (LSB+USB/D) DT GAIN value (0-100) *50
174
  u8   unknown16[8];
175
  u8   phone_ssb_bot_func_1; // (Phone/U+L) Bottom function button keycodes 1 (see note 6)
176
  u8   phone_ssb_bot_func_2; // (Phone/U+L) Bottom function button keycodes 2 (see note 6)
177
  u8   phone_ssb_bot_func_3; // (Phone/U+L) Bottom function button keycodes 3 (see note 6)
178
  u8   phone_ssb_bot_func_4; // (Phone/U+L) Bottom function button keycodes 4 (see note 6)
179
  u8   cw_ssb_bot_func_1; // (CW/U+L) Bottom function button keycodes 1 (see note 6)
180
  u8   cw_ssb_bot_func_2; // (CW/U+L) Bottom function button keycodes 2 (see note 6)
181
  u8   cw_ssb_bot_func_3; // (CW/U+L) Bottom function button keycodes 3 (see note 6)
182
  u8   cw_ssb_bot_func_4; // (CW/U+L) Bottom function button keycodes 4 (see note 6)
183
  u8   rtty_ssb_bot_func_1; // (RTTY/U+L) Bottom function button keycodes 1 (see note 6)
184
  u8   rtty_ssb_bot_func_2; // (RTTY/U+L) Bottom function button keycodes 2 (see note 6)
185
  u8   rtty_ssb_bot_func_3; // (RTTY/U+L) Bottom function button keycodes 3 (see note 6)
186
  u8   rtty_ssb_bot_func_4; // (RTTY/U+L) Bottom function button keycodes 4 (see note 6)
187
  u8   data_ssb_bot_func_1; // (DATA/U+L) Bottom function button keycodes 1 (see note 6)
188
  u8   data_ssb_bot_func_2; // (DATA/U+L) Bottom function button keycodes 2 (see note 6)
189
  u8   data_ssb_bot_func_3; // (DATA/U+L) Bottom function button keycodes 3 (see note 6)
190
  u8   data_ssb_bot_func_4; // (DATA/U+L) Bottom function button keycodes 4 (see note 6)
191
  u8   am_bot_func_1; // (AM/U+L) Bottom function button keycodes 1 (see note 6)
192
  u8   am_bot_func_2; // (AM/U+L) Bottom function button keycodes 2 (see note 6)
193
  u8   am_bot_func_3; // (AM/U+L) Bottom function button keycodes 3 (see note 6)
194
  u8   am_bot_func_4; // (AM/U+L) Bottom function button keycodes 4 (see note 6)
195
  u8   fm_bot_func_1; // (FM/U+L) Bottom function button keycodes 1 (see note 6)
196
  u8   fm_bot_func_2; // (FM/U+L) Bottom function button keycodes 2 (see note 6)
197
  u8   fm_bot_func_3; // (FM/U+L) Bottom function button keycodes 3 (see note 6)
198
  u8   fm_bot_func_4; // (FM/U+L) Bottom function button keycodes 4 (see note 6)
199
  u8   c4fm_bot_func_1; // (C4FM/U+L) Bottom function button keycodes 1 (see note 6)
200
  u8   c4fm_bot_func_2; // (C4FM/U+L) Bottom function button keycodes 2 (see note 6)
201
  u8   c4fm_bot_func_3; // (C4FM/U+L) Bottom function button keycodes 3 (see note 6)
202
  u8   c4fm_bot_func_4; // (C4FM/U+L) Bottom function button keycodes 4 (see note 6)
203
  u8   cw_ssb_func_page:4, // (CW-U+L) Function Page Number (see note 6)
204
       phone_ssb_func_page:4; // (Phone U+L) Function Page Number (see note 6)
205
  u8   data_ssb_func_page:4, // (DATA-U+L) Function Page Number (see note 6)
206
       rtty_ssb_func_page:4; // (RTTY-U+L) Function Page Number (see note 6)
207
  u8   fm_func_page:4, // (all FM) Function Page Number (see note 6)
208
       am_func_page:4; // (AM) Function Page Number (see note 6)
209
  u8   unk:4,
210
       c4fm_func_page:4; // (C4FM) Function Page Number (see note 6)
211
  u8   unknown17;
212
  u8   time_display:1, // Time Display: *0=UTC, 1=Local
213
       daylight_savings:1, // Daylight Savings (DST): *0=Off, 1=On
214
       date_format:1, // *MM/DD/YYYY=0 YYYY/MM/DD=1
215
       latitude_dir:1, // Latitude: 0=N, 1=S (see note 2)
216
       longitude_dir:1, // Longitude: 0=E, 1=W (see note 2)
217
       unknown18:3;
218
  u8   lat_deg; // Latitude = DD MM ss s0      ==> DD MM.sss
219
  u8   lat_min; // Note that seconds are BCD encoded as decimal seconds (ie. a number after
220
  u8   lat_sec; // the decimal point, or n*60 to get actual seconds), for example:
221
  u8   lat_sec0; // 01 23'53" would be encoded as 01 23 88 30 Because 53/60 = 0.883
222
  u8   lon_deg0; // Longitude = 0D DD MM ss s0  ==> 0DDD MM.sss
223
  u8   lon_deg;
224
  u8   lon_min;
225
  u8   lon_sec;
226
  u8   lon_sec0;
227
  #seekto 0x01C0;
228
  u8   qsk_delay_tm:2, // Menu 061 (QSK DELAY TIME) *15msec=0, 20msec=1, 25msec=2, 30msec=3
229
       unknown19:6;
230
  u8   unk1c1;
231
  u8   keyer_type:4, // Menu 012 (KEYER TYPE) OFF=0 BUG=1 ELEKEY-A=2 *ELEKEY-B=3 ELEKEY-Y=4 ACS=5
232
       unknown20:4;
233
  u8   cw_auto_mode:2, // Menu 055 (CW AUTO MODE) *OFF=0 50M=1 ON=2
234
       keyer_dot_dash:1, // Menu 013 (KEYER DOT/DASH) *NOR=0 REV=1
235
       unknown21:1,
236
       cw_wave_shape:2, // Menu 058 (CW WAVE SHAPE) 2msec=1, *4msec=2
237
       unknown22:2;
238
  u8   cw_freq_disp:1, // Menu 059 (CW FREQ DISPLAY) DIRECT FREQ=0, *PITCH OFFSE=1
239
       cw_bk_in_type:1, // *SEMI=0, FULL=1
240
       unknown23:1,
241
       cw_wieght:5; // 2.5->4.5; 2.5 + (val) * 0.1 (val) => 0-20
242
  u16  agc_fast_delay; // Menu 001 (AGC FAST DELAY) [msec] 20->4000, step 20, default=300
243
  u16  unknown24; // <unknown>  0x00 0x14
244
  u16  agc_mid_delay; // [msec] 20->4000, step 20, default=700
245
  u16  unknown25; // <unknown>  0x00 0x14
246
  u16  agc_slow_delay; // Menu 003 (AGC SLOW DELAY) [msec] 20->4000, step 20, default=3000
247
  u16  unknown26; // <unknown>  0x00 0x14
248
  u8   dvs_rx_out_level; // Menu 010 (DVS RX OUT LEVEL) 0->100, default=50
249
  u8   dvs_tx_out_level; // Menu 011 (DVS TX OUT LEVEL) 0->100, default=50
250
  u8   unknown27:3,
251
       cat_rts:1, // Menu 033 (CAT RTS) DISABLE=0 *ENABLE=1
252
       unknown28:2,
253
       cat_tot:2; // Menu 032 (CAT TOT) *10msec=0 100msec=1 1000msec=2 3000msec=3
254
  u8   am_data_gain; // Menu 049 (AM DATA GAIN) 0-100, default=50
255
  u8   clar_mode_select; // Menu 040 (CLAR MODE SELECT) *RX=00, TX=01, TRX=02
256
  u8   rtty_out_level; // Menu 099 (RTTY OUT LEVEL) 0-100, default=50
257
  u8   ssb_out_level; // Menu 107 (SSB OUT LEVEL) 0-100, default=50
258
  u8   cw_out_level; // Menu 054 (CW OUT LEVEL) 0-100, default=50
259
  u8   ref_freq_adj; // Menu 039 (REF FREQ ADJ) [SV] -25->+25, default=0
260
  u8   data_out_level; // Menu 073 (DATA OUT LEVEL) 0-100, default=50
261
  u8   am_out_level; // Menu 046 (AM OUT LEVEL) 0-100, default=50
262
  u8   fm_out_level; // Menu 075 (FM OUT LEVEL) 0-100, default=50
263
  u8   unknown99;
264
  u8   unknown29:3,
265
       if_notch_width:1, // Menu 114 (IF NOTCH WIDTH) NARROW=0b0, *WIDE=0b1
266
       unknown30:4;
267
  u16  unknown31;
268
  u8   dimmer_led:1, // Menu 007 (DIMMER LED) 1=0 *2=1
269
       unknown32:3,
270
       dimmer_tft:4; // Menu 008 (DIMMER TFT) 0-15 (default=8)
271
  u8   display_color:4, // Menu 006 (DISPLAY COLOR) *BLUE=0 GRAY=1 GREEN=2 ORANGE=3 PURPLE=4 RED=5 SKY BLUE=6
272
       home_function:1, // *SCOPE=0 FUNCTION=1
273
       bar_mtr_peak_hold:3; // Menu 009 (BAR MTR PEAK HOLD) *OFF=0, 0.5sec=1, 1.0sec=2, 2.0sec=3
274
  u8   fm_pkt_tx_gain; // Menu 078 (FM PKT TX GAIN) 0-100, default=50
275
  u8   dcs_polarity:2, // Menu 086 (DCS POLARITY) *Tn-Rn=0, Tn-Riv=1, Tiv-Rn=2, Tiv-Riv=3
276
       unknown33:3,
277
       ssb_tx_bpf:3; // Menu 110 (SSB TX BPF) 100-3000=0, 100-2900=1, 200-2800=2, *300-2700=3, 400-2600=4
278
  u8   fm_pkt_mode:1, // Menu 079 (FM PKT MODE) *1200=0, 9600=1
279
       unknown34:3,
280
       data_port_select:1, // Menu 072 (DATA PORT SELECT) *DATA=0, USB=1
281
       fm_pkt_port_select:1, // Menu 077 (FM PKT PORT SELECT) *DATA=0, USB=1
282
       am_port_select:1, // Menu 048 (AM PORT SELECT) *DATA=0, USB=1
283
       ssb_port_select:1; // Menu 109 (SSB PORT SELECT) *DATA=0, USB=1
284
  u8   unknown35:2,
285
       am_mic_select:1, // Menu 045 (AM MIC SELECT) *MIC=0, REAR=1
286
       unknown36:1,
287
       data_in_select:1, // Menu 070 (DATA IN SELECT) MIC=0, *REAR=1
288
       fm_mic_select:1, // Menu 074 (FM MIC SELECT) *MIC=0, REAR=1
289
       unknown37:1,
290
       ssb_mic_select:1; // Menu 106 (SSB MIC SELECT) *MIC=0, REAR=1
291
  u16  rpt_shift_28; // Menu 080 (RPT SHIFT 28MHz) 0-1000KHz, def=100KHz, step 10
292
  u16  rpt_shift_50; // Menu 081 (RPT SHIFT 50MHz) 0-4000KHz, def=1000KHz, step 10
293
  u8   unknown38;
294
  u8   number_style; // Menu 016 (NUMBER STYLE) *1290=0 AUN0=1 AUNT=2 A2N0=3 A2NT=4 12N0=5 12NT=6
295
  u8   unknown39;
296
  u8   quick_split_freq; // Menu 035 (QUICK SPLIT FREQ) [SV] -20->+20 (KHz), default=5
297
  u8   keyer_memory_mode; // Menu 035 (QUICK SPLIT FREQ) [SV] -20->+20 (KHz), default=5
298
  u8   unknown40:1,
299
       mem_group:1, // Menu 034 (MEM GROUP) *DISABLE=0, ENABLE=1
300
       unknown41:3,
301
       emergency_freq_tx:1, // Menu 149 (EMERGENCY FREQ TX) *DISABLE=0, ENABLE=1
302
       cat_rate:2; // Menu 031 (CAT RATE) *4800bps=0, 9600bps=1, 19200bps=2, 38400bps=3
303
  u8   tx_total; // Menu 036 (TX TOT) minutes *OFF=0, 1-30
304
  u8   unknown42:4,
305
       232c_tot:2, // Menu 030 (232C TOT) *10msec=0, 100msec=1, 1000msec=2, 3000msec=3
306
       232c_rate:2; // Menu 029 (232C RATE) *4800bps=0, 9600bps=1, 19200bps=2, 38400bps=3
307
  u8   unknown43:4,
308
       fm_pkt_ptt_select:2, // Menu 076 (FM PKT PTT SELECT) *DAKY=0, RTS=1, DTR=2
309
       am_ptt_select:2; // Menu 047 (AM PTT SELECT) *DAKY=0, RTS=1, DTR=2
310
  u8   data_ptt_select:2, // Menu 071 (DATA PTT SELECT) *DAKY=0, RTS=1, DTR=2
311
       rtty_ptt_select:2, // Menu 096 (RTTY SHIFT PORT) *SHIFT=0, DTR=1, RTS=2
312
       pc_keying:2, // Menu 060 (PC KEYING) *OFF=0, DAKY=1, RTS=2, DTR=3
313
       ssb_ptt_select:2; // Menu 108 (SSB PTT SELECT) *DAKY=0, RTS=1, DTR=2
314
  u16  unknown44;
315
  u8   unknown45:1,
316
       mic_scan_resume:1, // Menu 038 (MIC SCAN RESUME) PAUSE=0, *TIME=1
317
       mic_scan:1, // Menu 037 (MIC SCAN) DISABLE=0, *ENABLE=1
318
       rtty_mark_freq:1, // Menu 101 (RTTY MARK FREQ) 1275Hz=0, *2125Hz=1
319
       rtty_polarity_rx:1, // Menu 097 (RTTY POLARITY-RX) *NOR=0, REV=1
320
       rtty_polarity_tx:1, // Menu 098 (RTTY POLARITY-TX) *NOR=0, REV=1
321
       rtty_shift_freq:2; // Menu 100 (RTTY SHIFT FREQ) *170Hz=0, 200Hz=1, 425Hz=2, 850Hz=3
322
  u8   unknown46;
323
  u16  rpt_shift_144; // Menu 082 (RPT SHIFT 144MHz) 0-4000KHz, def=600KHz, step 10
324
  u16  rpt_shift_430; // Menu 083 (RPT SHIFT 430MHz) 0-4000KHz, def=5000KHz, step 10
325
  u8   time_zone_dir; // Menu 027 (TIME ZONE)  01FD: Positive=0, Negative=1
326
  u8   time_zone_hours; // Menu 027 (TIME ZONE) 01FE: Hours
327
  u8   time_zone_minutes; // Menu 027 (TIME ZONE) 01FF: Minutes(0-30)
328
  u8   gm_display:1, // Menu 088 (GM DISPLAY) *DISTANCE=0, STRENGTH=1
329
       distance:1, // Menu 089 (DISTANCE) km=0, *mile=1
330
       standby_beep:1, // Menu 091 (STANDBY BEEP) OFF=0, *ON=1
331
       unknown47:2,
332
       ams_tx_mode:3; // Menu 090 (AMS TX MODE) *AUTO=0, MANUAL=1, DN=2, VW=3, ANALOG=4
333
  u8   unknown48; // 0x01
334
  u8   unknown49:1,
335
       vox_select:1, // Menu 142 (VOX SELECT) *MIC=0, DATA=1
336
       unknown50:6;
337
  u16  data_vox_delay; // Menu 147 (DATA VOX DELAY) 30msec->3000msec, step 10, default=100msec
338
  u8   data_vox_gain; // Menu 146 (DATA VOX GAIN) 0->100, default=50
339
  u8   anti_dvox_gain; // Menu 148 (ANTI DVOX GAIN) 0->100, default=0
340
  u8   contour_width; // Menu 113 (CONTOUR WIDTH) 1->11, default=10
341
  u8   prmtrc_eq1_bw:4, // Menu 121 (PRMTRC EQ1 BWTH) 1->10, default=10
342
       prmtrc_eq1_freq:4; // Menu 119 (PRMTRC EQ1 FREQ) Hz *OFF=0, 100=1, 200=2, 300=3, 400=4, 500=5, 600=6, 700=7
343
  u8   prmtrc_eq2_bw:4, // Menu 124 (PRMTRC EQ2 BWTH) 1->10, default=10
344
       prmtrc_eq2_freq:4; // Menu 122 (PRMTRC EQ2 FREQ) Hz *OFF=0, 700=1, 800=2, 900=3, 1000=4, 1100=5, 1200=6, 1300=7, 1400=8, 1500=9
345
  u8   prmtrc_eq3_bw:4, // Menu 127 (PRMTRC EQ3 BWTH) 1->10, default=10
346
       unknown51:4;
347
  u8   contour_level; // Menu 112 (CONTOUR LEVEL) [SV] -40->+20, def=-15
348
  u8   unknown52; // 0x00
349
  u8   prmtrc_eq1_level; // Menu 120 (PRMTRC EQ1 LEVEL) [SV] -20->10, def=5
350
  u8   prmtrc_eq2_level; // Menu 123 (PRMTRC EQ2 LEVEL) [SV] -20->10, def=5
351
  u8   prmtrc_eq3_level; // Menu 126 (PRMTRC EQ3 LEVEL) [SV] -20->10, def=5
352
  u8   p_prmtrc_eq1_bw:4, // Menu 130 (P-PRMTRC EQ1 BWTH) 1->10, default=2
353
       p_prmtrc_eq1_freq:4; // Menu 128 (P-PRMTRC EQ1 FREQ) OFF=0, n * 100 Hz, def=2
354
  u8   p_prmtrc_eq2_bw:4, // Menu 133 (P-PRMTRC EQ2 BWTH) 1->10, default=1
355
       p_prmtrc_eq2_freq:4; // Menu 131 (P-PRMTRC EQ2 FREQ) OFF=0, Hz 700=1, *800=2, 900=3, 1000=4, 1100=5, 1200=6, 1300=7, 1400=8, 1500=9
356
  u8   p_prmtrc_eq3_bw:4, // Menu 136 (P-PRMTRC EQ3 BWTH) 1->10, default=1
357
       unknown51:4;
358
  u8   p_prmtrc_eq1_level; // Menu 129 (P-PRMTRC EQ1 LEVEL) [SV] -20->10, def=0
359
  u8   p_prmtrc_eq2_level; // Menu 132 (P-PRMTRC EQ2 LEVEL) [SV] -20->10, def=0
360
  u8   p_prmtrc_eq3_level; // Menu 135 (P-PRMTRC EQ3 LEVEL) [SV] -20->10, def=0
361
  u8   beep_level; // Menu 026 (BEEP LEVEL) 0->100, default=50
362
  u8   beacon_interval; // Menu 015 (BEACON INTERVAL) sec *OFF=0, 1->240(hex:01->F0) 270->690 step:30(hex:F1->FF)
363
  u8   unknown53:4,
364
       prmtrc_eq3_freq:4; // Menu 125 (PRMTRC EQ3 FREQ) *OFF=0, 1500->3200 Hz 1400 + (val) * 100
365
  u8   unknown54:4,
366
       p_prmtrc_eq3_freq:4; // Menu 134 (P-PRMTRC EQ3 FREQ) OFF=0, 1500->3200 Hz 1400 + (val) * 100, default=2100 Hz (0x07)
367
  u8   nb_width:2, // Menu 023 (NB WIDTH) 1msec=0 *3msec=1 10msec=2
368
       nb_rejection:2, // Menu 024 (NB REJECTION) 10db=0 *30db=1 50db=2
369
       nb_level:4; // Menu 025 (NB LEVEL) Value 0-10 (0x0-0xA) default=5
370
  u32  unknown55; // 0x00 0x00 0x00 0x00
371
  u8   hf_tx_max_power; // Menu 137 (HF TX MAX POWER) 5->100 W, default=100
372
  u8   50m_tx_max_power; // Menu 138 (50M TX MAX POWER) 5->100 W, default=100
373
  u8   144m_tx_max_power; // Menu 138 (50M TX MAX POWER) 5->100 W, default=100
374
  u8   430m_tx_max_power; // Menu 140 (430M TX MAX POWER) 5->50 W, default=50
375
  #seekto 0x022D;
376
  u8   wires_dg_id; // Menu 153 (WIRES DG-ID) *AUTO=0, DG-ID 1->99
377
  #seekto 0x0249;
378
  u8   my_call_identification; // Menu 005 (MY CALL INDICATION) 0->5 sec, default=1
379
  #seekto 0x0251;
380
  u16  cw_bk_in_delay; // Menu 057 (CW BK-IN DELAY) 30msec->3000msec step 10, default=200
381
  #seekto 0x0256;
382
  u8   anti_vox_gain; // Menu 145 (ANTI VOX GAIN) 0->100, default=50
383
  u16  vox_delay; // Menu 144 (VOX DELAY) 30->3000msec, step 10, default=500
384
  u8   vox_gain; // Menu 143 (VOX GAIN) 0->100, default=50
385
  u8   scp_desplay_mode:1, // Menu 115 (SCP DISPLAY MODE) *SPECTRUM=0,WATER FALL=1
386
       unknown56:7;
387
  u8   gps_232c_select; // Menu 028 (GPS/232C SELECT)  *GPS1=0 GPS2=2 RS232C=4
388
  u8   unknown57:1,
389
       data_mode:1, // Menu 062 (DATA MODE) *PSK=0, OTHERS=1
390
       unknown58:2,
391
       apf_width:2, // Menu 111 (APF WIDTH) NARROW=0, *MEDIUM=1, WIDE=2
392
       psk_tone:2; // Menu 063 (PSK TONE) *1000Hz=0, 1500Hz=1, 2000Hz=2
393
  u8   unknown59:4,
394
       scp_span_freq:4; // Menu 116 (SCP SPAN FREQ) 50KHz=3, *100KHz=4, 200KHz=5, 500KHz=6, 1000KHz=7
395
  u8   unknown60:4,
396
       tuner_select:4; // Menu 141 (TUNER SELECT) OFF=0, *INTERNAL=1, EXTERNAL=2, ATAS=3, LAMP=4
397
  u8   spectrum_color:4, // Menu 117 (SPECTRUM COLOR) *BLUE=0 GRAY=1 GREEN=2 ORANGE=3 PURPLE=4 RED=5 SKY BLUE=6
398
       waterfall_color:4; // Menu 118 (WATER FALL COLOR) BLUE=0 GRAY=1 GREEN=2 ORANGE=3 PURPLE=4 RED=5 SKY BLUE=6 *MULTI=7
399
  u8   unk0260;
400
  u16  other_disp_ssb; // Menu 064 (OTHER DISP (SSB)) [SV] -3000->3000Hz, step 10, default=0Hz
401
  u16  other_shift_ssb; // Menu 065 (OTHER SHIFT (SSB)) [SV] -3000->3000Hz, step 10, default=0Hz
402
  u8   unk0265[3];
403
  u8   am_lcut_slope:1, // Menu 042 (AM LCUT SLOPE) *6dB/oct=0, 18dB/oct=1
404
       am_lcut_freq:7; // Menu 041 (AM LCUT FREQ) *00=OFF, 100Hz->1000Hz 50 + (val) * 50  (val) => Hex:01->13
405
  u8   am_hcut_slope:1, // Menu 044 (AM HCUT SLOPE) *6dB/oct=0 18dB/oct=1
406
       am_hcut_freq:7; // Menu 043 (AM HCUT FREQ) *OFF=0, 700Hz->4000Hz 650 + (val) * 50  (val) => Hex:01->43
407
  u8   cw_lcut_slope:1, // Menu 051 (CW LCUT SLOPE) 6dB/oct=0, *18dB/oct=1
408
       cw_lcut_freq:7; // Menu 050 (CW LCUT FREQ) OFF=0, default=250Hz 100Hz->1000Hz   50 + (val) * 50  (val)=>Hex:01->13
409
  u8   cw_hcut_slope:1, // Menu 053 (CW HCUT SLOPE) 6dB/oct=0, *18dB/oct=1
410
       cw_hcut_freq:7; // Menu 052 (CW HCUT FREQ) OFF=0, default=1200Hz 700Hz->4000Hz  650 + (val) * 50  (val)=>Hex:01->43
411
  u16  unknown61; // 0x00 0x00
412
  u8   data_lcut_slope:1, // Menu 067 (DATA LCUT SLOPE) 6dB/oct=0, *18dB/oct=1
413
       data_lcut_freq:7; // Menu 066 (DATA LCUT FREQ) OFF=0, default=300Hz 100Hz->1000Hz   50 + (val) * 50  (val)=>Hex:01->13
414
  u8   data_hcut_slope:1, // Menu 069 (DATA HCUT SLOPE) 6dB/oct=0, *18dB/oct=1
415
       data_hcut_freq:7; // Menu 068 (DATA HCUT FREQ) OFF=0, default=3000Hz 700Hz->4000Hz  650 + (val) * 50  (val)=>Hex:01->43
416
  u8   rtty_lcut_slope:1, // Menu 093 (RTTY LCUT SLOPE) 6dB/oct=0, *18dB/oct=1
417
       rtty_lcut_freq:7; // Menu 092 (RTTY LCUT FREQ) OFF=0, default=300Hz 100Hz->1000Hz   50 + (val) * 50  (val)=>Hex:01->13
418
  u8   rtty_hcut_slope:1, // Menu 092 (RTTY LCUT FREQ) OFF=0, default=300Hz 100Hz->1000Hz   50 + (val) * 50  (val)=>Hex:01->13
419
       rtty_hcut_freq:7; // Menu 094 (RTTY HCUT FREQ) 0=OFF, default=3000Hz 700Hz->4000Hz  650 + (val) * 50  (val)=>Hex:01->43
420
  u8   ssb_lcut_slope:1, // Menu 103 (SSB LCUT SLOPE) *6dB/oct=0, 18dB/oct=1
421
       ssb_lcut_freq:7; // Menu 102 (SSB LCUT FREQ) OFF=0, default=100Hz 100Hz->1000Hz   50 + (val) * 50  (val)=>Hex:01->13
422
  u8   ssb_hcut_slope:1, // Menu 105 (SSB HCUT SLOPE) *6dB/oct=0, 18dB/oct=1
423
       ssb_hcut_freq:7; // Menu 104 (SSB HCUT FREQ) OFF=0, default=3000Hz 700Hz->4000Hz  650 + (val) * 50  (val)=>Hex:01->43
424
  u32  unknown62; // 0x00 0x00 0x00 0x00
425
  u8   prt_wires_freq:1, // Menu 150 (PRT/WIRES FREQ) *MANUAL=0, PRESET=1
426
       search_setup:1, // Menu 152 (SEARCH SETUP) *HISTORY=0, ACTIVITY=1
427
       unknown63:6;
428
  u32  preset_freq; // Menu 151 (PRESET FREQUENCY) Hz, default 146550000 Hz
429
} settings;
430

    
431
#seekto 0x057b;
432
struct keyer_memory key_memory[5];
433
#seekto 0x0A05;
434
struct mem_struct band_stack_memory[96];
435
struct mem_struct home[4];
436
u8   unknown63:3,
437
    qmb4_defined:1,
438
    qmb3_defined:1,
439
    qmb2_defined:1,
440
    qmb1_defined:1,
441
    qmb0_defined:1;
442
u8   next_qmb;
443
u8   current_qmb;
444
struct mem_struct qmb_slots[5];
445
struct mem_struct unk_mem[1];
446
struct mem_struct mt_mem[1];
447
u8   recall_mem_poweron; // Memory # (-1) to recall when powering-on or returning from VFO mode (saved when moving to VFO or powering off)
448
u8   visible[16]; // Bitmap of active (not erased) channels
449
u8   filled[16]; // Bitmap of memory channels ever used, This is used to determine if default values for a memory channel should be used on "unerase".
450

    
451
struct mem_struct memory[131]; // Memory channels / 96 * 131 (not sure where the additional ones are coming from)
452
#seekto 0x7B3F;
453
struct dgid_list dg_id_list[10];
454
#seekto 0x7FEB;
455
char radio_id[5]; // Radio ID, ASCII  [DO NOT CHANGE] (Read-only in Menu 087 (RADIO ID))
456
"""
(2-2/2)