Software Components / Embedded Systems


ATLAST (Autodesk Threaded Language Application System Toolkit) is a (very) FORTH-like language kernel designed to be embedded into applications, rendering them extensible to a degree far beyond normal macro languages. Indeed, using ATLAST, it is often possible, in the spirit of FORTH, to “factor out” much of the control structure from an application, reducing it to a set of data-driven services whose interaction can be modified by the user with ATLAST. ATLAST is written entirely in portable C, and has been tested on MS-DOS, Windows, a variety of Unix machines, and the Macintosh. Complete documentation is included in XHTML, PDF, and LaTeX source code form. ATLAST has been placed in the public domain and may be used without restriction or compensation. New release 1.2 (October 2007) adds support for environments with read-only constant strings, fixes optimisation problems with recent releases of GCC, and includes online documentation.


The BGET Memory allocation package. Useful for stand-alone (embedded systems) use and as a replacement for malloc and other system-provided allocators which may be too slow or otherwise unattractive. Layering this package under the Microsoft Windows 3.1 allocator, for example, sped up some programs by a factor of 10. Extensive diagnostic and debugging support is provided, to help find memory leaks, clobbered buffers, use of pointers to released buffers, etc. In portable C.

Neural Network on a Commodore 64

A neural network simulator associative memory demonstration for the Commodore 64—really! Includes complete source code in BASIC.


Cellular Automata Laboratory invites you to explore the world of cellular automata with the aid of a high-speed programmable simulator which runs within your Web browser. Cellular automata rules are defined by short programs written in JavaScript or Java. Rule definitions in JavaScript are compiled directly inside the browser and do not require installing a programming environment on your machine. The accompanying on-line laboratory manual explains the theory of cellular automata, how to use the simulator programs, documents the many ready-to-run rules included, describes how to create your own original experiments, and contains a comprehensive bibliography. A development kit supplies source code for all of the rule definitions and the files they use, providing a starting point for your own explorations. New: 2017 update includes browser-based simulation and JavaScript rule definition.


Developed in 1990 as a demonstration of the AutoCAD Development System (ADS) then being readied for shipment with the upcoming AutoCAD Release 11, ClassWar used ADS and the ATLAST embedded language toolkit to implement a true object oriented extensible database for AutoCAD, in which graphical objects could define their behaviour through embedded code. This is an archive of the code and documentation as it existed in May, 1990. It is not usable with any current version of AutoCAD and is of historical interest only.


Dumb Interpretively Executed String Expression Language in portable C. This is the kernel of a tiny string language you can embed in applications which need limited macro facilities. You can extend the function set by supplying C code. DIESEL is used in AutoCAD for menu macro processing, and has been released into the public domain by Autodesk, Inc.

NETPBM Utilities

Additions to the NETPBM package. Currently contains ppm.shar.gz which (extracted into the ppm subdirectory), contains additions to the ppmdraw library to implement drawing ASCII text in a pixmap, using a stroke font which can be scaled and rotated. There's a test/demo program included, as well as two new PPM applications, cietoppm and ppmlabel. Cietoppm makes a portable pixmap containing a plot of the CIE “tongue” diagram, optionally showing the colour gamut of various display systems (NTSC, PAL/SECAM, SMPTE, HDTV, etc.). Ppmlabel draws ASCII text, specified either on the command line or from a file, into a portable pixmap. Both cietoppm and ppmlabel require the text drawing extensions to ppmdraw. The archive pnm.shar.gz contains a new PNM filter, pnmhisteq, which performs contrast enhancement through the technique of histogram equalisation. See the README file for details.

A Perl script which mobilises standard PBMplus/NetPBM utilities to add simulated shadows to bitmap images is available. Visit the pnmshadow page for details, sample images, and download instructions. A Shadow Server is available which allows users who cannot install NetPBM to use this program on uploaded images.

Windex is a Perl script which prepares an HTML document containing a graphical index for a collection of image files, with each small thumbnail image linked to the corresponding full-size image.

sbigtopgm is a filter which translates image files produced by the Santa Barbara Instrument Group's astronomical CCD cameras into PBMplus portable graymaps.

Passport Photo Maker creates a ready to print page of passport (or other) photos of a specified size, adjusted for the page size and resolution of a printer, with as many copies of the original photo as will fit on the page.

pnmctrfilt simulates the effect of an optical centre filter on a wide angle lens, allowing the elimination of vignetting in images taken without a centre filter.

The Postage Stamp Rasteriser

The “Postage Stamp Rasteriser”, a small, highly portable and Reality Hardened rasteriser which scan converts lines and filled concave or convex polygons. Polygon scan conversion contains compensation for almost a dozen problems of singularities and numerical instabilities which cause incorrect results in the simple algorithms you find in textbooks. Optional TIFF output is available to aid in the inclusion of preview images in DOS and Windows PostScript files. Written in portable C; public domain.

Simulated Annealing: The Travelling Salesman Problem

The travelling salesman problem—finding the shortest itinerary to visit a set of cities— is a classic of combinatorial optimisation: easy to state but hellishly difficult to solve. This page demonstrates the technique of simulated annealing to find near-optimal solutions to this problem.


SMARTALLOC, a portable C package based on the standard malloc()/free() functions, which detects many common memory allocation errors such as memory leaks, releases of bad pointers, use of buffers after freeing them, and counting on the initial contents of allocated buffers. Most programs can use SMARTALLOC simply by recompiling with its header file and including the code. SMARTALLOC can be disabled for production use with a simple #define.

Colour Rendering of Spectra

This paper explains how to calculate, given the spectral composition of a light source, what colour it will be perceived as by the human eye, and which red, green, and blue intensities best approximate it on a computer monitor. C source code which implements the technique is included.