home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 1326.ICOMCIV.TXT < prev    next >
Text File  |  1991-03-21  |  24KB  |  553 lines

  1. From: m21198@mwunix.mitre.org (John McHarry)
  2. Newsgroups: rec.radio.amateur.misc
  3. Subject: Icom CI V spec
  4. Summary: Here is a good description of the spec.
  5. Keywords: Icom, CI V
  6. Message-ID: <m21198.669248956@mwunix.mitre.org>
  7. Date: 17 Mar 91 22:29:16 GMT
  8. Sender: news@linus.mitre.org (News Service)
  9. Organization: The MITRE Corporation, Bedford MA
  10. Lines: 539
  11. Nntp-Posting-Host: mwunix.mitre.org
  12.  
  13. N6GN sent me this after my last post.
  14.  
  15. Date: Fri, 15 Mar 91 11:21:52 -0800
  16. From: Glenn Elmore <glenne@hpnmdla.hp.com>
  17. Hope this helps...
  18.  
  19. de n6gn
  20.  
  21.  
  22.                    THE ICOM CI-V COMPUTER INTERFACE
  23.  
  24.                        E. R. (Randy) Cole, KN6W
  25.                         3100 Ocean Park Blvd.
  26.                        Santa Monica, CA  90405
  27.  
  28.                 Copyright (c) 1986,1987 Edwin R. Cole
  29.  
  30. (This document may be freely copied and distributed provided the above
  31. copyright notice is included on all copies. It may not be sold by
  32. anyone except the author)
  33.  
  34. Have you bought a new radio lately?  If you have, you probably noticed
  35. that it came with an increasingly common feature -- a computer
  36. interface.  Actually, radios with computer interfaces have been around
  37. since 1976, when the ICOM IC-211 and 245 appeared on the scene with a
  38. computer interface that allowed remote control of the radio's
  39. frequency.  The IC-701, introduced in 1978, used the same interface.
  40. Since then ICOM has produced the IC-720/251/255/260/451 series and the
  41. IC-R71/751/271/471/1271 series, each with a different type of computer
  42. interface.  Both Yaesu and Kenwood now have their own interfaces for
  43. their families of radios.  The various interfaces are described in [1]
  44. - [5].
  45.  
  46. ICOM recently introduced a new type of computer interface, called the
  47. CI-V Communication Interface System.  The CI-V interface first
  48. appeared on the IC-735, and is now also found on the IC-275, IC-375,
  49. IC-475, IC-575, IC-761 and IC-R7000.  The functions performed by the
  50. radios via this new interface are generally the same as those possible
  51. via the interface for the R71/751/271/471/1271 series [4], plus a few
  52. enhancements.
  53.  
  54. A recent Ham Radio article [6] provides a very simple (one resistor)
  55. interface and an elaborate Basic program for controlling the IC-735
  56. with a Commodore 64.  That same interface can be used to control any
  57. of the ICOM CI-V radios using a C64.  However, there are significant
  58. differences between radios, especially in the case of the R7000.  The
  59. author has tested the IC-735, IC-275, IC-475, and IC-R7000.  This
  60. article describes how to control any of the current ICOM CI-V radios.
  61. A short Basic program for the IBM PC is included to demonstrate use of
  62. the interface.
  63.  
  64.  
  65. THIS ONE IS DIFFERENT
  66.  
  67. Ho hum, you say, yet another interface.  Big deal; what we really need
  68. is some standardization.  That's certainly true, but the latest ICOM
  69. interface is altogether different from all the rest.
  70.  
  71. Picture this:  You can have up to 15 radios and up to 254 computers,
  72. all connected in parallel to the same two-wire bus.  Any computer can
  73. control any radio.  In fact, radios can control each other.  You can
  74. even have more than one of the same type of radio on the bus.
  75. Commands are guaranteed to get through, even if different computers
  76. decide to send commands to different radios at exactly the same time.
  77.  
  78. How is it done?  The new ICOM interface is a CSMA/CD bus.  The letters
  79. stand for Carrier Sense Multiple Access with Collision Detection, and
  80. the technique has been used for computer networks (like the
  81. Ethernet(tm)) for years.  Multiple access refers to the fact that
  82. there can be many devices (computers and radios, in this case) on a
  83. single bus.  Carrier sense means that a device listens to see if the
  84. bus is busy before it sends a message, just like you listen to make
  85. sure a frequency is clear before you transmit.  If the bus is clear,
  86. the device then sends its message.  Collision detection means that the
  87. device listens to the bus while it is sending its message and compares
  88. what it hears with what it put on the bus.  If the two are the same,
  89. all is OK.  If they are different, it is because another device tried
  90. to send a message at the same time.
  91.  
  92. If there was a conflict, or collision, the device deliberately sends a
  93. jamming message to ensure that the other device, which is also
  94. listening, senses the collision.  Next each device waits for a short
  95. time, listens, and then tries to send the message again.  The waiting
  96. times are randomized to minimize the chance of repeated collisions.
  97.  
  98. If a radio receives a valid command, it sends a positive reply message
  99. to the computer that sent the command, telling it that the command was
  100. received and executed.  If a radio receives an illegal command, it
  101. sends a negative reply message to inform the sender that the radio
  102. could not successfully execute the command.  Not all commands cause
  103. the radio to generate positive or negative replies.  Some commands
  104. simply request information from the radio, and the radio replies with
  105. the requested information rather than a positive reply.  Two special
  106. commands are provided that do not generate replies.
  107.  
  108. Not too many amateurs have more than one computer.  However, most hams
  109. do have more than one radio, and ICOM's new interface bus is a simple
  110. way to control several different radios with a single computer, using
  111. only one interface connection to the computer.  Other manufacturers'
  112. interfaces either require a separate connection to the computer for
  113. each radio, or don't permit control of more than one radio of the same
  114. type on a single bus.
  115.  
  116.  
  117. PHYSICAL INTERFACE
  118.  
  119. Unlike the previous ICOM interface [4], the new ICOM CI-V system
  120. requires no additional hardware inside the radios themselves.  The new
  121. system uses the standard RS-232C format, with both the RS-232C
  122. Transmit Data (TXD) and Receive Data (RXD) connected to the single
  123. ICOM interface bus signal line to allow both transmitting and
  124. receiving on the two-wire ICOM bus.
  125.  
  126. The interface runs at TTL (+5V and 0V) levels, so most computers will
  127. need a simple voltage level converter to convert from the TTL levels
  128. of the ICOM interface bus to the +12V and -12V levels used by standard
  129. RS-232C serial ports.  ICOM doesn't currently make such a device, but
  130. does include the schematic for a level converter in some of the
  131. manuals.  Yaesu makes a level converter (the FIF-232C) and so does
  132. Kenwood (the IF-232C).
  133.  
  134. A simple level converter that requires only a single +5V power supply
  135. can be built using a single MAX-232 chip (from Maxim Integrated
  136. Products, 510 N. Pastoria Ave., Sunnyvale, CA 94086).
  137.  
  138. The bus address and baud rate of the radios are selected by internal
  139. jumpers.  The 735 has three bits of address, the R7000 has four bits,
  140. and the 275 and 475 have seven.  Bus address 0 has a special meaning
  141. and should not be assigned to a radio.  The 735, R7000, 275 and 475
  142. come with their addresses set to 4, 8, 16 (hex 10) and 20 (hex 14),
  143. respectively.  All the radios seem to come with their baud rate set to
  144. 1200 baud.  Baud rate for all can be set at either 300, 1200, or 9600
  145. baud.  Data is sent using 8 data bits, no parity, and one stop bit.
  146.  
  147.  
  148. COMMAND FORMAT
  149.  
  150. Commands (and replies) on the ICOM interface bus are sent in the form
  151. of packets.  Yes, packets are everywhere these days.  These packets
  152. aren't the same as the well-known AX-25 or TCP/IP packets used by ham
  153. packeteers, but there are some similarities.
  154.  
  155. Each packet is a series of 8-bit bytes.  A diagram of a packet looks
  156. like:
  157.  
  158.   FE FE destaddr srcaddr cmdcode [data1 data2 .... dataN] FD,
  159.  
  160. where
  161.  
  162.      FE FE               is the preamble,
  163.      destaddr            is the bus address of the destination         
  164.                     device,
  165.      srcaddr             is the bus address of the source              
  166.                     device,
  167.      cmdcode             is the command code,
  168.      data1 .... dataN    are the data bytes, and
  169.      FD                  is the end byte.
  170.  
  171. The first two bytes (both hex FE) are a PREAMBLE, which signals the
  172. start of a packet.  The third byte is the DESTINATION ADDRESS, which
  173. tells which device the packet is intended for, and the fourth byte is
  174. the SOURCE ADDRESS, which tells which device the packet is being sent
  175. from.  Next comes the COMMAND CODE, followed by zero or more DATA
  176. bytes.  Finally, an END byte (hex FD) indicates the end of a packet.
  177.  
  178. Packets vary in length from six to seventeen bytes.   An address can
  179. be any 8-bit value except FD (FD is unusable because FD is used for
  180. the end byte of a packet).  Computers can be assigned any unique
  181. address except 0 and FD.  Address 0 is a special "broadcast" address
  182. for Transceive Mode.
  183.  
  184. ----------------------------------------------------------------
  185.  
  186.                        TABLE 1: COMMAND SUMMARY
  187.  
  188. COMMAND     FUNCTION           DATA BYTES      BYTES
  189.  BYTE                             SENT        RETURNED
  190.  
  191.   0       Set Frequency         frequency    none
  192.             (TX Mode)
  193.  
  194.   1       Set Mode (TX Mode)    mode         none
  195.  
  196.   2       Read Frequency        none         IC 275/475, IC735:
  197.              Range                             lower [2D] upper
  198.                                              R7000:
  199.                                                upper [2D] lower
  200.  
  201.   3       Read Frequency        none         frequency
  202.  
  203.   4       Read Mode             none         mode
  204.  
  205.   5       Set Frequency         frequendy    FA/FB
  206.  
  207.   6       Set Mode              mode         FA/FB
  208.  
  209.   7       Set VFO               none/VFO     FA/FB
  210.  
  211.   8       Set Memory            memory       FA/FB
  212.  
  213.   9       Write VFO to Mem.     none         FA/FB
  214.  
  215.   A       Write Mem.to VFO      none         FA/FB
  216.  
  217.   B       Clear Current Mem.    none         FA/FB
  218.  
  219.   C       Read Current Offset   none         offset
  220.  
  221.   D       Set Current Offset    offset       FA/FB
  222.  
  223.   E       Start/Stop Scanning   start/stop   FA/FB
  224.  
  225. Note: Commands 0 through A are documented in information available
  226. from ICOM.  Commands B through E are not currently documented, but
  227. have been found to work on the IC275 and IC 475.
  228.  
  229. ----------------------------------------------------------------
  230.  
  231.  
  232. COMMANDS
  233.  
  234. Table 1 is a summary of the available commands.  Not all commands are
  235. meaningful to all radios.  For example, the R7000 has 99 memories but
  236. no VFO, and generates a negative reply to Commands 7 and A.
  237.  
  238.  
  239.      DATA BYTES
  240.  
  241. Frequency:
  242.  
  243. Frequency data is packed two digits per byte, beginning with a (10Hz,
  244. 1Hz) byte.  The 275, 475 and 735 ignore the 1 Hz digit, and the R7000
  245. ignores the 1 Hz and 10 Hz digits, but they must be sent nonetheless.
  246. Only as many bytes as necessary need be sent.  For example, if the
  247. highest digit to be changed is the KHz digit, only two bytes of
  248. frequency data are needed.
  249.  
  250.      IC-735: 4 bytes
  251. 9         (e.g., 14.12345 is sent as 50 34 12 14)
  252.  
  253.      IC-275/475, IC-R7000: 5 bytes
  254.           (e.g., 148.76543 is sent as 30 54 76 48 01).
  255.  
  256. Mode:
  257.  
  258. Modes can be designated by either one or two bytes.  The R7000 can
  259. operate on either sideband, but selection is made by a switch on the
  260. back panel.  Since there is no command that definitively sets an R7000
  261. to USB or LSB, ICOM has used a different code for SSB on the R7000.
  262.  
  263.       IC735:           R7000:                IC275/475
  264.  
  265.      00 - LSB        02    - AM            00    - LSB
  266.      01 - USB        05    - FM Wide       01    - USB
  267.      02 - AM         05 02 - FM Narrow     03    - CW
  268.      03 - CW         05 00 - SSB           03 02 - CW Narrow
  269.      04 - RTTY                             05    - FM
  270.      05 - FM
  271.  
  272. VFO:
  273.  
  274. VFO data is a single byte, either 0 for VFO A or 1 for VFO B.
  275.  
  276. Memory:
  277.  
  278. Memory data is a single byte containing the memory number.
  279.  
  280. Start/Stop Scanning:
  281.  
  282. A single byte.  A one starts scanning, a zero stops scanning.
  283.  
  284.  
  285.      REPLY MESSAGES
  286.  
  287. Reply messages consist of a packet with a preamble, destination and
  288. source addresses, a reply code, and an end byte.  The reply code is
  289. either hexadecimal FA, a negative reply, or hexadecimal FB (cute,
  290. huh?) for a positive reply.  Transcieve Mode commands do not cause the
  291. radio to generate a reply.
  292.  
  293. A negative reply is returned by the radio to the computer whenever a
  294. command is undecipherable or there is an error in the data inside the
  295. packet, such as out-of-bounds frequency data, missing bytes, an
  296. attempt to select a non-existent memory, an undefined command, etc.
  297.  
  298. A positive reply is returned by the radio to the computer after a
  299. legal command is received and executed.  Inquiry commands which cause
  300. the radio to send data back to the computer do not return a positive
  301. reply, since the returned data itself serves as a positive reply.
  302.  
  303.  
  304.      JAMMING SEQUENCE
  305.  
  306. When a radio is sending a message and detects a collision, it will
  307. immediately stop sending.  In order to prevent the (somewhat unlikely)
  308. case in which the collision merely corrupts the content of a message
  309. without destroying its format, ICOM has implemented a jamming
  310. sequence, which is:
  311.  
  312.      FC FC FC FC FC.
  313.  
  314. After detecting a collision, the radio immediately sends the jamming
  315. sequence and then waits for a short randomized period of time before
  316. it listens to the bus and tries to resend the message that was
  317. involved in the collision.  The radio will repeat the process for up
  318. to five times, but will then give up trying.
  319.  
  320.  
  321.      TRANSCEIVE MODE (TX MODE)
  322.  
  323. This interface provides a new feature, called Transceive Mode (TX
  324. Mode).  TX Mode allows two compatible radios to be connected so that
  325. whenever the frequency or mode is changed on one radio the other
  326. radio's frequency or mode will follow.  No computer is needed.  The
  327. bus connector on the back of one radio is simply connected to the bus
  328. connector on the back of the other.
  329.  
  330. Transceive Mode also allows a computer to monitor the current state of
  331. a radio without the need to issue any commands.  This capability is
  332. useful for logging purposes.
  333.  
  334. TX Mode is enabled and disabled by a switch on the same internal
  335. switch block that controls the radio's address and baud rate.  If a
  336. radio's TX Mode is enabled, then whenever the radio changes frequency
  337. or mode, the radio itself will send a command that will cause the
  338. other radio to change frequency or mode correspondingly.  All radios
  339. examined thus far have come from the factory with TX Mode enabled.
  340.  
  341. If a radio's TX Mode is enabled, it will send a Command 0 (Set
  342. Frequency) packet whenever it changes frequency and a Command 1 (Set
  343. Mode) packet whenever it changes mode.  The destination address in
  344. these packets is always 0, and the source address is the radio's own
  345. address.
  346.  
  347. Any radio with TX Mode enabled will respond to Commands 0 and 1 if the
  348. destination address is 0 or the radio's actual address.
  349.  
  350. A radio in TX Mode will not generate frequency and mode command
  351. packets while it is scanning, but will generate both when it is
  352. stopped from scanning.
  353.  
  354. When a radio receives a Command 0 packet, it DOES NOT reply with a
  355. positive or negative reply packet.
  356.  
  357. While primarily designed to implement TX Mode,  Command 0 can be used
  358. by a computer in place of Command 5 if no reply is desired.
  359.  
  360.  
  361.      THE STRANGE CASE OF THE R7000
  362.  
  363. The behavior of the R7000 is a bit different than that of the 275 and
  364. 735, largely because it lacks the concept of VFO A and VFO B as
  365. implemented in the other radios.  The following describes the known
  366. peculiarities of the R7000.
  367.  
  368. An R7000 is capable of receiving signals at frequencies up to
  369. 1999.9999 MHz (except for 1000 to 1025 MHz).  Above 1 GHz, ICOM only
  370. publishes and guarantees specifications within the 1240 to 1300 MHz
  371. band.  Frequencies above 1 GHz are selected by a "1 GHz" switch on the
  372. radio's front panel, which inserts a 1 GHz converter in the radio's
  373. signal path.  The converter cannot be selected or deselected via the
  374. computer interface, nor can the state of the "1 GHz" switch be sensed
  375. through the interface.  If the "1 GHz" front panel switch is
  376. depressed, all frequencies will be raised by 1 GHz.
  377.  
  378. The R7000 always replies to Commands 7 (Set VFO) and A (Write Memory
  379. to VFO) with a negative reply message.  In the R7000, Command 8 (Set
  380. Memory) causes the contents of the selected memory to be transferred
  381. to the dial, causing the R7000 to jump to the frequency and mode
  382. stored in the specified memory.  This is equivalent to selecting a
  383. memory and writing it into the current VFO on the 275, 475 or 735.
  384. Command 9 (Write VFO to Memory) causes the R7000 to write the current
  385. frequency and mode as shown on the display into the selected memory.
  386.  
  387. When it is in TX Mode, the R7000 sends only a mode packet when its
  388. mode is changed via the front panel, while the 275, 475 and 735 send
  389. both frequency and mode packets when their mode is changed, even
  390. though the frequency may not have changed.
  391.  
  392.  
  393. SAMPLE BASIC PROGRAM
  394.  
  395. The sample Basic program runs under IBM BASIC or BASICA on the IBM PC,
  396. and allows the user to set the frequency and mode of an R7000 from the
  397. computer.  It has not been tested on any other computer or any other
  398. version of Basic, but translating it to your computer's version of
  399. Basic should not be too difficult.
  400.  
  401. The program reads back and prints back both the command that was sent
  402. and the radio's reply.  However, the program doesn't compare the
  403. command it sent out with what it heard on the bus, which would be
  404. necessary if there were more than two devices on the bus.
  405.  
  406.  
  407. IMPROVEMENTS OVER PREVIOUS COMMAND SETS
  408.  
  409. The new command set has some improvements over the command set for the
  410. R71/751/271/471/1271 series.  You can now:
  411.  
  412.   o  Stop the radio from scanning (by issuing a Set Frequency command)
  413.      and take control of the radio,
  414.  
  415.      If a radio receives a Set Frequency command while scanning, it
  416.      will stop scanning and change to the specified frequency. If it
  417.      receives any other command (legal or illegal) it will hold the
  418.      command until scanning is stopped manually and will then process
  419.      the command.
  420.  
  421.   o  Select which VFO to use, if the radio has more than one (this
  422.      feature was possible on ICOM's second type of interface but
  423.      missing from the third), and
  424.  
  425.   o  Monitor the radio's frequency and mode without issuing commands
  426.      to the radio (using TX Mode).
  427.  
  428.   o  Clear memories.
  429.  
  430.   o  Set and read the radio's duplex offset.
  431.  
  432.   o  Start and stop scanning (on the 275 and 475).
  433.  
  434. However, the command set still lacks a number of features, as pointed
  435. out in [4], such as setting or reading the RIT.  With the previous
  436. ICOM interface, NG6Q was able to go a bit beyond the normal command
  437. set and achieve a few additional functions by accessing "memories" 33
  438. to 255 (the radios have only 32 memories).  The processors in the 275,
  439. 475, 735 and R7000 enforce memory and frequency limits more
  440. rigorously, and the author has thus far been unable to "fudge" the
  441. memory and frequency boundaries.
  442.  
  443.  
  444. SUMMARY
  445.  
  446. The new ICOM CI-V interface makes it easy to control one radio with
  447. one computer, and at the same time makes it possible to control more
  448. than one radio with more than one computer.  The additional hardware
  449. needed to connect the radio to the interface bus is simple and easy to
  450. build.  Command set functionality is improved over the previous
  451. interface.  Amateur radio operators, one of the most ingenious groups
  452. around, should be able to think of many unique and interesting
  453. applications using the new interface.
  454.  
  455.  
  456. REFERENCES
  457.  
  458. [1] G. Williman, "A Three-Chip Microcomputer for Your Station," QST,
  459. Aug. 82, p. 19 (describes the IC-701/211/245 interface).
  460.  
  461. [2] C. Terwilliger, "Computer Control of the IC-255A," QST, May 81, p.
  462. 30 (describes the IC-720/251/255/260/451 interface).
  463.  
  464. [3] L. Studebaker, "Simple, Low-Cost Computer Control for the ICOM IC-
  465. 720," QST, July 84, p. 34.
  466.  
  467. [4] R. Bisbey, "Computer Control of ICOM R-71, 271, 471 and 751
  468. Radios," Ham Radio, April 86, p. 47.
  469.  
  470. [5] K. Strom, "A CAT Control System," QST, Oct. 85, p. 38 (describes
  471. the Yaesu CAT interface system).
  472.  
  473. [6] C. Bahr, "Simple ICOM IC-735 to C-64 Interface," Ham Radio, March
  474. 87, p. 39.
  475.  
  476.  
  477. APPENDIX (OR SIDEBAR) 1 - SAMPLE BASIC PROGRAM
  478.           
  479. 10 ' This sample program is written in IBM PC Basic, and sets the
  480. 20 ' mode and frequency of an ICOM R7000.  The mode must be AM, FMW,
  481. 30 ' FMN, FM, or SSB, and the frequency must be between 25 and
  482. 40 ' 999.9999 MHz.
  483.           
  484. 50 OPEN "COM2:1200,N,8,1" AS #1         ' Author's setup uses COM2:
  485. 60 INPUT "FREQUENCY,MODE";F,M$          ' Get frequency, mode
  486.           
  487. 100 ' This section looks for mode = "AM", "FMW", "FMN", "FM", or "SSB",
  488. 110 ' complains if it doesn't find it, and otherwise assembles the
  489. 120 ' data string for the mode command.
  490. 130 IF (M$="AM") THEN MO$=CHR$(&H02): GOTO 200
  491. 140 IF (M$="FMW") THEN MO$=CHR$(&H05): GOTO 200
  492. 150 IF (M$="FMN") OR (M$="FM") THEN MO$=CHR$(&H05)+CHR$(&H02): GOTO 200
  493. 160 IF (M$="SSB") THEN MO$=CHR$(&H05)+CHR$(&H00): GOTO 200
  494. 170 PRINT "Unknown mode "; M$; " Please try again": GO TO 60
  495.           
  496. 200 ' This section checks the frequency to make sure it is in bounds,
  497. 210 ' objects if it isn't, and otherwise assembles the proper data
  498. 220 ' string for the frequency command
  499. 230 IF (F>=25) AND (F<1000) GOTO 250    ' Bounds check
  500. 240 PRINT "Out-of-bounds frequency"; F; "Please try again": GO TO 60
  501. 250 F$=STR$(F)                          ' Make a string out of it
  502. 260 F$=MID$(F$,2,LEN(F$)-1)             ' Eliminate leading space
  503. 270 IF (F<100) THEN F$="0"+F$           ' Add leading zero if needed
  504. 280 FOR I=1 TO 5: F$=F$+"0": NEXT I     ' Add trailing zeros
  505. 290 FR$=CHR$(0)                         ' Format for ICOM
  506. 300 FR$=FR$+CHR$(16*VAL(MID$(F$,7,1))+VAL(MID$(F$,8,1)))
  507. 310 FR$=FR$+CHR$(16*VAL(MID$(F$,5,1))+VAL(MID$(F$,6,1)))
  508. 320 FR$=FR$+CHR$(16*VAL(MID$(F$,2,1))+VAL(MID$(F$,3,1)))
  509. 330 FR$=FR$+CHR$(VAL(MID$(F$,1,1)))
  510.           
  511. 400 ' Here is the main part of the program
  512. 410 DA=8                                ' Destination address (R7000)
  513. 420 SA=&HF1                             ' Source address (IBM PC)
  514.           
  515. 500 ' Send the Set Mode command and look at the command and reply
  516. 510 CM=6                                ' Set Mode command code
  517. 520 DA$=MO$                             ' Mode data
  518. 530 GOSUB 1000                          ' Send the command
  519. 540 GOSUB 2000                          ' Print out command heard
  520. 550 GOSUB 2000                          ' Print out reply heard
  521.           
  522. 600 ' Send the Set Frequency command and look at the command and reply
  523. 610 CM=5                                ' Set Frequency command code
  524. 620 DA$=FR$                             ' Frequency data
  525. 630 GOSUB 1000                          ' Send the command
  526. 640 GOSUB 2000                          ' Print out command heard
  527. 650 GOSUB 2000                          ' Print out reply heard
  528.           
  529. 700 CLOSE #1
  530. 710 END
  531.           
  532. 1000 ' Command sending subroutine
  533. 1010 PRINT #1,CHR$(&HFE);CHR$(&HFE);    ' Preamble
  534. 1020 PRINT #1,CHR$(DA);                 ' Destination address
  535. 1030 PRINT #1,CHR$(SA);                 ' Source address
  536. 1040 PRINT #1,CHR$(CM);                 ' Command code
  537. 1050 PRINT #1,DA$;                      ' Data
  538. 1060 PRINT #1,CHR$(&HFD);               ' End byte
  539. 1070 RETURN
  540.           
  541. 2000 ' Monitor command or reply and print it out
  542. 2010 A$=INPUT$(1,#1)                    ' Get next character
  543. 2020 V=ASC(A$)                          ' Convert to number
  544. 2030 H$=HEX$(V)                         ' Convert to hex string
  545. 2040 PRINT H$;                          ' Print it out
  546. 2050 PRINT " ";
  547. 2060 IF V=&HFD THEN GOTO 2080           ' Look for end byte
  548. 2070 GOTO 2010                          ' Loop back for next char
  549. 2080 PRINT
  550. 2090 RETURN
  551. -------
  552.  
  553.