The microprocessor appeared about the same time the FCC relaxed their restrictions on automation of VHF transmitters. I wrote automatic control software for the Wintek Control Module that would operate the new W9YB repeater. source
I can remember struggling to find the proper organization for the many timing related requirements. I discovered the solution while traveling to Florida.
I remember distinctly hanging out in the university library coding while a friend in Tallahassee worked his day job. I started exploring the 6800's software interrupt (SWI) instruction. I discovered that a handler coded up nicely.
* SOFTWARE INTERRUPT ENTRY EXEC LDX CURTSK STS STACKS-2,X SAVE CURRENT STACK DEX DEX ADVANCE TO NEXT BNE EXE2 EXE1 LDX &2*TSKCNT START OVER EXE2 STX CURTSK LDS STACKS-2,X LOAD NEXT STACK RTI
This swaps the runtime stack with that of the next task in a fixed-sized list of stack pointers. Tasks yield to other tasks by including a SWI at convenient points in their own control flow.
For example, I wrote tasks for decoding touch-tone signals including those that would be forwarded to our campus dial-pulse phone system. The general complexity of this is hinted at by the comments around the pulse generator.
Task Dial-Pulser — The patch is connected according to the patch activity flag. Digits are removed from the digit queue one second after the first digit appears. If the patch is active, the connection is broken to pulse the line, otherwise the digit is ignored. Patch audio is muted during dialing and when carrier is present.
I debugged the complete controller with help from Paul Barina. We worked at his desk at CTS Microelectronics using a scope to watch various signals. This was greatly simplified by including a reliable scope sync output every time the round-robin scheduling rolled over.
LDA A &^00110101 STA A IOAC SCOPE SYNC LDA A &^00111101 STA A IOAC
I would soon be working for Tektronix and would pursue the same level of simplicity in our system prototypes.
I was especially fond of built-in testability and devised many Multi-Processor Debugging schemes that were appropriate for the technology of the day.