Latest release: v1.20 - see CHANGELOG.md for what changed, or the Releases page for downloads and full release notes.
Also available: ZPPIP, the ZX Spectrum Next CP/M 3 edition - built from the same source tree and included in the same release as the other three. It stays a separate binary because the Next's own storage support cannot fit in the same TPA image alongside IA:/SD: support.
A C reimplementation of PPIP v1.8 (D. Jewett III, 1985-1988), a classic CP/M file copy utility. Built with z88dk targeting CP/M 2.2. Adds direct access to the NABU RetroNET Internet Adapter file store (IA:), the FreHD Hard Disk emulator (SD:), and the ZX Spectrum Next's own storage (NX:).
CPPIP started as C programming practice for me, specifically as an exercise in porting a favourite utility from my own CP/M days, PPIP, into something I could then keep adapting. PPIP was also close to command-format compatible with CP/M's own PIP utility, which made it an easy drop-in replacement in SUBMIT files and anywhere else PIP was already expected.
Accessing the modern additions available to these old machines, like the FreHD hard disk emulator and the NABU's Internet Adapter, was never simple from the CP/M command line. Turning CPPIP into a way to reach both of those file stores directly, with proper CRC verification and far more wildcard support than most existing CP/M tools offer, gave the port a reason to exist beyond the exercise itself.
The project has since grown past the original C port: LPPIP is a native Z80 assembly fork for TRS-80 LS-DOS/TRS-DOS, and ZPPIP brings the same file-copy command line to the ZX Spectrum Next's built-in CP/M 3 with its own NX: extension - a machine I'll be getting my hands on soon.
Four binaries are produced from the same source tree in one build:
| Binary | Description |
|---|---|
CPPIP.COM |
Standard build. IA: available via /N or on CloudCP/M. SD: compiled in (requires FreHD hardware). |
NPPIP.COM |
NABU edition. IA: always active. No SD: code. |
FPPIP.COM |
FreHD edition. SD: always active. No IA: code. |
ZPPIP.COM |
ZX Spectrum Next edition. NX: always active. No IA:/SD: code (see above). |
The original Z80 assembly source (all nine modules) is preserved in the PPIP Master/ folder.
CPPIP copies files on CP/M systems - between drives, between user areas, or any combination. It handles wildcards, CRC verification, move operations, and read-only file protection. The IA: prefix adds direct access to the RetroNET Internet Adapter file store on NABU systems. The SD: prefix adds direct access to files on an SD card via a FreHD hard disk emulator on TRS-80 and compatible systems. The NX: prefix (ZPPIP only) adds direct access to the ZX Spectrum Next's own storage.
Tested on: NABU CloudCP/M, RomWBW CP/M 2.2, TRS-80 Model 4P with Montezuma Micro CP/M 2.2, Kaypro CP/M 2.2, ZX Spectrum Next's built-in CP/M 3 (under MAME).
| File | Contents |
|---|---|
manual/manual.txt |
Full user manual - all commands, options, and examples. |
manual/manual.md |
Same manual in Markdown |
manual/ia-guide.txt |
IA: RetroNET Internet Adapter path reference and troubleshooting |
manual/ia-guide.md |
Same guide in Markdown |
manual/frehd-guide.txt |
FreHD SD: path reference, setup, and troubleshooting |
manual/frehd-guide.md |
Same guide in Markdown |
manual/nx-guide.txt |
ZPPIP NX: path reference and troubleshooting (ZX Spectrum Next) |
manual/nx-guide.md |
Same guide in Markdown |
CHANGELOG.md |
Full version history |
GLOSSARY.md |
Function reference for the source code - every function, its file, prototype, and what it does |
CPPIP [DU:]source[.ext] [[DU:]dest[.ext]] [/options]
or CP/M style (auto-detected when = is present):
CPPIP [[DU:]dest[.ext]=][DU:]source[.ext] [/options]
(Replace CPPIP with NPPIP, FPPIP, or ZPPIP as appropriate.)
DU: prefix - drive letter A-P, user area 0-31. Examples: B3:FILE.TXT, A0:*.COM, B:, 15:
IA: prefix (NABU only) - RetroNET Internet Adapter file store. See manual/ia-guide.md for the full path reference.
SD: prefix (FreHD only) - SD card via the FreHD emulator. See manual/frehd-guide.md for setup and usage.
NX: prefix (ZPPIP only) - ZX Spectrum Next's own storage. See manual/nx-guide.md for the full path reference.
CON: as source - type text directly to a file from the console. Ctrl-Z ends input.
All options default to OFF:
| Switch | Description |
|---|---|
/V |
CRC-16 verify after copy - re-reads destination and compares |
/C |
Print CRC value after each verified copy (requires /V) |
/E |
Overwrite existing read/write destination without asking |
/W |
Overwrite any destination including read-only without asking |
/M |
Move: copy then delete source (automatically enables /V) |
/N |
Enable IA: on non-CloudCP/M NABU systems (CPPIP only) |
/H |
Show help |
Requires z88dk.
build.batProduces CPPIP.COM, NPPIP.COM, FPPIP.COM, and ZPPIP.COM in one pass.
build.bat debugDebug build of CPPIP.COM.
| Phase | Description | Status |
|---|---|---|
| 1 | Core single-file copy - BDOS I/O, DU: prefix, FCB building | Complete |
| 2 | Wildcard expansion - *.COM, ? matching, duplicate detection |
Complete |
| 3 | Options - CRC verify /V, report /C, move /M, overwrite /E /W |
Complete |
| 4 | Console copy mode - CON: as source, mini line editor |
Complete |
| 5 | NABU IA extension - IA: prefix, subdirectory support, wildcard on IA side |
Complete |
| 6 | Dual binary - CPPIP.COM / NPPIP.COM, TPA memory optimisation |
Complete |
| 7 | FreHD SD extension - SD: prefix, FPPIP.COM, hardware testing |
Complete |
| 8 | LPPIP project - native LS-DOS 6 (Z80 assembly) port for TRS-80 Model I/III/4 | Beta test |
| 9 | ZPPIP project - ZX Spectrum Next CP/M 3 port, NX: extension |
Complete |
| 10 | Combined source tree - ZPPIP merged into the shared C codebase, one build.bat produces all four binaries, Next hardware detection |
Complete |
PPIP was originally written in Z80 assembly by D. Jewett III between 1985 and 1988. It was a staple utility on CP/M systems of the era, offering cross-drive and cross-user-area file operations that CP/M's own PIP utility handled less conveniently.
This C reimplementation preserves the original functionality and adds the NABU-specific IA: extension for the NABU Personal Computer running with a RetroNET Internet Adapter, the SD: extension for TRS-80 systems equipped with a FreHD hard disk emulator, and the NX: extension for the ZX Spectrum Next's own storage.
LPPIP - native LS-DOS 6 (Z80 assembly) port for TRS-80 Model I/III/4, with the same FreHD SD: card support.
My TRS-80 FreHD Update Story - background on the FreHD project that CPPIP's SD: extension talks to.
Original assembly source (c) D. Jewett III, 1985-1988. C reimplementation (c) Intangybles 2026.