Though I am waiting for my Vista system, I just began to wonder if MASM32 installs and runs on Vista?
I have had software vendors tell their re-writing applications, so as they run on Vista. Plus, I understand the VDM on Vista is a lot stricter to old software. But I always knew ML.exe to be one of the better behaved programs for DOS.
Any field reports?
Regards, P1 :8)
The current version won't due to DEP but the next version will not have that problem as I diagnosed what the problem was some time ago. I have the replacement binaries posted in the masm32 sub forum and at the moment about the only way it can be done would be to install it on XP or earlier, update the exe files with the DEP compatible ones then copy the entire directory tree across to a Vista box.
As it becoems more pressing I will make a SFX version that has the replacements done.
> But I always knew ML.exe to be one of the better behaved programs for DOS.
> Any field reports?
No, but I have 2 questions:
1. How do you get the idea that ML.exe is a DOS program?
2. I understand that advertising for such a bullsh*t like Vista is absolutely necessary, but why must it be the moderator of an ASM board who does this job?
:bg
I suggest that having to suffer Vista is a different phenomenon to actually supporting it. Many commercial programmers have to make the effort as some of their customer base will start using Vista sooner or later. If I remember correctly XP was a pig when it was first released and over time Microsoft fixed it so it was a more or less reliable version.
If they don't fix it they run the risk of it being an orphan like ME was. The other factor is there is little reason to develop later 32 bit OS versions as 64 bit hardware is starting to become available in reasonable numbers now. Unless they make Vista more compatible and usable, there is no reason to waste the money when both XP and win2000 work fine.
Quote from: japheth on May 25, 2007, 02:27:10 PM1. How do you get the idea that ML.exe is a DOS program?
Ok, my bad. I have never needed to look at this tool that closely. It runs in a batch file, does not mean it's a DOS program. It's a MZ PE, just like the ones I produce. Touché :8) In my defense, that's when I first used ML.exe in DOS. Assembly on one floppy(320/360K) with output going to another floppy on a 128KB 8088 at 5MHz. Humn, I need to update the help file on this old wet computer of mine.
Quote from: japheth on May 25, 2007, 02:27:10 PM2. I understand that advertising for such a bullsh*t like Vista is absolutely necessary, but why must it be the moderator of an ASM board who does this job?
I am a victim of M$ propaganda sold to corporate users. Seeing that the corporate users hold my leash and jerk it when I don't behave. I am left no other choice to heel or go run away.
As a ministry to other programmers who are caught in this war of wills as well.
Our Art is for every gallery of OSes. It's the enjoyment of our situation, to be creative with our craft.
What I find strange is, I know you have been caught in between what you want versus what they wanted. Who won?
Regards, P1 :8)
Quote from: hutch-- on May 25, 2007, 02:48:49 PMUnless they make Vista more compatible and usable, there is no reason to waste the money when both XP and win2000 work fine.
The day they stop supporting W2K, will be a sad day for me. Maybe I should start version lying tool for stuff loaded on other family Oses. i.e. My son has mp3 player software that only loads on WXP or better. We have W2K around the house. I just could not see why they would do that on shell 5.X code. W2K=5.0, WXP=5.1, W2K3=5.2
Quote from: hutch-- on May 25, 2007, 02:21:51 PMAs it becomes more pressing I will make a SFX version that has the replacements done.
I started on a msi version for you, but got distracted from it.
Is that something we wish to pursue?
Regards, P1 :8)
QuoteHow do you get the idea that ML.exe is a DOS program?
The ML.EXE that shipped with MASM 6.0b, and probably all 6.0 versions, is a DOS program. This was the first version of ML that I used. Here is what it displays when run with an empty command line:
Microsoft (R) Macro Assembler Version 6.00B
Copyright (C) Microsoft Corp 1981-1992. All rights reserved.
usage: ML [ options ] filelist [ /link linkoptions]
Run "ML /help" or "ML -?" for more info
And here is a dump of the first 256 bytes:
00860048 4D 5A DA 00 E9 01 A6 07 - 00 02 CC 12 FF FF AD 3D MZ.............=
00860058 00 22 B3 17 30 12 00 00 - 40 00 00 00 01 00 00 00 ."..0...@.......
00860068 02 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00860078 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00860088 74 02 FB 02 37 02 FB 02 - 22 02 FB 02 75 01 FB 02 t...7..."...u...
00860098 67 01 FB 02 41 01 FB 02 - 15 01 FB 02 AC 00 FB 02 g...A...........
008600A8 60 00 FB 02 3A 00 FB 02 - 10 03 FB 02 FF 02 FB 02 `...:...........
008600B8 B3 02 FB 02 13 02 D3 12 - 76 01 D3 12 24 01 D3 12 ........v...$...
008600C8 CD 00 D3 12 68 02 D3 12 - 1A 04 FB 02 09 04 FB 02 ....h...........
008600D8 F8 03 FB 02 CD 03 FB 02 - A2 03 FB 02 61 03 FB 02 ............a...
008600E8 49 03 FB 02 31 03 FB 02 - BE 05 FB 02 98 05 FB 02 I...1...........
008600F8 29 05 FB 02 EB 04 FB 02 - 8F 04 FB 02 7E 04 FB 02 )...........~...
00860108 4A 04 FB 02 3F 04 FB 02 - FE 07 FB 02 E3 07 FB 02 J...?...........
00860118 D1 07 FB 02 95 07 FB 02 - 6C 07 FB 02 50 07 FB 02 ........l...P...
00860128 19 07 FB 02 F0 06 FB 02 - CD 06 FB 02 C3 06 FB 02 ................
00860138 7E 06 FB 02 6C 06 FB 02 - 5C 06 FB 02 EC 05 FB 02 ~...l...\.......
Compare to the same for a later version 6.14:
00860048 4D 5A 90 00 03 00 00 00 - 04 00 00 00 FF FF 00 00 MZ..............
00860058 B8 00 00 00 00 00 00 00 - 40 00 00 00 00 00 00 00 ........@.......
00860068 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00860078 00 00 00 00 00 00 00 00 - 00 00 00 00 D8 00 00 00 ................
00860088 0E 1F BA 0E 00 B4 09 CD - 21 B8 01 4C CD 21 54 68 ........!..L.!Th
00860098 69 73 20 70 72 6F 67 72 - 61 6D 20 63 61 6E 6E 6F is program canno
008600A8 74 20 62 65 20 72 75 6E - 20 69 6E 20 44 4F 53 20 t be run in DOS
008600B8 6D 6F 64 65 2E 0D 0D 0A - 24 00 00 00 00 00 00 00 mode....$.......
008600C8 9B D2 5E 02 DF B3 30 51 - DF B3 30 51 DF B3 30 51 ..^...0Q..0Q..0Q
008600D8 DF B3 31 51 9F B3 30 51 - BD AC 23 51 DC B3 30 51 ..1Q..0Q..#Q..0Q
008600E8 37 AC 3B 51 DE B3 30 51 - 5C AF 3E 51 CB B3 30 51 7.;Q..0Q\.>Q..0Q
008600F8 DF B3 30 51 DC B3 30 51 - 37 AC 3A 51 42 B3 30 51 ..0Q..0Q7.:QB.0Q
00860108 52 69 63 68 DF B3 30 51 - 00 00 00 00 00 00 00 00 Rich..0Q........
00860118 00 00 00 00 00 00 00 00 - 50 45 00 00 4C 01 04 00 ........PE..L...
00860128 BF 2C 00 37 00 00 00 00 - 00 00 00 00 E0 00 0F 01 .,.7............
00860138 0B 01 06 00 00 10 04 00 - 00 E0 02 00 00 00 00 00 ................
I think from memory that the last true dos MZ version was 6.11d. I remember running a patch on it from Microsoft and it would not run in DOS any longer which I think was 6.12. Everything else from there up has so far been 32 bit PE files.
> The ML.EXE that shipped with MASM 6.0b, and probably all 6.0 versions, is a DOS program.
It's rather inevitable that older MASM versions were true DOS programs - since MASM existed long before PE was invented. But I bet that P1 does not use such an old version (which all suffer - at least - from the very annoying "line too long" bug).
The v6.11x versions were Phar Lab TNT binaries, that is, PE binaries being able to run in both Win32 and DOS.
My point was that it would be easy for someone who started with an early version to assume that ML was still a DOS program. I knew the later versions were not only because at some point I became curious and took the time to check.
I had seen the Phar Lap and TNT in version 6.11, but until now I didn't know what it meant.
I have a copy of masm 6.11 installed on my box and it certainly ran in 16 bit real dos with no dos extenders. I remember the very poor expanded memory in masm 6.11 but it was for the PWB, not the ML.EXE version supplied with masm 6.11. The version I am referring to is the last boxed version of MASM from Microsoft.
They did release a few weird and wonderful versions on the way through but the patches for ML of version 6.12 onwards were 32 bit PE files.
Quote from: japheth on May 26, 2007, 10:00:24 AMIt's rather inevitable that older MASM versions were true DOS programs - since MASM existed long before PE was invented. But I bet that P1 does not use such an old version (which all suffer - at least - from the very annoying "line too long" bug).
Your Right, I don't use the true DOS versions any more. Which was your point. I have buried around here, two versions before 5.0, 5.0 and the last retail version M$ sold as well 6.11. Unless, you have something else to point out here?
Michael is right as well, I got started on a DOS version. It was just an assumuption my part, that keep me at that level of retension of knowledge.
So even as experienced programmers, we need to stay current with our tools ( OSes are tools, as well. ), techniques and knowledge of what we do for others.
May others be so kind with your errors and faults, and be as humble to admit them.
Regards, P1 :8)
Quote from: japheth on May 26, 2007, 10:00:24 AM
The v6.11x versions were Phar Lab TNT binaries, that is, PE binaries being able to run in both Win32 and DOS.
True! ML.EXE versions 6.11 and 6.11d are both 32-bit PE executables. And they are both DOS 16-bit executables as well. In this case, the DOS stub program embedded in the beginning of ML's PE is actually a very useful program (when run from DOS that is!) Version 6.12 and beyond have useless (albeit tiny) DOS stub programs.
You can embed pretty much any DOS program you like into a PE file, but the DOS program must be built with the (undocumented)
/KNOWEAS linker option. This option modifies the resulting DOS MZ header to a format that the 32-bit linker will accept with its
/STUB option (i.e.
/KNOWEAS changes the MZ header byte offset to the relocation table to be 64).
Yes there are some of us who still have reason to run DOS on occasion. And for those of us that do, for some applications (command line utilities), it can be useful to write a
two-in-one program that runs in both 16 and 32-bit modes (compile both a 16-bit and 32-bit version, but embed the 16-bit version into the stub of the 32-bit one).
p.s. Hello all, I'm new here!
I am running MASM32 with all the latest updates on Vista Home Premium and it works fine. I just copied the MASM32 directory over from my XP system. I haven't extensively tested it but it's working fine. I downloaded the DEP update but I haven't needed it so far.
Thanks Greg,
That is useful to know as sooner or later I must do an upgraded version of masm32 for DEP and any of the later stuff that has been developed.
I have DEP set to "Turn on DEP for essential Windows programs and services only" which I believe is the default. It also says my processor supports hardware-based DEP.
...
I turned on DEP for all programs and services. MASM32 still works fine.
Just tested.
It installs fine on Vista Ultimate, out of the box settings (which is DEP enabled for 'essential windows services and programs').
From my experience, you run into problems with DEP only if you execute code in a memory location that's not marked as executable, in which case you need to use the PAGE_EXECUTE when alloc-ing memory.
I don't think the masm installer has anything to do with DEP; mostly self-modifying code, exe packers and the like run into these otherwise easy to solve problems.