Kchula-Rrit Posted February 1, 2021 Share Posted February 1, 2021 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. Quote Link to comment https://forums.atariage.com/topic/316618-how-to-reset-symbol-table-in-edassem/ Share on other sites More sharing options...
+Lee Stewart Posted February 2, 2021 Share Posted February 2, 2021 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 Quote Link to comment https://forums.atariage.com/topic/316618-how-to-reset-symbol-table-in-edassem/#findComment-4742236 Share on other sites More sharing options...
Kchula-Rrit Posted February 2, 2021 Author Share Posted February 2, 2021 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. Quote Link to comment https://forums.atariage.com/topic/316618-how-to-reset-symbol-table-in-edassem/#findComment-4742294 Share on other sites More sharing options...
RXB Posted February 2, 2021 Share Posted February 2, 2021 (edited) 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 February 2, 2021 by RXB missing text Quote Link to comment https://forums.atariage.com/topic/316618-how-to-reset-symbol-table-in-edassem/#findComment-4742731 Share on other sites More sharing options...
Kchula-Rrit Posted February 3, 2021 Author Share Posted February 3, 2021 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. Quote Link to comment https://forums.atariage.com/topic/316618-how-to-reset-symbol-table-in-edassem/#findComment-4743192 Share on other sites More sharing options...
Recommended Posts
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.