Software I Have Written

I have written several programs over the years. Some screen shots are available here; executables, and in some cases the source code, are available for download. Please note, the executables are here for your convenience only. I claim no responsibility for any problems, any loss of data, etc. you may incur as a result of running any of my programs, and if any problems do occur, by downloading my programs you agree not to hold me liable for any damages or inconveniences you may endure as a result. This does not mean my programs are virus-ridden, dangerous pieces of code; I merely need to protect myself legally.


This is a simple 2D Breakout-style game I wrote in Borland C++, using the freeware SDL graphics library (http://www.libsdl.org).
btype.zip This is a simple program to display binary files as text. Used it to inspect Internet Explorer's history file, index.dat, to find a URL for a website I forgot to bookmark (or write down!). (FYI, it appears Internet Explorer tries to keep track of all websites you've recently visited in the file index.dat. From a DOS box, try a "dir /as" or a "dir /ah" on the following directory: "C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5". You may be surprised by what you find. Replace "Administrator" as needed.)
This is a program I wrote to attempt to crack an RSA Challenge Number. It uses Fermat's method to attempt to find the prime factors of a product of two unknown primes. I developed the BCD (bignumber) routines after taking an assembly language class, and later ported the whole thing to Windows. It was an interesting learning experience. Fermat's method isn't the most efficient factoring algorithm, but it's a step towards learning the Number Field Sieve method, which is the current state of the art.

If you're running this code from WinZip, the main file is winbcd.exe. Be patient; when running for the first time, the program can take about 30 seconds to begin displaying results. The program can process about three numbers per second on an 800-MHz machine.
This is part of a 3D OpenGL game I'm working on right now. I obtained the bitmap file for the planet off the internet; it may be copyrighted, so I will have to use something else in the final product. I'm still learning OpenGL; the Windows initialization code is from http://nehe.gamedev.net.

If you have trouble (error messages about GL contexts, etc) then copy the files in the OPENGL directory to the same directory as the earth.exe file. This should not be necessary if you have a newer (i.e. GeForce) video card, but may be necessary if you have a VooDoo or earlier video card.
This is part of another project I am working on: a 3D OpenGL terrain engine, written in Borland/Visual C++. Movement controls work (up, down, left right cursor keys; Insert and Home look left and right, Del and End look up and down; F5 and F6 move up and down). The terrain is a mildly sloping fractal-generated terrain. I used a texture map of some snow to "pave" the ground. Press [F1] to toggle fullscreen/windowed mode, and press [F2] for a report on the current user position. Remember to unpack the .64 file from WinZip also to run, or you will get a "Terrain file not found" message.
This is a program I wrote to calculate pipe friction factors for my work (California Environmental Protection Agency, Department of Toxic Substances Control). This program was my first Windows dialog box program.
This is a project I was working on in late 2000: a Visual C++ OpenGL 2-D side scrolling game. It helps to have an OpenGL-compatible video card, otherwise the software emulation of OpenGL is extremely slow. In the middle of the project I switched to the free Borland C++ 5.5 compiler (see www.borland.com.) Now, there is a 2-D graphics library called SDL (see the "bricks" game above).
This is a DOS-based, sprite drawing and editing program I wrote in Pascal around 1994. I was a senior in high school at the time. The program took about 6,000 lines of Pascal code. I had quite a bit of fun with the Area Fill algorithm. The progam is unfinished; it did what it was supposed to do, and since I never intended to sell it, I went on to other projects. Be advised that this is a DOS program; it will not work properly if the DOS mouse drivers are not installed.
mkhtml.zip This is an HTML compiler I whipped up in C one day in March. I have a list of links on my website (www.geocities.com/mrdarrett/links.html) and was tired of having to update the HTML code every time I edited a link. So, I created a list of links in a text file, and had my program compile this into an HTML file. The headers in the text file are expected to begin with a "#" symbol; for example, "#Auctions". All lines following are expected to be members of "Auctions". When the program finds another heading, it acts appropriately. The HTML header and footer code are in _pre.txt and _post.txt, so that other aspects of the HTML file (such as colors, image position, etc) can be modified quickly and easily.
enc.zip This is an encryption/decryption program I wrote on Feb. 13, 2001. It takes an input file and adds each byte to a cosine wave of a specified frequency. The program offers about the equivalent of 64-bit encryption, since the size of a double-precision real number is 8 bytes. The output data however does not resemble the input file at all.
asu.zip This is a DOS-based, 32-bit C++ database I developed around 1997 for Randy Fong, the president of the Asian Student Union at Diablo Valley College. Randy also happened to be my best friend, and he was completely new to computer programming, so we wrote this one together. The password is "kappa", and the data files are "encrypted" by rotating each byte 3 bits left.
v320lib.zip This is a Mode-X (VGA mode 320x200, multi-page) video driver library I wrote in Turbo C between 1992 and 1994. It uses inline Intel x86 assembler code to implement the low-level routines to enter and use Mode-X. The routines to actually set up the video mode was adapted from an article by Michael Abrash in Dr. Dobb's Journal, and the line-drawing algorithm I believe is from Bresenham's line-drawing algorithm. The references to "Watkins" is a reference to the raytracer from the book "Programming in 3 Dimensions" by Watkins and Sharp; I used the Mode-X routines to implement their ray tracer, which was originally built with a more expensive video card in mind than the one I had.
utils.zip These are some file copy utilities I wrote in 1992 in Pascal, when I was still in high school. CHOP and UNCHOP split a large file across several floppy disks, and also give you an estimate of how many disks will be needed. MCpy is an extension of the DOS COPY command, allowing you to copy many small files to the floppy drive, and prompting for new disks as needed. I was actually going to sell these programs as shareware, but then around the same time PKZip came out with the Span Disk option, rendering my code obsolete.
fd.zip This is a file dump program I wrote in Turbo Pascal in 1992. I wrote it mainly because DOS had no decent file dump program that could view special characters.
snoopy.zip This is a program I wrote in 8086 Turbo Assembler a long time ago, when I was still in high school. It is a Terminate-and-Stay-Resident program that latches onto Int 21h to take a "snapshot" of the files that were opened. Works best in DOS mode only.


1