• Stars
    star
    346
  • Rank 122,430 (Top 3 %)
  • Language
    Assembly
  • License
    Other
  • Created about 6 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An open source sort-of CP/M 2.2 distribution.

CP/Mish

What?

CP/Mish is an open source CP/M distribution for the 8080 and Z80 architectures.

It contains a collection of software, some from Digital Research and some not, all with proper open source licenses, integrated into a build system which lets you build everything into proper disk images at a moment's notice.

What you get is a working CP/M 2.2 clone consisting of:

  • ZSDOS as the BDOS
  • ZCPR1 as the CCP
  • open source BIOSes for the supported platforms
  • various Digital Research programs from the original CP/M (I'm slowly importing them and integrating them into the build system)
  • various tools copying the functionality of the standard CP/M tools (some of them written by me
  • R.T. Russell's superb BBC Basic, Z80 edition (with integrated assembler)
  • Richard Surwilo's Z8E full-screen symbolic debugger
  • B. J. Rodriguez's CamelForth
  • a build system which provides a turnkey cross-compilation system for producing bootable disk images for any of the supported platforms
  • a classic CP/M syntax assembler and linker for cross-compiling ancient source
  • a simple but useful vi-adjacent editor called qe (written by myself)
  • an emulator for testing CP/M binaries
  • source for everything; no binaries are in this distribution
  • other things which I may well have forgotten to document
  • bugs

Currently it supports these platforms:

If anyone wants to contribute any more BIOSes, I'd love pull requests!

Why?

CP/M is Digital Research's seminal desktop operating system from 1977 that for a decade dominated the personal computer market. It's of enormous historical value and there's a vast wealth of programs written for it. It's even useful today: both to study (as aa superb example of sheer minimalism) but also to use; the Z80 is a common target for homebrew computers, and CP/M is the obvious operating system to run on one.

Don't believe me? Watch this:

Video of me doing stuff on an NC200

The source and binaries have long been available via the (the amazing) Unofficial CP/M Web Site, but the license had a bug in it which meant they couldn't be distributed anywhere else; this was recently fixed so it's now properly open source.

How?

You pretty much need a Unix --- I developed it on Linux. You'll need to install the dependencies. These are the names of the Debian packages:

  • cpmtools
  • bazel-bootstrap
  • libz80ex-dev
  • libreadline-dev

You also need to install the Amsterdam Compiler Kit, which is used as the C compiler (yes, some of the tools are written in C). You'll have to install it from source yourself as it's not in Debian.

Once in place, just do:

make

...and it should build. You'll end up with some .img files in the project directory which are the bootable disk images.

If you want more detailed build instructions, try the script used for automatic builds, which has got the exact commands needed buried inside it. This also has the instructions for OSX.

For information on what to do with these, look in the READMEs in the individual arch/* directories.

Where?

Who?

There's a lot of stuff here, and while I assembled it, I didn't write all of it. See the licensing section below for the full list.

For the distribution work and the bits I did write --- I am David Given. Feel free to send me email at [email protected]. You may also like to visit my website; there may or may not be something interesting there.

License?

This is a big aggregation of software, all with its own licensing. It contains GPLv2-licensed code, so as a whole it must be distributed under the terms of the GPL version 2 (because complying with the GPL also complies with the license of everything else). See the COPYING.gpl2 file for more details.

Specifically:

  • Everything not in arch or third_party is © 2018-2019 David Given and is distributable under the terms of the 2-clause BSD license. See the COPYING.cpmish file for more details.

  • arch/nc200 and arch/kayproii were written by me and are covered by the main CP/Mish license.

  • third_party/bbcbasic contains a copy of R.T.Russell's Z80 BBC Basic, which is distributable under the terms of the zlib license. See the third_party/bbcbasic/COPYING file for more details.

  • third_party/libstb contains a copy of Sean Barrett's stb library, which is partially in the public domain and partially distributable under the Expat license. See the third_party/libstb/COPYING file for more details.

  • third_party/zcpr1 contains a (modified) copy of the ZCPR1 CCP replacement, written by the CCP-GROUP, which is in the public domain. See the third_party/zcpr1/COPYING file for more details.

  • third_party/zmac contains a (modified) copy of the ZMAC macro assembler, written by George Phillips, Thierry Join, Mark Rison, Russell Marks, Colin Kelley, John Providenza and Bruce Norskog (some time in 1978!) --- and probably others. To the best of my knowledge this is in the public domain. See the third_party/zmac/COPYING file for more details.

  • third_party/ld80 contains a (modified) copy of the LD80 macro assembler, written by (as far as I know) George Philips and Gabor Kiss. It is in the public domain.

  • third_party/zsdos contains a (modified) copy of the ZSDOS CP/M BDOS clone, written by lots of people but mainly Cameron W. Cotrill and Harold F. Bower. This is available under the terms of the General Public License version 2. See the third_party/zsdos/COPYING file for more details.

  • third_party/z8e contains a (modified) copy of the Z8E symbolic debugger, mostly written by Richard Surwilo and Jon Saxton. It is in the public domain.

  • third_party/libz80ex contains a copy of the libz80ex Z80 emulation library, mostly written by Pigmaker57. It is distributable under the terms of the General Public license version 2. See the third_party/libz80ex/COPYING file for the full text.

  • third_party/camelforth contains a copy of CamelForth for the Z80, written by B. J. Rodriguez. It is distributable under the terms of the General Public License version 3. See third_party/camelforth/COPYING for the full text.

  • third_party/dr contains a variety of software, all by Digital Research. It is distributable under a rather complicated license which kind of accreted over the years but is mostly a do-what-thou-wilt license equivalent to 2-clause BSD. See third_party/dr/COPYING.md for more information.

More Repositories

1

wordgrinder

A word processor which gets the hell out of your way and lets you get some work done.
Lua
943
star
2

ack

The Amsterdam Compiler Kit
C
420
star
3

fluxengine

PSOC5 floppy disk imaging interface
C++
352
star
4

cpm65

CP/M for the 6502
Assembly
266
star
5

cowgol

A self-hosted Ada-inspired programming language for very small systems.
C
238
star
6

clue

An experimental C to Javascript/Lua/Perl5/Lisp/Java compiler
C
144
star
7

minix2

Minix 1 and 2, Quick and Dirty editions
C
117
star
8

typetalk

A SmallTalk like live coding system running in the browser, based on TypeScript.
TypeScript
65
star
9

luje

a Java virtual machine written in pure Lua
Java
61
star
10

fforth

A small, portable Forth written in Posix C
C
44
star
11

LBW

Experimental tool for running Linux binaries on Windows
C++
39
star
12

telinkdebugger

A Raspberry Pi Pico-based debugger bridge for the Telink SWS debug protocol.
C++
22
star
13

pcemu

A software 8086 PC emulator.
PostScript
19
star
14

polf

A toy
Assembly
17
star
15

piface

Bare metal boot loader for the Raspberry Pi's VideoCore processor (no ARM!)
C
12
star
16

narcissus

A chording keyboard tool for X
C
11
star
17

cowjac

An experimental Java bytecode to C++ transpiler
Java
10
star
18

jpegfinder

A simple tool for scraping jpeg frames from files. Suitable for recovering corrupted MJPEG files. I'm looking at you, Hubsan.
C
10
star
19

glueesp

A port of the Geoworks Glue DOS linker.
C
10
star
20

ibm6770keyboard

A USB interface for the IBM 6770/6780 keyboard.
C++
9
star
21

cowbel

An experimental programming language
xBase
8
star
22

btracker

A chiptracker editor and player for the BBC Micro.
Assembly
8
star
23

calculon

A very small, fast shader language using LLVM.
C++
8
star
24

bogomandel

A silly toy Mandelbrot program for the BBC Micro.
Assembly
7
star
25

dso152-breakout

Breakout for the Fnirsi DSO152
C++
7
star
26

plmc

A compiler for PL/M targeting LLVM bitcode.
Yacc
6
star
27

dbztool

A command line tool for accessing the bootstrap protocol on Dragonball CPUs.
C++
5
star
28

gcc-vc4

An experimental port of gcc 4.8.1 to the VideoCore IV.
C
5
star
29

gruntle

A text-based CYO MMORPG engine
HTML
4
star
30

cshell

A very simple command line shell for the Commodore 64.
Assembly
4
star
31

qemu-z80

Z80 support for qemu
C
4
star
32

bterm

Firmware/hardware to use a Brother WP-1 word processor as a serial terminal
Assembly
4
star
33

vtech6502

A collection of data about the internals of various VTech 6502-based toys.
4
star
34

cparser

C
4
star
35

maxii-keyboard

PSoC5 firmware to for an ancient MAX-II industrial keyboard
C
4
star
36

libfirm

C
3
star
37

spey

A spam-filtering SMTP proxy using greylisting
Shell
3
star
38

comal65

A Comal interpreter for the 6502
Assembly
3
star
39

stellation

A web based real time space warfare RTS.
Shell
2
star
40

vimutti

Tool for decrypting Buddha Machine flash images.
C
2
star
41

pblq

Amstrad eMailer PBL boot loader client
Shell
2
star
42

objective-lua

A dialect of Lua extended with syntax borrowed from Objective C to add object orientation support.
Lua
1
star
43

ebooksyncer

A tiny tool for syncing (and decrypting) eink Kindle books from the device to a directory for backup.
1
star
44

flooded-moon

The moon, like you've never seen it before.
POV-Ray SDL
1
star
45

uboot-pw1

Customised uboot for Kindle Paperwhite gen 1 devices.
C
1
star
46

bmdkey

Python
1
star
47

sdcc

Patched sdcc for Fuzix
C
1
star
48

fluxengine-testdata

Test data for the FluxEngine project.
1
star
49

ab

Yet Another Build Generator
Python
1
star
50

fgit

Tools for using Fossil as a git client.
Shell
1
star