Re: A85: Rigel, where'd it go??


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

Re: A85: Rigel, where'd it go??



In a message dated 97-10-15 03:55:47 EDT, you write:

> So, how do you know whether the next fixup is less than 256 bytes away from

> the last.  Say the fixup is 257 bytes away from the last (meaning a word is

> necessary to store the relative address).  According to your method, you 
> would read in only the next byte ($01) and interpret it as a relative fixup

> of only 1 byte away, when actually you want to read the word $0101.  This 
> means you would have to store everything as words, or have some delimiting 
> byte.  Either way, you must use two bytes.  Correct me if I'm wrong, but
your 
> logic seems to be incorrect.

The logic is not incorrect.  Zero is used to signal a two byte follow up
which contains the word to add to the current_fix_address.  If the next byte
in the fix up table is 1-255, then it adds that value (byte) to the
current_fix_address and fixes the address at that location.  If the next byte
in the table is not 1-255 (zero); it reads the next two bytes (after the
zero) and adds that to the current_fix_address; then it fixes the address at
that location.  Then it reads the next byte and continues till all addresses
are fixed.

This may not be exactly how they accomplised this (the values may be
different), but I believe that this is the same idea.

-Michael