├── .editorconfig ├── .gitignore ├── README.md ├── build-emulators.sh ├── build-systems.sh ├── build-toolchains.sh ├── emulators ├── craysim │ ├── Dockerfile.debian │ ├── README.md │ └── run.sh ├── dosemu │ ├── Dockerfile.debian │ └── README.md ├── dynamips │ ├── Dockerfile.debian │ ├── README.md │ └── run.sh ├── es40 │ ├── Dockerfile.debian │ └── README.md ├── generic │ └── Dockerfile.debian ├── gxemul │ └── Dockerfile.debian ├── hercules │ ├── Dockerfile.alpine │ ├── Dockerfile.debian │ └── run.sh ├── klh10 │ ├── Dockerfile.debian │ └── run.sh ├── mame │ ├── Dockerfile.debian │ └── README.md └── simh │ ├── Dockerfile.debian │ └── run.sh ├── proprietary └── dynamips-ios │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ └── build.sh ├── systems ├── hercules-kits │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── SHA256SUMS │ ├── build.sh │ ├── common │ │ ├── tmux.conf │ │ ├── tmux.defaults │ │ ├── tmux.sh │ │ ├── tmux_loop.sh │ │ ├── tmux_main.sh │ │ └── tmux_wait.sh │ ├── download.sh │ └── extract.sh ├── its │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── build.sh │ └── run.sh ├── klh10-panda │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── SHA256SUMS │ ├── build.sh │ ├── download.sh │ └── extract.sh ├── simh-kits │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── SHA256SUMS │ ├── build.sh │ ├── download.sh │ ├── extract.sh │ ├── id32-unix-v6 │ │ └── simh.ini │ ├── id32-unix-v7 │ │ └── simh.ini │ ├── pdp11-rsts-v7 │ │ └── simh.ini │ ├── pdp11-rt11-v4 │ │ └── simh.ini │ ├── pdp11-rt11-v5 │ │ └── simh.ini │ ├── pdp11-unix-v5 │ │ └── simh.ini │ ├── pdp11-unix-v6 │ │ └── simh.ini │ ├── pdp11-unix-v7 │ │ └── simh.ini │ ├── pdp8-dms │ │ └── simh.ini │ ├── pdp8-focal │ │ └── simh.ini │ ├── pdp8-os8 │ │ └── simh.ini │ └── pdp8-tss8 │ │ └── simh.ini └── simh-os32 │ ├── .gitignore │ ├── Dockerfile.build │ ├── Dockerfile.release │ ├── README.md │ ├── SHA256SUMS │ ├── build.sh │ ├── common │ └── dummy.txt │ ├── download.sh │ └── extract.sh └── toolchains └── i370 └── Dockerfile.debian /.editorconfig: -------------------------------------------------------------------------------- 1 | # See https://editorconfig.org/ 2 | root = true 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | indent_style = tab 9 | tab_width = 8 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Docker images for retrocomputing 2 | 3 | This is set of recipes for building retrocomputing emulators as Docker images. 4 | 5 | The goal is to make retro systems easy to run and composable. 6 | 7 | ### Emulators 8 | 9 | A full build will provide you with the following emulators. 10 | 11 | | Image name | Emulator | Description | 12 | | ---------- | -------- | ----------- | 13 | | retroprom/craysim | [cray-sim](https://github.com/andrastantos/cray-sim/) | Cray PVP supercomputer simulator | 14 | | retroprom/dosemu | [dosemu2](https://github.com/dosemu2/dosemu2/) | Modernized DOS emulator | 15 | | retroprom/dynamips | [Dynamips](https://github.com/GNS3/dynamips/) | Cisco router emulator for running Cisco IOS | 16 | | retroprom/es40 | [ES40](https://github.com/retroprom/es40/) | DEC Alpha emulator named after the DS40 | 17 | | retroprom/gxemul | [GXemul](http://gavare.se/gxemul/) | Gavare's eXperimental Emulator | 18 | | retroprom/hercules | [Hercules](https://github.com/SDL-Hercules-390/hyperion/) | IBM mainframe emulator for S/360 through z/Arch | 19 | | retroprom/klh10 | [KLH-10](https://github.com/PDP-10/klh10/) | DEC PDP-10 emulator, originally by Ken L. Harenstien | 20 | | retroprom/mame | [MAME](https://github.com/mamedev/mame/) | Multi-purpose emulation framework - including some SGIs | 21 | | retroprom/simh | [Open-SIMH](https://github.com/open-simh/simh/) | Simulator for DEC and other historic systems | 22 | 23 | ### Systems 24 | 25 | We also provide scripts for building some system images. 26 | 27 | | Image name | Emulator | Machine | System | Distribution | 28 | | ---------- | -------- | ------- | ------ | ------------ | 29 | | retroprom/hercules-dosvs-5pk | Hercules | IBM S/370 | DOS/VS | 5-pack | 30 | | retroprom/hercules-mvs-ce | Hercules | IBM S/370 | MVS 3.8J | [MVS/CE](https://github.com/MVS-sysgen/sysgen) | 31 | | retroprom/hercules-mvs-tk3 | Hercules | IBM S/370 | MVS 3.8J | TK3 | 32 | | retroprom/hercules-mvs-tk4 | Hercules | IBM S/370 | MVS 3.8J | [TK4-](https://wotho.ethz.ch/tk4-/) | 33 | | retroprom/hercules-mvs-tk5 | Hercules | IBM S/370 | MVS 3.8J | [TK5](http://www.prince-webdesign.nl/tk5) | 34 | | retroprom/hercules-vm370-ce | Hercules | IBM S/370 | VM/370 | [VM/370 CE](http://www.vm370.org/) | 35 | | retroprom/its-klh10 | KLH-10 (custom) | DEC PDP-10 | MIT ITS | [ITS project](https://github.com/PDP-10/its) | 36 | | retroprom/its-simh | SIMH (custom) | DEC PDP-10 | MIT ITS | [ITS project](https://github.com/PDP-10/its) | 37 | | retroprom/klh10-panda | KLH-10 | DEC PDP-10 | TOPS-20 | [PANDA project](https://github.com/PDP-10/panda) | 38 | | retroprom/simh-id32-os32 | SIMH | Interdata 8/32 | OS/32 | [simh-os32](https://github.com/davygoat/simh-os32) | 39 | | retroprom/simh-id32-unix-v6 | SIMH | Interdata 7/32 | UNIX V6 | SIMH kit | 40 | | retroprom/simh-id32-unix-v7 | SIMH | Interdata 7/32 | UNIX V7 | SIMH kit | 41 | | retroprom/simh-pdp8-dms | SIMH | DEC PDP-8 | DMS | SIMH kit | 42 | | retroprom/simh-pdp8-focal | SIMH | DEC PDP-8 | FOCAL | SIMH kit | 43 | | retroprom/simh-pdp8-os8 | SIMH | DEC PDP-8 | OS/8 | SIMH kit | 44 | | retroprom/simh-pdp8-tss8 | SIMH | DEC PDP-8 | TSS/8 | SIMH kit | 45 | | retroprom/simh-pdp11-rsts-v7 | SIMH | DEC PDP-11/73 | RSTS/E V7 | SIMH kit | 46 | | retroprom/simh-pdp11-rt11-v4 | SIMH | DEC PDP-11/23 | RT-11 V4 | SIMH kit | 47 | | retroprom/simh-pdp11-rt11-v5 | SIMH | DEC PDP-11/23 | RT-11 V5 | SIMH kit | 48 | | retroprom/simh-pdp11-unix-v5 | SIMH | DEC PDP-11/45 | UNIX V5 | SIMH kit | 49 | | retroprom/simh-pdp11-unix-v6 | SIMH | DEC PDP-11/45 | UNIX V6 | SIMH kit | 50 | | retroprom/simh-pdp11-unix-v7 | SIMH | DEC PDP-11/45 | UNIX V7 | SIMH kit | 51 | 52 | ### Toolchains 53 | 54 | At a low priority, we package some cross toolchains for retro development. 55 | 56 | ### Quickstart 57 | 58 | The build is simple. It requires Internet access and may fail on occasion tue do upstream issues: 59 | 60 | ``` 61 | $ ./build-emulators.sh 62 | $ ./build-systems.sh 63 | ``` 64 | 65 | Once you have some images, most of them will give you an instant shell: 66 | 67 | ``` 68 | $ docker run --rm -ti retroprom/simh-pdp11-unix-v7 69 | 70 | PDP-11 simulator Open SIMH V4.1-0 Current git commit id: 09f67aa0 71 | Disabling XQ 72 | @boot 73 | New Boot, known devices are hp ht rk rl rp tm vt 74 | : rl(0,0)rl2unix 75 | mem = 177856 76 | # Restricted rights: Use, duplication, or disclosure 77 | is subject to restrictions stated in your contract with 78 | Western Electric Company, Inc. 79 | Thu Sep 22 05:47:36 EDT 1988 80 | 81 | login: root 82 | Password: 83 | You have mail. 84 | # 85 | ``` 86 | 87 | IBM mainframe images will launch TMUX and Hercules. Terminal attach must be done manually - for now. 88 | 89 | ### Technical Notes 90 | 91 | Feel free to send patches or ask questions. 92 | 93 | This is obviously a hobby project. 94 | 95 | Images are currently based on Debian (release 12/bookworm). 96 | 97 | The images use a build container to minimize image size. 98 | 99 | A simulator user called 'sim' is usually provided. 100 | 101 | Emulators are installed in /usr/local when possible. 102 | 103 | Other simulator files are located in /sim. 104 | 105 | Images should be set up to start the emulator using dumb-init. 106 | 107 | System images usually start in the foreground and require a terminal. 108 | 109 | The Docker console and 'sim' user get full control over the simulator. 110 | 111 | Console sessions are logged in with admin privileges for convenience. 112 | 113 | ### Legal 114 | 115 | This package is - for the moment at least - in the public domain. 116 | 117 | In legislatures without a public domain, CC0 may be applied instead. 118 | 119 | This software is provided **without any warranty** - express or implied. 120 | 121 | It is intended for **hobby, research and training use only**. 122 | 123 | Images built will contain **licensed materials owned by third parties**. 124 | 125 | Many of the systems provided are **limited to non-commercial use**. 126 | 127 | This package itself contains no licensed material from third parties. 128 | 129 | All users are advised to carefully analyze the legal situation. 130 | 131 | -------------------------------------------------------------------------------- /build-emulators.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Be strict 4 | set -euo pipefail 5 | 6 | # Remember root directory 7 | ROOT="$PWD" 8 | 9 | # Configuration 10 | BASE="debian:bookworm" 11 | EMULATORS="craysim dosemu dynamips es40 gxemul hercules klh10 simh" 12 | 13 | # Build each emulator 14 | for emulator in ${EMULATORS}; do 15 | # Run the build 16 | docker build \ 17 | -f emulators/${emulator}/Dockerfile.debian \ 18 | -t retroprom/${emulator}:latest \ 19 | --build-arg BASE=${BASE} \ 20 | "$@" \ 21 | emulators/${emulator} 22 | done 23 | -------------------------------------------------------------------------------- /build-systems.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | ROOT="$PWD" 6 | 7 | SYSTEMS="klh10-panda simh-kits simh-os32 hercules-kits" 8 | 9 | # Build each system by calling its scripts 10 | for system in ${SYSTEMS}; do 11 | # Change directory 12 | cd $ROOT/systems/${system} 13 | # Perform download if required 14 | if [ -x download.sh ]; then ./download.sh; fi 15 | # Perform build 16 | ./build.sh "$@" 17 | done 18 | 19 | -------------------------------------------------------------------------------- /build-toolchains.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Be strict 4 | set -euo pipefail 5 | 6 | # Remember root directory 7 | ROOT="$PWD" 8 | 9 | # Configuration 10 | BASE="debian:bookworm" 11 | TOOLCHAINS="i370" 12 | 13 | # i370 / mvscross 14 | docker build \ 15 | -f toolchains/i370/Dockerfile.debian \ 16 | -t retroprom/toolchain-i370:latest \ 17 | --build-arg BASE=retroprom/hercules-mvs-ce:latest \ 18 | --build-arg START=/sim/tmux.sh \ 19 | "$@" \ 20 | toolchains/i370 21 | 22 | -------------------------------------------------------------------------------- /emulators/craysim/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM ${BASE} AS common 5 | 6 | ARG CRAYSIM_CONFIG="" 7 | 8 | ARG CRAYSIM_GIT="https://github.com/andrastantos/cray-sim.git" 9 | ARG CRAYSIM_REV="master" 10 | 11 | ENV CRAYSIM_PKG_RUNTIME="ca-certificates dumb-init libgpm2 libncurses6" 12 | ENV CRAYSIM_PKG_BUILD="build-essential gcc g++ git-core make libboost-all-dev libgpm-dev libncurses-dev" 13 | 14 | ENV CRAYSIM_BUILD_GIT="${CRAYSIM_GIT}" 15 | ENV CRAYSIM_BUILD_REV="${CRAYSIM_REV}" 16 | 17 | RUN apt update \ 18 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${CRAYSIM_PKG_RUNTIME} \ 19 | && apt clean && rm -rf /var/lib/apt/lists/* \ 20 | && adduser --system --group --home=/sim sim 21 | 22 | FROM common as build 23 | 24 | WORKDIR /sim 25 | 26 | RUN apt update \ 27 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${CRAYSIM_PKG_BUILD} \ 28 | && apt clean && rm -rf /var/lib/apt/lists/* 29 | 30 | RUN git clone --depth 1 ${CRAYSIM_BUILD_GIT} craysim \ 31 | && cd craysim/simulator \ 32 | && make build 33 | 34 | FROM common 35 | 36 | COPY --from=build /sim /sim 37 | 38 | COPY run.sh /sim/run.sh 39 | RUN chmod 755 /sim/run.sh 40 | 41 | USER sim 42 | WORKDIR /sim 43 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 44 | CMD [ "/sim/run.sh" ] 45 | -------------------------------------------------------------------------------- /emulators/craysim/README.md: -------------------------------------------------------------------------------- 1 | ## Cray PVP simulator 2 | -------------------------------------------------------------------------------- /emulators/craysim/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Launch script for CraySim 4 | # 5 | 6 | # Be strict 7 | set -euo pipefail 8 | 9 | # Set PATH 10 | export PATH="/sim/craysim/simulator/_bin/linux_release:${PATH}" 11 | 12 | # Configure from environment 13 | export CRAYSIM_CFG="${CRAYSIM_CFG:-craysim.cfg}" 14 | 15 | # Change directory 16 | cd /sim/craysim 17 | 18 | # Execute the simulator 19 | exec cray_sim "${CRAYSIM_CFG}" 20 | -------------------------------------------------------------------------------- /emulators/dosemu/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM ${BASE} AS common 5 | 6 | ARG DOSEMU_CONFIG="" 7 | 8 | ARG DOSEMU_GIT="https://github.com/dosemu2/dosemu2.git" 9 | ARG DOSEMU_REV="devel" 10 | 11 | ENV DOSEMU_PKG_RUNTIME="ca-certificates dumb-init libsdl1.2debian libx11-6" 12 | ENV DOSEMU_PKG_BUILD="autoconf autoconf-archive automake bison build-essential gawk gcc git-core libtool make ladspa-sdk libao-dev libbsd-dev libfluidsynth-dev libgpm-dev libltdl-dev libsdl2-dev pkg-config xorg-dev" 13 | 14 | ENV DOSEMU_BUILD_CONFIG="--prefix=/usr/local ${DOSEMU_CONFIG}" 15 | ENV DOSEMU_BUILD_GIT="${DOSEMU_GIT}" 16 | ENV DOSEMU_BUILD_REV="${DOSEMU_REV}" 17 | 18 | RUN apt update \ 19 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${DOSEMU_PKG_RUNTIME} \ 20 | && apt clean && rm -rf /var/lib/apt/lists/* \ 21 | && adduser --system --group --home=/sim sim 22 | 23 | FROM common as build 24 | 25 | WORKDIR /build 26 | 27 | RUN apt update \ 28 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${DOSEMU_PKG_BUILD} \ 29 | && apt clean && rm -rf /var/lib/apt/lists/* 30 | 31 | RUN git clone --depth 1 ${DOSEMU_BUILD_GIT} dosemu \ 32 | && cd dosemu \ 33 | && git checkout ${DOSEMU_BUILD_REV} \ 34 | && ./autogen.sh \ 35 | && mkdir ../build \ 36 | && cd ../build 37 | # && ../dosemu/configure ${DOSEMU_BUILD_CONFIG} \ 38 | # && make -j1 \ 39 | # && make install 40 | 41 | #FROM common 42 | 43 | #COPY --from=build /usr/local /usr/local 44 | -------------------------------------------------------------------------------- /emulators/dosemu/README.md: -------------------------------------------------------------------------------- 1 | ## Modernized DOSEMU 2 | 3 | -------------------------------------------------------------------------------- /emulators/dynamips/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM ${BASE} AS common 5 | 6 | ARG DYNAMIPS_CONFIG="-DCMAKE_BUILD_TYPE=RelWithDebInfo" 7 | 8 | ARG DYNAMIPS_GIT="https://github.com/GNS3/dynamips.git" 9 | ARG DYNAMIPS_REV="master" 10 | 11 | ENV DYNAMIPS_PKG_RUNTIME="ca-certificates dumb-init libelf1 libpcap0.8" 12 | ENV DYNAMIPS_PKG_BUILD="build-essential cmake gcc git-core libelf-dev libpcap-dev libtool make libltdl-dev pkg-config" 13 | 14 | ENV DYNAMIPS_BUILD_CONFIG="-DCMAKE_INSTALL_PREFIX=/usr/local ${DYNAMIPS_CONFIG}" 15 | ENV DYNAMIPS_BUILD_GIT="${DYNAMIPS_GIT}" 16 | ENV DYNAMIPS_BUILD_REV="${DYNAMIPS_REV}" 17 | 18 | RUN apt update \ 19 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${DYNAMIPS_PKG_RUNTIME} \ 20 | && apt clean && rm -rf /var/lib/apt/lists/* \ 21 | && adduser --system --group --home=/sim sim 22 | 23 | FROM common as build 24 | 25 | WORKDIR /build 26 | 27 | RUN apt update \ 28 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${DYNAMIPS_PKG_BUILD} \ 29 | && apt clean && rm -rf /var/lib/apt/lists/* \ 30 | && git clone --depth 1 ${DYNAMIPS_BUILD_GIT} dynamips \ 31 | && cd dynamips \ 32 | && git checkout ${DYNAMIPS_BUILD_REV} \ 33 | && mkdir ../build \ 34 | && cd ../build \ 35 | && cmake ${DYNAMIPS_BUILD_CONFIG} ../dynamips \ 36 | && make -j4 \ 37 | && make install 38 | 39 | FROM common 40 | 41 | COPY --from=build /usr/local /usr/local 42 | 43 | WORKDIR /sim 44 | 45 | COPY run.sh . 46 | 47 | RUN chown -R sim.sim . && chmod 755 run.sh 48 | 49 | -------------------------------------------------------------------------------- /emulators/dynamips/README.md: -------------------------------------------------------------------------------- 1 | ## DynaMIPS Router Simulator 2 | -------------------------------------------------------------------------------- /emulators/dynamips/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Launch script for Dynamips 4 | # 5 | 6 | # Be strict 7 | set -euo pipefail 8 | 9 | # Run the simulator 10 | exec dynamips ${DYNAMIPS_OPTIONS} ${DYNAMIPS_IMAGE} 11 | -------------------------------------------------------------------------------- /emulators/es40/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM ${BASE} AS common 5 | 6 | ARG ES40_CONFIG="" 7 | 8 | ARG ES40_GIT="https://github.com/retroprom/es40.git" 9 | ARG ES40_REV="promovicz/master" 10 | 11 | ENV ES40_PKG_RUNTIME="ca-certificates dumb-init libsdl1.2debian libx11-6" 12 | ENV ES40_PKG_BUILD="autoconf autoconf-archive automake build-essential gcc git-core libtool make libltdl-dev libsdl1.2-dev pkg-config xorg-dev" 13 | 14 | ENV ES40_BUILD_CONFIG="--prefix=/usr/local ${ES40_CONFIG}" 15 | ENV ES40_BUILD_GIT="${ES40_GIT}" 16 | ENV ES40_BUILD_REV="${ES40_REV}" 17 | 18 | RUN apt update \ 19 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${ES40_PKG_RUNTIME} \ 20 | && apt clean && rm -rf /var/lib/apt/lists/* \ 21 | && adduser --system --group --home=/sim sim 22 | 23 | FROM common as build 24 | 25 | WORKDIR /build 26 | 27 | RUN apt update \ 28 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${ES40_PKG_BUILD} \ 29 | && apt clean && rm -rf /var/lib/apt/lists/* 30 | 31 | RUN git clone --depth 1 ${ES40_BUILD_GIT} es40 \ 32 | && cd es40 \ 33 | && git checkout ${ES40_BUILD_REV} \ 34 | && ./autogen.sh \ 35 | && mkdir ../build \ 36 | && cd ../build \ 37 | && ../es40/configure ${ES40_BUILD_CONFIG} \ 38 | && make -j1 \ 39 | && make install 40 | 41 | FROM common 42 | 43 | COPY --from=build /usr/local /usr/local 44 | -------------------------------------------------------------------------------- /emulators/es40/README.md: -------------------------------------------------------------------------------- 1 | ## ES-40 Alpha Simulator 2 | -------------------------------------------------------------------------------- /emulators/generic/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM "${BASE}" AS common 5 | 6 | ARG PACKAGES="" 7 | 8 | ENV GENERIC_PKG_RUNTIME="ca-certificates dumb-init ${PACKAGES}" 9 | 10 | RUN sed -i -e 's/ main/ main contrib non-free/g' /etc/apt/sources.list \ 11 | && apt update \ 12 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${GENERIC_PKG_RUNTIME} \ 13 | && apt clean && rm -rf /var/lib/apt/lists/* \ 14 | && adduser --system --group --home=/sim sim 15 | -------------------------------------------------------------------------------- /emulators/gxemul/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM ${BASE} AS common 5 | 6 | ARG GXEMUL_CONFIG="" 7 | 8 | ARG GXEMUL_GIT="https://github.com/retroprom/gxemul.git" 9 | ARG GXEMUL_REV="master" 10 | 11 | ENV GXEMUL_PKG_RUNTIME="ca-certificates dumb-init" 12 | ENV GXEMUL_PKG_BUILD="build-essential gcc git-core libtool make libltdl-dev" 13 | 14 | ENV GXEMUL_BUILD_CONFIG="--disable-x ${GXEMUL_CONFIG}" 15 | ENV GXEMUL_BUILD_GIT="${GXEMUL_GIT}" 16 | ENV GXEMUL_BUILD_REV="${GXEMUL_REV}" 17 | 18 | RUN apt update \ 19 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${GXEMUL_PKG_RUNTIME} \ 20 | && apt clean && rm -rf /var/lib/apt/lists/* \ 21 | && adduser --system --group --home=/sim sim 22 | 23 | FROM common as build 24 | 25 | WORKDIR /build 26 | 27 | ENV PREFIX="/usr/local" 28 | 29 | RUN apt update \ 30 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${GXEMUL_PKG_BUILD} \ 31 | && apt clean && rm -rf /var/lib/apt/lists/* \ 32 | && git clone --depth 1 ${GXEMUL_BUILD_GIT} gxemul \ 33 | && cd gxemul \ 34 | && git checkout ${GXEMUL_BUILD_REV} \ 35 | && ./configure ${GXEMUL_BUILD_CONFIG} \ 36 | && make \ 37 | && make install 38 | 39 | FROM common 40 | 41 | COPY --from=build /usr/local /usr/local 42 | -------------------------------------------------------------------------------- /emulators/hercules/Dockerfile.alpine: -------------------------------------------------------------------------------- 1 | 2 | FROM alpine:latest AS common 3 | 4 | ARG HYPERION_CONFIG="--disable-ipv6" 5 | 6 | ARG HYPERION_GIT="https://github.com/SDL-Hercules-390/hyperion.git" 7 | ARG HYPERION_REV="master" 8 | 9 | ENV HYPERION_PKG_RUNTIME="dumb-init bzip2" 10 | ENV HYPERION_PKG_BUILD="autoconf automake file gcc g++ git libtool make bzip2-dev" 11 | 12 | ENV HYPERION_BUILD_CONFIG="--prefix=/usr/local --disable-dependency-tracking ${HYPERION_CONFIG}" 13 | ENV HYPERION_BUILD_GIT="${HYPERION_GIT}" 14 | ENV HYPERION_BUILD_REV="${HYPERION_REV}" 15 | 16 | ENV LD_LIBRARY_PATH "/usr/local/lib" 17 | 18 | RUN apk add --update --virtual hyperion-runtime ${HYPERION_PKG_RUNTIME} \ 19 | && addgroup -S sim && adduser -S sim -G sim 20 | 21 | FROM common AS build 22 | 23 | WORKDIR /build 24 | 25 | RUN apk add --update --virtual hyperion-build ${HYPERION_PKG_BUILD} \ 26 | && git clone --depth 1 ${HYPERION_BUILD_GIT} hyperion \ 27 | && cd hyperion \ 28 | && git checkout ${HYPERION_BUILD_REV} \ 29 | && ./autogen.sh \ 30 | && mkdir ../build \ 31 | && cd ../build \ 32 | && ../hyperion/configure ${HYPERION_BUILD_CONFIG} \ 33 | && make -j4 \ 34 | && make install 35 | 36 | FROM common 37 | 38 | COPY --from=build /usr/local /usr/local 39 | -------------------------------------------------------------------------------- /emulators/hercules/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | # Base image 3 | ARG BASE="debian:stable" 4 | 5 | # **** Common base environment 6 | 7 | FROM ${BASE} AS common 8 | 9 | # Configuration for the Hercules/Hyperion simulator 10 | ARG HYPERION_SRC_CONFIG="--enable-regina-rexx" 11 | ARG HYPERION_SRC_GIT="https://github.com/SDL-Hercules-390/hyperion.git" 12 | ARG HYPERION_SRC_REV="master" 13 | 14 | # Configuration for the Regina Rexx interpreter 15 | ARG REGINAREXX_SRC_CONFIG="" 16 | ARG REGINAREXX_SRC_SVN="https://svn.code.sf.net/p/regina-rexx/code/interpreter/tags/3.9.3/" 17 | 18 | # Packages required during runtime 19 | ENV HYPERION_PKG_RUNTIME="ca-certificates dumb-init bzip2 git-core zlib1g" 20 | # Pacakges required for building 21 | ENV HYPERION_PKG_BUILD="autoconf automake build-essential file gcc g++ libtool make libbz2-dev libltdl-dev zlib1g-dev subversion" 22 | # Packages provided for convenience 23 | ENV HYPERION_PKG_EXTRA="b3270 c3270 s3270 htop iproute2 less nano ncat procps python3 psmisc telnet tmux vim" 24 | 25 | # Accumulate configuration 26 | ENV HYPERION_BUILD_CONFIG="--prefix=/usr/local ${HYPERION_SRC_CONFIG}" 27 | ENV HYPERION_BUILD_GIT="${HYPERION_SRC_GIT}" 28 | ENV HYPERION_BUILD_REV="${HYPERION_SRC_REV}" 29 | ENV REGINAREXX_BUILD_CONFIG="--prefix=/usr/local ${REGINAREXX_SRC_CONFIG}" 30 | ENV REGINAREXX_BUILD_SVN="${REGINAREXX_SRC_SVN}" 31 | 32 | # We beed LD_LIBRARY_PATH because of broken rpath 33 | ENV LD_LIBRARY_PATH "/usr/local/lib" 34 | 35 | # Become root in case of other defaults 36 | USER root 37 | 38 | # Install runtime dependencies and create the 'sim' user 39 | RUN apt update \ 40 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${HYPERION_PKG_RUNTIME} \ 41 | && apt clean && rm -rf /var/lib/apt/lists/* \ 42 | && adduser --system --group --home=/sim --shell=/bin/bash sim 43 | 44 | # **** Build environment 45 | 46 | FROM common as build 47 | 48 | # Clean work directory 49 | WORKDIR /build 50 | 51 | # Perform the entire build in one step 52 | # NOTE regina-rexx parallel build is broken 53 | RUN apt update \ 54 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${HYPERION_PKG_BUILD} \ 55 | && apt clean && rm -rf /var/lib/apt/lists/* \ 56 | && svn checkout --quiet ${REGINAREXX_BUILD_SVN} regina-rexx \ 57 | && cd regina-rexx \ 58 | && ./configure ${REGINAREXX_BUILD_CONFIG} \ 59 | && make \ 60 | && make install \ 61 | && cd .. \ 62 | && git clone --depth 1 ${HYPERION_BUILD_GIT} hyperion \ 63 | && cd hyperion \ 64 | && git checkout ${HYPERION_BUILD_REV} \ 65 | && ./autogen.sh \ 66 | && mkdir ../build \ 67 | && cd ../build \ 68 | && ../hyperion/configure ${HYPERION_BUILD_CONFIG} \ 69 | && make -j4 \ 70 | && make install 71 | 72 | # **** Final environment 73 | 74 | FROM common 75 | 76 | # Copy build results 77 | COPY --from=build /usr/local /usr/local 78 | 79 | # Install extra packages 80 | RUN apt update \ 81 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${HYPERION_PKG_EXTRA} \ 82 | && apt clean && rm -rf /var/lib/apt/lists/* 83 | 84 | # Install the run script 85 | COPY run.sh /sim/run.sh 86 | RUN chmod 755 /sim/run.sh 87 | 88 | # Set up for launch 89 | USER sim 90 | WORKDIR /sim 91 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 92 | CMD [ "/sim/run.sh" ] 93 | 94 | -------------------------------------------------------------------------------- /emulators/hercules/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Launch script for Hercules 4 | # 5 | 6 | # Be strict 7 | set -euo pipefail 8 | 9 | # Configure from environment 10 | export HERCULES_CONFIG="${HERCULES_CONFIG:-hercules.ini}" 11 | export HERCULES_SCRIPT="${HERCULES_SCRIPT:-hercules.rc}" 12 | export HERCULES_LOG="${HERCULES_LOG:-hercules.log}" 13 | 14 | # Say something 15 | echo "Starting Hercules..." 16 | 17 | # Run the simulator 18 | exec hercules -f "${HERCULES_CONFIG}" -r "${HERCULES_SCRIPT}" > "${HERCULES_LOG}" 19 | -------------------------------------------------------------------------------- /emulators/klh10/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | # **** Common environment 5 | 6 | FROM ${BASE} AS common 7 | 8 | # KLH-10 configuration 9 | ARG KLH10_CONFIG="" 10 | ARG KLH10_GIT="https://github.com/PDP-10/klh10.git" 11 | ARG KLH10_REV="master" 12 | 13 | # Package dependencies 14 | ENV KLH10_PKG_RUNTIME="ca-certificates dumb-init git-core libpcap0.8 libvdeplug2 vde2" 15 | ENV KLH10_PKG_BUILD="autoconf automake build-essential gcc libtool make libltdl-dev pkg-config libpcap-dev libvdeplug-dev" 16 | ENV KLH10_PKG_EXTRA="bridge-utils htop iproute2 less nano ncat procps psmisc telnet uml-utilities vim" 17 | 18 | # Build configuration 19 | ENV KLH10_BUILD_CONFIG="--bindir=/bin ${KLH10_CONFIG}" 20 | ENV KLH10_BUILD_GIT="${KLH10_GIT}" 21 | ENV KLH10_BUILD_REV="${KLH10_REV}" 22 | 23 | # Install runtime dependencies 24 | RUN apt update \ 25 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${KLH10_PKG_RUNTIME} \ 26 | && apt clean && rm -rf /var/lib/apt/lists/* \ 27 | && adduser --system --group --home=/sim sim 28 | 29 | # **** Build environment 30 | 31 | FROM common as build 32 | 33 | WORKDIR /build 34 | 35 | # Install build dependencies and build KLH-10 36 | RUN apt update \ 37 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${KLH10_PKG_BUILD} \ 38 | && apt clean && rm -rf /var/lib/apt/lists/* \ 39 | && git clone --depth 1 ${KLH10_BUILD_GIT} klh10 \ 40 | && cd klh10 \ 41 | && git checkout ${KLH10_BUILD_REV} \ 42 | && ./autogen.sh \ 43 | && mkdir ../build \ 44 | && cd ../build \ 45 | && ../klh10/configure ${KLH10_BUILD_CONFIG} \ 46 | && make -j4 -C bld-kl \ 47 | && make -j4 -C bld-ks \ 48 | && make -j4 -C bld-ks-its \ 49 | && mkdir -p /opt/klh10-kl/bin /opt/klh10-ks/bin /opt/klh10-ks-its/bin \ 50 | && make -C bld-kl install DESTDIR=/opt/klh10-kl \ 51 | && make -C bld-ks install DESTDIR=/opt/klh10-ks \ 52 | && make -C bld-ks-its install DESTDIR=/opt/klh10-ks-its 53 | 54 | # **** Final environment 55 | 56 | FROM common 57 | 58 | # Configure KLH-10 launch 59 | ENV KLH10_VARIANT="kl" 60 | ENV KLH10_STARTUP="klh10.ini" 61 | ENV KLH10_OPTIONS="" 62 | 63 | # Copy binaries from build environment 64 | COPY --from=build /opt /opt 65 | 66 | # Install extra packages 67 | RUN apt update \ 68 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${KLH10_PKG_EXTRA} \ 69 | && apt clean && rm -rf /var/lib/apt/lists/* 70 | 71 | # Install start script 72 | COPY run.sh /sim/run.sh 73 | RUN chmod 755 /sim/run.sh 74 | 75 | # Configure initial environment 76 | USER sim 77 | WORKDIR /sim 78 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 79 | CMD [ "/sim/run.sh" ] 80 | -------------------------------------------------------------------------------- /emulators/klh10/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Launch script for KLH-10 4 | # 5 | 6 | # Be strict 7 | set -euo pipefail 8 | 9 | # Determine name of executable 10 | export KLH10_BINARY="./kn10-${KLH10_VARIANT}" 11 | 12 | # Copy executables 13 | if [ ! -f "${KLH10_BINARY}" ]; then 14 | cp -r "/opt/klh10-${KLH10_VARIANT}/bin"/* . 15 | fi 16 | 17 | # Execute the emulator 18 | exec "${KLH10_BINARY}" ${KLH10_OPTIONS} "${KLH10_STARTUP}" 19 | -------------------------------------------------------------------------------- /emulators/mame/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | FROM ${BASE} AS common 5 | 6 | ARG MAME_CONFIG="" 7 | 8 | ARG MAME_GIT="https://github.com/mamedev/mame.git" 9 | ARG MAME_REV="master" 10 | 11 | ENV MAME_PKG_RUNTIME="ca-certificates dumb-init" 12 | ENV MAME_PKG_BUILD="build-essential gcc g++ git-core make python3 libsdl2-dev libsdl2-ttf-dev libfontconfig-dev libpulse-dev qtbase5-dev qtbase5-dev-tools qtchooser qt5-qmake" 13 | 14 | ENV MAME_BUILD_GIT="${MAME_GIT}" 15 | ENV MAME_BUILD_REV="${MAME_REV}" 16 | 17 | RUN apt update \ 18 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${MAME_PKG_RUNTIME} \ 19 | && apt clean && rm -rf /var/lib/apt/lists/* \ 20 | && adduser --system --group --home=/sim sim 21 | 22 | FROM common as build 23 | 24 | WORKDIR /build 25 | 26 | RUN apt update \ 27 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${MAME_PKG_BUILD} \ 28 | && apt clean && rm -rf /var/lib/apt/lists/* 29 | 30 | RUN git clone --depth 1 ${MAME_BUILD_GIT} mame 31 | #RUN cd mame && make -j2 32 | 33 | #FROM common 34 | 35 | #COPY --from=build /sim /sim 36 | -------------------------------------------------------------------------------- /emulators/mame/README.md: -------------------------------------------------------------------------------- 1 | ## MAME Multi-purpose Emulation Framework 2 | 3 | -------------------------------------------------------------------------------- /emulators/simh/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | # Base image 3 | ARG BASE="debian:stable" 4 | 5 | # **** Common environment 6 | 7 | FROM ${BASE} AS common 8 | 9 | # SIMH configuration 10 | ARG SIMH_CONFIG="TESTS=0" 11 | ARG SIMH_GIT="https://github.com/open-simh/simh.git" 12 | ARG SIMH_REV="master" 13 | 14 | # Package dependencies 15 | ENV SIMH_PKG_RUNTIME="ca-certificates dumb-init git-core libedit2 libncurses6 libpcap-dev libpcre3 libpng16-16 libsdl2-2.0-0 libvdeplug2" 16 | ENV SIMH_PKG_BUILD="build-essential gcc cmake make libedit-dev libncurses-dev libpcap-dev libpcre3-dev libpng-dev libsdl2-dev libsdl2-ttf-dev libvdeplug-dev" 17 | ENV SIMH_PKG_EXTRA="bridge-utils htop iproute2 less nano ncat procps psmisc rsh-client telnet uml-utilities vim" 18 | 19 | # Build configuration 20 | ENV SIMH_BUILD_CONFIG="PREFIX=/usr/local ${SIMH_SELECT} ${SIMH_CONFIG}" 21 | ENV SIMH_BUILD_GIT="${SIMH_GIT}" 22 | ENV SIMH_BUILD_REV="${SIMH_REV}" 23 | 24 | # Install runtime dependencies 25 | RUN apt update \ 26 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${SIMH_PKG_RUNTIME} \ 27 | && apt clean && rm -rf /var/lib/apt/lists/* \ 28 | && adduser --system --group --home=/sim sim 29 | 30 | # **** Build environment 31 | 32 | FROM common AS build 33 | 34 | WORKDIR /build 35 | 36 | # Install build dependencies and build SIMH 37 | RUN apt update \ 38 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${SIMH_PKG_BUILD} \ 39 | && apt clean && rm -rf /var/lib/apt/lists/* \ 40 | && git clone --depth 1 ${SIMH_BUILD_GIT} simh \ 41 | && cd simh \ 42 | && git checkout ${SIMH_BUILD_REV} \ 43 | && make -j2 ${SIMH_BUILD_CONFIG} 44 | 45 | # Install binaries 46 | RUN cd simh/BIN && cp `ls -p . | grep -v '/$'` /usr/local/bin 47 | 48 | # **** Final environment 49 | 50 | FROM common 51 | 52 | # Copy binaries from build environment 53 | COPY --from=build /usr/local /usr/local 54 | 55 | # Environment for SIMH launcher 56 | ENV SIMH_SIMULATOR="pdp11" 57 | ENV SIMH_OPTIONS="" 58 | 59 | # Install extra packages 60 | RUN apt update \ 61 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${SIMH_PKG_EXTRA} \ 62 | && apt clean && rm -rf /var/lib/apt/lists/* 63 | 64 | # Install start script 65 | COPY run.sh /sim/run.sh 66 | RUN chmod 755 /sim/run.sh 67 | 68 | # Configure initial environment 69 | USER sim 70 | WORKDIR /sim 71 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 72 | CMD [ "/sim/run.sh" ] 73 | 74 | -------------------------------------------------------------------------------- /emulators/simh/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Launch script for SIMH 4 | # 5 | 6 | # Be strict 7 | set -euo pipefail 8 | 9 | # Configure from environment 10 | export SIMH_SIMULATOR="${SIMH_SIMULATOR:-pdp11}" 11 | 12 | # Execute the simulator 13 | exec "${SIMH_SIMULATOR}" "${SIMH_OPTIONS}" "${@}" 14 | -------------------------------------------------------------------------------- /proprietary/dynamips-ios/.gitignore: -------------------------------------------------------------------------------- 1 | images 2 | -------------------------------------------------------------------------------- /proprietary/dynamips-ios/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="retroprom/dynamips" 3 | 4 | FROM ${BASE} 5 | 6 | ARG OPTIONS="-P 7200" 7 | ARG IMAGE="c7200-jk9s-mz.124-13b.bin" 8 | 9 | ENV DYNAMIPS_IMAGE="${IMAGE}" 10 | ENV DYNAMIPS_OPTIONS="${OPTIONS}" 11 | 12 | WORKDIR /sim 13 | COPY *.bin /sim/ 14 | COPY *.md5 /sim/ 15 | RUN chown -R sim:sim /sim && chmod 755 run.sh 16 | 17 | USER sim 18 | WORKDIR /sim 19 | CMD ./run.sh 20 | -------------------------------------------------------------------------------- /proprietary/dynamips-ios/README.md: -------------------------------------------------------------------------------- 1 | ## Cisco IOS running on Dynamips 2 | -------------------------------------------------------------------------------- /proprietary/dynamips-ios/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | time docker build \ 4 | images/ios-1700 \ 5 | -f Dockerfile \ 6 | -t retroprom/cisco-1700:latest \ 7 | --build-arg OPTIONS="-P 1700 -t 1720" \ 8 | --build-arg IMAGE="c1700-k9o3sy7-mz.123-23.bin" \ 9 | "$@" 10 | 11 | time docker build \ 12 | images/ios-2600 \ 13 | -f Dockerfile \ 14 | -t retroprom/cisco-2600:latest \ 15 | --build-arg OPTIONS="-P 2600 -t 2620 -r 64" \ 16 | --build-arg IMAGE="c2600-ik9o3s3-mz.123-23.bin" \ 17 | "$@" 18 | 19 | time docker build \ 20 | images/ios-2600xm \ 21 | -f Dockerfile \ 22 | -t retroprom/cisco-2600xm:latest \ 23 | --build-arg OPTIONS="-P 2600 -t 2650xm -r 128" \ 24 | --build-arg IMAGE="c2600-adventerprisek9-mz.124-17.bin" \ 25 | "$@" 26 | 27 | time docker build \ 28 | images/ios-2691 \ 29 | -f Dockerfile \ 30 | -t retroprom/cisco-2691:latest \ 31 | --build-arg OPTIONS="-P 2691 -r 128" \ 32 | --build-arg IMAGE="c2691-adventerprisek9_sna-mz.124-13b.bin" \ 33 | "$@" 34 | 35 | time docker build \ 36 | images/ios-3620 \ 37 | -f Dockerfile \ 38 | -t retroprom/cisco-3620:latest \ 39 | --build-arg OPTIONS="-P 3600 -t 3620 -r 64" \ 40 | --build-arg IMAGE="c3620-ik9s-mz.122-40a.bin" \ 41 | "$@" 42 | 43 | time docker build \ 44 | images/ios-3640 \ 45 | -f Dockerfile \ 46 | -t retroprom/cisco-3640:latest \ 47 | --build-arg OPTIONS="-P 3600 -t 3640 -r 128" \ 48 | --build-arg IMAGE="c3640-jk9s-mz.124-16.bin" \ 49 | "$@" 50 | 51 | time docker build \ 52 | images/ios-3660 \ 53 | -f Dockerfile \ 54 | -t retroprom/cisco-3660:latest \ 55 | --build-arg OPTIONS="-P 3600 -t 3660 -r 128" \ 56 | --build-arg IMAGE="c3660-ik9o3s-mz.124-13b.bin" \ 57 | "$@" 58 | 59 | time docker build \ 60 | images/ios-7200 \ 61 | -f Dockerfile \ 62 | -t retroprom/cisco-7200:latest \ 63 | --build-arg OPTIONS="-P 7200 -t npe-400 -r 128" \ 64 | --build-arg IMAGE="c7200-jk9s-mz.124-13b.bin" \ 65 | "$@" 66 | 67 | -------------------------------------------------------------------------------- /systems/hercules-kits/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | download 3 | -------------------------------------------------------------------------------- /systems/hercules-kits/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="retroprom/hercules:latest" 3 | 4 | FROM ${BASE} 5 | 6 | USER root 7 | 8 | ADD / /sim/ 9 | 10 | RUN chown -R sim:sim /sim/ 11 | 12 | USER sim 13 | WORKDIR /sim 14 | CMD [ "/sim/tmux.sh" ] 15 | -------------------------------------------------------------------------------- /systems/hercules-kits/README.md: -------------------------------------------------------------------------------- 1 | ## Hercules System Kits 2 | 3 | These images contain various system kits for Hercules. 4 | -------------------------------------------------------------------------------- /systems/hercules-kits/SHA256SUMS: -------------------------------------------------------------------------------- 1 | ed205f88f2ddf537de9b3343491d6f6df885e332f44b84b662a5fd948cf554f3 download/vm370-ce/VM370CE.V1.R1.1.zip 2 | 7772e914171409cc50b4e3d28d4fb3970a4d1fb347c43688092b667d35d68c5e download/vm370-ce/VM370CE.V1.R1.2.zip 3 | 0d134fe3b6249414e65084c732c2c24e83ef9e855bbc27e32aad5512c7d60937 download/mvs-tk4/tk4-source.zip 4 | b38adc4e5f451314e48d5348d9c36070c88da2ea87eb094735feee29ff7d2257 download/mvs-tk4/tk4-_v1.00_current.zip 5 | 20e357ea9762e2f212ad4337e7d33820b6285a8e66d257f98d5becaca22d5d66 download/mvs-tk4/tk4-cbt.zip 6 | 0c3cfb5ff04c2ec232ab736e115350c6e85bf57e855eb3fe312ae0cd5e6f412f download/mvs-tk4/MVS_TK4-_v1.00_Users_Manual.pdf 7 | 8a54f1f58edeb648cd2ded65869d9152e4b092b698bc6ccc4f853692ccf70575 download/mvs-ce/MVSCE.release.v1.0.6.tar 8 | e92c4fff307e6200b67a208ffddf46a294a0d15ee601f6f387e6a04585dd812a download/vm370-4pk/mcat01.3350.zip 9 | 58455a29678b99098335010297032c3300b506977cb7158e7f949afeb93070b9 download/vm370-4pk/vm3350-3-cckd.zip 10 | 9e4261a98f35c0e6aff98875b6251a6696d56c9f74df366ba368d8bd99e1ccf8 download/vm370-4pk/control.zip 11 | a202a07cfd3dc14158cc292e7f43e3af363b0a1f373e6edab7cb01c1ebf0507e download/vm370-4pk/vm3350-4-cckd.zip 12 | 05a9f9be9e9ba37f0e480722613598001a29e7dbabb10ed6b43e69a525497611 download/vm370-4pk/sysres.3350.zip 13 | 0127f969e58c61cb8c312718963f189dd7ee6b979037b3855b6701bee1e5e988 download/vm370-4pk/vm3350-1-cckd.zip 14 | 9fbdc7a6295b89445b59260761fb5c90b895b44eac79e5f79f2155822ad1c967 download/vm370-4pk/vm3350-2-cckd.zip 15 | a98c490bcf3e794d7de18778a5cb30ef54b74ca68e431e94dbb54514669910a6 download/dosvs-5pk/DOSVS_5Pack_V1.0-full.zip 16 | a6bfd2620a34ab2a4d855340e0b77005d9bb0a85d9f66dc4e659c081a679b0b6 download/mvs-tk3/MVS_Turnkey_Volker_V3.zip 17 | 65c7ba613c22ae457882e6cbfd2624202d17917a5b0970284a9a4d9764f0f727 download/mvs-tk5/mvs-tk5.zip 18 | 91f875177e7496e20403a1642149443eb5539dfdd7ade1246469d4f471b2a53c download/mvs-tk5/srccbt.zip 19 | -------------------------------------------------------------------------------- /systems/hercules-kits/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ./extract.sh 6 | 7 | # DOS/VS 5-pack 8 | if [ -d build/dosvs-5pk ]; then 9 | docker build build/dosvs-5pk -f Dockerfile -t retroprom/hercules-dosvs-5pk:latest "$@" 10 | fi 11 | 12 | # MVS TK3 13 | if [ -d build/mvs-tk3 ]; then 14 | docker build build/mvs-tk3 -f Dockerfile -t retroprom/hercules-mvs-tk3:latest "$@" 15 | fi 16 | 17 | # MVS TK4 18 | if [ -d build/mvs-tk4 ]; then 19 | docker build build/mvs-tk4 -f Dockerfile -t retroprom/hercules-mvs-tk4:latest "$@" 20 | fi 21 | 22 | # MVS TK5 23 | if [ -d build/mvs-tk5 ]; then 24 | docker build build/mvs-tk5 -f Dockerfile -t retroprom/hercules-mvs-tk5:latest "$@" 25 | fi 26 | 27 | # MVS CE 28 | if [ -d build/mvs-ce-v1.0.6 ]; then 29 | docker build build/mvs-ce-v1.0.6 -f Dockerfile -t retroprom/hercules-mvs-ce:v1.0.6 "$@" 30 | docker tag retroprom/hercules-mvs-ce:v1.0.6 retroprom/hercules-mvs-ce:latest 31 | fi 32 | 33 | # VM/370 CE 34 | if [ -d build/vm370-ce-v1-r1.1 ]; then 35 | docker build build/vm370-ce-v1-r1.1 -f Dockerfile -t retroprom/hercules-vm370-ce:v1-r1.1 "$@" 36 | docker tag retroprom/hercules-vm370-ce:v1-r1.1 retroprom/hercules-vm370-ce:latest 37 | fi 38 | if [ -d build/vm370-ce-v1-r1.2 ]; then 39 | docker build build/vm370-ce-v1-r1.2 -f Dockerfile -t retroprom/hercules-vm370-ce:v1-r1.2 "$@" 40 | docker tag retroprom/hercules-vm370-ce:v1-r1.2 retroprom/hercules-vm370-ce:latest 41 | fi 42 | -------------------------------------------------------------------------------- /systems/hercules-kits/common/tmux.conf: -------------------------------------------------------------------------------- 1 | # Empty default configuration for tmux-based images 2 | -------------------------------------------------------------------------------- /systems/hercules-kits/common/tmux.defaults: -------------------------------------------------------------------------------- 1 | # Base configuration for tmux 2 | 3 | # Allow respawn of the current pane 4 | bind R respawn-pane 5 | # Allow killing the while session 6 | bind K kill-session 7 | 8 | # Pane movement using vim keys 9 | bind -n M-h select-pane -L 10 | bind -n M-j select-pane -D 11 | bind -n M-k select-pane -U 12 | bind -n M-l select-pane -R 13 | 14 | # Pane movement using cursor keys 15 | bind -n 'M-Left' select-pane -L 16 | bind -n 'M-Down' select-pane -D 17 | bind -n 'M-Up' select-pane -U 18 | bind -n 'M-Right' select-pane -R 19 | -------------------------------------------------------------------------------- /systems/hercules-kits/common/tmux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Start script for TMUX sessions 4 | # 5 | # This script can start a TMUX session in various situations 6 | # including command-line use, interactive Docker launches and 7 | # background launches in containers or as a service. 8 | # 9 | # The script will stay in the foreground so that containers 10 | # and service managers can treat it as a blocking child. 11 | # 12 | # TMUX session naming should prevent duplicate session in 13 | # most cases, but this is not safe. Care must therefore 14 | # be taken not to use this script concurrently, which is 15 | # already the case for container and service launches. 16 | # 17 | 18 | # Be strict 19 | set -euo pipefail 20 | trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR 21 | 22 | # Switch to sim directory 23 | SELF="$(type -p "$0")" 24 | ROOT="$(dirname "${SELF}")" 25 | cd "${ROOT}" 26 | 27 | # Configure from environment 28 | export TMUX_SESSION="${TMUX_SESSION:-main}" 29 | export TMUX_PROGRAM="${TMUX_PROGRAM:-/sim/run.sh}" 30 | export TMUX_CONFIG="${TMUX_CONFIG:-/sim/tmux.conf}" 31 | export TMUX_DEFAULTS="${TMUX_DEFAULTS:-/sim/tmux.defaults}" 32 | export TMUX_WIDTH="${TMUX_WIDTH:-80}" 33 | export TMUX_HEIGHT="${TMUX_HEIGHT:-25}" 34 | 35 | # Generate startup script 36 | START="${HOME}/.tmux.${TMUX_SESSION}.start" 37 | cat > "${START}" < unattended/mode 46 | mv mvs run.sh 47 | fi 48 | 49 | # MVS TK5 50 | if [ -e $DIST/mvs-tk5/mvs-tk5.zip ]; then 51 | enter mvs-tk5 52 | unzip_unroot $DIST/mvs-tk5/mvs-tk5.zip mvs-tk5 53 | unzip -uo $DIST/mvs-tk5/srccbt.zip 54 | rm -rf hercules/* 55 | mv mvs_ipl run.sh 56 | rm mvs mvs_osx *.bat 57 | fi 58 | 59 | # MVS CE 60 | if [ -e $DIST/mvs-ce/MVSCE.release.v1.0.6.tar ]; then 61 | enter mvs-ce-v1.0.6 62 | tar xfv $DIST/mvs-ce/MVSCE.release.v1.0.6.tar 63 | mv MVSCE/* . 64 | rmdir MVSCE 65 | rm start_mvs.sh 66 | mv conf/local.cnf hercules.ini 67 | mv conf/mvsce.rc hercules.rc 68 | rmdir conf 69 | fi 70 | 71 | # VM/370 CE 72 | if [ -e $DIST/vm370-ce/VM370CE.V1.R1.1.zip ]; then 73 | enter vm370-ce-v1-r1.1 74 | unzip_unroot $DIST/vm370-ce/VM370CE.V1.R1.1.zip VM370CE.V1.R1.1 75 | rm -rf WC3270 log.txt 76 | rm vm370ce.sh vm370ce.cmd 77 | mv vm370ce.conf hercules.ini 78 | fi 79 | if [ -e $DIST/vm370-ce/VM370CE.V1.R1.2.zip ]; then 80 | enter vm370-ce-v1-r1.2 81 | unzip_unroot $DIST/vm370-ce/VM370CE.V1.R1.2.zip VM370CE.V1.R1.2 82 | rm -rf WC3270 log.txt 83 | rm vm370ce.sh vm370ce.cmd 84 | mv vm370ce.conf hercules.ini 85 | fi 86 | 87 | # Fix script permissions 88 | cd $ROOT 89 | chmod +x build/*/*.sh 90 | -------------------------------------------------------------------------------- /systems/its/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/retroprom/docker/db5b5de57068e8f92307384bec5d42eb24adb0b6/systems/its/.gitignore -------------------------------------------------------------------------------- /systems/its/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | 4 | # **** Common environment 5 | 6 | FROM ${BASE} AS common 7 | 8 | # ITS configuration 9 | ARG ITS_CONFIG="" 10 | ARG ITS_TARGET="klh10" 11 | ARG ITS_GIT="https://github.com/PDP-10/its.git" 12 | ARG ITS_REV="master" 13 | 14 | # Package dependencies 15 | ENV ITS_PKG_RUNTIME="ca-certificates dumb-init git-core libncurses5 libpcap0.8 libvdeplug2 vde2" 16 | ENV ITS_PKG_BUILD="autoconf automake build-essential expect gcc libtool make libltdl-dev libncurses5-dev pkg-config libpcap-dev libvdeplug-dev" 17 | ENV ITS_PKG_EXTRA="bridge-utils htop iproute2 less nano ncat procps psmisc telnet uml-utilities vim" 18 | 19 | # Build configuration 20 | ENV ITS_BUILD_CONFIG="--bindir=/bin ${ITS_CONFIG}" 21 | ENV ITS_BUILD_TARGET="${ITS_TARGET}" 22 | ENV ITS_BUILD_GIT="${ITS_GIT}" 23 | ENV ITS_BUILD_REV="${ITS_REV}" 24 | 25 | # Install runtime dependencies 26 | RUN apt update \ 27 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${ITS_PKG_RUNTIME} \ 28 | && apt clean && rm -rf /var/lib/apt/lists/* \ 29 | && adduser --system --group --home=/sim sim 30 | 31 | # **** Build environment 32 | 33 | FROM common as build 34 | 35 | WORKDIR /build 36 | 37 | # Install build dependencies and build KLH-10 38 | RUN apt update \ 39 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${ITS_PKG_BUILD} \ 40 | && apt clean && rm -rf /var/lib/apt/lists/* \ 41 | && git clone --depth 1 ${ITS_BUILD_GIT} its \ 42 | && cd its \ 43 | && git checkout ${ITS_BUILD_REV} \ 44 | && make EMULATOR=${ITS_BUILD_TARGET} 45 | 46 | # **** Final environment 47 | 48 | FROM common 49 | 50 | # Configure ITS launch 51 | ENV ITS_OPTIONS="${ITS_TARGET}" 52 | 53 | # Copy binaries from build environment 54 | COPY --from=build /build/its /sim 55 | RUN chown -R sim:sim /sim 56 | 57 | # Install extra packages 58 | RUN apt update \ 59 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${ITS_PKG_EXTRA} \ 60 | && apt clean && rm -rf /var/lib/apt/lists/* 61 | 62 | # Install start script 63 | COPY run.sh /sim/run.sh 64 | RUN chmod 755 /sim/run.sh 65 | 66 | # Configure initial environment 67 | USER sim 68 | WORKDIR /sim 69 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 70 | CMD [ "/sim/run.sh" ] 71 | -------------------------------------------------------------------------------- /systems/its/README.md: -------------------------------------------------------------------------------- 1 | ## ITS on several different simulators 2 | 3 | These kits do not use the shared emulator images because ITS has its own build. 4 | 5 | The build is slow due to terminal rate limiting, so it is disabled by default. 6 | -------------------------------------------------------------------------------- /systems/its/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | docker build . -f Dockerfile \ 6 | -t retroprom/klh10-its:latest \ 7 | --build-arg ITS_TARGET=klh10 \ 8 | "$@" 9 | 10 | docker build . -f Dockerfile \ 11 | -t retroprom/simh-its:latest \ 12 | --build-arg ITS_TARGET=simh \ 13 | "$@" 14 | 15 | -------------------------------------------------------------------------------- /systems/its/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Launch script for ITS 4 | # 5 | 6 | # Be strict 7 | set -euo pipefail 8 | 9 | # Execute the emulator 10 | exec ./start "${ITS_OPTIONS}" 11 | -------------------------------------------------------------------------------- /systems/klh10-panda/.gitignore: -------------------------------------------------------------------------------- 1 | panda-dist 2 | panda-dist.tar.gz 3 | 4 | -------------------------------------------------------------------------------- /systems/klh10-panda/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="retroprom/klh10" 3 | 4 | FROM ${BASE} 5 | 6 | ENV KLH10_VARIANT="kl" 7 | ENV KLH10_STARTUP="klt20.ini" 8 | 9 | USER root 10 | WORKDIR /sim 11 | 12 | COPY RH20.RP07.1 . 13 | COPY boot.sav . 14 | COPY klt20.ini . 15 | 16 | RUN chown -R sim:sim /sim 17 | 18 | USER sim 19 | -------------------------------------------------------------------------------- /systems/klh10-panda/README.md: -------------------------------------------------------------------------------- 1 | ## KLH-10 running Panda TOPS-20 2 | -------------------------------------------------------------------------------- /systems/klh10-panda/SHA256SUMS: -------------------------------------------------------------------------------- 1 | e29c68e9d34814f8d4f420310fdb9d5cb70a99bf3bde9f0d65304bbd959273ac panda-dist.tar.gz 2 | -------------------------------------------------------------------------------- /systems/klh10-panda/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ./extract.sh 6 | 7 | docker build panda-dist -f Dockerfile -t retroprom/klh10-panda "$@" 8 | 9 | -------------------------------------------------------------------------------- /systems/klh10-panda/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | wget -c -O panda-dist.tar.gz http://panda.trailing-edge.com/panda-dist.tar.gz 6 | 7 | sha256sum --check SHA256SUMS 8 | 9 | -------------------------------------------------------------------------------- /systems/klh10-panda/extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | rm -rf panda-dist 6 | 7 | tar xvzf panda-dist.tar.gz panda-dist/README panda-dist/RH20.RP07.1 panda-dist/boot.sav panda-dist/mtboot.sav panda-dist/klt20.ini 8 | 9 | -------------------------------------------------------------------------------- /systems/simh-kits/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | download 3 | -------------------------------------------------------------------------------- /systems/simh-kits/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="retroprom/simh:latest" 3 | 4 | FROM ${BASE} 5 | 6 | ARG SIMULATOR="pdp11" 7 | 8 | # Override simulator 9 | ENV SIMH_SIMULATOR="${SIMULATOR}" 10 | 11 | # Deploy provided files 12 | COPY * /sim/ 13 | USER root 14 | RUN chown -R sim:sim /sim 15 | 16 | # Run as a user 17 | USER sim 18 | WORKDIR /sim 19 | 20 | # Use dumb-init and start our script 21 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 22 | CMD [ "/sim/run.sh" ] 23 | 24 | -------------------------------------------------------------------------------- /systems/simh-kits/README.md: -------------------------------------------------------------------------------- 1 | ## SIMH Software Kits 2 | 3 | These images contain some of the software kits provided by Bob Supnik. 4 | -------------------------------------------------------------------------------- /systems/simh-kits/SHA256SUMS: -------------------------------------------------------------------------------- 1 | 875fe94acf3b0a54bc927c8c507cd83c1060f671ce01d38f1d0235d64f8812d1 download/uv5swre.zip 2 | 7bb16343d280a888bbc387719e8e7a5c5c4aef0af368b0e9ef903aa692a26b91 download/uv6swre.zip 3 | 849138fba585723dff7c346d4f5ab3eb3b19dfafcd073ce877cbc099349eb8b6 download/uv7swre.zip 4 | 041310c7c09aee899f0d74cba8f5a734ebd0a5f50ce5dd00ebdfdadbe29ecc01 download/dms8.zip 5 | 94f92e4e0350bfb6eeeb34d5fabcd94e0243a454fbeb72d19cdca113a30cc415 download/foclswre.tar.Z 6 | f9dcc83c6ad464cade1b8235651da64148446140381254082c4c107ce7ceed5c download/iu6swre.zip 7 | 9118d6b05f73392f87815544d6a0f8ae044974d10229beb8cf168b789b02d9b5 download/iu7swre.zip 8 | 62f54a4f63b33e95daff821b453ded63e710da1d905b1a5f74ba052d6446b072 download/os8swre.tar.Z 9 | c392c5d3000b9cc0b6ddf393ae1f18592f6a676f561ce4fa04b7b9545c337d33 download/rdosswre.tar.Z 10 | 678d256a7756bd967d3f8f10001e91e7568ebc1ccd63da93e19b9220562e471e download/rstsv7gen.tar.Z 11 | 23e6ff60597ebd5946cf2eb748a4294e736e33c49033a186997697cfab436069 download/rstsv7swre.tar.Z 12 | f4338a7dffb0ce74e06e91219d1e95cd300ff9ea7236785f5b8362f08b06821d download/rt11swre.tar.Z 13 | 9fdad10969f1f391b13d9d97aa8fc1aa8fcb44472dac363d23eb2d31500207bc download/rtv53swre.tar.Z 14 | eecfbc23d0837c5dbe4531a3a02ac3e5d71983700a53e616722d56dc178bced7 download/tss8.zip 15 | 875fe94acf3b0a54bc927c8c507cd83c1060f671ce01d38f1d0235d64f8812d1 download/uv5swre.zip 16 | 7bb16343d280a888bbc387719e8e7a5c5c4aef0af368b0e9ef903aa692a26b91 download/uv6swre.zip 17 | 849138fba585723dff7c346d4f5ab3eb3b19dfafcd073ce877cbc099349eb8b6 download/uv7swre.zip 18 | f9baaf2dfadca5c23187b5f45ea34c0b770ff456a3d587071940bb7841956795 download/zrdos75.zip 19 | -------------------------------------------------------------------------------- /systems/simh-kits/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ./extract.sh 6 | 7 | docker build build/id32-unix-v6 -f Dockerfile -t retroprom/simh-id32-unix-v6 --build-arg SIMULATOR=id32 "$@" 8 | docker build build/id32-unix-v7 -f Dockerfile -t retroprom/simh-id32-unix-v7 --build-arg SIMULATOR=id32 "$@" 9 | docker build build/pdp8-dms -f Dockerfile -t retroprom/simh-pdp8-dms --build-arg SIMULATOR=pdp8 "$@" 10 | docker build build/pdp8-focal -f Dockerfile -t retroprom/simh-pdp8-focal --build-arg SIMULATOR=pdp8 "$@" 11 | docker build build/pdp8-os8 -f Dockerfile -t retroprom/simh-pdp8-os8 --build-arg SIMULATOR=pdp8 "$@" 12 | docker build build/pdp8-tss8 -f Dockerfile -t retroprom/simh-pdp8-tss8 --build-arg SIMULATOR=pdp8 "$@" 13 | docker build build/pdp11-rsts-v7 -f Dockerfile -t retroprom/simh-pdp11-rsts-v7 "$@" 14 | docker build build/pdp11-rt11-v4 -f Dockerfile -t retroprom/simh-pdp11-rt11-v4 "$@" 15 | docker build build/pdp11-rt11-v5 -f Dockerfile -t retroprom/simh-pdp11-rt11-v5 "$@" 16 | docker build build/pdp11-unix-v5 -f Dockerfile -t retroprom/simh-pdp11-unix-v5 "$@" 17 | docker build build/pdp11-unix-v6 -f Dockerfile -t retroprom/simh-pdp11-unix-v6 "$@" 18 | docker build build/pdp11-unix-v7 -f Dockerfile -t retroprom/simh-pdp11-unix-v7 "$@" 19 | 20 | -------------------------------------------------------------------------------- /systems/simh-kits/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | get() { 6 | wget -c -O download/$1 http://simh.trailing-edge.com/kits/$1 7 | } 8 | 9 | mkdir -p download 10 | 11 | # DEC RSTS/E 12 | get rstsv7gen.tar.Z 13 | get rstsv7swre.tar.Z 14 | # DEC RT-11 15 | get rt11swre.tar.Z 16 | get rtv53swre.tar.Z 17 | # PDP-11 UNIX (Caldera-licensed) 18 | get uv5swre.zip 19 | get uv6swre.zip 20 | get uv7swre.zip 21 | # DEC PDP-8 software 22 | get foclswre.tar.Z 23 | get os8swre.tar.Z 24 | get tss8.zip 25 | get dms8.zip 26 | # Data General RDOS 27 | get rdosswre.tar.Z 28 | get zrdos75.zip 29 | # Interdata UNIX 30 | get iu6swre.zip 31 | get iu7swre.zip 32 | 33 | sha256sum -c SHA256SUMS 34 | 35 | -------------------------------------------------------------------------------- /systems/simh-kits/extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ROOT=$PWD 6 | DIST=$PWD/download 7 | 8 | sha256sum -c SHA256SUMS 9 | 10 | rm -rf build 11 | 12 | enter() { 13 | echo Extracting for $1... 14 | mkdir -p $ROOT/build/$1 15 | cp -r $ROOT/$1/* $ROOT/build/$1 16 | cd $ROOT/build/$1 17 | } 18 | 19 | # DEC PDP-8 20 | enter pdp8-dms 21 | unzip -u -b $DIST/dms8.zip 22 | enter pdp8-focal 23 | tar xfvz $DIST/foclswre.tar.Z 24 | enter pdp8-os8 25 | tar xfvz $DIST/os8swre.tar.Z 26 | enter pdp8-tss8 27 | unzip -u -b $DIST/tss8.zip 28 | 29 | # DEC PDP-11 30 | enter pdp11-rsts-v7 31 | tar xfvz $DIST/rstsv7gen.tar.Z 32 | tar xfvz $DIST/rstsv7swre.tar.Z 33 | enter pdp11-rt11-v4 34 | tar xfvz $DIST/rt11swre.tar.Z 35 | enter pdp11-rt11-v5; 36 | tar xfvz $DIST/rtv53swre.tar.Z 37 | enter pdp11-unix-v5; 38 | unzip -u -b $DIST/uv5swre.zip 39 | enter pdp11-unix-v6; 40 | unzip -u -b $DIST/uv6swre.zip 41 | enter pdp11-unix-v7; 42 | unzip -u -b $DIST/uv7swre.zip 43 | 44 | # Interdata 32 45 | enter id32-unix-v6 46 | unzip -u -b $DIST/iu6swre.zip 47 | enter id32-unix-v7 48 | unzip -u -b $DIST/iu7swre.zip 49 | -------------------------------------------------------------------------------- /systems/simh-kits/id32-unix-v6/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu 732 3 | set cpu 256k 4 | set cpu idle 5 | # devices 6 | set ttp enable 7 | set lpt enable 8 | set dp enable 9 | set dm enable 10 | set fd enable 11 | set mt enable 12 | set pas enable 13 | set pas dev=12 14 | set pas lines=8 15 | set pt enable 16 | # serial 17 | attach pas 23 18 | # disks 19 | attach -e dp0 iu6_dp0.dsk 20 | # startup and login 21 | expect "?" send "unix\r"; continue 22 | expect "login: " send "root\r"; continue 23 | # go 24 | boot dp0 25 | -------------------------------------------------------------------------------- /systems/simh-kits/id32-unix-v7/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu 732 3 | set cpu 256k 4 | set cpu idle 5 | # devices 6 | set ttp enable 7 | set lpt enable 8 | set dp enable 9 | set dm enable 10 | set fd enable 11 | set mt enable 12 | set pas enable 13 | set pas dev=12 14 | set pas lines=8 15 | set pt enable 16 | # serial 17 | attach pas 23 18 | # disks 19 | attach -e dp0 iu7_dp0.dsk 20 | attach -e dp1 iu7_dp1.dsk 21 | # startup and login 22 | expect ":" send "dsk(1,0)unix\r"; continue 23 | expect "#" send "\x04"; continue 24 | expect "login: " send "root\r"; continue 25 | expect "Password:" send "root\r"; continue 26 | # go 27 | boot dp0 28 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp11-rsts-v7/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu 11/73 3 | set cpu 1M 4 | # devices 5 | set dz enable 6 | set lpt disable 7 | set ptp disable 8 | set ptr disable 9 | set rl enable 10 | set rp disable 11 | set rq disable 12 | set rx disable 13 | set tq disable 14 | set xq disable 15 | # serial 16 | attach dz 23 17 | # disks 18 | attach rl0 rsts_full_rl.dsk 19 | att rl1 rsts_swap_rl.dsk 20 | # startup 21 | expect "Option:" send "\n"; continue 22 | expect "DD-MMM-YY? " send "01-APR-95\r"; continue 23 | expect "12:00 PM? " send "12:00 PM\r"; continue 24 | expect "Command File Name? " send "\r"; continue 25 | boot rl0 26 | 27 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp11-rt11-v4/simh.ini: -------------------------------------------------------------------------------- 1 | # processor 2 | set cpu 11/23+ 3 | set cpu 256k 4 | set cpu idle 5 | # console 6 | set tto 8b 7 | # disable all 8 | set dz disable 9 | set tm disable 10 | set tq disable 11 | set hk disable 12 | set rk disable 13 | set rq disable 14 | set rx disable 15 | set rp disable 16 | set rl disable 17 | set lpt disable 18 | set ptr disable 19 | set ptp disable 20 | # printer 21 | set lpt enable 22 | att lpt printer.log 23 | # disks 24 | set rk enable 25 | set rk0 enable 26 | att rk0 rtv4_rk.dsk 27 | # boot 28 | boot rk0 29 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp11-rt11-v5/simh.ini: -------------------------------------------------------------------------------- 1 | # processor 2 | set cpu 11/23+ 3 | set cpu 256k 4 | set cpu idle 5 | # console 6 | set tto 8b 7 | # disable all 8 | set dz disable 9 | set tm disable 10 | set tq disable 11 | set hk disable 12 | set rk disable 13 | set rq disable 14 | set rx disable 15 | set rp disable 16 | set rl disable 17 | set lpt disable 18 | set ptr disable 19 | set ptp disable 20 | # printer 21 | set lpt enable 22 | att lpt printer.log 23 | # disks 24 | set rl enable 25 | set rl0 enable 26 | set rl0 rl02 27 | att rl0 rtv53_rl.dsk 28 | # boot 29 | boot rl0 30 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp11-unix-v5/simh.ini: -------------------------------------------------------------------------------- 1 | # processor 2 | set cpu 11/45 3 | set cpu 256k 4 | set cpu idle 5 | # console 6 | set tto 7b 7 | # devices 8 | set dz disable 9 | set tm disable 10 | set tq disable 11 | set hk disable 12 | set rk enable 13 | set rl disable 14 | set rp disable 15 | set rq disable 16 | set rx disable 17 | set lpt disable 18 | set ptr disable 19 | set ptp disable 20 | # disks 21 | attach rk0 unix_v5_rk.dsk 22 | # startup and login 23 | expect "@" send "unix\r"; continue 24 | expect "login: " send "root\r"; continue 25 | # go 26 | boot rk0 27 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp11-unix-v6/simh.ini: -------------------------------------------------------------------------------- 1 | # processor 2 | set cpu 11/45 3 | set cpu 256k 4 | set cpu idle 5 | # console 6 | set tto 7b 7 | # devices 8 | set dz disable 9 | set tm disable 10 | set tq disable 11 | set hk disable 12 | set rk enable 13 | set rl disable 14 | set rp disable 15 | set rq disable 16 | set rx disable 17 | set lpt disable 18 | set ptr disable 19 | set ptp disable 20 | # disks 21 | attach rk0 unix0_v6_rk.dsk 22 | attach rk1 unix1_v6_rk.dsk 23 | attach rk2 unix2_v6_rk.dsk 24 | attach rk3 unix3_v6_rk.dsk 25 | # startup and login 26 | expect "@" send "unix\r"; continue 27 | expect "login: " send "root\r"; continue 28 | # go 29 | boot rk0 30 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp11-unix-v7/simh.ini: -------------------------------------------------------------------------------- 1 | # processor 2 | set cpu 11/45 3 | set cpu 256k 4 | set cpu idle 5 | # console 6 | set tto 7b 7 | # devices 8 | set dz disable 9 | set tm disable 10 | set tq disable 11 | set hk disable 12 | set rk disable 13 | set rl enable 14 | set rp disable 15 | set rq disable 16 | set rx disable 17 | set lpt disable 18 | set ptr disable 19 | set ptp disable 20 | # disks 21 | set rl0 rl02 22 | set rl0 noautosize 23 | attach rl0 unix_v7_rl.dsk 24 | # startup and login 25 | expect "@" send "boot\n"; continue 26 | expect ": " send "rl(0,0)rl2unix\n"; continue 27 | expect "# " send "\x04"; continue 28 | expect "login: " send "root\r"; continue 29 | expect "Password:" send "root\r"; continue 30 | # go 31 | boot rl 32 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp8-dms/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu idle 3 | # devices 4 | set df enable 5 | set dt disable 6 | set mt disable 7 | set rf disable 8 | set rl disable 9 | set rk disable 10 | set rx disable 11 | set lpt disable 12 | set ttix disable 13 | # disk 14 | attach df dms_demo.df32 15 | # run PIP as demo 16 | expect "." send "PIP\r"; continue 17 | expect "*OPT-" send "L"; continue 18 | expect "*IN-" send "S:\r"; continue 19 | expect "*OPT-" send "\x03"; continue 20 | # start 21 | boot -d df 22 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp8-focal/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu idle 3 | # devices 4 | set df disable 5 | set dt disable 6 | set mt disable 7 | set rf disable 8 | set rl disable 9 | set rk disable 10 | set rx disable 11 | set lpt disable 12 | set ttix disable 13 | # load 14 | load focal69.bin 15 | # go 16 | run 200 17 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp8-os8/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu idle 3 | set tti 7b 4 | # devices 5 | set df disable 6 | set dt disable 7 | set mt disable 8 | set rf disable 9 | set rk enable 10 | set rk0 enable 11 | set rk1 enable 12 | set rk2 disable 13 | set rk3 disable 14 | set rl disable 15 | set rx enable 16 | set lpt enable 17 | set ttix disable 18 | # disk 19 | attach rx0 os8_rx.dsk 20 | attach rx1 os8f4_rx.dsk 21 | # serial 22 | attach ttix 23 23 | # start 24 | boot rx0 25 | -------------------------------------------------------------------------------- /systems/simh-kits/pdp8-tss8/simh.ini: -------------------------------------------------------------------------------- 1 | # system 2 | set cpu idle 3 | set tti 7b 4 | # devices 5 | set df disable 6 | set dt disable 7 | set mt disable 8 | set rf enable 9 | set rk disable 10 | set rl disable 11 | set rx disable 12 | set lpt disable 13 | set ttix enable 14 | # disk 15 | attach rf0 tss8_rf.dsk 16 | # serial 17 | attach ttix 23 18 | # loader 19 | load tss8_init.bin 20 | # startup process (standard startup, date, time, login as [0,2], show catalog) 21 | expect "LOAD, DUMP, START, ETC? " send "START\r"; continue 22 | expect "MONTH-DAY-YEAR: " send "01-01-80\r"; continue 23 | expect "HR:MIN - " send "12:00\r"; send after=10k "\r"; continue 24 | expect "." send "LOGIN 2 LXHE\r"; continue 25 | expect "." send "R CAT\r"; continue 26 | # start 27 | run 24200 28 | -------------------------------------------------------------------------------- /systems/simh-os32/.gitignore: -------------------------------------------------------------------------------- 1 | download 2 | build 3 | -------------------------------------------------------------------------------- /systems/simh-os32/Dockerfile.build: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="retroprom/simh:latest" 3 | 4 | FROM ${BASE} 5 | 6 | ENV OS32_GIT="https://github.com/davygoat/simh-os32.git" 7 | ENV OS32_REV="main" 8 | 9 | ENV OS32_PKG="ca-certificates build-essential dumb-init git make psmisc" 10 | 11 | ENV SIMH_SIMULATOR="id32" 12 | 13 | USER root 14 | 15 | RUN apt update \ 16 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${OS32_PKG} \ 17 | && apt clean && rm -rf /var/lib/apt/lists/* \ 18 | && adduser --system --group --home=/sim sim \ 19 | && cd /dev && mknod tty c 5 0 20 | 21 | # Build and run as user 22 | USER sim 23 | WORKDIR /sim 24 | 25 | # Build OS/32 26 | RUN git clone ${OS32_GIT} dist \ 27 | && cd dist \ 28 | && git checkout ${OS32_REV} \ 29 | && make open \ 30 | && ./rebuild-system.sh 31 | 32 | # Use dumb-init and start our script 33 | ENTRYPOINT [ "/usr/bin/dumb-init", "--" ] 34 | #CMD [ "/sim/run.sh" ] 35 | -------------------------------------------------------------------------------- /systems/simh-os32/Dockerfile.release: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="retroprom/simh:latest" 3 | 4 | FROM ${BASE} 5 | 6 | ENV SIMH_SIMULATOR="id32" 7 | 8 | USER sim 9 | WORKDIR /sim 10 | 11 | COPY ./ /sim/ 12 | -------------------------------------------------------------------------------- /systems/simh-os32/README.md: -------------------------------------------------------------------------------- 1 | ## SIMH OS/32 Distribution 2 | -------------------------------------------------------------------------------- /systems/simh-os32/SHA256SUMS: -------------------------------------------------------------------------------- 1 | 8094e425495739f151ea131719bb0a944070a6f8e463aa18caa9d7cd7e6fd7ac download/v1.1/os32doc.zip 2 | 9cdfc5a17f3e08ee54bc0dfe0ca3bcaf0b82dc69ac1d3949c5a2f0ccc7a4f182 download/v1.1/os32kit.zip 3 | -------------------------------------------------------------------------------- /systems/simh-os32/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ./extract.sh 6 | 7 | docker build build/os32-v1.1 -f Dockerfile.release -t retroprom/simh-id32-os32:v1.1 "$@" 8 | docker tag retroprom/simh-id32-os32:v1.1 retroprom/simh-id32-os32:latest 9 | 10 | -------------------------------------------------------------------------------- /systems/simh-os32/common/dummy.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/retroprom/docker/db5b5de57068e8f92307384bec5d42eb24adb0b6/systems/simh-os32/common/dummy.txt -------------------------------------------------------------------------------- /systems/simh-os32/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | get() { 6 | mkdir -p "download/$1" 7 | wget -c -O "download/$1/$2" "https://github.com/davygoat/simh-os32/releases/download/$1/$2" 8 | } 9 | 10 | mkdir -p download 11 | 12 | get v1.1 os32doc.zip 13 | get v1.1 os32kit.zip 14 | 15 | sha256sum -c SHA256SUMS 16 | 17 | -------------------------------------------------------------------------------- /systems/simh-os32/extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ROOT=$PWD 6 | DIST=$PWD/download 7 | 8 | sha256sum -c SHA256SUMS 9 | 10 | rm -rf build 11 | 12 | enter() { 13 | echo Extracting for $1... 14 | mkdir -p $ROOT/build/$1 15 | cp -r $ROOT/common/* $ROOT/build/$1 16 | cd $ROOT/build/$1 17 | } 18 | 19 | enter os32-v1.1 20 | unzip -u "$DIST/v1.1/os32kit.zip" 21 | -------------------------------------------------------------------------------- /toolchains/i370/Dockerfile.debian: -------------------------------------------------------------------------------- 1 | 2 | ARG BASE="debian:stable" 3 | ARG START="bash" 4 | 5 | FROM ${BASE} AS common 6 | 7 | ENV MVSCROSS_GIT="https://github.com/retroprom/mvscross.git" 8 | ENV MVSCROSS_REV="master" 9 | 10 | ENV MVSCROSS_PKG="build-essential ca-certificates dumb-init gcc gcc-multilib git-core libc6-dev make" 11 | 12 | USER root 13 | 14 | RUN apt update \ 15 | && DEBIAN_FRONTEND=noninteractive apt install --yes --no-install-recommends ${MVSCROSS_PKG} \ 16 | && apt clean && rm -rf /var/lib/apt/lists/* 17 | 18 | WORKDIR /build 19 | 20 | RUN git clone "${MVSCROSS_GIT}" \ 21 | && cd mvscross \ 22 | && git submodule update --init --recursive \ 23 | && ./build.sh 24 | 25 | ENV START="${START}" 26 | CMD [ "${START}" ] 27 | 28 | --------------------------------------------------------------------------------