Changes made during MSDOS port 22.9.93
--------------------------------------

Ported by Avishai Wool, a.k.a. Yashash
E-mail: yash@wisdom.weizmann.ac.il

- the port was done using the Microsoft C 6.0 compiler. lex & yacc were
  run on a DEC Ultrix box, and the output files y.tab.c and lex.yy.c 
  were ported (see below). 
- the program was tested on a 40 Mhz 386DX without a coprocessor. runtimes
  were 30 secs for ex4.lp and 49 secs for ex5.lp. On a 486, or a 386+387
  machine the times should be significantly less.
- file names changed to the DOS 8.3 convention:
     y.tab.c      -> ytab.c
     lex.yy.c     -> lexyy.c
     patchlevel.h -> patchlev.h
- a new makefile for Microsoft 'nmk' called makefile.dos. 
- 2 modifications were made to the yacc file lp.y (thus changing ytab.c)
   (1) ytab.c #includes lexyy.c, so the name was changed.
   (2) Unlike Unix, there is no default yywrap() function for lex in DOS. 
       A default function (macro really) was supplied.
- the constant ETA_START_SIZE was decreased to 8188 = (65536-32)/8
  in defines.h.  This value counts how many 'doubles' to allocate
  initially for the Eta array. MSC calloc cannot allocate more than
  64kb (a whole segment) in one chunk, minus 32 bytes overhead. Note
  that the reallocation strategy used by the prog will surely fail if
  the initial Eta is too small. This limits the problem size to a
  tableax with ~8k nonzero entries, e.g. 4000 inequalities with 2 vars
  each, or 90 inequalities with 90 vars each. Larger problems will terminate
  with "calloc failed". It might be a good idea to recompile the 
  source with a DOS-extender (djgpp ?) to break this barrier. 
- the ^C feature that prints intermediate solutions was disabled. The MSC
  implementation of signal() makes it useless, since DOS is not a
  multi-threaded OS. Some simple alternatives were tried with no success,
  mostly since stdin is redirected to the input file. A solution would be to 
  hook the ^C interrupt to set some global variable, and to poll this 
  variable in the iterating function (in solve.c). This was not done due
  to laziness. the change is in main.c.
- since ^C was disabled, a dot is printed to stderr every 10 iterations
  to show some progress. This is for the impatient, who conclude that the
  machine is hung if nothing happens for 30 secs. the change is in solve.c.
- the source was compiled with warning level 2, so a few warnings were issued.
  lexyy.c generated "missing prototype" and "pointer-to-int conversion"
  warnings - apparently harmless. Some functions were too large for the
  optimizer so only partial optimization was performed on them.

