RE: A85: Custom menu handler


[Prev][Next][Index][Thread]

RE: A85: Custom menu handler




I want to be able to switch between split stack mode and stack mode, 
because I figured out how to run the catalog menu and several others from 
an ASM program, problem is, they require that the calc be in split stack 
mode, or they don't work.  I've already made a shell that runs in split 
stack mode, but some of the older ZShell grayscale programs don't work in 
split stack.

I could really use the info you have on the input handler and BASIC 
routines.  I'm confidant that if I spend enough time on them I can get them 
working.

I want to be able to make a shell that looks and feels just like a part of 
the TI-OS if possible.  I've wanted to know where the BASIC stuff is for a 
long time.  You probably remember me asking before.

----------
From: 	Dines Justesen[SMTP:dines@resnet.gatech.edu]
Sent: 	Wednesday, February 24, 1999 10:38 PM
To: 	assembly-85@lists.ticalc.org
Subject: 	Re: A85: Custom menu handler


>What I have found so far is that there is a structure at $820E that holds 
5
>pointers to the current menu's entries.  What I need to know is where the
>heck is the routine that retrieves the data from there, and uses the data
>it points at.  I want to know exactly how it works so I can find a way to

>From TI-ROM.TXT

+- Display menu indexed by
A -------+-------+-------+-------+-------+-------+
| Call 146B8        |  3DAE |  3DB1 |  3DB1 |  3DB1 |  3DB5 |  3D85*|
3DA0*|
+-------------------+-------+-------+-------+-------+-------+-------+---  
----
+
Input:  A = menu to display
Result: The menu is printed on the bottom line of the screen.

Menu Numbers
------------
[snip]
7A CATALOG
7B CUSTOM
7C TOLER


>switch memory modes in the middle of an ASM program, cause I found a way 
to
>make a shell run in split stack mode depending on what data is at where 
the
>custom entry points to.

Are you refering to that document on ticalc.org ? Based on what I know from
the TI82, I think it is likely that the document is not entirely correct,
and that the the splitstack is caused by the input handler. If this is the
case, make a shell use splitstack memory management is fairly easy, but I
dont see why anyone would want to use it.
>
>By the way, where is the input handler?  I'd like to know where the

I dont remember, I probably have it written down some hwre if you really
want it, but i might take some time to find.

>TI-BASIC calls are at, too.  I know you know where they are Dines.  I may
>be able to get them to work, but I need to know where they are first.

Actually the function I found was the one which executed a piece of
tokenized BASIC code. The advantage of knowing how to use that function is
that it would make it possible to do everything you can in BASIC using asm.
As with the input handler, I might have the addresse somewhere, but I would
have to check first to see if I can find it. Most of the work was actually
done on the TI82, and then the functions was located on the TI85 
afterwards.
Using the function I found it was possible to locate some BASIC functions,
but I never succesfully executed one. (BTW I should probably thank Andreas
Ess for the help onlocating InpSt).

After I found out how the input/program buffer is used by the input handler
I think I realized what I was doing wrong when I tried to execute BASIC
codce from asm, but I have never had the time to go back and check, and
unfortunately I am not sure I wrote done all the information. I am however
fairly sure that if you want to execute BASIC code you would have to
understand both the handler system, the input/program buffer, and some of
the menu system. This is alot of work, but it would be cool to be able to
include a few BASIC functions in your code (one could make a BASIC -> asm
compiler).

Dines

Just out of curiosity, what are you planning to use this for ?







begin 600 WINMAIL.DAT
M>)\^(B$0`0:0" `$```````!``$``0>0!@`(````Y 0```````#H``$-@ 0`
M`@````(``@`!!) &`$@!```!````# ````,``# #````"P`/#@`````"`?\/
M`0```%<`````````@2L?I+ZC$!F=;@#=`0]4`@````!A<W-E;6)L>2TX-4!L
M:7-T<RYT:6-A;&,N;W)G`%--5% `87-S96UB;'DM.#5 ;&ES=',N=&EC86QC
M+F]R9P``'@`", $````%````4TU44 `````>``,P`0```!T```!A<W-E;6)L
M>2TX-4!L:7-T<RYT:6-A;&,N;W)G``````,`%0P!`````P#^#P8````>``$P
M`0```!\````G87-S96UB;'DM.#5 ;&ES=',N=&EC86QC+F]R9R<```(!"S !
M````(@```%--5% Z05-314U"3%DM.#5 3$E35%,N5$E#04Q#+D]21P````,`
M`#D`````"P! .@$````"`?8/`0````0````````#PD$!"( '`!@```!)4$TN
M36EC<F]S;V9T($UA:6PN3F]T90`Q" $$@ $`'0```%)%.B!!.#4Z($-U<W1O
M;2!M96YU(&AA;F1L97(`1PD!!8 #``X```#/!P(`&0`)`!$`.P`$`$H!`2" 
M`P`.````SP<"`!D`"0`+`"@`! `Q`0$)@ $`(0```#0W,S0X0T(S.3%#0T0R
M,3%!13(V-#0T-34S-30P,# P`-H&`0.0!@`<"P``$@````L`(P```````P`F
M```````+`"D```````,`-@``````0 `Y`. 7`VG:8+X!'@!P``$````=````
M4D4Z($$X-3H@0W5S=&]M(&UE;G4@:&%N9&QE<@`````"`7$``0```!8````!
MOF#::/NSC#1(S)$1TJXF1$535 `````>`!X,`0````4```!33510`````!X`
M'PP!````&P```')I8VAA<F1L97=I<T!C961A<F-I='DN;F5T```#``80O5X[
MT ,`!Q"D"P``'@`($ $```!E````25=!3E143T)%04),151/4U=)5$-(0D54
M5T5%3E-03$E44U1!0TM-3T1%04Y$4U1!0TM-3T1%+$)%0T%54T5)1DE'55)%
M1$]55$A/5U1/4E5.5$A%0T%404Q/1TU%3E5!3D1310`````"`0D0`0```)0)
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
I45F'V6"^`4 `"#!@45F'V6"^`1X`/0`!````!0```%)%.B `````.P4`
`
end