Can You Repeat That?
Decades ago a few of us nerds with Ham Radio background and a bit of computer eperience got together and created (drum roll), an operating system. You might think that since it was way back in like the 80’s that it would be like Windows, but that was far from the truth. Our operating system actually did things on its own with input form non-computer people. Let me explain.
First here is how Ham Radio fit in.
You probably know how a radio receiver works. You tune a dial to a specific frequency and you hear a voice or music or some such communications. You would not necessarily hear it on your own without that receiver. The receiver takes the modulated signal and decodes it down to a listenable signal. So it is extracting an audio signal frome a lot higher signal called a carrier wave.
Now here is how that received signal came to be. Lets say you speak into a microphone and your voce is used to modulate (affect) a constant high frequency radio. That radio wave is then sent through the air and finally received by that receiver.
If users at both ends of the signal path have both a transmitter and receiver all tuned to the same frequency, we call that a simplex connection. Person A transmits a signal which Person B hears, then each end switches from transmitter to receiver and receiver to transmitter and a response is sent back. Only 1 person can talk and 1 person would receive at the same time.Now imagine if Person A can transmit on channel 1 and Person B can receive on channel A that is still simplex, but imagine that Person B transmits on channel B and Person A receives on channel B, then each can talk at the same time, similar to a cellphone or telephone call. This is called Duplex.
So in many radio services (think Police, Fire and so on), there could be many people in varions places wanting to transmit and there would be chaos on a Simplex System. It could work, but is not very efficient. So how do these services handle communications?
Imagine 50 Police officers driving around a city. They could all Transmit on channel 1. A receiver tuned to channel 1 might be located high atop a building or mountain and be sensitive. They can transmit out on channel 2 with enough power to cover the city. The problem which is solved is that if they were to transmit and receive on the same channel, there would be a lot of feedback. Since the channels differ that is eliminated.
So the way the system works, a radio signal is received on channel 1, it is decoded to audio and passed to a dispatcher. The dispatchers voice is used to encode an outbound radio wave on channel 2 and people all over the city can hear the dispatcher.
Our Ham system was similar but instead of a dispatcher, we took the received signal, took it down to an audio signal, and used that as thr input to our transmitter, thus allowing everyone to hear the original signa. We REPEATED the signal and made it stronger. To avoid the transmitter being on all the time when there was no audio, the transmitter can be kept off until it is time to transmit audio.
So, we ham friends took electronic equipment and built the interface between the receiver and the transmitter. Then the fun begins.
Since we have decoded audio in the middle of the system, suppose we listen for a tone and do something. So we connected a touchtone pad to our transmitters and instead of always talking, we could hit a touchtone on the pad. That tone could be decoded at the repeater site and we could then use it to do something. One thing we could do was use the various tones to create a command. That command could then do a task. Once such task was to connect to a telephone line. Someone transmitted the code to the repeater. That conce pulled in a relay which then connected a telephoen line to the middle of the receiver and the transmitter. Any audio afer those tones was sent to the mouthpiece of the phone and any audio from the phone went to the input of the transmitter. Thus we could make telephone calls from our Ham Radios in our cars. These days that is very similar to a cellphone call, except hams did it first. My friends and I were not the first, but we did create all the programming to perform this function. The system allowed us to have the transmitter actually identify itself with Morse Code and to start Morse Code practice over the air for potential Hams to practice. We even had a way to send a computer update through that phone line t ohave the computer update its operating system.
We aclled our software MUMTROS For Multi User Multi Tasking Repeater Operating System. The multitasking is a function was pretty much what most operating system do. They perform a task and when something else nees be don, that first task can be suspended, a second task runs for a while and suspends and the first task is resumed to continue. People do this all the time. You are studying and all of a sudden decide to go make a sadwich and then come back to continue your studying. Our operating system did that, however we also allowed the system to have multiple users accessing the system at the same time, performing different tasks. That is the multi user part, which unless you run a Windows Server, doesn’t really happen on a personal computer. You would need something like two screen and two keybosrds and have the computer keep constantly switching between those users. Unix systems do that with multiple tasks by multiple users all happening ALMOST simultaneously.
These days AI could create such an operating system easily. Wee didn’t have AI. We had to learn to program chips with very simple instructions.
Here is 8080 assembly code to add two integers.
ORG 2000H ; Origin for data
NUM1: DB 05H ; First number (example: 5)
NUM2: DB 07H ; Second number (example: 7)
RESULT: DB 00H ; Storage for result
ORG 2100H ; Origin for program
START: LDA 2000H ; Load first number into accumulator
MOV B, A ; Copy it to register B
LDA 2001H ; Load second number into accumulator
ADD B ; Add contents of register B to accumulator
STA 2002H ; Store the result into RESULT location
HLT ; Halt the program
SO…
Explanation of Instructions
-
LDA addr→ Load accumulator with byte at memoryaddr. -
MOV B, A→ Copy accumulator into register B. -
ADD B→ Add contents of register B to accumulator. -
STA addr→ Store accumulator into memoryaddr. -
HLT→ Stop execution.
Example Run
-
Memory(2000H) =
05H -
Memory(2001H) =
07H -
After execution: Memory(2002H) =
0CH(decimal 12).
Seems simple enough, right?
In later languages it might be this simple (I use HP Business Basic). This example auctually asks the user to input the numbers and prints them, rather than the assmebly code above it where the numbers are already in the memory spots and is not interactive asking the user for them.
10 PRINT “Enter first integer:”;
20 INPUT A
30 PRINT “Enter second integer:”;
40 INPUT B
50 LET C = A + B
60 PRINT “The sum is “; C
70 END
So in our operating system, we had t owrite the code to move everything around manually in memory. We also had to figure out how and where to keep User 1’s data and User 2’s data and when t oswitch away from the current user and start the next usr. If this is done quickly, neither user knows that the system is doing that behind their back. It seems to each user that they have the computer all to themselves.
This discussion could go on and on, but I think I’ll stop and let you think on this.
