Mail Archives: djgpp/2009/12/15/01:45:07
Hi,
On Dec 14, 5:31=A0pm, DJ Delorie <d DOT DOT DOT AT delorie DOT com> wrote:
> > Maybe not, but it's almost definitely "good enough" for most people
> > here.
>
> I agree, I'm just trying to manage the slippery slope between "hosting
> djgpp" and "hosting everything on the planet".
Well, it's obviously not a very big file. I just hate the idea that
some useful software would disappear. Sure, I guess *somebody* might
not like the "need permission for commercial use" clause, but I'd be
surprised if such a person existed in modern DOS circles.
The main appeal to me was that a). it works (even with OpenWatcom),
and b). it's very very easy to build with free tools (GCC + NASM).
WDOSX has similar support for both, but it has some bugs and quirks
that annoy me (esp. needing TASM), e.g. can't unpack or remove/replace
the stub.
Don't get me wrong, CWSDPMI is better, no doubt (virtual memory ftw!),
but it needs (minimum) free Turbo C and TASM (which used to be in
Turbo C++ Explorer 2006, but that's not online anymore ...). My
attention span is too short and I'm too wimpy for most stuff, but I
did take a stab at CWSDPMI about nine months ago:
Archive: cws-new.zip
Zip file size: 96694 bytes, number of entries: 27
-rw-a-- 3.0 fat 39786 t- defX 09-Mar-28 22:26 constub.asm
-rw-a-- 3.0 fat 42778 t- defX 09-Mar-28 21:31 CONTROL.asm
-rw-a-- 3.0 fat 2130 t- defX 00-Oct-18 20:46 CONTROL.H
-rw-a-- 3.0 fat 24323 t- defX 00-Oct-08 19:34 CWSDSTUB.ASM
-rw-a-- 3.0 fat 7341 t- defX 00-Oct-01 14:28 CWSPARM.C
-rw-a-- 3.0 fat 12987 t- defX 09-Mar-28 21:35 DALLOC.ASM
-rw-a-- 3.0 fat 428 t- defX 94-Dec-02 15:10 DOUTILS.ASM
-rw-a-- 3.0 fat 13835 t- defX 97-Oct-15 23:10 DPMISIM.ASM
-rw-a-- 3.0 fat 3169 t- defX 08-Jul-31 21:57 EHDRFIX.C
-rw-a-- 3.0 fat 108044 t- defX 09-Mar-28 21:36 EXPHDLR.ASM
-rw-a-- 3.0 fat 1352 t- defX 96-Jun-15 16:24 GDT.INC
-rw-a-- 3.0 fat 913 t- defX 96-Jun-15 16:22 GOTYPES.H
-rwxa-- 3.0 fat 2400 t- defX 09-Mar-28 23:03 make-cws.bat
-rw-a-- 3.0 fat 3515 t- defX 09-Mar-28 22:46 MAKEFILE
-rw-a-- 3.0 fat 11666 t- defX 08-Aug-18 23:25 MSWITCH.ASM
-rw-a-- 3.0 fat 48949 t- defX 09-Mar-28 21:36 PAGING.ASM
-rw-a-- 3.0 fat 1494 t- defX 96-Jun-15 16:24 SEGDEFS.INC
-rw-a-- 3.0 fat 6472 t- defX 00-Oct-04 18:43 START.ASM
-rw-a-- 3.0 fat 10878 t- defX 97-Oct-19 21:44 TABLES.ASM
-rw-a-- 3.0 fat 1307 t- defX 96-Jun-15 16:24 TSS.INC
-rw-a-- 3.0 fat 1282 t- defX 96-Jun-15 16:25 UNLOAD.ASM
-rw-a-- 3.0 fat 5361 t- defX 09-Mar-28 21:30 UTILS.ASM
-rw-a-- 3.0 fat 34303 t- defX 09-Mar-28 21:37 VALLOC.ASM
-rw-a-- 3.0 fat 4026 t- defX 99-Nov-14 16:35 VCPI.ASM
-rw-a-- 3.0 fat 415 t- defX 94-Nov-14 20:26 VCPI.INC
-rw-a-- 3.0 fat 31332 t- defX 09-Mar-28 21:36 VDS.ASM
-rw-a-- 3.0 fat 2347 t- defX 97-Oct-06 22:57 XMS.ASM
27 files, 422833 bytes uncompressed, 94106 bytes compressed: 77.7%
And here's what the .BAT says:
@echo off
if "%DJGPP%"=3D=3D"" echo DJGPP needed only for EHDRFIX.EXE and
CWSPARAM.EXE.
if "%DJGPP%"=3D=3D"" echo TC++ works but isn't FOSS, so I'm trying to
avoid it.
if "%DJGPP%"=3D=3D"" goto end
goto begin
---------------------------------------------------------------------------
This is still not perfect conversion, but for now it at least works!!
No longer needs TC++ (used it to make C -> ASM), but ...
+ needs TASM for half the .ASM files (can't be too hard to use JWasm
here)
+ needs TLINK for linking .OBJs to the main .EXEs (standalone and
stub)
+ needs JWasm for the .ASMs converted from C srcs (via TC++ 1.01)
+ needs LZASM for CWSDSTUB.ASM ("ideal", TASM32 5.3 doesn't work ???)
+ needs DJGPP only for EHDRFIX.EXE and CWSPARAM.EXE
Future: only require JWasm (or NASM?) + WLINK (or Warplink?) + DJGPP
-- rugxulo _AT_ gmail _DOT_ com
-- Sunday, March 29, 2009 3:53
---------------------------------------------------------------------------
:begin
if exist cwsd*.exe del cwsd*.exe
for %%a in (cwsparam ehdrfix) do if exist %%a.exe del %%a.exe
for %%a in (map rng obj) do if exist *.%%a del *.%%a
echo 3 > 3.rng
tasm32 /mx /t /drun_ring=3D3 /dI31PROT start;
jwasmd -Zm control.asm
jwasmd -Zm dalloc.asm
tasm32 /mx /t /drun_ring=3D3 /dI31PROT doutils;
tasm32 /mx /t /drun_ring=3D3 /dI31PROT dpmisim;
jwasmd -Zm exphdlr.asm
tasm32 /mx /t /drun_ring=3D3 /dI31PROT mswitch;
jwasmd -Zm paging.asm
tasm32 /mx /t /drun_ring=3D3 /dI31PROT tables;
jwasmd -Zm utils.asm
tasm32 /mx /t /drun_ring=3D3 /dI31PROT unload;
jwasmd -Zm valloc.asm
tasm32 /mx /t /drun_ring=3D3 /dI31PROT xms;
tasm32 /mx /t /drun_ring=3D3 /dI31PROT vcpi;
gcc -s ehdrfix.c -o ehdrfix.exe
gcc -s cwsparm.c -o cwsparam.exe
echo start.obj control.obj+ > cws.lnk
echo dalloc.obj doutils.obj dpmisim.obj exphdlr.obj mswitch.obj
paging.obj tables.obj utils.obj+ >> cws.lnk
echo unload.obj valloc.obj xms.obj vcpi.obj,cwsdpmi.exe,cwsdpmi.map >>
cws.lnk
tlink /3 /c @cws.lnk
del cws.lnk
ehdrfix cwsdpmi.exe
cwsparam -v cwsdpmi.exe
lzasmx cwsdstub.asm
jwasmd -Zm constub.asm
echo cwsdstub.obj start.obj constub.obj+ > cws.lnk
echo dalloc.obj doutils.obj dpmisim.obj exphdlr.obj mswitch.obj
paging.obj tables.obj utils.obj+ >> cws.lnk
echo valloc.obj xms.obj vcpi.obj,cwsdstub.exe,cwsdstub.map >> cws.lnk
tlink /3 /c @cws.lnk
del cws.lnk
ehdrfix cwsdstub.exe
cwsparam -v cwsdstub.exe
:end
Yeah, kinda insane, I used three assemblers, but none of them accepted
every file, and I'm too green re: TASM syntax to be able to directly
(or quickly) fix it. Still, as is, I made it 100% assembly (tcc -S),
and IMHO, it's much simpler to build. Obviously the goal was to
convert to a free/libre assembler. Even as far back as 1995, CWS said
he wanted to convert it to GCC + DJASM. I'm sure that's possible, but
probably beyond me and my skills. Maybe Devore's NOMYSO.PL would help,
I dunno, I should try it. Even JWasm 2.01 came out like two days ago
(and it can optionally compile with DJGPP, heh).
So whatever. I never finished. Just telling you my thoughts and
motivations just to give a clearer idea. And I know CWS is always
perpetually busy (heh, that's what you get for being so smart, heh).
P.S. That reminds me, MWDPMI is still in the CVS, but it's a *big*
pain to compile (needs old old DJGPP tools), and, AFAICT, "lacks
support for exceptions" or whatever (ask Eli, he knows). It's
obviously abandoned, so I don't consider that worthwhile, but I guess
anything's possible, just unlikely at this point. (I have the
interest, just not the brains or energy ... ugh.)
- Raw text -