Wednesday, October 17, 2018

Working on DSKY substitute to use with Apollo Guidance Computer; investigating the input-output methods of the AGC


Update to plan for DSKY substitute to use with AGC

I picked up some level shifters that will adjust between the AGC voltage levels of 0 to 4V and either LVCMOS or TTL levels on whatever controller board I use for the project. It allows me to make the choice of controller without regard to voltages.

I had intended to breadboard some key parts before I left for a trip to Florida, but Amazon handed one of my multi-part orders to the USPS who have misplaced it already. So much for Amazon Prime shipping guarantees when they hand the box over to the Keystone Kops for delivery.

Input-output for the AGC

The input-output system for the AGC consists of a set of channels, 15 bit words, that are tied to the external world. The inertial navigation system, thrusters, telemetry, hand controllers, DSKY and other parts of the spacecraft will funnel through the channels.

The way that programs interact with the I/O channels is with IN/OUT instructions that explicitly read or write to the channel address, by interrupts that force a read of a word to place the data in a memory location, or by cycle stealing where counter instructions are forced invisibly into the execution stream to change counters whenever a pulse arrives from outside.

Most input channels simply record the state of a signal in an assigned bit in its channel word, expecting programs to come along and read the channel when they want to look at that information. Two input channels, 15 and 16, will cause an interrupt and begin executing some code when signal data arrives in the channel. The main purpose of this is to accept keystrokes from the astronaut on the DSKY.

Other channels are recording data that must be counted, for example accelerometer (PIPA) changes. The PIPA causes cycles to be stolen to execute an invisible counter instruction which updates the value in a channel. This does not cause an interrupt, so it is up to some program to eventually read the value of the channel to see the acceleration value at that instant.

These counters in channels can be tied to output systems where the external circuitry will apply a pulse to some machinery and then cycle steal to decrement the counter. The program can write a non-zero value to these output channels and go away, knowing that the external machinery will apply that number of actions to its intended target.

For example, the program may decide to torque the gyroscope gimbals a certain number of degrees, moving the stable reference platform to a new desired orientation. The movement is loaded into a counter and the hardware outside the AGC takes it from there, acting until it has decremented the counter to zero.

One channel, 7 has a special purpose. It has a bit assigned to it, the super-bank bit, that augments the value in the Fixed Bank register allowing access to rope memory blocks above the 32K line.

Part of tray A of the AGC consists of interface modules which have circuitry to accept pulses, voltages or other external values, converting them from the outside system and safely delivering the result to the assigned channel word and bit. For output, of course, it converts a 0 to 4V digital signal to an appropriate signal and voltage level to drive the external mechanisms.

No comments:

Post a Comment