Member No.: 1579
Joined: 16-October 05
I've been using WinAsm studio for a couple of days now, and it sure is nice.
Now, I'm using it to develop NBP (PXE's Network Boot Programs). When assembled and linked, thoses things end up as a flat binary file, something like a .COM file that would start executing at 0x00 instead of 0x100. Or like a .SYS or .BIN file, for that matter.
To develop this, I use OptLink, that is able to link such files, as well as to do many other wonderful things that few other linkers can do. Optlink has the nicest features set I know of, can generate 16-bit as well as 32-bit executables, COFF and OMF, DOS, NE and PE .exes, can consolidate multiple segments, can give useful diagnostics when something is wrong about the object code it's fed with, etc...
Anyway, OptLink was originally designed to be command-line compatible with the 16-bit MS Linker, that didn't have an /OUT or a /LIBPATH option, but that took positionnal file names on the command line instead. Unfortunately, MS changed this in their 32-bit linkers to use the OUT and LIBPATH switches, and WinAsm studio now generates both of those, something that doesn't cut it with Optlink.
I have looked at the Add-in facility, but I don't see much API that would allow me to simply intercept the creation of the @*.war file to fix it on the fly. I have also noticed that the FASM support plug-in has a "batch file" facility", but it is limited to a single object file name.
The 10c question is thus:
Is there any way to do what I would like to do, i.e. write an Add-In that could intercept WinAsm studio before file "whatever.war" is written to disk, and manipulate the data buffer before it goes out to disk?
I have the brute force solution of writing a utility that I would call link.exe and that would take control, open the file, translate the parms and then launch Optlink, but an add-in looks cleaner.
Any solution to this one?
I hope some folks around here remember the late and missed OptASM. It was two orders of magnitude better, faster and smarter than the MASM we had back then, and managed to be 150% compatible. It could even emulate various MASM bugs for project compatibility, something that Microsoft didn't do for MASM: MASM was notorious for breaking project builds whenever MS came out with a new version... Programs that used to assemble with Vn typically didn't assemble anymore under Vn+1.
Optlink came from the same author as OptASM, Steve Russell (SLR Systems).
Optlink was sold to Symantec, and finally bought by Digital Mars when Symantec gave up and sold their development tools. I presume OptASM was sold to Symantec too (since it disappeared at exactly the same time), but Symantec never upgraded it for 32-bit support and MASM 6 compatibility, nor even released it under their brand name.
Now as for Optlink, the folks at Digital Mars still sell and support OptLink as part as their excellent (and very cheap) software development tools suite.
Last but not least, Optlink can also be downloaded for free from Digital Mars.