---
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
![](https://2k8fuf10pw8w25f6ce428ify-wpengine.netdna-ssl.com/ModernComputer/Electronic/Images/PDP-1.jpg)
- 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}
![](https://assets.fontsinuse.com/static/use-media-items/10/9963/upto-700xauto/56702262/tumblr_mhi3ahYxQ61rm93g3o1_1280.jpeg){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
![](https://l2.re/-k-tNh)
```
% /usr/libexec/xscreensaver/munch
```
# Thank you!
Sources:
-
-
-
-