This is a little web based console for quick access to an emulated PDP-10 system. I mainly intend to use it on my PiDP-10 PDP-10 replica for quick operations, like accessing the ITS console for bootup and shutdown operations.
Multi-target WebSocket to TCP proxy.
cd proxy
cargo build --release
./target/release/pdp10-proxy -p 11133 \
-t tv11:raw:192.168.0.10:11100 \
-t console:telnet:192.168.0.10:1025 \
-t term0:telnet:192.168.0.10:10018Target format: -t NAME:TYPE:HOST:PORT
NAME: URL path identifier (/ws/NAME)TYPE:raw(direct passthrough) ortelnet(IAC handling, 80x24 NAWS)HOST:PORT: Backend address
cd web
npm install
npm run dev # dev server on :5173
npm run build # production buildDev server proxies /ws/* to localhost:11133.
See docs/ARCHITECTURE.md for technical details.
The Knight TV terminal is directly based on the tvcon client, part of the tv11 emulator project.
To use the terminal emulator client, the tv11 emulator needs to be running and connected to the simh emulator, and listening to incoming tvcon connections on port 11100.
In the PiDP-10 replica setup, tv11 is normally started as part of the simh boot process as seen here.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Browser │ │ │ │ tv11 │ │ simh │
│(Web Client) │◄──►│ pdp10-proxy │◄──►│ (Knight TV) │◄──►│ (PDP-10 │
│ │ WS │ │TCP │ │TCP │ emulator) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
The web console also provides generic vt100ish terminal emulators for connecting to the console or serial ports of the simh emulator.
This terminal doesn't attempt to implement any sort of authentic period correct experience, it's just a simple terminal implementation utilizing xterm.js.
The ports we are connecting to are normally configured like this in the PiDP-10 simh configuration:
; console terminal
set cons -u telnet=1025
; additional terminals
at -u mty line=9,10018 speed=9600
at -u mty line=8,10017 speed=9600
Build the web client:
cd web
npm run build
cp -r dist /opt/pdp10-web # or wherever you preferExample nginx configuration:
server {
listen 80;
server_name _;
root /opt/pdp10-web; # path to your dist folder
index index.html;
# Serve static files
location / {
try_files $uri $uri/ /index.html;
}
# WebSocket proxy to pdp10-proxy
location /ws {
proxy_pass http://localhost:11133;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
}For subpath deployment (e.g., /pdp10/), build with:
BASE_PATH=/pdp10/ npm run buildA simple docker-compose.yml is provided for easy deployment using
docker-compose. The docker-compose configuration should automatically build
the required images using web/web.Dockerfile and proxy/proxy.Dockerfile.
Before running the containers, add the required TV11_HOST and SIMH_HOST
variables to .env file. See the included .env.example for reference.
Then start the containers using:
docker-compose up -dIf everything goes well, the web client should be accessible at http://localhost:1992/
- PDP-10 Simh - Richard Cornwell's PDP-10 emulator
- its - ITS reconstruction project
- PiDP-10 - PiDP-10
- tv11 - the web implementation of the knight tv terminal is based on tvcon
