About This Project

The ucsd-psystem-xc project
provides a Pascal cross compiler for producing UCSD p-System code files
on Posix hosts, such as Linux. It also provides some other related
tools, such as a disassembler.

While it is possible to run the original UCSD p-System compiler from
within an emulator, this is very cumbersome for modern developers more
accustomed to the GNU tool chain. This cross compiler also has far
better error messages and other feedback than the original compiler,
because much more code space is available to modern programs.

The other issue a cross compiler addresses is that of bootstrapping.
It is not enough to have the UCSD p-System source files (recently licensed for non-profit use by UCSD). In order to bootstrap
to a self-hosting system, you must first compile the operating system
and compiler (at least) into p-code files, so that the rest of the tools
can be compiled “natively”.

Ancient History

The UCSD P-System is a portable operating system that was popular in the
early days of personal computers, in the late 1970s and early 1980s.

Like today's Java, it was based on a “virtual machine” with
a standard set of low-level,
machine-language-like “p-code”
instructions that were emulated on different hardware, including the
6502, the 8080, the Z-80, and the PDP-11. In this way, a Pascal
compiler that emitted
p-code executables could produce a program that
could be run under the P-System on an Apple II, a Xerox 820, or a DEC
PDP-11.

The most popular language for the P-System was UCSD Pascal. In fact,
the P-System operating system itself was written in UCSD Pascal, making
the entire operating system relatively easy to port between platforms.

By writing a p-code interpreter in the platform's native assembly
language, and a few minimal hooks to operating system functions for
the file system and interacting with the user, you could move a
p-code
executable from another system and run it on the new platform. In this
way, the p-code generated on one computer could be used to bootstrap the
port of the P-System to another computer.

UCSD p-System User Manual:
A modern reconstruction of the UCSD p-System II.0 User Manual is
available as HTML. It includes complete system documentation for
the p-machine, file formats, the Pascal dialect supported by the
compiler, and more.

UCSD p-System Virtual Machine:
A portable virtual machine (p-code interpreter) for the UCSD
p-System. It supports execution of Apple ][ Pascal programs, it can
even display TurtleGraphics using X11.

The ucsd-psystem-xc package is written and owned by Peter Miller and is freely
distributable under the terms and conditions of the
GNU GPL.