TI-86 Key Codes


_getkey

- $00 $01 $02 $03 $04 $05 $06 $07 $08 $09 $0A $0B $0C $0D $0E $0F
$00 * kRight kLeft kUp kDown kColon kEnter kExit kClear kDel kIns kNext kAdd kSub kMul kDiv
$01 kExpon kLParen kRParen kLBrack kRBrack kEqual kStore kRecall kComma kAng kChs kDecPnt k0 k1 k2 k3
$02 k4 k5 k6 k7 k8 k9 kEE kSpace kCapA kCapB kCapC kCapD kCapE kCapF kCapG kCapH
$03 kCapI kCapJ kCapK kCapL kCapM kCapN kCapO kCapP kCapQ kCapR kCapS kCapT kCapU kCapV kCapW kCapX
$04 kCapY kCapZ ka kb kc kd ke kf kg kh ki kj kk kl km kn
$05 ko kp kq kr ks kt ku kv kw kx ky kz kVarx kAns kPi kInv
$06 kSin kASin kCos kACos kTan kATan kSquare kSqrt kLn kExp kLog kAlog kMath kCplx kString kTest
$07 kConv kChar kBase kCustom kVars kCatalog kQuit kLastEnt kLinkIO kMem kList kVector kConst kMatrix kPoly kSimult
$08 kStat kGrMenu kMode kPrgm kCalcu kSolver kTable kBOL kEOL -
$09 - kCUSTM -
$0C - kF1 kF2 kF3 kF4 kF5 kF6 kF7 kF8 kF9 kF10 -
$0F - kGRAPH
IE: kF1 = $C2, kExit = $07
*Note: Morgan Davies informed me that the ON key's value is zero. That is only true when res 3,(iy+9) is applied.

_GetKy, _getky, _get_key, _getcode, _getcsc, _scan_code, & _kbdScan

- $00 $01 $02 $03 $04 $05 $06 $07
$00 K_NOKEY K_DOWN K_LEFT K_RIGHT K_UP -
$01 - K_SIGN K_3 K_6 K_9 K_RIGHTPAR K_TAN K_CUSTOM
$02 K_DEL K_0 K_1 K_4 K_7 K_EE K_SIN K_TABLE
$03 K_ALPHA K_F5 K_F4 K_F3 K_F2 K_F1 K_SECOND K_EXIT
- $08 $09 $0A $0B $0C $0D $0E $0F
$00 - K_ENTER K_PLUS K_MINUS K_STAR K_SLASH K_RAISE K_CLEAR
$01 K_DOT K_2 K_5 K_8 K_LEFTPAR K_COS K_PRGM
$02 K_XVAR K_ON K_STO K_COMMA K_SQUARE K_LN K_LOG K_GRAPH
$03 K_MORE -
Notes:
_kbdScan   equ $4064 ; keyboard handler
_scan_code equ $4064 ; keyboard handler
_getcsc    equ $4068 ; A = key code
_getcode   equ $4068 ; A = key code
_get_key   equ $4068 ; a = key code
_GetKy     equ $5371 ; A=key code OP2=row/col
_getky     equ $5371 ; A=key code OP2=row/col
_getkey    equ $55AA ; a = key code

All of these put a keypress' value in the accumulator. Never use K_NOKEY, since
OR A is a byte smaller. ROM call $5371 puts the row and column in OP2 in addition
to setting the accumulator. Here's how to see what's in OP2:

Low Level Codes

Group → $DF $EF $F7 $FB $FD $FE $BF
Bit 0 na 0 . (-) ENTER DOWN F5
Bit 1 STO→ 1 2 3 + LEFT F4
Bit 2 , 4 5 6 - RIGHT F3
Bit 3 x2 7 8 9 * UP F2
Bit 4 LN EE ( ) ÷ na F1
Bit 5 LOG SIN COS TAN ^ 2nd
Bit 6 GRAPH TABLE PRGM CUSTOM CLEAR EXIT
Bit 7 ALPHA x-VAR DEL na MORE
Usage: This is VERY fast and destroys af only. na means no code