#!/usr/bin/env slsh private variable Data_Tables = Assoc_Type[]; private variable VHF_Cross_Repeater_Transmit_Freq = 440.7375; private variable UHF_Cross_Repeater_Transmit_Freq = 146.5050; private variable Bad_Transmit_Freq = 800.0; private define add_data_table (name, table) { variable s = struct { data = table, mode = qualifier ("mode", "NFM"), deviation = qualifier ("dev", "NORM"), power = qualifier ("power", "HIGH"), tag_type = qualifier ("tag", "ALPHA"), tag_index = qualifier ("tagindex", 0), step="5 KHz", masked = "NO", dcs = "023", clk_sh = "OFF", scn_md = qualifier ("scn_md", "OFF"), transmit_freq = qualifier ("transmit", NULL), }; Data_Tables[name] = s; } % Note: The 4th field in this table encodes the transmit frequency. % If the value is a string, then it represents the shift in Mhz. % If it is NULL, then the transmit frequency is undefined. % Otherwise it represents the transmit frequency in Mhz. private variable Data_2m = { % location, call, freq, shift, tone, pl {"GLOSTR", "W1GLO", 145.1300, "-0.6", "TSQL", 107.2}, {"BOSTN1", "W1BOS", 145.2300, "-0.6", "TSQL", 88.5}, {"WALTHM", "W1MHL", 146.6400, "-0.6", "OFF", 88.5}, {"BELMNT", "WA1RTT", 145.4300, "-0.6", "TSQL", 67.0}, {"NORWEL", "AC1M", 145.2500, "-0.6", "TSQL", 77.0}, {"HAVERL", "KT1S", 145.3500, "-0.6", "TSQL", 136.5}, {"DANVER", "NS1RA", 145.4700, "-0.6", "TSQL", 136.5}, {"STONHM", "N1NVL", 146.7150, "-0.6", "TSQL", 146.2}, {"STOTON", "K1VNU", 146.7750, "-0.6", "TONE", 77.0}, {"BROOKL", "K5TEC", 146.8200, "-0.6", "TSQL", 146.2}, {"WSTFRD", "WB1GOF", 146.9550, "-0.6", "TSQL", 74.4}, {"PAXTON", "W1BIM", 146.9700, "-0.6", "TSQL", 114.8}, {"NEWTN1", "W1TKZ", 147.0300, "+0.6", "OFF", 88.5}, {"NRWOOD", "W1JLI", 147.2100, "+0.6", "TSQL", 100.0}, {"WEYMTH", "AC1N", 147.3000, "+0.6", "TSQL", 67.0}, {"NEWTN2", "W1HEB", 147.3600, "+0.6", "TSQL", 67.0}, }; add_data_table ("2m", Data_2m); add_data_table ("2m_crossband", Data_2m; transmit=VHF_Cross_Repeater_Transmit_Freq, power="LOW"); private variable Data_70cm = { % location, call, freq, shift, tone, pl {"WESTON", "N1NOM", 442.7000, "+5.0", "TSQL", 88.5}, {"DANVER", "NS1RA", 442.8000, "+5.0", "TONE", 136.5}, {"NEWTON", "W1TKZ", 444.6000, "+5.0", "TSQL", 88.5}, {"BOSTN1", "W1KRU", 444.7000, "+5.0", "TSQL", 88.5}, {"BROOK1", "W1CLA", 446.3250, "-5.0", "TSQL", 146.2}, {"READNG", "WA1RHN", 446.5250, "-5.0", "TSQL", 151.4}, {"BOSTN2", "WA1PBJ", 446.5750, "-5.0", "TSQL", 88.5}, {"STONHM", "W1DYJ", 446.7250, "-5.0", "TONE", 88.5}, {"MEDFRD", "W1KN", 446.9250, "-5.0", "TSQL", 88.5}, {"BOSTN3", "WN9T", 447.1750, "-5.0", "TONE", 110.9}, {"BROOK2", "K1IW", 447.8750, "-5.0", "TONE", 136.5}, % {"BOSTN4", "W1NAU", 448.7250, "-5.0", "D343", -1}, {"WBOROH", "W1WNS", 448.7750, "-5.0", "TSQL", 103.5}, {"WALTHM", "WA1PBU", 449.0750, "-5.0", "OFF", 88.5}, {"MIT", "W1XM", 449.7250, "-5.0", "TSQL", 114.8}, {"WOBURN", "N1OMJ", 449.8250, "-5.0", "TSQL", 136.5}, }; add_data_table ("70cm", Data_70cm; tag="ALPHA"); add_data_table ("70cm_crossband", Data_70cm; tag="ALPHA", transmit=UHF_Cross_Repeater_Transmit_Freq, power="LOW"); private variable Data_MURS = { % location, call, freq, shift, tone, pl {"MURS1", "MURS1", 151.8200, "0.0", "OFF", 100.0}, {"MURS2", "MURS2", 151.8800, "0.0", "OFF", 100.0}, {"MURS3", "MURS3", 151.9400, "0.0", "OFF", 100.0}, {"MURS4", "MURS4", 154.5700, "0.0", "OFF", 100.0}, {"MURS5", "MURS5", 154.6000, "0.0", "OFF", 100.0}, }; add_data_table ("murs", Data_MURS; dev="HALF"); private variable Data_FRS = { {"FRS1", "FRS1", 462.5625, "0.0", "OFF", 100.0}, {"FRS2", "FRS2", 462.5875, "0.0", "OFF", 100.0}, {"FRS3", "FRS3", 462.6125, "0.0", "OFF", 100.0}, {"FRS4", "FRS4", 462.6375, "0.0", "OFF", 100.0}, {"FRS5", "FRS5", 462.6625, "0.0", "OFF", 100.0}, {"FRS6", "FRS6", 462.6875, "0.0", "OFF", 100.0}, {"FRS7", "FRS7", 462.7125, "0.0", "OFF", 100.0}, {"FRS8", "FRS8", 467.5625, "0.0", "OFF", 100.0}, {"FRS9", "FRS9", 467.5875, "0.0", "OFF", 100.0}, {"FRS10", "FRS10", 467.6125, "0.0", "OFF", 100.0}, {"FRS11", "FRS11", 467.6375, "0.0", "OFF", 100.0}, {"FRS12", "FRS12", 467.6625, "0.0", "OFF", 100.0}, {"FRS13", "FRS13", 467.6875, "0.0", "OFF", 100.0}, {"FRS14", "FRS14", 467.7125, "0.0", "OFF", 100.0}, }; add_data_table ("frs", Data_FRS; power="LOW", dev="HALF"); private variable Data_GMRS = { {"GMRS1", "GMRS1", 462.5500, "0.0", "OFF", 100.0}, {"GMRS2", "GMRS2", 462.5750, "0.0", "OFF", 100.0}, {"GMRS3", "GMRS3", 462.6000, "0.0", "OFF", 100.0}, {"GMRS4", "GMRS4", 462.6250, "0.0", "OFF", 100.0}, {"GMRS5", "GMRS5", 462.6500, "0.0", "OFF", 100.0}, {"GMRS6", "GMRS6", 462.6750, "0.0", "OFF", 100.0}, {"GMRS7", "GMRS7", 462.7000, "0.0", "OFF", 100.0}, {"GMRS8", "GMRS8", 462.7250, "0.0", "OFF", 100.0}, }; add_data_table ("gmrs", Data_GMRS; power="LOW", dev="HALF"); private variable Data_CB = { {"CB01", "CB01", 26.9650, "0.0", "OFF", 100.0}, {"CB02", "CB02", 26.9750, "0.0", "OFF", 100.0}, {"CB03", "CB03", 26.9850, "0.0", "OFF", 100.0}, {"CB04", "CB04", 27.0050, "0.0", "OFF", 100.0}, {"CB05", "CB05", 27.0150, "0.0", "OFF", 100.0}, {"CB06", "CB06", 27.0250, "0.0", "OFF", 100.0}, {"CB07", "CB07", 27.0350, "0.0", "OFF", 100.0}, {"CB08", "CB08", 27.0550, "0.0", "OFF", 100.0}, {"CB09", "CB09", 27.0650, "0.0", "OFF", 100.0}, {"CB10", "CB10", 27.0750, "0.0", "OFF", 100.0}, {"CB11", "CB11", 27.0850, "0.0", "OFF", 100.0}, {"CB12", "CB12", 27.1050, "0.0", "OFF", 100.0}, {"CB13", "CB13", 27.1150, "0.0", "OFF", 100.0}, {"CB14", "CB14", 27.1250, "0.0", "OFF", 100.0}, {"CB15", "CB15", 27.1350, "0.0", "OFF", 100.0}, {"CB16", "CB16", 27.1550, "0.0", "OFF", 100.0}, {"CB17", "CB17", 27.1650, "0.0", "OFF", 100.0}, {"CB18", "CB18", 27.1750, "0.0", "OFF", 100.0}, {"CB19", "CB19", 27.1850, "0.0", "OFF", 100.0}, {"CB20", "CB20", 27.2050, "0.0", "OFF", 100.0}, {"CB21", "CB21", 27.2150, "0.0", "OFF", 100.0}, {"CB22", "CB22", 27.2250, "0.0", "OFF", 100.0}, {"CB23", "CB23", 27.2550, "0.0", "OFF", 100.0}, {"CB24", "CB24", 27.2350, "0.0", "OFF", 100.0}, {"CB25", "CB25", 27.2450, "0.0", "OFF", 100.0}, {"CB26", "CB26", 27.2650, "0.0", "OFF", 100.0}, {"CB27", "CB27", 27.2750, "0.0", "OFF", 100.0}, {"CB28", "CB28", 27.2850, "0.0", "OFF", 100.0}, {"CB29", "CB29", 27.2950, "0.0", "OFF", 100.0}, {"CB30", "CB30", 27.3050, "0.0", "OFF", 100.0}, {"CB31", "CB31", 27.3150, "0.0", "OFF", 100.0}, {"CB32", "CB32", 27.3250, "0.0", "OFF", 100.0}, {"CB33", "CB33", 27.3350, "0.0", "OFF", 100.0}, {"CB34", "CB34", 27.3450, "0.0", "OFF", 100.0}, {"CB35", "CB35", 27.3550, "0.0", "OFF", 100.0}, {"CB36", "CB36", 27.3650, "0.0", "OFF", 100.0}, {"CB37", "CB37", 27.3750, "0.0", "OFF", 100.0}, {"CB38", "CB38", 27.3850, "0.0", "OFF", 100.0}, {"CB39", "CB39", 27.3950, "0.0", "OFF", 100.0}, {"CB40", "CB40", 27.4050, "0.0", "OFF", 100.0}, }; add_data_table ("cb", Data_CB; power="LOW", mode="AM"); private variable Data_FM = { {"WGBH", "WGBH", 89.7000, NULL, "OFF", 100.0}, {"WBUR", "WBUR", 90.9000, NULL, "OFF", 100.0}, }; add_data_table ("fm", Data_FM; power="LOW", mode="WFM", scn_md="SKIP"); private variable Data_MBTA = { {"REDLIN", "REDLIN", 470.4125, NULL, "OFF", 100.0}, {"MBTAF1", "MBTAF1", 470.6625, NULL, "OFF", 100.0}, {"MBTAF2", "MBTAF2", 483.5625, NULL, "OFF", 100.0}, {"PORTBL", "PORTBL", 153.7550, NULL, "OFF", 100.0}, {"MICPHN", "MICPHN", 154.5700, NULL, "OFF", 100.0}, {"TR2DSN", "TR2DSN", 161.5200, NULL, "OFF", 100.0}, {"TR2DS1", "TR2DS1", 161.4900, NULL, "OFF", 100.0}, {"TR2DS2", "TR2DS2", 161.6950, NULL, "OFF", 100.0}, {"DS2TRN", "DS2TRN", 161.1600, NULL, "OFF", 100.0}, {"TRNYRD", "TRNYRD", 160.8750, NULL, "OFF", 100.0}, {"DS2TR", "DS2TR", 160.5900, NULL, "OFF", 100.0}, {"TRNDS", "TRNDS", 160.3200, NULL, "OFF", 100.0}, }; add_data_table ("mbta", Data_MBTA; power="LOW"); private variable Data_Police = { {"PCMBRDG", "PCMBRDG", 470.3125, NULL, "OFF", 88.5}, {"FCMBRDG", "FCMBRDG", 471.3125, NULL, "OFF", 88.5}, {"MITEMS", "MITEMS", 461.7750, NULL, "OFF", 88.5}, {"PMIT", "PMIT", 472.5375, NULL, "OFF", 88.5}, }; add_data_table ("police", Data_Police; power="LOW"); private define write_data (fp, name, startp) { variable s = Data_Tables[name]; variable num = @startp; variable data = s.data; variable transmit_freq = s.transmit_freq; foreach (data) { variable item = (); variable freq = item[2]; variable tag = item[s.tag_index]; variable shift = item[3]; variable rpt = "+RPT"; if (transmit_freq != NULL) shift = transmit_freq; if (typeof (shift) == String_Type) { shift = atof (shift); if (shift == 0) rpt = "SIMP"; if (shift < 0) { shift = -shift; rpt = "-RPT"; } } else if (typeof (shift) == Double_Type) rpt = "DUP"; else if (shift == NULL) { rpt = "DUP"; shift = Bad_Transmit_Freq; } variable tone = item[4]; if (tone == "TSQL") { tone = "T SQL"; tone = "TONE"; % The vx-2 is buggy } variable pl = item[5]; variable masked = s.masked; variable tag_type = s.tag_type; variable mode = s.mode; variable scn_md = s.scn_md; variable step = s.step; variable dcs = s.dcs; variable power = s.power; variable dev = s.deviation; variable clk_sh = s.clk_sh; () = fprintf (fp, "%d,%s,%.4f,%s,%s,%s,%s,%s,%s,%.4f,%s,%.1f,%s,%s,%s,%s\r\n", num, tag, freq, tag_type, mode, scn_md, step, masked, rpt, shift, tone, pl, dcs, power, dev, clk_sh); num++; } @startp = num; } private define write_header (fp) { () = fputs ("#,Tag,Freq,Name,Mode,Scn Md,Step,Masked,RPT SH,Shift,TS/DCS,Tone,DCS,TX Pwr,Dev,Clk Sh\r\n", fp); } define slsh_main () { variable num; variable fp = stdout; write_header (fp); num = 1; write_data (fp, "2m", &num); num = 50; write_data (fp, "70cm", &num); num = 100; write_data (fp, "2m_crossband", &num); num = 150; write_data (fp, "70cm_crossband", &num); num = 200; write_data (fp, "murs", &num); write_data (fp, "frs", &num); write_data (fp, "gmrs", &num); num = 250; write_data (fp, "cb", &num); num = 300; write_data (fp, "fm", &num); num = 400; write_data (fp, "mbta", &num); num = 500; write_data (fp, "police", &num); }