TI-83 Plus
SILVER EDITION
TI-83 Plus Developer Guide
5
Beta Version May 16, 2001
There are three options for solving this problem.
•
Triple or quadruple the delay time of the in-line code. This will solve the problem, but
it may reoccur if another even faster version is produced.
•
Do B_CALL LCD_BUSY. This is guaranteed to work, but may slow down a display
intensive app.
•
Use a CALL LCD_BUSY_QUICK, where LCD_BUSY_QUICK is equated to 000Bh.
This is a new entry point that does not require the system overhead of a B_CALL.
This call also works on earlier TI-83 Plus versions, but runs slightly faster than 10us
and modifies the z/nz Status Flag. To use this on all versions, wrap it in another
routine that saves and restores the flag register:
PUSH AF ; 11 states
CALL LCD_BUSY_QUICK ; 17 states + 30 states (on TI-83 Plus)
POP AF ; 10 states
This will ensure that the routine runs on both the TI-83 Plus and the TI-83 Plus
Silver
Edition
with minimal additional time delays.
A
CCESSING THE
DBUS F
ROM AN
A
PP
The TI-83 Plus
SILVER EDITION
is equipped with a DBUS assist unit in the hardware.
This hardware assist will greatly speed up Apps that do significant DBUS activity, but
requires additional care on the part of the App programmer. When used incorrectly, the
DBUS assist will cause the App to suffer from timeout errors even though the data is
sent/received correctly. The paragraphs below provide several use scenarios, possible
problems encountered, and possible fixes.
Monitoring DBUS Lines to Detect DBUS Activity
Frequently, an App will need to wait for a byte to be sent from another calculator while
the App is in a loop doing something else. On the TI-83 Plus, it was standard practice to
input the state of the DBUS lines on each pass through the loop and then to make a
B_CALL to
RecAByte
ONLY when one of the DBUS lines was active (a low).
With the hardware assist, this process will fail. The failure is due to the fact that the
hardware assist will complete the handshake when the DBUS line goes active by
reading in the incoming byte and storing the byte in a hardware buffer. Thus the DBUS
lines will return to an inactive state in a few microseconds and the software will never
detect any activity.
The corrective action here is to first determine the type of hardware that the App is being
executed on by calling the
GetSysInfo
utility. If the hardware type indicates a TI-83 Plus
SILVER EDITION
unit (e.g., Bit 03 is set), then activity on the DBUS lines must be
determined by executing the following code:
IN (0x09), A
AND 0x38