Apple II Technical Notes _____________________________________________________________________________ Developer Technical Support Apple IIc #6: Buffering Blues Revised by: Mike Askins November 1988 Written by: Guillermo Ortiz January 1987 This Technical Note describes changes on the memory-expandable IIc which affect the procedures for enabling keyboard and serial input buffering. _____________________________________________________________________________ When the IIc firmware was reorganized to accommodate the memory expansion card in slot 4, the mouse moved to slot 7, thus causing some screen holes to be reassigned. This change may software which uses keyboard or serial input buffering to crash. The following list shows the changes in the locations which are used for enabling keyboard and serial input buffering: Original & Name 3.5 ROM Expandable IIc Comment typhed $5FA $5FA ;buffer the keyboard? NO CHANGE twkey $5FF $5FC ;storage pointer for type-ahead buffer trkey $6FF $6FC * ;retrieve pointer for type-ahead buffer aciabuf $4FF $4FC ;Owner of serial buffer, if any twser $57F $57C ;storage pointer for serial buffer trser $67F $67C ;retrieve pointer for serial buffer * In the version 3 ROM (original "memory-expandable" IIc) this pointer is still $6FF which causes, among other things, the Terminal Mode to be inoperative. Revision 4 of the IIc firmware fixes this bug. We can not emphasize enough the need for carefully checking the version of the machine on which a program is running. It is also important to pay attention to the now obvious fact that even in the Apple IIc things can (and most probably will) move around, making any hard-coded slot assignment a sure source of incompatibility. To ensure compatibility, scan the slots. The Apple IIc Technical Reference Manual, Second Edition describes how to enable buffering. Using serial buffering as an example, the pertinent instructions in the manual should now be understood as meaning: Using Serial Buffering Transparently If (machineID = "Memory Expandable IIc") then begin aciabuf = $04FC; {Newest IIc with Expanded Memory Capabilities,} twser = $057C; {ROM versions 3 and 4.} trser = $067C end else begin aciabuf = $04FF; {Original IIc and 3.5 ROM IIc} twser = $057F; trser = $067F end; Set_Location aciabuf to $C1 or $C2. Set_Locations twser and trser to $0. Using Serial Interrupts Through Firmware Set_Location aciabuf to a value other than $C1 or $C2 Further Reference _____________________________________________________________________________ o Apple IIc Technical Reference Manual, Second Edition o Apple IIc Technical Note #7, Existing Versions o Apple II Miscellaneous Technical Note #7, Apple II Family Identification