CPPIP -- CP/M File Copy Utility ================================ User Manual -- v1.10 (47) [Document revision 1.11] A C reimplementation of PPIP v1.8 by D. Jewett III (1985-1988). C port, NABU IA extension, and FreHD SD extension by Intangybles, 2026. CONTENTS -------- 1. Overview 2. Command Syntax 3. Drive and User Area Prefix 4. Options 5. Wildcards 6. Examples 7. CON: Editor 8. IA: Internet Adapter (NABU) 9. SD: FreHD Card 10. File Attributes 11. CRC Verify 12. Cancelling 13. Messages 14. Notes OVERVIEW -------- CPPIP is a file copy utility for CP/M 2.2, designed for single-file or wildcard copies without loading a full directory browser. CRC verification is built in. Two extensions add access to external file stores from the CP/M command line: the NABU RetroNET Internet Adapter (IA:) and the FreHD SD card emulator (SD:). Three builds are supplied: CPPIP.COM Standard. IA: available via /N or on CloudCP/M. SD: compiled in (requires FreHD hardware). NPPIP.COM NABU edition. IA: always active, no switch needed. No SD: code. FPPIP.COM FreHD edition. SD: always active. No IA: code. All three are identical for standard CP/M file operations. COMMAND SYNTAX -------------- MS-DOS style (default): CPPIP [DU:]source[.ext] [[DU:]dest[.ext]] [/options] Source comes first, then destination. If no destination is given, the file is copied to the current drive and user area with the same name. CP/M style (auto-detected when = is present): CPPIP [[DU:]dest[.ext]=][DU:]source[.ext] [/options] Destination comes first, separated from source by =. Help: CPPIP /H DRIVE AND USER AREA PREFIX -------------------------- Any filename can be prefixed with a drive letter, user number, or both. The format is DU: where D is the drive letter (A-P) and U is the user area number (0-31). You can specify either or both: B: drive B, current user area 3: user area 3, current drive B3: drive B, user area 3 Omitting either part uses the current value. Examples: CPPIP FILE.DAT B: copy to drive B, same user area CPPIP FILE.DAT 3: copy to user area 3, same drive CPPIP FILE.DAT B3: copy to drive B, user area 3 OPTIONS ------- Options start with / and can appear anywhere in the command line. They can be combined (/VC = /V /C). /V Verify CRC-16 verify after copy. On CP/M copies, retries up to 3 times on mismatch. /C CRC Print CRC value in hex after a verified copy (requires /V). /E Existing Overwrite existing read/write dest without asking. /W Wipe Overwrite any dest (read/write or read-only) without asking. /M Move Copy then delete source. Forces /V automatically. /N NABU IA Enable IA: on a non-CloudCP/M NABU. (CPPIP only.) /H Help Show help and exit. Note: /E only silences the prompt for writable files. Read-only files still ask unless /W is also used. WILDCARDS --------- Wildcards work in both source and destination filenames. * in source matches any sequence of characters in that field ? in dest replaced by the matching character from the source name Examples: CPPIP *.COM B: copy all .COM files to drive B: CPPIP *.COM *.BAK copy .COM files, rename extension to .BAK CPPIP A*.* B3: copy files starting with A to B: user area 3 CPPIP *.COM B:???????1 copy .COM files, insert 1 at end of name on B: Up to 512 filenames are handled per command. Duplicate destinations are detected and skipped with a "Duplicate!" message. EXAMPLES -------- CPPIP FILE.DAT copy to same name, current drive/user CPPIP FILE.DAT B: copy to drive B: CPPIP FILE.DAT B3: copy to drive B: user area 3 CPPIP FILE.DAT B3:BACKUP.DAT copy and rename CPPIP BACKUP.DAT=FILE.DAT CP/M style: dest=source CPPIP *.COM B: copy all .COM files to B: CPPIP C8:*.COM A0:*.OBJ copy .COM from C: user 8 to A: user 0 as .OBJ CPPIP FILE.DAT B: /V copy + CRC verify CPPIP FILE.DAT B: /VC copy + verify + print CRC CPPIP FILE.DAT B: /M move (copy then delete source) CPPIP FILE.DAT B: /W overwrite read-only dest without asking CON: EDITOR ----------- Using CON: as the source lets you type text directly into a file: CPPIP CON: NOTES.TXT Type your text and press Ctrl-Z on a new line to finish and save the file. Backspace / Rubout Delete last character on the current line Ctrl-Z End input and save the file Enter Writes a CR+LF line ending to the file Wildcards are not allowed in the destination for a CON: copy. IA: INTERNET ADAPTER (NABU) ---------------------------- The IA: prefix accesses the NABU RetroNET Internet Adapter file store over the HCCA port, giving you direct access to a network file server from the CP/M command line. CPPIP and NPPIP use identical IA: syntax. The only difference is how IA: is activated: NPPIP IA: is always active. No switch needed. Just use IA: anywhere. CPPIP On CloudCP/M, IA: is active automatically. On any other NABU CP/M, add /N to the command to enable IA:. Once active, every IA: command works the same regardless of which binary you are running. PATH FORMATS IA:FILE.DAT flat file at root of store IA:SUBDIR/FILE.DAT file in a subfolder (folder must already exist) IA:/D/1/FILE.DAT CloudCP/M drive D user area 1 (folder auto-created) IA:D:/1/FILE.DAT same as above -- both formats are equivalent The /X/ and X:/ formats are strongly recommended for all subfolder work. They automatically create missing directory trees on write, and find files regardless of whether they were stored with upper or lowercase names. LONG FILENAMES ON IA: The IA file store runs on a PC server with no filename length restriction. Files with names longer than 8 characters (e.g. NIALLCONV.COM) are copied to CP/M with the name truncated to 8 characters (NIALLCON.COM). The extension is always preserved. A [truncated] note appears on the copy line. If the truncated name collides with an existing file, the usual "Exists! Delete?" prompt appears. EXAMPLES Using NPPIP (IA: always active): NPPIP FILE.DAT IA:/Z/BACKUP/FILE.DAT copy to IA store NPPIP IA:/D/1/FILE.DAT B: copy from IA store to drive B: NPPIP IA:/D/1/*.COM B: copy all .COM files from IA to B: NPPIP *.DAT IA:/Z/BACKUP/ copy all .DAT files to IA folder NPPIP IA:FILE.DAT B: /M move from IA to B: (deletes IA copy) Using CPPIP on CloudCP/M (IA: active automatically): CPPIP FILE.DAT IA:/Z/BACKUP/FILE.DAT copy to IA store CPPIP IA:/D/1/*.COM B: copy all .COM files from IA to B: Using CPPIP on a non-Cloud NABU (add /N to enable IA:): CPPIP FILE.DAT IA:/Z/BACKUP/FILE.DAT /N copy to IA store CPPIP IA:/D/1/*.COM B: /N copy all .COM files from IA to B: See IA-GUIDE.TXT for the full IA path reference and troubleshooting guide. SD: FREHD CARD -------------- The SD: prefix accesses files directly on an SD card via the FreHD hard disk emulator connected to the Z80 I/O bus. SD: is available in CPPIP.COM and FPPIP.COM. It requires FreHD hardware to be present. On systems without FreHD, SD: commands will fail cleanly. See FREHD-GUIDE.TXT for full setup and usage details. WHICH BINARY TO USE FPPIP.COM You have FreHD and want the smallest, dedicated SD: binary. CPPIP.COM You want both SD: and IA: support in one binary. SD PATH FORMATS SD:FILE.COM file at the root of the SD card SD:SUBDIR/FILE.COM file in a subdirectory (must already exist) SD:SUBDIR/*.COM wildcard -- all .COM files in SUBDIR Subdirectories on the SD card must already exist. FreHD does not create directories automatically. LONG FILENAMES ON SD: The SD card uses FAT format and can hold files with names longer than 8 characters. CP/M can only store 8-character names. If a wildcard copy encounters a file whose name is longer than 8 characters (e.g. NIALLCONV.COM), it is skipped with a visible warning. You can still copy it individually by specifying a short destination name: FPPIP SD:NIALLCONV.COM A:NIALL.COM EXAMPLES FPPIP SD:FILE.COM A: copy from SD to current drive FPPIP A:FILE.COM SD: copy from CP/M to SD root FPPIP SD:*.DAT A1: /V copy all .DAT files to A: user 1 with verify FPPIP A:*.COM SD:BACKUP/ /V copy all .COM files to SD BACKUP folder FPPIP SD:SUBDIR/*.COM A: /M move all .COM from SD subfolder to A: FPPIP SD:PROG.COM A: /VC copy with verify and print CRC value FILE ATTRIBUTES --------------- CPPIP copies the read-only attribute from source to destination. If the destination file already exists, CPPIP will ask before overwriting: Read/write file "Exists! Delete?" -- press Y to overwrite, N to skip. Read-only file "R/O! Delete?" -- press Y to overwrite, N to skip. Press Ctrl-C at either prompt to cancel the copy and return to CP/M. /E skips the prompt for read/write files (no ask for existing files). /W skips the prompt for all files including read-only. CRC VERIFY ---------- When /V is active, CPPIP computes a CRC-16 (CCITT) checksum of the source as it reads it, then re-reads the destination and compares. This is the same algorithm used by XMODEM, KERMIT, and other standard CP/M file transfer tools, so values can be cross-checked with /C. CP/M to CP/M copies: Match: "OK" is shown. Mismatch: the destination is deleted and the copy is retried. Up to 3 attempts are made before giving up. Copies involving IA: or SD: (either source or destination): Match: "OK" is shown. Mismatch: "CRC failed!" is shown. The copy is not retried. For SD:, check the FreHD connection. For IA:, check the server connection. /C prints the CRC value in hexadecimal after each verified copy. /M (move mode) forces /V automatically. CANCELLING ---------- During a batch copy: Press Ctrl-C between files to stop. The current file is completed first; remaining files are skipped. "^C" is printed and CPPIP returns to CP/M. At a prompt: Press Ctrl-C at any "Delete?" prompt to cancel the entire operation and return to the CP/M command prompt. MESSAGES -------- Exists! Delete? Dest exists. Press Y to overwrite, N to skip. R/O! Delete? Read-only dest. Press Y to overwrite, N to skip. same Source and dest are the same file -- skipped. Duplicate! Wildcard would write same dest twice -- skipped. No file(s) found No files matched the source pattern. - Verifying CRC verify pass in progress. OK Copy complete (and verified, if /V was used). CRC: XXXX CRC value in hex (shown with /C). FAILED - retrying... CRC mismatch on CP/M copy -- retrying. CRC failed! All retries failed (CP/M), or IA:/SD: verify failed. ERROR: Disk full. Copy deleted. No space on destination. Partial file removed. ^C Ctrl-C pressed -- batch stopped, remaining files skipped. [truncated] IA: filename was longer than 8 chars -- name shortened. ERROR: IA: directory not found IA subfolder missing. Use /X/ or check spelling. ERROR: IA file not found IA file does not exist at that path. IA: unavailable - use /N Not on CloudCP/M -- add /N or use NPPIP. ERROR: SD: cannot create: SD: destination subdirectory does not exist. path - check directory exists Create the folder on a PC card reader first. ERROR: SD: file not found SD: source file does not exist. SD name too long for CP/M, skipped SD: filename > 8 chars -- copy manually with a short dest name. NOTES ----- - CPPIP has been tested on NABU CloudCP/M, RomWBW CP/M 2.2, TRS-80 Model 4P with Montezuma Micro CP/M 2.2, and Kaypro CP/M 2.2. - ZRDOS compatible: the post-write disk reset is skipped when running under ZRDOS. - The original PPIP v1.8 by D. Jewett III is in the public domain. CPPIP is copyright (c) Intangybles 2026. ================================ CPPIP/NPPIP/FPPIP v1.10 (47) -- Intangybles 2026