Skip to content

About

Build from source of CCP/M-86 3.1 with pc-mode and Make it as usable as possible (Y2K, Interface...)

Topics

Resources

Stars

7 stars

Watchers

1 watching

Forks

Repository files navigation

Concurrent CP/M-86 3.1 Kernel and Tools

Disk Images are now available as part of the project releases, ready to use ! Full Source Build

This project preserves Digital Research's Concurrent CP/M-86 3.1 multitask OS as a usable, rebuildable system for running and exploring classic 16-bit software. Runnable disks and development tools accompany the sources and patch notes, making the system more consumable (CP/M-Plus style) and accessible to anyone interested in its history.

PC-MODE is back — DOS programs on Concurrent CP/M-86!

The default system now includes PC-MODE: run supported DOS .COM and .EXE programs alongside native CP/M-86 .CMD commands, from the same shell. This brings a major part of the system's heritage into the normal source build and floppy distribution... with plenty of fixes and patches.

Microsoft Macro Assembler 1.10 running under PC-MODE on Concurrent CP/M-86
Microsoft Macro Assembler 1.10 running under PC-MODE in PCE

  • A familiar shell: PCTMP includes command-line editing and recall, ? help, CLS, SYSDISK, startup scripts and configurable SETDEF search order.
  • DOS text applications get all 25 rows. Returning to the shell restores the native 24-row console and status line. DOS/BIOS services connect to the shared XIOS.
  • DOS development tools are included: MASM, LIB, LINK, LINKCMD, LINKEXE, EXE2BIN and Microsoft BASIC have their own ccpmdos.img companion disk. BATCH.CMD is included on the system disks for BAT execution.
  • Two personalities, one build: make produces both the PC-MODE system (ccpm86.img) and a native TMP alternative (ccpmnative.img). Choose at boot.

With the project's pcfloppy launcher, boot PC-MODE and mount the DOS tools:

pcfloppy ccpm86.img ccpmdos.img

PC-MODE supports a bounded DOS/BIOS subset; application compatibility varies. The supplied disks use the CP/M filesystem—DOS FAT support is not enabled.

EXE loading fixes the same DOS Plus defect: headers need not be 512-byte aligned.

See the API tables for DOS, BIOS and native interrupt coverage. See patch notes for the implementation and verification details, and distributions for all seven disks.

Concurrent CP/M-86 3.1 running in PCE Overlapping console windows
Concurrent CP/M-86 3.1  ·  Console windows
XIOS configuration menu Microsoft BASIC 5.50A
System setup  ·  Microsoft BASIC 5.50A
Rose screenshot
Rose

Goal Distribution
Full source distribution Kernel, nine RSPs, most commands; gaps below
PC-MODE DOS COM/EXE execution, PCTMP shell, DOS development disk; native TMP boot alternative
Additional tools ASM80, HEXCOM, DREDIX, DR development chain, Microsoft BASIC 5.50A
Y2K components SDIR, DATE, SHOW, TOD for CCP/M-86 3.2 through Concurrent DOS 4.1; 3.1 fixes included
Usability and Bug fixes CP/M Plus usability, known problem fixes (like the failing sysdisk on systems with 2 floppies and a hard disk) ...

Alongside PC-MODE, the current version includes:

  • Enhanced SUBMIT
  • CP/M Plus mapped and direction keys command line recall and editing,
  • CP/M Plus setdef style configurability
  • CP/M Plus style Input/Ouput redirection with put/get/rdr commands
  • CP/M Plus style paging for DIR, SDIR, TYPE
  • Support for CGA, EGA modes even on VGA card,
  • Y2K compliance,
  • CLIs for floppy copy, format and more
  • New terminal commands (cls, sysdisk)
  • and many other patches ...

These additions make the system easier to use while preserving its native CP/M workflow.

Command line conveniences

Buffered console input supports cursor movement, insertion, deletion and recall of the last nonempty line on each console:

Key Action
Left / Ctrl-A Move one character left
Right / Ctrl-F Move one character right
Home / End Go to the beginning / end
Up / Ctrl-W Recall the last line when empty; otherwise go to the end
Backspace / Rubout Delete left of the cursor
Delete / Ctrl-G Delete at the cursor
Ctrl-K / Ctrl-X Delete to the right / left of the cursor
Ctrl-B Toggle between beginning and end
Ctrl-U / Ctrl-R Cancel the line / retype it on a new line

Return accepts the whole line from any cursor position. The editor also serves applications using BDOS Function 10; raw-input applications keep their own keys. There is one saved line per console, not a history list.

At the shell prompt, ? lists common commands and ? PIP opens HELP PIP when HELP is installed. Command errors identify missing commands, unavailable drives, invalid names, resource limits and malformed executables.

SETDEF controls each console's command search path and file order:

Command Effect
SETDEF Show current settings
SETDEF *,A:,C: Search the current drive, then A: and C:
SETDEF [ORDER=(CMD,SUB)] Search CMD, then SUB on each drive
SETDEF [ORDER=(CMD,DOS)] Search CMD, COM, EXE, BAT on each drive (default)
SETDEF [ORDER=(CMD,SUB,DOS)] Search CMD, SUB, COM, EXE, BAT on each drive
SETDEF * [ORDER=(CMD)] Search only the current drive for CMD commands, then the system fallback

Resident commands take priority; an explicit drive bypasses the path. The system disk remains the final fallback. SYSDISK selects that disk globally, while SETDEF settings are local to each console and last until changed or rebooted. Add SETDEF to STARTUP.nnn for persistent preferences.

Automatic SUB execution requires the rebuilt SUBMIT.CMD on the search path. An explicit .SUB runs a script even when SUB is absent from the search order. Native TMP accepts the same settings and ignores DOS entries. Loading commands from other drives preserves the working drive and user. See HELP SETDEF and Patches for details and limitations.

PUT, GET and RDR redirect a program's console output, input or both, using a bracket prefix like the other Digital Research tools (ccpmext.img):

Command Effect
PUT [out{,A}{,E|EO}] cmd Write the program's console output to out; A appends, E/EO also shows it
GET [in{,E|EI}] cmd Read the program's console input from in; E/EI echoes it
RDR [in,out{,A}{,E|EI|EO}] cmd Both at once
B>PUT [DIR.TXT] SDIR.CMD *.CMD
B>PUT [BUILD.LOG,A,EO] ASM86.CMD MYPROG
B>GET [KEYS.IN] PIP.CMD
B>RDR [KEYS.IN,PIP.LOG] PIP.CMD

cmd must be a native .CMD program. Resident DIR and the shell built-in CLS are not redirected; use DIR.CMD or SDIR.CMD for directory output. TYPE runs the external TYPE.CMD and can be redirected. DOS programs (.COM, .EXE) run by PC-MODE cannot be redirected, because PC-MODE handles their console calls itself. Only the console of the caller is affected. See HELP PUT, HELP GET and HELP RDR.

Distributions

Image Bootable Contents
ccpm86.img Yes PC-MODE/PCTMP kernel, core commands, ED, full HELP, BATCH, SYSDISK, SETDEF, PIP
ccpmnative.img Yes Native TMP/XIOS alternative, with the same core commands and shared kernel fixes
ccpmtools.img No ASM86, DDT86, GENCMD, GENCCPM, CHKCPMFS, WINDOW/WMENU, PRINT, sample SUB files, PIP, TOD
ccpmext.img No PUT, GET, RDR (console redirection), DREDIX, PIP
ccpmmaint.img Yes PC-MODE kernel, disk maintenance tools, CONFIG, FUNCTION, SETUP, SYSTAT, PIP, TOD
ccpmdev.img No Native DR development/BASIC tools, Microsoft BASIC CMD, ASM80, HEXCOM, GENTAB
ccpmdos.img No DOS MASM, LIB, LINK, LINKCMD, LINKEXE, EXE2BIN and Microsoft BASIC COM

make dist places the images above and disks.zip containing all seven at the repository root.

Root make builds both kernels in one run: kernel/sysgen/ccpm.sys (PC-MODE) and kernel/sysgen/ccpm-native.sys (native TMP). The native floppy installs its kernel as CCPM.SYS, as required by the normal boot loader. Both personalities use the same XIOS implementation and shared kernel fixes. Native XIOS disables the PC-MODE gateway; this is a source-built alternative, not an archival binary. Boot either system disk in A: and use the data disks in B:. DOS programs require the PC-MODE system. Configuration utilities live on maintenance to keep both system disks within 320 KB.

320 KB: untwist → cpmtools ccpm86-320 → twist. Media recipes and emulator usage. The full HELP is on the main disk; WINDOW and WMENU are on the tools disk. Window layouts: CARDDECK.SUB, CLEAR.SUB, GLASS.SUB and WORDPROC.SUB. The source-built boot track reproduces all 4,096 bytes of the original.

Commands

Format: cpm86-kernel. 3.1 = rebuildable sources; SYSDISK: byte-identical CMD plus TMP built-in.

Tool Purpose Binary (base/) Source (commands/) BDOS 2.2 Compat.
asm86 8086 assembler — Recompiled from CCP/M-86 3.1 and adapted ✓
batch Run PC-MODE BAT command files Original Reverse engineered from CCP/M-86
cls Clear the terminal screen — TMP built-in; VT52 ESC-E
chset Inspect or change CMD header flags — Recompiled from CCP/M-86 3.1 and adapted
chkcpmfs CP/M allocation check and confirmed metadata repair — New shared PL/M-86 checker for CDOS, CCP/M-86 and CP/M-86 ✓
config Configure serial ports Original Reverse engineered from CCP/M-86
date Display or set the date — Recompiled from CCP/M-86 3.1 and adapted, Y2K patched
dcomp Compare raw 8/9-sector CP/M/FAT floppies — Ported from PC DOS 1.10 ✓
dcopy Copy raw 8/9-sector CP/M/FAT floppies — Ported from PC DOS 1.10 ✓
ddt86 Interactive machine-code debugger — Recompiled from CCP/M-86 3.1 and adapted ✓
dir List directory contents — Recompiled from CCP/M-86 3.1 and adapted; command/RSP
dform Command-line floppy formatter — New ✓
dskmaint Format, verify and copy diskettes Original Reverse engineered from CCP/M-86
ed Line-oriented text editor — Recompiled from CCP/M-86 3.1 and adapted ✓
era / eraq Erase files, optionally with confirmation — Recompiled from CCP/M-86 3.1 and adapted
function Program function keys — Reverse engineered from CCP/M-86
gencmd Convert H86 output into CMD executables — Recompiled from CCP/M-86 3.1 and adapted ✓
genccpm Generate and configure the system image — Recompiled from CCP/M-86 3.1 and adapted; flag-table fix
gentab Generate disassembler opcode tables — Recompiled from CCP/M-86 3.1 and adapted
get Feed a program's console input from a text file — New; shares the putget.lib engine with PUT and RDR
hdmaint Hard-disk maintenance Original Reverse engineered from CCP/M-86
help / help.hlp Browse indexed command help — Recompiled from CCP/M-86 3.1 and adapted; indexed from help.dat ✓
initdir Enable directory date/time stamps — Recompiled from CCP/M-86 3.1 and adapted
pcetime Synchronize time with the PCE host External CPM86 Hacking Project
pip Copy and transfer files — Recompiled from CDOS 4.1 and adapted
print Print files using Concurrent printer services Original Recompiled from CCP/M-86 3.1
put Capture a program's console output into a file — New; shares the putget.lib engine with GET and RDR
rdr Redirect a program's console input and output together — New; shares the putget.lib engine with PUT and GET
ren Rename files — Recompiled from CCP/M-86 3.1 and adapted
sdir Detailed, sorted directory listing — Recompiled from CCP/M-86 3.1 and adapted, Y2K/DPB/tail fixes
set Set file and drive attributes — Recompiled from CCP/M-86 3.1 and adapted
setup Customize IBM PC/XT XIOS settings Original Reverse engineered from CCP/M-86
show Display disk space and drive information — Recompiled from CCP/M-86 3.1 and adapted, Y2K patched
setdef Display/change the per-console command drive list; fixed system fallback — New, Source-built SETDEF.CMD; local kernel extension
stop List processes and request termination — Ported from the maintained CDOS reconstruction; standard CCP/M 3.1 services
submit Run batch command files — Recompiled from CCP/M-86 3.1 and adapted
sysdisk Display or change the system drive; TMP built-in and standalone tool — TMP built-in + standalone SYSDISK.CMD recompiled from CCP/M-86 3.1 and adapted; byte-identical CMD reconstruction
systat Inspect processes and system resources — Recompiled from CCP/M-86 3.1 and adapted
tod Display or set date and time — Recompiled from MP/M-86 2.1 and adapted, Y2K patched
type Display a text file — Recompiled from CCP/M-86 3.1 and adapted
window Control console windows from commands Original C rewrite; shared modules in commands/window
wmenu Interactive console-window manager Original C rewrite; shared modules in commands/window
vcmode Set virtual-console background modes — Recompiled from CCP/M-86 3.1 and adapted
asm80 8080 assembler — Translated using XLT86 from CP/M-80 2.2 and adapted ✓
hexcom Convert Intel HEX to COM binaries — HEXCOM 3.00-compatible C from tpzasm ✓
dredix Full-screen text editor — DREDIX C Backported from Concurrent DOS 4.1

DCOPY/DCOMP support 160/180/320/360K raw media. Nine-sector access needs the updated XIOS; see disk tools.

✓ = confirmed compatible with BDOS 2.2.

After installing WMENU, Ctrl+Alt+0 (top row) or Ctrl+Alt+Esc opens its menu; Ctrl+keypad-Plus remains available.

WINDOW and WMENU share a C implementation with CDOS 4.1 in commands/window. BDOS 12 selects CCP/M's original 0..3 numbering or CDOS's 1..4 numbering. The highlighted WMENU follows the original CCP/M interface. The default build produces both programs, and ccpmtools.img installs them. See WINDOW/WMENU build and usage notes for validation.

PRINT is built from the original C sources in commands/print using the historical SQLINK.INP module list. The tools disk, ccpmtools.img, includes the rebuilt commands/print/print.cmd. See the PRINT README for usage and build details.

Development binaries

dev/ contains imported binaries; guest compatibility is not fully audited.

Tool Product Version Vendor
rasm86.cmd Relocating assembler 1.4 Digital Research
link86.cmd Linkage editor 2.02 Digital Research
lib86.cmd Library manager 1.3 Digital Research
xref86.cmd Cross-reference tool 1.1 Digital Research
sid86.cmd Debugger with 286 disassembler 2.4 Digital Research
cbas86.cmd CBASIC compiler 1.4 Digital Research
crun86.cmd CBASIC runtime 1.4 Digital Research
pbasic.cmd Personal BASIC 1.2 Digital Research
mbasic86.cmd BASIC-86 recreation 5.50A Microsoft lineage
mbas522.cmd BASIC-86 reference; archive only 5.22 Microsoft

Y2K utilities

Utility CCP/M-86 3.1 3.2 family Concurrent DOS 4.1 DOS Plus 1.2
SDIR Fixed Fixed Fixed Fixed
DATE Fixed Compliant Compliant Compliant
SHOW Fixed Fixed Compliant Compliant
TOD Fixed Fixed Compliant Compliant

Fixed = replacement needed; Compliant = existing utility works. Audit: CCP/M-86/Concurrent DOS 3.2; boot regressions: 3.1.

Kernel and RSP patches

Patches: RTC startup/persistence, yellow status, adapter-aware cursor, EGA/VGA retrace handling, console shortcuts, configured drives, GENCCPM flag records, PIN and build corrections. CGA graphics modes 4/6 now use kernel-controlled BIOS mode/palette calls on EGA/VGA, preserving the CGA path and restoring text. EGA modes 0Dh/0Eh/10h, monochrome 0Fh on EGA monochrome/VGA, and VGA modes 11h/12h/13h include graphics drawing and palette services. See api.md. The SYSDISK B: versus C: selection with two floppies is also fixed.

Optional display paging

TYPE and SDIR accept [PAGE]; DIR.RSP and DIR.CMD use [P]. TYPE also accepts [P01] through [P23] for shorter pages. Paging is off by default and uses the native pause prompt; Ctrl-C stops output. TYPE syntax and paging details.

Build and checks

Build: cpm86-crossdev, make, cpmtools, Python 3, Git, tar, zip. Emulators: PCE (interactive), QEMU (checks). The boot build requires native h862bin from cpm86-cmdtools on PATH.

Command Result
make Commands, kernel/RSPs, boot sources, four images
make -C commands/sysdisk check Byte-identical SYSDISK reconstruction
make check SYSDISK identity, source-built boot identity, every packaged file, sizes
make check-graphics Assembled graphics guards and adapter gates; PCE VGA/EGA/CGA, EGA monochrome and Hercules checks: pixels, palettes, graphics text/TTY and restoration
make check-hercules Native and DOS Hercules graphics, text/cursor/scrolling, exit restoration and plain-MDA rejection
make check-text40 Booted 40-column text tests on CGA/EGA/VGA: cursor, wrapping, scrolling and restoration
make check-qemu Boot, RTC, status, switching, HELP, SDIR, SYSDISK, SETDEF, DREDIX, windows
make check-paging TYPE, SDIR, DIR.RSP and DIR.CMD paging, resume, Ctrl-C and default-off
make test Launch PCE
make dist y2k-dist.zip, disks.zip and the seven disk images at the repository root
make source-dist Sources and reference/vendor inputs; no ignored outputs

Source pedigree · License correspondence.


Companion projects

Project Description
cpm86-kernel CP/M-86 1.1 distribution rebuilt from patched and reconstituted sources
ccpm86-kernel CCP/M-86 3.1 distribution rebuilt from patched and reconstituted sources
cdos41-kernel Concurrent DOS 4.1 distribution rebuilt from patched and reconstituted sources
cpm86-crossdev Unix CP/M-86 cross development project (compilers, emulation and tools)
cpm86-hacking CP/M-86 miscellaneous tools and PCE emulator helpers
cpm86-cmdtools CP/M-86 .cmd file manipulation tools
cpm86-ports CP/M-86 application ports in C and assembler
cpm86-vi STevie vi port for CP/M-86 and PC-DOS
cpm86-msbasic A recreaction of msbasic-86 for CP/M-86 and PC-DOS 1.1 from gwbasic sources
cpm86-menu A submit replacement and a menu system for submit orchestration for CP/M-86 1.1
cpm86-make A simple submit based make tool for CP/M-86
pcdos11-hacking PC-DOS 1.1 distribution, tools and notes

License

CP/M-derived material is covered by the CP/M license; other material uses the MIT license, unless specified otherwise in a subdirectory.

XIOS build

XIOS is one loaded component assembled from three maintained modules in kernel/con/xios/: core.a86, console.a86 and devices.a86, each including maintained functional .lib files, with explicit imports/exports and shared declarations. RASM86 builds three objects; LINK86 combines them into the existing single-segment XIOS format. The other kernel components and their interfaces are unchanged.

make -C kernel/con xios.con xiosnat.con builds PC-MODE and native-only flavours from the same sources. pcmode.lib retains the PC-MODE and enhanced keyboard settings. The build checks fixed system/header offsets and entry jumps before publishing either component. See kernel/con/xios/README.md.

About

Build from source of CCP/M-86 3.1 with pc-mode and Make it as usable as possible (Y2K, Interface...)

Topics

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages