Dear visitors and members, with the staff having moved on to other life interests and as a result of changes in people's internet usage habits, the CodeWalrus community have migrated almost entirely to Discord, IRC and WalrusIRC and is now essentially a place where to hang out, chat about gaming, programming, music, anime, and chill. As a result, even though the CW forums will remain open for posting, for faster TI, Casio or HP calculator help and news we recommend using the bilingual TI-Planet forums instead.

In pursuit of bettering what is already TI's greatest invention since the integrated circuit, I'm writing a new ti82.inc based on TI's ti83asm.inc and BrandonW's ti83.inc, targeting the SNG shell. SNG only has 30 ROM calls documented in its standard include file sng10.inc, and was the most complete one until now. So far, I have identified 138 ROM calls, using a Python script that follows call tables to compare the code of the routines mentioned in ti83.inc to the call table at the end of the TI-82's ROM page 0. It does not find calls that are on page 0; I need to do this manually, so those will take longer to identify.

RAM equates were fairly straightforward, except for the StatVars saferam area. Because the statistics implementation for the TI-82 is not nearly as advanced as the TI-83's, there will be significantly less saferam available there (279 bytes at most, compared to 531). Finding IY flag equivalents should not be terribly hard if I can find ROM calls common to both models that use a particular flag.

The latest version of the include file can be found here. Addresses here are for ROMs 15.0 and 16.0.

There are some necessary changes to ROM_CALL() that need to be made to support all of these calls. With the TI-83, TI introduced indirect calling, allowing the user to access some lesser-used functions outside of page 0. However, as user assembly wasn't implemented in the TI-82, there is no directly way to access these calls from page 0. Instead, you have to ROM_CALL(___bank_call) \ .dw addr \ .db page. You'll notice that this requires looking ahead three bytes, and ___bank_call (in ROM 16.0, at $2E46) does this by looking at the stack. This isn't compatible with the existing ROM_CALL() routines. For reasons of efficiency I will probably use a separate BANK_CALL() macro for this. Furthermore, to achieve compatibility with ROMs before 15.0, the ROM_CALL() routine needs to be updated with the new values for each of those ROM versions and take account for the missing values in the call table. Since all of this will happen within the shell, this is less important.

@DJ Omnimaga yeah, it'll make porting things over significantly easier. It will make it possible to port over a lot of things to the TI-82 from the TI-83, but not everything can because of different saferam and missing calls.

@Max Leiter I'll release it when it's done -- I don't think it's ready for exposure as I still need to finish the methods it uses to map out calls. The tools will probably be GPLv2 licensed but the include file produced will only require attribution within the include itself.