Category Archives: open-source

Status Report on the Port of SPITBOL to Apple OSX

We are making progress porting SPITBOL to Apple’s OSX operating system. The needed files can be found in

github osx git repository.

The repository can be downloaded by the command

$ git clone

The makefile has been modified to have 64-bit osx as the default, so to build the system do

$ make

Test spitbol by running various test programs in the subdirectory .text/. For example

$ ./spitbol test/hi.spt

To see if the program runs at all, try

$ ./spitbol

This produces several lines with help information. Note that running spitbol with no arguments just shows the program link is complete and that at least part of the C runtime is working. This does not test any of the translation of the Minimal source code to assembler.

The current status is that the help text can be printed, but even the simplest test yields

Bus error: 10

We will keep you posted.

On a separate front, one user reported problems building 32-bit SPITBOL. The makefile has been updated so that it works using gcc on a 32-bit Linux system.

On the Merit of Transparent Console Windows in Ubuntu Linux

I use Linux Mint — a variant of Ubunbu Linux — for my day to day programming. Here’s a screen shot of what my screen usually looks like:

Usual mode - two console windows.

Usual mode – two opaque terminal windows.

Above you seen two terminal windows. I use the KDE Konsole program; this is my normal mode. I do edits in the right window. I use the left window to view output, search files,
and so forth.

Here’s another mode I’ve just started using:

Screenshot-transparentTwo opaque terminal windows with transparent window in middle

See the difference?

There’s a new terminal window in the middle, but it’s transparent — you can see through it to the windows below.

Now I had known about transparent terminal windows for some time, but I had never never gotten around to trying them. I was happy with my usual mode of just two opaque windows.

A couple of weeks ago I updated my desktop to use the latest version of Linux Mint. Though Mint comes with the Konsole program, you have to dig around in the menus to find it.
There’s always a quick link to a terminal program in easy view, but it’s not for Konsole.

It turns out this version of Mint configures that default terminal program to use a transparent screen. So I tried it, and finally appreciated the advantage of the

Though the transparency is a nuisance when just editing text, it’s great for other situations.

For example, if I need to do a small task, and don’t want to disturb my two normal windows, I just open up a transparent window.

The main advantage I’ve found is that if I’m looking at a web page with instructions on how to do something, then I can open a transparent window, view the instructions
through the window, and enter them directly with much less chance of error.

The Internet is the Open Source Developer’s Reference Manual

What is the internet?

To me the key property of the internet is that was built using freely available — open — source code. So the people who built the internet are, by definition, open source developers, as am I.

We open source developers publish our code on the internet. We also publish our documentation, comments about our code, and comments about the code of others.

We also ask — and answer — questions publicly on the internet. See for example

I have found that when I have a question about how to do something, or how to resolve a problem I come across using someone else’s code, that the best way to get an answer is just to look on the internet. It’s my basic reference manual.

Simply put, the internet is the online Open Source Developer’s Reference Manual.

As a bonus, open source developers have provided a means for other to share content on the internet. Some would view that as the primary function, but I see it as a byproduct of our main goal, to provide a globally useful tool to write more — and better — code each and every day, all whilst keeping a public record of our work.

Version 15.01 of Spitbol Now Available: Supports 64-bit Unix.

This version adds support for x86-64, so that both 32-bit and 64-bit versions of Spitbol are now available.

Downloads in the traditional form are no longer directly supported, since both “Google Code” and “Github” no longer provide downloads built by the project.

Spitbol is now available only from its home at

If you wish to use git to work with the probject, use:

$ git clone

If you just want to use the system, then select “Download ZIP” from the project home page, and extract the files from that.

The binaries for 32-bit and 64-bit versions can be found in ./bin/spitbol.m32 and ./bin/spitbol.m64, respectively.

This 64-bit version is built by default, as 32-bit processors are no longer widely used.

Three tools are needed to build Spitbol:

  1. A C compiler
  2. A C runtime library
  3. An assembler

Previous versions used gcc and glibc for the compiler and runtime support, and the nasm assembler.

This version uses tcc for the compiler, musl for the runtime support, and continues the use of nasm.

The make file makefile now uses tcc and musl to build (only) the 64-bit version. To build the 32-bit version and/or to use gcc, use makefile.gcc.

This version rescinds the support for Unicode added in version 13.05. (This caused enough problems that it was deemed best to abandon this experiment.)

Known problems:

  • The SAVE function doesn’t work. (This loss of function occurred whilst adding 64-bit support).
    Note that SAVE mode was mainly of interest back in the day when Spitbol was proprietary,
    so that one could distribute a program written in Spitbol without having to disclose the source.

Unix SPITBOL 13.05 Released, With Support for Unicode

The SPITBOL project is pleased to announce that Unix SPITBOL 13.05 is now available.

It can be downloaded from

This release includes versions of SPITBOL for both ASCII (8-bit characters) and Unicode (32-bit characters).

The Unicode version of SPITBOL (uspitbol) uses 32-bit characters internally. Character strings are converted from UTF-8 encoding to 32-bit characters when input from the command line, the operating system environment, a pipe, or a file opened in line mode. Character strings are converted from 32-bit characters to 8-bit characters in UTF-8 format when written to a file opened in line mode, a pipe, or when passed as an argument to an operating system procedure.

Program source files, which are read by SPITBOL in line mode, may thus contain UTF-8 format Unicode characters in strings and comments. Identifiers are still restricted to ASCII.

Unix SPITBOL 13.01 Released

The SPITBOL Project is pleased to announce that Unix SPITBOL 13.01 is available.

It can be downloaded from Github: HARDBOL/SPITBOL:

13.01 tar.gz

13.01 zip

This release supports floating-point arithmetic and save files. Load modules and the loading of external functions are still not supported.

SPITBOL Update: SPITBOL X86-64 can compile “hello world”

The SPITBOL project is pleased to announce some progress in porting MACRO SPITBOL to x86-64 Linux. (I use MINT, so this should also work on straight Ubuntu.)

This version is able to compile such simple programs as “hello world” but is not yet able to compile itself.

It can be found at

It has the git tag “x86-64-hello-world” and there is a file with this tag in the Downloads section.

Reaching this milestone has been a long slog, albeit an interesting project in relearning X86 assembly language and coding in SPITBOL.

The translator consists of about 3000 lines of SPITBOL code. LEX.SPT consists of about 1000 lines. It produces a file of lexemes which are fed to ASM.SPIT, which consists of about 2000 lines of code. ASM generates assembly code suitable for input to the NASM assembler.

The hard part was to configure ASM.SPT so it can generate code for X86-32 or X86-64.

To try out the system, do

$ make clean;make
$ ./spitbol test/hello.spt

To see the program in action, set Z_TRACE to 1 at the start of ASM.SPT. Then try

$ ./spitbol test/hello.spt >& ad
$ make z

This will produce a *large* file “ae” with an instruction-by-instruction trace of the MINIMAL code, showing the hardware instructions executed and a report of differential changes at the machine register level.

One of the more challenging — and fun — parts of this exercise in porting has been to produce that trace. I found available debuggers, such as GDB and its graphical front-end DDD, of little use in dealing with assembly language, and so had to write my own debugging trace tool.

I’ll keep you posted on further developments.


SPITBOL License now ‘GPL V2 or later’

I have updated the license for MACRO SPITBOL from ‘GPL v3 or later’ to ‘GPL v2 or later’.

This was motivated by a conversation with Rob Landley, who first made me aware that that GPLv2 and GPLv3 are not compatible.

An explanation of why this is so can be found in the following post by Richard Stallman, Why Upgrade to GPL Version 3.

The result of this modest — indeed only the change from ‘3’ to ‘2’ in the license version — is that people wishing to use SPITBOL can now incorporate it in code licensed under any of the following combinations:

  • GPL v2
  • GPL v2 or later
  • GPL v3
  • GPL v3 or later

Contributions will only be accepted under the new terms — gplv2 or later — to give those who choose to use the code more freedom in their choice of license.

  • Pages

  • May 2021
    M T W T F S S
  • RSS The Wayward Word Press

  • Recent Comments

    daveshields on SPITBOL for OSX is now av…
    Russ Urquhart on SPITBOL for OSX is now av…
    Sahana’s Respo… on A brief history of Sahana by S…
    Sahana’s Respo… on A brief history of Sahana by S…
    James Murray on On being the maintainer, sole…
  • Archives

  • Blog Stats

  • Top Posts

  • Top Rated

  • Recent Posts

  • Archives

  • Top Rated