ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1992/08/21/23:03:19

Date: Fri, 21 Aug 92 21:31:37 -0500
From: mcastle AT cs DOT umr DOT edu
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Subject: pbmplus, binutils, dld323, etc

I've not been active on the net for a little over a year now (took some
time off from school), and have a LOT of catching up to do.  I did ftp and 
read the entire archive of posts to this list, and I would like to address
a few points (WARNING:  much of the archive was read between 3-6am, so I may
have missed a few things :-).


First, about my original port of PBMPlus to DOS.

I really thought that the setmode() stuff worked in the earlier versions of
go32.  If it wasn't still working completely, that may have explained why
I could never get the TIFF stuff to work properly.  (BTW, would anyone who
is working/has worked on pbmplus, utah-rle, and rayshade please get in touch,
I would like to compare notes).

When I originally decided to post the binaries for pbmplus, I was indecisive
about how to do it.  I choose to post the merged executable with go32 attached
based on the following reasons:

I was going to post to comp.binaries.ibm.pc on usenet.  The merged executables
were much smaller than the entire package compiled into each separate program.
I figured most people would only use 3 to 6 programs (at the time, I rarely
used anything more than tgatoppm, ppmquant, and ppmtogif), and it would not
be difficult to copy ppmmerge.exe to tgatoppm.exe.  If you needed the disk
space, you only had to keep one executable and restore the whole package from
that.

My post did include complete diffs to the makefile as well as the source, so
anyone who wanted to could build the separate exectuable and/or the merged
exectuables with no problem.  I felt this was a fair trade off.

I chose to prepend go32 rather than stub.exe for simplicity.  I could not 
be sure if the end-user would understand why go32 would have to be available
in the path, and I new I wouldn't be around for support for a while.  I know
knew this might pose a problem with upgrading go32 (I had this problem with
the first diff.exe posted that used a go32 that couldn't handle VCPI.  I had
to use a binary editor to strip off the old go32), but again, I felt it was a
justified decision.  Of course, now that we have aout2exe.exe and exe2aout.exe,
this is much less of a problem.

In short, I felt the patches I has posted along with the package provided 
enough of a starting ground for others to rebuild the package with minimal
effort.

Enough explanations of my actions, on to something new.

I used GNU-Make from the very beginning, but I would have spurious problems
with it hanging my system.  I beleive it was the swapping spawn routine
gnumake uses conflicting with something on  my system.  Whether is was go32,
qemm, the flakey disk cache i was using, I don't know.  I eventually 
switched over to using borland's make (that came with tc++ 1.0), though this
resulted in a LOT more hacking of the make files.  Oh well.  BTW, has any one
else noticed how borland's makes have approached the similarity of gnumake??
I seem to remember that the new boland makes (i've seen it on the campus
network, but I don't have tc++ 3.0) has 1 or 2 dot-directives that are 
particular to gnu-make (that is, I don't *think* other unix makes has the
same feature, just gnu's).  Then again, I haven't had that much experience
with unix makes, and may just be imagining things.  :-)

Has anyone else had any problems with gnu-make and it's swapping algorithm??

Has anyone recompiled it using a later version of the gnuish progect library
that (I *think*) allows one to turn OFF the swapping??  just curious.


DJ:  What version of binutils are you making from???  The ChangeLog that comes
with you distribution has a last entry of june 20, 1990, while the version on
prep.ai.mit.edu (1.9) has a last entry of apr 17, 1991.  The reason I would
like to know it, the a.out.gnu.h file in the later version has an entry
like this:
#if !defined (N_BSS)
#define N_BSS 8
#endif
#if !defined (N_COMM)
#define N_COMM 18
#endif
#if !defined (N_FN)
#define N_FN 15
#endif


The aout.h that comes with djdev108.zip does NOT have the entry referring to
N_COMM.  I am trying to compile dld3.23 (dynamic link/unlink editor, dynamic
link library support, addons to programs, etc), but I hate hacking aout.h to
add N_COMM to it.  Also, the aoutgnu.h that comes with you binutils.zip does
not have N_COMM in it.  I was wondering if you are using an older version.  
Will it mess anything up for me to add that entry there, or can you update
to the newer version of binutils???

Oops... look before you leap... I just read diffs/versions, and it says 
binutils 1.0  ... are there any problem with the newer versions, wrt porting
to dos???  I'd better finish there other 2 projects I'm working on before I
attack that problem, though....

I am currently also trying to compile zoo210 with djgpp.  Anyone else done
this??  My major problem is lack of library support.  1.08 seems to have
some of the missing functions though (utime is my current stumbling back).
I've found the function in libc.a, but I couldn't find it in a header file 
any where (but, I'm in the process of unpacking it at the moment anyway, so
I may find it yet).  I'm wondering if I'll get more or less speed out of zoo210
under djgpp (my initial guess is a lot less speed, but it's worth the try).
Since it's a lot of file i/o, that means lots of switches between real and
protected more, and I doubt that zoo use much 32 bit stuff, except for maybe
some hashing functions.  Most of the lzw and huffman stuff is at the bit level,
I assume, and unless 386 code for shifts is much faster than 8086 code on the
same machine, I don't expect much speed up there.  But, it's a fun project,
none-the-less.

Has anyone tried a shell for desqview call, I think, dshell.  The main feature
I read about it is the ability to spawn off other process when doing pipes so
that i/o goes straght from one process to another, with out dos's normal disk
accesses.  That is a command line like:

tgatoppm test.tga | ppmquant 256 | ppmtogif > test.gif

would only have disk accesses to read in test.tga and write out test.gif, just
like a unix system would.  Has anyone tried this shell with go32 programs??

Well, this is interesting.  I just checked the source for utime[s] and 
discovered it was stubbed out, rechecked the maillist archive, and discovered
that someone had mailed in a uuencoded version of utime.  

Eric Backus:  Was that zoo you were working on?  Please contact me.

Told you all I probable missed some stuff when I read it  :->

Anyway, enough long-winded babbling.... I'm about out of hard disk space, and
have to take some time to clear some out  :-/

regards,
Mike Castle

- Raw text -


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