Jump to content

Photo

Six Forks Assembler Upgrades


8 replies to this topic

#1 Alfred OFFLINE  

Alfred

    Dragonstomper

  • 555 posts
  • Location:Elmwood, Ontario

Posted Thu Mar 7, 2019 9:25 AM

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.


  • 777ismyname and Kyle22 like this

#2 _The Doctor__ OFFLINE  

_The Doctor__

    Flux Capacitor Master Craftsman

  • 6,726 posts
  • Location:10-0-11-00:02

Posted Thu Mar 7, 2019 10:32 AM

Please tell me you OCR'd the manual and finished typing in the additions and corrections. Sounds like a lot a work, but if you were looking to work on typing skills ....

8 is great. Thanks for the updates.



#3 Alfred OFFLINE  

Alfred

    Dragonstomper

  • Topic Starter
  • 555 posts
  • Location:Elmwood, Ontario

Posted Thu Mar 7, 2019 9:17 PM

No, I just sat here with the keyboard in my lap and the manual on the desk and typed it in. I brute force a lot of things; many years ago I typed in the whole Action! manual, although today I think I only have part 2.

Too many things to be done, not enough time for them all.
  • Stephen , ggn and Kyle22 like this

#4 E474 OFFLINE  

E474

    Chopper Commander

  • 211 posts

Posted Fri Mar 8, 2019 9:54 AM

Hi,

If you have a smartphone, you can use Google translate to photo the text, Google will OCR the text, and you will get the original text, and text from whatever language you tell Google to translate to (this isn't important if you are just using Google translate to OCR text). It's a bit tedious, but this was how I translated the "Atari Magazin" articles on Happy 1050 programming.
  • Stephen likes this

#5 _The Doctor__ OFFLINE  

_The Doctor__

    Flux Capacitor Master Craftsman

  • 6,726 posts
  • Location:10-0-11-00:02

Posted Sat Mar 16, 2019 2:34 PM

We could request the other thread in it's entirety be move to this one... you can use the report function on the first post of the other thread and ask the entire thread be merged/moved into this one and then go about continue posts and updates here. That should accomplish what I interpreted as your intentions or thoughts for where the project should be placed here on AA.


Edited by _The Doctor__, Sat Mar 16, 2019 2:34 PM.


#6 Alfred OFFLINE  

Alfred

    Dragonstomper

  • Topic Starter
  • 555 posts
  • Location:Elmwood, Ontario

Posted Sat Mar 16, 2019 4:37 PM

We could request the other thread in it's entirety be move to this one... you can use the report function on the first post of the other thread and ask the entire thread be merged/moved into this one and then go about continue posts and updates here. That should accomplish what I interpreted as your intentions or thoughts for where the project should be placed here on AA.

 

There's only a couple of posts over that would be informative, so I'm not going to bother asking for a thread merge.

 

I've been busy straightening out issues with the source. Unfortunately I made the 65816 changes to my baseline XE code and then when I ran into some challenges to add some other stuff, the 816 code was in the way. So I had to go back a fair ways, pulling code from the original Hume codebase. Since then I've mainly made changes to the internals, to make it easier for future updates, while still being able to generate binaries of varying abilities.

 

For the Bruce Lee project I'm running a version labelled XE8. This is basically the SFAXE line, except it handles 8 byte labels, rather than 6. The label names in the mads disassembly were so long that I was just having too much trouble condensing them to six characters. I've also removed the 65816 support, because I plan to implement it back in in a neater fashion. 8 byte names for external references is the S/370 standard for IEWL and I don't want to hear anything about GOFF or the binder.

 

SFAXE8 is about the limit of what Six Forks can handle without major internal revisions. The limit is 800 external references, with the assembler exporting a maximum of 384 labels. There's 187 bytes left in main memory for code expansion. For Bruce Lee, there's 524 bytes left in the 77K buffer to produce a binary file 41,528 bytes long. 748 external references. So that gives an idea of how large a project you can build with the XE8 line, which I will release here shortly. There's no other native Atari assembler than could even touch this project, and even it's teetering on the edge.

 

Edit: It takes 1:47 to link that 40K file with the screen on. I think I'm going to change the linker to turn DMA off if any XE banks were used to hold object data. Seems right since that would mean there was more than 20K of relocatable file data.


Edited by Alfred, Sat Mar 16, 2019 6:14 PM.

  • _The Doctor__ likes this

#7 Alfred OFFLINE  

Alfred

    Dragonstomper

  • Topic Starter
  • 555 posts
  • Location:Elmwood, Ontario

Posted Sun Mar 17, 2019 7:47 PM

Latest Six Fork disk. I've included most of the past versions as before. As mentioned above, the XE8 line is receiving the most effort. Due to the lack of memory, I think the XE8 will diverge from the plain XE and -require- XE memory rather than just use it if available. In order to add 65816 support, something has to give, because I want that version to be the most flexible in terms of size. It's pretty much right at the edge for Bruce Lee, and I want to eliminate that. So future changes will be to increase the number of banks used in the linker to 12 (192K) which ought to be good for about a 108K binary. Not that I think anybody would ever do such a thing. The SFAXE assembler will stay at 4 XE banks. Anything more and it'd be just too slow to tolerate, and handling huge assemblies isn't why you would use Six Forks.

 

I'm also including my draft of the original manual. Yes, I know, a lot of the chapter headings and footers are wrong, and they'll get fixed eventually I've corrected some small errors that were in the original, and added some new pages at the end to describe the changes and features added to the latest versions.

Attached Files


  • Stephen , Kyle22 , _The Doctor__ and 1 other like this

#8 Alfred OFFLINE  

Alfred

    Dragonstomper

  • Topic Starter
  • 555 posts
  • Location:Elmwood, Ontario

Posted Mon Mar 18, 2019 8:22 PM

I've updated SFLXE8 to use 7 XE banks, if they are available (256KXL or 320K XE). This results in about 125K buffer, which should be sufficient to generate a full 64K binary for an eprom. Once I've made a few more changes, I'll post an updated ATR. The maximum number of external references is now 1024.

Attached Thumbnails

  • BIGLINK.jpg

Edited by Alfred, Mon Mar 18, 2019 8:22 PM.

  • Allan , Kyle22 and luckybuck like this

#9 _The Doctor__ OFFLINE  

_The Doctor__

    Flux Capacitor Master Craftsman

  • 6,726 posts
  • Location:10-0-11-00:02

Posted Mon Mar 18, 2019 8:34 PM

Perfect,  the 320K XE, the most common XE upgrade of years gone by. And of course sitting on my desk next to a stock 130XE...






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users