Bob's Blog #4: The S-COM Programming Language

So where did it come from, anyway?

Not surprisingly, early repeater control systems weren’t very sophisticated by today’s standards. Oldsters will recall one-tube COR circuits, CW identifiers that used code wheels and tape decks, and controllers made from relays and pneumatic timers. Some repeaters could be shut down by dialing an unlisted telephone number.

Later, logic gates replaced electromechanical devices, and diode matrix boards replaced code wheels. But “reprogramming” a control system still meant rewiring it.

In the 1960s, DTMF, or “Touch-Tone” as it was called by creator AT&T, allowed signaling over voice circuits. Repeater controllers that executed simple, fixed-length commands could be built from DTMF decoders and logic ICs. Some schemes required a ‘reset’ character to precede the string. But there were no standards, and the command format pretty much reflected the whims of the designer. Formats included:

• Enter three digits, then (*) to execute.
• Enter three digits, then drop the carrier to execute.
• Enter (#), then three digits, then drop the carrier to execute.
• Enter (*), then three digits, then (*) for ON or (#) for OFF. Drop the carrier to abort.
• Enter (*), two security digits, two command digits, then (#) to execute. Wait 5 s to abort.
• Enter four access digits, then one function code digit. A timer aborted the command.

Software started replacing hardware with the introduction of microprocessors in the 70’s. Controllers became more capable, but ID callsigns, timeout timer values, tail characteristics, etc., were fixed in EPROM. Expanding the feature set via software was much easier than wiring in more logic, but a trip to the site was still required to swap EPROMs.

That was the picture in 1976 when we built the first S-COM controller from a SWTPC 6800 microcomputer kit. The boot loader was in ROM, but the user program and its data were stored in volatile RAM and had to be reloaded via paper tape after every power interruption.

We wire-wrapped the next few controllers. They used EPROM for program storage and nonvolatile (battery backed) RAM for data storage. Fixed-length commands seemed too restrictive for all the software that seemed possible, so we decided to use a command line user interface (CLI) instead. After all, CLI was being used in almost all computer operating systems, so why not repeater controllers?

Because the commands varied in length, we needed an enter character like the carriage return on a computer. We chose the DTMF star (*). Alternately, the user could drop his carrier (unless there was another incoming signal holding up the input).

We also needed a character that cleared a partially-entered command to avoid waiting for a timer to expire. The pound (#) was chosen for the job. Star and pound had no effect if entered ahead of a command.

We decided that each command needed to be fully self-contained and independent of other commands. Also, the order in which commands were entered had to be unimportant, which contrasted with the strict order of hierarchical formats (“menus”).

The format became:

(PASSWORD) (ROOT NO.) (DATA, if any) (*)

Each command began with a password. Without its security, all commands would be available to anyone reading our manuals. Other controllers required an unlock code before entering commands and then a lock code afterward, but we rejected the idea as being too inflexible for the system we had in mind.

A unique two-digit root number followed the password. It simply told the controller which function the user wished to access. (Later growth of the command library required expansion to four digits for some commands.)

Any data needed by the command followed the root number.

The enter (*) character was last.

The trick wasn’t in creating the command format. It was in creating an entire library of commands that did sophisticated things while limited to 12 DTMF characters instead of 128 ASCII characters. We avoided using the fourth-column characters (A, B, C, D) of a 16-button keyboard because some radios (and most telephones) didn't have them, but we did allow lettered characters in passwords for extra security.

Our scheme would not have worked without nonvolatile RAM. With it, we had the ability to change data without worry of loss during outages. We also became convinced that no function was too complex to be left out of remote programming. So, the command set increased from simple things, like changing the access mode, to programming messages, timer values, and any other variable that seemed appropriate.

The command format turned out to be a good choice for the shortcut feature that became macros, discussed in the next blog.

Except for the simplest controllers, CLI is still heavily used today. It’s attractive to experienced users because it is concise, fast, and easily commented and stored. And, it works for uploading and downloading; the Windows-based S-COM Configuration Utility can recover the controller’s configuration by generating a file in S-COM script format.

For those owners who are intimately familiar with the format, a good tool is the C7330 offered by Sigrid Company (www.sigridco.com). It replaces the text the owner defines with the correct numeric codes, and works with passwords, speech words, and so on. Text can be edited in the Source window. A screen shot appears below.

 

Graphical user interface (GUI) has also become popular, especially with casual users. To address that need, Sigrid Company introduced a new program called P7330 at Hamvention 2017. With the P7330, the owner doesn't need to know much about the command line format. He will likely need one occasionally at the command line, but most of the configuration is via the GUI. The output is a file of command lines that can be run through C7330 to strip comments, then straight to the 7330 serial console. A screen shot appears below.

 

Some might wonder why we continue to maintain DTMF-compatible commands today. Perhaps the best reason is that an emergency may require a port configuration change; with the 7330, remote reprogramming can be done with any radio that has a DTMF pad instead of a trip to the site to rewire.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer