RE: A85: Custom menu handler


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

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 
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.

By the way, where is the input handler?  I'd like to know where the 
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.

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


Actually I have been looking at this a long time ago. There is however not
one function which handles the custom menu (as far as I remember). The menu
is called by the std. input handler when the custom key is pressed. The
actual menu is displayed by the function listed in TI-ROM.TXT, which also
handles the other menus. I think the input is handled by the normal input
handler, but I am not sure (you can always check).

Since I have not been working on this for a while it is kind of hard to
remember exactly how every thing works, but i think it is implemented
something like this:

All menus are discribed in he RAM or ROM using a special structure which 
for
all elements in a menu defines what to show on the menu, and what to do 
when
that element is selected (this includes sub menues). For almost all menues
this structure is stored in the ROM, the only exception is the custom menu.
The custom menu structure is stored in the RAM in the adresses given in
TI-RAM, and by modifing this structure the custom menu can be changed.

When a user presses a key the currently selected input handler detects this
and handles the keypress. If a menu key is presses the function calls a
function, which based on the key pressed finds the menu, initializes it and
displays it. If one of the F keys is pressed and a menu is show the
inputhandler uses the menu structure to find out what to do.

Most of the information you need should be available in documents such as
TI-RxM, but depending on what you want to do you might need to experiment a
bit, or have a look at a ROM dump. If you need any help, feel free to email
me.

Dines
----- Original Message -----
From: <CashOnly@aol.com>
To: <assembly-85@lists.ticalc.org>
Sent: Wednesday, February 24, 1999 6:48 PM
Subject: Re: A85: Custom menu handler


>
>> Does anybody know where the custom menu handler is in the ROM?  If I 
knew
>>  where that was I could understand how the menuing system on the 85
works.
>
>I don't know if this is what you need, but in 85hack.txt it says the 
custom
>menu data is at offset 08B1 in a .85B file. Couldn't you search through a
rom
>dump for refrences to that offset? I am going out on a major limb here-
Dines?
>
>-------
>NAME : Mikel Blanchard, of Macross Software
>WEB   : http://macross.calc.org/
>EMAIL : cashonly@calc.org
>ICQ     : 3033904 (CashOnly)
>






begin 600 WINMAIL.DAT
M>)\^(B\!`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(`& `2`#L`*P`#`&L!`2" 
M`P`.````SP<"`!@`$@`[`"L``P!K`0$)@ $`(0```#!"1$8W0T%",39#0T0R
M,3%!13(V-#0T-34S-30P,# P``X'`0.0!@`D"@``$@````L`(P```````P`F
M```````+`"D```````,`-@``````0 `Y`*"E(H-B8+X!'@!P``$````=````
M4D4Z($$X-3H@0W5S=&]M(&UE;G4@:&%N9&QE<@`````"`7$``0```!8````!
MOF!B@Q&K?-\.S!81TJXF1$535 `````>`!X,`0````4```!33510`````!X`
M'PP!````&P```')I8VAA<F1L97=I<T!C961A<F-I='DN;F5T```#``806Z'!
M]P,`!Q#C"0``'@`($ $```!E````5TA!5$E(059%1D]53D133T9!4DE35$A!
M5%1(15)%25-!4U1254-455)%050D.#(P151(051(3TQ$4S503TE.5$524U1/
M5$A%0U524D5.5$U%3E5314Y44DE%4U=(051)3D5%1 `````"`0D0`0```)P(
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
2`0````4```!213H@`````""0
`
end