Duncan Murdoch's Programs

These are programs I wrote many years ago. All are unsupported.

The programs that I write fall into 4 categories:

General Utilities
Programming Support
Statistics and Probability
Obsolete (?) Files

Some of these programs are free, some are shareware, a few are in the public domain.

General Utilities

TSR disk cache monitor. (I wrote this in 1990, so it probably isn't worth downloading for the original purpose, but it includes full source code and so might be useful to someone writing their own monitor.) Free for personal use.
12255 bytes.
Move the floppy disk drive heads around to clean them.
8434 bytes.
Echo with no CR/LF. Sometimes useful in a batch file.
825 bytes.
Log program arguments and I/O to a file. Sometimes useful when debugging setups where one program calls another, and you want to find out what calling sequence was used.
6210 bytes.
Graphical display of files on disk. Shows the physical locations of your files, and indicates how fragmented your disk is. Badly in need of an update, it doesn't handle all large modern disks.
31013 bytes.
Detects trashed registers. Some old DOS programs will stomp on the 32 bit registers of the 386 and higher chips; this little program will detect them, to help track down those nasty bugs.
22500 bytes.
DesqView-like Mark/Transfer in Windows DOS box.
28960 bytes.

Programming Support

Most of these files have something to do with Turbo/Borland Pascal or Delphi; some are more general.

DJMDebug version 0.5
Debug exceptions in Delphi programs. Uses TD32 debug information to resolve addresses into symbolic names and file locations.
53738 bytes.
DumpProg version 2.1
Disassemble 16 bit .EXEs, both real mode and protected. Will make use of a .MAP file to resolve addresses into symbolic names.
46944 bytes.
Make Turbo Pascal BGI files into resources. This saves a few kilobytes of memory. Free.
8566 bytes.
A list of bugs and surprises in Borland Pascal version 7, with some workarounds. Free. See the TP 6 list too!
17944 bytes.
Clear unused Turbo Pascal memory. Useful for debugging, since it makes bugs repeatable.
1713 bytes.
Close orphaned BP.EXE. Sometimes a Win 3.x DOS session will crash, leaving the BP.EXE file open, so you can't run it again without rebooting. This public domain program closes BP.EXE. Source code included.
5861 bytes.
Turbo Pascal error 207 diagnostic unit. Error 207 can come from a large number of different causes; this attempts to figure out which one.
13551 bytes.
Full debug info for Turbo Pascal 6. Adds line number information from your .OBJ files to .TPU files, so the integrated debugger can single step through them. It was such a good idea, Borland did it themselves in version 7!
14180 bytes.
Builds Delphi .KWF file from a .HLP file. This helps you link foreign help files into the Delphi help system.
17708 bytes.
Convert TurboPower .HLP to Borland TPH.
33906 bytes.
Dumps interface for TP 4 .TPU. Useful when the unit isn't documented properly, or when you're just curious.
20332 bytes.
Incomplete TP 5.0 .TPU dumper. I partially updated the version 4 dumper, but didn't get finished before version 5.5 came out.
33581 bytes.
TP 5.5 TPU dumper. Besides the interface section, this will dump most of the file.
47335 bytes.
TP 6.0 TPU dumper. Another TPU dumper, for another version.
56214 bytes.
TP/BP 7.0 .TPU dumper. And another --- this one written by Milan Dadok, based on my version 6 dumper.
65940 bytes.
Last minute checks of TP/BP/Delphi 1.0 programs. Looks for the things you forgot: bad compiler options, etc.
30612 bytes.
Get list of open files from DOS. This Turbo Pascal unit is useful for tracking down bugs in programs that forget to close their files.
5786 bytes.
Turbo Pascal device driver code - PAUSE command that you can put in your CONFIG.SYS file, with source code.
5936 bytes.
Scan TP/BP source code to build help.
103070 bytes.
Skiplist implementation in Turbo Pascal. Skiplists are a nice data structure, like a linked list but with easy sorting, insertion and deletion.
12046 bytes.
Many kinds of streams for Turbo Pascal and Borland Pascal.
72733 bytes.
Some versions of the TDSTRIP utility that comes with Borland Pascal will damage your .EXE files, causing them to potentially crash the system. This utility detects the damage. (The detection code is also built in to LASTLOOK).
8443 bytes.
Shrink Turbo Debugger debug info, to allow you to debug larger programs.
14021 bytes.
List of bugs in Turbo Pascal version 6. See the BP 7 list too!
30522 bytes.
Call Fortran from TP5/6. This uses a pretty screwy calling method; it's hard to believe it works!
27944 bytes.
TP 6.0 system replacement helper. To replace the system unit, you need the SYSTEM.TPS file. This generates one from the standard SYSTEM.TPU file.
7730 bytes.
Finds undocumented function calls in Windows 3.x .EXEs, and lists various things about them.
24796 bytes.

Statistics and Probability

CISCLient version 1.40
This is a client to display searches of the online edition of the Current Index to Statistics. You need to install the "TSFKAWS" server or a workalike somewhere to provide the database. Updated to work with the latest format in July, 2001. Freeware.
234661 bytes.
Probability calculator for the normal, t, F and chi-square distributions. I've never had time to write the documentation for it though.
69101 bytes.

Obsolete (?) Files

These are programs I wrote to solve problems with systems I don't use any more. As far as I'm concerned they're obsolete, but if you're still using any of those systems, you might find these useful.

Desqview 2.26 80x87 fix: stops crashes. Freeware.
1135 bytes.
Find a node in Fidonet nodelist.
16616 bytes.
Find a word in PC Write dictionary.
19581 bytes.
Fix mouse problems with Turbo Pascal 6 and DesqView.
8299 bytes.
Find next cluster to be used by DOS.
3406 bytes.
Fix NMI problems in Desqview.
1343 bytes.
Find bogus Fidonet echomail packets.
54378 bytes.
Turn off printscreen.
280 bytes.
Saves mouse status for later restore.
8696 bytes.
Map VCPI memory usage.
4892 bytes.

Back to home page.

Last updated 21 October 2001 (with some obsolete entries deleted in October, 2009, CISCLient recovered in June 2022).