Re: A83: Re: A ROM call


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

Re: A83: Re: A ROM call




Don't know, 8 is a more even number than 3. =) Actually, if you have a _very_
short routine you can fit it into those 8 bytes and it'd work really quickly.
And if you often perform two specific rom calls after each other you could
have one call followed by one jp, which is 6 bytes.

But whatever, in ti-os, the space between those jp routines is utilized for
some mini rom calls that set or clear certain bits. Calling them instead of
setting/clearing the bit yourself saves 1 byte. =)

Linus

On 16-Oct-98, Alan C Johnson wrote:

>WHy did they make each RST memory area 8 bytes when they could
>technically just jump to the ROM call and the ROM call would RET out of
>the routine.  THat would only take 3 bytes

>>
>>rst is read "restart", but that's a wry name. It performs a call to 
>>the
>>specified address, but only addresses 0, 8, 16, 24, 32, 40 and 48 are
>>allowed. The instruction is always 1 byte long, whereas call is 3 
>>bytes. It
>>was mainly implemented so that interrupting devices could place an op 
>>code on
>>the data bus easily (only 1 byte).
>>
>>What the rst:s do is of course dependent of the code placed in the 
>>very
>>beginning of the rom. On the ti-83, this is:
>>rst 0   Power-up (has to be; the processor starts at address 0000
>>automatically)
>>rst 8   call _OP1TOOP2 (copy OP1 to OP2)
>>rst 16  call _FINDSYM (not chkfindsym, so only non-progs and 
>>non-lists)
>>rst 24  call _PUSHREALO1 (push OP1 to the fps)
>>rst 32  call _MOV9TOOP1 (move 9 bytes from hl to OP1)
>>rst 40  call _FPMULT (OP1 * OP2 -> OP1)
>>rst 48  call _FPADD (OP1 + OP2 -> OP1)
>>
>>Linus
>>
>>On 14-Oct-98, James Matthews wrote:
>>
>>>Woah, Linus you lost me there (not surprisingly :)...what's rst 16, 
>>and how
>>>would you use it?
>>
>>>Thanks.
>>
>>>James Matthews (matthews@tkb.att.ne.jp)
>>
>>>ICQ: 7413754
>>>http://home.att.ne.jp/gold/tomcat21/index.html
>>>http://library.advanced.org/18242/
>>
>>>----------
>>>> From: Linus Akesson <lairfight@softhome.net>
>>>> To: Joe Wingbermuehle <assembly-83@lists.ticalc.org>
>>>> Subject: Re: A83: Re: A ROM call
>>>> Date: Thursday, October 15, 1998 7:20 AM
>>>> 
>>>> 
>>>> Yep, 442ah = _CHKFINDSYM will do in both cases. When looking up a
>>>> non-prog/non-list you can also use rst 16, which is a bit smaller. 
>>But
>>>> there's one thing; never specify the type 6 when trying to find 
>>protected
>>>> programs - always use 5.
>>>> 
>>>> Linus
>>>> 
>>>> On 14-Oct-98, Joe Wingbermuehle wrote:
>>>> 
>>>> >$442A will work the same way as your second one I think.
>>>> >input: op1->type,program (load something like 6,"PROGRAM",0 into 
>>op1)
>>>> >output: hl->vat entry, de->program data (first 2 bytes are size)
>>>> 
>>>> >Joe Wingbermuehle
>>>> >http://www.usmo.com/~joewing/
>>>> 
>>>> >-----Original Message-----
>>>> >From: Evil Sam <evil_sam@hotmail.com>
>>>> >To: assembly-83@lists.ticalc.org <assembly-83@lists.ticalc.org>
>>>> >Date: Wednesday, October 14, 1998 3:14 PM
>>>> >Subject: A83: A ROM call
>>>> 
>>>> 
>>>> >>
>>>> >>  I need an 83 equivolent for either of these 82 ROM_CALLs for 
>>Plain 
>>>> >>Jump 83:
>>>> >>
>>>> >>---- CALL 20EB ---- Search for program by name 
>>>> >>------------------------------
>>>> >>Searches the program VAT for a program. info in OP1.
>>>> >>Result: HL = pointer to VAT entry
>>>> >>        DE = Pointer to data space
>>>> >>
>>>> >>---- CALL 213E ---- Serach for variable by token/name 
>>>> >>-----------------------
>>>> >>Seraches VAT to find variable. infor in op1. works for all 
>>types.
>>>> >>Result: HL = pointer to VAT entry
>>>> >>        DE = Pointer to data space
>>>> >>
>>>> >> Thank you,
>>>> >>   Sam
>>>> >>
>>>> >>______________________________________________________
>>>> >>Get Your Private, Free Email at http://www.hotmail.com
>>>> >>
>>>> 
>>>> 
>>>> 
>>
>>
>>

>___________________________________________________________________
>You don't need to buy Internet access to use free Internet e-mail.
>Get completely free e-mail from Juno at http://www.juno.com
>or call Juno at (800) 654-JUNO [654-5866]



References: