!pr0
!lm12
!rm75
A Compilation of Monitor Modifications.............Steve Knouse

Over the years since I bought my Apple I have been collecting various handy modifications to the Apple Monitor.  I wanted a convenient way to load up all my patches so that they would be there when I needed them.

Let me point out right now that the following set of patches will NOT work in an Apple //e.  They are only for the Apple II Plus monitor.  Anyway, several of my favorite patches are already implemented in the Apple //e; the others may fit, but I haven't tried them.

There are two basic ways to get a modified monitor into an Apple.  The first requires burning an EPROM with the new version, modifying the motherboard to accept an EPROM in the F8 ROM socket, and plugging it in.  (Rather than cutting and splicing the motherboard, a better way is to use a PROMETTE from Computer Micro Works.)  The second way is to run out of a language card (16K RAM Card), with a modified monitor at F800 in the RAM card.  Some RAM cards may not allow this, leaving the motherboard F8 ROM always switched on, but all the ones I have tried work.  If you want to use Applesoft with the modified monitor, or patch Applesoft as well, you can copy it up into the language card too.

I combined my favorite patches with Bill Morgan's patch program (see "PATCHER: General Purpose Patch Installer", AAL, April, 1983) so that BRUNning the program copies the motherboard monitor into a RAM card and then installs all the patches.

The listing that follows uses the .PH and .EP directives found in Version 1.1 of the S-C Macro Assembler.  .PH starts a phase, and .EP ends one.  At the start of a phase the current assembler origin is saved and the address from the .PH is substituted.  Code continues to be assembled into the target file or at the target address, and the saved origin is incremented along with the phase origin.  At the end of the phase the saved origin is restored.  This allows me to assemble a series of patches with the correct addresses all into one big target file.

Here is a list of my favorite patches:

!lm+8
!pp-3
1  Allow lowercase input -- nullify conversion of lowercase to uppercase, make cursor over lowercase character to uppercase inverse (since Apple doesn't have inverse or flashing lowercase).  (From Videx Keyboard Enhancer II Manual, page 4.)

2  Non-flashing cursor -- Make cursor inverse instead of flashing.  (From Videx Keyboard Enhancer II Manual, page 4.)

3  Inverse + cursor when in escape mode -- to indicate IJKM is active.  (By Donald W. Miller, Jr., Call-APPLE Mar 83 pp 51-52.)

4  ASCII dump -- display both hex and ASCII values.  (By Peter Bartlett, AAL Dec 81 pp 18-20, and Bruce Field, AAL Jul 83 page 20.)

5  Mask -- XXYY<ADR1.ADR2W masks bytes in memory range, ANDing with XX and ORing with YY.  (By Bob Sander-Cederlof, AAL Dec 82 pp 10-11.)

6  Search -- XXYY<ADR1.ADR2S searches memory range for XXYY, printing addresses of matches.  If XXYY is in the range $00-$FF, only one byte will be compared; otherwise both bytes will be compared during the search.  (By Steve Knouse)
!lm-8
!pp0

I included several conditional assembly options, using the .DO, .ELSE, and .FIN directives.  These let you select or reject the non-flashing cursor patch and the lowercase display patch.  The third option allows you to copy Applesoft from the motherboard along with the monitor, or just the monitor by itself.
