Sign inSign up

geokm/mpmii

By geokm

•Updated 5 months ago

Image
0

347

geokm/mpmii repository overview

⁠geokm/mpmii

MP/M-II (Multi-Programming Monitor) emulator running on SIMH AltairZ80 inside an Ubuntu 24.04 Docker container.

⁠What's Inside

  • Ubuntu 24.04 base image
  • SIMH 3.8.1 emulator with AltairZ80 support (apt install simh)
  • Pre-configured MP/M-II disk images
  • Automatic volume seeding for persistent data

⁠Quick Start

⁠Pull
docker pull geokm/mpmii:latest
⁠Run with Docker
docker run -d \\
  --name MPM-II \\
  -p 3002:3002 \\
  -v mpmii_data:/data \\
  --restart unless-stopped \\
  geokm/mpmii:latest
⁠Run with Docker Compose
services:
  mpmii:
    image: geokm/mpmii:latest
    container_name: MPM-II
    ports:
      - "3002:3002"
    volumes:
      - mpmii_data:/data
    restart: unless-stopped

volumes:
  mpmii_data:
    driver: local

⁠Ports

  • 3002/tcp — SIMH AltairZ80 SIO terminal

⁠Persistence

On first run, the entrypoint seeds the /data volume with all base disk images from the container image. After that, everything in /data is persistent across restarts. Any changes made inside MP/M survive container rebuilds as long as you keep the named volume.

To reset/wipe and re-seed:

docker compose rm -v
# Then docker compose up -d again

⁠Included Disk Images

All located in the container under /data (and seeded into the volume on first boot):

  • a-mpm.dsk — boot disk
  • b-mpm.dsk — system disk
  • i-mpm.dsk, j-mpm.dsk — IDE hard-disk images
  • blank.dsk — blank formatted disk

⁠Dockerfile

FROM ubuntu:24.04
LABEL maintainer="Keith Matthews <[email protected]>"

RUN apt-get update \\
    && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \\
        simh \\
    && apt-get clean \\
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN mkdir -p /home/SIMH/X

# Copy base disk images into the image
COPY base/ /home/SIMH/X/
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh

WORKDIR /home/SIMH/X
EXPOSE 3002/tcp

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/usr/bin/altairz80", "mpmII.ini"]

⁠docker-compose.yml

services:
  mpmii:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: MPM-II
    ports:
      - "3002:3002"
    volumes:
      - mpmii_data:/data
    restart: unless-stopped

volumes:
  mpmii_data:
    driver: local

⁠mpmII.ini (SIMH config)

d tracks[0-7] 254
attach dsk0 a-mpm.dsk
attach dsk1 b-mpm.dsk
attach hdsk0 i-mpm.dsk
attach hdsk1 j-mpm.dsk
d common b000
set cpu	64k
set cpu itrap
set cpu z80
set cpu altairrom
set cpu banked
set simh timeroff
attach sio 3002
boot dsk0

⁠Maintainer

Keith Matthews [email protected]⁠

Tag summary

Content type

Image

Digest

sha256:3dcf278c1…

Size

33.9 MB

Last updated

5 months ago

docker pull geokm/mpmii