Jump to content
Sign in to follow this  
Kchula-Rrit

How to reset symbol table in Ed/Assem?

Recommended Posts

While fiddling with my K-Loader program, I thought it might be nifty to be able to reset the symbol table at the top of low RAM.  For example, if I load the wrong object file by mistake, I thought it might be nice to reset the RAM free-space pointers and clear the symbol table to start over without having to reboot and reload the loader.

 

I assume that everything between >3F38 and >3FF8 is assigned by the system when the user selects EA3 or EA5 on the Editor/Assembler menu.

 

I was thinking that setting the eight bytes, starting at >3F30, to zeroes and then set LSTLOW to >3F38 would reset the table to the state that existed upon program start-up.

 

When I do so, and then try to load a file, I get an "Illegal operation" (Error 3, I think).

 

Anyone tried doing this?  And succeeded?

 

K-R.

Share this post


Link to post
Share on other sites

I do not believe I have tried it, but you should probably also insure that FSTHI (@>2024 = >A000), LSTHI (@>2026 = >FFD7) and FSTLOW (@>2028 = >2676) are correct.

 

...lee

Share this post


Link to post
Share on other sites

Thanks for the response!  I'll have to make sure I do that.  Since my batch-loader runs in low RAM (AORG >2680), I changed FSTLOW to end-of-my-loader so TI's loader does not over-write it.  The batch loader works first time through, but bombs after resetting the symbol table.

 

I had tried to detect if the loader is running in low RAM (AORG >2680), which may be playing havoc with the above-mentioned pointers.

 

K-R.

 

Share this post


Link to post
Share on other sites
On 1/31/2021 at 11:42 PM, Kchula-Rrit said:

While fiddling with my K-Loader program, I thought it might be nifty to be able to reset the symbol table at the top of low RAM.  For example, if I load the wrong object file by mistake, I thought it might be nice to reset the RAM free-space pointers and clear the symbol table to start over without having to reboot and reload the loader.

 

I assume that everything between >3F38 and >3FF8 is assigned by the system when the user selects EA3 or EA5 on the Editor/Assembler menu.

 

I was thinking that setting the eight bytes, starting at >3F30, to zeroes and then set LSTLOW to >3F38 would reset the table to the state that existed upon program start-up.

 

When I do so, and then try to load a file, I get an "Illegal operation" (Error 3, I think).

 

Anyone tried doing this?  And succeeded?

 

K-R.

When you load EA5 (Programs) or EA3 (Objects) the first thing the GPL routine in EA Cart does it do a  CALL INIT.

This below is RXB 2012 but original EA Cart is the mostly the same in a different address in GPL source code.

<0485>               *
<0486>               *  CALL INIT
<0487>               *
<0488> EDED D7,8F,9D BINIT2 DCEQ  >A55A,@>2000
       EDF0 00,A5,5A
<0489> EDF3 6E,1C           BS    GEBBD
<0490> EDF5 06,E6,C0 BINIT3 CALL  EXPMEM
<0491> EDF8 BE,4A,03        ST    >03,@FAC
<0492> EDFB BF,4C,EF        DST   GF000,@FAC2
       EDFE 9A
<0493> EDFF 33,00,04 GEBA0  MOVE  4,[email protected](@FAC2),@FAC4
       EE02 4E,00,00
       EE05 4C
<0494> EE06 A3,4C,00        DADD  >0004,@FAC2
       EE09 04
<0495> EE0A 32,4E,CF        MOVE  @FAC4,[email protected](@FAC2),@0(@FAC6)

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0026 
Rich E/A GROM
       EE0D 7D,00,50
       EE10 00,00,4C
<0496> EE13 A1,4C,4E        DADD  @FAC4,@FAC2
<0497> EE16 92,4A           DEC   @FAC
<0498> EE18 4D,FF           BR    GEBA0
<0499> EE1A 47,0E           BR    CLRXOP
<0500> EE1C 00       GEBBD  RTN

As all the LINKs are predefined moving them would require some work even in your loader.

Edited by RXB
missing text

Share this post


Link to post
Share on other sites

Thanks for the help, but I found the problem this afternoon.  When an object file failed to load, I had forgotten to close it.  When I tried loading the next batch file, the routine tried to open a file that was still open.  Changed the code to close the object file on failure, and everything works now.

 

My "loader" is not really an object-file loader, like the one in the E/A cartridge.  It just reads a list of object files and calls the LOADER program that the Ed/Assem startup routine puts into low RAM.  I just took Tom Bentley's CLOAD batch-loader and cut it up and put it back together to be a little more robust, allow comments, force loading to low RAM, etc...

 

So far I have it running in TI994w, until I can get my TI running again.  Once I get running in my TI, I'll post it, along with the source code.

 

K-R.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...