A Z80/CP/M emulator for iPhone, iPad, and Mac, built on the RomWBW HBIOS platform.
- Full Z80 emulation with accurate instruction timing
- RomWBW HBIOS compatibility for authentic CP/M experience
- VT100/ANSI terminal with escape sequence support (runs Zork, WordStar, etc.)
- Multiple disk support - up to 4 disk units with hd1k format (8MB slices)
- Download disk images from RomWBW project - no bundled copyrighted content
- Local file support - open, create, and save disk images
- NVRAM boot configuration - auto-boot settings persist across sessions
- Mac Catalyst - runs natively on macOS
The emulator provides a classic 80x25 terminal display with support for:
- CP/M 2.2, CP/M 3, ZSDOS, ZPM3, NZCOM
- Text adventures (Zork, Adventure, Hitchhiker's Guide)
- Productivity software (WordStar, dBASE, Turbo Pascal)
- Open Settings (gear icon) before starting
- Download disk images - scroll to "Download Disk Images" section
- Select a disk - CP/M 2.2 recommended for first boot
- Press Play to start the emulator
- At boot menu, press
0to boot from disk
h- Help (shows full menu)l- List ROM applicationsd- List disk devicesw- SYSCONF - Configure auto-boot settings0-9- Boot from device numberC- Boot CP/M 2.2 from ROM
Use the ROM's SYSCONF utility to configure auto-boot:
- At boot menu, press
W - Select boot device and timeout
- Settings persist across app restarts
To clear auto-boot settings, go to Settings and tap "Clear Auto-Boot".
Disk images are downloaded from the official RomWBW project:
| Disk | Description | License |
|---|---|---|
| CP/M 2.2 | Classic Digital Research OS | Free (Lineo) |
| ZSDOS | Enhanced CP/M with timestamps | Free |
| NZCOM | ZCPR3 command processor | Free |
| CP/M 3 (Plus) | Banked memory support | Free |
| ZPM3 | Z-System CP/M 3 | Free |
| WordStar 4 | Word processor | Abandonware |
Downloaded images are stored in the app's Documents folder and work offline.
┌─────────────────────────────────────┐
│ SwiftUI Interface │
├─────────────────────────────────────┤
│ EmulatorViewModel (Swift) │
├─────────────────────────────────────┤
│ RomWBWEmulator (Obj-C++ Bridge) │
├─────────────────────────────────────┤
│ HBIOSEmulator (C++) │
│ ┌─────────────┬─────────────────┐ │
│ │ qkz80 │ HBIOSDispatch │ │
│ │ (Z80 CPU) │ (HBIOS calls) │ │
│ └─────────────┴─────────────────┘ │
└─────────────────────────────────────┘
This project uses code from sibling directories:
../cpmemu/src/- qkz80 Z80 CPU emulator../romwbw_emu/src/- HBIOS dispatch, memory banking
The terminal supports ANSI/VT100 escape sequences:
- Cursor positioning (
ESC[row;colH) - Screen/line clearing (
ESC[2J,ESC[K) - Text attributes (
ESC[7mreverse video) - Cursor save/restore (
ESC 7,ESC 8)
This enables proper display for applications like Zork that use cursor positioning for status lines.
Uses RomWBW hd1k format:
- 8MB per slice
- Up to 8 slices per disk (64MB total)
- 1024 directory entries per slice
- Compatible with all RomWBW disk images
- Xcode 15+
- iOS 14+ / macOS 11+ (Mac Catalyst)
- Clone sibling projects (cpmemu, romwbw_emu)
- Open
iOSCPM.xcodeproj - Select target device
- Build and run
GPLv3 License
- CP/M: Released by Lineo for non-commercial use
- RomWBW: MIT License
- qkz80: GPL v3 License
- 80un - Unpacker for CP/M compression and archive formats (LBR, ARC, squeeze, crunch, CrLZH)
- cpmdroid - Z80/CP/M emulator for Android with RomWBW HBIOS compatibility and VT100 terminal
- cpmemu - CP/M 2.2 emulator with Z80/8080 CPU emulation and BDOS/BIOS translation to Unix filesystem
- learn-ada-z80 - Ada programming examples for the uada80 compiler targeting Z80/CP/M
- mbasic - Modern MBASIC 5.21 Interpreter & Compilers
- mbasic2025 - MBASIC 5.21 source code reconstruction - byte-for-byte match with original binary
- mbasicc - C++ implementation of MBASIC 5.21
- mbasicc_web - WebAssembly MBASIC 5.21
- mpm2 - MP/M II multi-user CP/M emulator with SSH terminal access and SFTP file transfer
- romwbw_emu - Hardware-level Z80 emulator for RomWBW with 512KB ROM + 512KB RAM banking and HBIOS support
- scelbal - SCELBAL BASIC interpreter - 8008 to 8080 translation
- uada80 - Ada compiler targeting Z80 processor and CP/M 2.2 operating system
- uc80 - ANSI C compiler targeting Z80 processor and CP/M 2.2 operating system
- ucow - Unix/Linux Cowgol to Z80 compiler
- um80_and_friends - Microsoft MACRO-80 compatible toolchain for Linux: assembler, linker, librarian, disassembler
- upeepz80 - Universal peephole optimizer for Z80 compilers
- uplm80 - PL/M-80 compiler targeting Intel 8080 and Zilog Z80 assembly language
- z80cpmw - Z80 CP/M emulator for Windows (RomWBW)