Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-12-03 Thread Michael Devore

At 11:02 PM 11/28/2005 -0800, Blair Campbell wrote:


I would personally really appreciate the ASM in FreeDOS HELP being a
test case, as this assembler won't even compile with Arrow Assembler
or the Watcom Assembler (which both use older MASM/TASM syntax,
afaik).


The only ASM file I found in FreeDOS HELP was conio.asm.  It substantially 
converted with Nomyso 2.0 as-is.  There remained three problem areas: local 
labels in macros, improper bracketing in certain circumstances, and DGROUP 
group listing.


I fixed the local label in macro situation, and the DGROUP problem.  The 
bracketing was made a bit more robust.  In doing so, I discovered an error 
in the original Nomyso 2.0 for EMM386 which fortunately was minor: the 
_pause macro which isn't used in normal build had a memory reference error, 
and the very seldom used SB option code translated one line 
improperly.  Neither problem should affect people who would develop with a 
translated EMM386, but they're fixed now for next Nomyso.


The bracket problem highlighted one of the fundamental reasons you can 
never fully automate the translation process for all MASM/TASM source files 
.With the line:


_ScreenArea EQU DWord Ptr _ScreenOffset

translated to:

%DEFINE _ScreenArea DWord [_ScreenOffset]

things will still fail under NASM for lines like:

les di, _ScreenArea

Why?  Because NASM won't take a DWORD attribute for a 'les' argument, even 
though it IS a DWORD being used.  In fact, I tried different combinations 
of DWORD, WORD, NEAR, and FAR, and NASM won't take any of them.  I think 
that's a bug in NASM, but I can't figure out what it really thinks it 
should take as an attribute, so who knows.


The three people following to this point might wonder why Nomyso doesn't 
just eliminate the 'DWord' in the $DEFINE statement and eliminate the 
problem.  Well, you can't automatically do that because the DWORD would be 
necessary in some cases where you might use the %define'd _ScreenArea, such as:


mov eax,_ScreenArea

However, because I am insane, I added the ability to fully automate the 
conio.asm conversion by adding a -x option to Nomyso, allowing 
post-processing lines with s// regular expressions.  Consequently, with the 
current (unreleased) Nomyso:


 ./nomyso/pl -x'/(%define\s+.*\s)dword\s+(.*)/$1$2/i' conio.asm nconio.asm

conio.asm is fully translated and NASM ready following the problematic 
DWord purge by that demented 'x' option.  NASM -O99 -f obj nconio.asm is happy.


I can't say whether the translated conio.asm actually works along with all 
its C source, but it does assemble without errors.  If you want the latest 
Nomyso immediately for converting conio.asm, let me know.  Otherwise I'm 
going to wait and see if the ATAPICD translation needs any non-major 
changes to Nomyso before releasing a new public version.





---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-12-03 Thread Bernd Blaauw

Michael Devore schreef:

At 11:02 PM 11/28/2005 -0800, Blair Campbell wrote:


I would personally really appreciate the ASM in FreeDOS HELP being a
test case, as this assembler won't even compile with Arrow Assembler
or the Watcom Assembler (which both use older MASM/TASM syntax,
afaik).

Another victim / testcase could be UMBPCI, as it's written in TASM.
Either the 1995 version, or Uwe Sieber's current one
(sources only available on request)

Bernd



---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-12-03 Thread Michael Devore

At 01:27 PM 12/3/2005 -0600, I wrote:

The three people following to this point might wonder why Nomyso doesn't 
just eliminate the 'DWord' in the $DEFINE statement and eliminate the 
problem.  Well, you can't automatically do that because the DWORD would be 
necessary in some cases where you might use the %define'd _ScreenArea, such as:


mov eax,_ScreenArea


Correction.  The 'mov eax,_ScreenArea' instruction would work without the 
DWORD attribute because the data size is known through the register size.


Other instructions such as 'push _ScreenArea' would not work without the 
DWORD attribute because NASM doesn't know the size of data to push without it.





---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-12-01 Thread Gerry Hickman

Blair Campbell wrote:


Speaking of bugfixes, a person on FreeDOS IRC has mentioned many times
that the latest versions of HIMEM/EMM386 won't work with certain hard
drives, but will work with others.  AFAIR, he also says that NOVDS
does nothing to change this.


Sorry, but mentioning it on IRC many times with zero technical 
background is NOT the way to get these things working. This person needs 
to post on here with exact FDCONFIG.SYS, controller model/firware, 
hard-drive model, and definition of won't work. For a start we need to 
know whether they're talking about hard drives or controllers?


What we do know is this:

1. HIMEM is rock solid with a huge range of ATA/SCSI/SATA controllers 
and just about any make of hard drive.


2. EMM386 with SCSI controllers and VDS enabled is completely unusable 
and should never be tried outside the test lab.


3. EMM386 used with SCSI without VDS appears to work, but no one would 
trust it in a business production environment, but for testing and home 
PCs it seems fine.


4. EMM386 with IDE/ATA is probably fine, and anyway if the machine has 
IDE/ATA it's probably not a very important machine.


5. EMM386 with SATA - I've never tested this.

If you have mission critical machines, they'll probably have SCSI and in 
that case I'd recommend HIMEM with UMBPCI. I've tested this on a huge 
range of hardware, servers, clients, SCSI, ATA, SATA and I've not seen a 
single problem. It also gets round some strange issues you sometimes see 
when the prog don't like prot-mode. One I can think of is Partition 
Magic under DOS which does not like EMM386 to be loaded, complaining 
there's only 32Mb of RAM because of it.


--
Gerry Hickman (London UK)


---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-12-01 Thread Michael Devore

At 07:15 PM 12/1/2005 +, Gerry Hickman wrote:


What we do know is this:

2. EMM386 with SCSI controllers and VDS enabled is completely unusable and 
should never be tried outside the test lab.


What?  Completely untrue.  More like 2.  EMM386 with SCSI and VDS works on 
all tested systems, but unverified reports are that there are problems with 
some SCSI setups.


3. EMM386 used with SCSI without VDS appears to work, but no one would 
trust it in a business production environment, but for testing and home 
PCs it seems fine.


Nonsense.  I could make the same claim about trusting DOS itself in a 
business production environment because of its lack of operating system 
protection.


I realize you personally have had some problems with EMM386 that cannot be 
duplicated elsewhere, but I would appreciate you not posting things these 
claims.  They are inaccurate and needlessly damaging to proper 
distribution, use, and testing of EMM386 by endusers.


By the way, EMM386 can always give a system more upper memory than UMBPCI.




---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-11-29 Thread Bart Oldeman

On Mon, 28 Nov 2005, Blair Campbell wrote:


PS:  If the C is ever to be compiled with Watcom C, as Bernd
suggested, the global functions in the asm would need to have a _ in
front instead of behind, as this is (for some weird reason) the way
OpenWatcom does things.


I think you have this the wrong way around.

The reason is not so weird, as it avoids severe bugs interfacing. The _ is 
put the other way because the calling convention is different, so just 
changing the _ isn't enough, you also need to convert stack to register 
parameter passing.


If you want a _ in front with OW, and stack calling conventions, like 
Turbo C, all you need to do is to decorate the function with _cdecl in the

C or H file.

Bart


---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-11-29 Thread Michael Devore

At 11:02 PM 11/28/2005 -0800, Blair Campbell wrote:


Speaking of bugfixes, a person on FreeDOS IRC has mentioned many times
that the latest versions of HIMEM/EMM386 won't work with certain hard
drives, but will work with others.  AFAIR, he also says that NOVDS
does nothing to change this.


Possibly one of the SCSI drivers, but without a test machine to see what's 
in conflict, nothing I can do.  All the SCSI drive machines I've been able 
to test with now work with EMM386.


Also, I've found some people allow too many memory areas in upper memory 
and trash BIOS drivers.  Either they I= include too much, or X=TEST can't 
catch quite everything.  Best way to determine if upper memory conflict is 
present is to temporarily X= the entire upper memory range and see if the 
problems persist or go away.  Then narrow down the range which needs to be 
excluded.



BTW, with NASM, does optimizing EMM386 or HIMEM for newer CPUs result
in smaller object files?


That would be a coding instruction-based optimization, rather than an 
assembler style based optimization.  I don't think there is all that much 
above a 386 instruction level which would help HIMEM/EMM386, plus you 
either ruin 386 compatibility or you get into CPU versioning of the 
programs, which sounds horribly messy.





---
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


[Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-11-28 Thread Michael Devore
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!
http://ads.osdn.com/?ad_id=7637alloc_id=16865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] EMM386 2.08/Nomyso 2.0 Available

2005-11-28 Thread Blair Campbell
 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

Speaking of bugfixes, a person on FreeDOS IRC has mentioned many times
that the latest versions of HIMEM/EMM386 won't work with certain hard
drives, but will work with others.  AFAIR, he also says that NOVDS
does nothing to change this.

 .  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.

I would personally really appreciate the ASM in FreeDOS HELP being a
test case, as this assembler won't even compile with Arrow Assembler
or the Watcom Assembler (which both use older MASM/TASM syntax,
afaik).

BTW, with NASM, does optimizing EMM386 or HIMEM for newer CPUs result
in smaller object files?

PS:  If the C is ever to be compiled with Watcom C, as Bernd
suggested, the global functions in the asm would need to have a _ in
front instead of behind, as this is (for some weird reason) the way
OpenWatcom does things.  To get other ASM/C projects to compile with
OpenWatcom, I have changed any instances of _function in the asm to
_function_, and then used defines in the C source code to append a _
to the opposite side of the function.  Just a tidbit.


---
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!
http://ads.osdn.com/?ad_idv37alloc_id865op=click
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user