VOGONS

Common searches


First post, by ProDigit

User metadata
Rank Newbie
Rank
Newbie

Hi all!

Wondering if DOS4GW.exe is still used in dosbox?
Too bad 64 bit operating systems have no backwards compatibility with 16bit programs.

Anyone has a list of possible options for DOS4GW?
Like, can certain memory addresses, extensions, configurations or performance be modified by adding something to the dos4gw command?

Reply 1 of 13, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

DOSBox runs DOS programs. DOS4GW is a DOS program. Therefore...

Your second paragraph makes no sense.

How To Ask Questions The Smart Way
Make your games work offline

Reply 2 of 13, by digger

User metadata
Rank Oldbie
Rank
Oldbie
DosFreak wrote:

Your second paragraph makes no sense.

That was actually not a crazy question. A DOS extender does all sorts of stuff that advanced users might want to tweak.

DOS32A for instance is a drop-in replacement for DOS/4GW and can optionally be configured with an environment variable, as documented here: https://dos32a.narechk.net/manual/html/user/4.htm

Last edited by digger on 2019-10-21, 00:39. Edited 1 time in total.

Reply 4 of 13, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

I'm something of a piker when it comes to DOS programming. How much of the functionality of DOS extenders was standardized by the DPMI and VCPI specifications and how much was implemented on top independently for use by client software?

All hail the Great Capacitor Brand Finder

Reply 6 of 13, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
jmarsh wrote:

DOSBox used to implement either one or both of the interfaces (I forget which) but no longer does.

That was indeed the right path of decision.
Are VCPI and DPMI really needed?

Reply 7 of 13, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Ah, so the DOS extender interface which end user software was designed to leverage was essentially a de facto standard. i.e. Tenberry, Phar Lap, et al all provided a non standard API which workalikes such as DOS32A and PMODE/W had to implement?

All hail the Great Capacitor Brand Finder

Reply 8 of 13, by BloodyCactus

User metadata
Rank Oldbie
Rank
Oldbie

well a defacto api most implemented was things like extending int 21h api

eg: open file ds:dx, translated into ds:edx reflecting the string into lower memory and doing the int 21h call.
file reads, writes etc.

--/\-[ Stu : Bloody Cactus :: [ https://bloodycactus.com :: http://kråketær.com ]-/\--

Reply 9 of 13, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Did the extenders tend to do this the same or were they generally incompatible with each other at both the API and ABI level?

All hail the Great Capacitor Brand Finder

Reply 10 of 13, by cyclone3d

User metadata
Rank l33t++
Rank
l33t++

As far as I am aware, most of the extenders were incompatible with each other. The exception being that DOS/32A being able to be used in place of DOS/4G and DOS/4GW.

https://en.wikipedia.org/wiki/DOS/4G

Yamaha modified setupds and drivers
Yamaha XG repository
YMF7x4 Guide
Aopen AW744L II SB-LINK

Reply 11 of 13, by BloodyCactus

User metadata
Rank Oldbie
Rank
Oldbie

well extenders were often tied to a compiler.

eg: pharlap is not the same as dos4gw.

dos4gw compatability was big (pmode/w, wdosx, dos32a etc) because it was the premiere 32bit c compiler at the time (watcom). DJGPP/GCC had a trans pmode port outside its own go32.

they were all incompatible. eg: DJGPP used XCOFF as file format. watcom produced many (but not xcoff), Pharlap is the spec designer of VCPI.

The only things you can be certain of is DPMI and VCPI as they were 'officially' spec'd out.

--/\-[ Stu : Bloody Cactus :: [ https://bloodycactus.com :: http://kråketær.com ]-/\--

Reply 12 of 13, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie

DJGPP is a purist DPMI 1.0 implementation. It does not have protected-mode extension for DOS INT21h or any BIOS INTxx services. If one needs any of those, then one will have to implement real-mode INTxx calls the *DPMI* way, which kind of sucks... It is really meant for porting Linux codes to DOS, but for porting 16-bit DOS codes into 32-bit DJGPP, then one would wish the standard C library is good enough.

Reply 13 of 13, by BloodyCactus

User metadata
Rank Oldbie
Rank
Oldbie
kjliew wrote:

DJGPP is a purist DPMI 1.0 implementation. It does not have protected-mode extension for DOS INT21h or any BIOS INTxx services. If one needs any of those, then one will have to implement real-mode INTxx calls the *DPMI* way, which kind of sucks... It is really meant for porting Linux codes to DOS, but for porting 16-bit DOS codes into 32-bit DJGPP, then one would wish the standard C library is good enough.

djgpp is the name of the dos port of gcc. it runs on top of go32 or pmode/dj which implement dpmi functions for vcpi hosts if dpmi doesnt exist. you often find cwsdpmi shipped with djgpp.

--/\-[ Stu : Bloody Cactus :: [ https://bloodycactus.com :: http://kråketær.com ]-/\--