MASK.ZIP contains two versions of a program I wrote to show how to change a
graphics mouse cursor (MASK.BAS and QMASK.BAS--along with executable versions
of these files).  (MASK shows the cursor position as you move it around the
screen; QMASK just shows the cursor.  Also, MASK uses calls to INTERRUPTX and
thus requires QB; QMASK uses calls to ABSOLUTE and thus should work with
QBasic.  (Of course, either .EXE should work from the DOS command-line.))
Basically, after asking you for what screen mode to use (Hercules and AT&T/
Olivetti modes aren't allowed), QMASK asks for the name of a "mask file" to
use for the cursor pattern.  With MASK, you specify this file on the command-
line.  There are several such files included as examples.  If you want to
make you're own (as I expect), it's fairly simple.  Each file is just a text
file storing 8 or 16 lines of 16 0s and 1s (bits).  This 16 x 16 grid defines
the cursor.  A bit of 1 means that the pixel is lit and a bit of 0 means that
it isn't lit.  Why do some files only contain 8 lines when the rodent cursor
is a 16 x 16 grid of pixels, you ask?  Well, for files that only contain 8
lines, MASK and QMASK create the lower 8 lines internally by assuming
symmetry.  These example files are named MASK.*--not counting MASK.BAS and
MASK.EXE.  With QMASK, the mask file must exist.  With MASK, if it doesn't
exist, it will use internal code to generate the same pattern that you'd get
if you had used MASK.GUN.  Both QMASK and MASK will also do this if your mask
file contains less than 8 lines.  Also, for nonsymmetric mask files (i.e.,
files with all 16 lines specified), QMASK and MASK ask you for the "hot spot"
position.  This is the (x,y) position, measured from the top lefthand corner
of the rodent cursor (0 <= x <= 15 and 0 <= y <= 15), that corresponds to the
cursor's measured position on the screen.  For symmetric masks (i.e., files
containing 8 lines), the hot spot is taken automatically to be (8,8).

PIC2MC.BAS/.EXE is a crude program to convert Basic images (generated using
GET and then BSAVE) to 16 x 16 cursor patterns.  (Given the conversion of,
say, 640 x 480 pictures to 16 x 16 pictures, you can see that this process
isn't a very optimum thing to do.)
