The XPL0 Programming LanguageXPL0 is a small, fast, block-structured programming language with the look of Pascal and much of the low-level freedom of C. It was created in 1976 for the 6502 and has since been ported to many different computers. XPL0 is still useful for learning, experimenting, writing games and graphics, and understanding how programs and compilers work. The language, compilers, examples, and source code on this site are free. Choose a Version
Each version has its own page with downloads, documentation, examples, and information specific to that system. NewsPolyToy
Explore polynomial curves interactively with PolyToy, a simple demo program that runs on Windows, Raspberry Pi, and MS-DOS. It plots equations up to the fifth degree. Change the coefficients, watch the graph move, and see the roots where the curve crosses the X axis. Sometimes seeing the equation is better than solving it. Download POLYTOY.ZIP (56k, 01-Jul-2026). About XPL0XPL0 stands for eXperimental Programming Language level Zero. The name is kept for historical reasons; the language has been in practical use for decades. It is based on PL/0, Niklaus Wirth's example compiler in his book Algorithms + Data Structures = Programs. XPL0 was originally created in 1976 by Peter J. R. Boyle, who designed it to run on a 6502 microprocessor as an alternative to BASIC. The story surrounding its early history is here. Over the years XPL0 has been used for operating systems, commercial PC programs, embedded firmware, games, graphics, utilities, and many other projects. Versions have run on processors including the 6502, 8080, 6800, PDP-10, IBM-360, 65802, 680x0, PIC, Ubicom, and the 80x86 family. XPL0 is deliberately smaller than mainstream languages, but it is not crippled. It is block structured and supports recursion, integer and double-precision floating point arithmetic, pointers, complex data structures, unlimited-dimensional arrays, separately compiled modules, conditional compilation, inline assembly code, graphics, transcendental routines, generalized device I/O, and up to seven levels of procedure and function nesting. A Small XPL0 ProgramHere is a complete program that displays animated ripples.
int X, Y, Z;
[SetVid($111); \set 640x480x16 graphics giving 65536 colors
repeat for Y:= 0 to 479 do
for X:= 0 to 639 do
Point(X, Y, (X*X + Y*Y + Z)>>5);
Z:= Z - 127; \gently move ripples
until KeyHit;
]
More examples of simple XPL0 programs are here. More About XPL0If you're familiar with C, Pascal, or FreeBASIC, this comparison chart may help show how XPL0 relates to those languages. Hugi Magazine has a couple of articles showing how to make demoscene programs with XPL0. A fully Windows-compatible distribution of XPL0 called EXPL is available at fountainware.com/EXPL. XPL0 is provided under the terms of the Free Software Foundation's General Public License, Version 2. All downloads from this site include source code and are completely free. This site is maintained by Loren Blaney. If you have any feedback, programs you'd like to see, or especially bug reports, he'd be glad to hear from you. loren (dot) blaney (at) gmail (dot) com.
Last update: 19-Aug-2026
|