The statement Test PROGRAM Format=PE, Subsystem=GUI, WIDTH=64, Entry=START was parsed differently than its author intended.ar18 wrote: ↑03 Sep 2018 13:12 Thank you. Already done. Now onto the next problem:
;===================================================================================== HEADER
EUROASM CPU=X64, AMD=ON
Test PROGRAM Format=PE, Subsystem=GUI, WIDTH=64, Entry=START
INCLUDE winabi.htm, wins.htm, winsgui.htm, fastcall.htm, cpuext.htm, cpuext64.htm
Gives the following errors:
I0010 EuroAssembler version 20180804 started.
I0020 Current directory is "E:\Archives\0~~\Experimental".
I0070 Assembling global option file "E:\Archives\0~~l\euroasm.ini".
I0170 Assembling local option file "euroasm.ini".
I0180 Assembling source file "Test.asm".
I0270 Assembling source "Test".
I0310 Assembling source pass 1.
W3740 Unknown instruction modifier "Subsystem=". Ignored. "Test.asm"{3}
W3740 Unknown instruction modifier "WIDTH=". Ignored. "Test.asm"{3}
W3740 Unknown instruction modifier "Entry=". Ignored. "Test.asm"{3}
E6101 Expression "PROGRAM " is followed by unexpected character "F". "Test.asm"{3}
Also, skelet64.htm has two copies of INVOKE winsgui.htm in the header.
When the statement starts with a valid machine instruction/pseudoinstruction/macroinstruction, StmParse thinks that this statement has no label, and treats the recognized instruction (Test) as operation field. Remedy is simple: avoid symbol|proc|program names which collide with existing instructions, or terminate the name with a colon: Test: PROGRAM Format=PE, Subsystem=GUI, WIDTH=64, Entry=START
Ad double inclusion of "winsgui.htm" in skelet64:
you are right, the 2nd INCLUDE shouldn't name it (unless we'd used INCLUDE1 instead of INCLUDE).
The weird thing is that it assembles without error, though. Putting %DISPLAY Files in front of ENDPROGRAM skelet64 divulged that the file is in fact loaded only once. I'll have a look at this later.
BTW I0010 EuroAssembler version 20180804 is obsolete, see https://euroassembler.eu/download/