Personally I would like to read your comments.
Here are a few of my frustrations.
1: Console window
Both Goasm and Golink are assembled as console apps according to the documentation. Both terminate by creating by its own console window which is most probably used to display error or success messages. However their appearance on the screen is so brief (a few ms) that it is impossible to view those messages. It should have been easy to add a few more instruction to keep that console window open until the user presses a key before terminating the programs. Why force the user to open his own console window to view those important messages when the console window has already been created.
(Another solution which is not mentioned in the documentation is to add the PAUSE instruction at the end of each batch file.)
2: Square brackets
When I had a look at NASM many, many, many years ago, it was forcing the use of square brackets around a memory variable to mean its content and, without brackets, to mean its memory address. In Goasm, using a memory variable without brackets has no use except to generate an error message. You still have to decorate it with some other prefix (OFFSET or ADDR) to get its address. Why force the use of brackets to get the variable`s value? In basic algebra, a+b means the addition of the
value of variable "a" and the
value of variable "b".
I thus totally disagree with the main reason for the Goasm choice, i.e. "So when looking at assembler code, without knowing the syntax of the assembler concerned, you can never be really sure what MOV EAX,lParam does." The primary person to look at that code is the programmer himself and he had better be familiar with the syntax.
If the same reasoning had been used for other "novelties" in Goasm, they might never have seen the light of day, never being really sure of what they accomplish without knowing the syntax.
3: Jumps, direction, short vs near
The programmer is assumed to be familiar with the number of hex opcode bytes generated by each instruction whenever he specifies a forward jump as short. Might as well code every forward jump as near to avoid possible error messages.
4: Labels
Unique, re-usable, scoped, unscoped, ... ; looks like TYPE settings in C.
All these allowed variants of labels may have their utility on occasion but may lead to more confusion for the programmer, specially with the re-usable ones. And, for somebody else looking at the source code without knowing the syntax, he might never be really sure what JNZ XYZ does after seeing that label a few times already before and after this instruction.
I suspect you are running Windows 8.1 now, an update where they brought back the Start button.
This computer was purchased last May before the advent of Windows8.1. Unless MS included Windows8.1 as one of its updates (which I doubt), I would still have the original version. My Windows edition is still shown as Windows8.