Uploaded to ftp://ftp.devoresoftware.com/downloads/emm386 are the files emmx208.zip, EMM386/HIMEM mostly executable package (EXEs compressed via mutant UPX), and emms208.zip, EMM386/HIMEM mostly source package. Nomyso version 2.0 was uploaded to ftp://ftp.devoresoftware.com/downloads/nomyso named nomyso20.zip. nomyso is the newly chosen subdirectory for all Nomyso versions.

Version 2.08 of EMM386 is strictly a compatibility release to help ease transition for Microsoft EMM386 setups, increasing the number of identical options allowed in both EMM386 versions. Specifically, EMM386 will now accept NOHI and NOMOVEXBDA without complaint, although these two options are no-op's. That is, the two option do not change behavior on the part of FreeDOS EMM386 because it never performs the actions these options inhibit. In addition, MIN=### is accepted as a synonym for the EMM=### option because, since the EMS/XMS pool-sharing feature was implemented, FreeDOS and Microsoft EMM386 act the same for the two options. Also, a few cosmetic source code cleanups were made to EMM386.ASM for better NASM-conversion via Nomyso.

Nomyso has grown considerably from version 1.0 to 2.0 and has moved from semi-toy to useful program status. Nomyso version 2.0 converts EMM386.ASM source to assemble under NASM. Although Nomyso will not automatically convert many MASM/TASM programs, it now stands a decent chance of converting significant parts of a lot of the programs out there, depending on their style and complexity.

I anticipate that Version 2.08 of EMM386 is the final non-bugfix release I will create (bugfix versions will continue, as necessary). I've done all the new design and enhancements I want to do, or think are necessary. The ability to assemble and test with NASM may expand the pool of potential developers, although any such changes should still be discussed with -- and need be approved by -- the HIMEM/EMM386 maintainer(s).

For my part, on the FreeDOS-related front, I will likely continue work on Nomyso. There is even a faint chance I will someday document advanced HIMEM and EMM386 options and behavior, or heck, maybe clean up that really lame Wikipedia Encyclopedia entry for FreeDOS.

The few minor source changes made to EMM386.ASM and NASM-specific notes follow:

- EMM386 was sloppy with its case in 6-8 source lines, a fact that was masked by TASM ignoring variable case. NASM is case-sensitive and complained.

- NASM does not support PUBLIC/GLOBAL declarations after the variable declaration, so two PUBLIC declarations were moved.

- One routine labelled 'pause' was a problem because pause is a recently added CPU opcode (who knew?). Also a macro generated labels of INT1 and INT3, which are consider special CPU opcodes. Changes were made to avoid creating labels which matched valid CPU opcodes.

- Although limited macro conversion support is present in Nomyso v2.0, passing a hexadecimal value as a beginning value was causing problems and would have required me to extensively rewrite the macro converter to insert multiple lines and %ifnum's for a mere four source lines in EMM386.ASM. So I got lazy and changed the hexadecimal values to decimal values instead.

Note that NASM is slightly less efficient than TASM when generating object code so there will be a slight increase in the EMM386 binary size, although the increase was well under 1%. In fact, NASM is better than TASM at one type of optimization, but not enough to overcome other misses.

Also note that it turns out that with the more complex EMM386 source, NASM mirrors the past problems with HIMEM for five, six, and seven passes. Only with eight passes, i.e. NASM -O8 -f OBJ EMM386.ASM, does the OBJ generate properly. To forestall future problems with ever more complex programs, I strongly recommend just using -O99, as is commonly found in NASM builds. 99 passes should be enough, and NASM will stop at the last pass which makes no changes, so it's doubtful anything near that many will actually occur.

More information on Nomyso is available at www.devoresoftware.com/nomyso . If any of you have suggestions for an open source application written in MASM or TASM which could use an automatic conversion to NASM, let me know and I'll consider making it the test case for Nomyso version 2.5 or 3.0.

This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
Freedos-user mailing list

Reply via email to