[A83] Re: What the heck is RST???


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

[A83] Re: What the heck is RST???




bcall(aabb) = EFbbaa
EF= rst 28h
rst 28h = bcall
That's what I think

>To give some more information, the code at 0028h (though I think it
contains
>a jump to another rom area)
>reads the address to call from the stack, much like this code:
>
>pop ix      ;get the address to retrieve info from
>ld h,(ix+0) ;retrieve the adrress to call to
>ld l,(ix+1) ;
>inc ix ; increase the address this routine should return to by 2,
>inc ix ; to account for the address data
>push ix ; push it back
>
>out pointerpage,(memswap_port) ;load the correct pointerpage
>push hl ;to store hl
>call real_call ;
>ret
>real_call:     ;to be able to return, with 'ret' after the code is executed
>jp (hl)
>
>
>I think though that the real code is very different, but this
>gives a general idea, the real code also remembers the rompage you are on
>when you call it
>
>--Peter-Martijn
>
>
>
>>
>>
>> >From: "Nick Reichert" <discjammer@hotmail.com>
>> >
>> >Hello,
>> >Can anyone tell me what "rst" does? It is part
>> >of the definition for B_CALL(#define B_CALL(xxxx)
>> >rst 28 // .dw xxxx or something like that), and
>> >it may give a little boost in speed. All I know
>> >is that it stands for restart, and "rst xxxx" is
>> >similar to "call xxxx", but what is the difference
>> >or advantage?
>>
>> "rst xx" is, as you said, the same as a call, but it's only one byte in
size
>> and (most importantly) it only works on some predefined addresses: 0000h,
>> 0008h, 0010h, 0018h, 0020h, 0028h, 0030h, 0038h.
>> The bcall macro is actually just a call to 0028h. The code at 28h then
looks
>> up the address defined after the rst and then calls the appropriate rom
>> routines.
>>
>> Tijl Coosemans
>> _________________________________________________________________________
>> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
>>
>>
>>
>
>
>