Information for firmware releases 1.1A, 1.2A, 1.4A and 1.4B
1)Remote control overview.
The AR-7303 receiver allows remote control of all of its functions by means of a direct memory access
system.
A controlling computer can read and modify the internal memory maps of the receiver to set required parameters and then call for the receiver’s control program to process the new settings.
Commands to the receiver are byte structured in binary format, so it is not possible to control from a terminal.
All multi-byte numbers within the receiver are binary, stored msb first.
2)Receiver frequency configuration.
Receive frequency is set by two oscillators - local and carrier. In AM and FM modes the carrier oscillator is
not used, and the final IF frequency is 455kHz. In Sync mode the carrier oscillator is offset by +20.29kHz
before mixing with the IF.
The IF frequencies have a fixed inter-conversion frequency of 44.545MHz and, because of the high-side local
oscillator, both IF’s are inverted.
The receiver controller processes the following variables to establish the tuned frequency :-
[
local offset
[
carrier offset
[
filter offset
[PBS]User set filter shift.
[BFO]User set offset between carrier position and frequency display.
[TUNE]Receiver tuned frequency as shown on display.
]Frequency shift applied to local oscillator.
]455.00kHz for LSB, USB, Data and CW modes / 434.71kHz for Sync mode.
]IF Filter frequency at the (vestigial) carrier position as an offset from 455kHz.
The relationship between these variables and the tuning is as follows :-
[
carrier offset
45.000MHz + [
[TUNE] + [
3)Serial data protocol.
All data transfers are at 1200 baud, No parity, 8 bits, 1 stop bit (1200 N 8 1). There is no hardware or software flow control other than that inherent in the command structure. The receiver can accept data at any time
at full rate provided the IR remote controller is not used or is disabled. A maximum of one byte can be
transmitted for each byte received, so data flow into a controlling computer is appropriately limited.
Each byte sent to the receiver is a complete command - it is best thought of as two hexadecimal digits - the
first digit is the
receiver operates with 8-bit bytes, intermediate 4-bit values are stored in
nation and processing. For example to write into the receiver’s memory, the following steps would be followed
:-
a)Send address high order 4-bits into
b)Send address low order 4-bits and set
c)Send first data byte high order 4-bits into
d)Send first data byte low order 4-bits and execute
e)Send second data byte high order 4-bits into
f)Send second data byte low order 4-bits and execute
g)Repeat (e) and (f) for each subsequent byte to be written.
4)Memory organisation.
Different memory areas in the receiver are referenced by selecting
The memory is broadly divided into 3 sections :-
] + [
filter offset
filter offset
local offset
operation code
] + [PBS] + [BFO]——>Carrier oscillator
] + [PBS]——>[
]——>Local oscillator
, the second digit is 4-bits of
local offset
data
relating to the operation. Because the
]
registers
H-register
Address register
H-register
Write Data Operation
H-register
Write Data Operation
Pages
- up to 16 pages are supported.
in the receiver for recombi-
a)Working memory - where all current operating variables are stored and registers and stack are
located. This memory is volatile and data is lost when power to the receiver is removed.
b)Battery sustained memory - where duplicate parameters are stored for retention when power is
removed. This memory area is also used for storage of filter parameters, setup memories and
squelch and BFO settings for the frequency memories and contains the real time clock registers.
c)EEPROM - where frequency, mode, filter and PBS information for the frequency memories is
stored. Additionally S-meter and IF calibration values are stored here. This memory can be
read or written to download and upload the receiver’s frequency memories, but repetitive
writing should be avoided because the memory devices will only support a finite number of
write cycles.
5)Variations between A and B types and firmware revisions.
Type A firmware supports only basic receiver functions, type B extends operations and includes support for
the Notch / Noise Blanker option. The whole of the type A memory map is retained in type B, but more
memory and operations are added for the extended functions of type B.
In the following information, circled note numbers are included to indicate where items are specific to one
type or
revision of the firmware:-
Applicable to type B firmware only.
Applicable to revision 1.4 only, types A and B
Function is changed or added to in type B
6)Operation codes.
The high order 4-bits of each byte sent to the receiver is the
(shown here as x) :-
CodeIdentOperation
0
x
3
x
5
x
4
x
1
x
6
x
9
x
2
x
A
x
7
x
8
x
Note that the
(if non-zero) after the low order 8-bits. The
data operation and by x after a read data operation.
When writing to any of the EEPROM memory pages a time of 10ms per byte has to be allowed. For this
reason it is recommended that instructions SRH and WRD are always used together (even if the SRH is not
needed) since this will ensure that the EEPROM has sufficient time to complete its write cycle.
Additionally to allow time for local receiver memory updates and SNC detector sampling in addition to the
EEPROM write cycle, it is recommended to lock the receiver to level 2 or 3, or add a NOP instruction after
each write. This is not required for firmware revision 1.4 but locking is still recommended.
The mask operation helps with locations in memory that are shared by two parameters and aids setting and
clearing bits. The mask operates only in Page 0. If bits in the mask are set, then a following write operation
will leave the corresponding bits unchanged. The mask register is cleared after a write so that subsequent
writes are processed normally. Because it defaults to zero at reset, the mask is inoperative unless specifically
set.
The operate button instruction uses the same button codes as are returned from routine 15 (see section 8),
with an additional code of zero which operates the
0 will switch the receiver on (from standby state).
Level 0Normal operation.
Level 1IR remote control disabled.
Non-volatile memory (EEPROM)4096 bytes.
The ident is divided into model number (5 bytes), software revision (2 bytes) and
type letter (1 byte).
eg 7030_14A —> Model AR-7030, revision 1.4, type letter A.
Front panel buttons ignored.
Front panel spin-wheels logged but not actioned.
Display update (frequency & S-meter) continues.
Level 2As level 1, but display update suspended. In revisions before 1.4
squelch operation is inhibited, which results in no audio output
after a mode change. In revision 1.4 squelch operation continues
and mode changing is as expected.
Level 3Remote operation exclusively.
Lock level 1 is recommended during any multi-byte reads or writes of the receiver’s memory to prevent data
contention between internal and remote memory access. See also EEPROM notes in section (6)
8)Routines.
Routine 0ResetSetup receiver as at switch-on.
Routine 1Set frequencyProgram local oscillator from
oscillator range.
Routine 2Set mode Setup from
Routine 3Set passbandSetup all IF parameters from
Routine 4Set allSet all receiver parameters from current memory values
Routine 5Set audio Setup audio controller from memory register values.
Routine 6
Routine 7Not assigned
Routine 8Not assigned
Routine 9Direct Rx control Program control register from
Routine 10Direct DDS controlProgram local oscillator and carrier oscillator DDS systems
Routine 11Display menusDisplay menus from
Routine 12Display frequencyDisplay frequency from
Routine 13Display bufferDisplay ASCII data in
Routine 14Read signal strengthTransmits byte representing received signal strength (read
Routine 15Read buttonsTransmits byte indicating state of front panel buttons. Output is 8-
Note that the work buffer
are invoked. Lock levels of 1 or more should be used when reading any front panel controls to prevent erratic
results.
Set RF-IF Setup RF Gain, IF Gain and AGC speed. Also sets Notch Filter and Noise
Button codes :-
wbuff
area in memory is used continuously by the receiver unless lock levels 2 or 3
mode
byte in memory and display mode, select preferred filter
and PBS, BFO values etc.
Blanker if these options are fitted.
from
wbuff
area. The 32-bits at
frequency, value is 385674.4682 / kHz. The 32 bits at
wbuff+4
753270.4456 / MHz.
control the local osc frequency, value is
menu1
starting at 128 for the top line and 192 for the bottom line.
An address value of 1 clears the display. Data string (max
length 24 characters) ends with a zero byte.
from AGC voltage). Output is 8-bit binary in range 0 to 255.
bit binary with an offset of +48 (ie ASCII numbers). Buttons
held continuously will only be registered once.
0 = None pressed5 = RF-IF button
1 = Mode up button6 = Memory button
2 = Mode down button7 = * button
3 = Fast button8 = Menu button
4 = Filter button9 = Power button
frequ
area and setup RF filters and
filter, pbsval
rxcon
and
menu2
frequ
wbuff
area. First byte is display address,
area.
wbuff
area.
and
bfoval
control the carrier
bytes.
bytes.
10)Battery sustained RAM (Memory page 1)
AddressIdentLengthDescription
00013 bytesReal time clock / timer registers :-
130Dph_cal1 byteSync detector phase cal value
140Epd_slp1 byteTimer run / sleep time in minutes
150Fpd_dly1 byteScan delay value x 0.125 seconds
1610pd_sst1 byteScan start channel
1711pd_ssp1 byteScan stop channel
1812pd_stp2 bytesChannel step size
2014pd_sql1 byteSquelch
2115pd_ifg1 byteIF gain
2216pd_flg1 byteFlags (from
2317pd_frq3 bytesFrequency
261Apd_mod 1 byteMode (bits 0-3) and NB threshold (bits 4-7)
271Bpd_vol
281C26 bytesReceiver setup save area :281Cmd_flt1 byteAM mode : Filter (bits 0-3) and AGC speed (bits 4-7)
291Dmd_pbs1 byteAM mode : PBS value
301Emd_bfo1 byteAM mode : BFO value
311F3 bytesDitto for Sync mode
34223 bytesDitto for NFM mode - except Squelch instead of BFO
37253 bytesDitto for Data mode
40283 bytesDitto for CW mode
432B3 bytesDitto for LSB mode
462E3 bytesDitto for USB mode
4931st_aud
50321 byteAudio treble setting (bits 0-3) and RF Gain (bits 4-7)
51331 byteAux output level - left channel
52341 byteAux output level - right channel
5335st_flg1 byteFlags (from
bit 5 Notch auto track enable
bit 6 Ident search enable
bit 7 Ident preview enable
pdflgs
stflgs
)
)
543626 bytesSetup memory A (configured as above)
805026 bytesSetup memory B (configured as above)
106 6A26 bytesSetup memory C (configured as above)
132 8424 bytesFilter data area :132 84fl_sel1 byteFilter 1 : selection bits and IF bandwidth
133 85fl_bw1 byteFilter 1 : bandwidth (2 BCD digits, x.x kHz)
134 86fl_uso1 byteFilter 1 : USB offset value x 33.19Hz
135 87fl_lso1 byteFilter 1 : LSB offset value x 33.19Hz
136 884 bytesDitto for filter 2
140 8C4 bytesDitto for filter 3
144 904 bytesDitto for filter 4
148 944 bytesDitto for filter 5
152 984 bytesDitto for filter 6
156 9Cmem_sq100 bytesSquelch / BFO values for frequency memories 0 to 99
11)EEPROM (Memory page 2)
AddressIdentLengthDescription
00004 bytesFrequency memory data :-
4004396 bytesDitto for memories 01 to 99
400 190mem_pb100 bytesPBS values for frequency memories 0 to 99
500 1F4sm_cal8 bytesS-meter calibration values :500 1F41 byteRSS offset for S1 level
501 1F51 byteRSS steps up to S3 level
502 1F61 byteRSS steps up to S5 level
503 1F71 byteRSS steps up to S7 level
504 1F81 byteRSS steps up to S9 level
505 1F91 byteRSS steps up to S9+10 level
506 1FA1 byteRSS steps up to S9+30 level
507 1FB1 byteRSS steps up to S9+50 level
508 1FCif_cal2 bytesRSS offsets for -20dB and -8dB filter alignment
(BFO for Data and CW modes, Squelch for others)
bits 4 - 6filter
bit 7scan lockout
510 1FEif_def1 byteDefault filter numbers for narrow and wide (2 BCD digits)
511 1FFoption 1 byteOption information :-
bit 0Noise blanker
bit 1Notch filter
bit 210 dB step attenuator (DX version)
12)EEPROM (Memory page 3)
AddressIdentLengthDescription
00004 bytesFrequency memory data :-
1200 4B08 bytesTimer memory data :1200 4B0mtm_mn1 byteTimer memory 0 : minutes (2 BCD digits)
1201 4B1mtm_hr1 bytehours (2 BCD digits)
1202 4B2mtm_dt1 bytedate (2 BCD digits)
1203 4B3mtm_mt1 bytemonth (2 BCD digits)
1204 4B4mtm_ch2 bytesrx channel (hundreds and 0-99)
1206 4B6mtm_rn1 byterun time
1207 4B7mtm_ac1 byteactive (0 = not active)
1208 4B872 bytesDitto for timer memories 1 to 9
1280 50016 bytesFrequency memory data :1280 500mex_sq1 byteMemory 0 :Squelch / BFO (not used for mems 0 to 99)
1281 501mex_pb1 bytePBS value (not used for mems 0 to 99)
1282 502mex_id14 bytesText Ident
1296 5102800 bytesDitto for memories 1 to 175
bits 4 - 6filter
bit 7scan lockout
(BFO for Data and CW modes)
13)EEPROM (Memory page 4)
AddressIdentLengthDescription
000016 bytesFrequency memory data :-
00001 byteMemory 176 : Squelch / BFO (BFO for Data and CW
modes)
10011 bytePBS value
200214 bytesText Ident
160103568 bytesDitto for memories 177 to 399
3584 E00mex_hx400 bytesFrequency fast find index (1 byte for each memory 0 to 399)
3984 F90112 bytesspare
14)Working memory (Memory page 0)
Areas not specifically addressed are used as workspace by the internal processor. - Keep out (by
order).
AddressIdentLengthDescription
1610snphs1 byteSync detector phase offset cal value
1711slptim1 byteSleep time (minutes)
1812scnst1 byteScan start channel
1913scnsp1 byteScan stop channel
2014scndly1 byteScan delay time value x 0.125 seconds
2115chnstp2 bytes16-bit channel step size, value is 376.6352 / kHz
2317sqlsav1 byteSquelch save value (non-fm mode)
2418ifgain1 byteIF gain value (zero is max gain)
261Afrequ3 bytes24-bit tuned frequency, value is 376635.2228 / MHz.
291Dmode1 byteCurrent mode :-1 = AM4 = Data
Index value is bits 9 to 16 of 24-bit frequency stored in
each memory. Empty memories (frequency zero) should
have a random index byte.
2 = Sync5 = CW
3 = NFM6 = LSB
7 = USB
301E10 bytesAudio control registers :301Eaf_vol1 byteMain channel volume (6-bits, values 15 to 63)
311Faf_vll1 byteLeft channel balance (5-bits, half of volume value
above)
3220af_vlr1 byteRight channel balance (as above)
3321af_bas 1 byteMain channel bass (bits 0-4, values 6 to 25, 15 is flat)
bit 5nchtrkNotch auto track enable
bit 6idautoIdent auto search enable
bit 7idprevIdent auto preview enable
3422af_trb
3523af_axl1 byteLeft aux channel level (bits 0-5, values 27 to 63)
3624af_axr
3725af_axs
3826af_opt
3927af_src1 byteMain channel source
4028rxcon3 bytesReceiver control register mapping :-
1 byteMain channel treble (bits 0-3, values 2 to 10, 6 is flat)
bit 4nb_optNoise blanker menus enabled
bit 5nt_optNotch Filter menus enabled
bit 6step1010dB RF attenuator fitted
1 byteRight aux channel level (bits 0-5, values 27 to 63)
bit 7nchsrNotch search running
1 byteAux channel source (bits 0-3)
bit 4nchenNotch filter active
bit 5nchsigNotch filter signal detected
bit 6axmutAux output mute
bit 7nchatoNotch auto tune active
1 byteOption output source (bits 0-3)
bit 4idoverIdent on LCD over frequency
bit 5idsrdnIdent search downwards
bit 7idsrchIdent search in progress
byte 2bit 2tune4xTune 4 times faster (AM &
NFM)
byte 2bit 3quicklyQuick tuning (fast AGC,
Sync)
byte 2bit 4fastFast tuning mode
byte 2bit 5sncpt1Auto sync - frequency lock
byte 2bit 6sncpt2Auto sync - phase lock
byte 2bit 7sncalSync detector calibrating
byte 3bit 0sqlchSquelch active (ie low signal)
byte 3bit 1mutsqlMute on squelch (current
setting)
byte 3bit 2bscnmdScan mode for VFO B
byte 3bit 3dualwDual watch active
byte 3bit 4scanScan active
byte 3bit 5memlkCurrent memory scan lockout
byte 3bit 6pbsclrEnable PBS CLR from IR
remote
byte 3bit 7memodn MEM button scans down-
wards
462Epdflgs1 byteFlags saved at power-down :-
bit 0powerPower on
bit 1flockTuning locked
bit 2batopBattery operation (for fast
chg)
bit 3nbenNoise blanker active
bit 4nblongNoise blanker long pulse
472Fstflgs1 byteFlags saved in setup memories :-
bit 0mutsavMute on squelch (non-fm
mode)
bit 1mutauxMute aux output on squelch
bit 2axrenAux relay on timer
bit 3axrsqlAux relay on squelch
bit 4snautoAuto sync mode
bit 5snarrSync detector narrow bandwidth
bit 6scanmdScan runs irrespective of
squelch
bit 7autorfRF gain auto controlled
4830rfgain1 byteCurrent RF gain setting (0 to 5) (0=max gain)
4931rfagc1 byteCurrent RF AGC setting (added to above)
5032agcspd1 byteCurrent AGC speed : 0 = Fast2 = Slow
1 = Medium 3 = Off
5133sqlval1 byteSquelch value (current setting)
5234filter1 byteCurrent filter number (1 to 6)
5335pbsval1 bytePBS offset (x33.19Hz)
5436bfoval1 byteBFO offset (x33.19Hz)
5537fltofs1 byteFilter centre frequency offset (x33.19Hz)
5638fltbw1 byteFilter bandwidth (2 BCD digits : x.x kHz)
5739ircode:2 bytesCurrent / last IR command code
593Bspnpos1 byteMisc spin-wheel movement } 0 = no movement
603Cvolpos1 byteVolume control movement } +ve = clockwise
613Dtunpos1 byteTuning control movement} -ve = anti-clockwise
623Elstbut1 byteLast button pressed
633Fsmval2 bytesLast S-meter reading (bars + segments)
6541mestmr1 byteMessage time-out timer
6642rfgtmr1 byteRF gain delay timer
6743updtmr1 byteSustained RAM update timer
6844agctmr1 byteAGC speed restore delay timer
6945snctmr1 byteAuto sync refresh timer
7046scntmr1 byteScan delay timer
7147irdly1 byteIR remote auto repeat delay counter
7248runtmr1 byteSleep mode timer
7349snfrq1 byteSync detector frequency offset cal value
744Afrange1 byteInput / LO range
754Bmenu1 1 byteCurrent left menu (type A and B menu numbers are different)
764Cmenu2
different)
774Dmemno1 byteCurrent memory number
784Esetno1 byteSetup / config selection - load / save
8555mempg
8656nbthr
8757hshfr
8858nchtmr
9059wbuff26 bytesWork buffer
115 73keymd1 byteIR remote +/- keys function
116 74keybuf20 bytesIR remote key input buffer
136 88frofs:4 bytes32-bit local osc offset
140 8Ccarofs4 bytes32-bit carrier osc offset
144 90smofs1 byteS-meter starting offset
145 91smscl7 bytesS-meter segment values
152 98ifcal2 bytesRSS offsets for -20dB and -5dB filter alignment
154 9Aifdef1 byteDefault filter numbers for narrow and wide (2 digits)
155 9Bvfo_b22 bytesVFO B storage area :155 9B1 byteB : Scan delay time
156 9C2 bytesB : Channel step size
158 9E1 byteB : Squelch save value (non-fm mode)
159 9F1 byteB : IF gain value
160 A01 bytenot used
161 A13 bytesB : Tuned frequency
164 A41 byteB : Mode
165 A51 byteB : Volume
166 A61 byteB : Left channel balance
167 A71 byteB : Right channel balance
168 A81 byteB : Bass response
169 A91 byteB : Treble response
170 AA1 byteB : RF gain
171 AB1 byteB : RF AGC
172 AC1 byteB : AGC speed
173 AD1 byteB : Squelch value
174 AE1 byteB : Filter number
175 AF1 byteB : PBS offset
176 B01 byteB : BFO offset
1 byteCurrent right menu (type A and B menu numbers are
1 byteMemory page (hundreds - value 0 to 3)
1 byteNoise blanker threshold (values 0 to 15)
1 byteCurrent tuned frequ index value (during ident search)
1 byteNotch filter auto tune / search timer
218 DAsavmnu
219 DBsrchm
222 DDidtmr
223 DEnchfr
15)Sample routines (in MS QBASIC)
REM Sample subroutines for communication with the AR-7030 A-type
REM These subroutines use the following variables :REM rx.freq# frequency in kHz (double precision)
REM rx.mode mode number (1 to 7)
REM rx.filt filter number (1 to 6)
REM rx.mem memory number (0 to 99)
REM rx.pbs passband shift value (-4.2 to +4.2 in kHz)
REM rx.sql squelch value (0 to 255)
REM ident$ model number, revision and type
REM Subroutine to open comms link to receiver
open.link:
open “com1:1200,n,8,1,cd0,cs0,ds0,rs” for random as #1 len = 1
field #1, 1 as input.byte$
return
1 byteSaved menu 1 number during ident display
2 bytesIdent search memory (page and number)
1 byteAuto ident search start timer
2 bytes16-bit notch filter frequency, value is 6553.6 / kHz
REM Subroutine to flush QBASIC serial input buffer
flush.buffer:
print #1,”//”;
do
time.mark# = timer
do while timer - time.mark# < 0.2
loop
if eof(1) then exit do
get #1
loop
return
REM Subroutines to lock and unlock receiver controls
lock.rx:
print #1,chr$(&H81); ‘ Set lockout level 1
return
unlock.rx:
print #1,chr$(&H80); ‘ Lockout level 0 (not locked)
return
REM Subroutine to read byte from comms link
read.byte:
read.value = -1 ‘ Value assigned for read error
time.mark# = timer
print #1,chr$(&H71); ‘ Read byte command
do while timer - time.mark# < 0.3
if eof(1) = 0 then
get #1
read.value = asc(input.byte$)
exit do
end if
loop
return
REM Subroutine to set receiver frequency and mode
tune.rx:
gosub lock.rx
print #1,chr$(&H50); ‘ Select working mem (page 0)
print #1,chr$(&H31);chr$(&H4A); ‘ Frequency address = 01AH
gosub send.freq ‘ Write frequency
print #1,chr$(&H60+rx.mode); ‘ Write mode
print #1,chr$(&H24); ‘ Tune receiver
gosub unlock.rx
return
REM Subroutine to store data into receiver’s frequency memory
set.memory:
mem.loc = rx.mem+156 ‘ Squelch memory origin
mem.h = int(mem.loc/16)
mem.l = mem.loc mod 16
print #1,chr$(&H51); ‘ Select squelch memory (page 1)
print #1,chr$(&H30+mem.h);
print #1,chr$(&H40+mem.l); ‘ Set memory address
print #1,chr$(&H30+int(rx.sql/16))
print #1,chr$(&H60+rx.sql mod 16) ‘ Write squelch value
mem.loc = rx.mem*4 ‘ Frequency memory origin
mem.t = int(mem.loc/256)
mem.loc = mem.loc mod 256
mem.h = int(mem.loc/16)
mem.l = mem.loc mod 16
print #1,chr$(&H52); ‘ Select frequency memory (page
2)
print #1,chr$(&H30+mem.h);
print #1,chr$(&H40+mem.l); ‘ Set memory address
print #1,chr$(&H10+mem.t);
gosub send.freq ‘ Write frequency
print #1,chr$(&H30+rx.filt);
print #1,chr$(&H60+rx.mode); ‘ Write filter and mode
mem.loc = rx.mem+400-256 ‘ PBS memory origin
mem.h = int(mem.loc/16)
mem.l = mem.loc mod 16
pbs.val = 255 and int(rx.pbs/0.033189+0.5)
print #1,chr$(&H30+mem.h);
print #1,chr$(&H40+mem.l); ‘ Set memory address
print #1,chr$(&H11);
print #1,chr$(&H30+int(pbs.val/16))
print #1,chr$(&H60+pbs.val mod 16) ‘ Write passband value
return
REM Subroutine to read data from receiver’s frequency memory
read.memory:
mem.loc = rx.mem+156 ‘ Squelch memory origin
mem.h = int(mem.loc/16)
mem.l = mem.loc mod 16
print #1,chr$(&H51); ‘ Select squelch memory (page 1)
print #1,chr$(&H30+mem.h);
print #1,chr$(&H40+mem.l); ‘ Set memory address
gosub read.byte ‘ Read squelch value
rx.sql = read.value
mem.loc = rx.mem*4 ‘ Frequency memory origin
mem.t = int(mem.loc/256)
mem.loc = mem.loc mod 256
mem.h = int(mem.loc/16)
mem.l = mem.loc mod 16
print #1,chr$(&H52); ‘ Select frequency memory (page
2)
print #1,chr$(&H30+mem.h);
print #1,chr$(&H40+mem.l); ‘ Set memory address
print #1,chr$(&H10+mem.t);
gosub read.freq ‘ Read frequency
gosub read.byte ‘ Read filter and mode
if read.value < 0 then return
rx.filt = int(read.value/16)
rx.mode = read.value mod 16
mem.loc = rx.mem+400-256 ‘ PBS memory origin
mem.h = int(mem.loc/16)
mem.l = mem.loc mod 16
print #1,chr$(&H30+mem.h);
print #1,chr$(&H40+mem.l); ‘ Set memory address
print #1,chr$(&H11);
gosub read.byte ‘ Read passband value
if read.value < 0 then return
if read.value > 127 then read.value = 256-read.value
rx.pbs = read.value*0.033189
return
REM Subroutine to read receiver ident string
read.ident:
print #1,chr$(&H5F); ‘ Select ident memory (page 15)
print #1,chr$(&H40); ‘ Set address 0
ident$=””
for read.loop = 1 to 8
gosub read.byte ‘ Read 8-byte ident
if read.value < 0 then exit for
ident$ = ident$+chr$(read.value)
next read.loop
return
REM Subroutine to send frequency (Called only from other routines)
send.freq:
fr.val# = int(rx.freq#*376.635223+0.5) ‘ Convert kHz to steps
‘ Exact multiplicand is (2^24)/
44545
print #1,chr$(&H30+int(fr.val#/1048576));
fr.val# = fr.val# mod 1048576 ‘ Write frequency as 6 hex digits
print #1,chr$(&H60+int(fr.val#/65536));
fr.val# = fr.val# mod 65536
print #1,chr$(&H30+int(fr.val#/4096));
fr.val# = fr.val# mod 4096
print #1,chr$(&H60+int(fr.val#/256));
fr.val# = fr.val# mod 256
print #1,chr$(&H30+int(fr.val#/16));
print #1,chr$(&H60+(fr.val# mod 16));
return
REM Subroutine to read frequency (Called only from other routines)
read.freq:
fr.val# = 0
for read.loop = 1 to 3
gosub read.byte ‘ Read frequency as 3 bytes
if read.value < 0 then exit for
fr.val# = fr.val#*256+read.value
next read.loop
rx.freq# = fr.val#/376.635223 ‘ Convert steps to kHz
return
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.