DHQ: Digital Humanities Quarterly
Editorial
Playing in the Gap:
Analog Programming and the First Video Game Console
Zachary Horton, University of Pittsburgh
Levi Burner, University of Maryland
Introduction
In this essay we explore the relationship between code and the physical world by examining a media artifact that, we contend, challenges some common assumptions about this relationship. We wish, in particular, to challenge the preconceived notion of a strong dichotomy between code and external world: that code is the result of an encoding, a translating of some aspect of the physical world into a discrete symbolic system that, when executed on computational hardware, follows its own rules. Code is commonly, if implicitly, represented as an interiority intimately intertwined with, but ontologically and pragmatically delineated from the exterior, analog environment. In this model, computational hardware bridges the gap between these two worlds — between, that is, the symbolic representation and what it accomplishes, the digital and the analog. In what follows we interrogate this formulation, as well as the attendant assumption that code must always be digital, by examining a unique and culturally significant example of a video game: Volleyball, coded for the first home video game console, the Magnavox Odyssey. The Odyssey was developed from 1966 to 1969 by Ralph Baer and a small engineering team at Sanders Associates and released by Magnavox in 1972. Unlike nearly every other video game console released since, the Odyssey lacked a microprocessor: its internal signals were continuously variable voltages, not quantized bits. While this categorizes it as an analog device, in what follows we argue that its analog architecture does not preclude it from possessing digital logic, nor from being programmable. Situating the Odyssey within the historically significant, but academically under-examined tradition of analog computing, our purpose is threefold: First, we wish to draw attention in critical code studies to the tradition of analog computing, offering an examination of many parallels between digital and analog programming. Second, we explore the unique affordances [1]of the Odyssey as a programmable platform that integrates logic and material structures in a unique and historically important way. Finally, we argue throughout for an expanded concept of code and coding that challenges the centrality of the digital and more expansively engages the roles of users and physical environments as components of coded systems.
The Odyssey came bundled with twelve games and many insertable game cards, television overlays, decks of cards, game boards, and other “playing aids” that supplemented the on-screen graphics, and which are necessary to fully constitute the games. Shortly after launch, a collection of six additional games was released to the public through Magnavox retailers as an add-on purchase for Odyssey owners. Volleyball, the specific program we analyze here (Figure 1), was one of those six add-on games.[2] It was commercially released in its own product box packaged with a game card (#7), an instruction sheet, and an overlay in two sizes (for 19” and 26” televisions). Like almost all other Odyssey games, Volleyball requires the players to place a thin plastic overlay over [3]their television screen to provide additional (static) graphics for the on-screen environment and to produce various optical effects such as altering the color of the television’s graphics, hiding them with opaque layers, or brightening them with clear sections. Volleyball’s overlay is relatively simple, composed of a single color background, serve locations, net location, and images of volleyball players in action (Figure 1). Judged by number of components, this was the sparest game in the pack. We’ve chosen to analyze this particular game not because it was especially popular or influential, but because it is representative of analog programming at the time, makes use of many of the Odyssey’s capabilities, and possesses a number of unique features that we consider particularly illuminating of both the differences and intertwining between analog and digital systems[4]. In particular, Volleyball is a useful object with which to explore the gap between the simulation produced by coded games and the actual milieus and processes to which they refer.
Figure 1: Volleyball being played, with overlay in place. Photograph by Zachary Horton.
In order to explore the relations between code and world, staged by Volleyball and the Odyssey, we will consider and demonstrate several symbolic schemas for representing the game’s code, each illuminating a different “level” of operation, scale, and abstraction. First, we examine the Odyssey’s hardware, in which much of its digital logic and analog computation is encoded as a series of circuits and flows. Second, we consider Volleyball’s code as a series of mathematical functions that link hardware to symbolic operations. Third, we demonstrate the logic flow layer of the program using analog computation notation (“program blocks”) and compare this to coding in today’s digital programming languages. Finally, we consider elements of the game’s algorithm that are addressed directly to players and require various real-world bodies, objects, and interfaces to fully run the program’s main loop. Along the way we examine the affordances of each symbolic system and ontological layer for revealing meaning in the code, as well as the limitations of each.
We hope that this discussion will also serve as a primer on the nearly forgotten media ecology of analog computation and programming. We argue that Volleyball “plays in the gap” between simulation and reality, digital and analog, code and world, and thereby provides us with an exciting object with which to think through not only the historical birth of home video games (as precursor to home computing), but also the material affordances and transitive capacities of all code, analog or digital. This examination of an Odyssey game will lead us to a characterization of its programming as assemblage-making[5]—a kind of code that runs on different levels simultaneously, accepts feedback from their unique properties, and composes new channels for communication between levels. We hope that this vision of code as material, multiscalar, and porous[6], what we call multi-level coding, will inspire programmers to explore similar modalities in the future.
Level 1: Hardware
Hardware, or an active substrate capable of running code, must be able to receive signals, transform them in accordance with their content, and usually produce some sort of output, either digital (such as a string of serial data) or analog (such as light emitted from a screen or sound emitted from a speaker). Media theorist Friedrich Kittler, in his notorious essay, “There is No Software,” notes that “all code operations, despite such metaphoric faculties as call or return, come down to absolutely local string manipulations, that is, I am afraid, to signifiers of voltage differences” (Kittler 1997, 150). In Kittler’s formulation, code functions culturally to conceal its own signification, to “obscure hardware with software,” a kind of conjuring trick pulled off through the stacking of many “interfaces between formal and everyday languages.” (Kittler 1997, 150). If code’s actual signifieds are physical state changes, software misdirects its human users to invest meaning elsewhere, in an abstract, symbolic space. This seems to disturb Kittler because code pretends to a universality (a Turing machine) that subsumes and transcends the physical world when in fact it engages only a small portion of it: that which is programmable using discretized hardware configurations. Kittler goes on to argue that nonprogrammable systems (continuous or analog structures such as “waves,” “wars,” and “beings”) are not only more characteristic of “the world,” but also far more dynamic in connectivity and growth. Code, he implies, is inadequate to represent or capture such processes because it is functionally limited by the discrete hardware to which it reduces, and “only computations done on nonprogrammable machines could keep up with (the continuous systems of the world).” Kittler’s argument is more nuanced (and perhaps beguiling) than is usually acknowledged, or indeed that his essay’s polemic title would suggest. While there are a number of ways to answer (or dismiss) his claims, we would like to explore them in a novel way by examining code that performs its computations on precisely the sort of “nonprogrammable machine” that Kittler seems to rule out: the Magnavox Odyssey, a platform whose physical substrate is fundamentally continuous, or analog, rather than discrete, or digital.
The Odyssey is not constructed out of silicon chips that quantize voltages in on-off gates at discrete times. Rather, it consists of an electrically conductive set of nested circuits that elicit continuous and discontinuous waves and modulate these signals at every moment, thus retaining their continuous (analog) nature. Nonetheless, it processes sets of instructions that deftly weave digital logic with continuous processes by converting between the two internally, and providing output signals that retain both characters. A fully digital computer can, through numerical integration, analog-to-digital converters, and digital-to-analog converters, approximate behavior of analog systems; yet as Kittler and audiophiles who shun digital formats for vinyl have long argued, approximation is not ontology, and what is at stake is being, or presence, itself.
The Odyssey is, at its hardware level, an analog device, and yet it is programmable. As such, it is a member of a class of devices once significantly more common than digital computers, yet contemporaneous with them: the electronic analog computer. The general neglect of analog computers, by both popular culture and scholars, is perhaps at least partially attributable to a “progress narrative” constructed by the nascent digital computer industry in the 1950s for marketing purposes, which was enthusiastically taken up by the popular press of the time. This discourse suggested, contrary to professional discourse, that digital computers were superior successors to analog computers rather than contemporaneous machines suited to different sorts of tasks (Kline 2019). Part of the allure of the digital machines was that they seemed analogous to brains and were in fact usually called “electronic brains.” The analog computer, as we will see, functions by programming dynamic systems that were analogous to those about which they computed. Ironically, then, their greater analogic flexibility rendered them narratively less sensational than digital computers, with their single striking analogy. This asymmetric popular coverage has been inherited by scholars today. Another discursive trend has also served to diminish the historical visibility of analog computing, and that is our contemporary popular characterization of code. Code captures the imagination because it is expressed in linguistic terms, yet opens a communications channel to complex machines. In the popular conception, code is associated with digital computing only. We are, in this article, attempting to correct both the historical elision that led to the misconception that only digital platforms are coded systems.
The first modern electronic analog computer, the special purpose “Polyphemus,” was invented in 1938 by George Philbrick, then refined into general purpose versions in Germany and the USA during World War II (Holst 1982, 144) (Ulmann 2019, 1763). Electronic analog computers use electricity as an “analog” or dynamic model of real world systems being studied (such as planetary motion, economic behavior, stresses on bridges, and the aerodynamic performance of aircraft designs). As one popular guide to analog computing from 1952 puts it:
In these devices physical quantities, such as voltages and shaft rotations, are made to obey mathematical relations comparable to those of the original problem. The physical quantities, or machine variables, which may be conveniently varied and measured in the laboratory, must, then, behave in a manner analogous to that of the original variables.” (Korn and Korn 1952, 2)
In the case of electronic analog computers, electricity itself was the analogous substrate employed. Users would program the computers to mimic the behaviors of the systems they wished to study and then input variables to compute how the system would behave. Until about 1970, analog computers were significantly cheaper, smaller, and faster than digital computers and saw widespread use in business, government, and universities (Korn and Korn 1952, 2) (Gilliland 1967, 1-1). We’ll explore the analog computer further in the following sections as we follow Volleyball’s code up to higher and higher levels of abstraction. First, however, we must take a look at the Odyssey, which we will regard as a special purpose electronic analog computer.
The Odyssey’s prototypes were developed by a team of engineers led by Ralph Baer at U.S. defense contractor Sanders Associates from 1966 to 1969 (Baer 2005). Because the console was designed to play real-time interactive games and remain inexpensive enough to be released as a consumer product, the use of analog computing circuitry was a logical choice: not only were the engineers at Sanders extremely familiar with such implementations, but analog computers’ speed of operation suited the real-time gameplay that Baer desired.[7] Baer’s “TV Games” console, however, would be custom built to dramatically reduce the cost and complexity of the device, eliminating all circuitry that didn’t serve to enable the suite of games imagined by its engineering team. Nonetheless, despite its limited internal circuitry, the Odyssey prototypes retained a high degree of user programmability via a bank of switches that served to re-route the internal circuits to produce many different possible machine states, or analogs of physical behavior. Magnavox engineers, as they refined the design from 1970 to 1972, replaced this interface with a card-based system. Programs were pre-manufactured into circuit board based “game cards” that were then inserted into a slot in the console. Each card contained 44 pins that could be interconnected in numerous different ways. Thus, the end user need only insert the proper numbered card to load a particular program. This design proved highly influential in the home console industry that the Odyssey spawned. The game Volleyball that we are analyzing here used game card #7 (Figure 2).
Figure 2: Game card #7. Photograph by Zachary Horton
Internal Odyssey circuitry uses a nominally 5.6V single ended power supply. Its circuitry is organized into ten modules (circuit boards) that take the form of removable “daughter” cards plugged into slots on the Odyssey motherboard. Signals are passed from daughter card to daughter card in a variety of ways including analog and digital signals. The motherboard mostly consists of direct connections between daughter cards. However, it also contains circuitry for adjusting spot size, wall size, ball speed, a latch circuit (“crowbar”), and an RF modulator to encode its video signal into the format required by consumer televisions of the period. In Level 2, we will discuss specific sub-circuits within the Odyssey and the differential equations that describe them.
In today’s digital computers, electrical components on motherboards are used to condition electrical current to power various devices (from processors to amplifiers to LCD arrays) or to carry digital signals from one processor or memory bank to another. In analog computers, electrical components become the processors themselves: by altering the current or voltage of electricity within their circuits over time, they alter the information contained in those flows. Each banal electrical component, then, becomes an information processor analogous to a line in an equation or a digital programming language. Let’s take a look at several common components.
Resistors reduce the available voltage by converting some of the available power into heat. They follow Ohm’s law, which states that the current through the device increases linearly with the voltage across it as determined by the device’s resistance (Horowitz and Winfield 2015, 4). Due to their extraordinarily linear behavior, they can predictably convert certain states to others, and are particularly useful for creating relationships between multiple time-varying voltage and current sources. A particularly interesting case is potentiometers which are resistors whose resistance can be internally changed by rotating a physical mechanism. As we will see below, potentiometers enable user input in the form of rotating knobs.
Capacitors follow a different type of model which has a time dependence. In capacitors, the rate of charge (voltage increase) increases linearly with the current through the capacitor. The ratio is determined by the device's capacitance (Horowitz and Winfield 2015, 19). Thus, capacitors can act as timers, producing repeatable change over time as they charge or dissipate.
Diodes have substantially different behavior than resistors and capacitors because the current through the device is affected by the direction of the voltage across it. A diode can be thought of as a one-way valve for current with a minimum voltage required to “push” the valve open (Horowitz and Winfield 2015, 31). In reality, the equation governing the relation between voltage and current in a diode is very complex. We will use a piecewise linear model that combines the Constant-Voltage-Drop Model with the Small-Signal model for the discussions in Level 2 (Sedra and Smith 2015, 190-200).
The last component we consider in this article is the transistor, which can be thought of as an electrical switch, similar to the spigot of a garden hose. It is a three-terminal device, where one terminal (called the base), allows turning “on” and “off” the flow of current between the two other terminals (collector and emitter). The Odyssey uses NPN and PNP Bipolar Junction Transistors (BJT). BJT’s are current controlled devices, meaning the current through their “base” terminal determines how much current can flow through their collector and emitter terminals. In Figure 3, we show the symbols for the NPN and PNP transistor as well as the directions of current through the “positive” terminals (Horowitz and Winfield 2015, 71 76)..
Figure 3: (Left) A NPN Transistor with collector, base, and emitter pins labeled with arrows indicating positive current direction. (Right) A PNP transistor with equivalent labels.
Figure 4: Odyssey schematic from the Odyssey service manual (Magnavox 1974)
The motherboard hosts ten daughter cards. There are four spot generators (ball, wall, player 1, player 2), one summer, one “gate matrix”, one horizontal sync generator, one vertical sync generator, and two flip-flops (Figure 4). Each of these daughter cards is constructed using a combination of the basic electrical components detailed above. For example, the sync generators use capacitors to produce regular timed signals to sync with televisions, the flip-flop uses transistors to switch between two possible states (directions the in-game ball can travel), the spot generators use transistors to draw the vertical and horizontal boundaries of player avatars, a ball, and/or a wall, and the summer uses a series of diodes to combine these various shapes into a single video signal. The motherboard has one forty-four pin edge connector which accepts the “game card.” All game cards consist solely of physical connections between the forty-four pins. The simplest example is a connection from pins two to four which provides power from the batteries or wall jack to the internal circuitry of the Odyssey. This function harnesses the analog nature of the console to both power up the machine and start the game program simultaneously. The motherboard has two twelve-pin Molex connectors for two controllers. The notable parts inside each controller are three three-terminal potentiometers and one three-pole,[8] double-throw pushbutton switch.
The game card for Volleyball engages the following functions (Figure 5):
Pin Connections Function enabled
2-4 Connect supply voltage to 5.6V regulator input (power all circuitry)
6-8-10-14-16-20-22 Supply 5.6V to Player 1, Wall, Ball, Wall Shorten Resistor, Wall Widen Resistor. Power gate matrix output resistors.
13-27 Connect ball-wall contact signal to crowbar input (motherboard latch) (setting the conditions under which the ball disappears).
23-25 Connect crowbar active signal to ball disable (causing the ball to disappear when the above condition is met).
30-34 Flip-flop bidirectional resistor output to ball horizontal direction
31-39 Player 2 on screen to gate matrix player 2 input
35-37 Player 1 on screen to gate matrix player 1 input
42-44 Put resistors in parallel to increase ball vertical response speed
Table 1. 
Figure 5: Table of Volleyball game card’s (#7) connections and functions.
At the hardware level, this is how Volleyball works: The game card “switches on” four spot generators, each of which produces an on-screen element: two square “players” (simulated volleyball players), one vertical “net” in the center of the screen, one small “ball,” and a resistor that changes the vertical timing of the wall-spot generator so that the normally infinite height “wall” spot is shortened so it resembles a “net”. The ball’s horizontal and vertical positions are controlled by the charge in two respective capacitors. The charge of the vertical position capacitor is set by the “English” potentiometer (which appears to players as the “English” knobs on their controllers) of the most recent player to make contact with the ball. The charge of the horizontal position capacitor decreases or increases based on the flip-flop’s state, propelling the ball signal horizontally across the screen. At the same time, the gate matrix continuously monitors the ball, wall, and player signals from their respective spot generators. If any two are “on” at the same time during the electron beam’s scanning of the TV screen (represented internally by the Odyssey’s oscillators that produce the NTSC timing signals), then the two objects have made contact on the screen. When the gate matrix detects such contact between a player and the ball, it sets or resets the flip-flop in order to change the direction of the ball’s horizontal travel and transfer control of vertical position to the correct English potentiometer (player controller).
This process, by which a collision between the ball and an on-screen player is detected and causes the ball to “bounce” in the opposite direction, is a perfect illustration of the conjoining of the digital and analog in the Odyssey’s logic. The electrical charge stored and dissipated in the horizontal position capacitor is a purely analog phenomenon, like water splashed into or draining out of a tidepool. This propels the ball along the screen. But at the same time, the position of the flip-flop circuit is binary: it is in either one state or the other (depending on the particular state of its transistors), and that state determines whence the ball flies. Thus, digital states are manifested in continuous physical properties within the console.
The summer daughter card combines the signals of the four different onscreen “spots,” passes this “composite” signal to the RF modulator daughter card and subsequent RF filter and the output is sent to a raster scan device (consumer television). Thus, the console’s video output is not merely the final step after the position of each graphical frame has been rendered digitally by the system, as it would be with most graphical outputs today. Here, not only does the Odyssey draw each frame line on the fly, like the later Atari VCS,[9] but in addition, the gate matrix monitors the spot generators to determine if any are on simultaneously at a given position of the scanning beam. As we noted above, this information is used to detect the coincidence of particular elements — such as when the ball hits a player spot.
The Odyssey contains no circuitry to arrest the movement of the ball before it exits one side of the screen or the other. This presents a potential problem for a game meant to simulate the real-world sport of volleyball, in which making contact with the net causes the ball to drop to the ground (physical event) and exit play (logical event). However, Volleyball simulates these events through the implementation of a “crowbar” circuit located on the motherboard, routing the ball’s signal through its output terminal. The crowbar, physically constructed from a thyristor, is best described as a latch (Horowitz and Winfield 2015, 208). During normal operation the crowbar is off. When a signal pulse is received on the crowbar’s input port it activates and connects its output pin to ground. The crowbar then uses the current flowing through it (from the [10]output terminal to the ground) to keep itself active (and the output almost shorted to ground) indefinitely. To bring the crowbar back to the inactive state, the current flowing from output terminal to ground must be interrupted. The crowbar reset circuitry (hardwired to the Reset button on the Odyssey’s controllers) accomplishes this by shorting the current away from the crowbar’s output to ground along an alternate path. Without current flowing through it, the crowbar becomes inactive due to lack of electrical energy. In Volleyball, Game Card #7 connects the input and output of the crowbar circuit such that coincidence between the ball and wall (“net”) spots activates the crowbar, which then renders the ball invisible by shorting the ball’s active signal to ground. Momentarily, pressing either controller’s Reset button resets the crowbar (rendering the ball visible again). Additionally, the losing player’s Reset button flips the flip-flop to its opposite state, thus resuming the program and sending the ball flying back onto the screen.
The moment the ball makes contact with the net, then, it seems to the players to disappear from the screen, simulating arrested movement (the physical event of a volleyball hitting a net). At the hardware level, however, the ball’s signal is still present — it has been pulled low by the crowbar circuit but not all the way to ground (0V). Thus, its signal possesses enough voltage to trigger the flip-flop but not enough to enable the ball’s signal to be added to the console’s output (television) signal via the summer daughter card. To the user, it appears as if the ball has been eliminated, but in actuality it is still invisibly bouncing back and forth until it misses one of the player spots and finally exits the screen. As we will discuss in Level 4, the logical event of halted play must be enacted by players (prompted by the phenomenological event of the ball becoming invisible) since it isn’t enforced by the console’s logic. This invisible ball is a pseudo end-state to the program: it is technically still running on the hardware, but appears to the players to have stopped, awaiting their input (the next serve). Thus, the “netted” ball is something of a ghost, actively haunting the system even after the players believe it to have expired.
The Odyssey’s designers felt that this was an adequate physical approximation of a game-stopping consequence (as we’ll discuss further at the subsequent levels) that could be coded without undue expense or complexity. It is an example of hardware economizing combined with creative programming: in Volleyball the crowbar function is used to simulate the ball hitting the net; whereas, in other games the crowbar is programmed to simulate a torpedo hitting a ship (Submarine), an airplane being shot out of the sky (Dogfight), a cat catching (and presumably eating) a mouse (Cat and Mouse), or a spaceship burning up in the sun (Interplanetary Voyage). These conditions have very different meanings to players in their different contexts, even if they all arise from the same hardware function, programmed differently. We will need to look at higher levels of this code to trace out the process by which hardware states are transformed into symbolic meaning, but already we have seen that in analog computing, the hardware layer is a direct substrate for programming. Rearranging or reconnecting components in different configurations produces different electrical behavior, enabling new sets of interactions, input, and output. While this is clearly a continuous — that is, analog — process of altering current and voltage over time, it is not true that the analog and the digital cannot coexist. The crowbar, the gate matrix, and the flip-flop subcircuits all utilize continuous flows to encode digital logic in definite states (invisibility, coincidence, and direction, respectively). Fully discrete hardware (i.e., digital processors) is not required to implement digital logic because digital logic can directly interface with analog signals. It may come as a surprise that the two can coexist quite productively in the Odyssey. However, this is what historically enabled the decades-long practice of analog computing.
It is commonplace that higher levels of code (from machine to assembly to language to scripting, for example) are always more abstract than lower levels of code (Abelson and Sussman 1996, 491-610). As we’ll argue, however, this is not necessarily the case in our example: hardware capabilities can reach high levels of abstraction (as the crowbar example shows); however, higher levels are not necessarily more abstract than the hardware level. A great deal of Volleyball’s program is coded directly at the hardware level: game card #7 connects the inputs and outputs of the circuits we have described, producing these effects. This does not mean, however, that there are no higher levels of code. After all, what we have described so far is primarily the movement of electrons through circuits. Higher levels of this codified system, each of which represents a different way to characterize Volleyball’s code, were used to program the game, and can be uncovered again through reverse engineering in order to reveal much more about the game’s nature, how it functions, and what its programming assumed about its players.
Level 2: Mathematical Operations
In order to understand the formal relationship between hardware platform (Level 1, above) and logic flow (Level 3, below), we must explore the relation of each to mathematical formulae. This is the secret to the historical success of the electronic analog computer. These computers were not only used to model physical phenomena to aid in the design of everything from aircraft to atomic reactors but also to solve equations that would be far too time consuming to solve manually or via digital computers of the time. As Granino Korn noted in 1962, “Unlike digital computers, most analog computers employ distinct computing elements for each mathematical operation required to solve a given problem (parallel operation). Parallel operation is an essential reason for the very high computing speeds possible with d-c analog computers” (Huskey and Korn 1962, 1-4), (emphasis in original). Put simply, analog computers could perform, at very low levels of abstraction, many mathematical equations directly. Digital computers, by contrast, could only sequentially perform a fixed set of operations, usually limited to addition and subtraction (Brown and Vranesic 2009, 249-295). Thus, in digital computers, hgher order operations had to be built up from these lower level ones, necessitating higher levels of software abstraction. In contrast,analog computers could perform calculus directly at the hardware level (Korn and Korn 1952, 8).
A complete mathematical formulation of Volleyball would serve as a legitimate low level expression of its code, but it would require many pages of this journal. Thus we will only undertake a complete description of the code at a higher level (Level 3). In this section, we will examine the relationship between hardware and logic to demonstrate, for two of Volleyball’s functions, how code can be expressed as mathematics that blend continuous time, continuous values, and discrete meaning.
The first example we consider is the regulation of the ball’s horizontal position by an “integration” circuit in Volleyball (Figure 6). On the left are two transistors that are part of the flip-flop that tracks the direction of the ball. Their output is the “direction” that charges or discharges the horizontal position capacitor.
Figure 6: The sub-circuit in Volleyball which controls the horizontal position of the ball. The voltage at “Ball_Generator_Horizontal” determines the ball’s horizontal position.
In Figure 6, the voltage between node Ball_Generator_Horizontal (abbreviated Vb) and ground defines the horizontal position of the ball. Lower voltage means the ball is further to the right of the screen. Because this differential equation describes a continuously variable function, there are an infinite number of possible ball positions described by this equation and instantiated during the running of the Volleyball program. This is strongly in contrast with digital systems that can only support quantized positions on the screen
The flip-flop has two states, “left motion” and “right motion.” In the configuration shown in Figure 6, the transistors are complementary, meaning if one is off, the other is on. In the “right motion” state, the base of Q1 has a high voltage comparable to its collector, meaning that a current flows through its base pin that is too small to turn it on. Meanwhile, Q2 has voltage higher than its emitter applied to its base, great enough that the current through it’s base pin turns it on. Using Kirchoff’s Voltage Law (KVL) and Kirchoff’s Current Law (KCL)[11], we can write a differential equation for the voltage at Vb for the case of “right motion.”
Assuming the initial position is beyond the left side of the screen (Vb is a high voltage like Vcc) then the equation above has the solution (Tenenbaum and Pollard 1985).
In the case of “left motion” starting from beyond the right side of the screen (Vb is a low voltage like 0) then the solution looks different, but is qualitatively the same as shown in Figure 7.
Figure 7: (Left) The general shape of Vb(t) for left to right motion. (Right) The general shape of Vb(t) for right to left motion.
In general, the solution to a differential equation cannot be expressed as an easily evaluated equation (closed form), as was done for Vb above. When available, such solutions instantly provide a qualitative description of a systems behavior in all conditions and are thus very useful for designing a circuit’s behavior. In this example, such a solution was only available because the transistors were assumed to be in a particular operating mode which rendered the considered circuitry linear. While more complicated, nonlinear differential equations can be characterized using simulation or advanced techniques from dynamical systems theory (Khalil 2002). using such techniques to qualitatively describe a system as large as the Odyssey would be an incredibly difficult and labor intensive[12]. Thankfully, individual sub-circuits can be described qualitatively and “sending” sub-circuit terminals can be connected to “receiving” sub-circuit terminals without greatly affecting the “senders” behavior. This property makes it possible for the analog programmer to design behaviors without considering the entire circuit at once. In the extreme case, it makes the abstractions later described in Level 3 possible.
This illustrates the complexity and nonlinearity of analog systems.
When used as substrates for computing, these dynamic systems can be harnessed to form analogs of other complex, nonlinear systems; this was the principle insight that lead to the field of analog computing. Digital systems, by contrast, are necessarily simplified models of complex systems, built up through code from simpler to more complex forms. Put another way, digital computing at this level — which we might call assembly code — must combine low-level hardware states (binary) into more complex mathematical functions. To cause a ball to accelerate across the screen, as in this example, the code must combine many simple arithmetical functions into a differential equation, then apply that equation to a pre-defined grid [13]of positions to move the ball across the screen from pixel to pixel. The analog computer, as we have seen, begins with a differential equation that simply describes the physical behavior of electrons within the circuit. Then, while the digital system must somehow simplify the equation it has built up, approximating positions within limited matrices, the analog computer simply feeds its signal into an analog output. The granularity may get reduced by the output device (the phosphor pattern on a CRT television, for instance), but such resolution reduction is not part of the machine’s code[14].
The analog computer converts physical states into symbolic or logical ones through equations that describe that physical behavior, while the digital computer begins with simple data, then must build up ever more complex instruction sets to construct a set of equations to transform that data into results that can be output. In the analog computer, dynamic states are translated into the symbolic, while in the digital computer, the symbolic is constructed piecemeal, always under conditions of simplification and approximation.
At the next level we will examine some of the implications of this difference for the programmer. First, however, we’ll look at one more example of the Odyssey’s physical states translated into a symbolic (mathematical) model: the gate matrix’s detection of player and ball contact. The sub-circuit considered is shown in Figure 8.
Figure 8: Subset of Odyssey circuitry that detects contact between a ball and a player.
We can view the circuit as mapping the two inputs (VP1, VBall) to one output (Flip_Flop). The line VP1 has a high voltage, close to Vcc, when the Player 1 spot is being drawn on the screen. The same applies to the VBall input. Meanwhile, the output is connected to the flip-flop that controls the directional motion of the ball. Current through R2 triggers the flip-flop and changes the direction of horizontal travel of the ball.
Using the circuit laws and models mentioned thus far, the equation for IR2 as a function of VP1 and VBall can be expressed in piecewise linear form.
In order to simplify this equation, we have to consider the four possible different cases encompassing all the possible combinations of the voltages on VP1 and VBall.
VP1 VBall ID1 ID2 V1
0 0 ~0.5*(Vcc - Vthr)/R1 ~0.5*(Vcc - Vthr)/R1 ~Vthr
Vcc 0 0 ~(Vcc - Vthr)/R1 ~Vthr
0 Vcc ~(Vcc - Vthr)/R1 0 ~Vthr
Vcc Vcc 0 0 Vcc - IR2R1
Table 2. 
Figure 9: Table of solutions for ID1, ID2, and V1 given all possible combinations of VP1 and VBall.
Thus, across the four possible combinations of VP1 and VBall , V1 there are two possible output values. With this observation, we can write down a simpler expression for IR2.
In essence, the diodes perform an AND operation between VP1 or VBall and send the detection of coincidence to the flip-flop.
These equations describe a system of interactions that incorporate both continuous (analog) functions and discrete (digital) ones. A continuously variable function (ball position in time) acts on a threshold equation to determine two binary states: the coincidence between a player spot and the ball spot, and the state of the flip-flop, which determines which of the two directions the ball travels in.
Unlike at the other levels, here we can see that the mathematical operations clearly specify the behavior of Volleyball’s physical instantiation in hardware. Similar to assembly code for digital computers, these equations determine the specific states of physical components — that is, they describe the behavior of physical systems. However, unlike digital computers, there is almost a one-to-one mapping between physical states and something perceivable by the player. These equations mix continuous with discrete, analog and digital. They describe discrete states of the machine, but as piecewise continuous functions. Thus, at this critical level of transformation between hardware substrate to abstract logic, there is no definitive move from the analog to the digital; both are operative simultaneously. What we observed at the hardware level, then, holds even at the level of translation into the symbolic.
Thus this level is unique in its affordances for the programmer. For example, if the game designer (programmer) wishes the ball to travel at a particular speed, then the equations discussed, and specifically the solution to the differential equation, can guide the choice of resistors and capacitors that accomplish that goal. Mathematical notation thus provides us with a glimpse of the transitive nature of Volleyball’s code: it operates upon the material substratum of the console, while remaining symbolically manipulable by humans at other scales. This is the reason that code can jump from scale to scale, linking levels together in communicative feedback loops.
Mathematical equations capture an essential aspect of a code’s meaning: the formal rules by which values are transformed as they pass from one level of abstraction to another. These are passage points where code can intervene in scalar transformations. We typically think of mathematics in code as primarily attempting to capture something about the analog world (encoding the continuous into the discrete) or performing calculations on other stored numbers. In this case, however, our glimpse at Volleyball’s underlying equations reveal an intricate entanglement of analog and digital functions that together describe the simplest of on-screen transformations in the program: bouncing the ball back and forth across the screen. Here there can be no delineated point at which the analog (phosphors on the screen, current in circuits) has been transformed into the digital, a threshold beyond which all coded manipulations are in a simulated, digital world. Rather, analog and digital functions rely upon each other and are interwoven. The mathematical components of code exert control over the system, but the system cannot be thought of as a mere simulation of the real. We could not claim that the ball in Volleyball is definitively digital or definitively analog. Rather, it appears to bounce between the two.
In this sense the ball in Volleyball is a unique object in early gaming and early programming, and serves as an icon or mark of transitivity: it moves of its own accord (according to the equations we’ve related here); it can be made to bounce, to halt, to disappear, to soar, or slam downward like a missile.[15] The ball is a boundary object that can bounce between levels of abstraction, as both an object operated upon by code and as code operating on its various environments. These sorts of liminal coded objects are rarely considered as such, but perhaps that is because the equivalent level at which they can be resolved, assembly, itself receives little attention. Still, we could look to other boundary objects like wavetable synthesis, scanners, and quartz oscillators as ubiquitous digital equivalents.
The liminal quality of Volleyball’s ball provides an interesting response to Kittler. Because the ball is both analog and digital, material and codeable, we can accept Kittler’s argument that continuous or analog structures are more characteristic of the physical world as a whole while rejecting his assumption that they are “unprogrammable.” That is, we can accept his argument that digital systems capture or represent only a small slice of the world and obscure even that through symbolic abstraction but also reject his dichotomy between continuous and programmable. Volleyball’s ball demonstrates that continuous structures are very much programmable, and that code and continuous material substrate can sustain reciprocal, non-reductive relations.
Let’s follow this analog-digital hybrid volleyball on its path as it weaves together multiple scales, multiple procedures, and multiple bodies.
Level 3: Abstract Logic
When programmers write code and humanities scholars read it, the code encountered is usually expressed in a high-level programming language. These languages are powerful because they retain the precision and machine readability of lower levels of code and at least some of the features of natural language. That is, they use words and syntax borrowed from natural languages (usually English) wherever possible to aid in the composition and human readability of the coded program. Code written in a programming language is semantically unique in that it is addressed to two audiences: machines and humans.
Programming languages are not available for analog coding. This is because the machine is an analog of a physical system, not a linguistic one. While any analog program can be approximately described in natural language (as we have attempted thus far), there is no necessary connection between sequences of machine instructions and linguistic sequences that would render language a particularly suitable form for coding analog machines. Historically, analog computer programmers tended to use a semi-standardized block diagram notation system to record, check, and disseminate their programs. Similar to digital programming languages, block diagramming standardized code so that it could be “set up” (analogous to compiling) on different architectures and understood by different human programmers. Additionally, the diagrams served as a record of the code fed to the machine, just as today source code is sharable, archivable, and readable outside of its particular expression when run on its intended platform.
Block diagramming essentially visualizes the logical flow of a program. Each block simultaneously represents a logical operation and a hardware component. Figure 10 includes nine basic programming blocks closely adapted from the Handbook of Analog Computation (Gilliland 1967). These are the building blocks of Volleyball’s code.
Figure 10: Each of the nine program blocks used in the Volleyball program and a basic explanation of their inputs (left sides) and outputs (right sides). “&&” and “||” represent the logical AND and OR operators respectively.
These program blocks make intuitive sense to the programmer, and also convey precise instructions to the machine. To recall our previous example, IF the ball makes contact with the net, THEN it will disappear. Using program blocks, this could be represented using an AND block to detect coincidence between the ball and the wall and flip-flops which latch upon receipt of the AND gate’s output in order to make the ball disappear for the remainder of the program. Every logical operation that comprises a program can be diagrammed in this fashion. Volleyball is simple enough to have been programmed entirely in its coders’ heads and therefore Ralph Baer and his collaborators may never have developed a formal block diagram when designing its logic. Nevertheless, it is quite possible to reverse engineer the program and formally express it as code, as we have done in Figure 11.
Figure 11: Full Volleyball program code, expressed in analog programming block notation.
The spot generators indicated in Figure 11 have the following logical structure (Figure 12):
Figure 12: The spot generator sub-circuit is repeated for both players, the ball, and the wall.
Notating Volleyball in this way reveals a different aspect of the same code we have explored as hardware and as a series of mathematical equations. Here we notate not the electrical components, nor a mathematical representation of voltage transformations, but rather the more abstract level of logical flow. When viewing the diagram as a whole, Volleyball’s larger-scale relational structure is revealed. We may notice, for example, the centrality of the ball: it is acted upon directly by the players via their controllers but also subject to a number of conditional branches that govern its state. As players of the game, we might expect that our avatars, the player spots, are the most central objects in the program. However, this logical flow diagram alerts us to the fact that they primarily serve as input to other processes — that is, as triggers. Very little affects them, while they affect the logical flow in a number of ways.
From a gameplay standpoint, this produces an interactive system that does not render its playable characters vulnerable to in-game threats: these avatars have free reign in the world of Volleyball. They primarily act to constrain their principal medium of exchange: the ball. On the face of it this isn’t surprising: sports games are usually more about doing things to a ball than avoiding or mitigating pitfalls directed at your avatar. However, even in this genre of game, avatars in most sports games are highly constrained by coded conditional branches. For example, we are not aware of a later volleyball video game that allows its characters to cross over to the other side of the net during play. The same sort of conditional branch that causes the ball in Volleyball to become invisible when it makes contact with the net typically halts player movement. No such conditional branch is present in the above program, and sure enough, players can move their avatars over to their opponents’ side of the court. They can even leave the court entirely! Thus the logical structure of Volleyball enacts a particular form of player agency.
Granino and Theresa Korn, in their classic 1952 text on analog programming, take pains to describe the creativity involved in designing any particular analog computer program:
There are usually many possible setups (programs) for a given problem. It will always be somewhat of an art to find the setup which will result in the greatest possible accuracy or in the most economical use of the computing elements. Experience as well as ingenuity will give the operator a feeling for the new mathematical medium, and one may say that an elegant setup will be aesthetically satisfying as well as practically useful. (Korn and Korn 1952, 22)
Today’s programmers will recognize and relate to the concept of elegant coding: while there is no single “right” way to achieve particular results from code, there are various more or less elegant ways to do so through concision, recursion, and creativity. As Mark Marino notes, “people who do not program often assume that code is like arithmetic, with symbols and processes that are expressed in the only way possible. However, programming actually creates artifacts of processes that reflect the selections made by the programmer from the paradigm of possible options” (Pressman, Marino, and Douglass 2015, 29).
In the case of Volleyball, these functions could have been implemented in a number of different ways. What is perhaps most striking is the economy of this program: it makes use of the absolute minimum number of conditional branches and drawn elements necessary to simulate a game of volleyball. It is working within the hardware limitations of its platform, but as one of the core games written during prototype development, it also influenced those hardware specifications. For example, an extra resistor and its attendant parallel wiring and connection to the game card edge connector had to be added to the motherboard in order to implement the program block we have designated as “Wall Vertical Height Selection” above. This is the function that limits the height of the Wall spot in order to refashion it into a short volleyball net. Out of twenty-eight commercially released Odyssey games, only Volleyball actually calls this function (via a trace on game card #7).
Another feature linking hardware with logic flow that is revealed by block program notation is the vertical and horizontal timing sources built from self-resetting integrators. Together, the analog output of these circuits represent the X-Y position of the television’s electron beam and thus sets the timing for the entire program. It is remarkable that this sense of time is accomplished purely using program blocks. In digital computers this is not possible, since time is discrete, and must be incremented by some external source such as a crystal oscillator (Heiserman 1978, 14) (Patterson and Hennessey 2014, 33). Here, by contrast, the bidirectional coupling of analog and digital elements in the program, their mutual permeability, enable digital events to occur in continuous time.
Like most code, Volleyball mediates between human-readable accounts of the world and machine-readable models of non-ambiguous instruction. Annette Vee describes this dual function of programming compositionally as “the constellation of abilities to break a complex process down into small procedures and then express — or ‘write’ — those procedures using the technology of code that may be ‘read’ by a nonhuman entity such as a computer. To write code, a person must be able to express a process in hyper-explicit terms and procedures that can be evaluated by recourse to explicit logic rules” (Vee 2017, 22). While Vee compares the machine-logic structure of code with its linguistic properties, our block programming notation is primarily visual and networked rather than linguistically expressed. Does this help (or compel) us to conceive of the human-readable layer of code, or indeed its composition, differently?
Visualizing logical flow privileges particular machine actions and opens up spaces for inputs and outputs at other levels of abstraction. This is the level at which we can study code for its syntactic qualities and topological structures (especially loops). We can look for linearity or circularity, openings for inputs and opportunities for outputs. It is the level at which potential is closed and captured for particular logical structures.
Another characteristic of Volleyball that is far less apparent at the hardware or mathematical levels, but which is readily revealed by its programming block diagram, is the precariousness of its main loop structure. Video game programs typically require a program loop that continually reads input states, calculates trajectories, tracks progress, remembers inventory and score, and draws the onscreen graphics and sends them to a frame buffer (LaMothe 1995, 34-43). If the program loop is interrupted (by someone yanking the power plug out of the wall, for instance), the current state is lost and the program must start over from the beginning (though it may re-load saved data). In Volleyball’s program logic, certain timed input pulses continue indefinitely and the positions of any spots are continuously drawn, but all of the interactive logic of the game relies on a loop created by successive flip-flop activations. If a flip-flop is not activated within a particular period of time, the loop terminates. Player spots are still drawn, but no interaction is possible. To the players, the game has become inert. No set of computational instructions necessarily repeats as a result of Volleyball’s logical structure.
If Wilfried Hou Je Bek is right that we should “regard the loop as a species of tool for thinking about and dealing with problems of a certain nature” (Hou Je Bek 2008, 180) then Volleyball’s contingent loop is a telling detail in the conceptual flow of this game. In practice, the “volley” in the game’s title refers to a sustained, repetitive sequence of a ball bouncing off the left and right players. But as we can readily see, this sequence can’t repeat without direct player input via the controllers. Our program block diagram reveals that there is no loop connecting an internal signal to the “Player 1 Position” composite block in Figure 11. In this sense, Volleyball has a limited runtime without active input. The code will have run its course once the ball exits the screen and only uninteresting periodic behavior will be produced by the system, driven by the oscillations of the vertical and horizontal time sources. In essence, if no player intervenes, the program grinds to a halt. The ball will not be returned from off the screen, and will not be automatically served. No demonstration sequence or player prompt will load. In Alexander Galloway’s useful conceptual schema, Volleyball does not include in its program loop what Alexander Galloway calls “ambiance acts,” or diegetic actions performed by the machine without operator input (Galloway 2006, 10). The program will have halted until a player presses their Reset button, which begins the program again. Volleyball’s loop structure represents a way of thinking about code-mediated interaction as a player loop. Rather than external players merely triggering timed inputs that modify the specific expressive details of the program loop, which is otherwise internally consistent and self-sufficient, here the loop requires the analog world in two-way participation. This program loops through physical space rather than treating physical space a mere input to be encoded.
This radical form of programming helped to usher in an entirely new form of human-computer interaction: the video game.
Level 4: Game
In order for Volleyball to be fully playable, its program logic must be supplemented with another, higher level of code that allows it to cohere as a particular type of program: a game. At this level, the user is included as part of the program, and its larger operational context comes into view. For a program that is meant to be a game, this is the level at which it can be played.
Typically, when analyzing digital code, the user can be bracketed out of the discussion, assumed as a given, but at a higher level of abstraction than code itself. As Montfort et al. note, critical code studies is methodologically located in between the scales of platform studies (underlying hardware) and software studies (processes, users, and cultural context), even if these scales and approaches tend to blend together in scholarly work (Montfort et al. 2012, 7). But once again, Volleyball and the Odyssey confound even the fuzzy distinctions between these levels. Just as the code makes no sense without reference to the hardware level (the medium that embodies its logic and makes it “live”), so too must we confront the fact that the game doesn’t even become a game, doesn’t become executable, without reference to a higher level of abstraction that includes human players in a closed circuit with the signal paths we’ve been describing, as well as natural language rules that are an essential part of the program’s instruction set. As we shall see, when analyzing Volleyball, it is difficult to make even an analytical distinction between these scalar levels.
Perhaps the most surprising twist in this game for today’s first-time players is that the Odyssey doesn’t simulate gravity: the ball is not coded to fall downwards! When hit by a player, as we have seen, the ball changes direction via a digital flip-flop and increases its speed through the charging of an analog capacitor, driving it to the right or left depending on the initial condition before the coincidence of ball and player. But the ball’s vertical position as it travels is determined by the setting of a special (third) knob on the player’s controller: the “English” knob. Turning this knob directs the ball upward or downward. The ball’s upward arc, apogee, and downward arc, together simulating the effects of gravity, are encoded not by game card #7, nor any digital or analog logic hardwired into the motherboard, nor by a differential equation, but rather by two very human-readable sentences on the game’s instruction sheet: “Each player must use his ENGLISH Control to arch the ball over the NET and then down into his OPPONENT’S playing court. The ball must be directed down towards the floor of the court and is not permitted to go off the screen at the TOP or SIDE” (Magnavox 1972, 1).
The result, as surely as the insertion of a parabolic equation in a line of program code, is that the ball tends to arc over the net and then drop down to the bottom of the screen. Such is the power of code.
The “Set Up” section of the same document instructs the player, as the second step, to “place the VOLLEYBALL Overlay on the screen” (Volleyball 1972, 1). The overlay in question is a thin, offset-printed sheet of plastic cut to fit the distinct rounded CRT screens of 1960s and 1970s television sets (Figure 13). All but one of the Odyssey’s twenty-eight released games uses a similar overlay. These overlays make use of a mixture of three optical effects: opacity (via a special opaque layer applied to the back that blocks all onscreen elements when they pass through the coated area), translucency (via graphics printed on the front of a frosted substrate), and transparency (non-printed areas on a clear substrate). The entire Volleyball overlay is translucent: on-screen graphics project through the overlay but pick up the color printed thereon. The yellow backdrop of the Volleyball overlay tints both the players and ball distinctly yellow, presumably evoking a beach setting.
Figure 13: Volleyball overlay. Scan by Zachary Horton.
The overlay’s design includes two squares. As the instructions explain, the players must position their avatars inside these “boxes” for every serve. Here, then, written rules reference and require the on-screen game logic and resulting luminescent shapes, as well as the physical overlay, which composites two sets of images (those produced via the cathode ray tube and those statically printed on the plastic sheet). Both the algorithm (set of instructions) and the elements necessary to execute it span across multiple media and modalities: graphical overlay (with optical properties of reflection and refraction), natural language instructions, coded machine behavior via game card #7 and the various digital and analog circuits it modifies, and human-generated input governed by the affordances of the Odyssey controller — including the semantic affordance of the prominent label for its one and only button: “Reset.”
Pressing a button labeled “Reset” in order to serve a ball induces some cognitive dissonance. Ralph Baer’s final prototype for what was to become the Odyssey, his “Brown Box,” labeled its corresponding button “Serve.” The Magnavox team changed the button’s label (though not its function) to “Reset.” The semantic difference is stark: to “serve” is to provide service to another person, to provide them with the ball, and to set a projectile in motion. It is a narrative act, both initiatory and consequential. To “reset,” on the other hand, is to return to the beginning, to start over. This is a user action that effects a change of machine state: in this case, enacts a loop that keeps the program running. Here, then, is the missing link in the machine code’s loop. It is offloaded to human action, but certainly not decoded or uncoded: the “Reset” button ensures that the human player is not only physically, but logically and semantically enrolled into the game’s series of machine actions as a fundamental element of its program logic. In Alexander Galloway’s typology, which contrasts machine actions vs. player actions on one axis and diagetic vs. non-diagetic actions on the other (Galloway 2006), this is an example of a non-diagetic machine action (loop end state) masquerading as a diagetic machine action (ball out of court), prompting a diagetic player action (serving the ball) that nonetheless reveals its non-diagetic nature (restarting the program loop) via the tellingly labeled “Reset” button. While this tell-tale sign is the most blatant slip of the curtain, it is characteristic of much of the game’s logic of simulation. Even human vocalization and memory are drafted as game functions: the players must keep a running tally of their scores, calling them out and retaining the arithmetical chain until a winner can be declared.
The Odyssey in general, and Volleyball in particular, can be regarded as exceptionally economical in its design when, from this angle, we trace the ways that its program code jumps media and seamlessly meshes them together into a necessarily complete circuit of coded behavior. The overlay, natural language instructions, mathematical functions, logical program flow, and individual physical states all work as part of a larger assemblage to define the bounded system that is the game Volleyball. There is no redundancy between, for example, the instruction set given to the human players and the instruction set given to the machine. Not only is gravity offloaded to players as an aspect of gameplay (governed by formal rules) rather than as a machine-enforced constant,[16] but scoring too is given over to players to adjudicate and mentally tally. The instruction sheet explains that where on the overlay the ball exits determines who receives points or takes the next serve.
Of course, players aren’t forced to follow these rules if they don’t wish to do so. This represents a significant difference between this distributed, analog-digital system and purely digital ones: digital code has a finality about it — a way of enforcing constraints without relying on formal human-addressed rules to do so. As Cathy O’Neil argues, digital systems and their black-boxed algorithms “define their own reality and use it to justify their results,” creating feedback loops that foreclose appeal and tend to perpetuate injustice (O’Neil 2017, 7-11). Lawrence Lessig has made a similar point about the autocratic nature of code, arguing that it prevents unauthorized behavior from the beginning, which circumvents a fundamental right of citizens to a legal process to challenge unjust rules. In programmed systems, “code is law” (Lessig 2006, 5). When the rules are baked into the system they cannot be challenged. Compare this to Volleyball, which codes no prohibition on where players may or may not move during the course of the game. The human code dictates that “each player must stay on his own side of the net,” but the machine code does not enforce this. It is a rule, but one that can be broken: as we have noted, players can move to their opponents’ sides of the net, and even outside of the visible area on the television screen if they wish.
This “breaks” the game, of course. Players can probe the edges of the machine logic, but must adhere to the semantic content of the rules and self-police them or the program doesn’t work. A reversal of priorities, then: the program requires a higher-level set of semantic structures in order to function correctly. Human language structures the logic system, rather than the logic system rigidly determining the sorts of semantic content that can emerge from play. In one sense, then, Volleyball is rigidly structured by rules. In another, though, the distribution of those rules across various media and abstraction levels allows them to be differentially (and creatively) applied, opening up a new space for experimentation and creative interfacing with the system. McKenzie Wark has argued that such engagement with games can help players to navigate and find ways to subvert or break everyday reality, which is increasingly structured by digital system dynamics and marked by gamification. This technosocial milieu, which Wark calls “gamespace,” has saturated life itself and transformed it into an agon that instrumentalizes all action and reifies the values of capital (Wark 2007, 008). In gamespace, literal video games have the potential to reveal the ways that players’ relationship to reality has been coded: “The game opens a critical gap between what gamespace promises and what it delivers,” acting as the first step toward dismantling its ideology and discovering ways to subvert its everyday functions (Wark 2007, 032). Playing games in this way enables the player to “trifle with the game to understand the nature of gamespace as world — as the world” (Wark 2007, 021).
If games are simulations — of particular spaces, times, and relations, or of gamespace as a whole — and analog programs are also simulations or analogs of particular states, then we must emphasize here that Volleyball troubles the usual relationship between model and reality. This program is meant to simulate a volleyball court and ball, and two humans playing its titular sport. In standard computational simulations (including analog ones), humans tweak variables and observe how the system behaves. In video games, variables take the form of timed inputs encoded through physical interfaces: buttons, joysticks, voice commands, gestures, and so on. But while that is still true for Volleyball, the simulation is less autonomous and less autocratic. That is, this coded system does not foist the constraints of the simulated reality on the user and challenge them to perform within those constraints. Here, code is not law, and the simulated world it conjures is permeable with the reality it simulates. As we have seen, Volleyball calls its players to a somewhat different challenge: rather than understanding and mastering this new, coded, virtual reality, the player is tasked with completing the simulation itself, with closing the gap between model and world, analog and referent.
The players must add gravity to this simulated beach volleyball game. The players must keep the program loop going by constantly resetting it (flipping the flip-flop and recharging the horizontal position capacitor) via their Reset buttons. The players must enforce their starting positions vis-a-vis the mediation of an overlay that is not part of the machine code and thus can only be integrated by the human nervous system. The players must supply the interpretation of various plays to adjudicate and assign scores. The players must supply the memory to keep track of these scores and declare a winner. We may read this as a particularly neoliberal enrollment of human capability into gamespace (not only do the players have to perform within a simulation, they have to take on the labor of completing the simulation that enslaves them), or we may read it as something of an inverse of today’s ubiquitous and seamless gamespace: instead of restructuring (gamifying) the player’s relations with the social and material world by instrumentalizing and quantifying their actions and enrolling them in a milieu of perpetual competition, Volleyball asks players to generate their own bridge from the virtual to the real. In this conception, instead of gaming exposing the gap between a promised milieu and its actual mechanics, as Wark argues is the norm today, gaming here represents playing in and exploring the gap itself, in the notable absence of teleology or promises.
One of us, Zachary Horton, often teaches the Odyssey platform in his undergraduate courses and has witnessed many students struggle with Volleyball in particular. Players must use three different knobs and one button nearly simultaneously to keep the program running (Figure 14). While it is not unusual for games or other software to require difficult, coordinated patterns of movement (this is notoriously endemic to the street fighting genre of video games, for example), these functions are usually tied to avatar or user actions rather than the layer of simulation itself.
Figure 14: Odyssey controller. Photograph by Zachary Horton.
While controlling multiple continuously variable processes with only two hands is indeed difficult for most players, the true challenge of this game is, we hypothesize, due less to poor hand-eye coordination than it is to the conceptual leap, unfamiliar to today’s gamers, from inhabiting an immersive simulation to completing and maintaining it. Roughly speaking, the conceptual leap in the mentality of the player is equivalent to the conceptual shift inaugurated between analog and digital coding. The Odyssey’s players complete both its electrical and conceptual circuits, tracing a continuous line from their embodied experimentation to the logical flow of its program to its humming hardware. No level is fully self-sufficient, and none can pretend to subsume the others.
It is no small trick to maintain the enmeshed meta-stability of this multi-level, multiscalar, multi-modal system. As we have seen, intricate programming that spans modes, scales, and levels of abstraction is required. Volleyball, as a game, and the Odyssey, as a platform, are exemplars of what we might call multi-level coding. This style of programming addresses multiple scales simultaneously, exchanging information between them, and thereby weaving a tapestry of digital states, analog contours, natural language instructions and machine instructions, physical affordances and symbolic transformations. As we have argued, Volleyball’s code is not reducible to any one of these strands; it only comes into focus as a human-computer assemblage when all are considered and traced as enmeshed processes.
The Odyssey challenges not only our common assumptions about the strict programmatic separation between the analog and the digital, but also the role of video games in computational history. Volleyball makes a compelling case for early video games as far more innovative and consequential than as merely one subsidiary category of home software focused on self-contained simulations. Volleyball is porous rather than self-contained, a program that enters and incorporates the material world rather than a hermetically sealed digital simulation. Players have to do far more than learn the algorithms of the system and optimize their performance within it: here they become active authors in the primary program loop, actualizing and sustaining the code as if they were part of the hardware platform — which indeed they are. The Odyssey may not attempt to teach its players anything about formal computer programming, but it does teach them how to integrate with, realize, and tweak complex human-computer systems that render commensurate radically disparate scales and modes. Far from being merely primitive versions of later digital simulations, the generation of games to which Volleyball belongs were charting a radical path devoted to bringing worlds together and teaching their players how to sustain these new, hybrid human-computer assemblages.
Conclusion
We have traced an unusual program coded for a mostly forgotten platform as a deliberately provocative edge case for critical code studies, and academic study in general. Not everyone, we think, would agree that this program constitutes code at all, if we insist on defining code as discrete symbolic characters that are encoded in a binary system and compiled for general processors consisting of transistorized logic gates. However, we would argue that none of these features are necessary for a program to be considered code. As we have shown, even extremely limited-purpose analog computer programs possess the same logic operations, abstract layers, and semantic context as digital code. The fact that Volleyball does not prioritize any particular level of abstraction nor set of linguistic conventions (a defined programming language) does not make it any less of a formally coded system. We have argued that its functions are distributed across multiple modes, layers of abstraction, and scales that function as dynamic and mutually constitutive levels, all of which are required for the program to generate meaning and become operationalized at all. It thus charts a new set of potentials for human-computer interaction, formalizing them as the user-sustained, coded loops we now know as video games.
Video games were (and are) at the vanguard of human-computer interaction and mutual composition. Instead of viewing them as typical code wrapped in layers of input-output, we can consider them as prime examples multi-level code, variously materializing themselves across boundaries, bouncing from level to level, environment to environment, expanding with each bounce the terrain upon which code can operate. While we mean to draw attention to the underrepresentation of analog programs, so prevalent historically, in scholarly discourse about code, computers, and media, we also point to the potential of even software of the more common sort — digitally coded in alphanumeric form in a programming language oriented within a software stack — to reactivate these active, self-reflexive relationships through multi-level coding.
If video games proper are only one particularly self-reflexive expression of a more generalized gamespace that governs our actions at all levels, from database structure (Horton 2021, 185) to social interfaces (Galloway 2012) to planetary scale computing (Bratton 2016), then renewed attention is due to the analog-digital hybrid loops formed by game-like coded systems, including especially the boundary objects that are both produced and exploited by these systems.
Volleyball and the Magnavox Odyssey remind us that code too can be fuzzy, that it may require a breakdown of the distinction between inside and outside, even if it also means giving up the ability to pin code down to a particular scale, level, or mode. We would be hard pressed to define a bright boundary for Volleyball’s code, a critical threshold between that which is inside the code and that which is external to it. It is commonplace to assume that code is neatly contained within its own self-defined representation, hermetically sealed from environments it doesn’t internally define or model. Perhaps we receive this conception of code from the conventions of singular files and their representation within operating systems and digital file systems. We say that a program is run on hardware (implying a strong logical separation), and that interfaces mediate between input, code, and output. In the case of Volleyball, we have shown that though we can analytically differentiate between levels or modes of expression, we cannot isolate code at any particular one of them and hope to produce a complete explanation of how it runs. Volleyball works, or alternately “crashes,” by expressing itself as a distributed, multi-scalar system. This program belongs to a special class of analog programs that are rare today[17], but we suggest that these insights can be applied to other programs, analog and digital, as well.
We are arguing for a version of code and coding as mutational, material, and transitive, that can run on multiple levels simultaneously, and thus composes a platform, along with hybrid objects and their attendant subjects. In this sense, the program we have explored here resists Kittler’s distinction between hardware and software, the programmable and the non-programmable, and thus does indeed manage not only to “keep up with” the dynamics of the material world, but helps to compose and shape them. Digital code may not reduce to signifiers of the physical world so much as it expands to incorporate them. Abstraction doesn’t necessarily hide materiality; it can couple with it to form multi-leveled systems with joint characteristics of the natural environment and syntactic procedural organization. This is, in fact, how code got its teeth, and why it matters as a social and political actor.
If there appears to be something humble about analog programming, it is because it cannot pretend to totality. If the digital computer, “like any good universal solvent, has dissolved its own container and vanished from sight” (Haigh 2019, 1) and is thus capable, in principle and in neoliberal ambition, of swallowing up everything else, establishing a gamespace that “dynamites everything that is not in the game, like an outdated Vegas casino” (Wark 2007, 009), then Volleyball, from the dawn of video games and the twilight of analog computation’s golden age, provides a fascinating countermodel to hegemonic coding. Instead of either contributing to the quantification and programmability of the analog world (capture, encoding, simulation) or enacting hacks that challenge digital capital’s totality or sovereignty (the exploit, gaming), Volleyball exists on a different axis. Its function, in our reading, is to explore the possibility of a milieu that isn’t collapsed on one side by an all-encompassing digital media that enrolls its users as data or on the other by coders and players who consume the digital as a means of manipulating simulated worlds. Volleyball is not a simulation of its titular sport, but rather an analog of world making.
References
(Abelson and Sussman 1996) Abelson, H. and Sussman, G. J. Structure and Interpretation of Computer Programs. The MIT Press, Cambridge, Massachusetts. (1996)
(Baer 2005) Baer, R.H. Videogames: In the Beginning. Rolenta Press, Springfield, NJ. (2005)
(BNL History) The First Video Game? (WWW Document), n.d. . BNL History. URL https://www.bnl.gov/about/history/firstvideo.php (accessed 6.8.21). n.d.
(Bogos 2009) Bogost, N.M. Racing the Beam: The Atari Video Computer System. The MIT Press. (2009)
(Bratton 2016) Bratton, B. The MIT Press, Cambridge, Massachusetts. (2016)
(Brown and Vranesic 2009) Brown, S. and Vranesic, Z. Fundamentals of Digital Logic with VHDL Design, Third edition. McGraw-Hill, New York, New York. (2009)
(Coin 2016) Coin, E. More Analog Computing Is on the Way (WWW Document). dzone.com. URLhttps://dzone.com/articles/more-analog-computing-is-on-the-way https://dzone.com/articles/more-analog-computing-is-on-the-way (accessed 6.6.21). (2016)
(Galloway 2006) Galloway, A.R. Gaming: Essays On Algorithmic Culture, First edition. Univ Of Minnesota Press, Minneapolis. (2006)
(Galloway 2012) Galloway, A.R. Polity, first edition. Cambridge, UK (2012)
(Gilliland 1967) Gilliland, M.C. Handbook of Analog Computation. Systron-Donner Corp. (1967)
(Haigh 2019) Haigh, T. Introducing the Early Digital, in: Exploring the Early Digital. Springer, New York, NY. (2019)
(Holst 1982) Holst, P. George A. Philbrick and Polyphemus: The First Electronic Training Simulator. undefined. (1982)
(Horowitz and Winfield 2015) Horowitz, P. and Winfield, H. The Art of Electronics, Third edition. Cambridge University Press, New York, New York (2015)
(Horton 2021) Horton, Z. The Cosmic Zoom: Scale, Knowledge, and Mediation. University of Chicago Press, Chicago, Illinois (2021)
(Hou Je Bek 2008) Hou Je Bek, W. Loop, in: Fuller, M. (Ed.), Software Studies: A Lexicon. The MIT Press, Cambridge, Mass, pp. 179–183. (2008)
(Huskey and Korn 1962) Huskey, H.D., Korn, G.A. Computer Handbook. Edited by H.D. Huskey ... and G.A. Korn, Etc. McGraw-Hill Book Company. (1962)
(Khalil 2002) Khalil, H. K. Nonlinear Systems, Third edition. Prentice Hall, Upper Saddle River, New Jersey, (2002)
(Kittler 1997) Kittler, F.A. There Is No Software, in: Johnston, J.H. (Ed.), Literature, Media, Information Systems. GB Arts International, Amsterdam, pp. 147–155. (1997)
(Kline 2019) Kline, R.R. Inventing an Analog Past and a Digital Future in Computing, in: Haigh, T. (Ed.), Exploring the Early Digital, History of Computing. Springer International Publishing, Cham, pp. 19–39. https://doi.org/10.1007/978-3-030-02152-8_2 (2019)
(Korn 1952) Korn, G.A., Korn, T.M. Electronic Analog Computers. McGraw-Hill. (1952)
(Heiserman 1978) Heiserman, D.L. How to Design & Build Your Own Custom TV Games. Tab Books, Blue Ridge Summit, Pennsylvania. (1978)
(LaMothe 1995) LaMothe, A. Black Art of 3D Game Programming. Waite Group Press, Corte Madera, California. (1995)
(Lessig 2006) Lessig, L. Code, Version 2.0. Basic Books. (2006)
(Lundberg 2005) Lundberg, K. The history of analog computing - Introduction to the special section. Control Systems, IEEE 25, 22–25.https://doi.org/10.1109/MCS.2005.1432595 https://doi.org/10.1109/MCS.2005.1432595 (2005)
(Magnavox 1972) The Magnavox Company, Volleyball instruction sheet. The Magnavox Company, Fort Wayne, Indiana (1972)
(Magnavox 1974) The Magnavox Company, 1TL200 Odyssey Game Simulator. Magnavox Service Manual, Fort Wayne, Indiana. (1974)
(Montfort et al. 2012) Montfort, N., Baudoin, P., Bell, J., Bogost, I., Douglass, J., Marino, M.C., Mateas, M., Reas, C., Sample, M., Vawter, N. 10 PRINT CHR$(205.5+RND(1)); : GOTO 10. (2012)
(O’Neil 2017) O’Neil, C. Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy, Reprint edition. ed. Crown, New York. (2017)
(Patterson and Hennessy 2014) Patterson, D. A. and Hennessy, J. L. Computer Organization and Design, Fifth edition. Morgan Kaufmann, Waltham, Massachusetts. (2014)
(Pressman and Marino 2015) Pressman, J., Marino, M.C., Douglass, J. Reading Project: A Collaborative Analysis of William Poundstone’s Project for Tachistoscope {Bottomless Pit}, 1st edition. ed. University Of Iowa Press, Iowa City. (2015)
(Sedra and Smith 2015) Sedra, S. S., Smith, K. C. Microelectronic Circuits, Seventh edition. Oxford University Press, New York, New York. (2015)
(Tenenbaum and Pollard 1985) Tenenbaum M. and Pollard H., Ordinary Differential Equations. Dover Publications, New York, New York. (1985)
(Thomas et al. 2012) Thomas, R. E., Rosa, A. J., and Toussaint, G. J., The Analysis & Design of Linear Circuits, Seventh edition. John Wiley & Sons, Hoboken, New Jersey. (2012)
(Ulmann 2019) Ulmann, B. Analog Computer Development in Germany With a Focus on Telefunken (Scanning Our Past). Proceedings of the IEEE 107, 1763–1771.https://doi.org/10.1109/JPROC.2019.2926611 https://doi.org/10.1109/JPROC.2019.2926611 (2019)
(Vee 2017) Vee, A. Coding Literacy: How Computer Programming Is Changing Writing. The MIT Press. (2017)
(Wark 2007) Wark, M. Gamer Theory. Harvard University Press, Cambridge, Mass. (2007)

Notes

[1]  Should we call some things in L1 affordances? Right now there is no mention till L2
[2]  A total of 28 games were released for the Odyssey before its discontinuation in 1975, including two 4-packs after Volleyball’s.
[3]  How does this new text strengthen the throughline argument? Maybe I’m missing it. If we just want to say there is an overlay then does it require this much to mention it and refer to the figure?
[4]  Not confident with this suggestion but architecture usually refers to design patterns used to create large circuits and is featured in courses titled things like “computer architecture”.
[5]  I understand the definition that follows but not the term
[6]  This word is not used again until the very end, where it is defined in the context of the essay. Maybe some explanation here would be helpful?
[7]  Similar concerns had led Willy Higenbothem to program the world’s first real-time video game, Tennis For Two, on an analog computer at Brookhaven National Laboratory in 1957 (BNL History).
[8]  This unusual 3-pole switch means that the press of a single button by the player can trigger up to three different circuits in the hardware.
[9]  Nick Montfort and Ian Bogost’s groundbreaking book in platform studies, Racing the Beam, takes its title from exactly this operation, necessitated by the lack of a frame buffer. They detail many ways in which the lack of frame buffer impacted both the capabilities of the Atari VCS and the lengths that programmers had to go in order to code for the platform (Bogost and Montfort 2009, 27).
[10]  This and the next 6 lines of edits by me were from a previous revision it seems
[11]  KVL states that the sum of voltages in any closed loop of the circuit equals zero. KCL states that the sum of currents through any node (group of connected device terminals) is zero (Horowitz and Winfield 2015, 2)
[12]  In the above I’m trying to make the case that a higher level language is needed to effectively program the Odyssey. In what’s below you are saying that the digital system is inherently an approximation. So we would need some kind of transition between these points or remove one.
[13]  That grid will usually be the 7-15 digits of scientific notation I mentioned above, not usually the grid on the screen, though older digital consoles did discretize position at the screen resolution
[14]  How does this paragraph fit into the argument matrix? While it is valid, the uses of anti-aliasing and floating point numbers make the differences basically ontological, like the audiophile analogy from earlier in the essay
[15]  In fact the ball becomes a torpedo in another Odyssey game, Submarine. In that game, it is programmed to never disappear, but rather to cause the player spot to disappear when the two make contact.
[16]  It is important to emphasize here that though the Odyssey development team faced cost constraints, which functions were offloaded to players via natural language code and which were dictated as machine instructions were the result of deliberate choices, not inherent platform limitations. The Odyssey could certainly have been programmed to simulate gravity, just as it simulates lateral ball movement.
[17]  Nonetheless, analog computing may be poised for something of a comeback in the future as computers shrink to the nanoscale. For introductory glosses of the ways that analog computing has been envisioned in the twenty-first century, see (Lundberg 2005) and (Coin 2016).

Works Cited