This Technical Note documents a bug in the mouse firmware on the AppleMouse card which affects the way ServeMouse works.
There is a bug in the AppleMouse II 6805 firmware which may affect the way ServeMouse works in an application. If the application takes more than one video cycle (normally about 16 ms) to respond to a mouse-generated interrupt, then ServeMouse will not claim the interrupt. The 6805 returns an interrupt status byte of $00 (i.e., no mouse interrupt pending), and the 6502 firmware sets the carry bit (although the interrupt is also cleared by the ServeMouse call). This situation can be confusing, and under ProDOS or Pascal it can be lethal. We have identified the following solutions, any of which should work:
If you are not working under an established operating system (i.e., ProDOS or Pascal):
If you are working under an established operating system (i.e., ProDOS or Pascal) for which unclaimed interrupts are fatal and the mouse is not the only interrupting device:
Note: This solution may cause cursor flicker by delaying the application's response to VBL interrupts.
Note: Under ProDOS, this limits the number if interrupting devices to three.
This bug exists in the AppleMouse card, therefore you must deal with it when you are writing eight-bit programs for the Apple ][+, IIe, IIc and IIGS which use the mouse. The Apple IIGS does not have this bug in its internal mouse firmware, so sixteen-bit "native" mode programs are not affected by it.
This and all of the other Apple II Technical Notes have been converted to HTML by Aaron Heiss as a public service to the Apple II community, with permission by Apple Computer, Inc. Any and all trademarks, registered and otherwise, are properties of their owners.