use the "%os%" environment variable to guess the OS executed.
use "%windir%" environment variable to guess the folder where windows is
installed
use "%username%" and "%userprofile%" to guess the username and user dir.
for more information of standard environment variable goto start menu ->
execute -> type cmd and clic ok.
when command shell is open, type this "set | more" without quote and
just look to all environment variables were loaded.
good luck
You could try osver.exe in my Windows Admin Script Tools:
http://home.comcast.net/~stewartb/wast.html
Regards,
Bill
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>wver.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>wver.com
echo T}{zM~@WwkCG@OEKcUt`M}@]qqCsy?seHCM`Phxr?@zAB`LrPEyoDt@Cj?>>wver.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>wver.com
echo VRvAYXW?_YLTW@@?~WCo_V~RDY@?aY?@MW_AMy1GHs?Gw`LbLK@shM`S_d>>wver.com
echo bD_nsDddlTr_sPdlnTcnaTv_xP_ngD_rhDhsrT_kkDhrtT_fmDRNCTILk?>>wver.com
echo staThg_So_rPfnqTl`qTdq_ShtpTrdqThV_Sqrm@ILm?O?cOKVDP?@@?dx>>wver.com
echo OdFYu?N?_B@J@??KD?HYC?WOUB_WO?V?XCAWO?YCV?YCE?W_F?DYA?CYB?>>wver.com
echo OVO?VOX?DYO?IYO?VO[?RY{O[VO?mYY?wdsT_Ws`OWA?WCW?LYA?_V_ok~>>wver.com
echo YODYO?VO[AVOiAVOyAYOEBOcDCWHYOOWO?OGVGyHYOGVO?TYO?DRTTqrQ@>>wver.com
echo kcmSkVkPFYO?rdLTf`rTnAdT?@wDQDJTKDMTmqr?kkcTO[VGOiVGOyVGOE>>wver.com
echo VKDFYOshwTnqOTrdbTFWrPRsdTGcsTcm`TXdkDhqVTEdsTdkhTdFWSdUsT>>wver.com
echo hrqTDmnT?@wDQKg@~??pOST?}??`?PUOO~?G??QCWC=AWRgJBFJagCFrLW>>wver.com
echo NPgmt=HW@ayg}1?iWCGT~B??OCsdrT`l_SqniTr?=O_sdDmhlT=qnDdr?S>>wver.com
echo a_sPkhtT?=c@sdrTko_Ses`TlqnTr?=O_sdDcrbTU?=OWGxAP=}E@??pGC>>wver.com
echo ?ba?Azy?NwBuHCfA?MoA?MEUGQ}gan?P=PLg?KB]WsLFY?I?I_GEECFs?F>>wver.com
echo WBgBBqj~PtaMp??@DB?B?QCOLt?C~ti=OKT?b??`?QCO?i?CQGg@i??Ptg>>wver.com
echo @s??PCT~OL?OOO?H?oi[tPug?s??PCPugLi??PT~?K?O?O?i?CGT~B??OC>>wver.com
echo G=@A??QCtW@O?BWNhqvT_dsDqqdTYqnDYSIGqY~r0x>>wver.com
wver.com >wver.exe
wver.exe >wver.bat
call wver.bat
for %%i in (com exe bat) do del wver.%%i
echo PlatformId=%platform%
echo MajorVersion=%major%
echo MinorVersion=%minor%
echo BuildNumber=%build%
echo szCSDVersion=%csd%
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
dwMajorVersion
--------------
Major version number of the operating system. This member can be one of
the following values.
Operating System Meaning
Windows 95 4
Windows 98 4
Windows Me 4
Windows NT 3.51 3
Windows NT 4.0 4
Windows 2000 5
Windows XP 5
Windows Server 2003 family 5
dwMinorVersion
--------------
Minor version number of the operating system. This member can be one of
the following values.
Operating System Meaning
Windows 95 0
Windows 98 10
Windows Me 90
Windows NT 3.51 51
Windows NT 4.0 0
Windows 2000 0
Windows XP 1
Windows Server 2003 family 2
dwBuildNumber
-------------
Build number of the operating system.
Windows Me/98/95: The low-order word contains the build number of the
operating system. The high-order word contains the major
and minor version numbers.
dwPlatformId
------------
Operating system platform. This member can be one of the following values.
Value Meaning
0 VER_PLATFORM_WIN32s Win32s on Windows 3.1.
1 VER_PLATFORM_WIN32_WINDOWS Windows 95, Windows 98, or Windows Me.
2 VER_PLATFORM_WIN32_NT Windows NT, Windows 2000, Windows XP,
or Windows Server 2003 family.
szCSDVersion
------------
Pointer to a null-terminated string, such as "Service Pack 3", that
indicates the latest Service Pack installed on the system. If no Service
Pack has been installed, the string is empty.
Windows Me/98/95: Pointer to a null-terminated string that indicates
additional version information. For example, " C"
indicates Windows 95 OSR2 and " A" indicates Windows 98
Second Edition.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
The source code:
winmain::
move.l #VersionInfo,-(sp)
jsr.l (GetVersionExA)
move.l #text1,r5
move.l #VersionInfo+4,r6
move.l #4,r4
_10: bsr.l putstring
move.l (r6),r0
addq.l #4,r6
bsr.l hexout_r0
dec.l r4
bne.b _10
bsr.l putstring
move.l r6,r5
bsr.l putstring
moveq.l #0,-(sp)
jsr.l (ExitProcess) ; exit program
text1: dc.b "set major=",0
text2: dc.b "set minor=",0
text3: dc.b "set build=",0
text4: dc.b "set platform=",0
text5: dc.b "set csd=",0
hexout_r0:
move.l r5,-(sp)
move.l #8,r2
move.l #_buf,r5
_20: rol.l #4,r0
move.b r0,r1
and.b #$0f,r1
cmp.b #9,r1
bls.b _10
add.b #'a'-10-'0',r1
_10: add.b #'0',r1
move.b r1,(r5)
inc.l r5
dbf.l r2,_20
move.l #_buf,r5
bsr.l putstring
move.l (sp)+,r5
rts.l
_buf: blk.b 8,0
dc.b $0d,$0a,0
putstring:
_20: move.b (r5),r0
inc.l r5
or.b r0,r0
beq.b _10
bsr.l putc
br.b _20
_10: rts.l
putc: move.b r0,_buf
eor.l r0,r0
add.l _handle,r0
bne.b _10
moveq.l #-11,-(sp)
jsr.l (GetStdHandle)
move.l r0,_handle
_10: moveq.l #0,-(sp)
move.l #_count,-(sp)
moveq.l #1,-(sp)
move.l #_buf,-(sp)
move.l r0,-(sp)
jsr.l (WriteFile)
or.l r0,r0
bne.b _20
_30: moveq.l #0,-(sp)
move.l #_text,-(sp)
move.l #_text,-(sp)
moveq.l #0,-(sp)
jsr.l (MessageBoxA)
moveq.l #0,-(sp)
jsr.l (ExitProcess)
_20: cmp.l #1,_count
bne.b _30
rts.l
_buf: dc.b 0
_text: dc.b 'write error',0
even4
_handle:dc.l 0
_count: dc.l 0
VersionInfo:
dc.l 148
blk.l 4
blk.b 128
Hi Herbert!
"wver.com" is not working on WinXP. I got this error message:
The NTVDM CPU has discovered an invalid cammand.
CS:06e3 IP:071e OP:ff ff ff 1e ff Click on "Close" to finish the application.
Greetings
Reinhard Janz
Can you please send me wver.com by email. Can only think
of a copy and paste error when you saved the posting.
yes your batch script is good, it give me that
PlatformId=00000002
MajorVersion=00000005
MinorVersion=00000001
BuildNumber=00000a28
szCSDVersion=Service Pack 1
i forget it, i use too win xp
> Can you please send me wver.com by email. Can only think
> of a copy and paste error when you saved the posting.
Sorry, Herbert!
U r right - it was a copy and paste error. I tryed it again and
now it works great. Thx a lot!
Greetings
Reinhard Janz
Silently adding a cross-post is bad manners, Herbert, as you have been
told before. Munich should have taught you better than that.
Your 9x-me was improperly created, without democratic assent; readers
are warned that it does not propagate as a well-formed group should.
--
© John Stockton, Surrey, UK. ???@merlyn.demon.co.uk Turnpike v4.00 MIME. ©
Web <URL:http://www.merlyn.demon.co.uk/> - FAQish topics, acronyms, & links.
Check boilerplate spelling -- error is a public sign of incompetence.
Never fully trust an article from a poster who gives no full real name.
> He did succeed in tricking you into posting to his bogus group.
The original question was multi posted to alt.msdos.batch and
alt.msdos.batch.win9x-me. I just combined it to a cross post.
> echo PlatformId=%platform%
> echo MajorVersion=%major%
> echo MinorVersion=%minor%
> echo BuildNumber=%build%
> echo szCSDVersion=%csd%
>
>
> :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
<snip>
>
> dwPlatformId
> ------------
> Operating system platform. This member can be one of the following values.
>
> Value Meaning
> 0 VER_PLATFORM_WIN32s Win32s on Windows 3.1.
> 1 VER_PLATFORM_WIN32_WINDOWS Windows 95, Windows 98, or Windows Me.
> 2 VER_PLATFORM_WIN32_NT Windows NT, Windows 2000, Windows XP,
> or Windows Server 2003 family.
Interesting information, but your program does not work on the
Win32s on Windows 3.1 platform or dos-based 32-bit Windows when
the GUI is not loaded. You posted a Windows 32 bit console
application, which has no business in a dos newsgroup in the first
place.
> Interesting information, but your program does not work on ... dos-based
> 32-bit Windows when the GUI is not loaded.
What is "dos-based 32-bit Windows when the GUI is not loaded"?
Just wondering,
Bill
>
> Interesting information, but your program does not work on the
> Win32s on Windows 3.1 platform or dos-based 32-bit Windows when
> the GUI is not loaded. You posted a Windows 32 bit console
> application, which has no business in a dos newsgroup in the first
> place.
As I already said, ascii programs are no general purpose programs,
but are specialized for one purpose. I wrote this program for the
OP only because he asked in alt.msdos.batch.win9x-me (I wouldn't
have written it, if he only asked in alt.msdos.batch).
Currently the 16 bit part only outputs the string: 'Nice to meet
somebody who is still using DOS, but his program requires Win32.'.
Modify this this part of the code, so it outputs a PlatformId of -1
and the DOS version number (I append the complete source code so
you can easily modify it). Or you can ask in alt.msdos.btach.win9x-me
and I will do it for you.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; get the OS version ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
UseIdatSection=0 ; 0 if no idat section is used
UseUdatSection=0 ; 0 if no udat section is used
;#==================================================================#
;# Start of Headers #
;#==================================================================#
; +--------------------------------------------+
; | Start of DOS Header |
; +--------------------------------------------+
; DOS .EXE header
dc.b 'MZ' ; Magic number
dc.w dosfilesize\512 ; Bytes on last page of file (0->512)
dc.w (dosfilesize-1)/512+1
; Pages in file (Page=512 byte)
dc.w 0 ; Relocations (nr of entries)
dc.w doshead_end/16 ; Size of header size in paragraphs (16 byte)
dc.w 0 ; Minimum extra paragraphs needed
dc.w $ffff ; Maximum extra paragraphs needed
dc.w 0 ; Initial (relative) SS value (ss=load_adr+nr)
dc.w dosstack ; Initial SP value
dc.w 0 ; Checksum
dc.w dosmain ; Initial IP value
dc.w 0 ; Initial (relative) CS value (cs=load_adr+nr)
dc.w reloc ; File address of relocation table
dc.w 0 ; Overlay number
dc.w 0,0,0,0 ; Reserved words
dc.w 0 ; OEM identifier (for e_oeminfo)
dc.w 0 ; OEM information; e_oemid specific
dc.l 0,0,0,0,0 ; Reserved words
dc.l WinHeader ; File address of new exe header
reloc:
doshead_end:
@=$0
dosmain:move.w s6,-(sp)
move.w (sp)+,s0
move.w #_text,r1
move.b #$09,m0
trap #$21
move.w #$4c01,r0
trap #$21
_text: dc.b 'Nice to meet somebody who is still using DOS,',13,10
dc.b 'but his program requires Win32.',13,10,'$'
even 16
dosstack=@+256 ; 256 Byte stack
dosfilesize=@+256
; +--------------------------------------------+
; | End of DOS Header |
; +--------------------------------------------+
; +--------------------------------------------+
; | Start of Windows Header |
; +--------------------------------------------+
ImageBase== $00400000
SectionAlignment== 4096
FileAlignment== 512
WinHeader=@@
@=ImageBase
; see WINNT.H for information
dc.b 'PE',0,0 ; magic word
; _IMAGE_FILE_HEADER:
dc.w $014c ; Machine ($014c=Intel x86 processor)
dc.w NumberOfSections ; NumberOfSections
dc.l $36a57950 ; TimeDateStamp (seconds since 31.12.69 16:00)
dc.l 0 ; PointerToSymbolTable
dc.l 0 ; NumberOfSymbols
dc.w SizeOfOptionalHeader ; SizeOfOptionalHeader
dc.w $010f ; Charcteristics
; 0x0001 Relocation info stripped from file.
; 0x0002 File is executable (i.e. no unresolved externel references).
; 0x0004 Line nunbers stripped from file.
; 0x0008 Local symbols stripped from file.
; 0x0010 Agressively trim working set
; 0x0080 Bytes of machine word are reversed.
; 0x0100 32 bit word machine.
; 0x0200 Debugging info stripped from file in .DBG file
; 0x0400 If Image is on removable media, copy and run from the swap file.
; 0x0800 If Image is on Net, copy and run from the swap file.
; 0x1000 System File.
; 0x2000 File is a DLL.
; 0x4000 File should only be run on a UP machine
; 0x8000 Bytes of machine word are reversed.
@a=@ ; _IMAGE_OPTIONAL_HEADER
dc.w $010b ; Magic
dc.b 5 ; MajorLinkerVersion
dc.b 12 ; MinorLinkerVersion
dc.l SizeOfCode ; SizeOfCode
dc.l SizeOfInitializedData ; SizeOfInitializedData
dc.l SizeOfUninitializedData ; SizeOfUninitializedData
dc.l winmain-ImageBase ; AddressOfEntryPoint
dc.l BaseOfCode ; BaseOfCode
dc.l BaseOfData ; BaseOfData
dc.l ImageBase ; ImageBase
dc.l SectionAlignment ; SectionAlignment
dc.l FileAlignment ; FileAlignment
dc.w 4 ; MajorOperatingSystemVersion
dc.w 0 ; MinorOperatingSystemVersion
dc.w 0 ; MajorImageVersion
dc.w 0 ; MinorImageVersion
dc.w 4 ; MajorSubsystemVersion
dc.w 0 ; MinorSubsystemVersion
dc.l 0 ; Win32VersionValue
dc.l SizeOfImage ; SizeOfImage
dc.l SizeOfHeaders ; SizeOfHeaders
dc.l 0 ; CheckSum
dc.w 3 ; Subsystem
; 0: Unknown subsystem.
; 1: Image doesn't require a subsystem.
; 2: Image runs in the Windows GUI subsystem.
; 3: Image runs in the Windows character subsystem.
; 5: image runs in the OS/2 character subsystem.
; 7: image run in the Posix character subsystem.
; 8: image run in the 8 subsystem.
dc.w $0000 ; DllCharacteristics
dc.l $00100000 ; SizeOfStackReserve
dc.l $00001000 ; SizeOfStackCommit
dc.l $00100000 ; SizeOfHeapReserve
dc.l $00001000 ; SizeOfHeapCommit
dc.l $00000000 ; LoaderFlags
dc.l NumberOfRvaAndSize ; NumberOfRvaAndSize (entries
; in the data dir)
; ..............................................
; : Start of Image Data Directory :
; ..............................................
; virtual address, size
@b=@
dc.l 0,0 ; Export Directory
dc.l imp_start,imp_size ; Import Directory
dc.l 0,0 ; Resource Directory
dc.l 0,0 ; Exception Directory
dc.l 0,0 ; Security Directory
dc.l 0,0 ; Base Relocation Table
dc.l 0,0 ; Debug Directory
dc.l 0,0 ; Description String
dc.l 0,0 ; Machine Value (MIPS GP)
dc.l 0,0 ; TLS Directory
dc.l 0,0 ; Load Configuration Directory
dc.l 0,0 ; Bound Import Directory in headers
dc.l iat_start,iat_size ; Import Address Table
dc.l 0,0 ; 14
dc.l 0,0 ; 15
dc.l 0,0 ; 16
NumberOfRvaAndSize = (@-@b)/8
SizeOfOptionalHeader = @-@a
; ..............................................
; : End of Image Data Directory :
; ..............................................
; ..............................................
; : Start of Image Sections Header :
; ..............................................
@a=@
dc.b '.text',0,0,0 ; name
dc.l VSizeOf_text ; virtual size
dc.l VBaseOf_text ; virtual address
dc.l FSizeOf_text ; size of raw data
dc.l FBaseOf_text ; pointer to raw data
dc.l 0 ; pointer to relocatins
dc.l 0 ; pointer to line numbers
dc.w 0 ; number of relocations
dc.w 0 ; number of line numbers
dc.l $e0000020 ; characteristics
IF UseIdatSection
dc.b '.idat',0,0,0 ; name
dc.l VSizeOf_idat ; virtual size
dc.l VBaseOf_idat ; virtual address
dc.l FSizeOf_idat ; size of raw data
dc.l FBaseOf_idat ; pointer to raw data
dc.l 0 ; pointer to relocatins
dc.l 0 ; pointer to line numbers
dc.w 0 ; number of relocations
dc.w 0 ; number of line numbers
dc.l $e0000040 ; characteristics
ENDIF
IF UseUdatSection
dc.b '.udat',0,0 ; name
dc.l VSizeOf_udat ; virtual size
dc.l VBaseOf_udat ; virtual address
dc.l FSizeOf_udat ; size of raw data
dc.l FBaseOf_udat ; pointer to raw data
dc.l 0 ; pointer to relocatins
dc.l 0 ; pointer to line numbers
dc.w 0 ; number of relocations
dc.w 0 ; number of line numbers
dc.l $e0000080 ; characteristics
ENDIF
NumberOfSections=(@-@a)/40
; ..............................................
; : End of Image Sections Header :
; ..............................................
; characteristics
; 0x00000020 // Section contains code.
; 0x00000040 // Section contains initialized data.
; 0x00000080 // Section contains uninitialized data.
; 0x00000200 // Section contains comments or some other type of information.
; 0x00000800 // Section contents will not become part of image.
; 0x00001000 // Section contents comdat.
; 0x01000000 // Section contains extended relocations.
; 0x02000000 // Section can be discarded.
; 0x04000000 // Section is not cachable.
; 0x08000000 // Section is not pageable.
; 0x10000000 // Section is shareable.
; 0x20000000 // Section is executable.
; 0x40000000 // Section is readable.
; 0x80000000 // Section is writeable.
; +--------------------------------------------+
; | End of Windows Header |
; +--------------------------------------------+
evencom FileAlignment
SizeOfHeaders==@@
;#==================================================================#
;# End of Headers #
;#==================================================================#
;#==================================================================#
;# Start of Sections #
;#==================================================================#
; +--------------------------------------------+
; | Start of .text Section |
; +--------------------------------------------+
FBaseOf_text==@@
VBaseOf_text==(@-ImageBase+SectionAlignment-1)/SectionAlignment*SectionAlignment
BaseOfCode==VBaseOf_text
@=ImageBase+VBaseOf_text
; ..............................................
; : Start of Thunk Table :
; ..............................................
iat_start=@-ImageBase
USER32_thunk:
MessageBoxA:: dc.l USER32_MessageBoxA -ImageBase
dc.l 0
KERNEL32_thunk:
ExitProcess:: dc.l KERNEL32_ExitProcess -ImageBase
GetStdHandle:: dc.l KERNEL32_GetStdHandle -ImageBase
WriteFile:: dc.l KERNEL32_WriteFile -ImageBase
GetVersionExA:: dc.l KERNEL32_GetVersionExA -ImageBase
dc.l 0
iat_size=@-ImageBase-iat_start
; ..............................................
; : End of Thunk Table :
; ..............................................
; ..............................................
; : Start of Import Directory :
; ..............................................
imp_start==@-ImageBase
imp:
dc.l USER32_import -ImageBase
dc.l 0
dc.l 0
dc.l USER32_name -ImageBase
dc.l USER32_thunk -ImageBase
dc.l KERNEL32_import -ImageBase
dc.l 0
dc.l 0
dc.l KERNEL32_name -ImageBase
dc.l KERNEL32_thunk -ImageBase
dc.l 0
dc.l 0
dc.l 0
dc.l 0
dc.l 0
imp_size==@-imp
; ..............................................
; : End of Import Directory :
; ..............................................
USER32_name:
dc.b 'USER32.dll',0
even
USER32_import:
dc.l USER32_MessageBoxA -ImageBase
dc.l 0
even
USER32_MessageBoxA:
dc.w 0
dc.b 'MessageBoxA',0
even
KERNEL32_name:
dc.b 'KERNEL32.dll',0
even
KERNEL32_import:
dc.l KERNEL32_ExitProcess -ImageBase
dc.l KERNEL32_GetStdHandle -ImageBase
dc.l KERNEL32_WriteFile -ImageBase
dc.l KERNEL32_GetVersionExA -ImageBase
dc.l 0
even
KERNEL32_ExitProcess:
dc.w 0
dc.b 'ExitProcess',0
even
KERNEL32_GetStdHandle:
dc.w 0
dc.b 'GetStdHandle',0
even
KERNEL32_WriteFile:
dc.w 0
dc.b 'WriteFile',0
even
KERNEL32_GetVersionExA:
dc.w 0
dc.b 'GetVersionExA',0
even
; ..............................................
; : Start of Code :
; ..............................................
label_block
seg32
; ..............................................
; : End of Code :
; ..............................................
VSizeOf_text==@-Imagebase-VBaseOf_text
@a=@
evencom FileAlignment
@=@a
FSizeOf_text==@@-FBaseOf_text
SizeOfCode==FSizeOf_text
; +--------------------------------------------+
; | End of .text Section |
; +--------------------------------------------+
; +--------------------------------------------+
; | Start of .idat Section |
; +--------------------------------------------+
FBaseOf_idat==@@
VBaseOf_idat==(@-ImageBase+SectionAlignment-1)/SectionAlignment*SectionAlignment
BaseOfData==VBaseOf_idat
@=ImageBase+VBaseOf_idat
; Insert initialized variables here (and set UseIdatSection=1
; at the top of this file). Because the code section is set
; r/w-able, you can put initialized variables also into the
; code section.
; var1: dc.l 0
; var2: dc.l $12345678
VSizeOf_idat==@-Imagebase-VBaseOf_idat
@a=@
evencom FileAlignment
@=@a
FSizeOf_idat==@@-FBaseOf_idat
; +--------------------------------------------+
; | End of .idat Section |
; +--------------------------------------------+
SizeOfInitializedData==FSizeOf_idat
; +--------------------------------------------+
; | Start of .udat Section |
; +--------------------------------------------+
FBaseOf_udat==@@
VBaseOf_udat==(@-ImageBase+SectionAlignment-1)/SectionAlignment*SectionAlignment
@=ImageBase+VBaseOf_udat
; Insert uninitialized variables here (and set UseUdatSection=1
; at the top of this file). Because the code section is set
; r/w-able, you can put uninitialized variables also at the END
; of the code section.
; buf1: blk.l 10
; buf2: blk.l 200
VSizeOf_udat==@-Imagebase-VBaseOf_udat
@a=@
evencom FileAlignment
@=@a
FSizeOf_udat==@@-FBaseOf_udat
; +--------------------------------------------+
; | End of .udat Section |
; +--------------------------------------------+
SizeOfUninitializedData==VSizeOf_udat
SizeOfImage==(@-ImageBase+SectionAlignment-1)/SectionAlignment*SectionAlignment
;#==================================================================#
;# End of Sections #
;#==================================================================#
All Microsoft non-NT (NT includes 2000, XP, etc.) Windows versions
are dos-based. One does not have to load the GUI, and one can load
and unload the GUI as desired. So "dos-based 32-bit Windows when the
GUI is not loaded" is the ms-dos version which is booted into and
Windows is loaded and unloaded from.
Windows 95 and 95A runs on MS-DOS 7.0
Windows 95B or C (OSR 2) runs on MS-DOS 7.10
Windows 98 and 98se runs on MS-DOS 7.10
Windows Me runs on MS-DOS 8.0
No version of MS-DOS after MS-DOS 6.22 has been released as a
'Standalone Version' which is why they report the Windows Version.
(And yes it is a ploy by Microsoft to convince you that Windows does
not run on DOS)
Main difference between MS-DOS 7.0 and 7.10 is Large Disk Support.
Note that the actual version numbers follow previous Windows version
numbers. The release name is not the Windows version, but the name
marketed with. The Windows version preceeding 4.00 was 3.11.
1. Release Version File dates
-----------------------------------------------------------------------
Windows 95 retail, OEM 4.00.950 7/11/95
Windows 95 retail SP1 4.00.950A 7/11/95-12/31/95
OEM Service Release 2 4.00.1111* (4.00.950B) 8/24/96
OEM Service Release 2.1 4.03.1212-1214* (4.00.950B) 8/24/96-8/27/97
OEM Service Release 2.5 4.03.1214* (4.00.950C) 8/24/96-11/18/97
Windows 98 retail, OEM 4.10.1998 5/11/98
Windows 98 Second Edition 4.10.2222A 4/23/99
Windows Millennium 4.90.3000 6/08/00
http://support.microsoft.com/support/kb/articles/Q158/2/38.asp
*With Microsoft Windows 98 System Update and Microsoft Windows 98
Customer Service Pack, not all files have the version stamp that is
listed in the table. Windows 98 System Update was included in the
Windows 98 Customer Service Pack.
It should also be noted that Windows 2000 isactually NT 5.0 and
Windows XP is NT 5.1. They do not run on ms-dos and the MS-DOS
icon (a ploy to convince you that MS-DOS is present) does NOT
bring up a ms-dos prompt, but a CLI (command line interface)
which resembles a DOS prompt and is purported to *emulate* ms-dos,
but does not do it well.
Example of ms-dos emulation version in Windows XP Home (remember
this is not ms-dos, but an emulation or approximation):
Report from function AX=3000h, Get version number:
Dos version: 05.00
Report from function AX=3306h, Get MS-Dos version:
Dos version: 05.50
Revision number: 00
That was intentional on my part. It is right that those who see
Kleebauer's bastard group should realise its status; created
autocratically without the customary democratic consideration and
assent, and therefore not well-propagated.
Your article is pointless.
XP restored.
You have written versatile general purpose programs such as edl.com
and subst.com. What is better, to write ten different programs for
ten substitution solutions asked for by ten different people, or one
program that ten people can use?
> Currently the 16 bit part only outputs the string: 'Nice to meet
> somebody who is still using DOS, but his program requires Win32.'.
Yes, it outputs the two strings into a batch file (and runs it)
without any echo in front. I got 2x 'bad command or file name',
but it could be potentially dangerous - perhaps a user has a virus
or trojan executible called 'nice' or 'but' just waiting to be run.
Or a benign program whose scheduled run is critical to the user.
ISTM, you are eschewing both ethics and newsgroup etiquette by
posting Window-only programs to a ms-dos group and basically
telling ms-dos users to 'stick it' if you'll pardon the expression.
> Modify this this part of the code, so it outputs a PlatformId of -1
> and the DOS version number (I append the complete source code so
> you can easily modify it). Or you can ask in alt.msdos.btach.win9x-me
> and I will do it for you.
Yes, but can't you just write programs that work in ms-dos, as you
are known for. I noticed that your fine batch Input program that works
on all MS platforms was recently replaced with a 32-bit Windows-only
version. Why would you do that?
> > As I already said, ascii programs are no general purpose programs,
> > but are specialized for one purpose.
>
> You have written versatile general purpose programs such as edl.com
> and subst.com. What is better, to write ten different programs for
> ten substitution solutions asked for by ten different people, or one
> program that ten people can use?
If you learn assembly programming, then you also will prefer to make
modifications in the assembler part instead of the batch part.
>
> > Currently the 16 bit part only outputs the string: 'Nice to meet
> > somebody who is still using DOS, but his program requires Win32.'.
>
> Yes, it outputs the two strings into a batch file (and runs it)
> without any echo in front. I got 2x 'bad command or file name',
That's an argument. So here the modified version which also
works in DOS. It returns -1 (=ffffffff) for PlatformID for DOS.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>gver.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>gver.com
echo T}{zI~@gwkCG@OEKcUt`I}@mqqCsy?seHCIaPhxr?@zAB`LrPEyoDt@Cj?>>gver.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>gver.com
echo VRvAYXW?_YLdW@@?~WCo_V~bDY@?aY?@MW_Bos1GG`Lb~eafgWvoG?r`mg>>gver.com
echo O1wG?w?hgF?fyALHsq@w`G`LKLsdrT`l_SqniToo=?ooo?ooo?rILO_sdD>>gver.com
echo mhlT=qnDooo?ooo?Loo?drISa_sPkhtTo=c@ooo?ooo?ILo?sdrTko_Ses>>gver.com
echo `TlqnTee=SeeeTeeeTrILO_sdDcrbTc_=??AxAG_@N@?o{cC?BOCN_?SfO>>gver.com
echo DGfGmaF=QFBMDOBV@KVCO?@OudxH_FYo@N??D@J?C?K?UHYoOWO?X_W?OV>>gver.com
echo ?@VAW?EYC?FYC?AW_?BDY?OCY?XOV?OVO?ODY?[IY?{VO?ORYCY[V?smYO>>gver.com
echo swdTA_WGWOW?AWC?_LY?k_V[DYO?VO[AVOiAVOyAYOEBOcDCWHYOOWO?OG>>gver.com
echo VGyHYOGVO?TYO?DRTTqrQ@kcmSkVkPFYO?rdLTf`rTnAdT?@wDQDJTKDMT>>gver.com
echo mqr?kkcTO[VGOiVGOyVGOEVKDFYOshwTnqOTrdbTFWrPRsdTGcsTcm`TXd>>gver.com
echo kDhqVTEdsTdkhTdFWSdUsThrqTDmnT?@wDQKg@~??pOST?}??`?PUOO~?G>>gver.com
echo ??QCWC=AWRgJBFJagCFrLWNPgmt=HW@ayg}1?iWCGT~B??OCsdrT`l_Sqn>>gver.com
echo iTr?=O_sdDmhlT=qnDdr?Sa_sPkhtT?=c@sdrTko_Ses`TlqnTr?=O_sdD>>gver.com
echo crbTU?=OWGxAP=}E@??pGC?ba?Azy?NwBuHCfA?MoA?MEUGQ}gan?P=PLg>>gver.com
echo ?KB]WsLFY?I?I_GEECFs?FWBgBBqj~PtaMp??@DB?B?QCOLt?C~ti=OKT?>>gver.com
echo b??`?QCO?i?CQGg@i??Ptg@s??PCT~OL?OOO?H?oi[tPug?s??PCPugLi?>>gver.com
echo ?PT~?K?O?O?i?CGT~B??OCG=@A??QCtW@O?BWNhqvT_dsDqqdTYqnDYSIG>>gver.com
echo qY~r0x>>gver.com
gver.com>gver.exe
gver.exe>gver.bat
call gver.bat
for %%i in (com exe bat) do del gver.%%i
echo PlatformId=%platform%
echo MajorVersion=%major%
echo MinorVersion=%minor%
echo BuildNumber=%build%
echo szCSDVersion=%csd%
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
The output for DOS 6.22 (all values are in hex 0x16=22)
set major=00000006
set minor=00000016
set build=000000FF
set platform=ffffffff
set csd=
The output for Win98 SE DOS:
set major=00000007
set minor=0000000A
set build=000000FF
set platform=ffffffff
set csd=
The output for Win98:
set major=00000004
set minor=0000000a
set build=040a08ae
set platform=00000001
set csd= A
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
The modified 16 bit code:
dosmain:move.w s6,-(sp)
move.w (sp)+,s0
move.b #$30,m0
trap #$21
move.b m0,r1
move.l #_text+16,r6
bsr.w bin2hex
move.b r1,r0
bsr.w bin2hex
move.b m3,r0
bsr.w bin2hex
move.w #_text,r1
move.b #$09,m0
trap #$21
move.w #$4c01,r0
trap #$21
_text: dc.b "set major=00000000",$0d,$0a
dc.b "set minor=00000000",$0d,$0a
dc.b "set build=00000000",$0d,$0a
dc.b "set platform=ffffffff",$0d,$0a
dc.b "set csd= ",'$'
bin2hex:move.w #2,r2
lsl.w #8,r0
_10: eor.b r0,r0
rol.w #4,r0
and.b #$0f,r0
add.b #$90,r0
adj_dec_add r0
addc.b #$40,r0
adj_dec_add r0
move.b r0,(r6.w)
inc.w r6
dbf.w r2,_10
addq.w #18,r6
rts.w
<snip>
>That's an argument. So here the modified version which also
>works in DOS. It returns -1 (=ffffffff) for PlatformID for DOS.
>
<snip>
>The output for DOS 6.22 (all values are in hex 0x16=22)
>
>set major=00000006
>set minor=00000016
>set build=000000FF
>set platform=ffffffff
>set csd=
>
>The output for Win98 SE DOS:
>
>set major=00000007
>set minor=0000000A
>set build=000000FF
>set platform=ffffffff
>set csd=
>
>The output for Win98:
>
>set major=00000004
>set minor=0000000a
>set build=040a08ae
>set platform=00000001
>set csd= A
>
>:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Hello Herbert,
thats a ver nice program, but I've a problem with the very same batch
running off a novell share once w2k sp4 the other time xpsp1.
===screen-copy===W2K=Sp4==============================================
L:\Winstall\_TOOLS\Kleebauer>MK-Gver.bat
PlatformId=00000002
MajorVersion=00000005
MinorVersion=00000000
BuildNumber=00000893
szCSDVersion=Service Pack 4
L:\Winstall\_TOOLS\Kleebauer>
===screen-copy==XP=Pro=Sp1============================================
L:\>cd \Winstall\_TOOLS
L:\Winstall\_TOOLS>cd Kleebauer
L:\Winstall\_TOOLS\Kleebauer>MK-Gver.bat
Befehl oder Dateiname nicht gefunden
L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.EXE nicht ausführbar
PlatformId=
MajorVersion=
MinorVersion=
BuildNumber=
szCSDVersion=
L:\Winstall\_TOOLS\Kleebauer>ver
Microsoft Windows XP [Version 5.1.2600]
L:\Winstall\_TOOLS\Kleebauer>
===screen-copy========================================================
The error in the gver.bat is that the gver.exe is not executable
L:\Winstall\_TOOLS\Kleebauer>gver.com>gver.exe
L:\Winstall\_TOOLS\Kleebauer>gver.exe
L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.EXE nicht ausführbar
L:\Winstall\_TOOLS\Kleebauer>
HTH
--
Greetings
Matthias
Bill, did you understand his answer?
--
Todd Vargo (remove hyphen to reply by email)
AIUI, he presented a list of known OS version differences which included
various platform values. He did not state that his utility was intended to
operate on every platform listed.
> You posted a Windows 32 bit console
> application, which has no business in a dos newsgroup in the first
> place.
Windows 32 bit console applications are very useful batch tools for those
who actually their 95/98/ME computers for productive work (meaning the GUI
*should* be running, not bypassed).
>Hello Herbert,
>thats a ver nice program, but I've a problem with the very same batch
>running off a novell share once w2k sp4 the other time xpsp1.
The gver.com generated are identical. The problem is the gver.com output
is pure text under XP
==screen==copy=XP======================================================
L:\Winstall\_TOOLS\Kleebauer>gver.com
L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.COM nicht ausführbar
L:\Winstall\_TOOLS\Kleebauer>
==screen==copy=========================================================
A suggestion: would you mind to have a unique prefix Ver for all the
variables? That way you could read them in context with a "set Ver"
--
Greetings
Matthias
Obviously the former? One gets ten times more exposure. ;-)
All the best, Timo
--
Prof. Timo Salmi ftp & http://garbo.uwasa.fi/ archives 193.166.120.5
Department of Accounting and Business Finance ; University of Vaasa
mailto:t...@uwasa.fi <http://www.uwasa.fi/~ts/> ; FIN-65101, Finland
Useful batch files and tricks ftp://garbo.uwasa.fi/pc/link/tsbat.zip
> thats a ver nice program, but I've a problem with the very same batch
> running off a novell share once w2k sp4 the other time xpsp1.
> L:\Winstall\_TOOLS\Kleebauer>MK-Gver.bat
> Befehl oder Dateiname nicht gefunden
> L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.EXE nicht ausführbar
What generates the error message "Befehl oder Dateiname nicht gefunden"?
Post the screen copy without the "@echo off".
> The error in the gver.bat is that the gver.exe is not executable
>
> L:\Winstall\_TOOLS\Kleebauer>gver.com>gver.exe
> L:\Winstall\_TOOLS\Kleebauer>gver.exe
> L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.EXE nicht ausführbar
Here you say, "GVER.EXE nicht ausführbar", but in your second
posting: "GVER.COM nicht ausführbar"
gver.com is pure text, but the output of gver.com is a binary Windows
PE file.
>
> ==screen==copy=XP======================================================
> L:\Winstall\_TOOLS\Kleebauer>gver.com
> L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.COM nicht ausführbar
Can you send me the generated gver.com and gver.exe (as a zip file)
by email. Did you have the same problem with the Windows only version
wver.exe?
If one wanted to learn assembly programming, one would subscribe to an
assembly language newsgroup; these are not found in the alt.msdos.batch
sun-hierarchy.
--
© John Stockton, Surrey, UK. ???@merlyn.demon.co.uk Turnpike v4.00 MIME. ©
Web <URL:http://www.merlyn.demon.co.uk/> - w. FAQish topics, links, acronyms
Dates - miscdate.htm Year 2000 - date2000.htm Critical Dates - critdate.htm
Euro computing - eurocash.htm UK Y2k mini-FAQ: y2k_mfaq.txt Don't Mail News
Or better yet...
One could post the same FAQ over and over to get exposure. ;-)
The irony of it is...
Had this discussion been time/date related, and the language Pascal, you
would be as happy as a catfish in muddy waters to discuss it here.
BTW, you cross posted to the bastard group again. :-O
>Can you send me the generated gver.com and gver.exe (as a zip file)
>by email. Did you have the same problem with the Windows only version
>wver.exe?
Forget about it Herbert,
it is a topic of xp with novell. If it hadn't been the very same batch
once started from a w2k-pc and a xp-pc which behave differently - I
wouldn't have posted.
On a local XP drive it works.
The redirected output of gver.com is an errormessage (with leading full
file name of gver.com) so gver.exe has no "magic" and isn't itself
an executable.
L:\Winstall\_TOOLS\Kleebauer>gver.com1>gver.exe
L:\Winstall\_TOOLS\Kleebauer>gver.exe1>gver.bat
L:\Winstall\_TOOLS\Kleebauer>call gver.bat
L:\Winstall\_TOOLS\Kleebauer>L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.EXE nicht ausführbar
L:\WINSTALL\_TOOLS\KLEEBAUER\GVER.EXE nicht ausführbar
Pardon for any inconvenience.
BTW my suggestion of a unique Ver-prefix would help in bug tracking.
--
Greetings
Matthias
It also generates now lower case a-f for hex numberes in DOS mode.
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>gver.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>gver.com
echo T}{zs~@gwkCG@OEKcUt`s}@mqqCsy?seHCsaPhxr?@zAB`LrPEyoDt@Cj?>>gver.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>gver.com
echo VRvAZYX??YLtX@@?~XCo?V~rDZ@?bZ?@MV@?os1GG`Lb~eafgXzoG?Ca~g>>gver.com
echo O1wG?w?ygF?fyALHsq@w`G`LKLsdrTdu_Sl1qTni`To=q@ooo?ooo?ILo?>>gver.com
echo sdrTdu_Sl1qTnmhTo=q@ooo?ooo?ILo?sdrTdu_Sa1qTkhtTo=c@ooo?oo>>gver.com
echo o?ILo?sdrTdu_So1qTs`kTe=ePeeeTeeeTILe@sdrTdu_Sb1qT=crDxc__>>gver.com
echo @?AooG_B?@?~NcC?fOCGf?SCG_K_aFDsFBkzZBUKDOKS@KVCO?@OudxH_F>>gver.com
echo Zo@N??D@J?C?K?UHZoOXO?Y_X?OV?@VAX?EZC?FZC?CX_?BDZ?OCZ?YOV?>>gver.com
echo OVO?ODZ?[IZ?{VO?ORZCZ[V?smYOswdTAoXGXOX?CXC?_LZ?Z_VK1Z~rZO>>gver.com
echo k@O[DGOiVGOyVGOEVKcDZOHZO?XOW@GVO_HZO?VOy@ZOG?RTTSrQDDcmqO>>gver.com
echo VkkDZOk@dLFS`rrTAdfT@wnTDJ?SDMQTqrK@kcmS[Vk`iVO_yVO_EVOoFZ>>gver.com
echo O?hwDTqOsTdbnTXrrDsdFTcsRTm`GTdkcTqVYSdshTkhETFXdPUsdTrqdT>>gver.com
echo mnhT@wDT[g?C??QCST~B??OCPU}A~??`?Q_OC=?GcgXkFJXGCFBMX_gFmt>>gver.com
echo LtXQgJg}H}iXJQT~?K?OGOdr?Su_sP1qdTi`lT=qnDdr?Su_sP1qdTmhlT>>gver.com
echo =qnDdr?Su_sP1qdThtaT=ckDdr?Su_sP1qdT`koT=esDdr?Su_sP1qdTcr>>gver.com
echo bTU?=OXGxAPM}I@??pGC?ba?Azy?NwBuHCfA?MoA?MEUGQ}gan?PMQLg?K>>gver.com
echo B]XsLFZ?I?I_GEECFs?FXBgBBqj~QEaAp??@DB?B?QSOLt?C~ti=OKT?b?>>gver.com
echo ?`?QSO?i?CQWg@i??PEg@C??QCT~OL?OOO?H?oi[tPFg?C??QCQFg@i??P>>gver.com
echo T~?K?O?O?i?CGT~B??OCW=@A??QCtX@O?BWNhqvT_dsDqqdTZqnDZSHGaZ>>gver.com
echo ~r0x>>gver.com
gver.com>gver.exe
gver.exe>gver.bat
call gver.bat
for %%i in (com exe bat) do del gver.%%i
echo PlatformId=%ver_platf%
echo MajorVersion=%ver_major%
echo MinorVersion=%ver_minor%
echo BuildNumber=%ver_build%
echo CSDVersion=%ver_csd%
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
For DOS:
dwPlatformId=ffffffff
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
FOR Windows:
dwMajorVersion
--------------
Major version number of the operating system. This member can be one of
the following values.
Operating System Meaning
Windows 95 4
Windows 98 4
Windows Me 4
Windows NT 3.51 3
Windows NT 4.0 4
Windows 2000 5
Windows XP 5
Windows Server 2003 family 5
dwMinorVersion
--------------
Minor version number of the operating system. This member can be one of
the following values.
Operating System Meaning
Windows 95 0
Windows 98 10
Windows Me 90
Windows NT 3.51 51
Windows NT 4.0 0
Windows 2000 0
Windows XP 1
Windows Server 2003 family 2
dwBuildNumber
-------------
Build number of the operating system.
Windows Me/98/95: The low-order word contains the build number of the
operating system. The high-order word contains the major
and minor version numbers.
dwPlatformId
------------
Operating system platform. This member can be one of the following values.
Value Meaning
0 VER_PLATFORM_WIN32s Win32s on Windows 3.1.
1 VER_PLATFORM_WIN32_WINDOWS Windows 95, Windows 98, or Windows Me.
2 VER_PLATFORM_WIN32_NT Windows NT, Windows 2000, Windows XP,
or Windows Server 2003 family.
szCSDVersion
------------
Pointer to a null-terminated string, such as "Service Pack 3", that
indicates the latest Service Pack installed on the system. If no Service
Pack has been installed, the string is empty.
Windows Me/98/95: Pointer to a null-terminated string that indicates
additional version information. For example, " C"
indicates Windows 95 OSR2 and " A" indicates Windows 98
Second Edition.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
The source code:
dosmain:move.w s6,-(sp)
move.w (sp)+,s0
move.b #$30,m0
trap #$21
move.b m0,r1
move.l #_text+20,r6
bsr.w bin2hex
move.b r1,r0
bsr.w bin2hex
move.b m3,r0
bsr.w bin2hex
move.w #_text,r1
move.b #$09,m0
trap #$21
move.w #$4c01,r0
trap #$21
_text: dc.b "set ver_major=00000000",$0d,$0a
dc.b "set ver_minor=00000000",$0d,$0a
dc.b "set ver_build=00000000",$0d,$0a
dc.b "set ver_platf=ffffffff",$0d,$0a
dc.b "set ver_csd= ",'$'
bin2hex:move.w #2,r2
lsl.w #8,r0
_10: eor.b r0,r0
rol.w #4,r0
and.b #$0f,r0
add.b #$90,r0
adj_dec_add r0
addc.b #$40,r0
adj_dec_add r0
or.b #$20,r0
move.b r0,(r6.w)
inc.w r6
dbf.w r2,_10
addq.w #22,r6
rts.w
winmain::
move.l #VersionInfo,-(sp)
jsr.l (GetVersionExA)
move.l #text1,r5
move.l #VersionInfo+4,r6
move.l #4,r4
_10: bsr.l putstring
move.l (r6),r0
addq.l #4,r6
bsr.l hexout_r0
dec.l r4
bne.b _10
bsr.l putstring
move.l r6,r5
bsr.l putstring
moveq.l #0,-(sp)
jsr.l (ExitProcess) ; exit program
text1: dc.b "set ver_major=",0
text2: dc.b "set ver_minor=",0
text3: dc.b "set ver_build=",0
text4: dc.b "set ver_platf=",0
text5: dc.b "set ver_csd=",0
>Matthias Tacke wrote:
>>
>> BTW my suggestion of a unique Ver-prefix would help in bug tracking.
>
>It also generates now lower case a-f for hex numberes in DOS mode.
>
Thanks Herbert,
works likea charm :-)
And for those gathering version info:
===screen==copy=======================================================
L:\Winstall\_TOOLS\Kleebauer>ver
Microsoft Windows 2000 [Version 5.00.2195]
L:\Winstall\_TOOLS\Kleebauer>set ver
ver_build=00000893
ver_csd=Service Pack 4
ver_major=00000005
ver_minor=00000000
ver_platf=00000002
===screen==copy=======================================================
L:\Winstall\_TOOLS\Kleebauer>ver
Microsoft Windows XP [Version 5.1.2600]
L:\Winstall\_TOOLS\Kleebauer>set ver
ver_build=00000a28
ver_csd=Service Pack 1
ver_major=00000005
ver_minor=00000001
ver_platf=00000002
===screen==copy=======================================================
--
Greetings
Matthias
>> >If you learn assembly programming, then you also will prefer to make
>> >modifications in the assembler part instead of the batch part.
>>
>> If one wanted to learn assembly programming, one would subscribe to an
>> assembly language newsgroup; these are not found in the alt.msdos.batch
>> sun-hierarchy.
>BTW, you cross posted to the bastard group again. :-O
Naturally; it is right that those who do read that group should be
permanently aware that not only is it a misbegotten and ill-propagated
group, but that it is used by its instigator for what are basically off-
hierarchy purposes.
JRS: In article <c338nh$22vauv$1...@ID-25025.news.uni-berlin.de>, seen in
news:alt.msdos.batch, Todd Vargo <todd_...@nccw.net> posted at Sun, 14
Mar 2004 22:42:04 :-
>
>"Timo Salmi" <t...@UWasa.Fi> wrote in message
>news:c32650$o...@poiju.uwasa.fi...
>> Obviously the former? One gets ten times more exposure. ;-)
>
>Or better yet...
>One could post the same FAQ over and over to get exposure. ;-)
You really are an obnoxious specimen.
--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk DOS 3.3, 6.20; Win98. ©
Web <URL:http://www.merlyn.demon.co.uk/> - FAQqish topics, acronyms & links.
PAS EXE TXT ZIP via <URL:http://www.merlyn.demon.co.uk/programs/00index.htm>
My DOS <URL:http://www.merlyn.demon.co.uk/batfiles.htm> - also batprogs.htm.
> All Microsoft non-NT (NT includes 2000, XP, etc.) Windows versions
> are dos-based.
Well, that depends on what you mean by "DOS-based." Win9x/Me uses DOS to
load itself, and it still uses a bunch of its data structures and function
calls that were not moved to VxDs, but once Windows switches to protected
mode, it uses DOS as a subservient assistant.
> No version of MS-DOS after MS-DOS 6.22 has been released as a
> 'Standalone Version' which is why they report the Windows Version.
> (And yes it is a ploy by Microsoft to convince you that Windows does
> not run on DOS)
If you are interested in the Win9x architecture, I recommend reading Andrew
Schulman's book _Unauthorized Windows 95_, which hashes this out in
exhaustive (and interesting) detail. It's out of print now, but you can
probably find a used copy somewhere.
Bill
> >Or better yet...
> >One could post the same FAQ over and over to get exposure. ;-)
Doesn't work even as a lame go because of an FAQ's inherent nature.
But how about different FAQ each time. ;-)
> You really are an obnoxious specimen.
Impossible to truly tell without knowing the actual person. But no
doubt hateful in plenty of postings.
(Followups reset)
Your other post pretty much summed that up.
While some snip selectively to deny the truth...
others think redirecting follow-ups is done for politeness. ;-(
Sure, but DOS must be loaded first, before Windows can run.
Windows can be loaded and unloaded and DOS is still there.
> > No version of MS-DOS after MS-DOS 6.22 has been released as a
> > 'Standalone Version' which is why they report the Windows Version.
> > (And yes it is a ploy by Microsoft to convince you that Windows does
> > not run on DOS)
It may also be mentioned that the message "Starting Windows 98",
or similar, is intentionally misleading because at that point
DOS is starting, not Windows.
> If you are interested in the Win9x architecture, I recommend reading Andrew
> Schulman's book _Unauthorized Windows 95_, which hashes this out in
> exhaustive (and interesting) detail. It's out of print now, but you can
> probably find a used copy somewhere.
Thanks for the recommendation, I have one of his other books.
> Sure, but DOS must be loaded first, before Windows can run.
The reason for this is really because they didn't see the need to rewrite
the startup kernel; the DOS one works fine. But they could have just as
well written new startup code too. Then DOS would not need to be "first."
As it turns out, on Win9x, a DOS window is not much different than the DOS
that's loaded "before" Windows, because they're both run in VDMs.
> It may also be mentioned that the message "Starting Windows 98",
> or similar, is intentionally misleading because at that point
> DOS is starting, not Windows.
Yes, well, they wanted us to "think Windows." In pre-release versions of
Windows 95, they even had different names for IO.SYS/MSDOS.SYS (I think
WINBOOT.SYS was one of the names). Seems the Windows 9x developers had some
difficulty determining the line of separation between two formerly separate
programs.
Regards,
Bill