CompuPhase published articles

Skip to main content (skip navigation menu)

Published articles & books

Cover of Embedded Programming with the Black Magic Probe
ISBN: 9-789090-3498-79
August 2021

Embedded Debugging with the Black Magic Probe

Debugger GUI
Debugger GUI

This book covers setting up and using the Black Magic Probe for programming and debugging ARM Cortex-A and Cortex-M micro-controllers. The Black Magic Probe is an advanced "debug probe" that embeds a “gdbserver” stub. More information on the book, the debug probe, and the associated software is on the project summary page, with links to the various projects and where to source the parts.

Cover of Circuit Cellar Movember 2012
Circuit Cellar
April 2014

A Trace Tool for Embedded Systems

Trace dongle
Trace dongle

Use a DIY dongle interface, a GUI trace viewer, and software to create a compact tracing system.
(by Thiadmer Riemersma)

Cover of Circuit Cellar Movember 2012
Circuit Cellar
November 2012

DIY Automated Component Dispenser

A component carousel
A component carousel

Thiadmer Riemersma's DIY automated component dispenser is a contemporary solution to a problem that has frustrated engineers for decades. The MCU-based design simplifies component management and will be a welcome addition to any workbench.


The "construction manual" was expanded since publication of the article and a few sections were clarified. The new construction manual is in the updated self-installing archive (for Microsoft Windows) with all software, firmware, design files and documentation.
setup file icon Carousel design files & software

Cover of Advanced Game Programming
ISBN: 1-59863-806-8
March 2009

Chapter 10 - Axonometric Projections: A Technical Overview

The article Axonometric projections - a technical overview is part of this compilation of advanced programming articles. (The on-line article has been updated since the publication.)

Cover of Circuit Cellar September 2007
Circuit Cellar
September 2007

Embedded Scripting

Wrapping up the feature article section of the magazine is Thiadmer Riemersma's article about embedded scripting. He explains how to harness the power of the Pawn scripting language. As you'll see, it's possible to extend your firmware without changing it.

Cover of Dr. Dobb's Magazine August 2004
Dr. Dobb's Magazine
August 2004

Building a Callout Control

Thiadmer's balloon-style Windows control is configurable for many purposes.

The article "Building a Callout Control" is available on-line courtesy of Dr. Dobb's Journal.


The time-out feature in the callout control does not work in the published version (there is a fix for it). To make up for this annoying bug, I have improved the control to support a limited subset of HTML tags.

Cover of Windows Developer Magazine June 2002
Windows Developer Magazine
June 2002

Packing DLLs in your EXE

DLLpack is a tool that allows DLLs to be embedded inside an executable and extracted the first time a function from the DLL is called.

The article "Packing DLLs in your EXE" is available on-line courtesy of Windows Developer Magazine and Dr. Dobb's Journal.


The function dpUnloadDLL() wraps around the system function __FUnloadDelayLoadedDLL(). The article says: "I copied the functionality of __FUnloadDelayLoadedDLL() to unload (and delete) all DLLs if you pass NULL for its filename parameter". It turns out, however, that __FUnloadDelayLoadedDLL() cannot take a NULL parameter, and therefore, neither can dpUnloadDLL().

Cover of Dr. Dobb's Journal May 2002
Dr. Dobb's Journal
May 2002

Image Scaling with Bresenham

The graphics algorithm that Thiadmer presents here is quick, produces a quality that is equivalent to linear interpolation, and can zoom up and down.

The article "Image Scaling with Bresenham" is available on-line courtesy of Dr. Dobb's Journal.


Corrections, improved figures and additional notes appear in the errata for "Image Scaling with Bresenham". A sidebar in the original manuscript (not printed in the Dr. Dobb's article) about quick colour averaging is available on-line.

Cover of Windows Developers' Journal December 2000
Windows Developer's Journal
December 2000

Rebasing Win32 DLLs

The "D" in DLL stands for "Dynamic", and that refers in part to the fact that the operating system may have to load your DLL at a different base address than it was linked for. This article explains why that's an event worth avoiding, and provides a utility that tries to automatically base your DLL at an address that won't require dynamic relocation every time the DLL is loaded.

The article "Rebasing Win32 DLLs" is available on-line courtesy of Windows Developers' Journal and Dr. Dobb's Journal.


The article mentions the "-B:address" option for Borland's TLINK32 linker. Next to setting the image base address, the -B: option also strips off the relocation table, and it should therefore be avoided. The newer linker by Borland, ILINK32, has the -b: option (lower case "b") that sets the image base address without stripping off the relocation table.

Cover of Windows Developers' Journal August 2000
Windows Developer's Journal
August 2000

Detecting Vertical Retrace

For animation with no annoying "tearing", you really need to avoid drawing to the graphics adapter when the CRT is also reading from the graphics adapter. You can't just read VGA registers directly to sync up with the vertical retrace, though —you really need a device driver, as this article shows.

The reasoning and some of the solutions behind this article are in the paper: "Detecting Vertical Retrace in Microsoft Windows". The pre-compiled drivers that the article refers to can be downloaded from that page as well; the source code for the drivers is available from Windows Developers' Journal.

Cover of Dr. Dobb's Journal October 1999
Dr. Dobb's Journal
October 1999

The Small Scripting Language

Small, described as "Small C" without the "C", is a typeless, 32-bit extension language with a C-like syntax that features fast execution speed, stability, simplicity, and a small footprint.

The article "The Small Scripting Language" is available on-line courtesy of Dr. Dobb's Journal.

The Small language and its support code has improved considerably since the article was printed, and it has now been renamed to pawn. You can find out all about pawn at its own page.

Cover of C/C++ Users Journal December 1998
C/C++ Users Journal
December 1998

A Balanced Dithering Technique

Dithering with just one neighbour doesn't sound very helpful —unless you're clever about how you visit the neighbours.

The article "A Balanced Dithering Technique" is available on-line courtesy of C/C++ Users Journal and Dr. Dobb's Journal.

The article was based on two papers on this site: "drawing the Hilbert curve" and "Riemersma dither". Refer to those papers for up to date information on the new dithering approach.