I've finished typing in the original Six Forks Assembler and Linker manual, and added some pages regarding some of the changes I've made. Still need to fix the index page, and sort out the page numbers. Once that's done, I'll post it here for people to proofread.
The next set of new programs will be the SFAXL/SFLXL pair. I plan to introduce new features into the baseline programs, and then roll them into the other versions.
Last night I added .CBYTE, .SBYTE and .ASTR. The first two work like they do in MAC/65, while .ASTR produces a string variable in the format of an Action! array. The first byte is the length of the string, followed by the
actual string data. One flaw in this is that it doesn't permit reserving space, so I may change it to something like:
MYSTR .ASTR 40,"THIS IS MY STRING"
In that example, 40 bytes total would be reserved and the given string would populate the first 17 bytes.
I'm a bit on the fence regarding .FLOAT. I've never used it, or had a need for it, but I suppose if one was writing code to interface with BASIC, it might be useful. Does anyone think that a .FLOAT directive
would be a useful one to have in an assembler ?
I also plan to add a .IBIN to allow including binary data directly. I'm also trying to think of ways that SFLXL might be changed to allow it to create larger binaries without having any banked ram, perhaps by using a
temporary disk file.
Another tool will be something to handle relocatable files, to combine them into libraries, or to extract functions from a library. Libraries are a feature that were added into the linker but were never documented in the
manual. It also has the ability to export a symbol cross-reference file. I plan to do away with the xref file, but plan on adding the option to produce a file that would allow for source level debugging under Altirra.
The next big change will be to allow for 8 character label names. This will be to only the XE and 816 versions, since they can use banked memory to make up for the increased main memory usage. I've thought about making the
limit larger like say 12 characters, but I don't think I've seen much assembler where such long labels are used. Does anyone think it's a common use to have labels longer than 8 in assembler ? I noticed that the Atari OS
source code posted here a while back is all six byte labels, I think maybe DOS 2.0 is as well.
Anyway, that's the current status. I'll post a new ATR shortly, along with the revised manual.