---
title: Computer Graphics on the PDP-1
author:
- Leah Neukirchen
- blinry's birthday barcamp 2021
date: 2021-07-07
x-compile-with: pandoc -t revealjs -s -o pdp-1-computer-graphics.html pdp-1-computer-graphics.md --variable theme=moon
---
# The DEC Programmable Data Processor-1

- available as of late 1959, only ~60 were built total
- 18-bit words, 5MHz clock
- default memory: 4kw = 9kb
# Precision CRT Display Type 30
::: {.container}
:::: {.col}
{height=500px}
::::
:::: {.col}
- 16-inch random-position, point-plotting cathode ray tube
- 1024x1024 resolution
- no frame buffer!
- single instruction API
```
dpy  720007  Display One Point
             Clears the light pen status bit and
             displays one point using bits 0
             through 9 of of the AC to represent
             the (signed) X coordinate of the
             point and bits 0 through 9 of the
             IO as the (signed) Y coordinate.
             
             The third lowest nibble (bits 9-11)
             encodes the intensity (brightness)
             in 1's complement, where 3 is the
             brightest, 0 the default intensity,
             and 7 (-0) barely visible.
```
- Spacewar! used this display, but we'll consider a much simpler program
::::
:::
# Munching Squares
[Demo at Masswerk](https://www.masswerk.at/minskytron/?version=munchingsquares)
# The Code: Jackson Wright, 1962
```
msq, lat           ; Load AC from Test Word switches
     sas msv       ; Skip next instruction if C(AC) = C(Y), msv = 777777
     sza i         ; Skip on ZERO (+0) AC
     law 2345      ; Load the AC with the number N
     add 7         ; Add C(Y) to C(AC)
     dac 7         ; Deposit C(AC) in Y
     rcl 9s        ; Rotate combined AC & IO left  9s = 777
     xor 7         ; Exclusive OR C(Y) with C(AC)
     dpy-i+300     ; Display One Point
     jmp msq       ; Take next instruction from Y
msv, 777777
```
# Later versions for the PDP-10
[HAKMEM - Artificial Intelligence Memo No. 239](https://interglacial.com/~sburke/stuff/hakmem.html)
HAKMEM Item 2:
```
     DATAI 2
     ADDB 1,2
     ROTC 2,-22
     XOR 1,2
     JRST .-4
```
HAKMEM Item 3 (Schroeppel):
Munching squares is just views of the graph Y = X XOR T for consecutive values for T = time. 
# Munching squares in tixy
# Munching squares on your Linux computer

```
% /usr/libexec/xscreensaver/munch
```
# Thank you!
Sources:
- 
- 
- 
-