cityscape banner2


Some examples from the Ratbag Games days:

images 4 images 1 images 3

Click here for a good example of some of the published game titles I have worked on.


Some code examples from the Norman Data Defense Systems days:

norman logonorman products

INT13.ASM - An example of x86 code for Norman Access Control's encrypted device driver. A good example of some of the assembly language I was responsible for writing at Norman. The code is installed from the disk's master boot record and loads before the operating system. It replaces MS-DOS/BIOS's factory ROM code for handling disk I/O (known as interrupt 13h).

CmdLine.CPP - Usage example of my command line parsing library shared by all Norman Access Control applications.

EncryptThread.cpp -Win32/MFC code to encrypt any drive under Windows and update its progress in realtime so as not to upset background applications during an entire disk encryption. Updates the Master Boot Record with progress to cope with power failures and other disasters when the drive is partially encrypted.'


About Norman Boot Code:

Both Win9X & NT switch from real to protected processing mode during system startup. This neccessitated both 16 and 32-bit versions of our drivers. Win9X required 'VxD' driver software, coded entirely in 32-bit assembler, while NT required a WDM style of driver, written in C. One of the biggest challenges I faced was keeping both 16- and 32-bit drivers in synch during the boot-up of an encrypted system drive. The decryption process must be transparent, to the operating system throughout the undocumented nightmare of disk activity that is Windows startup & shutdown, especially at the point of change-over from 16- to 32-bit processing.

The 16-bit driver code, had to load before any of the operating system bootstrapping code, and had to be split up and stored within individual sectors (512 bytes). They had to load correctly and operate without any filesystem knowledge or operative system API's, so a great deal of low-level utility routines had to be written to support any requirements the drivers would have. The sectors used to store driver code and data were, scattered across various places on the hard drive (not all of them within the standard filesystem!), had to be marked as in-use system sectors if any file-system had claim to the sectors in question. Each type of file-system (FAT12, FAT16, FAT32, NTFS) presented different challenges for this method of storage and was a delicate art that I eventually got the hang of.

For more example code and documentation, please browse the files made available at the bottom of this page.


My Bluetooth extensions for the wxWidgets multi-platform library:

 wxWidgetsLogobluetooth logo

wxBluetooth Technical SpecificationA multi-platform bluetooth library developed for an application designed to convert a home computer (Mac, Linux, Windows) into a free-zone for a wide-area network built on a combination of bluetooth and traditional networking, To explore this code, please find bluetooth source and demonstration projects in the file browser below.



greggyp logo2


To explore in more depth, I have made available some public-domain source-code as well as some examples of my documentation. This part of the site is a work in progress, and files can be found by navigating through the folders and files displayed below this section of the site (please scroll down to see files available for viewing).