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.
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.
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”,
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.
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
.
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.