Specifications

Apple IIGS
#71: DA Tips and Techniques 1 of 6
Apple II
Technical Notes
Developer Technical Support
®
Apple IIGS
#71: DA Tips and Techniques
Revised by: Dave “Mr. Tangent” Lyons May 1992
Written by: Dave Lyons November 1989
This Technical Note presents tips and techniques for writing Desk Accessories.
Changes since December 1991: Reworked discussion of NDAs and Command- keystrokes.
Marked obsolete steps in “NDAs Can Have Resource Forks.”
Classic Desk Accessory Tips and Techniques
Reading the Keyboard
For a CDA that runs only under GS/OS, the Console Driver is the best choice for reading from
the keyboard. Other CDAs have two cases to deal with: the Event Manager may or may not be
started. The Text Tools can read the keyboard in either case, but you should avoid using the
Text Tools whenever possible (see Apple IIGS Technical Note #69, The Ins and Outs of Slot
Arbitration).
You can call EMStatus to determine whether the Event Manager is started. When it is, you
can read keypresses by calling GetNextEvent. When the Event Manager is not started, you
can read keys directly from the keyboard hardware by waiting for bit 7 of location $E0C000 to
turn on. When it does, the lower seven bits represent the key pressed. Once you’ve detected a
keypress, you need to write to location $E0C010 to remove the keypress from the buffer.
Alternately, you can use IntSource (in the Miscellaneous Tools) to temporarily disable
keyboard interrupts and then read the keyboard hardware directly. Be sure to reactivate
keyboard interrupts if, and only if, they were previously enabled.
Just One Page of Stack Space
CDAs normally have only a single page of stack space available to them (256 bytes at
$00/01xx). Your CDA may or may not be able to allocate additional stack space from bank 0
during execution. The following code (written for the MPW IIGS cross-assembler) shows a safe
way to try to allocate more stack space and to switch between stacks when the space is available.
If ProDOS 8 is active, your CDA cannot allocate additional space (and there is no completely
safe way to “borrow” bank 0 space from the ProDOS 8 application).