ack/plat/cpm
George Koehler 20a4d401d0 Add first long-long test for linux386.
Skip the long-long test set on other platforms, because they don't
have long long.  Each platform would need to implement 8-byte
operations like `adi 8` in its code generator, and set long long to
8 bytes in its descr file.

The first test is for negation, addition, and subtraction.  It also
requires comparison for equality.
2019-09-05 13:13:02 -04:00
..
emu Raise _XOPEN_SOURCE from 500 to 700 2019-03-22 14:35:07 -04:00
include Add some BIOS bindings, and a zero-terminated print string routine. 2019-06-24 23:07:17 +02:00
libsys Add some BIOS bindings, and a zero-terminated print string routine. 2019-06-24 23:07:17 +02:00
tests Add first long-long test for linux386. 2019-09-05 13:13:02 -04:00
boot.s Fix register corruption when incrementing locals; attempt to solve the 2019-06-17 23:31:54 +02:00
build-pkg.lua Experimentally use rst 1 to optimise frame variable loads. Reduces Star Trek 2019-02-07 00:06:32 +01:00
build-tools.lua Experimentally use rst 1 to optimise frame variable loads. Reduces Star Trek 2019-02-07 00:06:32 +01:00
descr Add some BIOS bindings, and a zero-terminated print string routine. 2019-06-24 23:07:17 +02:00
README Update README. 2019-06-16 20:10:13 +02:00

The cpm platform
=================

cpm is an i80-based BSP that generates CP/M executables that can be run on any
CP/M-compliant machine.

CP/M has special needs in many ways, the main one being that it doesn't
support byte-accessible files --- only complete 128-byte sectors can be read
or written. The port's read/write/open/close/lseek etc should handle this
transparently, but trying to write a fragment of a sector will involve a
read/modify/write cycle. No buffering is done (that's stdio's job).

File descriptors 0, 1 and 2 represent the console, as usual.

In addition, there's a special interface to give applications direct access
to CP/M. See include/cpm.h for details.

Floating point is not supported and attempts to use floating-point numbers
will cause the program to terminate.

Example command line
====================

ack -mcpm -O -o cpm.com examples/paranoia.c

The file cpm.com can then be run.

(Although note that Paranoia is very big, and you'll need a CP/M machine with
lots of memory for it to fit. Which it does, just.)


David Given
dg@cowlark.com