Hacks, a.k.a. Sins of the past
Last update: 2005-03-14
IN THE PIPELINE...
An update of these pages is long overdue. Some of this dates back to
the beginning of 2001. This is what should be coming (most recent first):
- Onnama:
Yet another implementation of MIPS on an FPGA. Includes a simulator and
test cases, VGA graphics, serial, etc..
- Hard-C:
A C-like language for synchronous parallel programs, mostly inspired by
Timogriffer C, with a nod to Handel-C. The compiler
generates Verilog and some designs have been tested on Xilinx Spartan FPGA,
using Xess' XSA-100 development board and the Xilix ISE WebPack. The
linked file is an old snapshot of the development with many features missing.
- Yet Another tiny and super light-weight http server library, this one
focused on dynamic contents with applets linked into the server.
- A basic implementation of the Gated Single-Assignment form, including
- TFLC:
Tiny Functional Language Compiler, translates to native x86 on the fly.
- A small AVR Thermostat (I2C, Serial, relay, etc) thermostat-2313-v0.1.tar.gz).
- PocketHaskell:
A tiny haskell subset compiler and bytecode interpreter.
As a tiny proof-of-concept, primes running on a Palm Pilot (alas,
GC is not implemented).
- A much updated PocketSmartGoban (nee LispGoban)
Programming Language Implementation
Compilers
- The Alvilda Optimizing Compiler
- Haskell
- PocketHaskell, put Haskell in your
pocket.
- Bits of a Haskell frontend: Haskell Kit?
- Coauthor of the haskell-mode
for Emacs (one of many haskell-modes available).
-
Written a bunch of Haskell code, including an implementation
of a subset of Haskell for very small machines.
-
Minor tweaks to Erik Meijers excellent CGI/HTML package. Someone should
polish it, extend it and make it a standard library.
-
Retro-computing: A BASIC (anno 1974) interpreter. For the benefit of a
family
member.
Hardware
AVR
This nifty little micro controller has got a page of its own. See my getting started with AVR page.
Nascom
Apart from the retro-computing project mentioned above, I've been working on restoring my Nascom II and saving what can be saved of documentation, programs, and tricks. All of it so far can be inspected at The Nascom Homepage. I should mention that I have a rival at MIXTEL.
Misc
Doom
-
In an effort to bring up DosDoom
under Solaris I produced a patch to version 0.61.
LIRC - Linux Infra Red Controller
Linux kernel
-
Wrote the first SCSI driver (aha1542) for Linux v.0.12. I'm no longer
the
maintainer.
-
Made the first working version of PLIP for Linux, based on the work of
Donald Becker. Added various improvements. Had a first version of an
8-bit
PLIP working, but the result was disappointing, thus dropped. I'm no
longer
the maintainer.
The Game of Go
I have written a large amount of Go code over
the years, like an extremely fast and original pattern matcher, an
implementation
of Bensons unconditional life algorithm, a small and efficient SGF
reader
and writer (now part of Gnu
Go), efficient implementation of basic Go data structures, and
several
Goban implementations. Most of this in C, but there is also code in Scheme
and Haskell. Over the time, more
and
more of this code will find it's way to this page, but a lot is still
hiding
in the archives. So far what is available is (in mostly random order):
-
When I tried to convince General Magic to write a Goban for the MagicLink, I wrote a simple implementation of a goban
in
C along with a the basis of a UI

Features included: unlimited undo, notion of Ko and
komi,
and semi-automatic scoring after both Japanese and Chinese rules.
Notice,
the notion of Ko is only approximate, but handles %99 of real-world
ko
situation.
-
A much older project (and in IMHO more interesting) is an
implementation
of the essential Go structures (groups and liberties), with incremental
update and undo. Somebody completely missed the point and put it up
under
the name tinygo2
the Go ftp server. I have
a
version here (called IncrementalGo)
with an added explanation
I gave to the GnuGo group.
Even today, nine years later, I'm reasonable happy with the code,
but
there are number of things I would change. For one thing I'd change the
position representation of use factors of two, eg. X+Y*32 and do away
with
the ``direction'' array. Also, the handling of Ko in simple-go.c above
is much more elegant.
- Bensons unconditional life algorithm. Forthcoming (but was
seemingly never
finished).
-
MyGoban (for the
PalmPilot,
works on the XCopilot emulator, but bugs out on the real PalmPilot. I'd
be much obliged if someone could help me find the bug).
-
SGFLib, part of MyGoban
and now also part of Gnu
Go.
-
LispGoban 0.1 is a
reimplementation
of MyGoban in Scheme,
using the excellent LispMe
by Fred Bayer. LispGoban is roughly at the same stage as MyGoban, but
works
and has been developed 100% on the PalmPilot, mostly while waiting for
other things (like riding the bus, etc).
PalmPilot
-
I haven't had time to write much for this my little pocket bulge, but I
did take the memopad example and turn it into a compilable package.
Here's
my CompleteMemoPad.zip.
-
See MyGoban and LispGoban above.
Thorn's priceless hosting services Unlimited.