The Bin

This is the bin. It's where I put software that I've written for single purposes or for my own use, but don't really feel like developing into full-fledged distributions with their own web sites and things. The software in here is covered by the GNU General Public License (in the file COPYING) unless otherwise noted.

This page collects all of the associated README files. This allows search engines to index this content. The actual software is found in The Bin.

To contact me, send mail to Tom Rothamel <tom at>.


This is what I use to implement dynamic dns for my home computer. It's 
written in Perl, and integrates with a dns server (Bind 8) and a web
server (Apache).  


These are the tools I use on my home system to check to see if I have
new mail in my maildirs.


This is an emacs mode that helps in programming 80x86 assembly code.
It handles indentation and syntax highlighting, and has been tested with


Vncscript is a program that I've written to allow scripting of a 
vnc session. It allows a program to automate mouse motion on a vnc 
server. (Sorry, but it doesn't do keyboard input right now.)

This code was originally based on x2vnc, which can be found at

That code was based on the original vnc code, which can be found at

Isn't the GPL wonderful?

The command to execute is "./vncscript <host>:<vnc display>". 

Vncscript uses a simple stack-based language to control the mouse. The
syntax follows. Stack based means that first the arguments are placed
onto the stack, then a command acts on them. Commands are described as

<arg1> <arg2> command
	arg1 and arg2 are taken from the stack, and used as arguments for
	the command.

Integers are placed directly on the stack. Otherwise, the argument is
a command, and unknown commands trigger an error.

Command List

<x> <y> move
	Moves to the coordinate relative to the left and top of the
	screen. If the numbers are negative, the coordinates are
	relative to the right or bottom of the screen instead.

<x> <y> rel
	Moves the mouse relative to the current position.

<button> <wait> click
	Pushes the given button mask down for wait milliseconds. The mask
	consists of the values of 2^button number anded together. (Wow.)

<x> <y> <button> pointerevent
	This sends raw events to the vnc server. (This can be used to
	play back a raw vnc stream, recorded using a vncviewer patched
	with the associated vnc.patch.)

<button> hold
	Holds the current button mask down. Use "0 hold" to release the
	buttons. This is used to drag the mouse.

<time> wait
	This waits for the given number of milliseconds.

	Prints out the current number of entries on the stack.

<a> print
	Prints a.

<a> <b> +
	Pushed a+b onto the stack.

<a> <b> -
	Pushed a-b onto the stack.

<a> <b> *
	Pushed a*b onto the stack.

<a> <b> /
	Pushed a/b onto the stack.

	Pushes the current x coordinate onto the stack.

	Pushes the current y coordinate onto the stack.

	Pushes the screen width onto the stack.

	Pushes the screen height onto the stack.


Vncwhap is a program I wrote to move the mouse around the screen
randomly. It was written for some people who were apparently being
paid by some very gullible people for moving the mouse around the
screen. Hey, I don't create this reality, I just live here. 

This code was originally based on x2vnc, which can be found at

The command to execute is "./vncwhap <host>:<vnc display>". 

This code has also been tested and shown to compile and work under the 
cygwin library, although the windows VNC server has the limitation
that it can only be used from a remote host.