cplamino
[Prev][Next][Index][Thread]
cplamino
;
; version : 10/20/97
;
READING KEYPRESSES ON THE 86
----------------------------
There are two ways to read keypresses on the TI-86.
1) Poll for keypresses using a software loop that is waiting for
a keypress. To do this use the ASM routine "_getky".
This is exactly the same functionality that is available
in the TI-86 programming language instruction "getKey".
;---------------------------------------------------------------
; _GetKy - get row/column code of the last key pressed on the
keyboard.
;
; Row/column code is a two- or three-digit decimal
; code for the last key pressed on the keyboard.
; The first one or two digits is a number from 1 to 10
; indicating the row number, the last digit is a
; number from 1 to 6 indicating the column number
; of the key. Code 0 means no key has been pressed
; since the last call to _GetKy. The [ON] key does
; not have a row/column code.
;
; output: OP2 := row/column code ( fp value)
; refer to the TI-86 manual for "getKey"
; key code diagram.
;---------------------------------------------------------------
;
_geyky equ 5371h
A major disadvantage of using this method is that the TI-
86 will
execute at full speed and waste battery life.
This method should be used only if you need to infrequently
look for a keypress.
2) Use the TI-86 system keypress routine. This routine will
enter low power mode and wait for a keypress or for APD time to
expire. This routine's output is also different; it returns
actual keypresses and not key locations on the keyboard. This
routine will return different key codes if 2nd or alpha is
pending.
Since handling an APD condition is not a trivial task without
documentation available, set this flag routine :
indiconly,(iy+indicflags)
This allows the run indicator to run, but APD does not.
;---------------------------------------------------------------
; _getkey - get a keyboard key value. gp into low power mode until
; a key is pressed or APD counter is active and counts down.
;
; This routine also handles:
; 1. [2nd] and [Alpha] shift keys.
; 2. Contrast settings.
;
; output: a = key or 00 if ON key was pressed.
;---------------------------------------------------------------
;
_getkey equ 55AAh
note : some 2nd and alpha functions are treated the same as
1st functions ont the TI-86.
ex : left arrow & alpha left arrow are treated as just
left arrow by the TI-86 system, but seperate
keycode is returned for each. The tables below
show the TI-86 usage of the keypress, you can interpret
1st, 2nd, alpha and 2nd alpha keys however you choose.
KEY CODES:
----------
1ST FUNCTIONS
-------------
kRight equ 001h kStore equ 016h kSin equ 060h
kLeft equ 002h kComma equ 018h kCos equ 062h
kUp equ 003h kChs equ 01Ah kTan equ 064h
kDown equ 004h kDecPnt equ 01Bh kSquare equ 066h
kEnter equ 006h k0 equ 01Ch kLn equ 068h
kExit equ 007h k1 equ 01Dh kLog equ 06Ah
kClear equ 008h k2 equ 01Eh kCustom equ 073h
kDel equ 009h k3 equ 01Fh kStat equ 080h
kNext equ 00Bh k4 equ 020h kGrMenu equ 081h
kAdd equ 00Ch k5 equ 021h kPrgm equ 083h
kSub equ 00Dh k6 equ 022h kF1 equ 0C2h
kMul equ 00Eh k7 equ 023h kF2 equ 0C3h
kDiv equ 00Fh k8 equ 024h kF3 equ 0C4h
kExpon equ 010h k9 equ 025h kF4 equ 0C5h
kLParen equ 011h kEE equ 026h kF5 equ 0C6h
kRParen equ 012h kVarx equ 05Ch
2ND FUNCTIONS
-------------
kBOL equ 087h kSqrt equ 067h kList equ 07Ah
kEOL equ 088h kExp equ 069h kVector equ 07Bh
kUp equ 003h kALog equ 06Bh kConst equ 07Ch
kDown equ 004h kMath equ 06Ch kMatrix equ 07Dh
kColon equ 005h kCplx equ 06Dh kPoly equ 07Eh
kIns equ 00Ah kString equ 06Eh kSimult equ 07Fh
kLBrack equ 013h kTest equ 06Fh kCalcu equ 084h
kRBrack equ 014h kConv equ 070h kSolver equ 085h
kRecall equ 017h kChar equ 071h kTable equ 086h
kAng equ 019h kBase equ 072h kF6 equ 0C7h
kAns equ 05Dh kVars equ 074h kF7 equ 0C8h
kPi equ 05Eh kCatalog equ 075h kF8 equ 0C9h
kInv equ 05Fh kQuit equ 076h kF9 equ 0CAh
kASin equ 061h kLastEnt equ 077h kF10 equ 0CBh
kACos equ 063h kLinkIO equ 078h kMode equ 082h
kATan equ 065h kMem equ 079h
ALPHA FUNCTIONS:
----------------
kRight equ 001h kF3 equ 0C4h kCapM equ 034h
kLeft equ 002h kF4 equ 0C5h kCapN equ 035h
kUp equ 003h kF5 equ 0C6h kCapO equ 036h
kDown equ 004h kSpace equ 027h kCapP equ 037h
kEnter equ 006h kCapA equ 028h kCapQ equ 038h
kExit equ 007h kCapB equ 029h kCapR equ 039h
kClear equ 008h kCapC equ 02Ah kCapS equ 03Ah
kDel equ 009h kCapD equ 02Bh kCapT equ 03Bh
kNext equ 00Bh kCapE equ 02Ch kCapU equ 03Ch
kVarx equ 05Ch kCapF equ 02Dh kCapV equ 03Dh
kCustom equ 073h kCapG equ 02Eh kCapW equ 03Eh
kStat equ 080h kCapH equ 02Fh kCapX equ 03Fh
kGrMenu equ 081h kCapI equ 030h kCapY equ 040h
kPrgm equ 083h kCapJ equ 031h kCapZ equ 041h
kF1 equ 0C2h kCapK equ 032h kEqual equ 015h
kF2 equ 0C3h kCapL equ 033h
2nd ALPHA FUNCTIONS:
-------------------
kRight equ 001h kF3 equ 0C4h km equ 04Eh
kLeft equ 002h kF4 equ 0C5h kn equ 04Fh
kUp equ 003h kF5 equ 0C6h ko equ 050h
kDown equ 004h kSpace equ 027h kp equ 051h
kEnter equ 006h ka equ 042h kq equ 052h
kExit equ 007h kb equ 043h kr equ 053h
kClear equ 008h kc equ 044h ks equ 054h
kDel equ 009h kd equ 045h kt equ 055h
kNext equ 00Bh ke equ 046h ku equ 056h
kVarx equ 05Ch kf equ 047h kv equ 057h
kCustom equ 073h kg equ 048h kw equ 058h
kStat equ 080h kh equ 049h kx equ 059h
kGrMenu equ 081h ki equ 04Ah ky equ 05Ah
kPrgm equ 083h kj equ 04Bh kz equ 05Bh
kF1 equ 0C2h kk equ 04Ch kEqual equ 015h
kF2 equ 0C3h kl equ 04Dh
;
; version : 10/20/97
;
;
; some helpful system routine addresses
;
;
; For now refer to existing TI-85 or TI-83 documentation
; from the WEB.
;
;
_clrLCD equ 4A7Eh
_clrScrn equ 4A82h
_putmap equ 4A27h
_putc equ 4A2Bh
_puts equ 4A37h
_putps equ 4A3Bh
_vputmap equ 4AA1h
_vputs equ 4AA5h
_vputsn equ 4AA9h
_GRBUFCPY equ 4E39h
_ILine equ 4E51h
_IPoint equ 4E59h
_PDspGrph equ 4D6Fh
_CLine equ 51E9h
_getkey equ 55AAh
_getky equ 5371h
_RANDOM equ 55DAh
_newline equ 4A5Fh
_runindicoff equ 4AB1h
_runindicon equ 4AADh
_CONVOP1 equ 5577h
;
; VARIABLE ROUTINES SEE FILE 'VARS.DOC' & '
;
_RCLY equ 4CDFh ; rcl y to OP1
_RCLX equ 4CE3h ; rcl x to OP1
;
_CREATEREAL equ 46EBh ; CREATE REAL VAR OP1, NO INPUTS
;
_CREATECPLX equ 46F7h ; CREATE CPLX VAR OP1, NO INPUTS
;
_CREATERCONST equ 46EFh ; CREATE REAL CONSTANT VAR OP1, NO
INPUTS
_CREATECCONST equ 46F3h ; CREATE CPLX CONSTANT VAR OP1, NO
INPUTS
;
_CREATERVECT equ 46FFh ; CREATE REAL VECTOR OP1, L = #
ELEMENTS
_CREATECVECT equ 4707h ; CREATE CPLX VECTOR OP1, L = #
ELEMENTS
;
_CREATERLIST equ 470Fh ; CREATE REAL LIST OP1, HL = #
ELEMENTS
_CREATECLIST equ 4717h ; CREATE CPLX LIST OP1, HL = #
ELEMENTS
;
_CREATERMAT equ 471Fh ; CREATE REAL MATRIX OP1, HL = ROW,COL
_CREATECMAT equ 4727h ; CREATE CPLX MATRIX OP1, HL = ROW,COL
;
_CREATESTRNG equ 472Fh ; CREATE STRING OP1, HL = # BYTES
;
_CREATEEQU equ 4737h ; CREATE EQUATION OP1, HL = # BYTES
;
_CREATEPICT equ 473Bh ; CREATE PICTURE VAR OP1, NO INPUTS
;
_CREATEPROG equ 474Fh ; CREATE PROGRAM VAR OP1, HL = # BYTES
;
_FINDSYM equ 46CBh ; LOOK UP VAR
_delvar equ 475Fh ; DELETE VAR
;
; ASM MODULE EXECUTOR
;
_exec_assembly equ 5730h
;
; RAM EQUATES FOR ASM MODULE CALLING
;
_asm_reg_af equ 0D624h
_asm_reg_a equ 0D625h
_asm_reg_l equ 0D626h
_asm_reg_hl equ 0D626h
_asm_reg_h equ 0D627h
_asm_reg_bc equ 0D628h
_asm_reg_c equ 0D628h
_asm_reg_b equ 0D629h
_asm_reg_de equ 0D62Ah
_asm_reg_e equ 0D62Ah
_asm_reg_d equ 0D62Bh
;
;
; start address for all ASM programs
;
;
_asm_exec_ram equ 0D748h
;
;
; op1 to op6 ram equates
;
;
_OP1 equ 0C089h
_OP1EXPM equ 0C08Ah
_OP1EXPL equ 0C08Bh
_OP1M equ 0C08Ch
_OP1EXT equ 0C093h
_OP2 equ 0C094h
_OP2EXPM equ 0C095h
_OP2EXPL equ 0C096h
_OP2M equ 0C097h
_OP2EXT equ 0C09Eh
_OP3 equ 0C09Fh
_OP3EXPM equ 0C0A0h
_OP3EXPL equ 0C0A1h
_OP3M equ 0C0A2h
_OP3EXT equ 0C0A9h
_OP4 equ 0C0AAh
_OP4EXPM equ 0C0ABh
_OP4EXPL equ 0C0ACh
_OP4M equ 0C0ADh
_OP4EXT equ 0C0B4h
_OP5 equ 0C0B5h
_OP5EXPM equ 0C0B6h
_OP5EXPL equ 0C0B7h
_OP5M equ 0C0B8h
_OP5EXT equ 0C0BFh
_OP6 equ 0C0C0h
_OP6EXPM equ 0C0C1h
_OP6EXPL equ 0C0C2h
_OP6M equ 0C0C3h
_OP6EXT equ 0C0CAh
;
;
; screen shadow ram equates
;
;
_textShadow equ 0C0F9h
_cmdShadow equ 0CFABh
_plotSScreen equ 0C9FAh
;
;
; display cursor ram equates
;
;
_curRow equ 0C00Fh
_curCol equ 0C010h
_penCol equ 0C37Ch
_penRow equ 0C37Dh
;
;
; link port equates
;
;
BPort equ 7 ;4-bit I/O
D0LD1L EQU 0FCH
D0LD1H EQU 0D4H
D0HD1L EQU 0E8H
D0HD1H EQU 0C0H
;
; SYSTEM FLAG EQUATES
; ALL OF THESE FLAGS CAN BE ACCESSED THROUGH THE 'IY' REGISTER
;
trigflags EQU 0 ; IY OFFSET VALUE
trigdeg EQU 2
;
plotflags EQU 2 ; IY OFFSET VALUE
plotloc EQU 1
plotdisp EQU 2
;
grfmodeflags EQU 2 ; IY OFFSET VALUE
grffuncm EQU 4
grfpolarm EQU 5
grfparamm EQU 6
grfrecurm EQU 7
;
graphflags EQU 3 ; IY OFFSET VALUE
graphdraw EQU 0
graphcursor EQU 2
;
grfdbflags EQU 4 ; IY OFFSET VALUE
grfdot EQU 0
grfsimul EQU 1
grfgrid EQU 2
grfpolar EQU 3
grfnocoord EQU 4
grfnoaxis EQU 5
grflabel EQU 6
;
textflags EQU 5 ; IY OFFSET VALUE
textEraseBelow EQU 1
textScrolled EQU 2
textInverse EQU 3
;
onflags EQU 9 ; IY OFFSET VALUE
onRunning EQU 3
onInterrupt EQU 4
;
fmtflags EQU 10 ; IY OFFSET VALUE
fmtExponent EQU 0
fmtEng EQU 1
;
curflags EQU 12 ; IY OFFSET VALUE
curAble EQU 2
curOn EQU 3
curLock EQU 4
;
appflags EQU 13 ; IY OFFSET VALUE
appTextSave EQU 1
appAutoScroll EQU 2
;
indicflags EQU 18 ; IY OFFSET VALUE
indicRun EQU 0
indicOnly EQU 2
;
shiftflags EQU 18 ; IY OFFSET VALUE
shift2nd equ 3
shiftAlpha equ 4
shiftLwrAlph equ 5
shiftALock equ 6
;
new_grf_flgs EQU 24 ; IY OFFSET VALUE
textwrite EQU 6
;
;
; character font equates
;
;
Lbinary equ 001h
Loctal equ 002h
Ldecimal equ 003h
Lhexadecimal equ 004h
Lconvert equ 005h
LsqUp equ 006h
LsqDown equ 007h
Lintegral equ 008h
Lcross equ 009h
LhexA equ 00Ah
LhexB equ 00Bh
LhexC equ 00Ch
LhexD equ 00Dh
LhexE equ 00Eh
LhexF equ 00Fh
Lroot equ 010h
Linverse equ 011h
Lsquare equ 012h
Langle equ 013h
Ldegree equ 014h
Lradian equ 015h
Ltranspose equ 016h
LLE equ 017h
LNE equ 018h
LGE equ 019h
Lneg equ 01Ah
Lexponent equ 01Bh
Lstore equ 01Ch
Lten equ 01Dh
LupArrow equ 01Eh
LdownArrow equ 01Fh
Lspace equ 020h
Lexclam equ 021h
Lquote equ 022h
Lpound equ 023h
Ldollar equ 024h
Lpercent equ 025h
Lampersand equ 026h
Lapostrophe equ 027h
LlParen equ 028h
LrParen equ 029h
Lasterisk equ 02Ah
LplusSign equ 02Bh
Lcomma equ 02Ch
Ldash equ 02Dh
Lperiod equ 02Eh
Lslash equ 02Fh
L0 equ 030h
L1 equ 031h
L2 equ 032h
L3 equ 033h
L4 equ 034h
L5 equ 035h
L6 equ 036h
L7 equ 037h
L8 equ 038h
L9 equ 039h
Lcolon equ 03Ah
Lsemicolon equ 03Bh
LLT equ 03Ch
LEQ equ 03Dh
LGT equ 03Eh
Lquestion equ 03Fh
LatSign equ 040h
LcapA equ 041h
LcapB equ 042h
LcapC equ 043h
LcapD equ 044h
LcapE equ 045h
LcapF equ 046h
LcapG equ 047h
LcapH equ 048h
LcapI equ 049h
LcapJ equ 04Ah
LcapK equ 04Bh
LcapL equ 04Ch
LcapM equ 04Dh
LcapN equ 04Eh
LcapO equ 04Fh
LcapP equ 050h
LcapQ equ 051h
LcapR equ 052h
LcapS equ 053h
LcapT equ 054h
LcapU equ 055h
LcapV equ 056h
LcapW equ 057h
LcapX equ 058h
LcapY equ 059h
LcapZ equ 05Ah
LlBrack equ 05Bh
Lbackslash equ 05Ch
LrBrack equ 05Dh
Lcaret equ 05Eh
Lunderscore equ 05Fh
Lbackquote equ 060h
La equ 061h
Lb equ 062h
Lc equ 063h
Ld equ 064h
Le equ 065h
Lf equ 066h
Lg equ 067h
Lh equ 068h
Li equ 069h
Lj equ 06Ah
Lk equ 06Bh
Ll equ 06Ch
Lm equ 06Dh
Ln equ 06Eh
Lo equ 06Fh
Lp equ 070h
Lq equ 071h
Lr equ 072h
Ls equ 073h
Lt equ 074h
Lu equ 075h
Lv equ 076h
Lw equ 077h
Lx equ 078h
Ly equ 079h
Lz equ 07Ah
LlBrace equ 07Bh
Lbar equ 07Ch
LrBrace equ 07Dh
Ltilde equ 07Eh
LinvEQ equ 07Fh
Lsub0 equ 080h
Lsub1 equ 081h
Lsub2 equ 082h
Lsub3 equ 083h
Lsub4 equ 084h
Lsub5 equ 085h
Lsub6 equ 086h
Lsub7 equ 087h
Lsub8 equ 088h
Lsub9 equ 089h
LcapAAcute equ 08Ah
LcapAGrave equ 08Bh
LcapACaret equ 08Ch
LcapADier equ 08Dh
LaAcute equ 08Eh
LaGrave equ 08Fh
LaCaret equ 090h
LaDier equ 091h
LcapEAcute equ 092h
LcapEGrave equ 093h
LcapECaret equ 094h
LcapEDier equ 095h
LeAcute equ 096h
LeGrave equ 097h
LeCaret equ 098h
LeDier equ 099h
LcapIAcute equ 09Ah
LcapIGrave equ 09Bh
LcapICaret equ 09Ch
LcapIDier equ 09Dh
LiAcute equ 09Eh
LiGrave equ 09Fh
LiCaret equ 0A0h
LiDier equ 0A1h
LcapOAcute equ 0A2h
LcapOGrave equ 0A3h
LcapOCaret equ 0A4h
LcapODier equ 0A5h
LoAcute equ 0A6h
LoGrave equ 0A7h
LoCaret equ 0A8h
LoDier equ 0A9h
LcapUAcute equ 0AAh
LcapUGrave equ 0ABh
LcapUCaret equ 0ACh
LcapUDier equ 0ADh
LuAcute equ 0AEh
LuGrave equ 0AFh
LuCaret equ 0B0h
LuDier equ 0B1h
LcapCCed equ 0B2h
LcCed equ 0B3h
LcapNTilde equ 0B4h
LnTilde equ 0B5h
Laccent equ 0B6h
Lgrave equ 0B7h
Ldieresis equ 0B8h
LquesDown equ 0B9h
LexclamDown equ 0BAh
Lalpha equ 0BBh
Lbeta equ 0BCh
Lgamma equ 0BDh
LcapDelta equ 0BEh
Ldelta equ 0BFh
Lepsilon equ 0C0h
Ltheta equ 0C1h
Llambda equ 0C2h
Lmu equ 0C3h
Lpi equ 0C4h
Lrho equ 0C5h
LcapSigma equ 0C6h
Lsigma equ 0C7h
Ltau equ 0C8h
Lphi equ 0C9h
LcapOmega equ 0CAh
LxMean equ 0CBh
LyMean equ 0CCh
LsupX equ 0CDh
Lellipsis equ 0CEh
Lleft equ 0CFh
Lblock equ 0D0h
Lper equ 0D1h
Lhyphen equ 0D2h
Larea equ 0D3h
Ltemp equ 0D4h
Lcube equ 0D5h
Lenter equ 0D6h
LblockArrow equ 0D7h
;
;
; 'getkey' equates
;
;
kRight equ 001h
kLeft equ 002h
kUp equ 003h
kDown equ 004h
kColon equ 005h
kEnter equ 006h
kExit equ 007h
kClear equ 008h
kDel equ 009h
kIns equ 00Ah
kNext equ 00Bh
kAdd equ 00Ch
kSub equ 00Dh
kMul equ 00Eh
kDiv equ 00Fh
kExpon equ 010h
kLParen equ 011h
kRParen equ 012h
kLBrack equ 013h
kRBrack equ 014h
kEqual equ 015h
kStore equ 016h
kRecall equ 017h
kComma equ 018h
kAng equ 019h
kChs equ 01Ah
kDecPnt equ 01Bh
k0 equ 01Ch
k1 equ 01Dh
k2 equ 01Eh
k3 equ 01Fh
k4 equ 020h
k5 equ 021h
k6 equ 022h
k7 equ 023h
k8 equ 024h
k9 equ 025h
kEE equ 026h
kSpace equ 027h
kCapA equ 028h
kCapB equ 029h
kCapC equ 02Ah
kCapD equ 02Bh
kCapE equ 02Ch
kCapF equ 02Dh
kCapG equ 02Eh
kCapH equ 02Fh
kCapI equ 030h
kCapJ equ 031h
kCapK equ 032h
kCapL equ 033h
kCapM equ 034h
kCapN equ 035h
kCapO equ 036h
kCapP equ 037h
kCapQ equ 038h
kCapR equ 039h
kCapS equ 03Ah
kCapT equ 03Bh
kCapU equ 03Ch
kCapV equ 03Dh
kCapW equ 03Eh
kCapX equ 03Fh
kCapY equ 040h
kCapZ equ 041h
ka equ 042h
kb equ 043h
kc equ 044h
kd equ 045h
ke equ 046h
kf equ 047h
kg equ 048h
kh equ 049h
ki equ 04Ah
kj equ 04Bh
kk equ 04Ch
kl equ 04Dh
km equ 04Eh
kn equ 04Fh
ko equ 050h
kp equ 051h
kq equ 052h
kr equ 053h
ks equ 054h
kt equ 055h
ku equ 056h
kv equ 057h
kw equ 058h
kx equ 059h
ky equ 05Ah
kz equ 05Bh
kVarx equ 05Ch
kAns