Well, just in case there isn't a documentation planned for release by TI, it might be beneficial to develop our own for the TI84+ CE. Things like flags, system calls, and the like.
For instance, the lowercase flag remains the same, as already documented.
Is there a document that could be set up to manage all of this, by chance? Anything I find I'll post here.
BrandonW (and others) have started to put together some documentation on WikiTI:
http://wikiti.brandonw.net/index.php?title=Calculator_Documentation#TI-84_Plus_CE.5B-T.5D.2C_TI-83_Premium_CE
However, this would be a good place to discuss technical documentation before it makes its way to WikiTI. Here are some things I know:
- The stack is 4KB
- There appears to be a 4KB heap-like location above the stack
- The Zilog ez80 compiler's 32-bit IEEE754 floating point routines are embedded in the OS, so writing C programs will produce smaller binaries than might otherwise be the case.
- The CPU seems to be clocked at 48MHz, and therefore be capable of speeds up to 48MIPS with pipelining. Runer claims that RAM accesses take 4 cycles and Flash 10 cycles, so code will run slowly.
Things I'm curious about:
- Do we have crystal timers?
- Do we know how to access the real-time clock data?
- Where is the memory-mapped LCD?
The LCD is at 0xD40000. A port on the ASIC controls that address (which we can't change).
The 4KB area is (I think) privileged RAM, used for issuing flash commands, which will require a lot more research.
Here are some things I found:
Storing to the LCDs VRAM is put in big-endian format, RRRRR-GGGGGG-BBBBB or 5-6-5 color.
It uses 16-bit color mode, RGB, rather than the CSEs BGR. What this means is simply that you swap the two bytes to achieve the same color.
From the LCD that is suggested on WikiTI, here is the relevant information:
Code: • 1bpp, palettized, 2 colors selected from available colors.
• 2bpp, palettized, 4 colors selected from available colors.
• 4bpp, palettized, 16 colors selected from available colors.
• 8bpp, palettized, 256 colors selected from available colors.
• 12bpp, direct 4:4:4 Red-Green-Blue (RGB).
• 16bpp, direct 5:5:5 RGB, with 1bpp not normally used. This pixel is still output,
and you can use it as a bright bit to connect to the Least Significant Bit (LSB) of
RGB components of a 6:6:6 TFT panel.
• 16bpp, direct 5:6:5 RGB.
• 24bpp, direct 8:8:8 RGB, providing over 16 million colors
So far, I have found that the linking has a few differences from the 84PCSE:
-It has a 1024 byte USB buffer instead of the CSE's 256
-The screenshots are output in raw format instead of the CSE's RLE-encoded output
-The CE cannot be silent-linked to execute programs or keypresses
I noticed today that if you're in Memory Management and you select and App, you get the version and copyright information in the header at the top. Is that information that already existed in the app format, or is that something new? Seems neat, in any case.
Some version information is now part of the FlashApp's header, indeed. That's the part I originally thought indicated an OS version number dependency.
The two first protocol changes mentioned by Hooloovoo were already known to me. Lack of remote control and execution is news, and it's going to make ROM dumping less automated, requiring manual program launching, like it does on several old models...
Here are some tested system calls:
Code: _vPutSN equ 020838h
_HomeUp equ 020828h
Course, I'll find a lot more.
Lack of remote control and program execution concerns me. As you may have seen, there is a TestGuard 5.0, and previous versions work by transferring over a randomly-named program that deletes or disables variables, then transfers a confirmation code back over to be displayed on-screen.
If those link commands are no longer present, we need to dig into that and see what it's doing now.
So the wikiTI page was looking a little sparse in the way of system calls, so here they are:
There are still plenty more to find, and it also looks like TI added a whole bunch more as well.
But the ones below should get you by with most things you want to do, at least until I can find the rest.
SystemCalls:
Code: _OsSize equ 020104h ; Not actually a routine, just a pointer to the end of the OS, san signature
_bootOS equ 020108h
_interruptHandler equ 02010Ch
_rst10Handler equ 020110h
_rst18Handler equ 020114h
_rst20Handler equ 020118h
_rst28Handler equ 02011Ch
_rst30Handler equ 020120h
_DivHLBy10 equ 020140h
_DivHLByA equ 020144h
_KbdScan equ 020148h
_GetCSC equ 02014ch
_coorMon equ 020150h
_Mon equ 020154h
_monForceKey equ 020158h
_SendKPress equ 02015ch
_JForceCmdNoChar equ 020160h
_JForceCmd equ 020164h
_sysErrHandler equ 020168h
_NewContext equ 02016ch
_NewContext0 equ 020170h
_PPutAwayPrompt equ 020174h
_PPutAway equ 020178h
_PutAway equ 02017ch
_SizeWind equ 020180h
_ErrorEP equ 020184h
_CallMain equ 020188h
_monErrHand equ 02018ch
_AppInit equ 020190h
_initialize equ 020194h
_Min equ 020198h
_Max equ 02019ch
_AbsO1PAbsO2 equ 0201a0h
_Intgr equ 0201a4h
_Trunc equ 0201a8h
_InvSub equ 0201ach
_Times2 equ 0201b0h
_Plus1 equ 0201b4h
_Minus1 equ 0201b8h
_FPSub equ 0201bch
_FPAdd equ 0201c0h
_DToR equ 0201c4h
_RToD equ 0201c8h
_Cube equ 0201cch
_TimesPt5 equ 0201d0h
_FPSquare equ 0201d4h
_FPMult equ 0201d8h
_LJRnd equ 0201dch
_InvOP1SC equ 0201e0h
_InvOP1S equ 0201e4h
_InvOP2S equ 0201e8h
_Frac equ 0201ech
_FPRecip equ 0201f0h
_FPDiv equ 0201f4h
_SqRoot equ 0201f8h
_RndGuard equ 0201fch
_RnFx equ 020200h
_Int equ 020204h
_Round equ 020208h
_LnX equ 02020ch
_LogX equ 020210h
_LJNoRnd equ 020214h
_EToX equ 020218h
_TenX equ 02021ch
_SinCosRad equ 020220h
_Sin equ 020224h
_Cos equ 020228h
_Tan equ 02022ch
_SinHCosH equ 020230h
_TanH equ 020234h
_CosH equ 020238h
_SinH equ 02023ch
_ACosRad equ 020240h
_ATanRad equ 020244h
_ATan2Rad equ 020248h
_ASinRad equ 02024ch
_ACos equ 020250h
_ATan equ 020254h
_ASin equ 020258h
_ATan2 equ 02025ch
_ATanH equ 020260h
_ASinH equ 020264h
_ACosH equ 020268h
_PToR equ 02026ch
_RToP equ 020270h
_HLTimes9 equ 020274h
_CkOP1Cplx equ 020278h
_CkOP1Real equ 02027ch
_Angle equ 020280h
_COP1Set0 equ 020284h
_CpOP4OP3 equ 020288h
_Mov9OP2Cp equ 02028ch
_AbsO1O2Cp equ 020290h
_CpOP1OP2 equ 020294h
_OP3ToOP4 equ 020298h
_OP1ToOP4 equ 02029ch
_OP2ToOP4 equ 0202a0h
_OP4ToOP2 equ 0202a4h
_OP3ToOP2 equ 0202a8h
_OP1ToOP3 equ 0202ach
_OP5ToOP2 equ 0202b0h
_OP5ToOP6 equ 0202b4h
_OP5ToOP4 equ 0202b8h
_OP1ToOP2 equ 0202bch
_OP6ToOP2 equ 0202c0h
_OP6ToOP1 equ 0202c4h
_OP4ToOP1 equ 0202c8h
_OP5ToOP1 equ 0202cch
_OP3ToOP1 equ 0202d0h
_OP6ToOP5 equ 0202d4h
_OP4ToOP5 equ 0202d8h
_OP3ToOP5 equ 0202dch
_OP2ToOP5 equ 0202e0h
_OP2ToOP6 equ 0202e4h
_OP1ToOP6 equ 0202e8h
_OP1ToOP5 equ 0202ech
_OP2ToOP1 equ 0202f0h
_Mov11B equ 0202f4h
_Mov10B equ 0202f8h
_Mov9B equ 0202fch ; <--
_Mov9B2 equ 020300h ; These two jump to the same thing... :)
_Mov8B equ 020304h
_Mov7B equ 020308h ; <--
_Mov7B2 equ 02030Ch ; These two jump to the same thing... Again. :)
_OP2ToOP3 equ 020310h
_OP4ToOP3 equ 020314h
_OP5ToOP3 equ 020318h
_OP4ToOP6 equ 02031Ch
_Mov9ToOP1 equ 020320h
_Mov9OP1OP2 equ 020324h
_Mov9ToOP2 equ 020328h
_MovFrOP1 equ 02032Ch
_OP4Set1 equ 020330h
_OP3Set1 equ 020334h
_OP2Set8 equ 020338h
_OP2Set5 equ 02033Ch
_OP2SetA equ 020340h
_OP2Set4 equ 020344h
_OP2Set3 equ 020348h
_OP1Set1 equ 02034Ch
_OP1Set4 equ 020350h
_OP1Set3 equ 020354h
_OP3Set2 equ 020358h
_OP1Set2 equ 02035Ch
_OP2Set2 equ 020360h
_OP2Set1 equ 020364h
_Zero16D equ 020368h
_OP5Set0 equ 02036Ch
_OP4Set0 equ 020370h
_OP3Set0 equ 020374h
_OP2Set0 equ 020378h
_OP1Set0 equ 02037Ch
_SetNum0 equ 020380h
_ZeroOP1 equ 020384h
_ZeroOP2 equ 020388h
_ZeroOP3 equ 02038Ch
_ZeroOP equ 020390h
_OP2ExOP6 equ 0203DCh
_OP5ExOP6 equ 0203E0h
_OP1ExOP5 equ 0203E4h
_OP1ExOP6 equ 0203E8h
_OP2ExOP4 equ 0203ECh
_OP2ExOP5 equ 0203F0h
_OP1ExOP3 equ 0203F4h
_OP1ExOP4 equ 0203F8h
_OP1ExOP2 equ 0203FCh
_ExLp equ 020400h
_CkOP1C0 equ 020404h
_CkOP1FP0 equ 020408h
_CkOP2FP0 equ 02040Ch
_PosNo0Int equ 020410h
_CkPosInt equ 020414h
_CkInt equ 020418h
_CkOdd equ 02041Ch
_CkOP1M equ 020420h
_GetCon1 equ 020424h
_GetCon equ 020428h
_PIDIV2 equ 02042Ch
_PIDIV4 equ 020430h
_TWOPI equ 020434h
_PICON equ 020438h
_ExpToHex equ 02043Ch
_OP1ExpToDec equ 020440h
_CkOP2Pos equ 020444h
_CkOP1Pos equ 020448h
_ClrOP2S equ 02044Ch
_ClrOP1S equ 020450h
_FDiv100 equ 020454h
_FDiv10 equ 020458h
_DecO1Exp equ 02045Ch
_IncO1Exp equ 020460h
_IncExp equ 020468h
_CkValidNum equ 06011Fh
_GetExp equ 02046Ch
_HTimesL equ 020470h ; Kind of useless now; the instruction at this address is literally "mlt hl / ret"
_EOP1NotReal equ 020474h
_ThetaName equ 020478h
_RName equ 02047Ch
_RegEqName equ 020480h
_RecurNName equ 020484h
_XName equ 020488h
_YName equ 02048Ch
_TName equ 020490h
_RealName equ 020494h
_SetEStoFPS equ 020498h
_ChkTempDirt equ 02049Ch
_OP1MOP2Exp equ 0204A0h
_OP1ExpMDE equ 0204A4h
_ChkErrBreak equ 0204A8h
_IsA2ByteTok equ 0204ACh
_GetLastEntry equ 0204B0h
_GetLastEntryPtr equ 0204B4h
_RegrClrChng equ 0204B8h
_ResetWinTop equ 0204BCh
_IsO1NonTLstOrProg equ 0204C0h
_IsO1NonTempLst equ 0204C4h
_Is_A_LstOrCLst equ 0204C8h
_Chk_HL_999 equ 0204CCh
_Equ_or_NewEqu equ 0204D0h
_ErrD_OP1NotPos equ 0204D4h
_ErrD_OP1Not_R equ 0204D8h
_ErrD_OP1NotPosInt equ 0204DCh
_ErrD_OP1_LE_0 equ 0204E0h
_ErrD_OP1_0 equ 0204E4h
_FindSym_Get_Size equ 0204E8h
_Sto_StatVar equ 0204ECh
_Rcl_StatVar equ 0204F0h
_CkOP2Real equ 0204F4h
_Get_X_Indirect equ 0204F8h
_MemChk equ 0204FCh
_CmpPrgNamLen1 equ 020500h
_CmpPrgNamLen equ 020504h
_FindProgSym equ 020508h
_ChkFindSym equ 02050Ch
_FindSym equ 020510h
_InsertMem equ 020514h
_InsertMemA equ 020518h
_EnoughMem equ 02051Ch ;---
_CmpMemNeed equ 020520h
_CreatePVar4 equ 020524h
_CreatePVar3 equ 020528h
_CreateVar3 equ 02052Ch
_CreateCplx equ 020530h
_CreateReal equ 020534h
_CreateTRList equ 020538h
_CreateRList equ 02053Ch
_CreateTCList equ 020540h
_CreateCList equ 020544h
_CreateTRMat equ 020548h
_CreateRMat equ 02054Ch
_CreateTStrng equ 020550h
_CreateStrng equ 020554h
_Create0Equ equ 020558h
_CreateTEqu equ 02055Ch
_CreateEqu equ 020560h
_CreateGDB equ 020564h
_CreateProg equ 020568h
_ChkDel equ 02056Ch
_ChkDelA equ 020570h
_AdjParser equ 020574h
_AdjMath equ 020578h
_AdjM7 equ 02057Ch
_DelMemA equ 020580h
_Get_Form_Num equ 020584h
_DelVar equ 020588h
_DelVarIO equ 02058Ch
_DelMem equ 020590h
_DelVar3D equ 020594h
_DelVar3C equ 020598h
_DelVar3DC equ 02059Ch
_SymProgNonTLst equ 0205A0h
_AdjSymPtrs equ 0205A4h
_DataSizeA equ 0205A8h
_DataSize equ 0205ACh
_PopMCplxO1 equ 0205B0h
_PopMCplx equ 0205B4h
_MovCplx equ 0205B8h
_PopOP5 equ 0205BCh
_PopOP3 equ 0205C0h
_PopOP1 equ 0205C4h
_PopRealO6 equ 0205C8h
_PopRealO5 equ 0205CCh
_PopRealO4 equ 0205D0h
_PopRealO3 equ 0205D4h
_PopRealO2 equ 0205D8h
_PopRealO1 equ 0205DCh
_PopReal equ 0205E0h
_FPopCplx equ 0205E4h
_FPopReal equ 0205E8h
_FPopFPS equ 0205ECh
_DeallocFPS equ 0205F0h
_DeallocFPS1 equ 0205F4h
_AllocFPS equ 0205F8h
_AllocFPS1 equ 0205FCh
_PushRealO6 equ 020600h
_PushRealO5 equ 020604h
_PushRealO4 equ 020608h
_PushRealO3 equ 02060Ch
_PushRealO2 equ 020610h
_PushRealO1 equ 020614h
_PushReal equ 020618h
_PushOP5 equ 02061Ch
_PushOP3 equ 020620h
_PushMCplxO3 equ 020624h
_PushOP1 equ 020628h
_PushMCplxO1 equ 02062Ch
_PushMCplx equ 020630h
_ExMCplxO1 equ 020634h
_Exch9 equ 020638h
_CpyTo1FPS11 equ 02063Ch
_CpyTo2FPS5 equ 020640h
_CpyTo1FPS5 equ 020644h
_CpyTo2FPS6 equ 020648h
_CpyTo1FPS6 equ 02064Ch
_CpyTo2FPS7 equ 020650h
_CpyTo1FPS7 equ 020654h
_CpyTo1FPS8 equ 020658h
_CpyTo2FPS8 equ 02065Ch
_CpyTo1FPS10 equ 020660h
_CpyTo1FPS9 equ 020664h
_CpyTo2FPS4 equ 020668h
_CpyTo6FPS3 equ 02066Ch
_CpyTo6FPS2 equ 020670h
_CpyTo2FPS3 equ 020674h
_CpyCTo1FPS3 equ 020678h
_CpyTo1FPS3 equ 02067Ch
_CpyFPS3 equ 020680h
_CpyTo1FPS4 equ 020684h
_CpyTo3FPS2 equ 020688h
_CpyTo5FPST equ 02068Ch ;
_CpyTo6FPST equ 020690h
_CpyTo4FPST equ 020694h
_CpyTo3FPST equ 020698h
_CpyTo2FPST equ 02069Ch
_CpyTo1FPST equ 0206A0h
_CpyFPST equ 0206A4h
_CpyStack equ 0206A8h
_CpyTo3FPS1 equ 0206ACh ;
_CpyTo2FPS1 equ 0206B0h
_CpyTo1FPS1 equ 0206B4h
_CpyFPS1 equ 0206B8h
_CpyTo2FPS2 equ 0206BCh
_CpyTo1FPS2 equ 0206C0h
_CpyFPS2 equ 0206C4h
_CpyO3ToFPST equ 0206C8h
_CpyO2ToFPST equ 0206CCh
_CpyO6ToFPST equ 0206D0h
_CpyO1ToFPST equ 0206D4h
_CpyToFPST equ 0206D8h
_CpyToStack equ 0206DCh
_CpyO3ToFPS1 equ 0206E0h
_CpyO5ToFPS1 equ 0206E4h
_CpyO2ToFPS1 equ 0206E8h
_CpyO1ToFPS1 equ 0206ECh
_CpyToFPS1 equ 0206F0h
_CpyO2ToFPS2 equ 0206F4h
_CpyO3ToFPS2 equ 0206F8h
_CpyO6ToFPS2 equ 0206FCh
_CpyO1ToFPS2 equ 020700h
_CpyToFPS2 equ 020704h
_CpyO5ToFPS3 equ 020708h
_CpyO2ToFPS3 equ 02070Ch
_CpyO1ToFPS3 equ 020710h
_CpyToFPS3 equ 020714h
_CpyO1ToFPS6 equ 020718h
_CpyO1ToFPS7 equ 02071Ch
_CpyO1ToFPS5 equ 020720h
_CpyO2ToFPS4 equ 020724h
_CpyO1ToFPS4 equ 020728h
_ErrNotEnoughMem equ 02072Ch
_FPSMinus9 equ 020730h
_HLMinus9 equ 020734h
_ErrOverflow equ 020738h
_ErrDivBy0 equ 02073Ch
_ErrSingularMat equ 020740h
_ErrDomain equ 020744h
_ErrIncrement equ 020748h
_ErrNon_Real equ 02074Ch
_ErrSyntax equ 020750h
_ErrDataType equ 020754h
_ErrArgument equ 020758h
_ErrDimMismatch equ 02075Ch
_ErrDimension equ 020760h
_ErrUndefined equ 020764h
_ErrMemory equ 020768h
_ErrInvalid equ 02076Ch
_ErrBreak equ 020770h
_ErrStat equ 020774h
_ErrSignChange equ 020778h
_ErrIterations equ 02077Ch
_ErrBadGuess equ 020780h
_ErrTolTooSmall equ 020784h
_ErrStatPlot equ 020788h
_ErrLinkXmit equ 02078Ch
_JError equ 020790h ; Throws an Error depending on the value in A, according to the error flags
_noErrorEntry equ 020794h ; It jumps to a ret statement What?
_pushErrorHandler equ 020798h
_popErrorHandler equ 02079Ch
_StrCopy equ 0207A0h
_StrCatCall equ 0207A4h
_IsInSet equ 0207A8h
_GetNameA equ 0207ACh
_RecName equ 0207B0h
_PutMap equ 0207B4h
_PutC equ 0207B8h
_DispHL equ 0207BCh
;------------------------------
_NewLine equ 0207F0h
_MoveDown equ 0207F4h
_ScrollUp equ 0207F8h
_ShrinkWindow equ 0207FCh
_MoveUp equ 020800h
_ScrollDown equ 020804h
_ClrLCDFull equ 020808h
_ClrLCD equ 02080Ch
_ClrScrnFull equ 020810h
_ClrScrn equ 020814h
_ClrTxtShd equ 020818h
_ClrWindow equ 02081Ch
_EraseEOL equ 020820h
_EraseEOW equ 020824h
_HomeUp equ 020828h
_GetCurLoc equ 02082Ch
_VPutMap equ 020830h
_VPutS equ 020834h
_VPutSN equ 020838h
_VPutSNG equ 02083Ch
_VPutSNT equ 020840h
_RunIndicOn equ 020844h
_RunIndicOff equ 020848h
;------------------------------
_ToFrac equ 02096ch
_SeqSet equ 020970h
_SeqSolve equ 020974h
_Cmp_Num_Init equ 020978h
_BinOPExec equ 02097ch
_ExMean1 equ 020980h
_Set2MVLPtrs equ 020984h
_SetMat1 equ 020988h
_CreateTList equ 02098ch
_UnOPExec equ 020990h
_ThreeExec equ 020994h
_RestoreErrNo equ 020998h
_FourExec equ 02099ch
_FiveExec equ 0209a0h
_CpyTo2ES1 equ 0209a4h
_CpyTo6ES1 equ 0209a8h
_CpyTo1ES1 equ 0209ach
_CpyTo3ES1 equ 0209b0h
_CpyTo3ES2 equ 0209b4h
_CpyTo2ES2 equ 0209b8h
_CpyTo1ES2 equ 0209bch
_CpyTo2ES3 equ 0209c0h
_CpyTo1ES3 equ 0209c4h
_CpyTo3ES4 equ 0209c8h
_CpyTo6ES3 equ 0209cch
_CpyTo2ES4 equ 0209d0h
_CpyTo1ES4 equ 0209d4h
_CpyTo2ES5 equ 0209d8h
_CpyTo1ES5 equ 0209dch
_CpyTo4EST equ 0209e0h
_CpyTo2EST equ 0209e4h
_CpyTo1EST equ 0209e8h
_CpyTo2ES6 equ 0209ech
_CpyTo1ES6 equ 0209f0h
_CpyTo2ES7 equ 0209f4h
_CpyTo1ES7 equ 0209f8h
_CpyTo2ES8 equ 0209fch
_CpyTo1ES8 equ 020a00h
_CpyTo1ES9 equ 020a04h
_CpyTo2ES9 equ 020a08h
_CpyTo2ES10 equ 020a0ch
_CpyTo1ES10 equ 020a10h
_CpyTo2ES11 equ 020a14h
_CpyTo1ES11 equ 020a18h
_CpyTo2ES12 equ 020a1ch
_CpyTo1ES12 equ 020a20h
_CpyTo2ES13 equ 020a24h
_CpyTo1ES13 equ 020a28h
_CpyTo1ES14 equ 020a2ch
_CpyTo1ES16 equ 020a30h
_CpyTo1ES17 equ 020a34h
_CpyTo1ES18 equ 020a38h
_CpyTo1ES15 equ 020a3ch
_CpyTo2ES15 equ 020a40h
_CpyO1ToEST equ 020a44h
_CpyO1ToES1 equ 020a48h
_CpyO6ToES1 equ 020a4ch
_CpyO6ToES3 equ 020a50h
_CpyO1ToES2 equ 020a54h
_CpyO2ToES2 equ 020a58h
_CpyO1ToES3 equ 020a5ch
_CpyO1ToES4 equ 020a60h
_CpyO1ToES5 equ 020a64h
_CpyO1ToES6 equ 020a68h
_CpyO1ToES7 equ 020a6ch
_CpyO2ToES4 equ 020a70h
_CpyO2ToES5 equ 020a74h
_CpyO2ToES6 equ 020a78h
_CpyO2ToES7 equ 020a7ch
_CpyO2ToES8 equ 020a80h
_CpyO2ToES9 equ 020a84h
_CpyO1ToES8 equ 020a88h
_CpyO1ToES9 equ 020a8ch
_CpyO1ToES10 equ 020a90h
_CpyO1ToES11 equ 020a94h
_CpyO1ToES12 equ 020a98h
_CpyO1ToES13 equ 020a9ch
_CpyO1ToES14 equ 020aa0h
_EvalF3A equ 020aa4h
_GetK equ 020aa8h
_SetTitle equ 020aach
_DispVarVal equ 020ab0h
_RecallEd equ 020ab4h
_SetupBuffer equ 020ab8h
_CreateNumEditBuf equ 020abch
_CallCommon equ 020ac0h
_CommonKeys equ 020ac4h
_Leftmore equ 020ac8h
_fDel equ 020acch
_fClear equ 020ad0h
_fInsDisp equ 020ad4h
_fInsDisp02 equ 020ad8h
_SetIndicator equ 020adch
_CloseEditBufNoR equ 020ae0h
_ReleaseBuffer equ 020ae4h
_VarNameToOP1HL equ 020ae8h
_NameToOP1 equ 020aech
_numPPutAway equ 020af0h
_numRedisp equ 020af4h
_numError02 equ 020af8h
_Load_SFont equ 020afch
_SFont_Len equ 020b00h
_InitNumVec equ 020b04h
_SetXXOP1 equ 020b08h
_SetXXOP2 equ 020b0ch
_SetXXXXOP2 equ 020b10h
;------------------------------
_StoOther equ 020f4ch
_RclAns equ 020f50h
_RclY equ 020f54h
_RclN equ 020f58h
_RclX equ 020f5ch
_RclVarSym equ 020f60h
_RclSysTok equ 020f64h
_StMatEl equ 020f68h
_StLstVecEl equ 020f6ch
_ConvOP1 equ 020f70h
;------------------------------
;002114Ch ;I think this forces the interrupt to scan the keypad (subroutine of _getKey)
_createAppVar equ 021330h
_createProtProg equ 021334h
_lockFlash equ 0213ACh
_DelVarArc equ 021434h
_Arc_Unarc equ 021448h
_DispHL24 equ 021EE0h
_nmiHandler equ 0220A8h
Ram Locations:
Here's some RAM locations and what they are for: (I'm not sure about naming conventions; so I'll look them up later )
Should be a lot easier to find now that there are the system call addresses.
Code: errorNum equ 0D008DFh ; Stores the value of the currently thrown error
freeRAM equ 0D0258Dh ; This is where the amount of Free RAM is stored
I was able to find out a few things about how the eZ80 processor operates, which were ambiguous in Zilog's documentation.
The eZ80 documentation states that attempting to execute an illegal instruction will cause a TRAP operation to occur, which is the equivalent of an RST 00h instruction. Of course, under normal operation this will cause a soft reboot because it calls the boot initialization code, but that's not really helpful in figuring out what actually happens (like if we want to emulate this behavior accurately).
So, I tried executing some illegal instructions in Z80 mode with a handler at 0000h that allowed me to determine the return address. And the results were interesting...
For two-byte illegal instructions (CB, DD, ED, or FD prefixed), the return address points to the second byte of the opcode. On the other hand, for four-byte illegal instructions (DDCBxxyy or FDCBxxyy), the return address points to the third byte of the opcode, which is the displacement. I don't believe there are any other sizes of illegal instructions, at least if Zilog's opcode maps are to be believed.
I also discovered that the LD HL,I and LD I,HL instructions are valid and work as expected with 16-bit values, so we can assume that IM 2 can work in ADL mode with a 24-bit vector table (though at this point we have no idea whether TI actually made the hardware supply valid vectors or if we'd once again need to create a 258-byte table filled with a single byte).
Finally, empirical evidence shows that writing a 16-bit value to a register pair will zero-extend the value into the full 24 bits. This applies both to Z80-mode instructions and instructions like MLT defined to write only 16 bits. Interestingly, EX DE,HL will zero-extend both DE and HL, but most other instructions will probably only zero-extend a single destination register. Registers used only as a source will not be modified whatsoever.
At calc84's direction, I have confirmed that the LCD's ports (and probably other ports) are memory-mapped! This means that we can in fact access ports without any exploits! Thanks for TI and/or their engineers for providing this; all we need now is an App key and I'll be thrilled with this new calculator.
Nice work! It has always puzzled me as to why this would not be the case.
Happy with 8bpp and palettes for sure!
To clarify further, I've confirmed that the following address ranges map to ports:
0xE00000 -> 0x1000
0xE10000 -> 0x2000 (probably, both regions are all 0)
0xE20000 -> 0x3000
0xE30000 -> 0x4000
0xF00000 -> 0x5000
0xF10000 -> 0x6000
0xF20000 -> 0x7000
0xF30000 -> 0x8000
0xF40000 -> 0x9000 (probably, both regions are all 0)
0xF50000 -> 0xA000
0xF60000 -> 0xB000
0xF70000 -> 0xC000
0xF80000 -> 0xD000
0xF90000 -> 0xE000
0xFA0000 -> 0xF000 (probably, both regions are all 0)
Woo! This is great news! That means we can do some fun things now with graphics and the like! Calc84, this is great!
Oh, and here's the updated include file, if anyone is interested:
Code: ; TI-84 Plus CE Include file
; Various parts contributed by
;- BrandonW
;- calc84
;- tr1p1ea
;- Texas Instruments (Parts recycled from ti83plus.inc)
.nolist
#ifndef TI84PCE
#define TI84PCE
#define equ .equ
#define equ .equ
#define end .end
#define END .end
lcdWidth .equ 320
lcdHeight .equ 240
;-------------------------------------------------------------------------------
; Boot Calls
;-------------------------------------------------------------------------------
_getBootVerMajor equ 0000080h
_getHardwareVersion equ 0000084h
_getKeyID equ 0000088h
_getBootVerMinor equ 000008Ch
_getBootVerBuild equ 0000090h
;0000094h ;outputs A to 0FFFEh and locks up, only on certain hardware revision?
__case equ 000110h
__case16 equ 000114h
__case16D equ 000118h
__case24 equ 00011Ch
__case24D equ 000120h
__case8 equ 000124h
__case8D equ 000128h
__frameset0 equ 000130h
__frameset equ 00012Ch
__iand equ 000134h
__icmpzero equ 000138h
__idivs equ 00013Ch
__idivu equ 000140h
__idvrmu equ 000144h
__ildix equ 000148h
__ildiy equ 00014Ch
__imul_b equ 000150h
__imuls equ 000154h
__imulu equ 000158h
__indcall equ 00015Ch
__ineg equ 000160h
__sneg equ 00022Ch
__inot equ 000164h
__snot equ 000230h
__ior equ 000168h
__irems equ 00016Ch
__iremu equ 000170h
__ishl_b equ 000178h
__ishl equ 000174h
__ishrs_b equ 000180h
__ishrs equ 00017Ch
__ishru_b equ 000188h
__ishru equ 000184h
__istix equ 00018Ch
__istiy equ 000190h
__itol equ 000194h
__ixor equ 000198h
__ladd_b equ 0001A0h
__ladd equ 00019Ch
__land equ 0001A4h
__lcmps equ 0001A8h
__lcmpu equ 0001ACh
__lcmpzero equ 0001B0h
__ldivs equ 0001B4h
__ldivu equ 0001B8h
__ldvrmu equ 0001BCh
__lldix equ 0001C0h
__lldiy equ 0001C4h
__lmuls equ 0001C8h
__lmulu equ 0001CCh
__lneg equ 0001D0h
__lnot equ 0001D4h
__lor equ 0001D8h
__lrems equ 0001DCh
__lremu equ 0001E0h
__lshl equ 0001E4h
__lshrs equ 0001E8h
__lshru equ 0001ECh
__bshru equ 000104h
__bshl equ 000100h
__bldiy equ 0000FCh
__bstiy equ 000108h
__bstix equ 00010Ch
__lstix equ 0001F0h
__lstiy equ 0001F4h
__lsub equ 0001F8h
__lxor equ 0001FCh
__sand equ 000200h
__scmp0 equ 000204h
__sdivs equ 000208h
__sdivu equ 00020Ch
__seqcase equ 000210h
__seqcaseD equ 000214h
__setflag equ 000218h
__sldix equ 00021Ch
__sldiy equ 000220h
__smuls equ 000224h
__smulu equ 000228h
__sor equ 000234h
__srems equ 000238h
__sremu equ 00023Ch
__sshl_b equ 000244h
__sshl equ 000240h
__sshrs_b equ 00024Ch
__sshrs equ 000248h
__sshru_b equ 000254h
__sshru equ 000250h
__sstix equ 000258h
__sstiy equ 00025Ch
__stoi equ 000260h
__stoiu equ 000264h
__sxor equ 000268h
;00002D0h ;checks something about field 80C0h in the OS header (value 0101h)
_WriteAByte equ 00002D4h
_EraseFlash equ 00002D8h
_EraseFlashPage equ 00002DCh
_WriteFlash equ 00002E0h
_WriteAByte2 equ 00002E4h ;no difference
_WriteAByteA equ 00002E8h ;byte is in A, not B
;00002ECh ;lots of writes/erases involving sectors 3Bh/3Fh
;00002F0h ;zeroes out 4KB at 0D1887Ch and writes 0D18C7Ch to start of it
_WriteFlashUnsafe equ 0000334h
_memchr equ 00009Ch
_memcmp equ 0000A0h
_memcpy equ 0000A4h
_memmove equ 0000A8h
_memset equ 0000ACh
_memclear equ 0000B0h
_DoNothing equ 0000F8h
_setjmp equ 0000B8h
_longjmp equ 000098h
_sprintf equ 0000BCh
_strcat equ 0000C0h
_strchr equ 0000C4h
_strcmp equ 0000C8h
_strcpy equ 0000CCh
_strcspn equ 0000D0h
_strlen equ 0000D4h
_strncat equ 0000D8h
_strncmp equ 0000DCh
_strncpy equ 0000E0h
_strpbrk equ 0000E4h
_strrchr equ 0000E8h
_strspn equ 0000ECh
_strstr equ 0000F0h
_strtok equ 0000F4h; Uses static 24-bit variable at 0D0FFFFh
__fppack equ 00026Ch
FLT_MAX equ 000294h; NOT A ROUTINE LOL
__fadd equ 000270h
__fcmp equ 000274h
__fdiv equ 000278h
__ftol equ 00027Ch
__ltof equ 000284h
__fmul equ 000288h
__fneg equ 00028Ch
__fsub equ 000290h
__ultof equ 000280h
_fsqrt equ 000298h
__frbtof equ 00029Ch
__frftob equ 0002A0h
__frftoi equ 0002A8h
__frftos equ 0002B0h
__frftoub equ 0002A4h
__frftoui equ 0002ACh
__frftous equ 0002B4h
__fritof equ 0002B8h
__frstof equ 0002C0h
__frubtof equ 0002C4h
__fruitof equ 0002BCh
__frustof equ 0002C8h
;-------------------------------------------------------------------------------
; System Calls
;-------------------------------------------------------------------------------
_OsSize equ 020104h ; Not actually a routine, just a pointer to the end of the OS, san signature
_bootOS equ 020108h
_interruptHandler equ 02010Ch
_rst10Handler equ 020110h
_rst18Handler equ 020114h
_rst20Handler equ 020118h
_rst28Handler equ 02011Ch
_rst30Handler equ 020120h
_DivHLBy10 equ 020140h
_DivHLByA equ 020144h
_KbdScan equ 020148h
_GetCSC equ 02014ch
_coorMon equ 020150h
_Mon equ 020154h
_monForceKey equ 020158h
_SendKPress equ 02015ch
_JForceCmdNoChar equ 020160h
_JForceCmd equ 020164h
_sysErrHandler equ 020168h
_NewContext equ 02016ch
_NewContext0 equ 020170h
_PPutAwayPrompt equ 020174h
_PPutAway equ 020178h
_PutAway equ 02017ch
_SizeWind equ 020180h
_ErrorEP equ 020184h
_CallMain equ 020188h
_monErrHand equ 02018ch
_AppInit equ 020190h
_initialize equ 020194h
_Min equ 020198h
_Max equ 02019ch
_AbsO1PAbsO2 equ 0201a0h
_Intgr equ 0201a4h
_Trunc equ 0201a8h
_InvSub equ 0201ach
_Times2 equ 0201b0h
_Plus1 equ 0201b4h
_Minus1 equ 0201b8h
_FPSub equ 0201bch
_FPAdd equ 0201c0h
_DToR equ 0201c4h
_RToD equ 0201c8h
_Cube equ 0201cch
_TimesPt5 equ 0201d0h
_FPSquare equ 0201d4h
_FPMult equ 0201d8h
_LJRnd equ 0201dch
_InvOP1SC equ 0201e0h
_InvOP1S equ 0201e4h
_InvOP2S equ 0201e8h
_Frac equ 0201ech
_FPRecip equ 0201f0h
_FPDiv equ 0201f4h
_SqRoot equ 0201f8h
_RndGuard equ 0201fch
_RnFx equ 020200h
_Int equ 020204h
_Round equ 020208h
_LnX equ 02020ch
_LogX equ 020210h
_LJNoRnd equ 020214h
_EToX equ 020218h
_TenX equ 02021ch
_SinCosRad equ 020220h
_Sin equ 020224h
_Cos equ 020228h
_Tan equ 02022ch
_SinHCosH equ 020230h
_TanH equ 020234h
_CosH equ 020238h
_SinH equ 02023ch
_ACosRad equ 020240h
_ATanRad equ 020244h
_ATan2Rad equ 020248h
_ASinRad equ 02024ch
_ACos equ 020250h
_ATan equ 020254h
_ASin equ 020258h
_ATan2 equ 02025ch
_ATanH equ 020260h
_ASinH equ 020264h
_ACosH equ 020268h
_PToR equ 02026ch
_RToP equ 020270h
_HLTimes9 equ 020274h
_CkOP1Cplx equ 020278h
_CkOP1Real equ 02027ch
_Angle equ 020280h
_COP1Set0 equ 020284h
_CpOP4OP3 equ 020288h
_Mov9OP2Cp equ 02028ch
_AbsO1O2Cp equ 020290h
_CpOP1OP2 equ 020294h
_OP3ToOP4 equ 020298h
_OP1ToOP4 equ 02029ch
_OP2ToOP4 equ 0202a0h
_OP4ToOP2 equ 0202a4h
_OP3ToOP2 equ 0202a8h
_OP1ToOP3 equ 0202ach
_OP5ToOP2 equ 0202b0h
_OP5ToOP6 equ 0202b4h
_OP5ToOP4 equ 0202b8h
_OP1ToOP2 equ 0202bch
_OP6ToOP2 equ 0202c0h
_OP6ToOP1 equ 0202c4h
_OP4ToOP1 equ 0202c8h
_OP5ToOP1 equ 0202cch
_OP3ToOP1 equ 0202d0h
_OP6ToOP5 equ 0202d4h
_OP4ToOP5 equ 0202d8h
_OP3ToOP5 equ 0202dch
_OP2ToOP5 equ 0202e0h
_OP2ToOP6 equ 0202e4h
_OP1ToOP6 equ 0202e8h
_OP1ToOP5 equ 0202ech
_OP2ToOP1 equ 0202f0h
_Mov11B equ 0202f4h
_Mov10B equ 0202f8h
_Mov9B equ 0202fch ; <--
_Mov9B2 equ 020300h ; These two jump to the same thing... :)
_Mov8B equ 020304h
_Mov7B equ 020308h ; <--
_Mov7B2 equ 02030Ch ; These two jump to the same thing... Again. :)
_OP2ToOP3 equ 020310h
_OP4ToOP3 equ 020314h
_OP5ToOP3 equ 020318h
_OP4ToOP6 equ 02031Ch
_Mov9ToOP1 equ 020320h
_Mov9OP1OP2 equ 020324h
_Mov9ToOP2 equ 020328h
_MovFrOP1 equ 02032Ch
_OP4Set1 equ 020330h
_OP3Set1 equ 020334h
_OP2Set8 equ 020338h
_OP2Set5 equ 02033Ch
_OP2SetA equ 020340h
_OP2Set4 equ 020344h
_OP2Set3 equ 020348h
_OP1Set1 equ 02034Ch
_OP1Set4 equ 020350h
_OP1Set3 equ 020354h
_OP3Set2 equ 020358h
_OP1Set2 equ 02035Ch
_OP2Set2 equ 020360h
_OP2Set1 equ 020364h
_Zero16D equ 020368h
_OP5Set0 equ 02036Ch
_OP4Set0 equ 020370h
_OP3Set0 equ 020374h
_OP2Set0 equ 020378h
_OP1Set0 equ 02037Ch
_SetNum0 equ 020380h
_ZeroOP1 equ 020384h
_ZeroOP2 equ 020388h
_ZeroOP3 equ 02038Ch
_ZeroOP equ 020390h
_OP2ExOP6 equ 0203DCh
_OP5ExOP6 equ 0203E0h
_OP1ExOP5 equ 0203E4h
_OP1ExOP6 equ 0203E8h
_OP2ExOP4 equ 0203ECh
_OP2ExOP5 equ 0203F0h
_OP1ExOP3 equ 0203F4h
_OP1ExOP4 equ 0203F8h
_OP1ExOP2 equ 0203FCh
_ExLp equ 020400h
_CkOP1C0 equ 020404h
_CkOP1FP0 equ 020408h
_CkOP2FP0 equ 02040Ch
_PosNo0Int equ 020410h
_CkPosInt equ 020414h
_CkInt equ 020418h
_CkOdd equ 02041Ch
_CkOP1M equ 020420h
_GetCon1 equ 020424h
_GetCon equ 020428h
_PIDIV2 equ 02042Ch
_PIDIV4 equ 020430h
_TWOPI equ 020434h
_PICON equ 020438h
_ExpToHex equ 02043Ch
_OP1ExpToDec equ 020440h
_CkOP2Pos equ 020444h
_CkOP1Pos equ 020448h
_ClrOP2S equ 02044Ch
_ClrOP1S equ 020450h
_FDiv100 equ 020454h
_FDiv10 equ 020458h
_DecO1Exp equ 02045Ch
_IncO1Exp equ 020460h
_IncExp equ 020468h
_CkValidNum equ 06011Fh
_GetExp equ 02046Ch
_HTimesL equ 020470h ; Kind of useless now; the instruction at this address is literally "mlt hl / ret"
_EOP1NotReal equ 020474h
_ThetaName equ 020478h
_RName equ 02047Ch
_RegEqName equ 020480h
_RecurNName equ 020484h
_XName equ 020488h
_YName equ 02048Ch
_TName equ 020490h
_RealName equ 020494h
_SetEStoFPS equ 020498h
_ChkTempDirt equ 02049Ch
_OP1MOP2Exp equ 0204A0h
_OP1ExpMDE equ 0204A4h
_ChkErrBreak equ 0204A8h
_IsA2ByteTok equ 0204ACh
_GetLastEntry equ 0204B0h
_GetLastEntryPtr equ 0204B4h
_RegrClrChng equ 0204B8h
_ResetWinTop equ 0204BCh
_IsO1NonTLstOrProg equ 0204C0h
_IsO1NonTempLst equ 0204C4h
_Is_A_LstOrCLst equ 0204C8h
_Chk_HL_999 equ 0204CCh
_equ_or_Newequ equ 0204D0h
_ErrD_OP1NotPos equ 0204D4h
_ErrD_OP1Not_R equ 0204D8h
_ErrD_OP1NotPosInt equ 0204DCh
_ErrD_OP1_LE_0 equ 0204E0h
_ErrD_OP1_0 equ 0204E4h
_FindSym_Get_Size equ 0204E8h
_Sto_StatVar equ 0204ECh
_Rcl_StatVar equ 0204F0h
_CkOP2Real equ 0204F4h
_Get_X_Indirect equ 0204F8h
_MemChk equ 0204FCh
_CmpPrgNamLen1 equ 020500h
_CmpPrgNamLen equ 020504h
_FindProgSym equ 020508h
_ChkFindSym equ 02050Ch
_FindSym equ 020510h
_InsertMem equ 020514h
_InsertMemA equ 020518h
_EnoughMem equ 02051Ch ;---
_CmpMemNeed equ 020520h
_CreatePVar4 equ 020524h
_CreatePVar3 equ 020528h
_CreateVar3 equ 02052Ch
_CreateCplx equ 020530h
_CreateReal equ 020534h
_CreateTRList equ 020538h
_CreateRList equ 02053Ch
_CreateTCList equ 020540h
_CreateCList equ 020544h
_CreateTRMat equ 020548h
_CreateRMat equ 02054Ch
_CreateTStrng equ 020550h
_CreateStrng equ 020554h
_Create0equ equ 020558h
_CreateTequ equ 02055Ch
_Createequ equ 020560h
_CreateGDB equ 020564h
_CreateProg equ 020568h
_ChkDel equ 02056Ch
_ChkDelA equ 020570h
_AdjParser equ 020574h
_AdjMath equ 020578h
_AdjM7 equ 02057Ch
_DelMemA equ 020580h
_Get_Form_Num equ 020584h
_DelVar equ 020588h
_DelVarIO equ 02058Ch
_DelMem equ 020590h
_DelVar3D equ 020594h
_DelVar3C equ 020598h
_DelVar3DC equ 02059Ch
_SymProgNonTLst equ 0205A0h
_AdjSymPtrs equ 0205A4h
_DataSizeA equ 0205A8h
_DataSize equ 0205ACh
_PopMCplxO1 equ 0205B0h
_PopMCplx equ 0205B4h
_MovCplx equ 0205B8h
_PopOP5 equ 0205BCh
_PopOP3 equ 0205C0h
_PopOP1 equ 0205C4h
_PopRealO6 equ 0205C8h
_PopRealO5 equ 0205CCh
_PopRealO4 equ 0205D0h
_PopRealO3 equ 0205D4h
_PopRealO2 equ 0205D8h
_PopRealO1 equ 0205DCh
_PopReal equ 0205E0h
_FPopCplx equ 0205E4h
_FPopReal equ 0205E8h
_FPopFPS equ 0205ECh
_DeallocFPS equ 0205F0h
_DeallocFPS1 equ 0205F4h
_AllocFPS equ 0205F8h
_AllocFPS1 equ 0205FCh
_PushRealO6 equ 020600h
_PushRealO5 equ 020604h
_PushRealO4 equ 020608h
_PushRealO3 equ 02060Ch
_PushRealO2 equ 020610h
_PushRealO1 equ 020614h
_PushReal equ 020618h
_PushOP5 equ 02061Ch
_PushOP3 equ 020620h
_PushMCplxO3 equ 020624h
_PushOP1 equ 020628h
_PushMCplxO1 equ 02062Ch
_PushMCplx equ 020630h
_ExMCplxO1 equ 020634h
_Exch9 equ 020638h
_CpyTo1FPS11 equ 02063Ch
_CpyTo2FPS5 equ 020640h
_CpyTo1FPS5 equ 020644h
_CpyTo2FPS6 equ 020648h
_CpyTo1FPS6 equ 02064Ch
_CpyTo2FPS7 equ 020650h
_CpyTo1FPS7 equ 020654h
_CpyTo1FPS8 equ 020658h
_CpyTo2FPS8 equ 02065Ch
_CpyTo1FPS10 equ 020660h
_CpyTo1FPS9 equ 020664h
_CpyTo2FPS4 equ 020668h
_CpyTo6FPS3 equ 02066Ch
_CpyTo6FPS2 equ 020670h
_CpyTo2FPS3 equ 020674h
_CpyCTo1FPS3 equ 020678h
_CpyTo1FPS3 equ 02067Ch
_CpyFPS3 equ 020680h
_CpyTo1FPS4 equ 020684h
_CpyTo3FPS2 equ 020688h
_CpyTo5FPST equ 02068Ch
_CpyTo6FPST equ 020690h
_CpyTo4FPST equ 020694h
_CpyTo3FPST equ 020698h
_CpyTo2FPST equ 02069Ch
_CpyTo1FPST equ 0206A0h
_CpyFPST equ 0206A4h
_CpyStack equ 0206A8h
_CpyTo3FPS1 equ 0206ACh
_CpyTo2FPS1 equ 0206B0h
_CpyTo1FPS1 equ 0206B4h
_CpyFPS1 equ 0206B8h
_CpyTo2FPS2 equ 0206BCh
_CpyTo1FPS2 equ 0206C0h
_CpyFPS2 equ 0206C4h
_CpyO3ToFPST equ 0206C8h
_CpyO2ToFPST equ 0206CCh
_CpyO6ToFPST equ 0206D0h
_CpyO1ToFPST equ 0206D4h
_CpyToFPST equ 0206D8h
_CpyToStack equ 0206DCh
_CpyO3ToFPS1 equ 0206E0h
_CpyO5ToFPS1 equ 0206E4h
_CpyO2ToFPS1 equ 0206E8h
_CpyO1ToFPS1 equ 0206ECh
_CpyToFPS1 equ 0206F0h
_CpyO2ToFPS2 equ 0206F4h
_CpyO3ToFPS2 equ 0206F8h
_CpyO6ToFPS2 equ 0206FCh
_CpyO1ToFPS2 equ 020700h
_CpyToFPS2 equ 020704h
_CpyO5ToFPS3 equ 020708h
_CpyO2ToFPS3 equ 02070Ch
_CpyO1ToFPS3 equ 020710h
_CpyToFPS3 equ 020714h
_CpyO1ToFPS6 equ 020718h
_CpyO1ToFPS7 equ 02071Ch
_CpyO1ToFPS5 equ 020720h
_CpyO2ToFPS4 equ 020724h
_CpyO1ToFPS4 equ 020728h
_ErrNotEnoughMem equ 02072Ch
_FPSMinus9 equ 020730h
_HLMinus9 equ 020734h
_ErrOverflow equ 020738h
_ErrDivBy0 equ 02073Ch
_ErrSingularMat equ 020740h
_ErrDomain equ 020744h
_ErrIncrement equ 020748h
_ErrNon_Real equ 02074Ch
_ErrSyntax equ 020750h
_ErrDataType equ 020754h
_ErrArgument equ 020758h
_ErrDimMismatch equ 02075Ch
_ErrDimension equ 020760h
_ErrUndefined equ 020764h
_ErrMemory equ 020768h
_ErrInvalid equ 02076Ch
_ErrBreak equ 020770h
_ErrStat equ 020774h
_ErrSignChange equ 020778h
_ErrIterations equ 02077Ch
_ErrBadGuess equ 020780h
_ErrTolTooSmall equ 020784h
_ErrStatPlot equ 020788h
_ErrLinkXmit equ 02078Ch
_JError equ 020790h
_noErrorEntry equ 020794h
_pushErrorHandler equ 020798h
_popErrorHandler equ 02079Ch
_StrCopy equ 0207A0h
_StrCatCall equ 0207A4h
_IsInSet equ 0207A8h
_GetNameA equ 0207ACh
_RecName equ 0207B0h
_PutMap equ 0207B4h
_PutC equ 0207B8h
_DispHL equ 0207BCh
;------------------------------
_NewLine equ 0207F0h
_MoveDown equ 0207F4h
_ScrollUp equ 0207F8h
_ShrinkWindow equ 0207FCh
_MoveUp equ 020800h
_ScrollDown equ 020804h
_ClrLCDFull equ 020808h
_ClrLCD equ 02080Ch
_ClrScrnFull equ 020810h
_ClrScrn equ 020814h
_ClrTxtShd equ 020818h
_ClrWindow equ 02081Ch
_EraseEOL equ 020820h
_EraseEOW equ 020824h
_HomeUp equ 020828h
_GetCurLoc equ 02082Ch
_VPutMap equ 020830h
_VPutS equ 020834h
_VPutSN equ 020838h
_VPutSNG equ 02083Ch
_VPutSNT equ 020840h
_RunIndicOn equ 020844h
_RunIndicOff equ 020848h
;------------------------------
_ToFrac equ 02096ch
_SeqSet equ 020970h
_SeqSolve equ 020974h
_Cmp_Num_Init equ 020978h
_BinOPExec equ 02097ch
_ExMean1 equ 020980h
_Set2MVLPtrs equ 020984h
_SetMat1 equ 020988h
_CreateTList equ 02098ch
_UnOPExec equ 020990h
_ThreeExec equ 020994h
_RestoreErrNo equ 020998h
_FourExec equ 02099ch
_FiveExec equ 0209a0h
_CpyTo2ES1 equ 0209a4h
_CpyTo6ES1 equ 0209a8h
_CpyTo1ES1 equ 0209ach
_CpyTo3ES1 equ 0209b0h
_CpyTo3ES2 equ 0209b4h
_CpyTo2ES2 equ 0209b8h
_CpyTo1ES2 equ 0209bch
_CpyTo2ES3 equ 0209c0h
_CpyTo1ES3 equ 0209c4h
_CpyTo3ES4 equ 0209c8h
_CpyTo6ES3 equ 0209cch
_CpyTo2ES4 equ 0209d0h
_CpyTo1ES4 equ 0209d4h
_CpyTo2ES5 equ 0209d8h
_CpyTo1ES5 equ 0209dch
_CpyTo4EST equ 0209e0h
_CpyTo2EST equ 0209e4h
_CpyTo1EST equ 0209e8h
_CpyTo2ES6 equ 0209ech
_CpyTo1ES6 equ 0209f0h
_CpyTo2ES7 equ 0209f4h
_CpyTo1ES7 equ 0209f8h
_CpyTo2ES8 equ 0209fch
_CpyTo1ES8 equ 020a00h
_CpyTo1ES9 equ 020a04h
_CpyTo2ES9 equ 020a08h
_CpyTo2ES10 equ 020a0ch
_CpyTo1ES10 equ 020a10h
_CpyTo2ES11 equ 020a14h
_CpyTo1ES11 equ 020a18h
_CpyTo2ES12 equ 020a1ch
_CpyTo1ES12 equ 020a20h
_CpyTo2ES13 equ 020a24h
_CpyTo1ES13 equ 020a28h
_CpyTo1ES14 equ 020a2ch
_CpyTo1ES16 equ 020a30h
_CpyTo1ES17 equ 020a34h
_CpyTo1ES18 equ 020a38h
_CpyTo1ES15 equ 020a3ch
_CpyTo2ES15 equ 020a40h
_CpyO1ToEST equ 020a44h
_CpyO1ToES1 equ 020a48h
_CpyO6ToES1 equ 020a4ch
_CpyO6ToES3 equ 020a50h
_CpyO1ToES2 equ 020a54h
_CpyO2ToES2 equ 020a58h
_CpyO1ToES3 equ 020a5ch
_CpyO1ToES4 equ 020a60h
_CpyO1ToES5 equ 020a64h
_CpyO1ToES6 equ 020a68h
_CpyO1ToES7 equ 020a6ch
_CpyO2ToES4 equ 020a70h
_CpyO2ToES5 equ 020a74h
_CpyO2ToES6 equ 020a78h
_CpyO2ToES7 equ 020a7ch
_CpyO2ToES8 equ 020a80h
_CpyO2ToES9 equ 020a84h
_CpyO1ToES8 equ 020a88h
_CpyO1ToES9 equ 020a8ch
_CpyO1ToES10 equ 020a90h
_CpyO1ToES11 equ 020a94h
_CpyO1ToES12 equ 020a98h
_CpyO1ToES13 equ 020a9ch
_CpyO1ToES14 equ 020aa0h
_EvalF3A equ 020aa4h
_GetK equ 020aa8h
_SetTitle equ 020aach
_DispVarVal equ 020ab0h
_RecallEd equ 020ab4h
_SetupBuffer equ 020ab8h
_CreateNumEditBuf equ 020abch
_CallCommon equ 020ac0h
_CommonKeys equ 020ac4h
_Leftmore equ 020ac8h
_fDel equ 020acch
_fClear equ 020ad0h
_fInsDisp equ 020ad4h
_fInsDisp02 equ 020ad8h
_SetIndicator equ 020adch
_CloseEditBufNoR equ 020ae0h
_ReleaseBuffer equ 020ae4h
_VarNameToOP1HL equ 020ae8h
_NameToOP1 equ 020aech
_numPPutAway equ 020af0h
_numRedisp equ 020af4h
_numError02 equ 020af8h
_Load_SFont equ 020afch
_SFont_Len equ 020b00h
_InitNumVec equ 020b04h
_SetXXOP1 equ 020b08h
_SetXXOP2 equ 020b0ch
_SetXXXXOP2 equ 020b10h
;------------------------------
_StoOther equ 020f4ch
_RclAns equ 020f50h
_RclY equ 020f54h
_RclN equ 020f58h
_RclX equ 020f5ch
_RclVarSym equ 020f60h
_RclSysTok equ 020f64h
_StMatEl equ 020f68h
_StLstVecEl equ 020f6ch
_ConvOP1 equ 020f70h
;------------------------------
;002114Ch ;I think this forces the interrupt to scan the keypad (subroutine of _getKey)
_createAppVar equ 021330h
_createProtProg equ 021334h
_lockFlash equ 0213ACh
_DelVarArc equ 021434h
_Arc_Unarc equ 021448h
_DispHL24 equ 021EE0h
_nmiHandler equ 0220A8h
;-------------------------------------------------------------------------------
; RAM Locations / Address Space
;-------------------------------------------------------------------------------
flags equ 0D00080h
curRow equ 0D00595h
curCol equ 0D00596h
OP1 equ 0D005F8h
OP2 equ 0D00603h
OP3 equ 0D0060Eh
OP4 equ 0D00619h
OP5 equ 0D00624h
OP6 equ 0D0062Fh
penCol equ 0D008D2h
penRow equ 0D008D5h
userMem equ 0D1A881h
vRam equ 0D40000h
;-------------------------------------------------------------------------------
; Scan Codes
;-------------------------------------------------------------------------------
skDown equ 01h
skLeft equ 02h
skRight equ 03h
skUp equ 04h
skEnter equ 09h
skAdd equ 0Ah
skSub equ 0Bh
skMul equ 0Ch
skDiv equ 0Dh
skPower equ 0Eh
skClear equ 0Fh
skChs equ 11h
sk3 equ 12h
sk6 equ 13h
sk9 equ 14h
skRParen equ 15h
skTan equ 16h
skVars equ 17h
skDecPnt equ 19h
sk2 equ 1Ah
sk5 equ 1Bh
sk8 equ 1Ch
skLParen equ 1Dh
skCos equ 1Eh
skPrgm equ 1Fh
skStat equ 20h
sk0 equ 21h
sk1 equ 22h
sk4 equ 23h
sk7 equ 24h
skComma equ 25h
skSin equ 26h
skMatrix equ 27h
skGraphvar equ 28h
skStore equ 2Ah
skLn equ 2Bh
skLog equ 2Ch
skSquare equ 2Dh
skRecip equ 2Eh
skMath equ 2Fh
skAlpha equ 30h
skGraph equ 31h
skTrace equ 32h
skZoom equ 33h
skWindow equ 34h
skYequ equ 35h
sk2nd equ 36h
skMode equ 37h
skDel equ 38h
skDownLeft equ 252
skDownRight equ 250
skUpLeft equ 245
skUpRight equ 243
;-------------------------------------------------------------------------------
; Tokens
;-------------------------------------------------------------------------------
EOSSTART equ 0
DCONV equ 01h ; Display conversions come immediately before 'TSTORE'
tToDMS equ DCONV ; 01h
tToDEC equ DCONV+1 ; 02h
tToAbc equ DCONV+2 ; 03h> A b/c
tStore equ DCONV+3 ; 04h Lstore 01
tBoxPlot equ 05h
BRACKS equ 06h
tLBrack equ BRACKS ; 06h '['
tRBrack equ BRACKS+1 ; 07h ']'
tLBrace equ BRACKS+2 ; 08h '{'
tRBrace equ BRACKS+3 ; 09h '}'
tPOST1 equ BRACKS+4
tFromRad equ tPOST1 ; 0Ah Lradian
tFromDeg equ tPOST1+1 ; 0Bh Ldegree
tRecip equ tPOST1+2 ; 0Ch Linverse
tSqr equ tPOST1+3 ; 0Dh Lsquare
tTrnspos equ tPOST1+4 ; 0Eh Ltranspose
tCube equ tPOST1+5 ; 0Fh '^3'
tLParen equ 10h ; 10h '('
tRParen equ 11h ; 11h ')'
IMUN equ 12h
tRound equ IMUN ; 12h 'round'
tPxTst equ IMUN+1 ; 13h 'PXL-TEST'
tAug equ IMUN+2 ; 14h 'aug'
tRowSwap equ IMUN+3 ; 15h 'rSwap'
tRowPlus equ IMUN+4 ; 16h 'rAdd'
tmRow equ IMUN+5 ; 17h 'multR'
tmRowPlus equ IMUN+6 ; 18h 'mRAdd'
tMax equ IMUN+7 ; 19h 'max'
tMin equ IMUN+8 ; 1Ah 'min'
tRToPr equ IMUN+9 ; 1Bh 'R>Pr
tRToPo equ IMUN+10 ; 1Ch 'R>Po
tPToRx equ IMUN+11 ; 1Dh 'P>Rx
tPToRy equ IMUN+12 ; 1Eh 'P>Ry
tMedian equ IMUN+13 ; 1Fh 'MEDIAN
tRandM equ IMUN+14 ; 20h 'randM'
tMean equ IMUN+15 ; 21h
tRoot equ IMUN+16 ; 22h 'ROOT'
tSeries equ IMUN+17 ; 23h 'seq'
tFnInt equ IMUN+18 ; 24h 'fnInt'
tNDeriv equ IMUN+19 ; 25h 'fnIr'
tEvalF equ IMUN+20 ; 26h
tFmin equ IMUN+21 ; 27h
tFmax equ IMUN+22 ; 28h
tEOSEL equ IMUN+23
tSpace equ tEOSEL ; 29h ' '
tString equ tEOSEL+1 ; 2Ah'"'
tComma equ tEOSEL+2 ; 2Bh','
tii equ 2Ch ; i
;-------------------------------------------------------------------------------
; Postfix Functions
;-------------------------------------------------------------------------------
tPost equ 2Dh
tFact equ tPost ; 2Dh '!'
tCubicR equ 2Eh
tQuartR equ 2Fh
;-------------------------------------------------------------------------------
; Number Tokens
;-------------------------------------------------------------------------------
NUMS equ 30h
t0 equ NUMS ; 30h
t1 equ NUMS+1; 31h
t2 equ NUMS+2; 32h
t3 equ NUMS+3; 33h
t4 equ NUMS+4; 34h
t5 equ NUMS+5; 35h
t6 equ NUMS+6; 36h
t7 equ NUMS+7; 37h
t8 equ NUMS+8; 38h
t9 equ NUMS+9; 39h
tDecPt equ NUMS+10 ; 3Ah
tee equ NUMS+11 ; 3Bh
;-------------------------------------------------------------------------------
; BINARY OP
;-------------------------------------------------------------------------------
tOr equ 3Ch ; 3Ch'_or_'
tXor equ 3Dh ; 3Dh
tColon equ 3Eh ; 3Eh ':'
tEnter equ 3Fh ; 3FhLenter
tAnd equ 40h ; 40h'_and_'
;-------------------------------------------------------------------------------
; LETTER TOKENS
;-------------------------------------------------------------------------------
LET equ 41h
tA equ LET ; 41h
tB equ LET+1 ; 42h
tC equ LET+2 ; 43h
tD equ LET+3 ; 44h
tE equ LET+4 ; 45h
tF equ LET+5 ; 46h
tG equ LET+6 ; 47h
tH equ LET+7 ; 48h
tI equ LET+8 ; 49h
tJ equ LET+9 ; 4Ah
tK equ LET+10 ; 4Bh
tL equ LET+11 ; 4Ch
tM equ LET+12 ; 4Dh
tN equ LET+13 ; 4Eh
tO equ LET+14 ; 4Fh
tP equ LET+15 ; 50h
tQ equ LET+16 ; 51h
tR equ LET+17 ; 52h
tS equ LET+18 ; 53h
tT equ LET+19 ; 54h
tU equ LET+20 ; 55h
tV equ LET+21 ; 56h
tW equ LET+22 ; 57h
tX equ LET+23 ; 58h
tY equ LET+24 ; 59h
tZ equ LET+25 ; 5Ah
tTheta equ LET+26 ; 5Bh
;-------------------------------------------------------------------------------
; These VAR tokens are 1st of a double token
;-------------------------------------------------------------------------------
vToks equ LET+27;
tVarMat equ vToks ; 5Ch - MATRIX token, 2nd token needed for name
tVarLst equ vToks+1 ; 5Dh - LIST token, 2nd token needed for name
tVarequ equ vToks+2 ; 5Eh - EQUATION token, 2nd token needed for name
tProg equ vToks+3 ; 5Fh
tVarPict equ vToks+4 ; 60h - PICT token, 2nd token needed for name
tVarGDB equ vToks+5 ; 61h - GDB token, 2nd token needed for name
tVarOut equ vToks+6 ; 62h
tVarSys equ vToks+7 ; 63h
;-------------------------------------------------------------------------------
; Mode Setting Commands
;-------------------------------------------------------------------------------
MODESA equ vToks+8 ; 64h
tRad equ MODESA ; 64h 'Radian'
tDeg equ MODESA+1 ; 65h 'Degree'
tNormF equ MODESA+2 ; 66h 'Normal'
tSci equ MODESA+3 ; 67h 'Sci'
tEng equ MODESA+4 ; 68h 'Eng'
tFloat equ MODESA+5 ; 69h 'Float'
CMPS equ 6Ah
tEQ equ CMPS ; 6Ah '=='
tLT equ CMPS+1 ; 6Bh '<'
tGT equ CMPS+2 ; 6Ch '>'
tLE equ CMPS+3 ; 6Dh LLE
tGE equ CMPS+4 ; 6Eh LGE
tNE equ CMPS+5 ; 6Fh LNE
;-------------------------------------------------------------------------------
; BINARY OP
;-------------------------------------------------------------------------------
tAdd equ 70h ; 70h '+'
tSub equ 71h ; 71h '-'
tAns equ 72h ; 72h
;-------------------------------------------------------------------------------
; Mode Setting Commands
;-------------------------------------------------------------------------------
MODES equ 73h
tFix equ MODES ; 73h 'Fix_'
tSplitOn equ MODES+1 ; 74h
tFullScreen equ MODES+2 ; 75h
tStndrd equ MODES+3 ; 76h 'Func'
tParam equ MODES+4 ; 77h 'Param'
tPolar equ MODES+5 ; 78h 'Pol'
tSeqG equ MODES+6 ; 79h
tAFillOn equ MODES+7 ; 7Ah 'AUTO FILL ON
tAFillOff equ MODES+8 ; 7Bh
tACalcOn equ MODES+9 ; 7Ch
tACalcOff equ MODES+10; 7Dh 'AutoFill OFF
;-------------------------------------------------------------------------------
; Graph Format -- Tokens are 2 bytes
;-------------------------------------------------------------------------------
tGFormat equ MODES+11; 7Eh
tBoxIcon equ 7Fh
tCrossIcon equ 80h
tDotIcon equ 81h
;-------------------------------------------------------------------------------
; Binary OP (Continuted)
;-------------------------------------------------------------------------------
tMul equ 82h ; 82h'*'
tDiv equ 83h ; 83h'/'
;-------------------------------------------------------------------------------
; Graph Commands
;-------------------------------------------------------------------------------
GRCMDS equ 84h
tTrace equ GRCMDS+0 ; 84h 'Trace'
tClDrw equ GRCMDS+1 ; 85h 'ClDrw'
tZoomStd equ GRCMDS+2 ; 86h 'ZStd'
tZoomtrg equ GRCMDS+3 ; 87h 'Ztrg'
tZoomBox equ GRCMDS+4 ; 88h 'ZBOX'
tZoomIn equ GRCMDS+5 ; 89h 'ZIn'
tZoomOut equ GRCMDS+6 ; 8Ah 'ZOut'
tZoomSqr equ GRCMDS+7 ; 8Bh 'ZSqr'
tZoomInt equ GRCMDS+8 ; 8Ch 'ZInt'
tZoomPrev equ GRCMDS+9 ; 8Dh 'ZPrev'
tZoomDec equ GRCMDS+10 ; 8Eh 'ZDecm'
tZoomStat equ GRCMDS+11 ; 8Fh 'ZStat
tUsrZm equ GRCMDS+12 ; 90h 'ZRcl'
tPrtScrn equ GRCMDS+13 ; 91h 'PrtScrn'
tZoomSto equ GRCMDS+14 ; 92hZOOM STORE
tText equ GRCMDS+15 ; 93h
;-------------------------------------------------------------------------------
; Binary OP (Combination & Permutation)
;-------------------------------------------------------------------------------
tnPr equ GRCMDS+16 ; 94h '_nPr_'
tnCr equ GRCMDS+17 ; 95h '_nCr_'
;-------------------------------------------------------------------------------
; Graph Commands (Continuted)
;-------------------------------------------------------------------------------
tYOn equ GRCMDS+18 ; 96h 'FnOn_'
tYOff equ GRCMDS+19 ; 97h 'FnOff_'
tStPic equ GRCMDS+20 ; 98h 'StPic_'
tRcPic equ GRCMDS+21 ; 99h 'RcPic_'
tStoDB equ GRCMDS+22 ; 9Ah 'StGDB_'
tRclDB equ GRCMDS+23 ; 9Bh 'RcGDB_'
tLine equ GRCMDS+24 ; 9Ch 'Line'
tVert equ GRCMDS+25 ; 9Dh 'Vert_'
tPtOn equ GRCMDS+26 ; 9Eh 'PtOn'
tPtOff equ GRCMDS+27 ; 9Fh 'PtOff'
;-------------------------------------------------------------------------------
; Token A0 cannot be an eos function
; Since lOW MULT=A0 already
;-------------------------------------------------------------------------------
tPtChg equ GRCMDS+28 ; A0h 'PtChg'
tPXOn equ GRCMDS+29 ; A1h
tPXOff equ GRCMDS+30 ; A2h
tPXChg equ GRCMDS+31 ; A3h
tShade equ GRCMDS+32 ; A4h 'Shade'
tCircl equ GRCMDS+33 ; A5h 'Circl'
tHorz equ GRCMDS+34 ; A6h 'HORIZONTAL'
tTanLn equ GRCMDS+35 ; A7h 'TanLn'
tDrInv equ GRCMDS+36 ; A8h 'DrInv_'
tDrawF equ GRCMDS+37 ; A9h 'DrawF_'
tVarStrng equ 0AAh
;-------------------------------------------------------------------------------
; Functions with No Arguments
;-------------------------------------------------------------------------------
NOARG equ 0ABh
tRand equ NOARG ; ABh 'rand'
tPi equ NOARG+1 ; AChLpi
tGetKey equ NOARG+2 ; ADh 'getKy'
tAPost equ tGetKey+1 ; APOSTROPHY
tQuest equ tAPost+1 ; QUESTION MARK
UNARY equ tQuest+1 ; B0h
tChs equ UNARY ; B0h
tInt equ UNARY+1 ; B1h
tAbs equ UNARY+2 ; B2h
tDet equ UNARY+3 ; B3h
tIdent equ UNARY+4 ; B4h
tDim equ UNARY+5 ; B5h
tSum equ UNARY+6 ; B6h
tProd equ UNARY+7 ; B7h
tNot equ UNARY+8 ; B8h
tIPart equ UNARY+9 ; B9h
tFPart equ UNARY+10 ; BAh
;-------------------------------------------------------------------------------
; 2 BYTE TOKENS (Continued)
;-------------------------------------------------------------------------------
t2ByteTok equ 0BBh ;
UNARYLR equ UNARY+12
tSqrt equ UNARYLR ; BCh
tCubRt equ UNARYLR+1 ; BDh
tLn equ UNARYLR+2 ; BEh
tExp equ UNARYLR+3 ; BFh
tLog equ UNARYLR+4 ; C0h
tALog equ UNARYLR+5 ; C1h
tSin equ UNARYLR+6 ; C2h
tASin equ UNARYLR+7 ; C3h
tCos equ UNARYLR+8 ; C4h
tACos equ UNARYLR+9 ; C5h
tTan equ UNARYLR+10; C6h
tATan equ UNARYLR+11; C7h
tSinH equ UNARYLR+12; C8h
tASinH equ UNARYLR+13; C9h
tCosH equ UNARYLR+14; CAh
tACosH equ UNARYLR+15; CBh
tTanH equ UNARYLR+16; CCh
tATanH equ UNARYLR+17; CDh
;-------------------------------------------------------------------------------
; Some Programming Commands
;-------------------------------------------------------------------------
PROGTOK equ UNARYLR+18
tIf equ PROGTOK ; CEh
tThen equ PROGTOK+1 ; CFh
tElse equ PROGTOK+2 ; D0h
tWhile equ PROGTOK+3 ; D1h
tRepeat equ PROGTOK+4 ; D2h
tFor equ PROGTOK+5 ; D3h
tEnd equ PROGTOK+6 ; D4h
tReturn equ PROGTOK+7 ; D5h
tLbl equ PROGTOK+8 ; D6h 'Lbl_'
tGoto equ PROGTOK+9 ; D7h 'Goto_'
tPause equ PROGTOK+10 ; D8h 'Pause_'
tStop equ PROGTOK+11 ; D9h 'Stop'
tISG equ PROGTOK+12 ; DAh 'IS>'
tDSL equ PROGTOK+13 ; DBh 'DS<'
tInput equ PROGTOK+14 ; DCh 'Input_'
tPrompt equ PROGTOK+15 ; DDh 'Prompt_'
tDisp equ PROGTOK+16 ; DEh 'Disp_'
tDispG equ PROGTOK+17 ; DFh 'DispG'
tOutput equ PROGTOK+18 ; E0h'Outpt'
tClLCD equ PROGTOK+19 ; E1h'ClLCD'
tConst equ PROGTOK+20 ; E2h'Fill'
tSortA equ PROGTOK+21 ; E3h'sortA_'
tSortD equ PROGTOK+22 ; E4h'sortD_'
tDispTab equ PROGTOK+23 ; E5h'Disp Table
tMenu equ PROGTOK+24 ; E6h'Menu'
tSendMBL equ PROGTOK+25 ; E7h'SEND'
tGetMBL equ PROGTOK+26 ; E8h'GET'
;-------------------------------------------------------------------------------
; Stat Plot Commands
;-------------------------------------------------------------------------------
statPCmd equ PROGTOK+27
tPlotOn equ statPCmd; E9h ' PLOTSON'
tPlotOff equ statPCmd+1 ; EAh ' PLOTSOFF
tListName equ 0EBh ; LIST DESIGNATOR
tPlot1 equ 0ECh
tPlot2 equ 0EDh
tPlot3 equ 0EEh
tUnused01 equ 0EFh ; available?
tPower equ 0F0h ; '^'
tXRoot equ 0F1h ; LsupX,Lroot
STATCMD equ 0F2h
tOneVar equ STATCMD ; F2h'OneVar_'
tTwoVar equ STATCMD+1 ; F3h
tLR equ STATCMD+2 ; F4h'LinR(A+BX
tLRExp equ STATCMD+3 ; F5h'ExpR_'
tLRLn equ STATCMD+4 ; F6h'LnR_'
tLRPwr equ STATCMD+5 ; F7h'PwrR_'
tMedMed equ STATCMD+6 ; F8h
tQuad equ STATCMD+7 ; F9h
tClrLst equ STATCMD+8 ; FAh'CLEAR LIST
tClrTbl equ STATCMD+9 ; FBhCLEAR TABLE
tHist equ STATCMD+10; FCh'Hist_'
txyLine equ STATCMD+11; FDh'xyline_'
tScatter equ STATCMD+12; FEh'Scatter_'
tLR1 equ STATCMD+13; FFh'LINR(AX+B
;-------------------------------------------------------------------------------
; 2nd half of GRAPH FORMAT Tokens
;-------------------------------------------------------------------------------
GFMT equ 0 ;Format settings commands
tSeq equ GFMT ; 'SeqG'
tSimulG equ GFMT+1; 'SimulG'
tPolarG equ GFMT+2; 'PolarGC'
tRectG equ GFMT+3; 'RectGC'
tCoordOn equ GFMT+4; 'CoordOn'
tCoordOff equ GFMT+5; 'CoordOff'
tDrawLine equ GFMT+6; 'DrawLine'
tDrawDot equ GFMT+7; 'DrawDot'
tAxisOn equ GFMT+8; 'AxesOn'
tAxisOff equ GFMT+9; 'AxesOff'
tGridOn equ GFMT+10 ; 'GridOn'
tGridOff equ GFMT+11 ; 'GridOff'
tLblOn equ GFMT+12 ; 'LabelOn'
tLblOff equ GFMT+13 ; 'LabelOff'
tWebOn equ GFMT+14 ; 'WebOn'
tWebOff equ GFMT+15 ; 'WebOFF'
tuv equ GFMT+16 ; U vs V
tvw equ GFMT+17 ; V vs W
tuw equ GFMT+18 ; U vs W
;-------------------------------------------------------------------------------
; 2nd half of User MATRIX Tokens
;-------------------------------------------------------------------------------
tMatA equ 00h ; MAT A
tMatB equ 01h ; MAT B
tMatC equ 02h ; MAT C
tMatD equ 03h ; MAT D
tMatE equ 04h ; MAT E
tMatF equ 05h ; MAT F
tMatG equ 06h ; MAT G
tMatH equ 07h ; MAT H
tMatI equ 08h ; MAT I
tMatJ equ 09h ; MAT J
;-------------------------------------------------------------------------------
; 2nd half of User LIST Tokens
;-------------------------------------------------------------------------------
tL1 equ 00h ; LIST 1
tL2 equ 01h ; LIST 2
tL3 equ 02h ; LIST 3
tL4 equ 03h ; LIST 4
tL5 equ 04h ; LIST 5
tL6 equ 05h ; LIST 6
;-------------------------------------------------------------------------------
; 2nd half of User equATION Tokens
; "Y" equATIONS HAVE BIT 4 SET
;-------------------------------------------------------------------------------
tY1 equ 10h ; Y1
tY2 equ 11h ; Y2
tY3 equ 12h ; Y3
tY4 equ 13h ; Y4
tY5 equ 14h ; Y5
tY6 equ 15h ; Y6
tY7 equ 16h ; Y7
tY8 equ 17h ; Y8
tY9 equ 18h ; Y9
tY0 equ 19h ; Y0
; PARAM equATIONS have bit 5 set
tX1T equ 20h ; X1t
tY1T equ 21h ; Y1t
tX2T equ 22h ; X2t
tY2T equ 23h ; Y2t
tX3T equ 24h ; X3t
tY3T equ 25h ; Y3t
tX4T equ 26h ; X4t
tY4T equ 27h ; Y4t
tX5T equ 28h ; X5t
tY5T equ 29h ; Y5t
tX6T equ 2Ah ; X6t
tY6T equ 2Bh ; Y6t
; POLAR equATIONS have bit 6 set
tR1 equ 40h ; R1
tR2 equ 41h ; R2
tR3 equ 42h ; R3
tR4 equ 43h ; R4
tR5 equ 44h ; R5
tR6 equ 45h ; R6
; RECURSION equATIONS have bit 7 set
tun equ 80h ; Un
tvn equ 81h ; Vn
twn equ 82h ; Wn
;-------------------------------------------------------------------------------
; 2nd half of User PICTURE Tokens
;-------------------------------------------------------------------------------
tPic1 equ 00h ; PIC1
tPic2 equ 01h ; PIC2
tPic3 equ 02h ; PIC3
tPic4 equ 03h ; PIC4
tPic5 equ 04h ; PIC5
tPic6 equ 05h ; PIC6
tPic7 equ 06h ; PIC7
tPic8 equ 07h ; PIC8
tPic9 equ 08h ; PIC9
tPic0 equ 09h ; PIC0
;-------------------------------------------------------------------------------
; 2nd half of User GRAPH DATABASE Tokens
;-------------------------------------------------------------------------------
tGDB1 equ 00h ; GDB1
tGDB2 equ 01h ; GDB2
tGDB3 equ 02h ; GDB3
tGDB4 equ 03h ; GDB4
tGDB5 equ 04h ; GDB5
tGDB6 equ 05h ; GDB6
tGDB7 equ 06h ; GDB7
tGDB8 equ 07h ; GDB8
tGDB9 equ 08h ; GDB9
tGDB0 equ 09h ; GDB0
;-------------------------------------------------------------------------------
; 2nd half of User STRING VARS Tokens
;-------------------------------------------------------------------------------
tStr1 equ 00h
tStr2 equ 01h
tStr3 equ 02h
tStr4 equ 03h
tStr5 equ 04h
tStr6 equ 05h
tStr7 equ 06h
tStr8 equ 07h
tStr9 equ 08h
tStr0 equ 09h
;-------------------------------------------------------------------------------
; 2nd half of SYSTEM OUTPUT ONLY VARIABLES
;-------------------------------------------------------------------------------
;OPEN equ 00h
tRegEq equ 01h ; REGRESSION equATION
tStatN equ 02h ; STATISTICS N
tXMean equ 03h ; X MEAN
tSumX equ 04h ; SUM(X)
tSumXSqr equ 05h ; SUM(X^2)
tStdX equ 06h ; STANDARD DEV X
tStdPX equ 07h ; STANDARD DEV POP X
tMinX equ 08h ; Min X VALUE
tMaxX equ 09h ; Max X VALUE
tMinY equ 0Ah ; Min Y VALUE
tMaxY equ 0Bh ; Max Y VALUE
tYmean equ 0Ch ; Y MEAN
tSumY equ 0Dh ; SUM(Y)
tSumYSqr equ 0Eh ; SUM(Y^2)
tStdY equ 0Fh ; STANDARD DEV Y
tStdPY equ 10h ; STANDARD DEV POP Y
tSumXY equ 11h ; SUM(XY)
tCorr equ 12h ; CORRELATION
tMedX equ 13h ; MED(X)
tQ1 equ 14h ; 1ST QUADRANT OF X
tQ3 equ 15h ; 3RD QUADRANT OF X
tQuadA equ 16h ; 1ST TERM OF QUAD POLY REG/ Y-INT
tQuadB equ 17h ; 2ND TERM OF QUAD POLY REG/ SLOPE
tQuadC equ 18h ; 3RD TERM OF QUAD POLY REG
tCubeD equ 19h ; 4TH TERM OF CUBIC POLY REG
tQuartE equ 1Ah ; 5TH TERM OF QUART POLY REG
tMedX1 equ 1Bh ; x1 FOR MED-MED
tMedX2 equ 1Ch ; x2 FOR MED-MED
tMedX3 equ 1Dh ; x3 FOR MED-MED
tMedY1 equ 1Eh ; y1 FOR MED-MED
tMedY2 equ 1Fh ; y2 FOR MED-MED
tMedY3 equ 20h ; y3 FOR MED-MED
tRecurn equ 21h ; RECURSION N
tStatP equ 22h
tStatZ equ 23h
tStatT equ 24h
tStatChi equ 25h
tStatF equ 26h
tStatDF equ 27h
tStatPhat equ 28h
tStatPhat1 equ 29h
tStatPhat2 equ 2Ah
tStatMeanX1 equ 2Bh
tStatStdX1 equ 2Ch
tStatN1 equ 2Dh
tStatMeanX2 equ 2Eh
tStatStdX2 equ 2Fh
tStatN2 equ 30h
tStatStdXP equ 31h
tStatLower equ 32h
tStatUpper equ 33h
tStat_s equ 34h
tLRSqr equ 35h ; r^2
tBRSqr equ 36h ; R^2
;-------------------------------------------------------------------------------
; These next tokens are only used to access the data
; They are display only and the user cannot access them at all
;-------------------------------------------------------------------------------
tF_DF equ 37h ; ANOFAV FACTOR DF
tF_SS equ 38h ; ANOFAV FACTOR SS
tF_MS equ 39h ; ANOFAV FACTOR MS
tE_DF equ 3Ah ; ANOFAV ERROR DF
tE_SS equ 3Bh ; ANOFAV ERROR SS
tE_MS equ 3Ch ; ANOFAV ERROR MS
;-------------------------------------------------------------------------------
; 2nd half of SYSTEM INPUT/OUTPUT VARIABLES
; SYSTEM VARIABLES
;-------------------------------------------------------------------------------
tuXscl equ 0
tuYscl equ 1
tXscl equ 2
tYscl equ 3
tRecuru0 equ 4 ; U 1ST INITIAL COND
tRecurv0 equ 5 ; V 1ST INITIAL COND
tun1 equ 6 ; U(N-1); NOT USED
tvn1 equ 7 ; V(N-1); NOT USED
tuRecuru0 equ 8 ;
tuRecurv0 equ 9 ;
tXmin equ 0Ah
tXmax equ 0Bh
tYmin equ 0Ch
tYmax equ 0Dh
tTmin equ 0Eh
tTmax equ 0Fh
tThetaMin equ 10h
tThetaMax equ 11h
tuXmin equ 12h
tuXmax equ 13h
tuYmin equ 14h
tuYmax equ 15h
tuThetMin equ 16h
tuThetMax equ 17h
tuTmin equ 18h
tuTmax equ 19h
tTblMin equ 1Ah
tPlotStart equ 1Bh
tuPlotStart equ 1Ch
tnMax equ 1Dh
tunMax equ 1Eh
tnMin equ 1Fh
tunMin equ 20h
tTblStep equ 21h
tTStep equ 22h
tThetaStep equ 23h
tuTStep equ 24h
tuThetStep equ 25h
tDeltaX equ 26h
tDeltaY equ 27h
tXFact equ 28h
tYFact equ 29h
tTblInput equ 2Ah
tFinN equ 2Bh
tFinI equ 2Ch
tFinPV equ 2Dh
tFinPMT equ 2Eh
tFinFV equ 2Fh
tFinPY equ 30h
tFinCY equ 31h
tRecurw0 equ 32h ; w0(1)
tuRecurw0 equ 33h
tPlotStep equ 34h
tuPlotStep equ 35h
tXres equ 36h
tuXres equ 37h
tRecuru02 equ 38h ; u0(2)
tuRecuru02 equ 39h
tRecurv02 equ 3Ch ; v0(2)
tuRecurv02 equ 3Dh
tRecurw02 equ 3Eh ; w0(2)
tuRecurw02 equ 3Fh
;-------------------------------------------------------------------------------
; 2nd byte of t2ByteTok tokens
;-------------------------------------------------------------------------------
tFinNPV equ 00h ;
tFinIRR equ 01h ;
tFinBAL equ 02h ;
tFinPRN equ 03h ;
tFinINT equ 04h ;
tFinToNom equ 05h ;
tFinToEff equ 06h ;
tFinDBD equ 07h ;
tLCM equ 08h ;
tGCD equ 09h ;
tRandInt equ 0Ah ;
tRandBin equ 0Bh ;
tSubStrng equ 0Ch ;
tStdDev equ 0Dh ;
tVariance equ 0Eh ;
tInStrng equ 0Fh ;
tDNormal equ 10h ;
tInvNorm equ 11h ;
tDT equ 12h ;
tChI equ 13h ;
tDF equ 14h ;
tBINPDF equ 15h ;
tBINCDF equ 16h ;
tPOIPDF equ 17h ;
tPOICDF equ 18h ;
tGEOPDF equ 19h ;
tGEOCDF equ 1Ah ;
tNormalPDF equ 1Bh ;
tTPDF equ 1Ch ;
tChiPDF equ 1Dh ;
tFPDF equ 1Eh ;
tRandNorm equ 1Fh ;
tFinFPMT equ 20h ;
tFinFI equ 21h ;
tFinFPV equ 22h ;
tFinFN equ 23h ;
tFinFFV equ 24h ;
tConj equ 25h ;
tReal equ 26h ;
tImag equ 27h ;
tAngle equ 28h ;
tCumSum equ 29h ;
tExpr equ 2Ah ;
tLength equ 2Bh ;
tDeltaLst equ 2Ch ;
tRef equ 2Dh ;
tRRef equ 2Eh ;
tToRect equ 2Fh ;
tToPolar equ 30h ;
tConste equ 31h ;
tSinReg equ 32h ;
tLogistic equ 33h ;
tLinRegTTest equ 34h ;
tShadeNorm equ 35h ;
tShadeT equ 36h ;
tShadeChi equ 37h ;
tShadeF equ 38h ;
tMatToLst equ 39h ;
tLstToMat equ 3Ah ;
tZTest equ 3Bh ;
tTTest equ 3Ch ;
t2SampZTest equ 3Dh ;
t1PropZTest equ 3Eh ;
t2PropZTest equ 3Fh ;
tChiTest equ 40h ;
tZIntVal equ 41h ;
t2SampZInt equ 42h ;
t1PropZInt equ 43h ;
t2PropZInt equ 44h ;
tGraphStyle equ 45h ;
t2SampTTest equ 46h ;
t2SampFTest equ 47h ;
tTIntVal equ 48h ;
t2SampTInt equ 49h ;
tSetupLst equ 4Ah ;
tFinPMTend equ 4Bh ;
tFinPMTbeg equ 4Ch ;
tRealM equ 4Dh ;
tPolarM equ 4Eh ;
tRectM equ 4Fh ;
tExprOn equ 50h ;
tExprOff equ 51h ;
tClrAllLst equ 52h ;
tGetCalc equ 53h ;
tDelVar equ 54h ;
tequToStrng equ 55h ;
tStrngToequ equ 56h ;
tDelLast equ 57h ;
tSelect equ 58h ;
tANOVA equ 59h ;
tModBox equ 5Ah ;
tNormProb equ 5Bh ;
tMGT equ 64h ; VERTICAL SPLIT
tZFit equ 65h ; ZOOM FIT
tDiag_on equ 66h ; DIANOSTIC DISPLAY ON
tDiag_off equ 67h ; DIANOSTIC DISPLAY OFF
tOkEnd2v0 equ 67h ;end of 2byte tokens for version 0.
tArchive equ 68h ;archive
tUnarchive equ 69h ;unarchive
tasm equ 6Ah
tasmComp equ 6Bh ; assm compile
tasmPrgm equ 6Ch ; signifies a program is assm
tasmCmp equ 6Dh ; assm program is compiled
tLcapAAcute equ 6Eh
tLcapAGrave equ 6Fh
tLcapACaret equ 70h
tLcapADier equ 71h
tLaAcute equ 72h
tLaGrave equ 73h
tLaCaret equ 74h
tLaDier equ 75h
tLcapEAcute equ 76h
tLcapEGrave equ 77h
tLcapECaret equ 78h
tLcapEDier equ 79h
tLeAcute equ 7Ah
tLeGrave equ 7Bh
tLeCaret equ 7Ch
tLeDier equ 7Dh
tLcapIGrave equ 7Fh
tLcapICaret equ 80h
tLcapIDier equ 81h
tLiAcute equ 82h
tLiGrave equ 83h
tLiCaret equ 84h
tLiDier equ 85h
tLcapOAcute equ 86h
tLcapOGrave equ 87h
tLcapOCaret equ 88h
tLcapODier equ 89h
tLoAcute equ 8Ah
tLoGrave equ 8Bh
tLoCaret equ 8Ch
tLoDier equ 8Dh
tLcapUAcute equ 8Eh
tLcapUGrave equ 8Fh
tLcapUCaret equ 90h
tLcapUDier equ 91h
tLuAcute equ 92h
tLuGrave equ 93h
tLuCaret equ 94h
tLuDier equ 95h
tLcapCCed equ 96h
tLcCed equ 97h
tLcapNTilde equ 98h
tLnTilde equ 99h
tLaccent equ 9Ah
tLgrave equ 9Bh
tLdieresis equ 9Ch
tLquesDown equ 9Dh
tLexclamDown equ 9Eh
tLalpha equ 9Fh
tLbeta equ 0a0h
tLgamma equ 0a1h
tLcapDelta equ 0a2h
tLdelta equ 0a3h
tLepsilon equ 0a4h
tLlambda equ 0a5h
tLmu equ 0a6h
tLpi equ 0a7h
tLrho equ 0a8h
tLcapSigma equ 0a9h
tLphi equ 0aBh
tLcapOmega equ 0aCh
tLphat equ 0aDh
tLchi equ 0aEh
tLstatF equ 0aFh
tLa equ 0b0h
tLb equ 0b1h
tLc equ 0b2h
tLd equ 0b3h
tLsmalle equ 0b4h
tLf equ 0b5h
tLsmallg equ 0b6h
tLh equ 0b7h
tLi equ 0b8h
tLj equ 0b9h
tLk equ 0bAh
tLl equ 0bCh
tLm equ 0bDh
;tLnequ 0bEh
tLo equ 0bFh
tLp equ 0c0h
tLq equ 0c1h
tLsmallr equ 0c2h
tLs equ 0c3h
tLsmallt equ 0c4h
tLu equ 0c5h
tLv equ 0c6h
tLw equ 0c7h
tLx equ 0c8h
tLy equ 0c9h
tLz equ 0cAh
tLsigma equ 0cbh
tLtau equ 0cch
tLcapIAcute equ 0cdh
;
tGarbagec equ 0Ceh
LastToken equ 0Ceh ;Last token in this version...
;-----------------------------------------------
; Extended Tokens
;-----------------------------------------------
; These are new on OSes after 1.15
tExtTok equ 0EFh
tSetDate equ 00h
tSetTime equ 01h
tCheckTmr equ 02h
tSetDtFmt equ 03h
tSetTmFmt equ 04h
tTimeCnv equ 05h
tDayOfWk equ 06h
tGetDtStr equ 07h
tGetTmStr equ 08h
tGetDate equ 09h
tGetTime equ 0Ah
tStartTmr equ 0Bh
tGtDtFmt equ 0Ch
tGetTmFmt equ 0Dh
tIsClockOn equ 0Eh
tClockOff equ 0Fh
tClockOn equ 10h
tOpenLib equ 11h
tExecLib equ 12h
tInvT equ 13h
tChiSquaredGofTest equ 14h
tLinRegTInt equ 15h
tManualFit equ 16h
; MathPrint
tZQuadrant equ 17h
tZFracHalf equ 18h
tZFracThird equ 19h
tZFracFourth equ 1Ah
tZFracFifth equ 1Bh
tZFracEighth equ 1Ch
tZFracTenth equ 1Dh
tFracSlash equ 2Eh
tFracMixedNum equ 2Fh
tSwapImProper equ 30h
tSwapFracDec equ 31h
tRemainder equ 32h
tSummationSigma equ 33h
tLogBase equ 34h
tRandIntNoRep equ 35h
tMathPrint equ 37h
tClassic equ 38h
tAutoAnswer equ 3Bh
tDecAnswer equ 3Ch
tFracAnswer equ 3Dh
; TI-84+CSE
tBlue equ 41h
tRed equ 42h
tBlack equ 43h
tMagenta equ 44h
tGreen equ 45h
tOrange equ 46h
tBrown equ 47h
tNavy equ 48h
tLtBlue equ 49h
tYellow equ 4Ah
tWhite equ 4Bh
tLtGray equ 4Ch
tMedGray equ 4Dh
tGray equ 4Eh
tDarkGray equ 4Fh
tGraphColor equ 65h
tTextColor equ 67h
tBackgroundOn equ 5Bh
tBackgroundOff equ 64h
tThin equ 74h
;tThick - 0x7E 0x06 (was "Connected"?)
tAsm84CPrgm equ 68h
tAsm84CCmp equ 69h
tBorderColor equ 6Ch
tAsm84CeCmp equ 07Bh
tAsm84CePrgm equ 07Ah
;-----------------------------------------------
; Data Types
;-----------------------------------------------
RealObj equ 0
ListObj equ 1
MatObj equ 2
equObj equ 3
StrngObj equ 4
ProgObj equ 5
ProtProgObj equ 6
PictObj equ 7
GDBObj equ 8
UnknownObj equ 9
UnknownequObj equ 0Ah
NewequObj equ 0Bh
CplxObj equ 0Ch
CListObj equ 0Dh
UndefObj equ 0Eh
WindowObj equ 0Fh
ZStoObj equ 10h
TblRngObj equ 11h
LCDObj equ 12h
BackupObj equ 13h
AppObj equ 14h ;application, only used in menus/link
AppVarObj equ 15h ;application variable
TempProgObj equ 16h ;program, home deletes when finished
GroupObj equ 17h ;group.
;-----------------------------------------------
; System Error Codes
;-----------------------------------------------
E_EDITF equ 7 ;allow re-entering application
E_EDIT equ 1<<E_EDITF
E_Mask equ 7Fh
E_Overflow equ 1+E_EDIT
E_DivBy0 equ 2+E_EDIT
E_SingularMat equ 3+E_EDIT
E_Domain equ 4+E_EDIT
E_Increment equ 5+E_EDIT
E_Break equ 6+E_EDIT
E_NonReal equ 7+E_EDIT
E_Syntax equ 8+E_EDIT
E_DataType equ 9+E_EDIT
E_Argument equ 10+E_EDIT
E_DimMismatch equ 11+E_EDIT
E_Dimension equ 12+E_EDIT
E_Undefined equ 13+E_EDIT
E_Memory equ 14+E_EDIT
E_Invalid equ 15+E_EDIT
E_IllegalNest equ 16+E_EDIT
E_Bound equ 17+E_EDIT
E_GraphRange equ 18+E_EDIT
E_Zoom equ 19+E_EDIT
E_Label equ 20
E_Stat equ 21
E_Solver equ 22+E_EDIT
E_Singularity equ 23+E_EDIT
E_SignChange equ 24+E_EDIT
E_Iterations equ 25+E_EDIT
E_BadGuess equ 26+E_EDIT
E_StatPlot equ 27
E_TolTooSmall equ 28+E_EDIT
E_Reserved equ 29+E_EDIT
E_Mode equ 30+E_EDIT
E_LnkErr equ 31+E_EDIT
E_LnkMemErr equ 32+E_EDIT
E_LnkTransErr equ 33+E_EDIT
E_LnkDupErr equ 34+E_EDIT
E_LnkMemFull equ 35+E_EDIT
E_Unknown equ 36+E_EDIT
E_Scale equ 37+E_EDIT
E_IdNotFound equ 38
E_NoMode equ 39+E_EDIT
E_Validation equ 40
E_Length equ 41+E_EDIT
E_Application equ 42+E_EDIT
E_AppErr1 equ 43+E_EDIT
E_AppErr2 equ 44+E_EDIT
E_ExpiredApp equ 45
E_BadAddr equ 46
E_Archived equ 47+E_EDIT
E_Version equ 48
E_ArchFull equ 49
E_Variable equ 50+E_EDIT
E_Duplicate equ 51+E_EDIT
HigErrNum equ 51
;-----------------------------------------------
; Stat Vars Equates
;-----------------------------------------------
FPLEN equ 9 ;Length of a floating-point number.
StatN equ statVars
XMean equ StatN+FPLEN
SumX equ XMean+FPLEN
SumXSqr equ SumX+FPLEN
StdX equ SumXSqr+FPLEN
StdPX equ StdX+FPLEN
MinX equ StdPX+FPLEN
MaxX equ MinX+FPLEN
MinY equ MaxX+FPLEN
MaxY equ MinY+FPLEN
YMean equ MaxY+FPLEN
SumY equ YMean+FPLEN
SumYSqr equ SumY+FPLEN
StdY equ SumYSqr+FPLEN
StdPY equ StdY+FPLEN
SumXY equ StdPY+FPLEN
Corr equ SumXY+FPLEN
MedX equ Corr+FPLEN
Q1 equ MedX+FPLEN
Q3 equ Q1+FPLEN
QuadA equ Q3+FPLEN
QuadB equ QuadA+FPLEN
QuadC equ QuadB+FPLEN
CubeD equ QuadC+FPLEN
QuartE equ CubeD+FPLEN
MedX1 equ QuartE +FPLEN
MedX2 equ MedX1+FPLEN
MedX3 equ MedX2+FPLEN
MedY1 equ MedX3+FPLEN
MedY2 equ MedY1+FPLEN
MedY3 equ MedY2+FPLEN
PStat equ MedY3+2*FPLEN
ZStat equ PStat+FPLEN
TStat equ ZStat+FPLEN
ChiStat equ TStat+FPLEN
FStat equ ChiStat+FPLEN
DF equ FStat+FPLEN
Phat equ DF+FPLEN
Phat1 equ Phat+FPLEN
Phat2 equ Phat1+FPLEN
MeanX1 equ Phat2+FPLEN
StdX1 equ MeanX1+FPLEN
StatN1 equ StdX1+FPLEN
MeanX2 equ StatN1+FPLEN
StdX2 equ MeanX2+FPLEN
StatN2 equ StdX2+FPLEN
StdXP2 equ StatN2+FPLEN
SLower equ StdXP2+FPLEN
SUpper equ SLower+FPLEN
SStat equ SUpper+FPLEN
;F_DF equ anovaf_vars
;F_SS equ F_DF + FPLEN
;F_MS equ F_SS + FPLEN
;E_DF equ F_MS + FPLEN
;E_SS equ E_DF + FPLEN
;E_MS equ E_SS + FPLEN
#endif
.list
Oh I should mention that I located and tested the parser hook.
Luckily it doesnt appear to perform any address range checks on the hook location, though it does of course check that the is valid.
At present I just make the hook point to a stub routine at the top of the stack (its 4KB so should be safe :X) which will be tasked with locating and jumping to a lib etc - as we can't write APPS at present.
02149C = enableParserHook, and 0214A0 to disable.
Will test more tonight (speed and such).
Hmm, I think that it might be a good idea to come up with some naming conventions. If I'm not mistaken, these were called _SetParserHook and _ClrParserHook respectively. Should we keep these same names, or change them for the new calculator? This also has to do with 16 bit operations vs 24 bit. Thanks!
So, I figured out that the keypad controller (at port A000 or memory address F50000) is the same as in the TI-Nspire:
http://hackspire.unsads.com/wiki/index.php/Memory-mapped_I/O_ports#900E0000_-_Keypad_controller
calc84maniac wrote:
I seriously hope that this doesn't mean that plenty of people will randomly end up with scrambled keyboards with no way to fix them like with the TI-Nspire CX. IIRC, even without an Ndless install some people ran into that issue.
DJ_O wrote:
calc84maniac wrote:
I seriously hope that this doesn't mean that plenty of people will randomly end up with scrambled keyboards with no way to fix them like with the TI-Nspire CX. IIRC, even without an Ndless install some people ran into that issue.
Well, one thing that I have found is that you definitely want to reset the keypad back to its original state before exiting the program. Otherwise you won't be able to press keys, depending on what you have done.