Skip to content

A simple web console for accessing an emulated PDP-10 system.

License

Notifications You must be signed in to change notification settings

desaster/pdp10-web-console

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDP-10 Web Console

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.

Quick Start

Proxy

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:10018

Target format: -t NAME:TYPE:HOST:PORT

  • NAME: URL path identifier (/ws/NAME)
  • TYPE: raw (direct passthrough) or telnet (IAC handling, 80x24 NAWS)
  • HOST:PORT: Backend address

Web Client

cd web
npm install
npm run dev      # dev server on :5173
npm run build    # production build

Dev server proxies /ws/* to localhost:11133.

Architecture

See docs/ARCHITECTURE.md for technical details.

Terminal Emulators

Knight TV

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)  │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

Generic VTxxx Terminal

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

Deployment using nginx

Build the web client:

cd web
npm run build
cp -r dist /opt/pdp10-web   # or wherever you prefer

Example 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 build

Deployment using docker and docker-compose

A 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 -d

If everything goes well, the web client should be accessible at http://localhost:1992/

Thanks

  • 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

About

A simple web console for accessing an emulated PDP-10 system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published