Re: A92: ASM


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

Re: A92: ASM



At 05:42 01/10/99 -0700, you wrote:
>
>I looked at that, and it describes the format of the .9xz file on the pc,
not the data on the calc.  That's what I need.
>
>Noah Medling
>http://xp.calc.org/

It should be what you need....

NeXO
		Format of 89 and 92+ ASM files
		------------------------------

Sorry this file is not very well explained yet.


Offset	Size	Desc
--------------------
$0	4	Bsr to the loader code
$4	4	68k ASM Signature "68kP" or "68kL"
$8	2	Reloc count
$A	2	offset to _comment
$C	2	offset to _main
$E	2	offset to _exit
$10	2	compatibility and special flags
		 bit 0 - runs on 92+
		 bit 1 - runs on 89
		 bit 15 - TI-89 emulation (force 89 screen size on 92+)
$12	2	handle of BSS block ; when program is in use
$14	2	offset to BSS table
$16	2	offset to export table
$18	2	offset to Extra RAM table
$1A	2+NA	Import Table
NA	2+NA	ROM Table
NA	2+NA	RAM Table
NA	2+NA	Relocation table
NA	4+NA	BSS Table
NA	2+NA	Export Table


Format of Import Table
1st word: nb of libs used
Then is the libs name list: each lib name is 10 bytes:
8 chars + a word at the end

	Then, for each lib is a lib reloc table:

	1st word: nb of functions used in this lib - 1 (for the dbra)
		Then, for each function is a table:
		1st word: index of the library function used
			Then is a null terminated list of offsets (words).


Format of ROM Table
1st word: if null, there is no ROM call.
Then is a reloc table which is like a lib reloc table.

Format of extra RAM address table
1st word: if null, there are no extra RAM addresses
Then there are pairs of words.  The first word is the address on the
89 and the second word is the address on the 92+.  The list is
terminated by a null word.

Format of RAM table
1st word: if null, there are no RAM address/value references
Next word: nb of RAM addresses/values used  - 1 (for the dbra)
	Then, for each address/value is a table:
		1st word: index of the RAM address/value used
			Then is a null terminated list of offsets (words).
RAM address/value index is this:
Bit 0-13:  RAM address number.  If bit 14 is not set, they are as follows:
	   
Bit 14:   Set if an "extra" RAM address (not defined by the kernel).
	  The address is stored in the extra RAM address table.
Bit 15:   Set if reference is word, clear if reference is dword

Format of BSS Table
1st Long Word: size of the BSS block to allocate.
Then is a null terminated list of offsets (words)

Format of Export Table
1st word : nb of functions exported
Then is a null terminated list of offsets (words)

Format of relocation Table
This is a null terminated list of offsets (words).


References: