Jump to content

Photo

SuperSave - Save EA3 files as EA5 files


5 replies to this topic

#1 FarmerPotato OFFLINE  

FarmerPotato

    Moonsweeper

  • 272 posts
  • Location:Austin, TX

Posted Mon Jan 14, 2019 4:44 PM

This is the source to a utility I wrote in 1986. You load SUPERSAVE before other object files, and it tracks the free addresses in high RAM.

It works on relocatable EA3 object files, and supplies its own copy of the E/A utilities. Supersave itself loads into low RAM (>2C00).

Attached File  supersave.txt   16.9KB   15 downloads

Before you load other files, Supersave puts a B instruction at >A000, followed by a version of the E/A utilities. You have the option to include none, or KSCAN-VMBW, DSRLNK and so on. Supersave intercepts auto-starting object files by patching the E/A Loader.

 

I'm sure there are some cases it doesn't handle, including code with AORG.

 

I wasn't able to find the disk I distributed this on, so there is no documentation or other goodies that I distributed on the fairware disk.

 

The source code was in an ARK that was unreadable by Barry Boone's 1988 or 1989 Archiver 3.03 versions. Anyhow Fred Kaal's TIDIR unpacked the archives ok into this PC text file.

 

 

SUPER.BIN is a TIFILES object code that I just made, fresh out of the Funlweb 4.10 assembler, in Classic99, but I expect all bits are identical to the original.

I'm not sure what to name an attached executable but AtariAge seems to like .BIN. It's a DIS/FIX80 EA3 loadable file with a TIFILES header.

Attached File  SUPER.BIN   6.63KB   10 downloads

 

And to test that it's working, I converted a standalone speech demo from EA3 to EA5. Attached also in TIFILES format please find TALK1.BIN

Attached File  TALK1.BIN   4.88KB   8 downloads


Edited by FarmerPotato, Mon Jan 14, 2019 5:25 PM.


#2 InsaneMultitasker OFFLINE  

InsaneMultitasker

    River Patroller

  • 2,365 posts

Posted Mon Jan 14, 2019 6:35 PM

Cool!  I didn't understand how to use it properly back in the day, I probably tried converting XB object code or some other nonsense.  lol.    I poked through my disks and found the flippy it resides on, probably from around 1987, and it still works.  (I got my Myarc FDC and double-sided drives around that time and did away with most of those self-made flippy disks.)

 

Interesting that that arc was unreadable.  I wonder if it was created with the old version 2.x Archiver or some other variant?



#3 FarmerPotato OFFLINE  

FarmerPotato

    Moonsweeper

  • Topic Starter
  • 272 posts
  • Location:Austin, TX

Posted Wed Jan 16, 2019 11:58 AM

Hi!
 
I'm glad another person remembers my program.
 
Yep, Supersave does nothing specifically to help with XB loadable object code (except purely relocatable code.)  I wonder if you have the whole disk image? It had other things like my brother's game CRASH that I have lost. It is mysterious to me where the master copy went to.
 
One of my disks had an archive of Archiver 2.0, which came with a separate Squeeze program and a note about plans for Archiver 3.0. I think that explains my unreadable (in 3.0) archives.
 
For Extended Basic object code, loading to low ram, Barry Boone's SYSTEX was ideal. Systex moved the low ram into the high ram inside the XB program table, added some glue to move it back to low ram at runtime, then you
save the whole program as one unit. This gives you a very fast load time for assembly code, compared to the XB CALL LOAD.
 
I used Systex when TI-NET BBS assembly code filled all of low ram and took quite a while to load. 
 
I peeked into what Systex did and used that technique for Bubble Plane to mix assembly with XB in one file. When Bubble Plane loaded, only the title screen and high score file management was in XB, while the entire game ran in
assembly in high ram. Merging the object code into the final image was tricky, and editing the Basic afterward was hazardous. The development process had gone from 100% XB, trying and giving up on the Basic Compiler of the day (Exceltec warned me that it wouldn't work out), to XB with A/L support for scrolling the screen, (writing the map editor using the same toolbox), to all assembly for gameplay. This version shipped on floppy.
 
Finally I got it into a 8k cartridge image plus 24k of RLE compressed data, and used GPL on the Geneve to simulate bank switching by paging at >6000 to get at the data. I didn't know who could publish it though. 
 
Footnote: I wrote Supersave one day when I was frustrated at all the steps needed to load and run Congo Bongo (the leaked beta on disk was a dozen or more object files.) Unfortunately, Supersave didn't get everything right and the image would not run after a cold restart. It's also true that I was perpetually out of floppy disks and needed to save space by compressing games.


#4 InsaneMultitasker OFFLINE  

InsaneMultitasker

    River Patroller

  • 2,365 posts

Posted Wed Jan 16, 2019 2:13 PM

 

For Extended Basic object code, loading to low ram, Barry Boone's SYSTEX was ideal. Systex moved the low ram into the high ram inside the XB program table, added some glue to move it back to low ram at runtime, then you
save the whole program as one unit. This gives you a very fast load time for assembly code, compared to the XB CALL LOAD.

Ah, yes, I recall sending Barry a fairware donation for Systex sometime in the late 80s, so I bet that was my 'solution'.  What a great program and time saver!  I still use Systex to this day ;)   Back then I was still cutting my teeth on XB and assembly hybrid programming and hadn't done much outside of that environment. It wasn't until some of the Milwaukee User group members showed me how to use Editor Assembler code through a few examples that I got into non-XB programming. 



#5 ti99iuc OFFLINE  

ti99iuc

    Stargunner

  • 1,622 posts
  • Location:Italy

Posted Wed Jan 16, 2019 2:21 PM

I would love to have something similar of this but for convert MiniMemory to EA3 :P



#6 FarmerPotato OFFLINE  

FarmerPotato

    Moonsweeper

  • Topic Starter
  • 272 posts
  • Location:Austin, TX

Posted Wed Jan 16, 2019 2:53 PM

I would love to have something similar of this but for convert MiniMemory to EA3 :P

Like converting the Line by line assembler to EA3 or EA5?

 

Its one thing to read in in whatever file format Easy Bug writes out, but it has addresses based at >7000. Fine if you have an E/A with 8K RAM installed.

 

If you want that to load into the 32k, thats a hard problem. Rebasing code means figuring out what is an address and what is data. You can do a quick and dirty job and wind up with errors.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users