Mail Archives: djgpp/2015/10/11/12:45:11
"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 -