# JS-PDP-1 |d|i|g|i|t|a|l| PROGRAMMED DATA PROCESSOR-1 A Javascript PDP-1 emulator

EXTENSION and PROGRAM COUNTER
| | | | |
EXTENSION and MEMORY ADDRESS
| | | | |
ACCUMULATOR
| | | | |
IN - OUT
| | | | |
EXTENSION and ADDRESS
| | | | |
TEST WORD
| | | | |
RUN DEFER OVER FLOW EXTEND
START EXT.
POWER
SINGLE STEP
SINGLE INST
STOP after jump
STOP after IOT
STOP not PDP-1A
SENSE SWITCHES
PROGRAM FLAGS
INSTRUCTION
|
Music players
Music (intermediate)
Utilities
Load paper tape...
OPTIONS
Hardware MUL/DIV (TYPE 10)
Display jitter
Lightpen radius

# Reference

PDP-1 Generic

1. Wikipedia entry for the PDP-1

PDP-1 Hardware

1. PROGRAMMED DATA PROCESSOR-l Manual (PDP-1A, 1960)
2. PROGRAMMED DATA PROCESSOR-l HANDBOOK (PDP-1C, 1963)
3. PiDP-1 Replica PDP-1C

PDP-1 Software

1. MACRO ASSEMBLY PROGRAM for PDP-1 Manual (F-36BP, 1962)
2. Spacewar! promotional brochure
3. A Spacewar! implemenatation

# Instructions

This emulator

Instructions for using this emulator.

This PDP-1 emulator is based on previous Javascript emulators (on the shoulders of giants). It has been specifically modified to provide a platform for developing and testing PDP-1 software with a (reasonably) true console user experience. Because of how Javascript represents the emulated lamps, they will not "dim" the same as the original front panel lamps. This means that the lamps may flash whereas on the original front panel they may have been a little dimmer.

1. This emulator page (re-)loads with BLINKY-1 in core memory (0000-7777).
2. We recommend running the browser in full-screen mode (usually by pressing F11).
3. For detailed internal information, enable the console (usually CTRL+SHIFT+J or, for macOS, COMMAND+OPTION+J).
4. Press START (or CONTINUE) to start BLINKY-1 (also see instructions below).
5. This console front panel is a reasonably accurate representation of the PDP-1C but does not include the MEMORY BUFFER register.
6. Emulated hardware has 16 MEMORY MODULES (TYPE 12) and includes a MEMORY EXTENSION CONTROL (TYPE 15).
7. It also includes a PRECISION CRT DISPLAY (TYPE 30) and, a LIGHT PEN (TYPE 32) which is controlled by the mouse.
8. Additionally, the AUTOMATIC MULTIPLY AND DIVIDE (TYPE 10) module may optionally be enabled.
9. The left-hand panel below the front-panel shows the TYPE 30 oscilloscope display.
10. The right-hand panel shows the Soroban typewriter console output.
11. The original EXTEND switch is replaced by START EXT. (Below the EXTEND lamp).
12. POWER and SINGLE STEP have no function. This emulator works at the instruction level, not the cycle level.
13. The three STOP switches work like the SINGLE INST switch and HALT the CPU after the instruction completes.
14. "STOP after jump" halts the CPU following a CAL, JDA, JMP, or JSP instruction.
15. "STOP after IOT" halts the CPU following an IOT instruction.
16. "STOP not PDP-1A" halts the CPU following an XCT, CAL, JDA, DZM, or LAP instruction. EEM/LEM become illegal and LAP (760100) is ignored.
17. When the CPU is HALTED, the buttons "INIT TO ZERO", "INIT TO TW", and "INIT TO RANDOM" will set the registers and core memory accordingly.
18. The buttons "ALL SWITCHES OFF" and "MOST SWITCHES ON" are there for your convenience.
19. The Javascript console is used to record special events including CPU HALTs etc.
20. When the CPU is RUNNING, the "EXAMINE" button only writes the output to the Javascript console (MA and AC are not changed).

BLINKY-1

BLINKY-1 instructions.

BLINKY-1 was created specifically for the PiDP-1 but has also been made available in this Javascript version.

1. Turn off all switches (EXTENSION and ADDRESS, TEST WORD, SENSE SWITCHES).
2. Load blinky.bin
3. Press READ IN, to start the BLINKY-1 program running.
4. Try pressing the "Enable audio" button. Each of PF1-PF4 will "click" that channel.
5. With audio on, you can get "tones" by flashing (TW=77xxxx, where xxxx is a small number).
6. Or, perhaps, a galloping horse with TW=070000.
7. Also try playing with the tick-speed (set SS5=ON and TW=77xxxx then change the TW setting).

    	B L I N K Y - 1   K i n e t i c   P o e t r y   o n   t h e   P D P - 1
    	-----------------------------------------------------------------------
    	TW0>    *fun *Special function   SENSE SWITCH (SSn) ON ->
    	TW1>     cAC  Complement AC      SS1 = RIM-load halts CPU after loading
    	TW2>     cIO  Complement IO      SS2 = Restart BLINKY-1 if changed
    	TW3>     pPF  PF pattern (0,1)   SS3 = Don't use extended memory
    	TW4>     pAC  AC pattern (0,1)   SS4 = Suppress the console HELP text
    	TW5>     pIO  IO pattern (0,1)   SS5 = Set tick (TK) speed from TW6-17
    	TW6-8>   sPF  PF speed (x sCK)   SS6 = TYPE 30 (oscilloscope) enabled
    	TW9-11>  sAC  AC speed (x sCK)   --------------------------------------
    	TW12-14> sIO  IO speed (x sCK)   TW=135xxx -> Easter eggs     (Try SS6)
    	TW15-17> sCK  Basic clock speed  TW=77xxxx -> Flash all lamps (See SS5)
    	-----------------------------------------------------------------------
    	TEST WORD (TW) SETTINGS TO TRY (begin with SS6=OFF) ...
    	135037  BLINKY-1 will 'read' you it's own binary code (SS6=ON after)
    	330000 'big fast loop'        010000 'reversal'
    	070000 'fast rotation'        000320 'bouncing'
    	TYPE 30 display -- Easter egg -> Turn SS6=ON and set the TW to ...
    	135007 'rocket'        136007 'missile'        122007 'sky rockets'
    	131007 'rockets'       137007 'dots'           123007 'streak'
    	133007 'satellites'    127007 'sky streaks'    121007 'streaks'
    	132007 'missiles'      126007 'fireworks'      TW0=ON to end Easter egg

Music

pdp1m13 and usage instructions from Peter Samson. Uncertainty regarding usage is my own.

1. Enable audio.
2. Load pdp1m13.rim
3. Press READ IN, to start the music program running.
4. Load a music paper-tape (intermediate, not compiled).
5. Set ADDRESS to 4. (Check the left button of the rightmost group for ADDRESS).
6. Set SENSE SWITCH 1 (the leftmost one) ON.
7. Press START once for each voice on the tape. I'm not certain how to determine this, I think there are 3 voices on the trio Sonata tapes.
8. Turn off SENSE SWITCH 1.
9. Press START.

Spacewar!

Spacewar! instructions.

Spacewar! was conceived in 1961 by Martin Graetz, Stephen Russell, and Wayne Wiitanen. It was first realized on the PDP-1 in 1962 by Stephen Russell, Peter Samson, Dan Edwards, and Martin Graetz, together with Alan Kotok, Steve Piner, and Robert A Saunders. Spacewar! is in the public domain, but this credit paragraph must accompany all distributed versions of the program.

1. Load spacewar.bin
2. Press READ IN, to start the Spacewar! program running.
3. Press START.
4. The "a", "d", "s", and "w" keys control one of the spaceships.
5. The "j", "l", "k", and "i" keys control the other.
6. The controls are spin one way, spin the other, thrust, and fire.

# Based on a Javascript PDP-1 emulator with front-panel

# In turn, based on a Javascript PDP-1 emulator by Barry Silverman, Brian Silverman, and Vadim Gerasimov

The Soroban typewriter software is (c) 2017 by Kevin Jordan.
The IBM Plex Mono font (Version 2.004) used by the above was designed by Mike Abbink, Paul van der Laan, Pieter van Rosmalen.
Manufacturer: Bold Monday (c) 2017 by IBM Corp. All rights reserved.
License: The above Font Software is licensed under the SIL Open Font License (Version 1.1). This license is available with a FAQ here.