Re: A85: questions
[Prev][Next][Index][Thread]
Re: A85: questions
Michael Pearce wrote:
> >2) what does the adding hl and de with the (programaddr) (or
> whatever)
> >stuff do? why is it necesary in Zshell, but nowhere else? I fi'm
> porting
> >a prog to the 86 say, what would some of the equivalent stuff be?
> >thanx much
> >
>
> On the ti85, the location of the variables (strings specifically) in
> the calculator's RAM are always changing. Because of this, the
> location of the addresses are always changing within the program that
> you are making. the first line of code that you write is the ".org
> 0". when using instructions such as call, jp or ld, and you want to
> use a 16-bit address within the program, the actual machine code is
> calculated by adding the origin of the program (0 in this case) to the
>
> 16-bit address. for example:
> ld hl,MyData ;MyData is a label that is the number of
> ;bytes from the .org of the program. this is
> ;a 16-bit number that tells the *offset* from
> ;the beginning of your program. You
> ;then add the origin number (0) to find the
> ;actual machine code.
> ld de,(PROGRAM_ADDR)
> ;hl now has the address of my data relative
> ;to the start of the program, but this does
> ;not take into account the fact that the
> ;program could be any where in memory.
> ;so we look in PROG_ADDR to find the
> ;location of the first byte of the code
> add hl,de
> ;now, once these 2 addresses are added,
> ;the exact location of MyData in memory
> ;is known
> ......
> more code
> ......
> MyData:
> .db 7,7
>
> To overcome this repetitive action, shells such as Usgard and Rigel
> take away the need for PROGRAM_ADDR addition using a table of offsets
> or having the program always moved to a fixed address (the ".org"
> value is the address of where it is moved), respectively. And i
> believe that the 86 uses fixed address relocation (like Rigel), but i
> am not certain. Maybe someone else can answer that for sure.
> BTW, does anyone else the that this list is completely dead? then
> again, maybe its not the list, its the ti85 :(.
> -mike
> mgp4007@omega.uta.edu
You are correct on all counts.
Jonathan Kaus
References: