Thanks donkey,

I will test it immediately. These are good notices because the set of 100% assembly written tools is growing.

FASM is more than free software, I call it priceless software and its quality is best guaranteed by its source code.
I hope someday GoLink will follow the example and a totally free environment of state-of-the-art programming tools will be available for all of us.
Posted on 2003-05-07 11:08:36 by pelaillo

When I've managed to work out all of the options and set RadASM up for use with what I what to get from FASM I'll put the results in the RadASM help file. The help seems to be turning more fasm oriented now as I discover this truly exceptional assembler. Still having DLL creation problems though, thought I had it solved but hey, life is for learning and that's done by doing :)
Posted on 2003-05-07 11:45:43 by donkey
BTW, very nice work.
Useful help. I've read it and I hope to put some contribution soon.
Posted on 2003-05-07 11:56:23 by pelaillo
hi pelaillo,

To use GoLink with RadASM, make the GFL.TXT file I showed above and put it in FASM\BIN along with GoLink.exe and change the link command in Project Proerties to this:

0,O,$B\GoLink @$B\GFL.txt /entry MyEntry /files ,3

Note that the red O is the letter O not zero !

I will be posting a thread shortly with a new FASM.ini that will take advantage of GoLink and GoRC, as they are the two best non-MS packages I have found. The details will also be included in the RadASM help file. I haveonly to work on DLL's then I should have a complete build set for FASM incorporated with several default project types.

EDIT: Changed the path for GFL to a RadASM generated path
EDIT: Make sure you change the path of $B (Bin) to $A\BIN
EDIT: The entry point in your program must be specified and it must be public, I have used MyEntry here but you can use what ever you want.
EDIT: Add a ,4 to the command line to link a RES file as well
EDIT: Remove /files if you want to have a less verbose tracking to the output window
Posted on 2003-05-07 12:35:57 by donkey
OK pelaillo, you got me hooked.

I love GoRC and especially GoLink. At least with FASM I can't see ever using anything else. Actually with these two tools it is perfectly possible to have a fully functional equivalent to Hutch's MASM32 within a few weeks ! All you have to do is generate the imports using his include files (if he says it's ok, don't go doing it without asking) the autogenerate program would be simple. I have now made programs with and without resources, and DLL's with and without reources. Even linked multiple object files ! You can even link to OCX and DRV files ! The only thing I don't like is that all exports from a DLL have to be included on the command line, would have been nicer in a def file :(. I've emailed Mr. Gordon with the hopes he might provide a workaround for this.

For the RadASM users I will be posting a new FASM.INI file as well as new examples that actually assemble very soon.

Thanks for pointing me in this direction :alright:
Posted on 2003-05-07 17:03:44 by donkey
Hey, maybe I am pushing things in the FASM forum, but I have been using GoAsm and GoLink exclusively for most of my ASM programming - let's see, about 4 months now :tongue: So my experience is limited, but I do find them to be useful tools.

Just putting a plug in for the "Go tools". If you haven't checked them out yet, it may be worth trying them.

One potential downside - no forums :(

BTW - if this is too off-topic, feel free to delete or move.

Posted on 2003-05-07 17:55:09 by bushpilot
Hi bushpilot,

Yup I like it, except the lack of a DEF file, he should have thought of that :rolleyes: , I just now completed my full implementation of FASM 1.46 and GoRC / GoLink for RadASM, it truly expands the capabilities of the fasm section of Ketil's package which really didn't work as near as I could tell. For MASM however the LIBs are all there and it has DEF files so though GoLink is nice it still has a ways to go before it catches up. GoRC seems to compile RC files very well though, I just have to check to see if it has a message compiler.
Posted on 2003-05-07 18:43:44 by donkey
Hi donkey,

I tried to use Golink with Fasm.Good result:alright:
Thanks for your help:alright:
Posted on 2003-05-08 02:07:07 by Vortex
Well, as far a GoLink is concerned I really like it. I have engineered a workaround for the lack of def files, GoDLink.exe is a wrapper function that will add pseudo-def support to GoLink. I say Pseudo because it just takes a plain list of exports and adds them to the command line. It is transparent - ie the console output of GoLink is piped and GoDLink remains silent. I have posted it for RadASM users but here are two example command lines if you want to use it without RadASM. Read the RadASM thread for info on how to build a DEF file for it and place GoDlink.exe in the same folder as GoLink (here I assume C:\FASM\BIN)

These are just examples, you should be able to use any command line that you normally send to GoLink. Please try it out and tell me if you find a problem. I know, it's in MASM but I'm still learning FASM :)

C:\Fasm\BIN\GoDLink.EXE @C:\Fasm\BIN\GFL.txt /entry MyEntry "TestFasm.obj" "TestFasm.res"

C:\Fasm\BIN\GoDLink @C:\Fasm\BIN\GFL.txt /DEF:TestDLL.def /dll /entry DllEntryPoint "TestDLL.obj"

Should note how the files were built :

RES file was compiled as follows :
C:\Fasm\BIN\GORC /r TestFasm.rc

OBJ file was assembled as follows :
C:\Fasm\BIN\FASM.EXE "TestFasm.asm" "TestFasm.obj"

You can get a copy of the wrapper here
Posted on 2003-05-10 21:40:12 by donkey
Hi All,

In a contiuation of poluting the Alink thread with GoLink stuff, I have just been replied to by Jeremy Gordon who is btw a member of this board ! He has made a modification to GoLink that allows for multiple command files. This allows you to have a static file for your dll list and a dynamic DEF file without the use of a wrapper function. This is now a VERY nice linker. GoLink 2.1a supports this new feature.

Link command should now be:

C:\Fasm\BIN\GoLink @C:\Fasm\BIN\GFL.txt @TestDLL.def /dll /entry DllEntryPoint "TestDLL.obj"

TestDLL.Def is as follows though you can put any link directives you wish in the file I use it for exports

------------top of file
/export ShowLastError
/export ShowErrorMessage
------------bottom of file


------------top of file
/exports ShowLastError,ShowErrorMessage
------------bottom of file
Posted on 2003-05-11 15:38:54 by donkey
For those of us who use fasm in our products, the GoLink licence is untenable. To wit:

Licence and distribution

You may use GoLink free for any purpose. You may redistribute GoLink freely (but not for payment nor for use with a program or any material for which the user is asked to pay). You are not entitled to hide or deny my copyright.

ALink is apparently under the Artistic License (it took some digging to determine this).

The reason some of us (aside from its technical excellence) have chosen fasm is the user friendly license. Others such as MASM, GoAsm, SpAsm, TASM, and NASM are prohibited for commercial use. I believe Randall Hyde mentioned this in his decision to go from NASM to fasm (but I couldn't find the post today).

If fasm is coupled to a static linker, I would hope that a linker with a non-restrictive license would be used so as to be compatible with the fasm license.
Posted on 2003-05-11 16:44:06 by msmith
As the author of Golink, it is not prohibited for commercial use!
You can use any of the free "Go" tools to make programs for sale.
However, the licence does not permit you to try to sell the "Go" tools, or to distribute them with any program which is for sale. To do that would mean that you are making money out of a free program.

Donkey has referred to GoLink 0.21a which permits more than one command file. This version is not yet officially published so I am attaching it here ..
Posted on 2003-05-11 16:56:18 by jorgon

When the product you are selling is a compiler that uses an assembler/linker as a backend, your license DOES prohibit commercial use!
Posted on 2003-05-11 17:08:41 by msmith

Another point:

As the author of Golink, it is not prohibited for commercial use!
You can use any of the free "Go" tools to make programs for sale.
However, the licence does not permit you to try to sell the "Go" tools, or to distribute them with any program which is for sale. To do that would mean that you are making money out of a free program.

If someone uses any of the free "Go" tools to make a program for sale, how is that not "making money out of a free program"?

Most of the noteworthy GUI libraries such as FOX, wxWindows, FTLK, and others are licensed under the LGPL ( NOT GPL) so that that the restriction that you impose is not in play.

If you look at the wxWindows site, you will see that the prestige and standing of wxWindows is increased by its use as an add-in in many commercial packages. Ditto for FOX and FLTK.
Posted on 2003-05-11 17:21:59 by msmith

I had read the liscense agreement before trying it and I did not get the same impression that you got. First, any software you create with it is not covered by the agreement, just the actual tools themselves. I fully agree with Jeremy's sentiment here, free software should remain free, and if it requires a liscense agreement to enforce that then so be it. Your software and anything you make with it is yours, you can use it with a comercial package just not distribute it with GoTools included if you're selling it. My GoDLink program (though it is no longer necessary) was carefully designed to relay the copyright info back to the RadASM output window , that is the only requirement I had to fulfill as far as I could tell.
Posted on 2003-05-11 17:59:35 by donkey
Hi Donkey!

My real point here is that fasm has an unrestricted license and tying it to a linker which has restrictions means that the package as a whole is as restrictive as the most restrictive part (in this case: GoLink).

I mentioned in my second post that I am using an assembler as a "backend" to my compiler. If I cannot supply the backend with my compiler package, how will anyone be able to compile to an exe?

It would be prohibitive for a small company such as ours to license a "name brand" assembler/linker for distibution.

Without low cost licensing or non-restritive licensed products such as fasm, a product such as our would be stillborn.

We have looked everywhere for a GUI and assembler with reasonable licensing costs. NONE EXISTS.

In 2001, we approached the author of the FOX Toolkit on the basis that we would pay a royalty on each copy we included with our product in return for a degree of support. He was not interested. We subsequently paid many thousands of dollars to a C++ consultant for support on FOX.

Some years ago, Cygnus had the motto: "Making free software affordable". We learned the hard way what this meant.

Incidendally, we just attempted to license QT (for money, of course) and were denied the license because we would be "competing with Trolltech"! I have this in writing should anyone wish to see it.

Without the LGPL'ed and other unrestricted licensed products, the only compiler/development products you will see will be from the giants such as Microsoft and Borland, or the not-for-profit GPL'ed and similar products.
Posted on 2003-05-11 18:23:44 by msmith

Ah, I see, I had not realized that you wished to distribute it with a commercial package. In that case you are right, the liscense is too restrictive for you. I had originally only looked at GoLink because petailo had asked me if I could find a way of making it functional with FASM. After playing with it for I while I found it a very nice package. As I am a MASM user (as you know) I live with the most restrictive liscense available and this one was a breath of fresh air. But point taken :)
Posted on 2003-05-11 18:46:08 by donkey

I too am writing a compiler, and am using GoAsm and GoLink for the backend. Before starting, I contacted Mr. Gordon, and found him receptive to the idea and very reasonable. I have his email somewhere...

The gist of what he communicated to me is that I can -
1) USE his tools for free,
2) INCLUDE his tools in any distrubution of my free package.

If I distribute _his_ software and CHARGE for it, I need to pay him. If I only include a link to his software, allowing users to download his software, then I owe him nothing.

If I give away or sell _my_ software, I owe him nothing.

I think that is very reasonable, isn't it? If I give you something free, and you turn around and sell the same product to others, that is not right is it? You would be using something I own and gave you _freely_ to earn money for yourself. If I lend you my car, when you start using it for business purposes and making money off of it, you need to talk to me. That may not have been the intent of my generousity to you.

If I am not giving my work away, why should I expect him to give his away to make mine more marketable?

I know that XPB! BASIC is using GoAsm (and likely GoLink) for the backend. It is a commercial product. I assume that a reasonable agreement was made between Jeremy Gordan and the author of XPB! BASIC, as he could have chosen to use other products.

My 2 cents.

I would suggest, however, before starting ANY project that will involve distributing another's work, whether it be FASM, MASM, GoASM or anything else, you contact the legal owner of the software. It is only fair, courteous, and right.


Posted on 2003-05-12 02:17:35 by bushpilot
I know well that the think I am going to ask is beyond "limits" and certainly you have asked yourself in the past, but here I go:

What do you think of having a "flavor" of your linker for use and develop together with fasm and having the same characteristics of fasm?
+ 100% asm
+ opensource
+ fasm compilable

Some developements of this "flavor" of GoLink may help also your official version.

Best Regards,
Posted on 2003-05-12 04:11:33 by pelaillo
Here are two more include files for winmm and opengl32
Posted on 2003-05-14 10:45:15 by Vortex