Texas Instruments makes no warranty, either expressed or implied, including but not limited to
any implied warranties of merchantability and fitness for a particular purpose, regarding any
programs or book materials and makes such materials available solely on an "as-is" basis.
In no event shall Texas Instruments be liable to anyone for special, collateral, incidental, or
consequential damages in connection with or arising out of the purchase or use of these
materials, and the sole and exclusive liability of Texas Instruments, regardless of the form of
action, shall not exceed the purchase price of this program. Moreover, Texas Instruments shall
not be liable for any claim of any kind whatsoever against the use of these materials by any
other party.
The following information is provided as an addendum to the TI-83 Plus Developer
Guide Version 1.0. This text provides additional information fordeveloping applications
and assembly programs for the TI-83 Plus
with the Flash ROM size and processor speed changes over the TI-83 Plus graphing
calculator platform.
O
VERVIEW
The TI-83 Plus
clock speed that is more than twice as fast as the standard TI-83 Plus. For compatibility,
the TI-83 Plus
TI-83 Plus speed. The TI-83 Plus
speed up link communication.
Flash Apps can utilize new Operating System (OS) calls or header settings to take
advantage of the increased speed. Assembly programs can also use the OS calls to set
speed. The new calls will not be recognized by older OSs so it is important for the
developer to check OS versions when making these calls.
SILVER EDITION
SILVER EDITION
SILVER EDITION
SILVER EDITION
has the capability to load up to 94 Flash Apps and has a
runs programs and applications at the standard
SILVER EDITION
also contains a hardware assist to
. Specific information deals
F
LASH
ROM S
The TI-83 Plus
into 128 pages, each of which is 16K bytes in size. The structure is generally the same
as the TI-83 Plus except for the inclusion of 96 additional 16K pages (24 additional 64K
Sectors). The TI-83 Plus
The TI-83 Plus Flash structure chart, Figure 2.5 in the TI-83 Plus Developer Guide
Version 1.0, is correct up to page 14h; at that point, the TI-83 Plus
includes more data pages. The TI-83 Plus
System residing at the high 8 pages of Flash, 78h . . . 7Fh. The TI-83 Plus high memory
is 18h . . . 1Fh.
TRUCTURE
SILVER EDITION
SILVER EDITION
Flash ROM is composed of 2048K (2M) bytes divided
can store up to 94 Apps in pages 0Ch – 69h.
SILVER EDITION
SILVER EDITION
also has the Operating
TI-83 Plus Developer Guide
Beta Version May 16, 2001
1
TI-83 Plus
SILVER EDITION
SWAP/USER DATA
SWAP/USER APPS/DATA
USER APPS/DATA
USER APPS/DATA
USER APPS/DATA
CERTIFICATE LIST
FUTURE OS USE
SWAP and/or User APPS Area
Update System (OS) Area
Fixed Area — changeable only by TI
OS
OS
Legend
Addr Page(s) Size Notes
00h – 07h 00 – 07 128K (8 pages) Same as TI-83 Plus
08h – 0Bh 08 – 11 64K (4 pages) Same as TI-83 Plus
0Ch – 0Fh 12 – 15 64K (4 pages) Same as TI-83 Plus
10h – 13h 16 – 19 64K (4 pages) Same as TI-83 Plus
14h – 67h 20 – 103 1344K (84 pages) Many more user pages
68h – 69h 104 – 105 32K (2 pages) Pages 14h, 15h on TI-83 Plus
6Ah – 6Bh 106 – 107 32K (2 pages) Pages 16h, 17h on TI-83 Plus
6Ch – 77h 108 – 119 192K (12 pages)
78h – 7Fh 120 – 127 32K (8 pages) Pages 18h . . . 1Fh on TI-83 Plus
Because of the additional Flash memory, the first App loaded will be placed at page 69h
(105 decimal) and downward from there (versus 15h for the TI-83 Plus).
E
NTRY POINTS
The TI-83 Plus
flags as the TI-83 Plus.
A
DDITIONAL
S
PEED
The TI-83 Plus
entry points that allow an application to set the processor speed (SetExSpeed) and to
determine the current speed and OS (GetSysInfo).
See the entry point documentation in Appendix A for additional information.
, V
ARIABLE TYPES, AND SYSTEM FLAGS
SILVER EDITION
B_CALL
SILVER EDITION
uses the same entry points, variable types, and system
S FOR DETERMINING
OS
AND
and TI-83 Plus OS version 1.13 includes new B_CALL
TI-83 Plus Developer Guide
2
Beta Version May 16, 2001
TI-83 Plus
SILVER EDITION
A
DDITIONAL HEADER TAGS FOR SETTING SPEED
By default, an application will run at the TI-83 Plus Speed unless the App informs the OS
to allow it to run faster. The entry point
SetExSpeed
controls specific locations in the
code.
An optional method is to set a tag in the header that informs the OS that the App can run
at a certain level. The default level is 0 and the TI-83 Plus
SILVER EDITION
level 1.
The APP_HW_LEVEL tag looks as follows:
DB 080h,0A1h ; Field: App level
DB 001h ; Highest HW level = 1
If this field is missing or is set to HW level 0 (either DB 080h,0A0h or
DB 080h,0A1h,000h), then the Operating System executes the App in slow mode
(6MHz) to execute the App. This field is ignored on the TI-83 Plus.
; This is the application header definition area required for all Apps.
DB 080h, 00Fh ; Field: Program length
DB 000h, 000h, 000h, 000h ; Length = 0 (N/A for unsigned
; Apps)
; -----------------------------------------------------------------------------; * * * App types * * *
; This example uses shareware type for signing and the simulator.
; Replace with the commented developer ID for debugging on the calculator.
; Note the header will need to be adjusted depending on the number of bytes in
; this type field.
; ----------------------------------------------------------------------------- DB 080h, 012h ; Field: Program type (2 byte)
DB 001h, 004h ; Type = Shareware, TI-83 Plus
; ------------------------------; ; Use with 5 or 6 character ID
; DB 080h, 013h ; Field: Program type (3 byte)
; DB 001h, 07Fh, 004h ; Dev. ID = "17F04"
; ----------------------------------------------------------------------------- DB 080h, 021h ; Field: App ID
DB 001h ; Id = 1
DB 080h, 031h ; Field: App Build
DB 001h ; Build = 1
; -----------------------------------------------------------------------------; -- App Name is to be 8 characters in size --
DB 080h, 048h ; Field: App Name
DB "TEMPxxxx" ; Name = "TEMP "
DB 080h, 081h ; Field: App Pages
DB 001h ; App Pages = 1
DB 080h, 090h ; No default splash screen
; ----------------------------------------------------------------------------- DB 080h, 0A1h ; Field: App level
DB 001h ; Highest HW level = 1
; ----------------------------------------------------------------------------- DB 003h, 026h, 009h, 004h ; Field: Date stamp =
can be set to
TI-83 Plus Developer Guide
3
Beta Version May 16, 2001
TI-83 Plus
DB 005h, 0D4h, 062h, 000h ; 2/7/2000
DB 002h, 00Dh, 040h ; Dummy encrypted TI date
DB 055h, 073h, 021h, 0E3h ; stamp signature
DB 03Bh, 081h, 022h, 017h
DB 02Dh, 0D2h, 0D3h, 018h
DB 093h, 063h, 078h, 0A6h
DB 0A2h, 006h, 05Ch, 071h
DB 0C0h, 031h, 0E5h, 098h
DB 0DEh, 06Dh, 039h, 03Ch
DB 0F8h, 035h, 0E0h, 0A7h
DB 00Fh, 092h, 0A5h, 037h
DB 068h, 0F3h, 040h, 019h
DB 06Eh, 0CAh, 02Fh, 064h
DB 0E9h, 0AAh, 0CFh, 0C9h
DB 035h, 039h, 0C0h, 043h
DB 05Bh, 0D3h, 037h, 086h
DB 041h, 0E2h, 001h, 090h
; ----------------------------------------------------------------------------- DB 080h, 07Fh ; Field: Program Image length
DB 000h, 000h, 000h, 000h ; Length = 0, N/A
; -----------------------------------------------------------------------------; End of required Header.
; To allow for growth of header fields during the signing process, the
; following pad bytes are needed. Adjust as needed.
DB 0, 0, 0, 0 ; Reserved Pad
DB 0, 0, 0, 0 ; Reserved Pad
DB 0, 0, 0, 0 ; Reserved Pad
DB 0 ; Adjusted pad for level type
; -----------------------------------------------------------------------------; Adjust header according to application type.
; This example uses shareware type (2-bytes).
; Replace with the commented pads if using a 3-byte developer ID.
DB 0, 0, 0, 0 ; Reserved bytes with pad for
; DB 0, 0, 0 ; Reserved bytes with pad for
;
; End of 128 byte application header
; -----------------------------------------------------------------------------;
; Execution starts here.
SILVER EDITION
; 2-byte Program Type field
; 3-byte Program Type field
P
OSSIBLE DISPLAY PROBLEMS RUNNING FAST ON THE
S
ILVER EDITION
There are problems that can occur if an application that was written for the TI-83 Plus is
run at fast speed on the TI-83 Plus
Silver Edition
.
The screen may not display correctly if the app writes directly to the display and has its
own version of LCD_BUSY instead of calling the system routine. The LCD has a delay
requirement of approximately 10us between operations and using the old LCD_BUSY
delay at the faster speed will be less than this.
TI-83 Plus Developer Guide
4
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
Edition
with minimal additional time delays.
TI-83 Plus
SILVER EDITION
Silver
A
CCESSING THE
The TI-83 Plus
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.
DBUS F
SILVER EDITION
ROM AN APP
is equipped with a DBUS assist unit in the hardware.
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
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
SILVER EDITION
determined by executing the following code:
RecAByte
ONLY when one of the DBUS lines was active (a low).
GetSysInfo
unit (e.g., Bit 03 is set), then activity on the DBUS lines must be
utility. If the hardware type indicates a TI-83 Plus
IN (0x09), A
AND 0x38
TI-83 Plus Developer Guide
5
Beta Version May 16, 2001
TI-83 Plus
SILVER EDITION
If the ‘nz’ bit is set, the DBUS hardware assist has stored a byte for retrieval OR IS IN
THE PROCESS OF RECEIVING A BYTE AT THE PRESENT TIME. This is the only
reliable way of determining activity on the DBUS on the TI-83 Plus
hardware.
SILVER EDITION
Sending DBUS Data/Error States by Toggling the
DBUS Lines
Frequently Apps will attempt to flag an error to the DBUS by taking both DBUS lines low.
Similarly, Apps may attempt to toggle the DBUS lines from within the App rather than by
invoking the RecAByte and SendAByte routines. These actions will cause the DBUS
hardware assist to reset each time either (or both) of the DBUS lines are placed into the
low state. If the DBUS assist hardware is in the middle of a transmission when the App
toggles the DBUS line, the transaction is aborted and the byte being sent or received is
lost.
Unexpected Error Conditions
If the DBUS hardware assist unit is sending data to a DBUS device and that device
asserts both DBUS lines low, the DBUS assist will abort the send with an error condition.
The indicated error will be TIMEOUT, as the hardware will only know that it could not
send the byte in the 2 seconds allotted.
Summary
In general, it is always safe to call RecAByte and SendAByte. Direct access to the
DBUS lines is discouraged as it may cause communication problems.
TI-83 Plus Developer Guide
6
Beta Version May 16, 2001
Appendix A: System Routines — Utility
GetSysInfo
Category:
Description:
Input:
Registers:
Flags:
Others:
Outputs:
Registers:
Flags:
Others:
Registers
destroyed:
Remarks:
Utility
Return nine bytes of system information, including current speed.
HL = RAM location of where to put system information
None
None
None
None
(HL) . . . (HL + 8) set depending on system information.
AF, BC, HL
Note that this B_CALL is not available on TI-83 Plus version 1.12 and earlier.
The calling routine needs to check the software version before performing the
B_CALL.
This routine returns nine bytes representing various aspects of system
operation:
Byte00 = Boot Code Revision # (Major)
01 = Boot Code Revision # (Minor)
02 = Hardware Revision # (00 if TI-83 Plus, NZ if not)
03 = Lsn = Current Speed
03 = Bit 4 = reset if TI-83 Plus, set if TI-83 Plus
04 = Device code default
05 = 0 = reserved for future use
06 = 0 = reserved for future use
07 = 0 = reserved for future use
08 = 0 = reserved for future use
(continued)
SILVER EDITION
TI-83 Plus Developer Guide
Beta Version May 16, 2001
7
Appendix A: System Routines — Utility
GetSysInfo
Example:
Determine if are running fast or slow:
B_CALL getBaseVer ; OS version in (A, B)
CP 2 ; major version
JR NC,above112 ; if 2.x than > 1.12
CP 1
JR NZ,MustBeSlow ; if 0.x then < 1.12
LD A,B ; major version is 1
CP 13 ; minor version
JR NC,above112 ; C if minor version < 13
MustBeSlow: XOR A ; set Z to show slow
JR Done
above112: ; later than version 1.12
LD HL,OP1
B_CALL GetSysInfo
LD A,OP1+3
AND 0Fh
Done:
.
.
.
(continued)
TI-83 Plus Devleoper Guide
Beta Version May 16, 2001
8
Appendix A: System Routines — Utility
NzIf83Plus
Category:
Description:
Input:
Registers:
Flags:
Others:
Outputs:
Registers:
Flags:
Others:
Registers
destroyed:
Remarks:
Utility
Return status if calculator is a TI-83 Plus or not.
None
None
None
None
NZ = Status if calculator is a TI-83 Plus
Z = Status if calculator is a TI-83 Plus
SILVER EDITION
None
None
Note that this B_CALL is not available on Cerebrus version 1.12 and earlier.
The calling routine needs to check the software version before performing the
B_CALL.
This routine is not as intrusive as GetSysInfo if all you need to know is if the
calculator is an earlier edition of the TI-83 Plus.
Example:
Return NZ if are running on a TI-83 Plus.
B_CALL getBaseVer ; OS version in (A, B)
CP 1 ; major version
JR C,MustBe83Plus ; if 0.x than < 1.13
JR NZ,Above112 ; if 2.x then > 1.12
LD A,B ; major version is 1
CP 13 ; minor version
JR NC,above112 ; C if minor version < 13
MustBe83Plus: RET ; NZ status
above112: ; later than version 1.12
B_CALL NzIf83Plus ; NZ if original TI-83 Plus
RET
TI-83 Plus Developer Guide
Beta Version May 16, 2001
9
Appendix A: System Routines — Utility
SetExSpeed
Category:
Description:
Input:
Registers:
Flags:
Others:
Outputs:
Registers:
Flags:
Others:
Registers
destroyed:
Remarks:
Utility
Set execution speed to fast or slow.
A = 0 to set slow speed (6MHz)
A = 1 to set 15MHz
A = FF to set Fastest Future speed
None
None
None
None
None
Flag register modified.
Note that this B_CALL is not available on TI-83 Plus version 1.12 and earlier.
The calling routine needs to check the software version before performing the
B_CALL.
This routine can be called on a TI-83 Plus unit running software version 1.13 or
higher, but will not affect the operating speed of that unit.
The operating system will set the speed back to fast once the app or assembly
program returns regardless of any settings made. An exception to this is that
the error handler will leave the speed setting as is in case a goto is desired.
Some system routines such as the IO utilities may set slow speed for certain
operations. These routines will restore the current speed upon completion.
Other routines, such as the JForceCmd instruction force the fast clock.
Normally an app will not execute these routines except upon completion.
(continued)
TI-83 Plus Devleoper Guide
Beta Version May 16, 2001
10
Appendix A: System Routines — Utility
SetExSpeed
Example:
Determine if the app is running on operating system version 1.13 or higher and
if so, run at the fast clock frequency:
B_CALL getBaseVer ; operating system version
CP 2 ; major version
JR NC,above112 ; if 2.x then > 1.12
CP 1 ; if 0.x then < 1.12
JR NZ,below112 ; major version is 1
LD A,B ; minor version
CP 13 ; C if minor version < 13
JR C,below112 ; later than version 1.12
above112: LD A,0FFh ; set fastest speed possible
B_CALL SetExSpeed
below112:
.
.
.
(continued)
; in (A, B)
TI-83 Plus Developer Guide
Beta Version May 16, 2001
11
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.