Jump to content

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.

Link to comment
https://forums.atariage.com/topic/316618-how-to-reset-symbol-table-in-edassem/
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.

 

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,G@G0000(@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,G@G0000(@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

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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

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...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...