We seek to understand and document all radio transmissions, legal and otherwise, as part of the radio listening hobby. We do not encourage any radio operations contrary to regulations. Always consult with the appropriate authorities if you have questions concerning what is permissible in your locale.

Author Topic: A UNIVAC as a Morse Code practice oscillator  (Read 2489 times)

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5796
  • Minneapolis, MN EN35
  • What does 'RNO stand for?
    • View Profile
A UNIVAC as a Morse Code practice oscillator
« on: January 02, 2013, 0209 UTC »
http://www.fourmilab.ch/documents/univac/morse.html

The Morse Code Exec

October 1971

by John Walker


As might be gleaned by examining other documents available on this site, I have somewhat of an affinity for the absurd. In terms of outrageous applications for computers, I peaked early in my career, with the program you find below. This program, written in the fall of 1971, was a full-fledged operating system which transformed a UNIVAC 1108 mainframe computer worth millions of dollars into…a code practice oscillator! When idle, it played synthesised music generated by an algorithm invented by Harry Pyle and used in a little digital gizmo he built.

This program was written more than 20 years before audio hardware became a commonplace component of computers. Nonetheless, the UNIVAC 1108 maintenance panel included an “Audio” button. This was an obscure feature intended to be used in conjunction with the program alarm for debugging operating systems. It caused the program alarm, sounded by the ALRM instruction, to be gated by the guard mode bit in the processor state register. This resulted in an audible signal on the console when the operating system was in control, for example, because the system had gone idle.

A little experimentation (no button must go unpushed, after all) revealed that even if the program alarm was not sounding, an artifact of the circuit caused the program alarm speaker on the operator's console to emit a little “tick” every time the processor went into or out of guard mode. And that, of course, was a glitch big enough to permit generation of arbitrary tones, given a suitable program to flip guard mode on and off at the proper rate.

Since user programs always ran with guard mode on, that meant the tone generation trick had to be done by code in the operating system, or by a stand-alone operating system booted from tape. I chose the latter, in large part to compound the absurdity of the whole thing; very few UNIVAC programmers ever wrote stand-alone operating systems—they wrote user programs that ran under the operating system or modified components of the operating system itself, but few ever looked at the boot code in the system or contemplated writing their own. Shortly before I wrote this program, I had been involved in the development of the boot code for CHI/OS, an operating system being developed from scratch at Chi Corporation in Cleveland, so I was sufficiently familiar with low-level boot code to pull this off.

Despite its ridiculous intent, this was a fully general 1108 operating system which could be booted by any processor of a multiprocessor system, and into any memory module. On a multiprocessor system with a console on each processor, one could even boot multiple copies into different memory banks and enjoy stereo or three-channel sound. To my knowledge, nobody ever tried this. The 1108 console had a set of “selective jump” switches on the operator's console which could be tested by programs, so I used them to allow the user to set the speed at which the Morse code was transmitted. The code even adapted automatically when run on an 1106, which it detected by timing instruction speed against the hardware real-time clock. Unhappily, the successors of the 1108 and 1106 lacked the “Audio” feature, so the Morse code exec passed into history when the machines for which it was written retired from service.

The program was written so that, when executed in user mode, it wrote its own boot tape. Gosh it was cool, late at night, to type on the console and know that several million dollars of hardware were exclusively dedicated to making Morse code come out of the speaker. Folks familiar with user-mode 1100 programming will notice some oddities resulting from the fact that this code runs in the executive set of registers, which have different memory-mapped addresses when referenced in instructions. If you're hazy on the 1100 instruction set after all these years, check out the instruction set reference.

.   
.        M O R S E  /  S Y N T H E S I Z E R   E X E C 
.   
.                                      OCTOBER 1971 BY JOHN WALKER 
.   
.                  YOU BOOT THE TAPE THIS THING WRITES INTO ANY MODULE THROUGH 
.        ANY CHANNEL OR IOC PATH OF ANY PROCESSOR.  BEFORE PUSHING START, PUSH 
.        THE  'AUDIO'  BUTTON ON THE MAINTENANCE PANEL (IT'S RIGHT BENEATH THE 
.        PHASE  LIGHTS, AND TO THE LEFT OF 'INITIAL LOAD'.)  AFTER STARTING UP 
.        THE  PROCESSOR, BEHOLD THE MARVELOUS SOUND THAT ISSUES FROM THE ALARM 
.        SPEAKER ON THE OPERATOR'S CONSOLE.
.   
.                  AFTER  YOU  TIRE OF THAT,  TRY TYPING ON THE CONSOLE.  YOUR 
.        INPUT WILL BE SENT BACK TO YOU IN MORSE CODE.  THE SPEED OF THE MORSE 
.        CODE  IS  SET BY THE BINARY VALUE IN THE JUMP KEYS 1-10 (1 IS THE LOW 
.        ORDER BIT).  THE JUMP KEYS ARE READ WHENEVER THE RETURN KEY IS HIT.
.        YOU MAY GET AS FAR AHEAD OF THE OUTPUT AS YOU LIKE.  SETTING JUMP KEY 
.        15 WILL CAUSE INPUT TO BE QUEUED, AND TO BE SENT AFTER JUMP KEY 15 IS 
.        TURNED OFF.   IF YOU TYPE NOTHING FOR 10 SECONDS AFTER OUTPUT CEASES, 
.        THE  SYNTHESIZER  WILL  START  AGAIN.   TYPING A HAPPY-PUNCH (¤) WILL 
.        IMMEDIATELY ABORT THE MORSE CODE AND START THE SYNTHESIZER.
/. 
         AXR$   
R0       EQU       0100
.   
.        'HOW IT SOUNDS' CONSTANTS 
.   
RATE     EQU       ;                   HOW FAST TO SHIFT SYNTHESIZER REGISTER   
                   100000   
BSLENG   EQU       ;                   BASIC TIME INTERVAL FOR MORSE CODE   
                   3
SYNPTC   EQU       ;                   SYNTHESIZER BASIC HIGH NOTE PITCH
                   250 
MPITCH   EQU       ;                   COUNT FOR MORSE PITCH
                   1000
.   
.        REGISTER DEFINITIONS   

<snip>
Minneapolis, MN

cmradio

  • Guest
Re: A UNIVAC as a Morse Code practice oscillator
« Reply #1 on: January 02, 2013, 1037 UTC »
HOLY... thak the gods for zoom on the browser :o

UNIVAC... mmmmmm <3 8)

Peace!

Offline Rockpicker

  • Hero Member
  • *****
  • Posts: 565
  • Middle of No Where Montana
    • View Profile
    • Email
Re: A UNIVAC as a Morse Code practice oscillator
« Reply #2 on: January 03, 2013, 0203 UTC »
You both might enjoy this little 9 page tour of old "Mainframe" brochure photos
- WARNING - James Lileks site is a major time sink. -
Don't ask me how I know.

http://lileks.com/institute/compupromo/index.html
Central Montana
Winradio G31DDC Excalibur, YB 400PE,  Satellit 750
RF Systems MLBA with 85' of copper flex weave

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5796
  • Minneapolis, MN EN35
  • What does 'RNO stand for?
    • View Profile
Re: A UNIVAC as a Morse Code practice oscillator
« Reply #3 on: January 03, 2013, 0339 UTC »
Hahaha... Lilek's site is great. Minutes turn into hours. Hours turn into days.

However, haven't looked at it in a while and appears some major changes.

He used to have a podcast called The Diner. Wish he'd start that up again.


« Last Edit: January 03, 2013, 0353 UTC by skeezix »
Minneapolis, MN

 

HFUnderground T-Shirt
HFUnderground Garden Flag
by MitchellTimeDesigns