INTRODUCTION
This is a pack of routines and various files i've built over the years.
I can't say i haven't been inspired by others, so some stuff expands|fixes existing work.
Optimisation is mostly towards speed, and system code is used as rarely as possible.
Each file includes deep documentation, please read everything before using.
feedback & questions :
https://www.omnimaga.org/asm-language/flash-snacks/COMPATIBILITY
Except when specified, all TI-8X+ models (monochrome screen) are supported.
Same goes for official systems and boot codes.
Everything else should be considered unsupported.
CONTENT & OVERVIEW
keyboard.inc : keyboard include file
ti83plus.inc : ultimate TI-83+|TI-83+SE|TI-84+|TI-84+SE include file
font_large_custom.png : preview of what's in font_large_custom.txt
font_large_system.png : system large character font preview
1_character_tokens.txt : token>character reference table for all valid 1-character-long tokens
font_large_custom.txt : custom large character font matching ASCII|ISO-8859-1|CP-1252
font_large_system.txt : information about system large character font
READ.txt : this file
system_ram_structure.txt : system ram structure summary
arcpages.z80 : Identifies key pages in the archive.
battcheck.z80 : Checks batteries.
bootver.z80 : Identifies the boot code version.
cpirnc.z80 : Cpir, but additionally halts if a bank's edge is reached.
cpirz.z80 : Cpir, but instead halts if the specified byte isn't found.
cpirznc.z80 : Cpir, but instead halts if the specified byte isn't found, and additionally halts if a bank's edge is reached.
flashlock.z80 : Locks the flash chip.
flashmanuf.z80 : Identifies the flash chip manufacturer.
flashunlock.z80 : Unlocks the flash chip.
intdefault.z80 : Sets all hardware interrupts to their default system configuration.
intdisable.z80 : Disables and acknowledges all hardware interrupts.
keybcheck.z80 : Checks if at least one key is pressed, and if it's [ON].
keybdebounce.z80 : Waits long enough for released keys to stop bouncing.
keybscan.z80 : Scans the whole keyboard, [ON] key excepted.
lcdcfg.z80 : common LCD configuration
lcddisp768.z80 : Fills the screen using a custom byte.
lcddispbuf.z80 : Displays the content of a custom fullscreen buffer.
lcddispchr.z80 : Displays a 6x8p character, using a custom font.
lcddispstr.z80 : Displays a string of 6x8p characters, using a custom font.
lcddisptxt.z80 : Displays the content of a custom fullscreen text buffer, using a custom font.
lcdsavebuf.z80 : Stores the display to a custom fullscreen buffer in RAM.
poweroff.z80 : Turns off the calculator, and waits for an [ON] key press.
prgmedit.z80 : Exits, opens the program editor for the specified program, and sets the cursor to the specified location.
ramlock.z80 : Sets RAM execution permission to the system default configuration.
ramsize.z80 : Identifies the physical RAM size.
ramunlock.z80 : Makes all RAM executable.
romlock.z80 : Sets ROM execution permission to the system default configuration.
romsize.z80 : Identifies the physical ROM size.
romunlock.z80 : Makes all ROM executable.
romwrite1.z80 : Writes a byte to ROM.
romwritex.z80 : Ldir, but instead writes to ROM, and additionally halts if a bank's edge is reached.
secterase.z80 : Erases a sector.
sectstate.z80 : Checks a sector for protection against write|erase operations.
sysver.z80 : Identifies the system version.
usbinfo.z80 : Identifies if USB is available, and its revision type.
NOTE ABOUT OUTPUTS
pc, r, and registers equal to ? are to be considered destroyed.
Unlisted registers are unchanged, except when specified.
When the f register is detailed, each bit can be :
0 : zero
1 : one
X : variable-known (described in the "flags" section)
? : variable-unknown (destroyed)