Return to Home
Below is a compilation of some things I've worked on over the years. Feel free to put to use anything you find interesting!

Assembly (x86) Library

Status: Updated as needed.

DOS Library

Status: Updated as needed.

Existing software I've packaged up in FreeDOS package format.
Item Version Size Released MD5
HiMemX 3.35 44.2 KiB 03/27/2020 E2875930B45E6C3200A2EA8217129E88
HimemX is an XMS manager derived from FreeDOS Himem, but with additional bugfixes, optimizations and extensions. This version implements an alternative memory (re)alloc method that may work better if extended memory consists of multiple blocks. This package differs from the zip file available from Baron-von-Riedesel's GitHub in that I modified the readme file to include a description for UMBM, unlike the original.
HiMemX 3.34b 31.4 KiB 03/23/2020 FE6E6881988398DCF8C7701212B26EF5
The existing version 3.34 on the FreeDOS software list is basically the same as this package, however the official binary was compiled on 9/5/2015 and this one is built fresh from the code on Baron-von-Riedesel's GitHub.
RDisk 2015-03-05 17.7 KiB 03/24/2020 021853E1200130E2143EEF3268AD28D7
RDisk is a driver which creates a RAM-disk from up to 2 GB of XMS memory. This package contains the same binary as the package on Jerome Shidel's FreeDOS software list but with more tailored documentation.
UDVD2 2015-03-05 32.2 KiB 03/24/2020 C01125C3744B6F796D136CAA6325EAF6
A CD/DVD UltraDMA device driver. This is the same basic package as available on the FreeDOS software list but with a couple extra keywords in the LSM file. Also, the stray row of 0x1A bytes at the bottom of the original source code file has been removed to avoid potentially choking the compiler.
UHDD 2019-03-31 40.6 KiB 03/24/2020 BF462F3FB11F0265A18E1BA78C39BD4D
UHDD is a disk-only caching driver for up to 22 BIOS disks on up to 9 "Legacy" and Native-PCI SATA/IDE controllers. This package contains the same UHDD and CC binaries as the UIDE package available on the FreeDOS software list but this package is tailored to UHDD specifically (UIDE has been removed as it already has a separate package) and the LSM file contains a couple extra keywords for ease-of-searching. Also, the stray row of 0x1A bytes at the bottom of the original source code file has been removed to avoid potentially choking the compiler.
UIDE 2015-03-05 53.0 KiB 03/24/2020 31FF4ADE04977A702125FD7D9A489CD4
A general-purpose caching driver for DOS drives, Floppy, CD/DVD, SATA and UltraDMA disks. This package contains the same UIDE and CC binaries as the package available on the FreeDOS software list but this package is tailored to UIDE specifically (UHDD has been removed and given its own package) and the LSM file contains a couple extra keywords for ease-of-searching. Also, the stray row of 0x1A bytes at the bottom of the original source code file has been removed to avoid potentially choking the compiler.
XMgr 2015-03-05 33.2 KiB 03/24/2020 890F04CD7B6FAC0A2C26CDF04C89299C
XMgr is an XMS manager which handles up to 4-GB of RAM and supports V3.70+ UMBPCI. This package contains the same binary as the package on Jerome Shidel's FreeDOS software list but with more tailored documentation.


Status: Updated as needed.


Status: Cancelled

Kernel Series 2 Modules
Display Module 2.0 25.4 KiB 07/17/2008 C58040756C84DF55130916A43A39FE06
This is the complete PowerBASIC source for the module that powers any and all things graphics related. It currently only supports 8 bit color, but future modifications will add 16 and 24 bit support as well.
File Module 2.0 15.2 KiB 07/30/2008 5E7181C3197C382D53EACCE1D71B28BC
This module controls all manner of file access for the new kernel. Includes Windows-style LFN support.
Hardware Module 2.0 14.8 KiB 09/02/2008 424CE41E4B9267DE565E318E64B481D0
The Hardware Module provides low level detailed interaction with the devices in the computer. Includes mouse support and drive probing.
Text Module 2.0 16.5 KiB 09/18/2008 ADE3ADC2D2AE7592D091AA34763B5A0D
A collection of routines for manipulating text, entirely in XMS. Supports text objects up to 64MB in size.

Kernel Series 1
kernel 1.40 140.7 KiB 5B67D6032D97E890D9E93EE9923DD796
kernel 1.35 125.3 KiB 0BC6FCFE6B9978A1B203EC1D7A1CE9A4
kernel 1.34 122.5 KiB 9A73FE9AC8D4AE387BD06C26E60C6020
kernel 1.33 132.7 KiB C3AF1221C3B1FB744B013BC8FF3964A7
kernel 1.00 98.2 KiB 4D7007CF759C53182C41E1F6ED4E651E

Feature concept demos
CD interface demo 1.00 58.2 KiB 10/04/2010 288621C627D144C35C10FD2864DF22DF
This is a demonstration of the audio CD support routines in the Sound Module.
MIDI demo 1.00 79.6 KiB 4/28/2011 BB1A8022F04E4DA69A1568AFB9E9E016
A demo of the MIDI routines in the Sound Module.
sound_and_MIDI_drivers 1.00 17.3 KiB 4/28/2011 530188B70B2D13C952D3D52B33C84944
These are hard to find [out of production] drivers for DOS which enable sound and MIDI support.

Exelyx Applications 1.00 606 bytes 12/30/2007 A42CFD07DD48DDB6B3DB51F614C2F3EA
A simple clock which stays resident in the upper right corner of the screen. Originally made only to test the kernel's multitasking and priority level processing. Includes assembly source code. 1.00 597 bytes 12/30/2007 0ED36BFB84456ABAD32F2A986F21F083
A plain date display app for the Exelyx kernel. Uses the priority functions of kernel 1.40 and up. Includes assembly source code. 1.00 692 bytes 12/12/2007 73EC788AE52A60EDCEE13380D71C344E
A utility which constantly prints the number of instruction loops being executed per second on your computer. Also includes assembly source code.

Development Tools
TechRef.rtf 1.00 29.3 KiB 12/30/2007 6FBA0B66F89C460BD1CC07F2E5C5367E
The Exelyx kernel technical manual, which details everything from the kernel's internal assembly opcode set to the complete error code list and more... full of intricate goodies! 1.00 46.9 KiB 12/11/2007 367A78E937AF67180F773AA549B18316
The Exelyx Assembly Compiler. A program which compiles assembly code into an executable program. Includes 'pachelp.txt', a guide for use, incomplete as it might be. 1.00 41.2 KiB 12/9/2007 E625FCEFA715603D0917D471663A80DA
This compiler will take a BASIC source code file and translate it into Exelyx assembly. It will be compatible with the BASIC programming language, and will support many of PowerBASIC's additional statements. Any programs you have which are written in QBASIC or PowerBASIC should be easy to compile and run under Exelyx, usually without modification. It will also support accessing the API functions of other applications and the kernel itself through interrupts.

JavaScript Library

Status: Updated as needed.

BrowserGet.js 1.00 1.2 KiB 3/16/2020 E41A02FF350A6E5EBBD96A5E9BD4FAAB
A quick-and-dirty function allowing basic detection of the browser in which it's running.
Browser Detection Demo.html 1.00 887 bytes 3/16/2020 60B6E8DB8FA652A674995C370764F484
A demo of the BrowserGet function.
Sorting.js 1.00 8.7 KiB 3/11/2020 01CD9FC73A30733B4978993B62B08760
A variety of sorting algorithms in one handy library! Includes Binary, Bubble, Heap, Insertion, Merge (Top-down), Merge (Bottom-up), Quick, Quick (Lomuto partitioning), Quick (Hoare partitioning), Radix Bucket, Radix LSD, Selection, and Shell algorithms.
Sorting Algorithm Demo.html 1.00 6.3 KiB 3/11/2020 1A460FFFBFC5D56C9C98FAF7445243A2
Illustrates the difference in execution time amongst the various sorting algorithms in Sorting.js.
WordSplit.js 1.00 3.5 KiB 3/11/2020 1B5B15ABA0BD2842D6E881BBDAF9D421
WordSplit is a JavaScript port of my VBDOS ParseWord routine, which itself was a port of the original GETWORD.BAS with one significant enhancement - the ability to split a string into an array, eliminating the need to repeatedly call GetWord multiple times to retrieve whichever word is needed.
WordSplit Demo.html 1.00 2.0 KiB 3/11/2020 59CC920F3B6C5BD04B4A21D3B812ABD9
A demonstration of how WordSplit differs from JavaScript's built-in Split function.

QBASIC Library

Status: Updated as needed.

GETWORD.BAS 1.00 1.7 KiB 1999 FB969BD9880030492ADA999DAB4A6D0B
One of the most useful pieces of code I've ever written, it's found use in numerous situations. Back when I wrote it, the various BASICs I used (BASICA, QBASIC, VBDOS, PowerBASIC) had no function to split a string based on a certain character... so I made my own. Mind you, this was long before modern languages like JavaScript shipped with their own method for doing so. Even now it proves useful as it splits strings differently than the built-in offerings of JavaScript. 1.00 4.7 KiB 1999 D78E7E0BF6CADD45BDCFBC63F3EA52F5
Ah, yes, the dreaded Y2K bug! Amidst the grandiose predictions of "experts" that application programs the globe over would collectively perform a lemming-style address jump to their deaths when their RTC overflowed to zero, I did what I always do: wrote a little code to probe, test, and solve. The result is a collection of four BASIC source files comprising an installer, uninstaller, a test to see if the computer in question is even affected by the Y2K bug to begin with, and a patch which fixes the issue if it is. Not an issue nowadays, granted, but back then it was awesome to see this code enable some pretty ancient MS-DOS systems suddenly have the correct date when before they could not manage to do so.

Warp OEM

The first (and only) smartphone ROM I ever made. It took a mediocre Android-based phone and turned it into a powerhouse, able to handle much more advanced apps than otherwise possible.

Status: Completed; no longer updated.

Version 2.75 2.75 143.6 MiB Unreleased BF4AA84CD46F9EB37F3192EEEBD7494D
Version 2.70 2.70 115.7 MiB 9/9/2013 4BEAF9D5CF9D80B69BB041E9B6CFE612
Version 2.53 2.53 115.4 MiB 5/29/2013 B4031402B2BAF82881D768F985FE52BE
Version 2.51 2.51 16.3 MiB 5/22/2013 8E80061361FCF8574C3305EDBABDFD82
Version 2.50 2.50 116.3 MiB 5/20/2013 F4716DD5A9A2568DB2E53EC5260CBD30
Version 2.10 2.10 128.8 MiB 5/8/2013 E48F1E21381B98A7588C49DD9B183B07
Version 2.01 2.01 122.7 MiB 4/6/2013 FF6623610AEF72E3DB7C3A6860D9C297
Version 2.00 2.00 122.3 MiB 3/15/2013 EDC225E3D4DF37380D476E085C844805
Version 1.55 1.55 129.9 MiB 1/13/2013 71DBDE6B80507AA18CDA4F28D40C32DC
Version 1.50 1.50 134.7 MiB 9/30/2012 30905D9C2360E983D2485E30B53CA419
Version 1.42 1.42 115.1 MiB 9/15/2012 47D786434533830B297133474C9C5E4A
Version 1.41 1.41 115.1 MiB 9/9/2012 DE8E388342BBD6015C04FD3B53401192
Version 1.40 1.40 107.9 MiB 9/8/2012 9887A57FC700C33CC3666B5DBDF32D78
Version 1.39 1.39 107.0 MiB 9/4/2012 CCFE292E0DA5B3A0BB8C49265A753F38
Warp OEM 2.xx Adreno Tweaks 1.00 376.9 KiB 6/29/2013 84E6828A2C60B68E662E29EBD4289CEE
A flashable to add the Adreno Tweaks (by CosmicDan and Spizzy01 of XDA) into any version of Warp OEM from 2.00 through 2.53, which will majorly boost GPU performance. Special thanks to Dizzle1 for customizing the initial tweaks for the Warp and Blyss for confirming they work on WOEM 2.53! May work with some other ROMs as well, but this cannot be guaranteed.
Warp OEM 2.51 to 2.53 Update patch 1.00 3.2 MiB 5/31/2013 A62E863EED2C4E5D70C5B1B22553E757
For those who have just flashed version 2.51 and would like the security update included in Warp OEM 2.53. Note: Version 2.53 had some updated apps versus version 2.51, however this patch does not include these. For the sake of everyone's sanity, your app folders will not be touched when using this update.
PowerNap v2 2.00 1010 bytes 5/8/2013 9AC00A98B477507A787E03D4702729A6
Updated version which, compared to the original (above) doubles the maximum speed of the device during sleep. Use if the upon-wake lag in the original is too much to bear.
PowerNap 1.00 773 bytes 3/16/2013 9B4E3C7B0FA3EBC2F7024FACEA8B3803
The script powering one of the new features of Warp OEM. Now available separately! This must be used with a kernel which supports asynchronous init.d script execution, such as the Alien Kernel. Place this in the init.d2 folder to have it run upon startup.
Warp OEM 2.xx smoothness fix 1.00 188.0 KiB 3/19/2013 5CF2FD57584BA372894BC49BED8E445E
Flash this after installing the ROM itself to remove graphical jumpiness by reinstating the FPS cap. For users who prefer smoothness over speed.
Mercury updater-script 1.00 12.7 KiB 3/28/2013 881F83784B6BB05BD719A1E951084D76
A complete installer script solution which mounts, formats and sets permissions as necessary and also checks which type of custom recovery the user has and verifies the platform accordingly. For custom ROM devs who would like to use the installer found in WOEM.