SmartPort #6
Apple IIgs SmartPort Errata
Revised by Matt Deatherage (November 1990)
Written by Matt Deatherage (November 1988)
This Technical Note documents two bugs in the Apple IIgs SmartPort
firmware.
Changes since November 1988: Documented corrections in ROM 03
and an additional ROM 03 bug.
Developers should be aware of the following two bugs in the Apple IIgs
ROM 01 SmartPort firmware:
- SmartPort accidentally uses locations $57 through $5A on the zero page
without saving and restoring them first. There is some confusion as to
whether these bytes are used on the absolute zero page or on the caller's
direct page. This is a moot point -- SmartPort calls are required to be
made from full-emulation mode. This requirement means the emulation bit
must be set and the data bank and direct page registers must both be set
to zero. The bytes are used on the absolute zero page, as that should be
the direct page when SmartPort is called.
- If an extended SmartPort CONTROL call is made, the CONTROL list must
not start at $FFFE or $FFFF of any bank. The IIgs SmartPort interface
does not increment the bank pointer when moving past the two-byte CONTROL
list length. If a CONTROL list starts one or two bytes before a bank
boundary, SmartPort will incorrectly read the list from the beginning of
that bank, instead of the beginning of the next bank.
The ROM 03 firmware fixes these bugs; however, it has a bug in the ResetHook
device-specific CONTROL call for the Apple 3.5" Drive. With this bug, hook
numbers of nine or greater crash the machine. At present, hook numbers in this
range are invalid, so this bug should not be a problem.
Further Reference
- Apple IIgs Firmware Reference
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.