delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2015/10/11/12:45:11

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
NNTP-Posting-Date: Sun, 11 Oct 2015 11:22:04 -0500
From: "Charles Sandmann" <cwsdpmi AT earthlink DOT net>
Newsgroups: comp.os.msdos.djgpp
References: <op DOT xfpi3cic6zenlw AT localhost> <201405111842 DOT s4BIgrRx012234 AT delorie DOT com> <op DOT xfprrlvs6zenlw AT localhost> <PKedneUwMOJcSe_OnZ2dnUVZ_u2dnZ2d AT earthlink DOT com> <op DOT xft25kb26zenlw AT localhost> <IKydnTcfp49UihnOnZ2dnUVZ_vednZ2d AT earthlink DOT com> <2943e$56161ee8$97d537ad$10931 AT ALLTEL DOT NET>
In-Reply-To: <2943e$56161ee8$97d537ad$10931@ALLTEL.NET>
Subject: Re: secret DJGPP documents?
Date: Sun, 11 Oct 2015 11:21:57 -0500
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Newsreader: Microsoft Windows Live Mail 16.4.3528.331
X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
Message-ID: <Wv-dncL0ePcxEYfLnZ2dnUU7-N-dnZ2d@earthlink.com>
Lines: 106
X-Usenet-Provider: http://www.giganews.com
NNTP-Posting-Host: 64.91.135.5
X-Trace: sv3-HWFbkOZGl8xBoDUffq/MJFesTb6YIwHWX2LAHrzM5V08AZDf75+DNyUYEBDC1T4Eaq88OgRH+ykn2Pw!8/upd837GHCDCbFIh3kMBlNxOi8EzfHwTLHojHVx6filLnvRdaAyk7GdO34kAGKXkA2r9AbpQxGl!QGCIylvfiUCDwzxs+dYlA9ouI76xtw==
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
Bytes: 6757
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

"Frank H. Sapone"  wrote in message 
news:2943e$56161ee8$97d537ad$10931 AT ALLTEL DOT NET...
>You mention stuff with id.  What was is that they worked with you on and what 
>did you implement?

id was doing Quake development on Unix systems (faster and more stable)
but knew their commercial delivery platform would be the PC.   When they
started it appeared that DOS would be the target, but Windows 95
turned into a commercial success very quickly.   DJGPP v2 worked very
well on both DOS and Windows 95, but wasn't near completion.  id
reached out and asked for help (GCC made multi-platform development
much easier).

IIRC, they specifically wanted:
1) Some libc updates to handle calls they were using (v2 libc was minimal at 
that point)
2) Under W95 they could not reliably get the 12MB(?) of memory they needed,
    on a 16MB system if it had been running a while, so I provided them a hack
    to page out other applications so they could lock the memory required.   It 
was
    a stupid little thing about how W95 didn't follow DPMI expectations, 
frustrated
    them for weeks (commercially they must run on 16MB system, many systems
    were architecturally limited to 16MB at the time).   It took me about an 
hour
    to develop a workaround.
3) id wanted a flat address space to match their Unix development environment.
    Nearptrs were developed to support access to video framebuffers.  A related
    effort was a joint telephone call with me, id and Microsoft over nearptr 
support
    on Windows NT (Microsoft didn't have the appropriate page-level protections
    in a lot of their code so used segment limits as a workaround to try to 
provide
    memory security, which they said would be too hard to fix, and this is why
    Quake would not run on NT).
4) They were having trouble with getting SoundBlaster DMA to work reliably
    under W95.  We swapped some thoughts and some example code.   Eventually
    they solved this problem on their own (I didn't fix it) but they said 
something
    I sent did help them find their fix.
5) The ring 0 version of CWSDPMI was developed specifically for id.   They 
wanted
    to use features of the newly released Pentium chips to time certain sections 
of
    their code (performance tuning).   This was required during development but 
the
    code, but was not needed for running.
6) During the beta period certain high-end video configurations didn't work with 
the
    still-in-beta pre-r1 cwsdpmi they were using.  I had to add framebuffer 
address
    remapping code hack to get some systems working.

The entire process was great for DJGPP, since id were very focused on a
commercial delivery.  When you have a team of volunteers working on what they
want to do, often things critical for a commercial product would slip while 
something
personally interesting gets worked.  Here I was seeing both a company (and beta
customer) problems.  There were very clear requirements and needs for a stable,
well tested product.   My background is Chemical Engineering, but the DJGPP
project developed my interest in good software engineering processes.  Success
in my job today was helped by the DJGPP hobby I had 20 years ago.

>Is any of the correspondence saved?

Someplace on all the stacks of backup media, I think every email I have ever
exchanged is stored someplace.  In the mid-90s I was using both the clio
email address and one from my dial-up isp at the time neosoft.   But
digging through old media is not high on my current priorities.

>I read some more ancient threads from Quake's heyday on here and it appeared 
>that they wanted a Ring-0 version of CWSDPMI and some stuff with nearptrs.

All correct.   I refused to be compensated for this (incompatible with my
job terms at the time), but they figured out a way to say thanks that I
would not refuse :-)

(They shipped me a huge monitor and one of their P60 systems they
replaced with a P90.  I was not going to spend several hundred $ to
ship it back to them.   The monitor alone was around 80 lbs.  It was
a huge surprise one day when I came home from work).

Just yesterday we found the original Quake CD they sent me; my son
had borrowed it about 10 years ago and it was in a stack of stuff being
tossed out.

>Sezero and I have been successfully using regular CWSDPMI.EXE instead of 
>CWSDPR0.EXE in QDOS, Q2DOS, and uHexen2 with no issues...  Though I switched 
>backed to CWSDPR0.EXE in my QDOS project since the original id game used it as 
>such.  I haven't noticed any serious performance degradation or increase 
>between using one or the other.

As above, since Quake had to deal with any available DPMI provider, it
could not insist upon a ring-0 version.  The CWSDPMI ring-0 version was
not for performance reasons but for development profiling reasons
(turning on debug code requiring ring-0 access).   The ring-0 version
needed some interesting hacks to avoid double-faults in kernel
mode.

>Apologies for the necropost, but was looking over old archives and this caught 
>my attention!

You caught me in a good mood, especially after finding what happened
to my original CD from many years ago.


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019