The Apollo Guidance Computer ( AGC ) was a digital computer produced for the Apollo program that was installed on board each Apollo command module (CM) and Apollo Lunar Module (LM). The AGC provided computation and electronic interfaces for guidance, navigation, and control of the spacecraft. The AGC was the first computer based on silicon integrated circuits . The computer's performance was comparable to the first generation of home computers from the late 1970s, such as the Apple II , TRS-80 , and Commodore PET .
103-604: The AGC has a 16-bit word length, with 15 data bits and one parity bit . Most of the software on the AGC is stored in a special read-only memory known as core rope memory , fashioned by weaving wires through and around magnetic cores , though a small amount of read/write core memory is available. Astronauts communicated with the AGC using a numeric display and keyboard called the DSKY (for "display and keyboard", pronounced "DIS-kee"). The AGC and its DSKY user interface were developed in
206-756: A RESUME instruction to enable them again). In the second action, the ZRUPT register is loaded with the current value of the program counter (Z). It was only used once in the Apollo software, for setting up the DAP cycle termination sequence in the Digital Autopilot of the lunar module . It is believed to be responsible for problems emulating the LEM AGC Luminary software . PGNCS generated unanticipated warnings during Apollo 11's lunar descent , with
309-498: A flat-pack . They were connected via wire wrap , and the wiring was then embedded in cast epoxy plastic. The use of a single type of IC (the dual NOR3) throughout the AGC avoided problems that plagued another early IC computer design, the Minuteman II guidance computer , which used a mix of diode–transistor logic and diode logic gates. NOR gates are universal logic gates from which any other gate can be made, though at
412-411: A human–machine interface ( HMI ) that typically interfaces machines with physical input hardware (such as keyboards, mice, or game pads) and output hardware (such as computer monitors , speakers, and printers ). A device that implements an HMI is called a human interface device (HID). User interfaces that dispense with the physical movement of body parts as an intermediary step between the brain and
515-404: A power of two multiple of the unit of address resolution (byte or word). Converting the index of an item in an array into the memory address offset of the item then requires only a shift operation rather than a multiplication. In some cases this relationship can also avoid the use of division operations. As a result, most modern computer designs have word sizes (and other operand sizes) that are
618-476: A 12-bit address field. The lower bits (1-10) addressed the memory inside each bank. Bits 11 and 12 selected the bank: 00 selected the erasable memory bank; 01 selected the lowest bank (bank 1) of fixed memory; 10 selected the next one (bank 2); and 11 selected the Bank register that could be used to select any bank above 2. Banks 1 and 2 were called fixed-fixed memory, because they were always available, regardless of
721-426: A computer architecture is designed, the choice of a word size is of substantial importance. There are design considerations which encourage particular bit-group sizes for particular uses (e.g. for addresses), and these considerations point to different sizes for different uses. However, considerations of economy in design strongly push for one size, or a very few sizes related by multiples or fractions (submultiples) to
824-486: A count field, by a delimiting character, or by an additional bit called, e.g., flag, or word mark . Such machines often use binary-coded decimal in 4-bit digits, or in 6-bit characters, for numbers. This class of machines includes the IBM 702 , IBM 705 , IBM 7080 , IBM 7010 , UNIVAC 1050 , IBM 1401 , IBM 1620 , and RCA 301. Most of these machines work on one unit of memory at a time and since each instruction or datum
927-463: A floating point instruction can only address words while an integer arithmetic instruction can specify a field length of 1-64 bits, a byte size of 1-8 bits and an accumulator offset of 0-127 bits. In a byte-addressable machine with storage-to-storage (SS) instructions, there are typically move instructions to copy one or multiple bytes from one arbitrary location to another. In a byte-oriented ( byte-addressable ) machine without SS instructions, moving
1030-454: A fresh design has to coexist as an alternative size to the original word size in a backward compatible design. The original word size remains available in future designs, forming the basis of a size family. In the mid-1970s, DEC designed the VAX to be a 32-bit successor of the 16-bit PDP-11 . They used word for a 16-bit quantity, while longword referred to a 32-bit quantity; this terminology
1133-420: A history going back to 1902 and had already become well-established in newsrooms and elsewhere by 1920. In reusing them, economy was certainly a consideration, but psychology and the rule of least surprise mattered as well; teleprinters provided a point of interface with the system that was familiar to many engineers and users. The widespread adoption of video-display terminals (VDTs) in the mid-1970s ushered in
SECTION 10
#17327913924881236-408: A job to a batch machine involved first preparing a deck of punched cards that described a program and its dataset. The program cards were not punched on the computer itself but on keypunches , specialized, typewriter-like machines that were notoriously bulky, unforgiving, and prone to mechanical failure. The software interface was similarly unforgiving, with very strict syntaxes designed to be parsed by
1339-706: A lunar module for its lunar orbit mission. The AGC in the command module was the center of its guidance, navigation and control (GNC) system. The AGC in the lunar module ran its Apollo PGNCS (primary guidance, navigation and control system), with the acronym pronounced as pings . Each lunar mission had two additional computers: The AGC was designed at the MIT Instrumentation Laboratory under Charles Stark Draper , with hardware design led by Eldon C. Hall . Early architectural work came from J. H. Laning Jr. , Albert Hopkins , Richard Battin , Ramon Alonso, and Hugh Blair-Smith. The flight hardware
1442-404: A power of two times the size of a byte. As computer designs have grown more complex, the central importance of a single word size to an architecture has decreased. Although more capable hardware can use a wider variety of sizes of data, market forces exert pressure to maintain backward compatibility while extending processor capability. As a result, what might have been the central word size in
1545-401: A primary size. That preferred size becomes the word size of the architecture. Character size was in the past (pre-variable-sized character encoding ) one of the influences on unit of address resolution and the choice of word size. Before the mid-1960s, characters were most often stored in six bits; this allowed no more than 64 characters, so the alphabet was limited to upper case. Since it
1648-477: A process called the memory cycle . The memory cycle took 12 timing pulses (11.72 μs). The cycle began at timing pulse 1 (TP1) when the AGC loaded the memory address to be fetched into the S register. The memory hardware retrieved the data word from memory at the address specified by the S register. Words from erasable memory were deposited into the G register by timing pulse 6 (TP6); words from fixed memory were available by timing pulse 7. The retrieved memory word
1751-438: A relatively heavy mnemonic load on the user, requiring a serious investment of effort and learning time to master. The earliest command-line systems combined teleprinters with computers, adapting a mature technology that had proven effective for mediating the transfer of information over wires between human beings. Teleprinters had originally been invented as devices for automatic telegraph transmission and reception; they had
1854-573: A result on magnetic tape or generate some data cards to be used in a later computation. The turnaround time for a single job often spanned entire days. If one was very lucky, it might be hours; there was no real-time response. But there were worse fates than the card queue; some computers required an even more tedious and error-prone process of toggling in programs in binary code using console switches. The very earliest machines had to be partly rewired to incorporate program logic into themselves, using devices known as plugboards . Early batch systems gave
1957-692: A shorter word (16 or 32 bits) may be used in contexts where the range of a wider word is not needed (especially where this can save considerable stack space or cache memory space). For example, Microsoft's Windows API maintains the programming language definition of WORD as 16 bits, despite the fact that the API may be used on a 32- or 64-bit x86 processor, where the standard word size would be 32 or 64 bits, respectively. Data structures containing such different sized words refer to them as: A similar phenomenon has developed in Intel's x86 assembly language – because of
2060-495: A single byte from one arbitrary location to another is typically: Individual bytes can be accessed on a word-oriented machine in one of two ways. Bytes can be manipulated by a combination of shift and mask operations in registers. Moving a single byte from one arbitrary location to another may require the equivalent of the following: Alternatively many word-oriented machines implement byte operations with instructions using special byte pointers in registers or memory. For example,
2163-465: A special version of TC called EXTEND . The address spaces were extended by employing the Bank (fixed) and Ebank (erasable) registers, so the only memory of either type that could be addressed at any given time was the current bank, plus the small amount of fixed-fixed memory and the erasable memory. In addition, the bank register could address a maximum of 32 kilowords, so an Sbank (super-bank) register
SECTION 20
#17327913924882266-421: A subsequence could trigger up to 5 control pulses . The control pulses were the signals which did the actual work of the instruction, such as reading the contents of a register onto the bus, or writing data from the bus into a register. Block I AGC memory was organized into 1 kiloword banks. The lowest bank (bank 0) was erasable memory (RAM). All banks above bank 0 were fixed memory (ROM). Each AGC instruction had
2369-485: A team under the direction of Margaret Hamilton . Hamilton was very interested in how the astronauts would interact with the software and predicted the types of errors that could occur due to human error. In total, software development on the project comprised 1400 person-years of effort, with a peak workforce of 350 people. In 2016, Hamilton received the Presidential Medal of Freedom for her role in creating
2472-414: A unit by the instruction set or the hardware of the processor. The number of bits or digits in a word (the word size , word width , or word length ) is an important characteristic of any specific processor design or computer architecture . The size of a word is reflected in many aspects of a computer's structure and operation; the majority of the registers in a processor are usually word-sized and
2575-435: A variable number of cycles, depending on the size of the operands. The memory model of an architecture is strongly influenced by the word size. In particular, the resolution of a memory address, that is, the smallest unit that can be designated by an address, has often been chosen to be the word. In this approach, the word-addressable machine approach, address values which differ by one designate adjacent memory words. This
2678-411: A variety of processors, even ones with different data word lengths or different address widths or both. User interface In the industrial design field of human–computer interaction , a user interface ( UI ) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine from the human end, while
2781-450: Is a graphical user interface (GUI), which is composed of a tactile UI and a visual UI capable of displaying graphics . When sound is added to a GUI, it becomes a multimedia user interface (MUI). There are three broad categories of CUI: standard , virtual and augmented . Standard CUI use standard human interface devices like keyboards, mice, and computer monitors. When the CUI blocks out
2884-418: Is a general principle in the design of all kinds of interfaces. It is based on the idea that human beings can only pay full attention to one thing at one time, leading to the conclusion that novelty should be minimized. If an interface is used persistently, the user will unavoidably develop habits for using the interface. The designer's role can thus be characterized as ensuring the user forms good habits. If
2987-400: Is better described as a direct neural interface . However, this latter usage is seeing increasing application in the real-life use of (medical) prostheses —the artificial extension that replaces a missing body part (e.g., cochlear implants ). In some circumstances, computers might observe the user and react according to their actions without specific commands. A means of tracking parts of
3090-483: Is efficient in time and space to have the word size be a multiple of the character size, word sizes in this period were usually multiples of 6 bits (in binary machines). A common choice then was the 36-bit word , which is also a good size for the numeric properties of a floating point format. After the introduction of the IBM System/360 design, which uses eight-bit characters and supports lower-case letters,
3193-405: Is natural in machines which deal almost always in word (or multiple-word) units, and has the advantage of allowing instructions to use minimally sized fields to contain addresses, which can permit a smaller instruction size or a larger variety of instructions. When byte processing is to be a significant part of the workload, it is usually more advantageous to use the byte , rather than the word, as
Apollo Guidance Computer - Misplaced Pages Continue
3296-461: Is several units long, each instruction takes several cycles just to access memory. These machines are often quite slow because of this. For example, instruction fetches on an IBM 1620 Model I take 8 cycles (160 μs) just to read the 12 digits of the instruction (the Model II reduced this to 6 cycles, or 4 cycles if the instruction did not need both address fields). Instruction execution takes
3399-528: Is the x86 family, of which processors of three different word lengths (16-bit, later 32- and 64-bit) have been released, while word continues to designate a 16-bit quantity. As software is routinely ported from one word-length to the next, some APIs and documentation define or refer to an older (and thus shorter) word-length than the full word length on the CPU that software may be compiled for. Also, similar to how bytes are used for small numbers in many programs,
3502-510: Is the 64-bit member of that architecture family, continues to refer to 16-bit halfword s, 32-bit word s, and 64-bit doubleword s, and additionally features 128-bit quadword s. In general, new processors must use the same data word lengths and virtual address widths as an older processor to have binary compatibility with that older processor. Often carefully written source code – written with source-code compatibility and software portability in mind – can be recompiled to run on
3605-449: Is the number of senses interfaced with. For example, a Smell-O-Vision is a 3-sense (3S) Standard CUI with visual display, sound and smells; when virtual reality interfaces interface with smells and touch it is said to be a 4-sense (4S) virtual reality interface; and when augmented reality interfaces interface with smells and touch it is said to be a 4-sense (4S) augmented reality interface. The user interface or human–machine interface
3708-502: Is the part of the machine that handles the human–machine interaction. Membrane switches, rubber keypads and touchscreens are examples of the physical part of the Human Machine Interface which we can see and touch. In complex systems, the human–machine interface is typically computerized. The term human–computer interface refers to this kind of system. In the context of computing, the term typically extends as well to
3811-465: Is the same as the terminology used for the PDP-11. This was in contrast to earlier machines, where the natural unit of addressing memory would be called a word , while a quantity that is one half a word would be called a halfword . In fitting with this scheme, a VAX quadword is 64 bits. They continued this 16-bit word/32-bit longword/64-bit quadword terminology with the 64-bit Alpha . Another example
3914-399: The 1668 display task, to complete its critical guidance and control tasks. Guidance controller Steve Bales and his support team that included Jack Garman issued several "GO" calls and the landing was successful. Word (computer architecture) In computing , a word is the natural unit of data used by a particular processor design. A word is a fixed-sized datum handled as
4017-405: The MIT Instrumentation Laboratory , that implemented a virtual machine with more complex and capable pseudo-instructions than the native AGC. These instructions simplified the navigational programs. Interpreted code, which featured double precision trigonometric , scalar and vector arithmetic (16 and 24-bit), even an MXV (matrix × vector) instruction, could be mixed with native AGC code. While
4120-502: The PDP-10 byte pointer contained the size of the byte in bits (allowing different-sized bytes to be accessed), the bit position of the byte within the word, and the word address of the data. Instructions could automatically adjust the pointer to the next byte on, for example, load and deposit (store) operations. Different amounts of memory are used to store data values with different degrees of precision. The commonly used sizes are usually
4223-424: The 3-bit op. code. The final three were denoted as extracode instructions because they were accessed by performing a special type of TC instruction (called EXTEND ) immediately before the instruction. The Block I AGC instructions consisted of the following: Instructions were implemented in groups of 12 steps, called timing pulses . The timing pulses were named TP1 through TP12. Each set of 12 timing pulses
Apollo Guidance Computer - Misplaced Pages Continue
4326-426: The 36-bit word being especially common on mainframe computers . The introduction of ASCII led to the move to systems with word lengths that were a multiple of 8-bits, with 16-bit machines being popular in the 1970s before the move to modern processors with 32 or 64 bits. Special-purpose designs like digital signal processors , may have any word length from 4 to 80 bits. The size of a word can sometimes differ from
4429-468: The AGC by MIT Instrumentation Laboratory , directed in late 1960s by Charles Draper , became foundational to software engineering —particularly for the design of more reliable systems that relied on asynchronous software , priority scheduling , testing, and human-in-the-loop decision capability. When the design requirements for the AGC were defined, necessary software and programming techniques did not exist so they had to be designed from scratch. Many of
4532-429: The AGC showing a 1202 alarm ("Executive overflow - NO CORE SETS"), and then a 1201 alarm ("Executive overflow - NO VAC AREAS"). The response of the AGC to either alarm was a soft restart. The cause was a rapid, steady stream of spurious cycle steals from the rendezvous radar (tracking the orbiting command module), intentionally left on standby during the descent in case it was needed for an abort. During this part of
4635-414: The AGC was not needed. However, in practice, the AGC was left on during all phases of the mission and this feature was never used. The AGC had a 16-bit read bus and a 16-bit write bus. Data from central registers (A, Q, Z, or LP), or other internal registers could be gated onto the read bus with a control signal. The read bus connected to the write bus through a non-inverting buffer, so any data appearing on
4738-518: The AGC was the DSKY , standing for display and keyboard and usually pronounced "DIS-kee". It has an array of indicator lights, numeric displays, and a calculator -style keyboard. Commands were entered numerically, as two-digit numbers: Verb and Noun . Verb described the type of action to be performed and Noun specified which data were affected by the action specified by the Verb command. Each digit
4841-450: The AGC, was located above the DSKY on the commander's console and on the LM. The AGC timing reference came from a 2.048 MHz crystal clock . The clock was divided by two to produce a four-phase 1.024 MHz clock which the AGC used to perform internal operations. The 1.024 MHz clock was also divided by two to produce a 512 kHz signal called the master frequency ; this signal
4944-432: The AGC. The AGC had a power-saving mode controlled by a standby allowed switch. This mode turned off the AGC power, except for the 2.048 MHz clock and the scaler. The F17 signal from the scaler turned the AGC power and the AGC back on at 1.28 second intervals. In this mode, the AGC performed essential functions, checked the standby allowed switch, and, if still enabled, turned off the power and went back to sleep until
5047-498: The AGC. The Apollo flight computer was the first computer to use silicon IC chips. While the Block I version used 4,100 ICs, each containing a single three-input NOR gate , the later Block II version (used in the crewed flights) used about 2,800 ICs, mostly dual three-input NOR gates and smaller numbers of expanders and sense amplifiers. The ICs, from Fairchild Semiconductor , were implemented using resistor–transistor logic (RTL) in
5150-405: The G register and then back again to memory. The lower 15 bits of each memory word held AGC instructions or data, with each word being protected by a 16th odd parity bit. This bit was set to 1 or 0 by a parity generator circuit so a count of the 1s in each memory word would always produce an odd number. A parity checking circuit tested the parity bit during each memory cycle; if the bit didn't match
5253-455: The address from the write bus into the S register. Several registers could be read onto the read bus simultaneously. When this occurred, data from each register was inclusive- OR ed onto the bus. This inclusive- OR feature was used to implement the Mask instruction, which was a logical AND operation. Because the AGC had no native ability to do a logical AND , but could do a logical OR through
SECTION 50
#17327913924885356-412: The approach, the processor would normally be almost 85% loaded. The extra 6,400 cycle steals per second added the equivalent of 13% load, leaving just enough time for all scheduled tasks to run to completion. Five minutes into the descent, Buzz Aldrin gave the computer the command 1668 , which instructed it to periodically calculate and display DELTAH (the difference between altitude sensed by the radar and
5459-497: The basic Block I architecture, but increased erasable memory from 1 to 2 kilowords. Fixed memory was expanded from 24 to 36 kilowords. Instructions were expanded from 11 to 34 and I/O channels were implemented to replace the I/O registers on Block I. The Block II version is the one that actually flew to the moon. Block I was used during the uncrewed Apollo 4 and 6 flights, and was on board the ill-fated Apollo 1 . The decision to expand
5562-464: The body is required, and sensors noting the position of the head, direction of gaze and so on have been used experimentally. This is particularly relevant to immersive interfaces . The history of user interfaces can be divided into the following phases according to the dominant type of user interface: In the batch era, computing power was extremely scarce and expensive. User interfaces were rudimentary. Users had to accommodate computers rather than
5665-472: The bus and could complement (invert) data through the C register, De Morgan's theorem was used to implement the equivalent of a logical AND . This was accomplished by inverting both operands, performing a logical OR through the bus, and then inverting the result. AGC software was written in AGC assembly language and stored on rope memory . The bulk of the software was on read-only rope memory and thus could not be changed in operation, but some key parts of
5768-468: The computed altitude). The 1668 added another 10% to the processor workload, causing executive overflow and a 1202 alarm. After being given the "GO" from Houston, Aldrin entered 1668 again and another 1202 alarm occurred. When reporting the second alarm, Aldrin added the comment "It appears to come up when we have a 1668 up". The AGC software had been designed with priority scheduling, and automatically recovered, deleting lower priority tasks including
5871-402: The computer pioneers of the 1940s. Just as importantly, the existence of an accessible screen—a two-dimensional display of text that could be rapidly and reversibly modified—made it economical for software designers to deploy interfaces that could be described as visual rather than textual. The pioneering applications of this kind were computer games and text editors; close descendants of some of
5974-556: The computer. Tasks were short threads of execution which could reschedule themselves for re-execution on the Waitlist, or could kick off a longer operation by starting a 'job' with the Exec. Calculations were carried out using the metric system , but display readouts were in units of feet, feet per second, and nautical miles – units that the Apollo astronauts were accustomed to. The AGC had a sophisticated software interpreter, developed by
6077-404: The contents of the Bank register. Banks 3 and above were called fixed-switchable because the selected bank was determined by the bank register. The Block I AGC initially had 12 kilowords of fixed memory, but this was later increased to 24 kilowords. Block II had 36 kilowords of fixed memory and 2 kilowords of erasable memory. The AGC transferred data to and from memory through the G register in
6180-437: The cost of using more gates. The computer had 2,048 words of erasable magnetic-core memory and 36,864 words of read-only core rope memory . Both had cycle times of 11.72 microseconds. The memory word length was 16 bits: 15 bits of data and one odd- parity bit . The CPU -internal 16-bit word format was 14 bits of data, one overflow bit, and one sign bit ( ones' complement representation). The user interface to
6283-423: The currently running job the entire computer; program decks and tapes had to include what we would now think of as operating system code to talk to I/O devices and do whatever other housekeeping was needed. Midway through the batch period, after 1957, various groups began to experiment with so-called " load-and-go " systems. These used a monitor program which was always resident on the computer. Programs could call
SECTION 60
#17327913924886386-523: The designer is experienced with other interfaces, they will similarly develop habits, and often make unconscious assumptions regarding how the user will interact with the interface. Peter Morville of Google designed the User Experience Honeycomb framework in 2004 when leading operations in user interface design. The framework was created to guide user interface design. It would act as a guideline for many web development students for
6489-615: The earliest specimens, such as rogue (6), and vi (1), are still a live part of Unix tradition. In 1985, with the beginning of Microsoft Windows and other graphical user interfaces , IBM created what is called the Systems Application Architecture (SAA) standard which include the Common User Access (CUA) derivative. CUA successfully created what we know and use today in Windows, and most of
6592-518: The early 1960s for the Apollo program by the MIT Instrumentation Laboratory and first flew in 1966. Astronauts manually flew Project Gemini with control sticks , but computers flew most of Project Apollo except briefly during lunar landings. Each Moon flight carried two AGCs, one each in the command module and the Apollo Lunar Module , with the exception of Apollo 7 which was an Earth orbit mission and Apollo 8 which did not need
6695-732: The execution time of the pseudo-instructions was increased (due to the need to interpret these instructions at runtime) the interpreter provided many more instructions than AGC natively supported and the memory requirements were much lower than in the case of adding these instructions to the AGC native language which would require additional memory built into the computer (in the 1960s memory was very expensive). The average pseudo-instruction required about 24 ms to execute. The assembler, named YUL for an early prototype Christmas Computer , enforced proper transitions between native and interpreted code. A set of interrupt-driven user interface routines called 'Pinball' provided keyboard and display services for
6798-416: The expected due to backward compatibility with earlier computers. If multiple compatible variations or a family of processors share a common architecture and instruction set but differ in their word sizes, their documentation and software may become notationally complex to accommodate the difference (see Size families below). Depending on how a computer is organized, word-size units may be used for: When
6901-605: The expected value, the memory word was assumed to be corrupted and a parity alarm panel light was illuminated. The AGC had five vectored interrupts : The AGC responded to each interrupt by temporarily suspending the current program, executing a short interrupt service routine, and then resuming the interrupted program. The AGC also had 20 involuntary counters . These were memory locations which functioned as up/down counters, or shift registers. The counters would increment, decrement, or shift in response to internal inputs. The increment ( Pinc ), decrement ( Minc ), or shift ( Shinc )
7004-401: The expression graphical user interface for human–machine interface on computers, as nearly all of them are now using graphics. Multimodal interfaces allow users to interact using more than one modality of user input. There is a difference between a user interface and an operator interface or a human–machine interface (HMI). In science fiction , HMI is sometimes used to refer to what
7107-414: The flight software. The Apollo Guidance Computer software influenced the design of Skylab , Space Shuttle and early fly-by-wire fighter aircraft systems. The Apollo Guidance computer has been called "The fourth astronaut" for its role in helping the three astronauts who relied on it: Neil Armstrong , Buzz Aldrin and Michael Collins . A Block II version of the AGC was designed in 1966. It retained
7210-453: The goal of user interface design is to produce a user interface that makes it easy, efficient, and enjoyable (user-friendly) to operate a machine in the way which produces the desired result (i.e. maximum usability ). This generally means that the operator needs to provide minimal input to achieve the desired output, and also that the machine minimizes undesired outputs to the user. User interfaces are composed of one or more layers, including
7313-482: The interface design include prototyping and simulation. Typical human–machine interface design consists of the following stages: interaction specification, interface software specification and prototyping: In broad terms, interfaces generally regarded as user friendly, efficient, intuitive, etc. are typified by one or more particular qualities. For the purpose of example, a non-exhaustive list of such characteristics follows: The principle of least astonishment (POLA)
7416-426: The jobs and tasks running on the AGC. A set of user-accessible routines were provided to let the astronauts display the contents of various memory locations in octal or decimal in groups of 1, 2, or 3 registers at a time. 'Monitor' routines were provided so the operator could initiate a task to periodically redisplay the contents of certain memory locations. Jobs could be initiated. The design principles developed for
7519-926: The largest datum that can be transferred to and from the working memory in a single operation is a word in many (not all) architectures. The largest possible address size, used to designate a location in memory, is typically a hardware word (here, "hardware word" means the full-sized natural word of the processor, as opposed to any other definition used). Documentation for older computers with fixed word size commonly states memory sizes in words rather than bytes or characters. The documentation sometimes uses metric prefixes correctly, sometimes with rounding, e.g., 65 kilowords (kW) meaning for 65536 words, and sometimes uses them incorrectly, with kilowords (kW) meaning 1024 words (2 ) and megawords (MW) meaning 1,048,576 words (2 ). With standardization on 8-bit bytes and byte addressability, stating memory sizes in bytes, kilobytes, and megabytes with powers of 1024 rather than 1000 has become
7622-449: The machine simultaneously feeds back information that aids the operators' decision-making process. Examples of this broad concept of user interfaces include the interactive aspects of computer operating systems , hand tools , heavy machinery operator controls and process controls. The design considerations applicable when creating user interfaces are related to, or involve such disciplines as, ergonomics and psychology . Generally,
7725-639: The machine use no input or output devices except electrodes alone; they are called brain–computer interfaces (BCIs) or brain–machine interfaces (BMIs). Other terms for human–machine interfaces are man–machine interface ( MMI ) and, when the machine in question is a computer, human–computer interface . Additional UI layers may interact with one or more human senses, including: tactile UI ( touch ), visual UI ( sight ), auditory UI ( sound ), olfactory UI ( smell ), equilibria UI ( balance ), and gustatory UI ( taste ). Composite user interfaces ( CUIs ) are UIs that interact with two or more senses. The most common CUI
7828-672: The memory and instruction set for Block II, but to retain the Block I's restrictive three-bit op. code and 12-bit address had interesting design consequences. Various tricks were employed to squeeze in additional instructions, such as having special memory addresses which, when referenced, would implement a certain function. For instance, an INDEX to address 25 triggered the RESUME instruction to return from an interrupt. Likewise, INDEX 17 performed an INHINT instruction (inhibit interrupts), while INDEX 16 reenabled them ( RELINT ). Other instructions were implemented by preceding them with
7931-441: The monitor for services. Another function of the monitor was to do better error checking on submitted jobs, catching errors earlier and more intelligently and generating more useful feedback to the users. Thus, monitors represented the first step towards both operating systems and explicitly designed user interfaces. Command-line interfaces ( CLIs ) evolved from batch monitors connected to the system console. Their interaction model
8034-545: The more recent DOS or Windows Console Applications will use that standard as well. This defined that a pulldown menu system should be at the top of the screen, status bar at the bottom, shortcut keys should stay the same for all common functionality (F2 to Open for example would work in all applications that followed the SAA standard). This greatly helped the speed at which users could learn an application so it caught on quick and became an industry standard. Primary methods used in
8137-512: The next F17 signal. In the standby mode, the AGC slept most of the time; therefore it was not awake to perform the Pinc instruction needed to update the AGC's real time clock at 10 ms intervals. To compensate, one of the functions performed by the AGC each time it awoke in the standby mode was to update the real time clock by 1.28 seconds. The standby mode was designed to reduce power by 5 to 10 W (from 70 W) during midcourse flight when
8240-450: The norm, although there is some use of the IEC binary prefixes . Several of the earliest computers (and a few modern as well) use binary-coded decimal rather than plain binary , typically having a word size of 10 or 12 decimal digits, and some early decimal computers have no fixed word length at all. Early binary systems tended to use word lengths that were some multiple of 6-bits, with
8343-497: The other way around; user interfaces were considered overhead, and software was designed to keep the processor at maximum utilization with as little overhead as possible. The input side of the user interfaces for batch machines was mainly punched cards or equivalent media like paper tape . The output side added line printers to these media. With the limited exception of the system operator's console , human beings did not interact with batch machines in real time at all. Submitting
8446-405: The read bus also appeared on the write bus. Other control signals could copy write bus data back into the registers. Data transfers worked like this: To move the address of the next instruction from the B register to the S register, an RB (read B) control signal was issued; this caused the address to move from register B to the read bus, and then to the write bus. A WS (write S) control signal moved
8549-521: The real world to create a virtual reality , the CUI is virtual and uses a virtual reality interface . When the CUI does not block out the real world and creates augmented reality , the CUI is augmented and uses an augmented reality interface . When a UI interacts with all human senses, it is called a qualia interface, named after the theory of qualia . CUI may also be classified by how many senses they interact with as either an X-sense virtual reality interface or X-sense augmented reality interface, where X
8652-447: The second phase of command-line systems. These cut latency further, because characters could be thrown on the phosphor dots of a screen more quickly than a printer head or carriage can move. They helped quell conservative resistance to interactive programming by cutting ink and paper consumables out of the cost picture, and were to the first TV generation of the late 1950s and 60s even more iconic and comfortable than teleprinters had been to
8755-505: The seven-bit interpretive op. codes that were packed two to a word. This was common to Block I and Block II AGCs. The AGC had additional registers that were used internally in the course of operation: The instruction format used 3 bits for opcode , and 12 bits for address. Block I had 11 instructions: TC , CCS , INDEX , XCH , CS , TS , AD , and MASK (basic), and SU , MP , and DV (extra). The first eight, called basic instructions , were directly accessed by
8858-404: The smallest possible compilers and interpreters. Once the cards were punched, one would drop them in a job queue and wait. Eventually, operators would feed the deck to the computer, perhaps mounting magnetic tapes to supply another dataset or helper software. The job would generate a printout, containing final results or an abort notice with an attached error log. Successful runs might also write
8961-557: The software dedicated to control the physical elements used for human–computer interaction . The engineering of human–machine interfaces is enhanced by considering ergonomics ( human factors ). The corresponding disciplines are human factors engineering (HFE) and usability engineering (UE) which is part of systems engineering . Tools used for incorporating human factors in the interface design are developed based on knowledge of computer science , such as computer graphics , operating systems , programming languages . Nowadays, we use
9064-445: The software were stored in standard read-write magnetic-core memory and could be overwritten by the astronauts using the DSKY interface, as was done on Apollo 14 . A simple real-time operating system designed by J. Halcombe Laning consisting of the 'Exec', a batch job-scheduling using cooperative multi-tasking , and an interrupt -driven pre-emptive scheduler called the 'Waitlist' which scheduled timer-driven 'tasks', controlled
9167-426: The standard size of a character (or more accurately, a byte ) becomes eight bits. Word sizes thereafter are naturally multiples of eight bits, with 16, 32, and 64 bits being commonly used. Early machine designs included some that used what is often termed a variable word length . In this type of organization, an operand has no fixed length. Depending on the machine and the instruction, the length might be denoted by
9270-590: The support for various sizes (and backward compatibility) in the instruction set, some instruction mnemonics carry "d" or "q" identifiers denoting "double-", "quad-" or "double-quad-", which are in terms of the architecture's original 16-bit word size. An example with a different word size is the IBM System/360 family. In the System/360 architecture , System/370 architecture and System/390 architecture, there are 8-bit byte s, 16-bit halfword s, 32-bit word s and 64-bit doubleword s. The z/Architecture , which
9373-438: The trajectory and guidance algorithms used were based on earlier work by Richard Battin . The first command module flight was controlled by a software package called CORONA whose development was led by Alex Kosmala. Software for lunar missions consisted of COLOSSUS for the command module, whose development was led by Frederic Martin, and LUMINARY on the lunar module led by George Cherry. Details of these programs were implemented by
9476-438: The unit of address resolution. Address values which differ by one designate adjacent bytes in memory. This allows an arbitrary character within a character string to be addressed straightforwardly. A word can still be addressed, but the address to be used requires a few more bits than the word-resolution alternative. The word size needs to be an integer multiple of the character size in this organization. This addressing approach
9579-496: Was a series of request-response transactions, with requests expressed as textual commands in a specialized vocabulary. Latency was far lower than for batch systems, dropping from days or hours to seconds. Accordingly, command-line systems allowed the user to change their mind about later stages of the transaction in response to real-time or near-real-time feedback on earlier results. Software could be exploratory and interactive in ways not possible before. But these interfaces still placed
9682-500: Was called an instruction subsequence . Simple instructions, such as TC, executed in a single subsequence of 12 pulses. More complex instructions required several subsequences. The multiply instruction ( MP ) used 8 subsequences: an initial one called MP0 , followed by an MP1 subsequence which was repeated 6 times, and then terminated by an MP3 subsequence. This was reduced to 3 subsequences in Block II. Each timing pulse in
9785-400: Was displayed via a green (specified as 530 nm) high-voltage electroluminescent seven-segment display ; these were driven by electromechanical relays , limiting the update rate. Three five-digit signed numbers could also be displayed in octal or decimal , and were typically used to display vectors such as space craft attitude or a required velocity change ( delta-V ). Although data
9888-509: Was fabricated by Raytheon , whose Herb Thaler was also on the architectural team. According to Kurinec et al, the chips were welded onto the boards rather than soldered as might be expected. Apollo Guidance Computer logic module drawings specify resistance-welding. Following the use of integrated circuit (IC) chips in the Interplanetary Monitoring Platform (IMP) in 1963, IC technology was later adopted for
9991-503: Was handled by one subsequence of microinstructions inserted between any two regular instructions. Interrupts could be triggered when the counters overflowed. The T3rupt and Dsrupt interrupts were produced when their counters, driven by a 100 Hz hardware clock, overflowed after executing many Pinc subsequences. The Uprupt interrupt was triggered after its counter, executing the Shinc subsequence, had shifted 16 bits of uplink data into
10094-622: Was required to access the last 4 kilowords. All across-bank subroutine calls had to be initiated from fixed-fixed memory through special functions to restore the original bank during the return: essentially a system of far pointers . The Block II AGC also has the EDRUPT instruction (the name is a contraction of Ed's Interrupt , after Ed Smally , the programmer who requested it). This instruction does not generate an interrupt, rather it performs two actions that are common to interrupt processing. The first action, inhibits further interrupts (and requires
10197-479: Was stored internally in metric units , they were displayed as United States customary units . This calculator-style interface was the first of its kind. The command module has two DSKYs connected to its AGC: one located on the main instrument panel and a second located in the lower equipment bay near a sextant used for aligning the inertial guidance platform. The lunar module had a single DSKY for its AGC. A flight director attitude indicator (FDAI), controlled by
10300-488: Was then available in the G register for AGC access during timing pulses 7 through 10. After timing pulse 10, the data in the G register was written back to memory. The AGC memory cycle occurred continuously during AGC operation. Instructions needing memory data had to access it during timing pulses 7–10. If the AGC changed the memory word in the G register, the changed word was written back to memory after timing pulse 10. In this way, data words cycled continuously from memory to
10403-457: Was used in the IBM 360, and has been the most common approach in machines designed since then. When the workload involves processing fields of different sizes, it can be advantageous to address to the bit. Machines with bit addressing may have some instructions that use a programmer-defined byte size and other instructions that operate on fixed data sizes. As an example, on the IBM 7030 ("Stretch"),
10506-440: Was used to intermittently run the AGC when it was operating in the standby mode. The AGC had four 16-bit registers for general computational use, called the central registers : There were also four locations in core memory, at addresses 20–23, dubbed editing locations because whatever was stored there would emerge shifted or rotated by one bit position, except for one that shifted right seven bit positions, to extract one of
10609-474: Was used to synchronize external Apollo spacecraft systems. The master frequency was further divided through a scaler , first by five using a ring counter to produce a 102.4 kHz signal. This was then divided by two through 17 successive stages called F1 (51.2 kHz) through F17 (0.78125 Hz). The F10 stage (100 Hz) was fed back into the AGC to increment the real-time clock and other involuntary counters using Pinc (discussed below). The F17 stage
#487512