Enhancements to the 80 Column Driver by Chuck Jensen
The following programs, by Scott A. Loomer, are released to the
public domain with commercial rights reserved.
Please direct any comments to:
   Scott Loomer, [70075,1033]
   315 Palomino Lane, Madison, WI 53705
   608-233-7739

Note that all files in XA2 with a .HEX extension must first be
converted from hex to binary using BINHEX.

1. COL80FIX/CMD, version 5.1b (XA2 name: C80FIX.HEX):
     This program is designed to convert machine language
programs that use memory mapped video into a form compatible
with the 80 column driver. To use, issue the command 'COL80FIX
filespec'. If filespec isn't provided, it will be prompted for.
COL80FIX will read the target file to determine its transfer
address. It will then append additional code onto the file. The
transfer address will be changed to cause the new code to
execute on entry into the program. This new code checks for the
active presence of the LO80 driver. If LO80 is present and
active, the video CRTC will be reprogrammed for 64 x 16
display. It also sets traps on the @EXIT and @ABORT vectors so
that when you exit the program, the 80 x 24 display will be
restored. This patch should (theoretically!) work with any
program that directly addresses the video. It has been tested
and found to work on LScript (w or w/o the LScriptX patches),
Visicalc, FED, FED II, and LED. This new version of the program
no longer conflicts with the standard MDISK usage of low
memory. COL80FIX uses low memory from 3990H to 3A28H. If you
are using LScript patched with the LScriptX patches from the
October LDOS Quarterly, the following patch will allow the 80
column mode to be active during P,D operations. LScript must
first be processed by COL80FIX/CMD. The first line restores the
screen to 64 x 16 after a P,D command. Note that if you
interrupt a P,D command, you'll be stuck in the 80 x 24 mode.
You must let it terminate normally!
D10,D1=23 3A
This line sets 80 x 24 mode during P,D commands
D10,C0=DF 39

2. GRAPH80/CMD, version 5.1b (XA2 name: GRAF80.HEX):
     This high memory driver enables graphics from within
LBASIC to use the range of 0-159 in x and 0-71 in y. The SET,
RESET and POINT functions work as before, except with the
extended range. To install, type 'GRAPH80'. To look correct,
the graphics characters need to be changed to be 3 dots high
instead of 4. The patch file in XA2 called CHAR80.FIX
accomplishes this. This new version of the program has an
@icnfg routine to establish the LBASIC links when SYSGENed or
DOCONFIGed. The driver can also be accessed from other
languages, but space doesn't permit details here.

3. PRT80/FLT, version 5.1b (XA2 name: PRT80.HEX):
     This is a filter that will do a screen dump of the entire
80 x 24 screen. Install with the command 'FILTER *KI
PRT80(CHAR=ddd/x'dd'/"c")'. The CHAR paramter is optional and
sets the character that will activate the screen dump. The
default is <CLEAR><^>. Note that since the interrupts have to
be disabled to access the second half of video memory, if you
do a screen dump while receiving data over the RS-232 line,
you'll drop bytes.

4. RUN64/CMD, version 5.1a (XA2 name: RUN64.HEX):
     This program is used to enter applications that are
designed to use the 64 x 16 display. Issue the command 'RUN64
filespec.....' (the remainder of the command line is whatever
you would normally use when running filename), and:
   a. The COL80 driver will be called with the OFF parameter if
the 80 column mode was active.
   b. The program 'filespec' will be executed.
   c. On exit from 'filespec', the 80 column mode will be
reestablished in it was active on entry.
This program does essentially the same thing as COL80FIX, but
does not become a permanent part of the application program.
Because it traps the @exit and @abort vectors, there are a
couple of programs that work in the same manner that are
incompatible (notably DEBUG and TYPEIN), this is not dangerous
as those programs will just refuse to execute with a message to
that effect. The same area of low memory as used by COL80FIX is
also used by RUN64. RUN64 issues two commands to the 80 column
driver, 'col80' and 'col80(n)'. If you are using a different
name for the driver, FED RUN64 to agree. The names are limited
to five characters as shown. There is no conflict as using
RUN64 on a COL80FIXed application would be redundant.
