├── Dockerfile ├── Makefile └── README.md /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | EXPOSE 5555 3 | WORKDIR /opt 4 | ADD Unix-1st-Edition-jun72 /opt/Unix-1st-Edition-jun72 5 | WORKDIR /opt/Unix-1st-Edition-jun72 6 | CMD ./simh.cfg 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all build run 2 | all: build 3 | 4 | build: Unix-1st-Edition-jun72/images/rf0.dsk 5 | docker build -t bahamat/unix-1st-ed . 6 | 7 | run: all 8 | docker run --rm -it bahamat/unix-1st-ed 9 | 10 | simhv39-0.zip: 11 | curl --progress -LOC - http://simh.trailing-edge.com/sources/simhv39-0.zip 12 | 13 | simhv/makefile: simhv39-0.zip 14 | [ -d simhv ] || mkdir simhv 15 | cd simhv; unzip ../$< 16 | touch $@ 17 | 18 | simhv/BIN/pdp11: simhv/makefile 19 | make -C simhv BIN/pdp11 20 | 21 | Unix-1st-Edition-jun72/tools/pdp11: simhv/BIN/pdp11 22 | cp $< $@ 23 | 24 | Unix-1st-Edition-jun72: 25 | git clone https://github.com/bahamat/$@ 26 | 27 | Unix-1st-Edition-jun72/images/rf0.dsk: Unix-1st-Edition-jun72 Unix-1st-Edition-jun72/tools/pdp11 28 | make -C $< 29 | 30 | distclean: 31 | $(RM) simhv39-0.zip 32 | 33 | clean: 34 | $(RM) -r Unix-1st-Edition-jun72 simhv 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unix, 1st Edition 2 | 3 | Based on the [Unix 1st Edition June 1972](https://github.com/bahamat/Unix-1st-Edition-jun72) source. 4 | 5 | ## Building 6 | 7 | You don't need to build yourself, you can just run the published Docker image. However if you do want to build it, just clone this repo and run `make`. You'll need a functioning dev environment (e.g., `build-essential`) and `unzip` in your path. 8 | 9 | ## Usage 10 | 11 | ### Interactively 12 | 13 | docker run --rm -it bahamat/unix-1st-ed 14 | 15 | ### Remotely 16 | 17 | docker run -d -P bahamat/unix-1st-ed 18 | 19 | ## Logging In 20 | 21 | Type `root` at the `login:` prompt. If you're running remotely use `docker ps` to see which IP/port to `telnet` to. 22 | 23 | Example: 24 | 25 | $ docker run -d -P bahamat/unix-1st-ed 26 | 7138370d4670dbab9535ea4bb3816b6ca6d02d31d8e531def5c8555046aa8ce9 27 | $ docker ps 28 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 29 | 7138370d4670 bahamat/unix-1st-ed "/bin/sh -c ./simh.c 25 seconds ago Up 23 seconds 0.0.0.0:32769->5555/tcp elated_bohr 30 | $ telnet localhost 32769 31 | Trying 127.0.0.1... 32 | Connected to localhost. 33 | Escape character is '^]'. 34 | 35 | 36 | Connected to the PDP-11 simulator DCI device, line 0 37 | 38 | 39 | login: root 40 | # ls 41 | bin 42 | dev 43 | etc 44 | tmp 45 | # 46 | --------------------------------------------------------------------------------