home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / tos / updates / update25.zoo / lib / diffs next >
Encoding:
Text File  |  1992-10-09  |  128.7 KB  |  5,629 lines

  1. *** 1.80    1992/08/14 14:37:45
  2. --- Changelo    1992/10/09 20:34:22
  3. ***************
  4. *** 3263,3265 ****
  5. --- 3263,3363 ----
  6.       in the common case.
  7.   
  8.   ---------------------------- Patchlevel 83 ---------------------------
  9. + ioctl.h, signal.h:: ers
  10. +     sync with mntlib changes.
  11. + main.c, ctime.c, getuid.c, lib.h, ltoa.c, sprintf.c:: ers
  12. +     sync with mntlib changes
  13. + frwbin.c:: ++jrb
  14. +     new file containing the default __FRW_BIN__ flag. this flag controls
  15. +     the default  behaviour fread/fwrite:
  16. +       when non-zero, fread/fwrite will not do CR processing
  17. +       even for text mode files (ie: ignore file mode).
  18. +       when zero fread/fwrite is process according to file mode
  19. +     this file is linked in when the user does not specify the variable.
  20. + fread.c, fwrite.c:: ++jrb
  21. +     incorporate flag.
  22. + mincl:: ++jrb
  23. +     add target for frwbin.o
  24. + compiler.h dirent.h float.h math.h mintbind.h osbind.h
  25. + ostruct.h regexp.h setjmp.h stdarg.h tcfloat.h tcmath.h
  26. + unistd.h varargs.h :: ++jrb/ers
  27. +     sync up with mntlib 21_2, mainly changes for Turbo/Pure C
  28. + access.c alphasor.c atof.c bcmp.c bsearch.c calloc.c chmod.c doprnt.c
  29. + findfile.c flonum.h fopen.c fseek.c ftw.c getbuf.c getenv.c getlogin.c
  30. + getopt.c getpid.c getpw.c getuid.c gnulib2.c grp.c lib.h localtim.c lseek.c
  31. + ltoa.c malloc.c putenv.c qsort.c random.c realloc.c  regexp.c sbrk.c setbuf.c
  32. + setvbuf.c strcat.c strchr.c strftime.c strncat.c strncpy.c strrchr.c strtol.c
  33. + strtoul.c system.c sysvar.c time.c timeoday.c tmpfile.c tmpnam.c utime.c
  34. + getcwd.c isatty.c spawnve.c sleep.c :: ++jrb/ers
  35. +     sync up with mntlib 21_2, mainly changes for Turbo/Pure C. nice thing
  36. +     about this merge and the earlier soz/lcc merges is that a lot of
  37. +     lint cleaning took place as a result.
  38. + compiler.h ioctl.h unistd.h signal.h setjmp.h osbind.h mintbind.h
  39. + math.h keycodes.h :: ++jrb/ers
  40. +     sync with mntlib 21_3
  41. + perror.c:: ++jrb/ers
  42. +     sync with mntlib 21_3
  43. + scanf.c:: michal
  44. +     sscanf (test,"%%Page: %d %d\n", &i1, &i2);
  45. +     after "%%" *fc equals 'P' but c was never updated and is still
  46. +     equal '%'.  Therefore test on line 232 fails and no conversions will
  47. +     be performed. [the fix was to get the next char into c after testing
  48. +     for '%' - ++jrb]
  49. +     thanks michal!
  50. +     
  51. + *.s, *.cpp, linea.c crto.c:: howard
  52. +     changes to support baserel code generation.
  53. + Makefile, mincl:: howard
  54. +      New integrated scheme elimiating makefile.16 makefile.32.
  55. +     thanks howard!
  56. + maikefile.16, makefile.32 :: ++jrb
  57. +     delete, no longer needed.
  58. + mintbind.h obsind.h obstack.h
  59. + doprnt.c getpass.c linea.c malloc.c obstack.c regexp.c
  60. + sbrk.c stricmp.c strnicmp.c strrchr.c system.c textio.c :: ers/+=jrb
  61. +     more cleanups from mntlib pl 22 (casts etc from compilers that
  62. +     are more fussy [some really overkill]).
  63. + compiler.h mintbind.h:: ers/++jrb
  64. +     sync up with mntlib pl 23
  65. + difftime.c:: uunet!gnu.ai.mit.edu!entropy
  66. +     operands were backwards
  67. + doprnt.c:: Michael (ritzert@dfg.dbp.de)
  68. +   the g-format does not work correctly. In many circumstances, the output is
  69. +   a huge fp-number which is correct in all the 15 significant digits; but the
  70. +   length of the mantissa is roughly doubled and filled with garbage. This
  71. +   seems to be rounding problem - it occurs more frequently with the 68881,
  72. +   but only when the significant rest of the mantissa is a sequence of zeros.
  73. +   I observed it with  %g %1.6g %1.14g %1.15g.
  74. +   In my opinion, the g-formatter of cvt() and round() should be rewritten.
  75. +   As i don't have the time doing this, i hacked a kludgy fix:
  76. +   I save the original no of digits, keep track of the '.', and cutoff the
  77. +   buffer before the trailing zeros are stripped. At the same time, i supress
  78. +   unreasonable precision, i.e., digs = min( digs, 15 ).
  79. + doprnt.c:: Michael/++jrb
  80. +     Michael had a problem with ICONV when doprnt.o is linked
  81. +     from outside gnu.olb. (i have'nt figured out why this
  82. +     would make a difference). Anyways now there is a 
  83. +     !defined(__NO_INLINE__) around _ICONV so that the C version
  84. +     may be picked istead of the inline asm version.
  85. + ---------------------------- Patchlevel 84 ---------------------------
  86. *** 1.59    1992/08/14 14:37:45
  87. --- PatchLev.h    1992/10/09 20:34:23
  88. ***************
  89. *** 1,5 ****
  90.   
  91. ! #define    PatchLevel "83"
  92.   
  93.   /*
  94.    *
  95. --- 1,5 ----
  96.   
  97. ! #define    PatchLevel "84"
  98.   
  99.   /*
  100.    *
  101. *** 1.22    1992/08/14 14:37:45
  102. --- crt0.c    1992/10/09 20:34:24
  103. ***************
  104. *** 176,205 ****
  105.        .text                
  106.        .even                
  107.        .globl __start            
  108. ! __start:                
  109. !      cmpw    #0,a0             /* test acc or prog  */
  110.        jeq    __start0         /* br if prog          */
  111.       tstl    a0@(36)             /* tst parent basepage pointer */
  112.       jne     __start0         /* its a prog if != 0  */
  113.   
  114.    /* its an acc, set up a stck+heap */
  115. !      movl    a0,__base         /* sto basepage    */
  116. !     tstl    __heapbase         /* setup _heapbase and sp */
  117.       jne    1f
  118. !     movl    __stksize,d3         /* _heapbase not specified */
  119. !         addql    #3, d3
  120.       andl    #0xfffffffc,d3
  121.       movl    d3,sp@-             /* _heapbase = Malloc(_stksize) */
  122.           movw    #0x48,sp@-
  123.       trap    #1
  124.       addqw    #6,sp
  125. !     movl    d0, __heapbase
  126.       addl    d3,d0
  127.       movl    d0, sp              /* sp = _heapbase + _stksize */
  128.       jra    __acc_main
  129.   1:                     /* heap base specified */
  130. !      movl    __heapbase,sp         /* setup sp        */
  131. !      addl    __stksize,sp        
  132.        jra    __acc_main");           /* acc main          */
  133.                          /* dont even think of */
  134.                          /* dropping through    */
  135. --- 176,224 ----
  136.        .text                
  137.        .even                
  138.        .globl __start            
  139. ! __start:
  140. ! "
  141. ! #ifdef __MBASE__
  142. ! "    movl    a0,a1            /* Find basepage, data seg */
  143. !     cmpw    #0,a1
  144. !     jne    1f
  145. !     movl    sp@(4),a1
  146. ! 1:
  147. !     movl    a1@(16)," __MBASESTR__ "    /* Set base to data seg + 32K */
  148. !     subw    #32768," __MBASESTR__ "
  149. ! "
  150. ! #define    Base    __MBASESTR__ "@(__base)"
  151. ! #define Heapbase __MBASESTR__ "@(__heapbase)"
  152. ! #define Stksize    __MBASESTR__ "@(__stksize)"
  153. ! #else
  154. ! #define Base    "__base"
  155. ! #define Heapbase "__heapbase"
  156. ! #define Stksize "__stksize"
  157. ! #endif
  158. ! "    cmpw    #0,a0             /* test acc or prog  */
  159.        jeq    __start0         /* br if prog          */
  160.       tstl    a0@(36)             /* tst parent basepage pointer */
  161.       jne     __start0         /* its a prog if != 0  */
  162.   
  163.    /* its an acc, set up a stck+heap */
  164. !     movl    a0," Base "         /* sto basepage    */
  165. !     tstl    " Heapbase "         /* setup _heapbase and sp */
  166.       jne    1f
  167. !     movl    " Stksize ",d3         /* _heapbase not specified */
  168. !     addql    #3, d3
  169.       andl    #0xfffffffc,d3
  170.       movl    d3,sp@-             /* _heapbase = Malloc(_stksize) */
  171.           movw    #0x48,sp@-
  172.       trap    #1
  173.       addqw    #6,sp
  174. !     movl    d0," Heapbase "
  175.       addl    d3,d0
  176.       movl    d0, sp              /* sp = _heapbase + _stksize */
  177.       jra    __acc_main
  178.   1:                     /* heap base specified */
  179. !      movl    " Heapbase ",sp         /* setup sp        */
  180. !      addl    " Stksize ",sp        
  181.        jra    __acc_main");           /* acc main          */
  182.                          /* dont even think of */
  183.                          /* dropping through    */
  184. ***************
  185. *** 232,237 ****
  186. --- 251,257 ----
  187.   {
  188.       register long m __asm("d3");
  189.       register long freemem __asm("d4");
  190. +     extern void etext();        /* fake-out if pcrel used */
  191.       
  192.       _app = 1;    /* its an application */
  193.       _base = bp;
  194. ***************
  195. *** 240,249 ****
  196.   
  197.       m = parseargs(bp);    /* m = # bytes used by environment + args */
  198.   /* make m the total number of bytes required by program sans stack/heap */
  199. !     m += (bp->p_tlen + bp->p_dlen + bp->p_blen);
  200.       m = (m + 3L) & (~3L);
  201.   /* freemem the amount of free mem accounting for MINFREE at top */
  202. !     if((freemem = (long)bp->p_hitpa - (long)bp->p_tbase - MINFREE - m) <= 0L)
  203.           goto notenough;
  204.       
  205.       if(_initial_stack)
  206. --- 260,269 ----
  207.   
  208.       m = parseargs(bp);    /* m = # bytes used by environment + args */
  209.   /* make m the total number of bytes required by program sans stack/heap */
  210. !     m += (bp->p_tlen + bp->p_dlen + bp->p_blen + sizeof(BASEPAGE));
  211.       m = (m + 3L) & (~3L);
  212.   /* freemem the amount of free mem accounting for MINFREE at top */
  213. !     if((freemem = (long)bp->p_hitpa - (long)bp - MINFREE - m) <= 0L)
  214.           goto notenough;
  215.       
  216.       if(_initial_stack)
  217. ***************
  218. *** 250,262 ****
  219.       {
  220.           /* the primary use of _initial_stack will be in dumping */
  221.           /* applications where only a heap for malloc makes sense */
  222. !         _heapbase = (void *) ((long)bp->p_tbase + m);
  223.           _stksize = _initial_stack;
  224.       }
  225.       
  226.       if((_stksize <  -1L))
  227.       {
  228. !         _heapbase = (void *) ((long)bp->p_tbase + m);
  229.           _stksize = -_stksize - 1;
  230.           }
  231.           
  232. --- 270,282 ----
  233.       {
  234.           /* the primary use of _initial_stack will be in dumping */
  235.           /* applications where only a heap for malloc makes sense */
  236. !         _heapbase = (void *) ((long)bp + m);
  237.           _stksize = _initial_stack;
  238.       }
  239.       
  240.       if((_stksize <  -1L))
  241.       {
  242. !         _heapbase = (void *) ((long)bp + m);
  243.           _stksize = -_stksize - 1;
  244.           }
  245.           
  246. ***************
  247. *** 269,275 ****
  248.       {
  249.         case -1L:    /* keep all but MINFREE */
  250.           _stksize = freemem;
  251. !         _heapbase = (void *) ((long)bp->p_tbase + m);
  252.           break;
  253.           
  254.         case 0L:    /* free all but MINKEEP */
  255. --- 289,295 ----
  256.       {
  257.         case -1L:    /* keep all but MINFREE */
  258.           _stksize = freemem;
  259. !         _heapbase = (void *) ((long)bp + m);
  260.           break;
  261.           
  262.         case 0L:    /* free all but MINKEEP */
  263. ***************
  264. *** 298,324 ****
  265.       m += _stksize;
  266.   
  267.   /* make sure there's enough room for the stack */
  268. !     if ((((long)bp->p_tbase) + m) > ((long)bp->p_hitpa - MINFREE))
  269.           goto notenough;
  270.   
  271. ! /* set up the new stack to bp->p_tbase + m  */
  272.       asm volatile("\
  273.            movl    %0, sp  | move base to sp
  274.            addal    %1, sp    | add total bytes"
  275.                :            /* outputs */
  276. !              : "g"(bp->p_tbase), "g"(m)    /* inputs  */
  277.                );     /* we dont tell gcc about clobbered reggies */
  278.       
  279. ! /* shrink the TPA */
  280. ! /* this is right only if bp == bp->p_tbase - sizeof(BASEPAGE) */
  281. !     (void)Mshrink(bp, m + sizeof(BASEPAGE));
  282.       asm volatile("subl a6,a6");    /* clear link reg for gdb */
  283.       
  284.   /* establish handlers,  call the main routine */
  285.       setup_handlers();
  286.   #ifdef __GCRT0__
  287. !     monstartup((void *)(bp->p_tbase), 
  288. !            (void *)((long)bp->p_tbase +  bp->p_tlen));
  289.   #endif
  290.       _main(argc, argv, environ);
  291.       /* not reached normally */
  292. --- 318,342 ----
  293.       m += _stksize;
  294.   
  295.   /* make sure there's enough room for the stack */
  296. !     if (((long)bp + m) > ((long)bp->p_hitpa - MINFREE))
  297.           goto notenough;
  298.   
  299. ! /* set up the new stack to bp + m  */
  300.       asm volatile("\
  301.            movl    %0, sp  | move base to sp
  302.            addal    %1, sp    | add total bytes"
  303.                :            /* outputs */
  304. !              : "g"(bp), "g"(m)    /* inputs  */
  305.                );     /* we dont tell gcc about clobbered reggies */
  306.       
  307. ! /* shrink the TPA - this is always correct, shared text or not -- hyc */
  308. !     (void)Mshrink(bp, m);
  309.       asm volatile("subl a6,a6");    /* clear link reg for gdb */
  310.       
  311.   /* establish handlers,  call the main routine */
  312.       setup_handlers();
  313.   #ifdef __GCRT0__
  314. !     monstartup((void *)(bp->p_tbase), (void *)etext-1);
  315.   #endif
  316.       _main(argc, argv, environ);
  317.       /* not reached normally */
  318. *** 1.10    1992/03/06 19:19:47
  319. --- getcwd.c    1992/10/09 20:34:25
  320. ***************
  321. *** 11,16 ****
  322. --- 11,18 ----
  323.   This routine is in the public domain.
  324.   ********************************************************************/
  325.   
  326. + char *getcwd __PROTO((char *, int));
  327.   char *getcwd(buf, size)
  328.   char *buf; int size;
  329.   {
  330. ***************
  331. *** 23,29 ****
  332.   #endif
  333.   
  334.       if (!buf)
  335. !         if (!(buf = (char *) malloc((size_t)size)))
  336.               return NULL;
  337.       path[2] = '\0';
  338.       (void)Dgetpath(path+2, 0);
  339. --- 25,31 ----
  340.   #endif
  341.   
  342.       if (!buf)
  343. !         if ((buf = (char *) malloc((size_t)size)) == 0)
  344.               return NULL;
  345.       path[2] = '\0';
  346.       (void)Dgetpath(path+2, 0);
  347. *** 1.9    1991/12/26 15:53:59
  348. --- isatty.c    1992/10/09 20:34:26
  349. ***************
  350. *** 29,35 ****
  351.       if (__open_stat[handle].status != FH_UNKNOWN)
  352.           return(__open_stat[handle].status == FH_ISATTY);
  353.     oldloc = Fseek (0L, fd, SEEK_CUR);    /* seek zero bytes from current loc */
  354. !   if (seekval = Fseek (1L, fd, SEEK_SET))    /* try to seek ahead one byte */
  355.       if ((seekval > 0) || (seekval == ((long)(-EBADARG)))) /* out of range... */
  356.         rc = 0;            /* file, not a tty */
  357.       else 
  358. --- 29,35 ----
  359.       if (__open_stat[handle].status != FH_UNKNOWN)
  360.           return(__open_stat[handle].status == FH_ISATTY);
  361.     oldloc = Fseek (0L, fd, SEEK_CUR);    /* seek zero bytes from current loc */
  362. !   if ((seekval = Fseek (1L, fd, SEEK_SET)) != 0) /* try to seek ahead one byte */
  363.       if ((seekval > 0) || (seekval == ((long)(-EBADARG)))) /* out of range... */
  364.         rc = 0;            /* file, not a tty */
  365.       else 
  366. *** 1.23    1992/08/14 14:37:45
  367. --- main.c    1992/10/09 20:34:26
  368. ***************
  369. *** 9,14 ****
  370. --- 9,15 ----
  371.   #include "symdir.h"
  372.   #include <unistd.h>
  373.   #include "lib.h"
  374. + #include <ctype.h>
  375.   
  376.   int    errno;
  377.   int    __mint;        /* 0 for TOS, MiNT version number otherwise */
  378. ***************
  379. *** 65,71 ****
  380.       char *tty;
  381.       register FILE *f;
  382.       register int i;
  383. !      char *s, *t, *new;
  384.       extern int __default_mode__; /* in defmode.c or defined by user */
  385.       int main(int, char **, char **);
  386.   
  387. --- 66,72 ----
  388.       char *tty;
  389.       register FILE *f;
  390.       register int i;
  391. !      char *s, *t;
  392.       extern int __default_mode__; /* in defmode.c or defined by user */
  393.       int main(int, char **, char **);
  394.   
  395. ***************
  396. *** 137,148 ****
  397.       for (i = 0; s = _envp[i]; i++) {    /* '=', NOT '==' */
  398.           if (s[0] == 'P' && s[1] == 'A' && s[2] == 'T' &&
  399.               s[3] == 'H' && s[4] == '=') {
  400. !             new = alloca(4*strlen(s));
  401. !             strncpy(new, s, 5);
  402. !             t = new+5;
  403.               s += 5;
  404.               while (*s) {
  405. !                 if (s[1] == ':') {    /* drive letter */
  406.                       *t++ = '/';
  407.                       *t++ = 'd'; *t++ = 'e'; *t++ = 'v';
  408.                       *t++ = '/'; *t++ = *s++; s++;
  409. --- 138,149 ----
  410.       for (i = 0; s = _envp[i]; i++) {    /* '=', NOT '==' */
  411.           if (s[0] == 'P' && s[1] == 'A' && s[2] == 'T' &&
  412.               s[3] == 'H' && s[4] == '=') {
  413. !             _envp[i] = (char *)malloc(4 * strlen(s));
  414. !             strncpy(_envp[i], s, 5);
  415. !             t = _envp[i]+5;
  416.               s += 5;
  417.               while (*s) {
  418. !                 if (s[1] == ':' && isalpha(*s)) {    /* drive letter */
  419.                       *t++ = '/';
  420.                       *t++ = 'd'; *t++ = 'e'; *t++ = 'v';
  421.                       *t++ = '/'; *t++ = *s++; s++;
  422. ***************
  423. *** 153,159 ****
  424.                   }
  425.               }
  426.               *t++ = 0;
  427. -             _envp[i] = strdup(new);
  428.               break;
  429.           }
  430.       }
  431. --- 154,159 ----
  432. *** 1.14    1992/04/13 15:50:45
  433. --- scanf.c    1992/10/09 20:34:28
  434. ***************
  435. *** 160,166 ****
  436.           {
  437.           /* Whitespace characters match any amount of whitespace.  */
  438.           while (isspace (c))
  439. !             inchar ();
  440.           continue;
  441.           }
  442.           else if (c == fc)
  443. --- 160,166 ----
  444.           {
  445.           /* Whitespace characters match any amount of whitespace.  */
  446.           while (isspace (c))
  447. !             (void)inchar ();
  448.           continue;
  449.           }
  450.           else if (c == fc)
  451. ***************
  452. *** 230,235 ****
  453. --- 230,237 ----
  454.         case '%':    /* Must match a literal '%'.  */
  455.           if (c != fc)
  456.           conv_error();
  457. +         else
  458. +         c = inchar();
  459.           break;
  460.           
  461.         case 'n':    /* Answer number of assignments done.  */
  462. *** 1.6    1992/03/06 19:19:47
  463. --- sleep.c    1992/10/09 20:34:28
  464. ***************
  465. *** 7,18 ****
  466.   
  467.   /* clock() has a rez of CLOCKS_PER_SEC ticks/sec */
  468.   
  469. ! #define USEC_PER_TICK (1000000U / ((unsigned long)CLOCKS_PER_SEC))
  470.   #define    USEC_TO_CLOCK_TICKS(us)    ((us) / USEC_PER_TICK )
  471.   
  472. ! void
  473.   sleep(n)
  474. ! unsigned int    n;
  475.   {
  476.       unsigned long    stop;
  477.   
  478. --- 7,18 ----
  479.   
  480.   /* clock() has a rez of CLOCKS_PER_SEC ticks/sec */
  481.   
  482. ! #define USEC_PER_TICK (1000000L / ((unsigned long)CLOCKS_PER_SEC))
  483.   #define    USEC_TO_CLOCK_TICKS(us)    ((us) / USEC_PER_TICK )
  484.   
  485. ! unsigned int
  486.   sleep(n)
  487. !     unsigned int n;
  488.   {
  489.       unsigned long    stop;
  490.   
  491. ***************
  492. *** 19,24 ****
  493. --- 19,26 ----
  494.       stop = clock() + n * CLOCKS_PER_SEC;
  495.       while (clock() < stop)
  496.           ;
  497. +     return 0;
  498.   }
  499.   
  500.   /*
  501. *** 1.16    1992/03/22 21:57:30
  502. --- spawnve.c    1992/10/09 20:34:28
  503. ***************
  504. *** 47,54 ****
  505.   {
  506.       void        __exit(long);
  507.       static char    path[MAXPATHLEN];
  508. !     int        cmlen = 0;
  509. !     int        enlen = 0;
  510.       char        *p;
  511.       char        *s, *t;
  512.       char        *env;
  513. --- 47,54 ----
  514.   {
  515.       void        __exit(long);
  516.       static char    path[MAXPATHLEN];
  517. !     size_t        cmlen;
  518. !     size_t        enlen = 0;
  519.       char        *p;
  520.       char        *s, *t;
  521.       char        *env;
  522. ***************
  523. *** 70,76 ****
  524.           enlen += strlen(envp[cmlen]) + 1;
  525.       enlen += 32;    /* filler for stuff like ARGV= and zeros */
  526.   
  527. !     if (!(env = (char *)Malloc((long)enlen))) {
  528.           errno = ENOMEM;
  529.           return -1;
  530.       }
  531. --- 70,76 ----
  532.           enlen += strlen(envp[cmlen]) + 1;
  533.       enlen += 32;    /* filler for stuff like ARGV= and zeros */
  534.   
  535. !     if ((env = (char *)Malloc((long)enlen)) == NULL) {
  536.           errno = ENOMEM;
  537.           return -1;
  538.       }
  539. ***************
  540. *** 154,160 ****
  541.   /* MiNT and MicroRTX support background processes with Pexec(100,...) */
  542.       cmlen = (mode == P_NOWAIT) ? 100 : PE_LOADGO;
  543.   
  544. !     if ((rval = Pexec(cmlen, path, cmd, env)) < 0)
  545.       {
  546.           errno = -rval;
  547.           cmlen = -1;
  548. --- 154,160 ----
  549.   /* MiNT and MicroRTX support background processes with Pexec(100,...) */
  550.       cmlen = (mode == P_NOWAIT) ? 100 : PE_LOADGO;
  551.   
  552. !     if ((rval = Pexec((int)cmlen, path, cmd, env)) < 0)
  553.       {
  554.           errno = -rval;
  555.           cmlen = -1;
  556. *** 1.1    1992/02/04 17:11:06
  557. --- _addsubd.cpp    1992/10/09 20:46:12
  558. ***************
  559. *** 1,11 ****
  560.   #ifndef __M68881__
  561.   #ifndef    sfp004
  562. - | double floating point add/subtract routine
  563.   |
  564.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  565.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  566.   |
  567. - |
  568.   | Revision 1.3, kub 01-90 :
  569.   | added support for denormalized numbers
  570.   |
  571. --- 1,16 ----
  572. + |
  573. + | double floating point add/subtract routine
  574. + |
  575.   #ifndef __M68881__
  576. +     .text
  577. +     .even
  578. +     .globl    __subdf3, ___subdf3
  579. +     .globl    __adddf3, ___adddf3
  580.   #ifndef    sfp004
  581.   |
  582.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  583.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  584.   |
  585.   | Revision 1.3, kub 01-90 :
  586.   | added support for denormalized numbers
  587.   |
  588. ***************
  589. *** 18,28 ****
  590.   | Revision 1.0:
  591.   | original 8088 code from P.S.Housel
  592.   
  593. -     .text
  594. -     .even
  595. -     .globl    __subdf3, ___subdf3
  596. -     .globl    __adddf3, ___adddf3
  597.   __subdf3:
  598.   ___subdf3:
  599.       eorb    #0x80,sp@(12)    | reverse sign of v
  600. --- 23,28 ----
  601. ***************
  602. *** 157,172 ****
  603.   | is coded directly by
  604.   |    .long    0x0c688900, 0xfff067f8
  605.   
  606. -     .text
  607. -     .even
  608. -     .globl    __subdf3, ___subdf3
  609. -     .globl    __adddf3, ___adddf3
  610.   __subdf3:
  611.   ___subdf3:
  612.   | double precision subtraction
  613.   | sub second arg from fp0
  614. !     lea    0xfffa50,a0
  615.       movew    #0x5400,a0@(comm)    | load first argument to fp0
  616.       cmpiw    #0x8900,a0@(resp)    | check
  617.       movel    a7@(4),a0@
  618. --- 157,167 ----
  619.   | is coded directly by
  620.   |    .long    0x0c688900, 0xfff067f8
  621.   
  622.   __subdf3:
  623.   ___subdf3:
  624.   | double precision subtraction
  625.   | sub second arg from fp0
  626. !     lea    0xfffffa50:w,a0
  627.       movew    #0x5400,a0@(comm)    | load first argument to fp0
  628.       cmpiw    #0x8900,a0@(resp)    | check
  629.       movel    a7@(4),a0@
  630. ***************
  631. *** 183,189 ****
  632.   
  633.   __adddf3:
  634.   ___adddf3:
  635. !     lea    0xfffa50,a0
  636.       movew    #0x5400,a0@(comm)        | load fp0
  637.       cmpiw    #0x8900,a0@(resp)        | got it?
  638.       movel    a7@(4),a0@            | take a hi from stack to FPU
  639. --- 178,184 ----
  640.   
  641.   __adddf3:
  642.   ___adddf3:
  643. !     lea    0xfffffa50:w,a0
  644.       movew    #0x5400,a0@(comm)        | load fp0
  645.       cmpiw    #0x8900,a0@(resp)        | got it?
  646.       movel    a7@(4),a0@            | take a hi from stack to FPU
  647. *** 1.1    1992/02/04 17:11:06
  648. --- _addsubs.cpp    1992/10/09 20:46:12
  649. ***************
  650. *** 1,12 ****
  651.   #ifndef    __M68881__
  652.   # ifndef sfp004
  653. - | single floating point add/subtract routine
  654.   |
  655.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  656.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  657.   |
  658. - |
  659.   | Revision 1.3, kub 01-90 :
  660.   | added support for denormalized numbers
  661.   |
  662. --- 1,16 ----
  663. + |
  664. + | single floating point add/subtract routine
  665. + |
  666.   #ifndef    __M68881__
  667. +     .text
  668. +     .even
  669. +     .globl    __subsf3, ___subsf3
  670. +     .globl    __addsf3, ___addsf3
  671.   # ifndef sfp004
  672.   |
  673.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  674.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  675.   |
  676.   | Revision 1.3, kub 01-90 :
  677.   | added support for denormalized numbers
  678.   |
  679. ***************
  680. *** 21,31 ****
  681.   | Revision 1.0:
  682.   | original 8088 code from P.S.Housel for double floats
  683.   
  684. -     .text
  685. -     .even
  686. -     .globl    __subsf3, ___subsf3
  687. -     .globl    __addsf3, ___addsf3
  688.   __subsf3:
  689.   ___subsf3:
  690.       eorb    #0x80,sp@(8)    | reverse sign of v
  691. --- 25,30 ----
  692. ***************
  693. *** 152,165 ****
  694.   | is coded directly by
  695.   |    .long    0x0c688900, 0xfff067f8
  696.   
  697. -     .text
  698. -     .even
  699. -     .globl    __subsf3, ___subsf3
  700. -     .globl    __addsf3, ___addsf3
  701.   __subsf3:
  702.   ___subsf3:
  703. !     lea    0xfffa50,a0
  704.       movew    #0x4400,a0@(comm)    | load first argument to fp0
  705.       cmpiw    #0x8900,a0@(resp)    | check
  706.       movel    a7@(4),a0@
  707. --- 151,159 ----
  708.   | is coded directly by
  709.   |    .long    0x0c688900, 0xfff067f8
  710.   
  711.   __subsf3:
  712.   ___subsf3:
  713. !     lea    0xfffffa50:w,a0
  714.       movew    #0x4400,a0@(comm)    | load first argument to fp0
  715.       cmpiw    #0x8900,a0@(resp)    | check
  716.       movel    a7@(4),a0@
  717. ***************
  718. *** 173,179 ****
  719.   
  720.   __addsf3:
  721.   ___addsf3:
  722. !     lea    0xfffa50,a0
  723.       movew    #0x4400,a0@(comm)        | load fp0
  724.       cmpiw    #0x8900,a0@(resp)        | got it?
  725.       movel    a7@(4),a0@            | take a from stack to FPU
  726. --- 167,173 ----
  727.   
  728.   __addsf3:
  729.   ___addsf3:
  730. !     lea    0xfffffa50:w,a0
  731.       movew    #0x4400,a0@(comm)        | load fp0
  732.       cmpiw    #0x8900,a0@(resp)        | got it?
  733.       movel    a7@(4),a0@            | take a from stack to FPU
  734. *** 1.2    1992/04/13 15:50:45
  735. --- _cmpdf2.s    1992/10/09 20:46:12
  736. ***************
  737. *** 29,35 ****
  738.       bpl    1f
  739.       negl    d1        | negate
  740.       negxl    d0
  741. !     eorl    #0x80000000,d0    | toggle sign bit
  742.   1:
  743.       exg    a0,d0
  744.       exg    a1,d1
  745. --- 29,35 ----
  746.       bpl    1f
  747.       negl    d1        | negate
  748.       negxl    d0
  749. !     bchg    #31,d0        | toggle sign bit
  750.   1:
  751.       exg    a0,d0
  752.       exg    a1,d1
  753. ***************
  754. *** 37,43 ****
  755.       bpl    2f
  756.       negl    d1        | negate
  757.       negxl    d0
  758. !     eorl    #0x80000000,d0    | toggle sign bit
  759.   2:
  760.       cmpl    d0,a0
  761.       blt    lt
  762. --- 37,43 ----
  763.       bpl    2f
  764.       negl    d1        | negate
  765.       negxl    d0
  766. !     bchg    #31,d0        | toggle sign bit
  767.   2:
  768.       cmpl    d0,a0
  769.       blt    lt
  770. *** 1.2    1992/04/13 15:50:45
  771. --- _cmpsf2.s    1992/10/09 20:46:12
  772. ***************
  773. *** 28,39 ****
  774.       tstl    d1        | check sign bit
  775.       bpl    1f
  776.       negl    d1        | negate
  777. !     eorl    #0x80000000,d1    | toggle sign bit
  778.   1:
  779.       tstl    d0        | check sign bit
  780.       bpl    2f
  781.       negl    d0        | negate
  782. !     eorl    #0x80000000,d0    | toggle sign bit
  783.   2:
  784.       cmpl    d1,d0
  785.       blt    lt
  786. --- 28,39 ----
  787.       tstl    d1        | check sign bit
  788.       bpl    1f
  789.       negl    d1        | negate
  790. !     bchg    #31,d1        | toggle sign bit
  791.   1:
  792.       tstl    d0        | check sign bit
  793.       bpl    2f
  794.       negl    d0        | negate
  795. !     bchg    #31,d0        | toggle sign bit
  796.   2:
  797.       cmpl    d1,d0
  798.       blt    lt
  799. *** 1.1    1992/02/04 17:11:06
  800. --- _divdf3.cpp    1992/10/09 20:46:12
  801. ***************
  802. *** 1,56 ****
  803. - #if !defined (__M68881__) && !defined (sfp004)
  804. - | double floating point divide routine
  805. - |
  806. - | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  807. - | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  808. - |
  809. - |
  810. - | Revision 1.2, kub 01-90 :
  811. - | added support for denormalized numbers
  812.   |
  813. ! | Revision 1.1, kub 12-89 :
  814. ! | Ported over to 68k assembler
  815.   |
  816. ! | Revision 1.0:
  817. ! | original 8088 code from P.S.Housel
  818. ! BIAS8    =    0x3FF-1
  819.       .text
  820.       .even
  821.       .globl    __divdf3, ___divdf3
  822.       .globl    __infinitydf
  823. - # ifdef    ERROR_CHECK
  824.   LC0:
  825.       .ascii "floating point division by 0\12\15\0"
  826.       .even
  827. ! # endif    ERROR_CHECK
  828.   
  829.   __divdf3:
  830.   ___divdf3:
  831. ! # ifdef    ERROR_CHECK
  832.       tstl    a7@(12)            | check if divisor is 0
  833.       bne    continue
  834.       tstl    a7@(16)
  835.       bne    continue
  836.   
  837. !     moveml    d0-d1,a7@-
  838. !     pea    LC0
  839. !     pea    __iob+52    |
  840.       jbsr    _fprintf    |
  841.       addql    #8,a7        |
  842. -     moveml    a7@+,d0-d1
  843.                       | set _errno to ERANGE
  844. ! #  ifdef __MSHORT__
  845. !     movew    #63,_errno
  846. ! #  else
  847. !     movel    #63,_errno
  848. ! #  endif
  849. !     movel    #0x7ff00000,d0        | return signed infinity 
  850. !     clrl    d1            |
  851.       btst    #31,a7@(4)        | transfer sign of dividend
  852.       beq    clear            | (mjr++)
  853.       bset    #31,d0            |
  854. --- 1,34 ----
  855.   |
  856. ! | double floating point divide routine
  857.   |
  858. ! #ifndef __M68881__
  859.       .text
  860.       .even
  861.       .globl    __divdf3, ___divdf3
  862. + #ifdef    ERROR_CHECK
  863. + #include "errbase.h"
  864.       .globl    __infinitydf
  865.   LC0:
  866.       .ascii "floating point division by 0\12\15\0"
  867.       .even
  868. ! #endif    ERROR_CHECK
  869.   
  870.   __divdf3:
  871.   ___divdf3:
  872. ! #ifdef    ERROR_CHECK
  873.       tstl    a7@(12)            | check if divisor is 0
  874.       bne    continue
  875.       tstl    a7@(16)
  876.       bne    continue
  877.   
  878. !     pea    pc@(LC0)
  879. !     pea    Stderr
  880.       jbsr    _fprintf    |
  881.       addql    #8,a7        |
  882.                       | set _errno to ERANGE
  883. !     moveq    #ERANGE,d0
  884. !     Emove    d0,Errno
  885. !     moveml    __infinitydf,d0-d1    | return signed infinity 
  886.       btst    #31,a7@(4)        | transfer sign of dividend
  887.       beq    clear            | (mjr++)
  888.       bset    #31,d0            |
  889. ***************
  890. *** 60,66 ****
  891.       rts
  892.   continue:
  893.   
  894. ! # endif    ERROR_CHECK
  895.   
  896.       lea    sp@(4),a0    | pointer to parameters u and v
  897.       moveml    d2-d7,sp@-    | save registers
  898. --- 38,59 ----
  899.       rts
  900.   continue:
  901.   
  902. ! #endif    /* ERROR_CHECK */
  903. ! #ifndef sfp004
  904. ! |
  905. ! | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  906. ! | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  907. ! |
  908. ! | Revision 1.2, kub 01-90 :
  909. ! | added support for denormalized numbers
  910. ! |
  911. ! | Revision 1.1, kub 12-89 :
  912. ! | Ported over to 68k assembler
  913. ! |
  914. ! | Revision 1.0:
  915. ! | original 8088 code from P.S.Housel
  916. ! BIAS8    =    0x3FF-1
  917.   
  918.       lea    sp@(4),a0    | pointer to parameters u and v
  919.       moveml    d2-d7,sp@-    | save registers
  920. ***************
  921. *** 148,154 ****
  922.       rts            | no normalization needed
  923.   
  924.   #ifndef    ERROR_CHECK
  925. ! divz:    moveml    __infinitydf,d0-d1 | return infinty value
  926.       moveml    sp@+,d2-d7    | should really cause trap ?!?
  927.   
  928.       btst    #31,a7@(4)        | transfer sign of dividend
  929. --- 141,148 ----
  930.       rts            | no normalization needed
  931.   
  932.   #ifndef    ERROR_CHECK
  933. ! | NOTE: __infinitydf is in the text segment
  934. ! divz: moveml  __infinitydf,d0-d1 | return infinity value
  935.       moveml    sp@+,d2-d7    | should really cause trap ?!?
  936.   
  937.       btst    #31,a7@(4)        | transfer sign of dividend
  938. ***************
  939. *** 161,168 ****
  940.   
  941.   #endif    ERROR_CHECK
  942.   
  943. ! #endif
  944. ! #ifdef    sfp004
  945.   
  946.   | double precision floating point stuff for Atari-gcc using the SFP004
  947.   | developed with gas
  948. --- 155,161 ----
  949.   
  950.   #endif    ERROR_CHECK
  951.   
  952. ! #else
  953.   
  954.   | double precision floating point stuff for Atari-gcc using the SFP004
  955.   | developed with gas
  956. ***************
  957. *** 190,240 ****
  958.   | is coded directly by
  959.   |    .long    0x0c688900, 0xfff067f8
  960.   
  961. ! # ifdef    ERROR_CHECK
  962. ! LC0:
  963. !     .ascii "floating point division by 0\12\15\0"
  964. !     .even
  965. ! # endif    ERROR_CHECK
  966. !     .text
  967. !     .even
  968. !     .globl    __divdf3, ___divdf3
  969. ! __divdf3:
  970. ! ___divdf3:
  971. ! # ifdef    ERROR_CHECK
  972. !     tstl    a7@(12)            | check if divisor is 0
  973. !     bne    continue
  974. !     tstl    a7@(16)
  975. !     bne    continue
  976. !     moveml    d0-d7/a0-a6,a7@-    | print error message
  977. !     pea    LC0
  978. !     movew    #9,a7@-
  979. !     trap    #1
  980. !     addql    #6,a7
  981. !     moveml    a7@+,d0-d7/a0-a6
  982. !                     | set _errno to ERANGE
  983. ! #  ifdef __MSHORT__
  984. !     movew    #63,_errno
  985. ! #  else
  986. !     movel    #63,_errno
  987. ! #  endif
  988. !     movel    #0x7ff00000,d0        | return signed infinity 
  989. !     clrl    d1            |
  990. !     btst    #31,a7@(4)        | transfer sign of dividend
  991. !     beq    clear            | (mjr++)
  992. !     bset    #31,d0            |
  993. !     rts                |
  994. ! clear:                    |
  995. !     bclr    #31,d0            |
  996. !     rts
  997. ! continue:
  998. ! # endif    ERROR_CHECK
  999. !     lea    0xfffa50,a0
  1000.       movew    #0x5400,a0@(comm)    | load first argument to fp0
  1001.       cmpiw    #0x8900,a0@(resp)    | check
  1002.       movel    a7@(4),a0@
  1003. --- 183,189 ----
  1004.   | is coded directly by
  1005.   |    .long    0x0c688900, 0xfff067f8
  1006.   
  1007. !     lea    0xfffffa50:w,a0
  1008.       movew    #0x5400,a0@(comm)    | load first argument to fp0
  1009.       cmpiw    #0x8900,a0@(resp)    | check
  1010.       movel    a7@(4),a0@
  1011. ***************
  1012. *** 249,251 ****
  1013. --- 198,201 ----
  1014.       movel    a0@,d1
  1015.        rts
  1016.   #endif    sfp004
  1017. + #endif /* !__M68881__ */
  1018. *** 1.1    1992/02/04 17:11:06
  1019. --- _divsf3.cpp    1992/10/09 20:46:13
  1020. ***************
  1021. *** 1,30 ****
  1022. - #if !defined (__M68881__) && !defined (sfp004)
  1023. - | single floating point divide routine
  1024. - |
  1025. - | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  1026. - | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  1027. - |
  1028. - |
  1029. - | Revision 1.2, kub 01-90 :
  1030. - | added support for denormalized numbers
  1031.   |
  1032. ! | Revision 1.1, kub 12-89 :
  1033. ! | Created single float version for 68000
  1034.   |
  1035. ! | Revision 1.0:
  1036. ! | original 8088 code from P.S.Housel for double floats
  1037. ! BIAS4    =    0x7F-1
  1038.       .text
  1039.       .even
  1040.       .globl    __divsf3, ___divsf3
  1041.       .globl    __infinitysf
  1042.   
  1043. - #ifdef    ERROR_CHECK
  1044.   LC0:
  1045. !     .ascii "FLOATING POINT DIVISION by 0\12\15\0"
  1046.       .even
  1047.   #endif    ERROR_CHECK
  1048.   
  1049. --- 1,16 ----
  1050.   |
  1051. ! | single floating point divide routine
  1052.   |
  1053. ! #ifndef __M68881__
  1054.       .text
  1055.       .even
  1056.       .globl    __divsf3, ___divsf3
  1057. + #ifdef    ERROR_CHECK
  1058. + #include "errbase.h"
  1059.       .globl    __infinitysf
  1060.   
  1061.   LC0:
  1062. !     .ascii "floating point division by 0\12\15\0"
  1063.       .even
  1064.   #endif    ERROR_CHECK
  1065.   
  1066. ***************
  1067. *** 31,52 ****
  1068.   __divsf3:
  1069.   ___divsf3:
  1070.   
  1071. ! # ifdef    ERROR_CHECK
  1072.       tstl    a7@(8)            | check if divisor is 0
  1073.       bne    no_exception
  1074.   
  1075. !     moveml    d0-d1,a7@-
  1076. !     pea    LC0
  1077. !     pea    __iob+52    |
  1078.       jbsr    _fprintf    |
  1079.       addql    #8,a7        |
  1080. -     moveml    a7@+,d0-d1
  1081.                       | set _errno to ERANGE
  1082. ! #  ifdef __MSHORT__
  1083. !     movew    #63,_errno
  1084. ! #  else
  1085. !     movel    #63,_errno
  1086. ! #  endif
  1087.       movel    __infinitysf,d0        | return signed infinity 
  1088.       btst    #31,a7@(4)        | transfer sign of dividend
  1089.       beq    clear            | (mjr++)
  1090. --- 17,33 ----
  1091.   __divsf3:
  1092.   ___divsf3:
  1093.   
  1094. ! #ifdef    ERROR_CHECK
  1095.       tstl    a7@(8)            | check if divisor is 0
  1096.       bne    no_exception
  1097.   
  1098. !     pea    pc@(LC0)
  1099. !     pea    Stderr
  1100.       jbsr    _fprintf    |
  1101.       addql    #8,a7        |
  1102.                       | set _errno to ERANGE
  1103. !     moveq    #ERANGE,d0
  1104. !     Emove    d0,Errno
  1105.       movel    __infinitysf,d0        | return signed infinity 
  1106.       btst    #31,a7@(4)        | transfer sign of dividend
  1107.       beq    clear            | (mjr++)
  1108. ***************
  1109. *** 56,64 ****
  1110.       rts
  1111.   
  1112.   no_exception:
  1113.   
  1114. ! # endif    ERROR_CHECK
  1115.   
  1116.       lea    sp@(4),a0    | pointer to parameters u and v
  1117.       moveml    d2-d5,sp@-    | save registers
  1118.       moveml    a0@,d4/d5    | d4 = u, d5 = v
  1119. --- 37,60 ----
  1120.       rts
  1121.   
  1122.   no_exception:
  1123. + #endif    ERROR_CHECK
  1124.   
  1125. ! #ifndef sfp004
  1126. ! |
  1127. ! | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  1128. ! | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  1129. ! |
  1130. ! | Revision 1.2, kub 01-90 :
  1131. ! | added support for denormalized numbers
  1132. ! |
  1133. ! | Revision 1.1, kub 12-89 :
  1134. ! | Created single float version for 68000
  1135. ! |
  1136. ! | Revision 1.0:
  1137. ! | original 8088 code from P.S.Housel for double floats
  1138.   
  1139. + BIAS4    =    0x7F-1
  1140.       lea    sp@(4),a0    | pointer to parameters u and v
  1141.       moveml    d2-d5,sp@-    | save registers
  1142.       moveml    a0@,d4/d5    | d4 = u, d5 = v
  1143. ***************
  1144. *** 140,147 ****
  1145.       bclr    #31,d0        |
  1146.       rts
  1147.   # endif    ERROR_CHECK
  1148. ! #endif    /* !__M68881__ && !sfp004    */
  1149. ! #ifdef    sfp004
  1150.   
  1151.   | single precision floating point stuff for Atari-gcc using the SFP004
  1152.   | or compatible boards with a memory mapped 68881 
  1153. --- 136,142 ----
  1154.       bclr    #31,d0        |
  1155.       rts
  1156.   # endif    ERROR_CHECK
  1157. ! #else
  1158.   
  1159.   | single precision floating point stuff for Atari-gcc using the SFP004
  1160.   | or compatible boards with a memory mapped 68881 
  1161. ***************
  1162. *** 172,221 ****
  1163.   | is coded directly by
  1164.   |    .long    0x0c688900, 0xfff067f8
  1165.   
  1166. !     .text
  1167. !     .even
  1168. !     .globl    __divsf3, ___divsf3
  1169. ! #ifdef    ERROR_CHECK
  1170. ! LC0:
  1171. !     .ascii "FLOATING POINT DIVISION by 0\12\15\0"
  1172. !     .even
  1173. ! #endif    ERROR_CHECK
  1174. ! __divsf3:
  1175. ! ___divsf3:
  1176. ! #ifdef    ERROR_CHECK
  1177. !     tstl    a7@(8)            | check if divisor is 0
  1178. !     bne    no_exception
  1179. !     moveml    d0-d7/a0-a6,a7@-    | print error message
  1180. !     pea    LC0
  1181. !     movew    #9,a7@-
  1182. !     trap    #1
  1183. !     addql    #6,a7
  1184. !     moveml    a7@+,d0-d7/a0-a6
  1185. !                     | set _errno to ERANGE
  1186. ! #ifdef __MSHORT__
  1187. !     movew    #63,_errno
  1188. ! #else
  1189. !     movel    #63,_errno
  1190. ! #endif
  1191. !     movel    __infinitysf,d0        | return signed infinity 
  1192. !     btst    #31,a7@(4)        | transfer sign of dividend
  1193. !     beq    clear            | (mjr++)
  1194. !     bset    #31,d0            |
  1195. !     rts                |
  1196. ! clear:                    |
  1197. !     bclr    #31,d0            |
  1198. !     rts
  1199. ! no_exception:
  1200. ! #endif    ERROR_CHECK
  1201. !     lea    0xfffa50,a0
  1202.       movew    #0x4400,a0@(comm)    | load first argument to fp0
  1203.       cmpiw    #0x8900,a0@(resp)    | check
  1204.       movel    a7@(4),a0@
  1205. --- 167,173 ----
  1206.   | is coded directly by
  1207.   |    .long    0x0c688900, 0xfff067f8
  1208.   
  1209. !     lea    0xfffffa50:w,a0
  1210.       movew    #0x4400,a0@(comm)    | load first argument to fp0
  1211.       cmpiw    #0x8900,a0@(resp)    | check
  1212.       movel    a7@(4),a0@
  1213. ***************
  1214. *** 228,230 ****
  1215. --- 180,183 ----
  1216.       rts                | if ERROR_CHECK is disabled
  1217.   
  1218.   #endif    sfp004
  1219. + #endif /* !__M68881__ */
  1220. *** 1.1    1992/02/04 17:11:06
  1221. --- _extends.cpp    1992/10/09 20:46:13
  1222. ***************
  1223. *** 1,12 ****
  1224. - #ifndef    __M68881__
  1225. - # ifndef sfp004
  1226.   |
  1227.   | single float to double float conversion routine
  1228.   |
  1229.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  1230.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  1231.   |
  1232. - |
  1233.   | Revision 1.2, kub 01-90 :
  1234.   | added support for denormalized numbers
  1235.   |
  1236. --- 1,19 ----
  1237.   |
  1238.   | single float to double float conversion routine
  1239.   |
  1240. +     .text
  1241. +     .even
  1242. +     .globl    __extendsfdf2, ___extendsfdf2
  1243. + __extendsfdf2:
  1244. + ___extendsfdf2:
  1245. + #ifndef    __M68881__
  1246. + # ifndef sfp004
  1247. + |
  1248.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  1249.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  1250.   |
  1251.   | Revision 1.2, kub 01-90 :
  1252.   | added support for denormalized numbers
  1253.   |
  1254. ***************
  1255. *** 19,30 ****
  1256.   BIAS4    =    0x7F-1
  1257.   BIAS8    =    0x3FF-1
  1258.   
  1259. -     .text
  1260. -     .even
  1261. -     .globl    __extendsfdf2, ___extendsfdf2
  1262. - __extendsfdf2:
  1263. - ___extendsfdf2:
  1264.       lea    sp@(4),a0    | parameter pointer
  1265.       moveml    d2-d7,sp@-    | save regs to keep norm_df happy
  1266.       movel    a0@,d4        | get number
  1267. --- 26,31 ----
  1268. ***************
  1269. *** 76,88 ****
  1270.   | is coded directly by
  1271.   |    .long    0x0c688900, 0xfff067f8
  1272.   
  1273. !     .text
  1274. !     .even
  1275. !     .globl    __extendsfdf2, ___extendsfdf2
  1276. ! __extendsfdf2:
  1277. ! ___extendsfdf2:
  1278. !     lea    0xfffa50,a0
  1279.       movew    #0x4400,a0@(comm)    | load argument to fp0
  1280.       cmpiw    #0x8900,a0@(resp)    | check
  1281.       movel    a7@(4),a0@        | now push arg
  1282. --- 77,83 ----
  1283.   | is coded directly by
  1284.   |    .long    0x0c688900, 0xfff067f8
  1285.   
  1286. !     lea    0xfffffa50:w,a0
  1287.       movew    #0x4400,a0@(comm)    | load argument to fp0
  1288.       cmpiw    #0x8900,a0@(resp)    | check
  1289.       movel    a7@(4),a0@        | now push arg
  1290. ***************
  1291. *** 110,121 ****
  1292.   | no NAN checking implemented since the 68881 treats this situation "correct",
  1293.   | i.e. according to IEEE
  1294.   
  1295. -     .text
  1296. -     .even
  1297. -     .globl    __extendsfdf2, ___extendsfdf2
  1298. - __extendsfdf2:
  1299. - ___extendsfdf2:
  1300.       fmoves    a7@(4),fp0    | load argument to fp0
  1301.       fmoved    fp0,a7@-    | read back as double
  1302.       moveml    a7@+,d0-d1
  1303. --- 105,110 ----
  1304. *** 1.2    1992/04/13 15:50:45
  1305. --- _fixdfsi.cpp    1992/10/09 20:46:13
  1306. ***************
  1307. *** 2,21 ****
  1308.   |  double float to long conversion routine
  1309.   |
  1310.   | M. Ritzert (ritzert@DFG.DBP.DE)
  1311.       .text
  1312.       .even
  1313.   
  1314.   #ifdef ERROR_CHECK
  1315.   _Overflow:
  1316.       .ascii "OVERFLOW\0"
  1317.   _Error_String:
  1318.       .ascii "_fixdfsi: %s error\n\0"
  1319.   .even
  1320.   #endif ERROR_CHECK
  1321.   
  1322.   #ifdef sfp004
  1323.   |
  1324.   | 4.10.1990/10.1.1992
  1325. --- 2,23 ----
  1326.   |  double float to long conversion routine
  1327.   |
  1328.   | M. Ritzert (ritzert@DFG.DBP.DE)
  1329.       .text
  1330.       .even
  1331. +     .globl    __fixdfsi, ___fixdfsi
  1332.   
  1333.   #ifdef ERROR_CHECK
  1334. ! #include "errbase.h"
  1335.   _Overflow:
  1336.       .ascii "OVERFLOW\0"
  1337.   _Error_String:
  1338.       .ascii "_fixdfsi: %s error\n\0"
  1339.   .even
  1340.   #endif ERROR_CHECK
  1341.   
  1342. + __fixdfsi:
  1343. + ___fixdfsi:
  1344.   #ifdef sfp004
  1345.   |
  1346.   | 4.10.1990/10.1.1992
  1347. ***************
  1348. *** 35,44 ****
  1349.   | is coded directly by
  1350.   |    .long    0x0c688900, 0xfff067f8
  1351.   
  1352. !     .globl    __fixdfsi, ___fixdfsi
  1353. ! __fixdfsi:
  1354. ! ___fixdfsi:
  1355. !     lea    0xfffa50,a0
  1356.       movew    #0x5403,a0@(comm)    | fintrz to fp0
  1357.       cmpiw    #0x8900,a0@(resp)    | check
  1358.       movel    a7@(4),a0@
  1359. --- 37,43 ----
  1360.   | is coded directly by
  1361.   |    .long    0x0c688900, 0xfff067f8
  1362.   
  1363. !     lea    0xfffffa50:w,a0
  1364.       movew    #0x5403,a0@(comm)    | fintrz to fp0
  1365.       cmpiw    #0x8900,a0@(resp)    | check
  1366.       movel    a7@(4),a0@
  1367. ***************
  1368. *** 62,70 ****
  1369.   | 30.11.1991/10.1.1992
  1370.   |
  1371.   
  1372. -     .globl    __fixdfsi, ___fixdfsi
  1373. - __fixdfsi:
  1374. - ___fixdfsi:
  1375.       fintrzd sp@(4),fp0        | convert the arg
  1376.       fmovel fp0,d0            | return
  1377.   
  1378. --- 61,66 ----
  1379. ***************
  1380. *** 97,108 ****
  1381.   
  1382.   BIAS8    =    0x3FF-1
  1383.   
  1384. -     .text
  1385. -     .even
  1386. -     .globl    __fixdfsi, ___fixdfsi
  1387. - __fixdfsi:
  1388. - ___fixdfsi:
  1389.       lea    sp@(4),a0    | pointer to parameters
  1390.       moveml    d2/d3,sp@-    | save registers
  1391.       moveml    a0@,d0-d1    | get the number
  1392. --- 93,98 ----
  1393. ***************
  1394. *** 154,191 ****
  1395.   
  1396.   toobig:
  1397.       movel    #0x7fffffff,d0    | ugh. Should cause a trap here.
  1398.   
  1399. ! #endif !defined (sfp004) && !defined (__M68881__)
  1400.   
  1401.   #ifdef    ERROR_CHECK
  1402.   
  1403.   | all three versions
  1404.       cmpil    #0x7fffffff,d0    | >= long_max
  1405. !     bge    error_plus    |
  1406.       cmpil    #-0x7fffffff,d0    | <= long_min ?
  1407. !     ble    error_minus    |
  1408. !     rts            |
  1409. ! error_minus:
  1410. !     moveml    d0-d1,a7@-
  1411. !     movel    #63,_errno    | errno = ERANGE
  1412. !     pea    _Overflow    | for printf
  1413. !     bra    error_exit    |
  1414. ! error_plus:
  1415.       moveml    d0-d1,a7@-
  1416. !     movel    #63,_errno    | errno = ERANGE
  1417. !     pea    _Overflow    | for printf
  1418. !     bra    error_exit    |
  1419. ! error_exit:
  1420. !     pea    _Error_String    |
  1421. !     pea    __iob+52    |
  1422.       jbsr    _fprintf    |
  1423.       addl    #12,a7        |
  1424.       moveml    a7@+,d0-d1
  1425. ! #endif    ERROR_CHECK
  1426.   
  1427. - # if !defined (sfp004) && !defined (__M68881__)
  1428. -     bra    8b
  1429. - #else
  1430.       rts
  1431. - #endif
  1432. --- 144,171 ----
  1433.   
  1434.   toobig:
  1435.       movel    #0x7fffffff,d0    | ugh. Should cause a trap here.
  1436. +     moveml    sp@+,d2/d3
  1437.   
  1438. ! #endif /* !defined (sfp004) && !defined (__M68881__) */
  1439.   
  1440.   #ifdef    ERROR_CHECK
  1441.   
  1442.   | all three versions
  1443.       cmpil    #0x7fffffff,d0    | >= long_max
  1444. !     bge    error_msg
  1445.       cmpil    #-0x7fffffff,d0    | <= long_min ?
  1446. !     ble    error_msg
  1447. !     rts
  1448. ! error_msg:
  1449.       moveml    d0-d1,a7@-
  1450. !     moveq    #ERANGE,d0
  1451. !     Emove    d0,Errno
  1452. !     pea    pc@(_Overflow)    | for printf
  1453. !     pea    pc@(_Error_String)    |
  1454. !     pea    Stderr
  1455.       jbsr    _fprintf    |
  1456.       addl    #12,a7        |
  1457.       moveml    a7@+,d0-d1
  1458. ! #endif    /* ERROR_CHECK */
  1459.   
  1460.       rts
  1461. *** 1.1    1992/04/13 15:50:45
  1462. --- _fixsfsi.cpp    1992/10/09 20:46:13
  1463. ***************
  1464. *** 9,14 ****
  1465. --- 9,17 ----
  1466.   
  1467.       .text
  1468.       .even
  1469. +     .globl    ___fixsfsi
  1470. + ___fixsfsi:
  1471.   
  1472.   #ifdef sfp004
  1473.   
  1474. ***************
  1475. *** 16,24 ****
  1476.   resp =    -16
  1477.   zahl =      0
  1478.   
  1479. !     .globl    ___fixsfsi
  1480. ! ___fixdfsi:
  1481. !     lea    0xfffa50,a0
  1482.       movew    #0x5403,a0@(comm)    | fintrz to fp0
  1483.       cmpiw    #0x8900,a0@(resp)    | check
  1484.       movel    a7@(4),a0@
  1485. --- 19,25 ----
  1486.   resp =    -16
  1487.   zahl =      0
  1488.   
  1489. !     lea    0xfffffa50:w,a0
  1490.       movew    #0x5403,a0@(comm)    | fintrz to fp0
  1491.       cmpiw    #0x8900,a0@(resp)    | check
  1492.       movel    a7@(4),a0@
  1493. ***************
  1494. *** 33,40 ****
  1495.   
  1496.   BIAS4    =    0x7F-1
  1497.   
  1498. -     .globl    ___fixsfsi
  1499. - ___fixsfsi:
  1500.       movel    sp@(4),d0    | get number
  1501.       movel    d2,sp@-        | save register
  1502.       movel    d0,d1
  1503. --- 34,39 ----
  1504. *** 1.2    1992/06/01 01:54:10
  1505. --- _fltsi.cpp    1992/10/09 20:46:13
  1506. ***************
  1507. *** 1,11 ****
  1508. - #ifdef __M68881__
  1509.   |
  1510.   | long integer to double float conversion routine
  1511.   |
  1512. - | Written by M.Ritzert
  1513. - | 22.11.91
  1514. - | ritzert@dfg.dbp.de
  1515. - |
  1516.       .text
  1517.       .even
  1518.       .globl    __floatsidf, ___floatsidf
  1519. --- 1,6 ----
  1520. ***************
  1521. *** 12,17 ****
  1522. --- 7,18 ----
  1523.   
  1524.   __floatsidf:
  1525.   ___floatsidf:
  1526. + #ifdef __M68881__
  1527. + |
  1528. + | Written by M.Ritzert
  1529. + | 22.11.91
  1530. + | ritzert@dfg.dbp.de
  1531. + |
  1532.       fintrzd a7@(4),fp0        | load long int to fp0
  1533.       fmoved    fp0,a7@-        | get double from fp0
  1534.       moveml    a7@+,d0-d1
  1535. ***************
  1536. *** 19,26 ****
  1537.   
  1538.   #endif    __M68881__
  1539.   #ifdef    sfp004
  1540. - | long integer to double float conversion routine
  1541.   |
  1542.   | Written by M.Ritzert
  1543.   | 5.10.90
  1544. --- 20,25 ----
  1545. ***************
  1546. *** 42,54 ****
  1547.   | is coded directly by
  1548.   |    .long    0x0c688900, 0xfff067f8
  1549.   
  1550. !     .text
  1551. !     .even
  1552. !     .globl    __floatsidf, ___floatsidf
  1553. ! __floatsidf:
  1554. ! ___floatsidf:
  1555. !     lea    0xfffa50,a0
  1556.       movew    #0x4000,a0@(comm)    | load long int to fp0
  1557.       cmpiw    #0x8900,a0@(resp)    | check
  1558.       movel    a7@(4),a0@
  1559. --- 41,47 ----
  1560.   | is coded directly by
  1561.   |    .long    0x0c688900, 0xfff067f8
  1562.   
  1563. !     lea    0xfffffa50:w,a0
  1564.       movew    #0x4000,a0@(comm)    | load long int to fp0
  1565.       cmpiw    #0x8900,a0@(resp)    | check
  1566.       movel    a7@(4),a0@
  1567. ***************
  1568. *** 60,72 ****
  1569.   
  1570.   #endif    sfp004
  1571.   #if !defined    (__M68881__) && !defined (sfp004)
  1572. - | long integer to double float conversion routine
  1573.   |
  1574.   | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  1575.   | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  1576.   |
  1577. - |
  1578.   | Revision 1.2, kub 01-90 :
  1579.   | added support for denormalized numbers
  1580.   |
  1581. --- 53,62 ----
  1582. ***************
  1583. *** 78,89 ****
  1584.   
  1585.   BIAS8    =    0x3FF-1
  1586.   
  1587. -     .text
  1588. -     .even
  1589. -     .globl    __floatsidf, ___floatsidf
  1590. - __floatsidf:
  1591. - ___floatsidf:
  1592.       movel    sp@(4),d0    | get the 4-byte integer
  1593.       moveml    d2-d7,sp@-    | save registers to make norm_df happy
  1594.   
  1595. --- 68,73 ----
  1596. *** 1.1    1992/04/13 15:50:45
  1597. --- _fltsisf.cpp    1992/10/09 20:46:13
  1598. ***************
  1599. *** 5,11 ****
  1600. --- 5,15 ----
  1601.   |  mostly copied from _floatsi.cpp
  1602.   
  1603.   #ifndef __M68881__
  1604. +     .text
  1605. +     .even
  1606. +     .globl    ___floatsisf
  1607.   
  1608. + ___floatsisf:
  1609.   #ifdef    sfp004
  1610.   
  1611.   | addresses of the 68881 data port. This choice is fastest when much data is
  1612. ***************
  1613. *** 15,26 ****
  1614.   resp =    -16    |    fpu response reg
  1615.   zahl =      0    |    fpu data reg
  1616.   
  1617. !     .text
  1618. !     .even
  1619. !     .globl    ___floatsisf
  1620. ! ___floatsisf:
  1621. !     lea    0xfffa50,a0
  1622.       movew    #0x4000,a0@(comm)    | load long int to fp0
  1623.       cmpiw    #0x8900,a0@(resp)    | check
  1624.       movel    a7@(4),a0@
  1625. --- 19,25 ----
  1626.   resp =    -16    |    fpu response reg
  1627.   zahl =      0    |    fpu data reg
  1628.   
  1629. !     lea    0xfffffa50:w,a0
  1630.       movew    #0x4000,a0@(comm)    | load long int to fp0
  1631.       cmpiw    #0x8900,a0@(resp)    | check
  1632.       movel    a7@(4),a0@
  1633. ***************
  1634. *** 35,45 ****
  1635.   
  1636.   BIAS4    =    0x7F-1
  1637.   
  1638. -     .text
  1639. -     .even
  1640. -     .globl    ___floatsisf
  1641. - ___floatsisf:
  1642.       moveml    d2-d5,sp@-    | save registers to make norm_sf happy
  1643.   
  1644.       movel    sp@(20),d4    | prepare result mantissa
  1645. --- 34,39 ----
  1646. *** 1.1    1992/02/04 17:11:06
  1647. --- _fxunsd.cpp    1992/10/09 20:46:13
  1648. ***************
  1649. *** 4,12 ****
  1650.   | mjr
  1651.       .text
  1652.       .even
  1653.   
  1654.   #ifdef ERROR_CHECK
  1655.   _Overflow:
  1656.       .ascii "OVERFLOW\0"
  1657.   _Negative:
  1658. --- 4,13 ----
  1659.   | mjr
  1660.       .text
  1661.       .even
  1662. +     .globl    __fixunsdfsi, ___fixunsdfsi
  1663.   
  1664.   #ifdef ERROR_CHECK
  1665. ! #include "errbase.h"
  1666.   _Overflow:
  1667.       .ascii "OVERFLOW\0"
  1668.   _Negative:
  1669. ***************
  1670. *** 14,29 ****
  1671.   _Error_String:
  1672.       .ascii "_fixunsdfsi: %s error\n\0"
  1673.   .even
  1674.   #endif ERROR_CHECK
  1675.   
  1676. - #ifdef __M68881__
  1677. -     .globl    __fixunsdfsi, ___fixunsdfsi
  1678.   __fixunsdfsi:
  1679.   ___fixunsdfsi:
  1680.   
  1681.       fintrzd a7@(4),fp0        | convert
  1682.       fmovel    fp0,d0
  1683.   
  1684. --- 15,36 ----
  1685.   _Error_String:
  1686.       .ascii "_fixunsdfsi: %s error\n\0"
  1687.   .even
  1688.   #endif ERROR_CHECK
  1689.   
  1690.   __fixunsdfsi:
  1691.   ___fixunsdfsi:
  1692.   
  1693. + #ifdef ERROR_CHECK
  1694. +     tstl    a7@(4)            | negative?
  1695. +     beq    Continue
  1696. +     moveq    #ERANGE,d0
  1697. +     Emove    d0,Errno
  1698. +     pea    pc@(_Negative)
  1699. +     bra    error_exit
  1700. + Continue:
  1701. + #endif /* ERROR_CHECK */
  1702. + #ifdef __M68881__
  1703.       fintrzd a7@(4),fp0        | convert
  1704.       fmovel    fp0,d0
  1705.   
  1706. ***************
  1707. *** 38,52 ****
  1708.   resp =    -16
  1709.   zahl =      0
  1710.   
  1711. !     .text
  1712. !     .even
  1713. !     .globl    __fixunsdfsi, ___fixunsdfsi
  1714. ! __fixunsdfsi:
  1715. ! ___fixunsdfsi:
  1716. !     lea    0xfffa50,a0
  1717. !     tstl    a4@(4)            | negative?
  1718. !     bne    Negative
  1719.       movew    #0x5403,a0@(comm)    | fintrz to fp0
  1720.       cmpiw    #0x8900,a0@(resp)    | check
  1721.       movel    a7@(4),a0@
  1722. --- 45,51 ----
  1723.   resp =    -16
  1724.   zahl =      0
  1725.   
  1726. !     lea    0xfffffa50:w,a0
  1727.       movew    #0x5403,a0@(comm)    | fintrz to fp0
  1728.       cmpiw    #0x8900,a0@(resp)    | check
  1729.       movel    a7@(4),a0@
  1730. ***************
  1731. *** 54,91 ****
  1732.       movew    #0x6000,a0@(comm)    | result to d0
  1733.       .long    0x0c688900, 0xfff067f8
  1734.       movel    a0@,d0
  1735. !     bra    Continue
  1736. ! Negative:
  1737. !     clrl    d0
  1738. ! Continue:
  1739. ! # endif    sfp004
  1740. ! # ifdef    ERROR_CHECK
  1741. !     cmpil    #0x7fffffff,d0    | >= long_max
  1742. !     bge    error_plus    |
  1743. !     cmpil    #0,d0        | < 0 ?
  1744. !     blt    error_minus    |
  1745. !     rts            |
  1746. ! error_minus:
  1747. !     moveml    d0-d1,a7@-
  1748. !     movel    #63,_errno    | errno = ERANGE
  1749. !     pea    _Negative    | for printf
  1750. !     bra    error_exit    |
  1751. ! error_plus:
  1752. !     moveml    d0-d1,a7@-
  1753. !     movel    #63,_errno    | errno = ERANGE
  1754. !     pea    _Overflow    | for printf
  1755. !     bra    error_exit    |
  1756. ! error_exit:
  1757. !     pea    _Error_String    |
  1758. !     pea    __iob+52    |
  1759. !     jbsr    _fprintf    |
  1760. !     addl    #12,a7        |
  1761. !     moveml    a7@+,d0-d1
  1762. !     rts
  1763. ! # else     ERROR_CHECK
  1764. !     rts
  1765. ! # endif    ERROR_CHECK
  1766.   
  1767.   # if !defined (sfp004) && !defined (__M68881__)
  1768.   
  1769. --- 53,59 ----
  1770.       movew    #0x6000,a0@(comm)    | result to d0
  1771.       .long    0x0c688900, 0xfff067f8
  1772.       movel    a0@,d0
  1773. ! #endif    sfp004
  1774.   
  1775.   # if !defined (sfp004) && !defined (__M68881__)
  1776.   
  1777. ***************
  1778. *** 109,120 ****
  1779.   
  1780.   BIAS8    =    0x3FF-1
  1781.   
  1782. -     .text
  1783. -     .even
  1784. -     .globl    __fixunsdfsi, ___fixunsdfsi
  1785. - __fixunsdfsi:
  1786. - ___fixunsdfsi:
  1787.       lea    sp@(4),a0    | pointer to parameters
  1788.       moveml    d4/d5,sp@-    | save registers
  1789.       moveml    a0@,d4-d5    | get the number
  1790. --- 77,82 ----
  1791. ***************
  1792. *** 164,170 ****
  1793.       bra    7b
  1794.   
  1795.   toobig:
  1796.       movel    #0x7fffffff,d0    | ugh. Should cause a trap here.
  1797. -     bra    7b
  1798.   #endif
  1799. --- 126,150 ----
  1800.       bra    7b
  1801.   
  1802.   toobig:
  1803. +     moveml    sp@+,d4/d5
  1804.       movel    #0x7fffffff,d0    | ugh. Should cause a trap here.
  1805.   #endif
  1806. + #ifdef    ERROR_CHECK
  1807. +     cmpil    #0x7fffffff,d0    | >= long_max
  1808. +     bge    error_plus    |
  1809. +     rts
  1810. + error_plus:
  1811. +     moveml    d0-d1,a7@-
  1812. +     moveq    #ERANGE,d0
  1813. +     Emove    d0,Errno
  1814. +     pea    pc@(_Overflow)    | for printf
  1815. + error_exit:
  1816. +     pea    pc@(_Error_String)    |
  1817. +     pea    Stderr
  1818. +     jbsr    _fprintf    |
  1819. +     addl    #12,a7        |
  1820. +     moveml    a7@+,d0-d1
  1821. + #endif    ERROR_CHECK
  1822. +     rts
  1823. *** 1.1    1992/02/04 17:11:06
  1824. --- _muldf3.cpp    1992/10/09 20:46:13
  1825. ***************
  1826. *** 1,6 ****
  1827. --- 1,13 ----
  1828.   | mjr: not needed on the TT
  1829.   
  1830.   #ifndef    __M68881__
  1831. +     .text
  1832. +     .even
  1833. +     .globl    __muldf3, ___muldf3
  1834. + __muldf3:
  1835. + ___muldf3:
  1836.   # ifdef    sfp004
  1837.   
  1838.   | double precision floating point stuff for Atari-gcc using the SFP004
  1839. ***************
  1840. *** 30,42 ****
  1841.   | is coded directly by
  1842.   |    .long    0x0c688900, 0xfff067f8
  1843.   
  1844. !     .text
  1845. !     .even
  1846. !     .globl    __muldf3, ___muldf3
  1847. ! __muldf3:
  1848. ! ___muldf3:
  1849. !     lea    0xfffa50,a0
  1850.       movew    #0x5400,a0@(comm)    | load first argument to fp0
  1851.       cmpiw    #0x8900,a0@(resp)    | check
  1852.       movel    a7@(4),a0@
  1853. --- 37,43 ----
  1854.   | is coded directly by
  1855.   |    .long    0x0c688900, 0xfff067f8
  1856.   
  1857. !     lea    0xfffffa50:w,a0
  1858.       movew    #0x5400,a0@(comm)    | load first argument to fp0
  1859.       cmpiw    #0x8900,a0@(resp)    | check
  1860.       movel    a7@(4),a0@
  1861. ***************
  1862. *** 70,81 ****
  1863.   
  1864.   BIAS8    =    0x3FF-1
  1865.   
  1866. -     .text
  1867. -     .even
  1868. -     .globl    __muldf3, ___muldf3
  1869. - __muldf3:
  1870. - ___muldf3:
  1871.       lea    sp@(4),a0
  1872.       moveml    d2-d7,sp@-
  1873.       moveml    a0@,d4-d5/d6-d7 | d4-d5 = v, d6-d7 = u
  1874. --- 71,76 ----
  1875. *** 1.1    1992/02/04 17:11:06
  1876. --- _mulsf3.cpp    1992/10/09 20:46:14
  1877. ***************
  1878. *** 1,6 ****
  1879. --- 1,14 ----
  1880.   | mjr: not needed on the TT
  1881.   
  1882.   #ifndef    __M68881__
  1883. +     .text
  1884. +     .even
  1885. +     .globl    __mulsf3, ___mulsf3
  1886. + __mulsf3:
  1887. + ___mulsf3:
  1888.   # ifdef    sfp004
  1889.   
  1890.   | single precision floating point stuff for Atari-gcc using the SFP004
  1891. ***************
  1892. *** 19,31 ****
  1893.   resp =    -16
  1894.   zahl =      0
  1895.   
  1896. !     .text
  1897. !     .even
  1898. !     .globl    __mulsf3, ___mulsf3
  1899. ! __mulsf3:
  1900. ! ___mulsf3:
  1901. !     lea    0xfffa50,a0
  1902.       movew    #0x4400,a0@(comm)    | load first argument to fp0
  1903.       cmpiw    #0x8900,a0@(resp)    | check
  1904.       movel    a7@(4),a0@
  1905. --- 27,33 ----
  1906.   resp =    -16
  1907.   zahl =      0
  1908.   
  1909. !     lea    0xfffffa50:w,a0
  1910.       movew    #0x4400,a0@(comm)    | load first argument to fp0
  1911.       cmpiw    #0x8900,a0@(resp)    | check
  1912.       movel    a7@(4),a0@
  1913. ***************
  1914. *** 57,68 ****
  1915.   
  1916.   BIAS4    =    0x7F-1
  1917.   
  1918. -     .text
  1919. -     .even
  1920. -     .globl    __mulsf3, ___mulsf3
  1921. - __mulsf3:
  1922. - ___mulsf3:
  1923.       lea    sp@(4),a0
  1924.       moveml    d2-d5,sp@-
  1925.       moveml    a0@,d4/d5    | d4 = v, d5 = u
  1926. --- 59,64 ----
  1927. *** 1.1    1990/03/26 17:37:17
  1928. --- _negdf2.s    1992/10/09 20:46:14
  1929. ***************
  1930. *** 20,24 ****
  1931.       orl    sp@(8),d0
  1932.       moveml    sp@(4),d0-d1    | get number
  1933.       beq    0f
  1934. !     eorl    #0x80000000,d0    | flip sign bit
  1935.   0:    rts
  1936. --- 20,24 ----
  1937.       orl    sp@(8),d0
  1938.       moveml    sp@(4),d0-d1    | get number
  1939.       beq    0f
  1940. !     bchg    #31,d0        | flip sign bit
  1941.   0:    rts
  1942. *** 1.1    1990/03/26 17:37:18
  1943. --- _negsf2.s    1992/10/09 20:46:14
  1944. ***************
  1945. *** 18,22 ****
  1946.   ___negsf2:
  1947.       movel    sp@(4),d0    | do not negate if operand is 0.0
  1948.       beq    0f
  1949. !     eorl    #0x80000000,d0    | flip sign bit
  1950.   0:    rts
  1951. --- 18,22 ----
  1952.   ___negsf2:
  1953.       movel    sp@(4),d0    | do not negate if operand is 0.0
  1954.       beq    0f
  1955. !     bchg    #31,d0        | flip sign bit
  1956.   0:    rts
  1957. *** 1.4    1992/02/04 17:11:06
  1958. --- _normdf.cpp    1992/10/09 20:46:14
  1959. ***************
  1960. *** 43,49 ****
  1961.   #if !defined (__M68881__) && !defined (sfp004)
  1962.       .globl    ___normdf
  1963.       .globl    norm_df
  1964.   # ifdef    ERROR_CHECK
  1965.   LC0:
  1966.       .ascii "normdf: OVERFLOW\12\15\0"
  1967. --- 43,49 ----
  1968.   #if !defined (__M68881__) && !defined (sfp004)
  1969.       .globl    ___normdf
  1970.       .globl    norm_df
  1971. ! #include "errbase.h"
  1972.   # ifdef    ERROR_CHECK
  1973.   LC0:
  1974.       .ascii "normdf: OVERFLOW\12\15\0"
  1975. ***************
  1976. *** 163,177 ****
  1977.       moveml    sp@+,d2-d7
  1978.       rts
  1979.   
  1980. -     .globl    _errno        | from <errno.h>
  1981. - ERANGE    =    63
  1982.   retz:
  1983. ! # ifdef __MSHORT__
  1984. !     movew    #ERANGE,_errno    | set errno
  1985. ! # else
  1986. !     movel    #ERANGE,_errno    | set errno
  1987. ! # endif
  1988.       clrl    d0        | return zero value
  1989.       clrl    d1
  1990.       moveml    sp@+,d2-d7
  1991. --- 163,171 ----
  1992.       moveml    sp@+,d2-d7
  1993.       rts
  1994.   
  1995.   retz:
  1996. !     moveq    #ERANGE,d0
  1997. !     Emove    d0,Errno
  1998.       clrl    d0        | return zero value
  1999.       clrl    d1
  2000.       moveml    sp@+,d2-d7
  2001. ***************
  2002. *** 178,199 ****
  2003.       rts
  2004.   
  2005.   oflow:
  2006.   #ifdef    ERROR_CHECK
  2007. !     moveml    d0-d1,a7@-
  2008. !     pea    LC0
  2009. !     pea    __iob+52    |
  2010.       jbsr    _fprintf    |
  2011.       addql    #8,a7        |
  2012. !     moveml    a7@+,d0-d1
  2013. ! # ifdef __MSHORT__
  2014. !     movew    #ERANGE,_errno    | set errno
  2015. ! # else
  2016. !     movel    #ERANGE,_errno    | set errno
  2017. ! # endif
  2018.   #endif    ERROR_CHECK
  2019.   
  2020. !     moveml    __infinitydf,d0-d1 | return infinty value
  2021.       andw    #0x8000,d2    | get sign bit of argument
  2022.       swap    d2
  2023.       clrw    d2
  2024. --- 172,187 ----
  2025.       rts
  2026.   
  2027.   oflow:
  2028.   #ifdef    ERROR_CHECK
  2029. !     pea    pc@(LC0)
  2030. !     pea    Stderr
  2031.       jbsr    _fprintf    |
  2032.       addql    #8,a7        |
  2033. !     moveq    #ERANGE,d0
  2034. !     Emove    d0,Errno
  2035.   #endif    ERROR_CHECK
  2036.   
  2037. !     moveml    pc@(__infinitydf),d0-d1 | return infinity value
  2038.       andw    #0x8000,d2    | get sign bit of argument
  2039.       swap    d2
  2040.       clrw    d2
  2041. *** 1.1    1992/02/04 17:11:06
  2042. --- _normsf.cpp    1992/10/09 20:46:14
  2043. ***************
  2044. *** 31,37 ****
  2045.   #if !defined (__M68881__) && !defined (sfp004)
  2046.       .globl    ___normsf
  2047.       .globl    norm_sf
  2048.   #ifdef    ERROR_CHECK
  2049.   LC0:
  2050.       .ascii "normsf: OVERFLOW\12\15\0"
  2051. --- 31,37 ----
  2052.   #if !defined (__M68881__) && !defined (sfp004)
  2053.       .globl    ___normsf
  2054.       .globl    norm_sf
  2055. ! #include "errbase.h"
  2056.   #ifdef    ERROR_CHECK
  2057.   LC0:
  2058.       .ascii "normsf: OVERFLOW\12\15\0"
  2059. ***************
  2060. *** 116,122 ****
  2061.       moveml    sp@+,d2-d5
  2062.       rts
  2063.   
  2064. ! retz:    clrl    d0
  2065.       moveml    sp@+,d2-d5
  2066.       rts
  2067.   
  2068. --- 116,124 ----
  2069.       moveml    sp@+,d2-d5
  2070.       rts
  2071.   
  2072. ! retz:    moveq    #ERANGE,d0
  2073. !     Emove    d0,Errno
  2074. !     clrl    d0
  2075.       moveml    sp@+,d2-d5
  2076.       rts
  2077.   
  2078. ***************
  2079. *** 123,137 ****
  2080.   oflow:    
  2081.   
  2082.   #ifdef    ERROR_CHECK
  2083. !     moveml    d0-d1,a7@-
  2084. !     pea    LC0
  2085. !     pea    __iob+52    |
  2086.       jbsr    _fprintf    |
  2087.       addql    #8,a7        |
  2088. !     moveml    a7@+,d0-d1
  2089.   #endif    ERROR_CHECK
  2090.   
  2091. !     movel    __infinitysf,d0    | return infinty value
  2092.   
  2093.       btst    #15,d2        | transfer sign
  2094.       beq    ofl_clear    | (mjr++)
  2095. --- 125,139 ----
  2096.   oflow:    
  2097.   
  2098.   #ifdef    ERROR_CHECK
  2099. !     movel    d1,a7@-
  2100. !     pea    pc@(LC0)
  2101. !     pea    Stderr
  2102.       jbsr    _fprintf    |
  2103.       addql    #8,a7        |
  2104. !     movel    a7@+,d1
  2105.   #endif    ERROR_CHECK
  2106.   
  2107. !     movel    pc@(__infinitysf),d0    | return infinity value
  2108.   
  2109.       btst    #15,d2        | transfer sign
  2110.       beq    ofl_clear    | (mjr++)
  2111. *** 1.1    1992/02/04 17:11:06
  2112. --- _truncdf.cpp    1992/10/09 20:46:14
  2113. ***************
  2114. *** 1,6 ****
  2115. --- 1,12 ----
  2116.   | not needed with -__M68881__
  2117.   
  2118.   #ifndef    __M68881__
  2119. +     .text
  2120. +     .even
  2121. +     .globl    __truncdfsf2, ___truncdfsf2
  2122. + __truncdfsf2:
  2123. + ___truncdfsf2:
  2124.   # ifdef    sfp004
  2125.   
  2126.   | double float to single float conversion routine
  2127. ***************
  2128. *** 26,38 ****
  2129.   | is coded directly by
  2130.   |    .long    0x0c688900, 0xfff067f8
  2131.   
  2132. !     .text
  2133. !     .even
  2134. !     .globl    __truncdfsf2, ___truncdfsf2
  2135. ! __truncdfsf2:
  2136. ! ___truncdfsf2:
  2137. !     lea    0xfffa50,a0
  2138.       movew    #0x5400,a0@(comm)    | load double to  fp0
  2139.       cmpiw    #0x8900,a0@(resp)    | check
  2140.       movel    a7@(4),a0@        | push arguments
  2141. --- 32,38 ----
  2142.   | is coded directly by
  2143.   |    .long    0x0c688900, 0xfff067f8
  2144.   
  2145. !     lea    0xfffffa50:w,a0
  2146.       movew    #0x5400,a0@(comm)    | load double to  fp0
  2147.       cmpiw    #0x8900,a0@(resp)    | check
  2148.       movel    a7@(4),a0@        | push arguments
  2149. ***************
  2150. *** 62,73 ****
  2151.   BIAS4    =    0x7F-1
  2152.   BIAS8    =    0x3FF-1
  2153.   
  2154. -     .text
  2155. -     .even
  2156. -     .globl    __truncdfsf2, ___truncdfsf2
  2157. - __truncdfsf2:
  2158. - ___truncdfsf2:
  2159.       lea    sp@(4),a0    | parameter pointer
  2160.       moveml    d2-d5,sp@-    | save regs
  2161.       moveml    a0@,d4-d5    | get number
  2162. --- 62,67 ----
  2163. *** 1.8    1992/06/01 01:54:10
  2164. --- access.c    1992/10/09 20:46:15
  2165. ***************
  2166. *** 14,20 ****
  2167.       int mode;
  2168.   {
  2169.       struct stat sb;
  2170. -     int uid, gid;
  2171.   
  2172.       if (stat(path, &sb) < 0)
  2173.           return -1;    /* errno was set by stat() */
  2174. --- 14,19 ----
  2175. ***************
  2176. *** 24,30 ****
  2177.   /* somewhat crufty code -- relies on R_OK, etc. matching the bits in the
  2178.      file mode, but what the heck, we can do this
  2179.    */
  2180. !     if (__mint < 9 || ( (uid = geteuid()) == sb.st_uid ) ) {
  2181.           if ( ((sb.st_mode >> 6) & mode) == mode )
  2182.               return 0;
  2183.           else
  2184. --- 23,29 ----
  2185.   /* somewhat crufty code -- relies on R_OK, etc. matching the bits in the
  2186.      file mode, but what the heck, we can do this
  2187.    */
  2188. !     if (__mint < 9 || ( geteuid() == sb.st_uid ) ) {
  2189.           if ( ((sb.st_mode >> 6) & mode) == mode )
  2190.               return 0;
  2191.           else
  2192. ***************
  2193. *** 31,37 ****
  2194.               goto accdn;
  2195.       }
  2196.   
  2197. !     if ( (gid = getegid()) == sb.st_gid ) {
  2198.           if ( ((sb.st_mode >> 3) & mode) == mode )
  2199.               return 0;
  2200.           else
  2201. --- 30,36 ----
  2202.               goto accdn;
  2203.       }
  2204.   
  2205. !     if ( getegid() == sb.st_gid ) {
  2206.           if ( ((sb.st_mode >> 3) & mode) == mode )
  2207.               return 0;
  2208.           else
  2209. *** 1.6    1992/06/01 01:54:10
  2210. --- alloca.s    1992/10/09 20:46:15
  2211. ***************
  2212. *** 14,20 ****
  2213.       movel    sp@+,d0        | get size -- assist in bug fix, add 4 to sp
  2214.   
  2215.       addql    #1,d0        | ensure address even
  2216. !     andl    #0xFFFFFFFE,d0    | lop off extra bits
  2217.   
  2218.       subl    d0,sp        | increase stack frame size by that much
  2219.       movel    sp,d0        | set up to return it
  2220. --- 14,20 ----
  2221.       movel    sp@+,d0        | get size -- assist in bug fix, add 4 to sp
  2222.   
  2223.       addql    #1,d0        | ensure address even
  2224. !     bclr    #0,d0        | lop off odd bit
  2225.   
  2226.       subl    d0,sp        | increase stack frame size by that much
  2227.       movel    sp,d0        | set up to return it
  2228. *** 1.1    1991/04/12 18:19:53
  2229. --- alphasor.c    1992/10/09 20:46:15
  2230. ***************
  2231. *** 3,16 ****
  2232.   **  Trivial sorting predicate for scandir; puts entries in alphabetical order.
  2233.   */
  2234.   
  2235. ! #include <sys/types.h>
  2236. ! #include <sys/dir.h>
  2237.   #include <string.h>
  2238.   
  2239.   int
  2240.   alphasort(d1, d2)
  2241. !     struct direct    **d1;
  2242. !     struct direct    **d2;
  2243.   {
  2244.       return strcmp(d1[0]->d_name, d2[0]->d_name);
  2245.   }
  2246. --- 3,16 ----
  2247.   **  Trivial sorting predicate for scandir; puts entries in alphabetical order.
  2248.   */
  2249.   
  2250. ! #include <types.h>
  2251. ! #include <dirent.h>
  2252.   #include <string.h>
  2253.   
  2254.   int
  2255.   alphasort(d1, d2)
  2256. !     struct dirent    **d1;
  2257. !     struct dirent    **d2;
  2258.   {
  2259.       return strcmp(d1[0]->d_name, d2[0]->d_name);
  2260.   }
  2261. *** 1.21    1992/03/22 21:57:30
  2262. --- atof.c    1992/10/09 20:46:15
  2263. ***************
  2264. *** 77,83 ****
  2265. --- 77,86 ----
  2266.   
  2267.   static int __ten_mul __PROTO((double *acc, int digit));
  2268.   static double __adjust __PROTO((double *acc, int dexp, int sign));
  2269. + #ifdef __OLD__
  2270.   static double __ten_pow __PROTO((double r, int e));
  2271. + #endif
  2272.   
  2273.   /*
  2274.    * mul 64 bit accumulator by 10 and add digit
  2275. ***************
  2276. *** 692,698 ****
  2277.   .even
  2278.   .text
  2279.   __Float_:
  2280. !     lea    0xfffa50,a0            | fpu address
  2281.   
  2282.       movew    #0x4092,a0@(comm)        | ftentoxl -> fp1
  2283.       .long    0x0c688900, 0xfff067f8
  2284. --- 695,701 ----
  2285.   .even
  2286.   .text
  2287.   __Float_:
  2288. !     lea    0xfffffa50:w,a0            | fpu address
  2289.   
  2290.       movew    #0x4092,a0@(comm)        | ftentoxl -> fp1
  2291.       .long    0x0c688900, 0xfff067f8
  2292. *** 1.11    1992/06/01 01:54:10
  2293. --- bcmp.c    1992/10/09 20:46:16
  2294. ***************
  2295. *** 3,9 ****
  2296.   #include <assert.h>
  2297.   
  2298.   #undef ODD
  2299. ! #define ODD(x) (((long)(x)) & 1)
  2300.   
  2301.   /*
  2302.    * compare n bytes efficientlty
  2303. --- 3,9 ----
  2304.   #include <assert.h>
  2305.   
  2306.   #undef ODD
  2307. ! #define ODD(x) (((long)(x)) & 1L)
  2308.   
  2309.   /*
  2310.    * compare n bytes efficientlty
  2311. *** 1.2    1992/08/14 14:48:29
  2312. --- binmode.c    1992/10/09 20:46:16
  2313. ***************
  2314. *** 7,13 ****
  2315.    *                ++jrb;
  2316.    */
  2317.   
  2318.   #include <stdio.h>
  2319.   
  2320.   extern int __default_mode__;
  2321. --- 7,12 ----
  2322. *** 1.8    1992/06/01 01:54:10
  2323. --- bsearch.c    1992/10/09 20:46:16
  2324. ***************
  2325. *** 30,36 ****
  2326.       while(a <= b)
  2327.           {
  2328.           c = (a + b) >> 1;    /* == ((a + b) / 2) */
  2329. !         if (dir = (*cmp)((void *)((char *)base + (c * size)), key))
  2330.               {
  2331.               if (dir > 0)
  2332.               {
  2333. --- 30,36 ----
  2334.       while(a <= b)
  2335.           {
  2336.           c = (a + b) >> 1;    /* == ((a + b) / 2) */
  2337. !         if ((dir = (*cmp)((void *)((char *)base + (c * size)), key)) != 0)
  2338.               {
  2339.               if (dir > 0)
  2340.               {
  2341. *** 1.1    1992/06/01 01:54:10
  2342. --- calloc.c    1992/10/09 20:46:16
  2343. ***************
  2344. *** 10,15 ****
  2345. --- 10,16 ----
  2346.   
  2347.   __EXTERN void *_malloc __PROTO((unsigned long));
  2348.   __EXTERN void _bzero __PROTO((void *, unsigned long));
  2349. + __EXTERN void *_calloc __PROTO((unsigned long, unsigned long));
  2350.   
  2351.   #ifdef __GNUC__
  2352.   asm(".stabs \"_calloc\",5,0,0,__calloc"); /* dept of clean tricks */
  2353. *** 1.7    1992/06/24 15:32:04
  2354. --- chmod.c    1992/10/09 20:46:17
  2355. ***************
  2356. *** 24,30 ****
  2357.          (void)_unx2dos(_path, path);
  2358.   
  2359.       if (__mint >= 9) {    /* use MiNT Fchmod function */
  2360. !         r = Fchmod(path, mode);
  2361.           if (r) {
  2362.               errno = -r;
  2363.               return -1;
  2364. --- 24,30 ----
  2365.          (void)_unx2dos(_path, path);
  2366.   
  2367.       if (__mint >= 9) {    /* use MiNT Fchmod function */
  2368. !         r = (int)Fchmod(path, mode);
  2369.           if (r) {
  2370.               errno = -r;
  2371.               return -1;
  2372. ***************
  2373. *** 69,75 ****
  2374.   
  2375.       if (__mint >= 9) {
  2376.           (void)_unx2dos(_name, name);
  2377. !         r = Fchown(name, uid, gid);
  2378.           if (r) {
  2379.               errno = -r;
  2380.               return -1;
  2381. --- 69,75 ----
  2382.   
  2383.       if (__mint >= 9) {
  2384.           (void)_unx2dos(_name, name);
  2385. !         r = (int)Fchown(name, uid, gid);
  2386.           if (r) {
  2387.               errno = -r;
  2388.               return -1;
  2389. *** 1.7    1992/03/06 19:19:47
  2390. --- ctime.c    1992/10/09 20:46:17
  2391. ***************
  2392. *** 71,79 ****
  2393.           i = 1900 + time->tm_year;
  2394.           *vpos++ = i / 100;
  2395.           *vpos   = i % 100;
  2396. !         ptr = memcpy(ptr, day[time->tm_wday], 3) + 3;
  2397.           ptr += 1;
  2398. !         ptr = memcpy(ptr, month[time->tm_mon], 3) + 3;
  2399.           valp = values;
  2400.           do
  2401.           {
  2402. --- 71,79 ----
  2403.           i = 1900 + time->tm_year;
  2404.           *vpos++ = i / 100;
  2405.           *vpos   = i % 100;
  2406. !         ptr = (char *)memcpy(ptr, day[time->tm_wday], 3) + 3;
  2407.           ptr += 1;
  2408. !         ptr = (char *)memcpy(ptr, month[time->tm_mon], 3) + 3;
  2409.           valp = values;
  2410.           do
  2411.           {
  2412. *** 1.1    1989/03/25 17:23:13
  2413. --- difftime.c    1992/10/09 20:46:17
  2414. ***************
  2415. *** 2,9 ****
  2416.   
  2417.   #include <time.h>
  2418.   
  2419. ! double difftime(t1, t2)
  2420. ! time_t t1, t2;
  2421.   {
  2422.       return (double) (t2 - t1);
  2423.   }
  2424. --- 2,9 ----
  2425.   
  2426.   #include <time.h>
  2427.   
  2428. ! double difftime(t2, t1)
  2429. ! time_t t2, t1;
  2430.   {
  2431.       return (double) (t2 - t1);
  2432.   }
  2433. *** 1.15    1992/06/01 01:54:10
  2434. --- doprnt.c    1992/10/09 20:46:18
  2435. ***************
  2436. *** 20,25 ****
  2437. --- 20,27 ----
  2438.    *    ++jrb
  2439.    * and for the sfp004 as well as the TT's 68881
  2440.    *      mjr++
  2441. +  * and for turbo C and the MiNT library
  2442. +  *     ++um,mh
  2443.    */
  2444.   
  2445.   #ifndef __NO_FLOAT__
  2446. ***************
  2447. *** 43,49 ****
  2448. --- 45,55 ----
  2449.   static char sccsid[] = "@(#)doprnt.c    5.37 (Berkeley) 3/26/89";
  2450.   #endif /* LIBC_SCCS */
  2451.   
  2452. + #ifdef __TURBOC__
  2453. + #include <sys\types.h>
  2454. + #else
  2455.   #include <sys/types.h>
  2456. + #endif
  2457.   #include <stdarg.h>
  2458.   #include <stdio.h>
  2459.   #include <ctype.h>
  2460. ***************
  2461. *** 101,116 ****
  2462.   # include    "flonum.h"
  2463.   #  if __STDC__
  2464.   static char *exponent(char *, int, int);
  2465. ! static char *round(double, int *, char *, char *, int, char *);
  2466.   static int  cvt(double, int, int, char *, int, char *, char *);
  2467.   #  else
  2468.   static char *exponent();
  2469. ! static char *round();
  2470.   static int  cvt();
  2471.   #  endif
  2472.   #endif
  2473.   
  2474. ! #ifdef __GNUC__
  2475.   #ifdef __M68020__
  2476.   
  2477.   #define _ICONV(NUMBER, BASE, BUF)                \
  2478. --- 107,122 ----
  2479.   # include    "flonum.h"
  2480.   #  if __STDC__
  2481.   static char *exponent(char *, int, int);
  2482. ! static char *_round(double, int *, char *, char *, int, char *);
  2483.   static int  cvt(double, int, int, char *, int, char *, char *);
  2484.   #  else
  2485.   static char *exponent();
  2486. ! static char *_round();
  2487.   static int  cvt();
  2488.   #  endif
  2489.   #endif
  2490.   
  2491. ! #if defined(__GNUC__) && (!defined(__NO_INLINE__))
  2492.   #ifdef __M68020__
  2493.   
  2494.   #define _ICONV(NUMBER, BASE, BUF)                \
  2495. ***************
  2496. *** 188,193 ****
  2497. --- 194,200 ----
  2498.   #ifdef    __FLOATS__
  2499.   /*    double _double;        *//* double precision arguments %[eEfgG] */
  2500.       union double_di _dd;    /* _double is #defined to be _dd later on */
  2501. +     char softsign;        /* temporary negative sign for floats */
  2502.   #endif    __FLOATS__
  2503.       u_long _ulong;        /* integer arguments %[diouxX] */
  2504.       short base;        /* base for [diouxX] conversion */
  2505. ***************
  2506. *** 200,206 ****
  2507.       short size;        /* size of converted field or string */
  2508.       short width;        /* width from format (%8d), or 0 */
  2509.       char sign;        /* sign prefix (' ', '+', '-', or \0) */
  2510. -     char softsign;        /* temporary negative sign for floats */
  2511.       char *digs;        /* digits for [diouxX] conversion */
  2512.       char buf[BUF];        /* space for %c, %[diouxX], %[eEfgG] */
  2513.   
  2514. --- 207,212 ----
  2515. ***************
  2516. *** 208,214 ****
  2517.       fmt = (const u_char *) fmt0;
  2518.       digs = "0123456789abcdef";
  2519.       for (cnt = 0;; ++fmt) {
  2520. !         if (!(ch = *fmt))
  2521.               return (cnt);
  2522.           if (ch != '%') {
  2523.               PUTC(ch);
  2524. --- 214,220 ----
  2525.       fmt = (const u_char *) fmt0;
  2526.       digs = "0123456789abcdef";
  2527.       for (cnt = 0;; ++fmt) {
  2528. !         if ((ch = *fmt) == 0)
  2529.               return (cnt);
  2530.           if (ch != '%') {
  2531.               PUTC(ch);
  2532. ***************
  2533. *** 325,331 ****
  2534.                * zeroes later, so buffer size stays rational.
  2535.                */
  2536.               if (prec > MAXFRACT) {
  2537. !                 if (*fmt != 'g' && *fmt != 'G' || (flags&ALT))
  2538.                       fpprec = prec - MAXFRACT;
  2539.                   prec = MAXFRACT;
  2540.               }
  2541. --- 331,337 ----
  2542.                * zeroes later, so buffer size stays rational.
  2543.                */
  2544.               if (prec > MAXFRACT) {
  2545. !                 if ((*fmt != 'g' && *fmt != 'G') || (flags&ALT))
  2546.                       fpprec = prec - MAXFRACT;
  2547.                   prec = MAXFRACT;
  2548.               }
  2549. ***************
  2550. *** 394,400 ****
  2551.               base = 16;
  2552.               goto nosign;
  2553.           case 's':
  2554. !             if (!(t = va_arg(argp, char *)))
  2555.                   t = "(null)";
  2556.               if (prec >= 0) {
  2557.                   /*
  2558. --- 400,406 ----
  2559.               base = 16;
  2560.               goto nosign;
  2561.           case 's':
  2562. !             if ((t = va_arg(argp, char *)) == 0)
  2563.                   t = "(null)";
  2564.               if (prec >= 0) {
  2565.                   /*
  2566. ***************
  2567. *** 409,415 ****
  2568.                   char *p, *memchr();
  2569.   #endif
  2570.   
  2571. !                 if (p = (char *)memchr(t, 0, (size_t)prec)) {
  2572.                       size = p - t;
  2573.                       if (size > prec)
  2574.                           size = prec;
  2575. --- 415,421 ----
  2576.                   char *p, *memchr();
  2577.   #endif
  2578.   
  2579. !                 if ((p = (char *)memchr(t, 0, (size_t)prec)) != NULL) {
  2580.                       size = p - t;
  2581.                       if (size > prec)
  2582.                           size = prec;
  2583. ***************
  2584. *** 539,548 ****
  2585.   {
  2586.       register char *p, *t;
  2587.       register double fract;
  2588. !     int dotrim, expcnt, gformat;
  2589.       double integer, tmp, modf __PROTO((double, double *));
  2590.       char *exponent __PROTO((char *, int, int)),
  2591. !          *round __PROTO((double, int *, char *, char *, int, char *));
  2592.   
  2593.       dotrim = expcnt = gformat = 0;
  2594.       fract = modf(number, &integer);
  2595. --- 545,554 ----
  2596.   {
  2597.       register char *p, *t;
  2598.       register double fract;
  2599. !     int dotrim, expcnt, gformat, /* mjr++ : */ old_prec;
  2600.       double integer, tmp, modf __PROTO((double, double *));
  2601.       char *exponent __PROTO((char *, int, int)),
  2602. !          *_round __PROTO((double, int *, char *, char *, int, char *));
  2603.   
  2604.       dotrim = expcnt = gformat = 0;
  2605.       fract = modf(number, &integer);
  2606. ***************
  2607. *** 549,555 ****
  2608.   
  2609.       /* get an extra slot for rounding. */
  2610.       t = ++startp;
  2611.       /*
  2612.        * get integer portion of number; put into the end of the buffer; the
  2613.        * .01 is added for modf(356.0 / 10, &integer) returning .59999999...
  2614. --- 555,561 ----
  2615.   
  2616.       /* get an extra slot for rounding. */
  2617.       t = ++startp;
  2618. ! #define DBL_EPSILON 1.1107651257113995e-16 /* mjr ++ /
  2619.       /*
  2620.        * get integer portion of number; put into the end of the buffer; the
  2621.        * .01 is added for modf(356.0 / 10, &integer) returning .59999999...
  2622. ***************
  2623. *** 556,562 ****
  2624.        */
  2625.       for (p = endp - 1; integer; ++expcnt) {
  2626.           tmp = modf(integer / 10, &integer);
  2627. !         *p-- = tochar((int)((tmp + .01) * 10));
  2628.       }
  2629.       switch(fmtch) {
  2630.       case 'f':
  2631. --- 562,568 ----
  2632.        */
  2633.       for (p = endp - 1; integer; ++expcnt) {
  2634.           tmp = modf(integer / 10, &integer);
  2635. !         *p-- = tochar((int)((tmp + DBL_EPSILON) * 10));
  2636.       }
  2637.       switch(fmtch) {
  2638.       case 'f':
  2639. ***************
  2640. *** 579,585 ****
  2641.                       *t++ = tochar((int)tmp);
  2642.                   } while (--prec && fract);
  2643.               if (fract)
  2644. !                 startp = round(fract, (int *)NULL, startp,
  2645.                       t - 1, (char)0, signp);
  2646.           }
  2647.           for (; prec--; *t++ = '0');
  2648. --- 585,591 ----
  2649.                       *t++ = tochar((int)tmp);
  2650.                   } while (--prec && fract);
  2651.               if (fract)
  2652. !                 startp = _round(fract, (int *)NULL, startp,
  2653.                       t - 1, (char)0, signp);
  2654.           }
  2655.           for (; prec--; *t++ = '0');
  2656. ***************
  2657. *** 600,606 ****
  2658.                */
  2659.               if (!prec && ++p < endp) {
  2660.                   fract = 0;
  2661. !                 startp = round((double)0, &expcnt, startp,
  2662.                       t - 1, *p, signp);
  2663.               }
  2664.               /* adjust expcnt for digit in front of decimal */
  2665. --- 606,612 ----
  2666.                */
  2667.               if (!prec && ++p < endp) {
  2668.                   fract = 0;
  2669. !                 startp = _round((double)0, &expcnt, startp,
  2670.                       t - 1, *p, signp);
  2671.               }
  2672.               /* adjust expcnt for digit in front of decimal */
  2673. ***************
  2674. *** 631,637 ****
  2675.                       *t++ = tochar((int)tmp);
  2676.                   } while (--prec && fract);
  2677.               if (fract)
  2678. !                 startp = round(fract, &expcnt, startp,
  2679.                       t - 1, (char)0, signp);
  2680.           }
  2681.           /* if requires more precision */
  2682. --- 637,643 ----
  2683.                       *t++ = tochar((int)tmp);
  2684.                   } while (--prec && fract);
  2685.               if (fract)
  2686. !                 startp = _round(fract, &expcnt, startp,
  2687.                       t - 1, (char)0, signp);
  2688.           }
  2689.           /* if requires more precision */
  2690. ***************
  2691. *** 648,653 ****
  2692. --- 654,661 ----
  2693.           break;
  2694.       case 'g':
  2695.       case 'G':
  2696. +         old_prec = min(prec,15);    /* mjr++, avoid "precision" that */
  2697. +                         /* cannot be numerically resolved */
  2698.           /* a precision of 0 is treated as a precision of 1. */
  2699.           if (!prec)
  2700.               ++prec;
  2701. ***************
  2702. *** 657,663 ****
  2703.            * conversion is less than -4 or greater than the precision.''
  2704.            *    -- ANSI X3J11
  2705.            */
  2706. !         if (expcnt > prec || !expcnt && fract && fract < .0001) {
  2707.               /*
  2708.                * g/G format counts "significant digits, not digits of
  2709.                * precision; for the e/E format, this just causes an
  2710. --- 665,671 ----
  2711.            * conversion is less than -4 or greater than the precision.''
  2712.            *    -- ANSI X3J11
  2713.            */
  2714. !         if (expcnt > prec || (!expcnt && fract && fract < .0001)) {
  2715.               /*
  2716.                * g/G format counts "significant digits, not digits of
  2717.                * precision; for the e/E format, this just causes an
  2718. ***************
  2719. *** 685,690 ****
  2720. --- 693,699 ----
  2721.           if (prec || flags&ALT) {
  2722.               dotrim = 1;
  2723.               *t++ = '.';
  2724. +             old_prec ++; /* mjr++ */
  2725.           }
  2726.           else
  2727.               dotrim = 0;
  2728. ***************
  2729. *** 706,712 ****
  2730.                   }
  2731.               }
  2732.               if (fract)
  2733. !                 startp = round(fract, (int *)NULL, startp,
  2734.                       t - 1, (char)0, signp);
  2735.           }
  2736.           /* alternate format, adds 0's for precision, else trim 0's */
  2737. --- 715,721 ----
  2738.                   }
  2739.               }
  2740.               if (fract)
  2741. !                 startp = _round(fract, (int *)NULL, startp,
  2742.                       t - 1, (char)0, signp);
  2743.           }
  2744.           /* alternate format, adds 0's for precision, else trim 0's */
  2745. ***************
  2746. *** 713,718 ****
  2747. --- 722,729 ----
  2748.           if (flags&ALT)
  2749.               for (; prec--; *t++ = '0');
  2750.           else if (dotrim) {
  2751. +             if( (int)(t-startp) > old_prec ) /* mjr++ */
  2752. +                 t = startp + old_prec;
  2753.               while (t > startp && *--t == '0');
  2754.               if (*t != '.')
  2755.                   ++t;
  2756. ***************
  2757. *** 722,728 ****
  2758.   }
  2759.   
  2760.   static char *
  2761. ! round(fract, exp, start, end, ch, signp)
  2762.       double fract;
  2763.       int *exp;
  2764.       register char *start, *end;
  2765. --- 733,739 ----
  2766.   }
  2767.   
  2768.   static char *
  2769. ! _round(fract, exp, start, end, ch, signp)
  2770.       double fract;
  2771.       int *exp;
  2772.       register char *start, *end;
  2773. *** 1.10    1992/06/01 01:54:10
  2774. --- findfile.c    1992/10/09 20:46:19
  2775. ***************
  2776. *** 9,14 ****
  2777. --- 9,15 ----
  2778.      Written by Eric R. Smith and placed in the public domain.
  2779.   */
  2780.   
  2781. + #include <compiler.h>
  2782.   #include <limits.h>    /* needed for PATH_MAX */
  2783.   #include <stddef.h>
  2784.   #include <types.h>
  2785. ***************
  2786. *** 25,30 ****
  2787. --- 26,34 ----
  2788.   
  2789.   static char *nullext[] = { NULL };
  2790.   
  2791. + static int EXISTS __PROTO((char *));
  2792. + char *findfile __PROTO((char *fname, char *fpath, char **fext));
  2793.   static int
  2794.   EXISTS(name)
  2795.       char *name;
  2796. ***************
  2797. *** 54,60 ****
  2798.   /* copy the file in, checking to see if a path and/or extension are already
  2799.      given */
  2800.   
  2801. !         while ( c = *t++ ) {
  2802.                   if (c == DIRSEP1 || c == DIRSEP2) {
  2803.                           haspath = 1; hasext = 0;
  2804.                   }
  2805. --- 58,64 ----
  2806.   /* copy the file in, checking to see if a path and/or extension are already
  2807.      given */
  2808.   
  2809. !         while ( (c = *t++) != 0 ) {
  2810.                   if (c == DIRSEP1 || c == DIRSEP2) {
  2811.                           haspath = 1; hasext = 0;
  2812.                   }
  2813. ***************
  2814. *** 89,95 ****
  2815.   
  2816.   /* copy in next element of path list */
  2817.                   s = try;
  2818. !                 while ((c = *fpath) && c != PATHSEP1 && c != PATHSEP2) {
  2819.                           *s++ = c;
  2820.                           fpath++;
  2821.                   }
  2822. --- 93,99 ----
  2823.   
  2824.   /* copy in next element of path list */
  2825.                   s = try;
  2826. !                 while ((c = *fpath) != 0 && c != PATHSEP1 && c != PATHSEP2) {
  2827.                           *s++ = c;
  2828.                           fpath++;
  2829.                   }
  2830. ***************
  2831. *** 96,102 ****
  2832.                   if (c) fpath++;
  2833.                   *s++ = DIRSEP1;
  2834.                   t = fname;
  2835. !                 while (*s++ = *t++) ;
  2836.                   extplace = --s ;        /* where the extension gets written */
  2837.           }
  2838.           return NULL;
  2839. --- 100,106 ----
  2840.                   if (c) fpath++;
  2841.                   *s++ = DIRSEP1;
  2842.                   t = fname;
  2843. !                 while ((*s++ = *t++) != 0) ;
  2844.                   extplace = --s ;        /* where the extension gets written */
  2845.           }
  2846.           return NULL;
  2847. *** 1.5    1990/03/26 17:37:23
  2848. --- flonum.h    1992/10/09 20:46:19
  2849. ***************
  2850. *** 18,23 ****
  2851. --- 18,24 ----
  2852.   
  2853.   /* quasi-IEEE floating point number definitions */
  2854.   
  2855. + #ifndef __TURBOC__
  2856.   struct bitfloat {
  2857.       unsigned long sign : 1;
  2858.       unsigned long exp  : 8;
  2859. ***************
  2860. *** 30,35 ****
  2861. --- 31,37 ----
  2862.       unsigned long mant1 : 20;
  2863.       unsigned long mant2;
  2864.   };
  2865. + #endif
  2866.   
  2867.   union double_di {
  2868.           double d;
  2869. *** 1.17    1992/06/01 01:54:10
  2870. --- fopen.c    1992/10/09 20:46:19
  2871. ***************
  2872. *** 7,12 ****
  2873. --- 7,13 ----
  2874.   #include <errno.h>
  2875.   
  2876.   __EXTERN void _getbuf __PROTO((FILE *));
  2877. + static FILE *_fopen __PROTO((const char *, const char *, FILE *));
  2878.   
  2879.   /* lowest character device handle # */
  2880.   #define    LAST_DEVICE    __SMALLEST_VALID_HANDLE
  2881. ***************
  2882. *** 15,22 ****
  2883.   
  2884.   static FILE *_fopen(filename, mode, fp)
  2885.       const char *filename;
  2886. !     const register char *mode;
  2887. !     register FILE *fp;
  2888.   /*
  2889.    *    INTERNAL FUNCTION.  Attempt to open <filename> in the given
  2890.    *    <mode> and attach it to the stream <fp>
  2891. --- 16,23 ----
  2892.   
  2893.   static FILE *_fopen(filename, mode, fp)
  2894.       const char *filename;
  2895. !     const char *mode;
  2896. !     FILE *fp;
  2897.   /*
  2898.    *    INTERNAL FUNCTION.  Attempt to open <filename> in the given
  2899.    *    <mode> and attach it to the stream <fp>
  2900. *** 1.13    1992/04/08 18:38:50
  2901. --- fread.c    1992/10/09 20:46:20
  2902. ***************
  2903. *** 10,15 ****
  2904. --- 10,17 ----
  2905.   #include <string.h>
  2906.   #include "lib.h"
  2907.   
  2908. + extern short  __FRW_BIN__;
  2909.   size_t    fread(_data, size, count, fp)
  2910.       void *_data;
  2911.       size_t size;
  2912. ***************
  2913. *** 37,43 ****
  2914.           return 0;
  2915.   #endif
  2916.       assert((n <= (size_t)LONG_MAX));
  2917. !     if( f&_IOBIN ) {
  2918.       again:    
  2919.       if((cnt = fp->_cnt) > 0)
  2920.       {
  2921. --- 39,45 ----
  2922.           return 0;
  2923.   #endif
  2924.       assert((n <= (size_t)LONG_MAX));
  2925. !     if( (f&_IOBIN) || __FRW_BIN__ ) {
  2926.       again:    
  2927.       if((cnt = fp->_cnt) > 0)
  2928.       {
  2929. *** 1.5    1992/02/04 17:11:06
  2930. --- frexp.cpp    1992/10/09 20:46:20
  2931. ***************
  2932. *** 180,187 ****
  2933.       clrl    d1
  2934.       rts
  2935.   nonzero:
  2936. !     lea    0xfffa50,a0
  2937.       movew    #0x5418,a0@(comm)    | load first argument to fp0
  2938.       cmpiw    #0x8900,a0@(resp)    | check
  2939.       movel    a7@(4),a0@
  2940. --- 180,186 ----
  2941.       clrl    d1
  2942.       rts
  2943.   nonzero:
  2944. !     lea    0xfffffa50:w,a0
  2945.       movew    #0x5418,a0@(comm)    | load first argument to fp0
  2946.       cmpiw    #0x8900,a0@(resp)    | check
  2947.       movel    a7@(4),a0@
  2948. *** 1.6    1991/04/12 18:19:53
  2949. --- fseek.c    1992/10/09 20:46:20
  2950. ***************
  2951. *** 37,46 ****
  2952.   void rewind(fp)
  2953.   register FILE *fp;
  2954.   {
  2955. -     register long rv;
  2956. -     
  2957.       fflush(fp);
  2958. !     rv = lseek(fp->_file, 0L, SEEK_SET);
  2959.       fp->_flag &= ~(_IOEOF|_IOERR);
  2960.   }
  2961.   
  2962. --- 37,44 ----
  2963.   void rewind(fp)
  2964.   register FILE *fp;
  2965.   {
  2966.       fflush(fp);
  2967. !     (void) lseek(fp->_file, 0L, SEEK_SET);
  2968.       fp->_flag &= ~(_IOEOF|_IOERR);
  2969.   }
  2970.   
  2971. *** 1.7    1992/06/01 01:54:10
  2972. --- ftw.c    1992/10/09 20:46:21
  2973. ***************
  2974. *** 8,16 ****
  2975.   #include <stdio.h>
  2976.   #include <string.h>
  2977.   #include <stdlib.h>
  2978. ! #include <sys/types.h>
  2979. ! #include <sys/stat.h>
  2980.   #include <sys/dir.h>
  2981.   #include <ftw.h>
  2982.   
  2983.   #define EQ(a, b)    (strcmp((a), (b)) == 0)
  2984. --- 8,20 ----
  2985.   #include <stdio.h>
  2986.   #include <string.h>
  2987.   #include <stdlib.h>
  2988. ! #include <types.h>
  2989. ! #include <stat.h>
  2990. ! #ifdef __TURBOC__
  2991. ! #include <sys\dir.h>
  2992. ! #else
  2993.   #include <sys/dir.h>
  2994. + #endif
  2995.   #include <ftw.h>
  2996.   
  2997.   #define EQ(a, b)    (strcmp((a), (b)) == 0)
  2998. ***************
  2999. *** 18,24 ****
  3000.   int
  3001.   ftw(directory, funcptr, depth)
  3002.       char         *directory;
  3003. !     int            (*funcptr)();
  3004.       int              depth;
  3005.   {
  3006.       register DIR     *dirp;
  3007. --- 22,28 ----
  3008.   int
  3009.   ftw(directory, funcptr, depth)
  3010.       char         *directory;
  3011. !     int            (*funcptr) __PROTO((char *, struct stat *, int));
  3012.       int              depth;
  3013.   {
  3014.       register DIR     *dirp;
  3015. ***************
  3016. *** 25,31 ****
  3017.       struct direct     *entp;
  3018.       struct stat          stats;
  3019.       register char     *p;
  3020. !     register int      i;
  3021.   #ifndef __MINT__
  3022.       long          seekpoint;
  3023.   #endif
  3024. --- 29,35 ----
  3025.       struct direct     *entp;
  3026.       struct stat          stats;
  3027.       register char     *p;
  3028. !     register long      i;
  3029.   #ifndef __MINT__
  3030.       long          seekpoint;
  3031.   #endif
  3032. ***************
  3033. *** 53,59 ****
  3034.       i = (*funcptr)(directory, &stats, FTW_D);
  3035.       if (i) {
  3036.       closedir(dirp);
  3037. !     return i;
  3038.       }
  3039.   
  3040.       /* Get ready to hold the full paths. */
  3041. --- 57,63 ----
  3042.       i = (*funcptr)(directory, &stats, FTW_D);
  3043.       if (i) {
  3044.       closedir(dirp);
  3045. !     return (int)i;
  3046.       }
  3047.   
  3048.       /* Get ready to hold the full paths. */
  3049. ***************
  3050. *** 69,75 ****
  3051.       *p++ = '/';
  3052.   
  3053.       /* Read all entries in the directory.. */
  3054. !     while (entp = readdir(dirp))
  3055.       if (!EQ(entp->d_name, ".") && !EQ(entp->d_name, "..")) {
  3056.   #ifndef __MINT__
  3057.           if (depth <= 1) {
  3058. --- 73,79 ----
  3059.       *p++ = '/';
  3060.   
  3061.       /* Read all entries in the directory.. */
  3062. !     while ((entp = readdir(dirp)) != 0)
  3063.       if (!EQ(entp->d_name, ".") && !EQ(entp->d_name, "..")) {
  3064.   #ifndef __MINT__
  3065.           if (depth <= 1) {
  3066. ***************
  3067. *** 87,93 ****
  3068.           free(fullpath);
  3069.           if (dirp)
  3070.               closedir(dirp);
  3071. !         return i;
  3072.           }
  3073.   
  3074.   #ifndef __MINT__
  3075. --- 91,97 ----
  3076.           free(fullpath);
  3077.           if (dirp)
  3078.               closedir(dirp);
  3079. !         return (int)i;
  3080.           }
  3081.   
  3082.   #ifndef __MINT__
  3083. *** 1.12    1992/08/14 14:48:29
  3084. --- fwrite.c    1992/10/09 20:46:21
  3085. ***************
  3086. *** 8,13 ****
  3087. --- 8,15 ----
  3088.   #include <string.h>
  3089.   #include "lib.h"
  3090.   
  3091. + extern short  __FRW_BIN__;
  3092.   size_t    fwrite(_data, size, count, fp)
  3093.   const void *_data;
  3094.   size_t size;
  3095. ***************
  3096. *** 39,45 ****
  3097.       n =  count * size;
  3098.       assert ( n <= (size_t)LONG_MAX);  /* otherwise impl will not work */
  3099.   
  3100. !     if( f&_IOBIN ) {
  3101.         space = fp->_bsiz - fp->_cnt;
  3102.         while(n > 0)
  3103.         {
  3104. --- 41,47 ----
  3105.       n =  count * size;
  3106.       assert ( n <= (size_t)LONG_MAX);  /* otherwise impl will not work */
  3107.   
  3108. !     if( (f&_IOBIN) || __FRW_BIN__ ) {
  3109.         space = fp->_bsiz - fp->_cnt;
  3110.         while(n > 0)
  3111.         {
  3112. *** 1.5    1992/03/06 19:19:47
  3113. --- getbuf.c    1992/10/09 20:46:21
  3114. ***************
  3115. *** 18,24 ****
  3116.           fp->_bsiz = __DEFAULT_BUFSIZ__;
  3117.   
  3118.       if((f & _IONBF) /* risky!! but works ok with gnu.may change */
  3119. !         || (!(fp->_base = (unsigned char *)malloc((size_t)fp->_bsiz))) )
  3120.           {
  3121.           fp->_flag &= ~(_IOFBF | _IOLBF | _IONBF);
  3122.           fp->_flag |= _IONBF;
  3123. --- 18,24 ----
  3124.           fp->_bsiz = __DEFAULT_BUFSIZ__;
  3125.   
  3126.       if((f & _IONBF) /* risky!! but works ok with gnu.may change */
  3127. !         || ((fp->_base = (unsigned char *)malloc((size_t)fp->_bsiz)) == 0) )
  3128.           {
  3129.           fp->_flag &= ~(_IOFBF | _IOLBF | _IONBF);
  3130.           fp->_flag |= _IONBF;
  3131. *** 1.9    1992/06/24 15:32:04
  3132. --- getenv.c    1992/10/09 20:46:21
  3133. ***************
  3134. *** 18,24 ****
  3135.   
  3136.       if (!environ) return 0;
  3137.   
  3138. !     for (var = environ; name = *var; var++) {
  3139.           if (!strncmp(name, tag, len) && name[len] == '=')
  3140.               return name+len+1;
  3141.       }
  3142. --- 18,24 ----
  3143.   
  3144.       if (!environ) return 0;
  3145.   
  3146. !     for (var = environ; (name = *var) != 0; var++) {
  3147.           if (!strncmp(name, tag, len) && name[len] == '=')
  3148.               return name+len+1;
  3149.       }
  3150. *** 1.8    1992/06/24 15:32:04
  3151. --- getlogin.c    1992/10/09 20:46:21
  3152. ***************
  3153. *** 13,24 ****
  3154.   char *getlogin()
  3155.   {
  3156.           struct passwd *temp;
  3157. !     char *tmplogname;
  3158.   
  3159.       if(logname != NULL)
  3160.           return logname;
  3161.   
  3162. -     tmplogname = (char *)alloca((size_t)80);
  3163.       *tmplogname = '\0';
  3164.   
  3165.   /* first try the /etc/passwd file */
  3166. --- 13,23 ----
  3167.   char *getlogin()
  3168.   {
  3169.           struct passwd *temp;
  3170. !     char tmplogname[80];
  3171.   
  3172.       if(logname != NULL)
  3173.           return logname;
  3174.   
  3175.       *tmplogname = '\0';
  3176.   
  3177.   /* first try the /etc/passwd file */
  3178. *** 1.9    1992/06/01 01:54:10
  3179. --- getopt.c    1992/10/09 20:46:21
  3180. ***************
  3181. *** 11,24 ****
  3182. --- 11,28 ----
  3183.       provided by D A Gwyn of BRL for generic ANSI C implementations
  3184.   */
  3185.   
  3186. + #include     <compiler.h>
  3187.   #include     <stddef.h>
  3188.   #include    <stdio.h>
  3189.   #include    <string.h>
  3190. + #include    <unistd.h>
  3191.   
  3192.   int    opterr = 1;            /* error => print message */
  3193.   int    optind = 1;            /* next argv[] index */
  3194.   char    *optarg = NULL;            /* option parameter if any */
  3195.   
  3196. + static int Err __PROTO((char *, char *, int));
  3197.   static int
  3198.   Err( name, mess, c )            /* returns '?' */
  3199.       char    *name;            /* program name argv[0] */
  3200. ***************
  3201. *** 37,43 ****
  3202.   int
  3203.   getopt( argc, argv, optstring )        /* returns letter, '?', EOF */
  3204.       int        argc;        /* argument count from main */
  3205. !         const char      *argv[];        /* argument vector from main */
  3206.       const char    *optstring;    /* allowed args, e.g. "ab:c" */
  3207.       {
  3208.       static int    sp = 1;        /* position within argument */
  3209. --- 41,47 ----
  3210.   int
  3211.   getopt( argc, argv, optstring )        /* returns letter, '?', EOF */
  3212.       int        argc;        /* argument count from main */
  3213. !         char * const    *argv;          /* argument vector from main */
  3214.       const char    *optstring;    /* allowed args, e.g. "ab:c" */
  3215.       {
  3216.       static int    sp = 1;        /* position within argument */
  3217. *** 1.1    1991/12/26 15:53:59
  3218. --- getpass.c    1992/10/09 20:46:21
  3219. ***************
  3220. *** 18,24 ****
  3221.       stty(0, &newsb);
  3222.       fputs(prompt, stderr); fflush(stderr);
  3223.       buf[0] = buf[81] = 0;
  3224. !     if((ret = fgets(buf, 80, stdin)))
  3225.       {
  3226.           /* null terminate string */
  3227.           buf[strlen(buf) - 1] = 0;
  3228. --- 18,24 ----
  3229.       stty(0, &newsb);
  3230.       fputs(prompt, stderr); fflush(stderr);
  3231.       buf[0] = buf[81] = 0;
  3232. !     if((ret = fgets(buf, 80, stdin)) != 0)
  3233.       {
  3234.           /* null terminate string */
  3235.           buf[strlen(buf) - 1] = 0;
  3236. *** 1.5    1992/06/01 01:54:10
  3237. --- getpid.c    1992/10/09 20:46:22
  3238. ***************
  3239. *** 5,9 ****
  3240.   
  3241.   extern int __mint;
  3242.   
  3243. ! int getpid() { return __mint ? Pgetpid() : ( ((long)_base) >> 8 ); }
  3244. ! int getppid() { return __mint ? Pgetppid() : (((long)(_base->p_parent)) >> 8); }
  3245. --- 5,9 ----
  3246.   
  3247.   extern int __mint;
  3248.   
  3249. ! int getpid() { return __mint ? Pgetpid() : (int) ( ((long)_base) >> 8 ); }
  3250. ! int getppid() { return __mint ? Pgetppid() : (int) (((long)(_base->p_parent)) >> 8); }
  3251. *** 1.10    1992/06/01 01:54:10
  3252. --- getpw.c    1992/10/09 20:46:22
  3253. ***************
  3254. *** 130,136 ****
  3255.               return (0);
  3256.       }
  3257.   
  3258. !     while (fgets (savbuf, sizeof(savbuf), fp) != NULL)
  3259.       {
  3260.           for (cp = savbuf; *cp && *cp != ':'; cp++)
  3261.               ;
  3262. --- 130,136 ----
  3263.               return (0);
  3264.       }
  3265.   
  3266. !     while (fgets (savbuf, (int)sizeof(savbuf), fp) != NULL)
  3267.       {
  3268.           for (cp = savbuf; *cp && *cp != ':'; cp++)
  3269.               ;
  3270. *** 1.8    1992/06/24 15:32:04
  3271. --- getuid.c    1992/10/09 20:46:22
  3272. ***************
  3273. *** 1,4 ****
  3274. --- 1,8 ----
  3275. + #ifdef __TURBOC__
  3276. + #include <sys\types.h>
  3277. + #else
  3278.   #include <sys/types.h>
  3279. + #endif
  3280.   #include <unistd.h>
  3281.   #include <osbind.h>
  3282.   #include <mintbind.h>
  3283. ***************
  3284. *** 11,19 ****
  3285.   uid_t getuid() { return __mint ? Pgetuid() : __uid; }
  3286.   gid_t getgid() { return __mint ? Pgetgid() : __gid; }
  3287.   
  3288. ! uid_t geteuid() { return getuid(); }
  3289. ! gid_t getegid() { return getgid(); }
  3290.   
  3291.   int setuid(x)
  3292.       int x;
  3293.   {
  3294. --- 15,26 ----
  3295.   uid_t getuid() { return __mint ? Pgetuid() : __uid; }
  3296.   gid_t getgid() { return __mint ? Pgetgid() : __gid; }
  3297.   
  3298. ! uid_t geteuid()
  3299. ! { return __mint >= 95 ? Pgeteuid() : getuid(); }
  3300.   
  3301. + gid_t getegid()
  3302. + { return __mint >= 95 ? Pgetegid() : getgid(); }
  3303.   int setuid(x)
  3304.       int x;
  3305.   {
  3306. ***************
  3307. *** 22,28 ****
  3308.       if (__mint) {
  3309.           r = Psetuid(x);
  3310.           if (r) {
  3311. !             errno = -r;
  3312.               return -1;
  3313.           }
  3314.           return 0;
  3315. --- 29,35 ----
  3316.       if (__mint) {
  3317.           r = Psetuid(x);
  3318.           if (r) {
  3319. !             errno = (int) -r;
  3320.               return -1;
  3321.           }
  3322.           return 0;
  3323. ***************
  3324. *** 39,45 ****
  3325.       if (__mint) {
  3326.           r = Psetgid(x);
  3327.           if (r) {
  3328. !             errno = -r;
  3329.               return -1;
  3330.           }
  3331.           return 0;
  3332. --- 46,52 ----
  3333.       if (__mint) {
  3334.           r = Psetgid(x);
  3335.           if (r) {
  3336. !             errno = (int) -r;
  3337.               return -1;
  3338.           }
  3339.           return 0;
  3340. *** 1.9    1992/06/01 01:54:10
  3341. --- gmon.c    1992/10/09 20:46:22
  3342. ***************
  3343. *** 489,494 ****
  3344. --- 489,509 ----
  3345.       return 0;
  3346.   }
  3347.   
  3348. + #ifdef __MBASE__
  3349. + #define Countdown __MBASESTR__ "@(_countdown)"
  3350. + #define Off __MBASESTR__ "@(_off)"
  3351. + #define Shift_val __MBASESTR__ "@(_shift_val)"
  3352. + #define Maxidx __MBASESTR__ "@(_maxidx)"
  3353. + #define Bufr __MBASESTR__ "@(_bufr)"
  3354. + #define Tick_xbra __MBASESTR__ "@(_tick_xbra+8)"
  3355. + #else
  3356. + #define Countdown "_countdown"
  3357. + #define Off "_off"
  3358. + #define Shift_val "_shift_val"
  3359. + #define Maxidx "_maxidx"
  3360. + #define Bufr "_bufr"
  3361. + #define Tick_xbra "_tick_xbra+8"
  3362. + #endif
  3363.   #ifdef _USE_TIMER_C_
  3364.   /*
  3365.    * tick handler
  3366. ***************
  3367. *** 497,523 ****
  3368.   __asm__ ("\
  3369.        .text; .even
  3370.   _tick:
  3371. !      subqw    #1,_countdown
  3372.        jne    1f
  3373.   
  3374. !      movw    #4,_countdown
  3375.        moveml    d0-d1/a0,sp@-
  3376.        movl    sp@(14),d0    /* get user pc from exception frame */
  3377. !      subl    _off,d0
  3378.       jcs    2f        /* branch if below */
  3379. !      movl    _shift_val,d1    /* shift it */
  3380.        lsrl    d1,d0
  3381. !      cmpl    _maxidx:l,d0    /* compare with max index */
  3382.        jhi    2f        /* branch if out of range */
  3383.   
  3384.        lsll    #1,d0        /* word index */
  3385. !     movl    _bufr,a0
  3386.        addl    d0,a0        /* incr hist word */
  3387.        addqw    #1,a0@
  3388.   2:
  3389.        moveml    sp@+,d0-d1/a0
  3390.   1:
  3391. !     movl    _tick_xbra+8,sp@-
  3392.        rts ");
  3393.   #else
  3394.   /*
  3395. --- 512,538 ----
  3396.   __asm__ ("\
  3397.        .text; .even
  3398.   _tick:
  3399. !      subqw    #1," Countdown "
  3400.        jne    1f
  3401.   
  3402. !      movw    #4," Countdown "
  3403.        moveml    d0-d1/a0,sp@-
  3404.        movl    sp@(14),d0    /* get user pc from exception frame */
  3405. !      subl    " Off ",d0
  3406.       jcs    2f        /* branch if below */
  3407. !      movl    " Shift_val ",d1    /* shift it */
  3408.        lsrl    d1,d0
  3409. !      cmpl    " Maxidx ",d0    /* compare with max index */
  3410.        jhi    2f        /* branch if out of range */
  3411.   
  3412.        lsll    #1,d0        /* word index */
  3413. !     movl    " Bufr ",a0
  3414.        addl    d0,a0        /* incr hist word */
  3415.        addqw    #1,a0@
  3416.   2:
  3417.        moveml    sp@+,d0-d1/a0
  3418.   1:
  3419. !     movl    " Tick_xbra ",sp@-
  3420.        rts ");
  3421.   #else
  3422.   /*
  3423. ***************
  3424. *** 535,553 ****
  3425.        .text; .even
  3426.   _tick:
  3427.        movl    sp@(68),d0    /* get user pc from exception frame */
  3428. !      subl    _off,d0
  3429.       jcs    1f        /* branch if below */
  3430. !      movl    _shift_val,d1    /* shift it */
  3431.        lsrl    d1,d0
  3432. !      cmpl    _maxidx:l,d0    /* compare with max index */
  3433.        jhi    1f        /* branch if out of range */
  3434.   
  3435.        lsll    #1,d0        /* word index */
  3436. !     movl    _bufr,a0
  3437.        addl    d0,a0        /* incr hist word */
  3438.        addqw    #1,a0@
  3439.   1:
  3440. !     movl    _tick_xbra+8,sp@-    /* call next handler in chain */
  3441.        rts ");
  3442.   #endif
  3443.   
  3444. --- 550,568 ----
  3445.        .text; .even
  3446.   _tick:
  3447.        movl    sp@(68),d0    /* get user pc from exception frame */
  3448. !      subl    " Off ",d0
  3449.       jcs    1f        /* branch if below */
  3450. !      movl    " Shift_val ",d1    /* shift it */
  3451.        lsrl    d1,d0
  3452. !      cmpl    " Maxidx ",d0    /* compare with max index */
  3453.        jhi    1f        /* branch if out of range */
  3454.   
  3455.        lsll    #1,d0        /* word index */
  3456. !     movl    " Bufr ",a0
  3457.        addl    d0,a0        /* incr hist word */
  3458.        addqw    #1,a0@
  3459.   1:
  3460. !     movl    " Tick_xbra ",sp@-    /* call next handler in chain */
  3461.        rts ");
  3462.   #endif
  3463.   
  3464. *** 1.12    1992/07/20 22:01:12
  3465. --- gnulib2.c    1992/10/09 20:46:22
  3466. ***************
  3467. *** 209,215 ****
  3468.   /* These algorithms are all straight out of Knuth, vol. 2, sec. 4.3.1. */
  3469.   
  3470.   __EXTERN long long __adddi3 __PROTO((long long u, long long v));
  3471. - static int badd __PROTO((unsigned short *a, unsigned short *b, unsigned short *c, size_t n));
  3472.   __EXTERN long long __anddi3 __PROTO((long long u, long long v));
  3473.   __EXTERN long long __iordi3 __PROTO((long long u, long long v));
  3474.   __EXTERN long long __xordi3 __PROTO((long long u, long long v));
  3475. --- 209,214 ----
  3476. ***************
  3477. *** 219,235 ****
  3478.   __EXTERN long long __ashldi3 __PROTO((long long u, long int b1));
  3479.   __EXTERN long long __ashrdi3 __PROTO((long long u, long int b1));
  3480.   __EXTERN long long __subdi3 __PROTO((long long u, long long v));
  3481. - static int bsub __PROTO((unsigned short *a, unsigned short *b, unsigned short *c, size_t n));
  3482.   __EXTERN long long __muldi3 __PROTO((long long u, long long v));
  3483. - static void bmul __PROTO((unsigned short *a, unsigned short *b, unsigned short *c, size_t m, size_t n));
  3484.   __EXTERN long long __divdi3 __PROTO((long long u, long long v));
  3485.   __EXTERN long long __moddi3 __PROTO((long long u, long long v));
  3486.   __EXTERN long long __udivdi3 __PROTO((long long u, long long v));
  3487.   __EXTERN long long __umoddi3 __PROTO((long long u, long long v));
  3488.   __EXTERN long long __negdi2 __PROTO((long long u));
  3489. - static int bneg __PROTO((unsigned short *a, unsigned short *b, size_t n));
  3490.   __EXTERN void __bdiv __PROTO((unsigned short *a, unsigned short *b, unsigned short *q, unsigned short *r, size_t m, size_t n));
  3491. - static int bshift __PROTO((unsigned short *u, int k, unsigned short *w, unsigned int carry_in, int n));
  3492.   __EXTERN SItype __cmpdi2 __PROTO((long long a, long long b));
  3493.   __EXTERN SItype __ucmpdi2 __PROTO((long long a, long long b));
  3494.   __EXTERN long long __fixunsdfdi __PROTO((double a));
  3495. --- 218,230 ----
  3496. ***************
  3497. *** 239,244 ****
  3498. --- 234,241 ----
  3499.   __EXTERN unsigned SItype __fixunssfsi __PROTO((float a));
  3500.   
  3501.   #ifdef L_adddi3
  3502. + static int badd __PROTO((unsigned short *a, unsigned short *b, unsigned short *c, size_t n));
  3503.   long long 
  3504.   __adddi3 (u, v)
  3505.        long long u, v;
  3506. ***************
  3507. *** 492,497 ****
  3508. --- 489,497 ----
  3509.   #endif
  3510.   
  3511.   #ifdef L_subdi3
  3512. + static int bsub __PROTO((unsigned short *a, unsigned short *b, unsigned short *c, size_t n));
  3513.   long long 
  3514.   __subdi3 (u, v)
  3515.        long long u, v;
  3516. ***************
  3517. *** 538,543 ****
  3518. --- 538,546 ----
  3519.   #endif
  3520.   
  3521.   #ifdef L_muldi3
  3522. + static void bmul __PROTO((unsigned short *a, unsigned short *b, unsigned short *c, size_t m, size_t n));
  3523.   long long 
  3524.   __muldi3 (u, v)
  3525.        long long u, v;
  3526. ***************
  3527. *** 683,688 ****
  3528. --- 686,694 ----
  3529.   #endif
  3530.   
  3531.   #ifdef L_negdi2
  3532. + static int bneg __PROTO((unsigned short *a, unsigned short *b, size_t n));
  3533.   long long 
  3534.   __negdi2 (u)
  3535.        long long u;
  3536. ***************
  3537. *** 738,743 ****
  3538. --- 744,751 ----
  3539.      but that is too long for SYSV.  */
  3540.   
  3541.   #ifdef L_bdiv
  3542. + static int bshift __PROTO((unsigned short *u, int k, unsigned short *w, unsigned int carry_in, int n));
  3543.   void 
  3544.   __bdiv (a, b, q, r, m, n)
  3545.        unsigned short *a, *b, *q, *r;
  3546. *** 1.5    1992/06/01 01:54:10
  3547. --- grp.c    1992/10/09 20:46:23
  3548. ***************
  3549. *** 91,97 ****
  3550.       if (!fp) setgrent();
  3551.       if (!fp) return 0;
  3552.   
  3553. !     if (fgets (savbuf, sizeof(savbuf), fp) != NULL)
  3554.       {
  3555.           for (cp = savbuf; *cp && *cp != ':'; cp++)
  3556.               ;
  3557. --- 91,97 ----
  3558.       if (!fp) setgrent();
  3559.       if (!fp) return 0;
  3560.   
  3561. !     if (fgets (savbuf, (int) sizeof(savbuf), fp) != NULL)
  3562.       {
  3563.           for (cp = savbuf; *cp && *cp != ':'; cp++)
  3564.               ;
  3565. *** 1.5    1992/03/06 19:19:47
  3566. --- ldexp.cpp    1992/10/09 20:46:24
  3567. ***************
  3568. *** 1,4 ****
  3569.   #if !defined (__M68881__) && !defined (sfp004)
  3570.   
  3571.    | add exponent to floating point number
  3572. --- 1,34 ----
  3573. !     .text
  3574. !     .globl _ldexp
  3575. !     .globl __infinitydf
  3576. !     .even
  3577. ! #ifdef    ERROR_CHECK
  3578. ! #include "errbase.h"
  3579. ! _Overflow:
  3580. !     .ascii "ldexp: OVERFLOW\12\15\0"
  3581. ! # if defined(__M68881__) || defined(sfp004)
  3582. ! _Domain:
  3583. !     .ascii "ldexp: NAN\12\15\0"
  3584. !     .even
  3585. ! double_max:
  3586. !     .long    0x7fee42d1
  3587. !     .long    0x30273b76
  3588. ! double_min:
  3589. !     .long    0xffee42d1
  3590. !     .long    0x30273b76
  3591. ! NaN:
  3592. !     .long    0x7fffffff
  3593. !     .long    0xffffffff
  3594. ! p_Inf:
  3595. !     .long    0x7ff00000
  3596. !     .long    0x00000000
  3597. ! m_Inf:
  3598. !     .long    0xfff00000
  3599. !     .long    0x00000000
  3600. ! # endif
  3601. !     .even
  3602. ! #endif    ERROR_CHECK
  3603. ! _ldexp:
  3604.   #if !defined (__M68881__) && !defined (sfp004)
  3605.   
  3606.    | add exponent to floating point number
  3607. ***************
  3608. *** 14,30 ****
  3609.    |  #4  handle exponent overflow when ints are 32 bits        -kub-, 04/90
  3610.    |-----------------------------------------------------------------------------
  3611.   
  3612. -     .text; .even
  3613. -     .globl _ldexp
  3614. -     .globl __infinitydf
  3615. - #ifdef    ERROR_CHECK
  3616. - _Overflow:
  3617. -     .ascii "ldexp: OVERFLOW\12\15\0"
  3618. -     .even
  3619. - #endif    ERROR_CHECK
  3620. - _ldexp:
  3621.       lea    sp@(4),a1
  3622.       moveml    d2-d7,sp@-    | save d2-d7
  3623.   
  3624. --- 44,49 ----
  3625. ***************
  3626. *** 56,65 ****
  3627.       moveml    a1@,d4-d5    | value into d4,d5
  3628.       jmp    norm_df        | norm_df will pop d2-d7 and rts
  3629.   
  3630. -     .globl    _errno        | from <errno.h>
  3631. - ERANGE    =    63
  3632.   retz:
  3633.       moveq    #0,d0        | zero return value
  3634.       moveq    #0,d1
  3635. --- 75,80 ----
  3636. ***************
  3637. *** 68,84 ****
  3638.   rangerr:
  3639.   
  3640.   #ifdef ERROR_CHECK
  3641. ! # ifdef __MSHORT__
  3642. !     movew    #ERANGE,_errno    | set errno
  3643. ! # else
  3644. !     movel    #ERANGE,_errno    | set errno
  3645. ! # endif
  3646. !     moveml    d0-d1,a7@-
  3647. !     pea    _Overflow    | for printf
  3648. !     pea    __iob+52    |
  3649.       jbsr    _fprintf    |
  3650.       addql    #8,a7        |
  3651. -     moveml    a7@+,d0-d1
  3652.   #endif ERROR_CHECK
  3653.   
  3654.       moveml    __infinitydf,d0-d1 | return HUGE_VAL (same as in <math.h>)
  3655. --- 83,94 ----
  3656.   rangerr:
  3657.   
  3658.   #ifdef ERROR_CHECK
  3659. !     moveq    #ERANGE,d0
  3660. !     Emove    d0,Errno
  3661. !     pea    pc@(_Overflow)    | for printf
  3662. !     pea    Stderr        |
  3663.       jbsr    _fprintf    |
  3664.       addql    #8,a7        |
  3665.   #endif ERROR_CHECK
  3666.   
  3667.       moveml    __infinitydf,d0-d1 | return HUGE_VAL (same as in <math.h>)
  3668. ***************
  3669. *** 104,139 ****
  3670.   |# hacked for the 68881 by Michael Ritzert, 5.10.90
  3671.   |##############################################################################
  3672.   |# ported fromt sfp004 to real coprocessor, mjr, August 1991
  3673. ! |################################################################################
  3674. !     .text; .even
  3675. !     .globl _ldexp
  3676. ! #ifdef    ERROR_CHECK
  3677. ! _Domain:
  3678. !     .ascii "ldexp: NAN\12\15\0"
  3679. ! _Overflow:
  3680. !     .ascii "ldexp: OVERFLOW\12\15\0"
  3681. !     .even
  3682. ! double_max:
  3683. !     .long    0x7fee42d1
  3684. !     .long    0x30273b76
  3685. ! double_min:
  3686. !     .long    0xffee42d1
  3687. !     .long    0x30273b76
  3688. ! NaN:
  3689. !     .long    0x7fffffff
  3690. !     .long    0xffffffff
  3691. ! p_Inf:
  3692. !     .long    0x7ff00000
  3693. !     .long    0x00000000
  3694. ! m_Inf:
  3695. !     .long    0xfff00000
  3696. !     .long    0x00000000
  3697. ! .even
  3698. ! #endif    ERROR_CHECK
  3699. ! _ldexp:
  3700.   
  3701.   #ifdef __MSHORT__
  3702.       movew    a7@(12),d0        | get exponent
  3703. --- 114,120 ----
  3704.   |# hacked for the 68881 by Michael Ritzert, 5.10.90
  3705.   |##############################################################################
  3706.   |# ported fromt sfp004 to real coprocessor, mjr, August 1991
  3707. ! |##############################################################################
  3708.   
  3709.   #ifdef __MSHORT__
  3710.       movew    a7@(12),d0        | get exponent
  3711. ***************
  3712. *** 180,214 ****
  3713.   |    or
  3714.   |    .long    0x0c6889000, 0x000067f8            (a0)
  3715.   
  3716. -     .text; .even
  3717. -     .globl _ldexp
  3718. - #ifdef    ERROR_CHECK
  3719. - _Domain:
  3720. -     .ascii "ldexp: NAN\12\15\0"
  3721. - _Overflow:
  3722. -     .ascii "ldexp: OVERFLOW\12\15\0"
  3723. -     .even
  3724. - double_max:
  3725. -     .long    0x7fee42d1
  3726. -     .long    0x30273b76
  3727. - double_min:
  3728. -     .long    0xffee42d1
  3729. -     .long    0x30273b76
  3730. - NaN:
  3731. -     .long    0x7fffffff
  3732. -     .long    0xffffffff
  3733. - p_Inf:
  3734. -     .long    0x7ff00000
  3735. -     .long    0x00000000
  3736. - m_Inf:
  3737. -     .long    0xfff00000
  3738. -     .long    0x00000000
  3739. - .even
  3740. - #endif    ERROR_CHECK
  3741. - _ldexp:
  3742.   #ifdef __MSHORT__
  3743.       movew    sp@(12),d0        | get exponent
  3744.       extl    d0
  3745. --- 161,166 ----
  3746. ***************
  3747. *** 215,221 ****
  3748.   #else
  3749.       movel    sp@(12),d0        | get exponent
  3750.   #endif
  3751. !     lea    0xfffa50,a0        | fpu address
  3752.       movew    #0x549e,a0@(comm)    | fgetexpd sp@(4),fp1
  3753.       cmpiw    #0x8900,a0@(resp)
  3754.       movel    sp@(4),a0@
  3755. --- 167,173 ----
  3756.   #else
  3757.       movel    sp@(12),d0        | get exponent
  3758.   #endif
  3759. !     lea    0xfffffa50:w,a0        | fpu address
  3760.       movew    #0x549e,a0@(comm)    | fgetexpd sp@(4),fp1
  3761.       cmpiw    #0x8900,a0@(resp)
  3762.       movel    sp@(4),a0@
  3763. ***************
  3764. *** 246,284 ****
  3765.       beq    error_plus    |
  3766.       swap    d0        | result ok,
  3767.       rts            | restore d0
  3768. - # ifndef    __MSHORT__
  3769. - error_plus:
  3770. -     swap    d0
  3771. -     movel    #63,_errno    | Overflow: errno = ERANGE
  3772. -     moveml    d0-d1,a7@-    | print error message
  3773. -     pea    _Domain        | for printf
  3774. -     bra    error_exit    |
  3775. - error_nan:
  3776. -     moveml    a0@(24),d0-d1    | result = +inf
  3777. -     movel    #62,_errno    | NAN => errno = EDOM
  3778. -     moveml    d0-d1,a7@-    | print error message
  3779. -     pea    _Overflow    | for printf
  3780. - # else    __MSHORT__
  3781.   error_plus:
  3782.       swap    d0
  3783. -     movew    #63,_errno    | Overflow: errno = ERANGE
  3784.       moveml    d0-d1,a7@-    | print error message
  3785. !     pea    _Domain        | for printf
  3786.       bra    error_exit    |
  3787.   error_nan:
  3788.       moveml    a0@(24),d0-d1    | result = +inf
  3789. -     movew    #62,_errno    | NAN => errno = EDOM
  3790.       moveml    d0-d1,a7@-    | print error message
  3791. !     pea    _Overflow    | for printf
  3792. ! # endif    __MSHORT__
  3793.   error_exit:
  3794. !     pea    __iob+52    |
  3795.       jbsr    _fprintf    |
  3796.       addql    #8,a7        |
  3797.       moveml    a7@+,d0-d1
  3798. -     rts
  3799. - #else    ERROR_CHECK
  3800. -     rts
  3801.   #endif    ERROR_CHECK
  3802.   
  3803.   #endif    /* !__M68881__ && !sfp004    */
  3804. --- 198,222 ----
  3805.       beq    error_plus    |
  3806.       swap    d0        | result ok,
  3807.       rts            | restore d0
  3808.   error_plus:
  3809.       swap    d0
  3810.       moveml    d0-d1,a7@-    | print error message
  3811. !     moveq    #ERANGE,d0    | Overflow: errno = ERANGE
  3812. !     Emove    d0,Errno
  3813. !     pea    pc@(_Domain)    | for printf
  3814.       bra    error_exit    |
  3815.   error_nan:
  3816. +     moveq    #EDOM,d0    | NAN => errno = EDOM
  3817. +     Emove    d0,Errno
  3818.       moveml    a0@(24),d0-d1    | result = +inf
  3819.       moveml    d0-d1,a7@-    | print error message
  3820. !     pea    pc@(_Overflow)    | for printf
  3821.   error_exit:
  3822. !     pea    Stderr        |
  3823.       jbsr    _fprintf    |
  3824.       addql    #8,a7        |
  3825.       moveml    a7@+,d0-d1
  3826.   #endif    ERROR_CHECK
  3827. +     rts
  3828.   
  3829.   #endif    /* !__M68881__ && !sfp004    */
  3830. *** 1.7    1992/06/24 15:32:04
  3831. --- lib.h    1992/10/09 20:46:24
  3832. ***************
  3833. *** 47,55 ****
  3834. --- 47,61 ----
  3835.   
  3836.   __EXTERN int        _doprnt __PROTO((FILE *, const char *, __VA_LIST__));
  3837.   
  3838. + #ifdef __MINT__
  3839. + __EXTERN int    _scanf __PROTO((void *, int (*)(void *),
  3840. +             int (*)(int, void *), unsigned char *, __VA_LIST__));
  3841. + #endif
  3842.   __EXTERN long        get_sysvar __PROTO((void *var));
  3843.   __EXTERN void        set_sysvar_to_long __PROTO((void *var, long val));
  3844.   
  3845. + __EXTERN void        _setstack __PROTO((char *));
  3846.   __EXTERN __EXITING     __exit __PROTO((long status));
  3847.   
  3848.   /* from the TOS GCC library */
  3849. ***************
  3850. *** 58,65 ****
  3851.   struct mem_chunk 
  3852.       {
  3853.       long valid;
  3854. ! #define VAL_FREE  0xf4ee0abc
  3855. ! #define VAL_ALLOC 0xa11c0abc
  3856.   
  3857.       struct mem_chunk *next;
  3858.       unsigned long size;
  3859. --- 64,71 ----
  3860.   struct mem_chunk 
  3861.       {
  3862.       long valid;
  3863. ! #define VAL_FREE  0xf4ee0abcL
  3864. ! #define VAL_ALLOC 0xa11c0abcL
  3865.   
  3866.       struct mem_chunk *next;
  3867.       unsigned long size;
  3868. ***************
  3869. *** 67,72 ****
  3870.   
  3871.   /* linked list of free blocks */
  3872.   
  3873. ! __EXTERN struct mem_chunk _mchunk_free_list;
  3874.   
  3875.   #endif /* _LIB_H */
  3876. --- 73,78 ----
  3877.   
  3878.   /* linked list of free blocks */
  3879.   
  3880. ! extern struct mem_chunk _mchunk_free_list;
  3881.   
  3882.   #endif /* _LIB_H */
  3883. *** 1.4    1991/03/13 14:58:25
  3884. --- linea.c    1992/10/09 20:46:24
  3885. ***************
  3886. *** 35,50 ****
  3887.   
  3888.   int linea2()                             
  3889.   {                                    
  3890. -     short retvalue;                            
  3891.       __asm__ volatile                        
  3892.       ("
  3893. !         .word   0xA002;  
  3894. !          movew    d0,%0"   
  3895. !     : "=g"(retvalue)                  /* outputs */    
  3896.       :                           /* inputs  */    
  3897.       : "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */    
  3898.       );                                
  3899. -     return (int)retvalue;                            
  3900.   }
  3901.   
  3902.   void linea3()                             
  3903. --- 35,47 ----
  3904.   
  3905.   int linea2()                             
  3906.   {                                    
  3907.       __asm__ volatile                        
  3908.       ("
  3909. !         .word   0xA002"
  3910. !     :                           /* outputs */    
  3911.       :                           /* inputs  */    
  3912.       : "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */    
  3913.       );                                
  3914.   }
  3915.   
  3916.   void linea3()                             
  3917. *** 1.14    1992/06/01 01:54:10
  3918. --- localtim.c    1992/10/09 20:46:24
  3919. ***************
  3920. *** 9,14 ****
  3921. --- 9,16 ----
  3922.   #include <compiler.h>
  3923.   #endif
  3924.   
  3925. + struct tm *_gmtime __PROTO((const time_t *t, struct tm *stm));
  3926.   #if 0
  3927.   static void
  3928.   DEBUG_TM(nm, tm)
  3929. ***************
  3930. *** 98,104 ****
  3931.   
  3932.           if (time < 0)   /* negative times are bad */
  3933.                   return 0;
  3934. !         stm->tm_wday = ((time/SECS_PER_DAY) + 4) % 7;
  3935.   
  3936.           year = 70;
  3937.           for (;;) {
  3938. --- 100,106 ----
  3939.   
  3940.           if (time < 0)   /* negative times are bad */
  3941.                   return 0;
  3942. !         stm->tm_wday = (int) (((time/SECS_PER_DAY) + 4) % 7);
  3943.   
  3944.           year = 70;
  3945.           for (;;) {
  3946. ***************
  3947. *** 114,120 ****
  3948.                   year++;
  3949.           }
  3950.           stm->tm_year = year;
  3951. !         mday = stm->tm_yday = time/SECS_PER_DAY;
  3952.   
  3953.           days_per_mth[1] = (year % 4) ? 28 : 29;
  3954.           for (i = 0; mday >= days_per_mth[i]; i++)
  3955. --- 116,122 ----
  3956.                   year++;
  3957.           }
  3958.           stm->tm_year = year;
  3959. !         mday = stm->tm_yday = (int)(time/SECS_PER_DAY);
  3960.   
  3961.           days_per_mth[1] = (year % 4) ? 28 : 29;
  3962.           for (i = 0; mday >= days_per_mth[i]; i++)
  3963. ***************
  3964. *** 123,132 ****
  3965.           stm->tm_mday = mday + 1;
  3966.   
  3967.           time = time % SECS_PER_DAY;
  3968. !         stm->tm_hour = time/SECS_PER_HOUR;
  3969.           time = time % SECS_PER_HOUR;
  3970. !         stm->tm_min = time/SECS_PER_MIN;
  3971. !         stm->tm_sec = time % SECS_PER_MIN;
  3972.           stm->tm_isdst = 0;
  3973.   
  3974.   DEBUG_TM("gmtime", stm);
  3975. --- 125,134 ----
  3976.           stm->tm_mday = mday + 1;
  3977.   
  3978.           time = time % SECS_PER_DAY;
  3979. !         stm->tm_hour = (int) (time/SECS_PER_HOUR);
  3980.           time = time % SECS_PER_HOUR;
  3981. !         stm->tm_min = (int) (time/SECS_PER_MIN);
  3982. !         stm->tm_sec = (int) (time % SECS_PER_MIN);
  3983.           stm->tm_isdst = 0;
  3984.   
  3985.   DEBUG_TM("gmtime", stm);
  3986. ***************
  3987. *** 306,318 ****
  3988.       long s;
  3989.           const struct tm *t;
  3990.   {
  3991. -     int wkday;
  3992. -     if (t->tm_wday >= 0)
  3993. -         wkday = t->tm_wday;
  3994. -     else
  3995. -         wkday = ((s / SECS_PER_DAY) + 4) % 7;
  3996.           if (t->tm_mon == 3) {           /* April */
  3997.   /* before 1987, see if there's another sunday in the month */
  3998.                   if (t->tm_year < 87 && t->tm_wday + 30 - t->tm_mday < 7)
  3999. --- 308,313 ----
  4000. *** 1.9    1992/06/24 15:32:04
  4001. --- lseek.c    1992/10/09 20:46:24
  4002. ***************
  4003. *** 1,3 ****
  4004. --- 1,4 ----
  4005. + #include <compiler.h>
  4006.   #include <stddef.h>
  4007.   #include <stdio.h>
  4008.   #include <errno.h>
  4009. ***************
  4010. *** 7,12 ****
  4011. --- 8,15 ----
  4012.   #include <unistd.h>
  4013.   #include "lib.h"
  4014.   
  4015. + static long _real_lseek __PROTO((int, long, int));
  4016.   static long _real_lseek(h, where, how)
  4017.   int h;
  4018.   long where;
  4019. ***************
  4020. *** 31,37 ****
  4021.       long current_pos;
  4022.       long expected_pos;
  4023.       long new_pos;
  4024. !     char *buf;
  4025.       
  4026.       if ( (mode == SEEK_END) || (offset <= 0) )
  4027.       /* do it the usual way */
  4028. --- 34,40 ----
  4029.       long current_pos;
  4030.       long expected_pos;
  4031.       long new_pos;
  4032. !     char buf[256];
  4033.       
  4034.       if ( (mode == SEEK_END) || (offset <= 0) )
  4035.       /* do it the usual way */
  4036. ***************
  4037. *** 52,58 ****
  4038.       new_pos = _real_lseek(handle, 0L, SEEK_END);    /* go to eof */
  4039.       }    
  4040.       
  4041. -     buf  = (char *)alloca((size_t)256);
  4042.       bzero(buf, (size_t)256);
  4043.       while (expected_pos > new_pos)    
  4044.       {
  4045. --- 55,60 ----
  4046. *** 1.7    1992/06/01 01:54:10
  4047. --- ltoa.c    1992/10/09 20:46:24
  4048. ***************
  4049. *** 1,8 ****
  4050.   #include <string.h>
  4051.   #include "lib.h"
  4052.   
  4053.   #ifdef __STRICT_ANSI__
  4054. ! #  ifdef __GNUC__
  4055.       char * strrev(char *);
  4056.   #  else
  4057.       extern char * strrev();
  4058. --- 1,9 ----
  4059.   #include <string.h>
  4060.   #include "lib.h"
  4061. + #include "lib.h"
  4062.   
  4063.   #ifdef __STRICT_ANSI__
  4064. ! #  ifdef __STDC__
  4065.       char * strrev(char *);
  4066.   #  else
  4067.       extern char * strrev();
  4068. *** 1.21    1992/06/01 01:54:10
  4069. --- malloc.c    1992/10/09 20:46:24
  4070. ***************
  4071. *** 5,10 ****
  4072. --- 5,11 ----
  4073.   /* 5/2/92 sb -- modified for Heat-n-Serve C to accomodate its 16-bit size_t */
  4074.   /* 5/5/92 sb -- split off realloc() & calloc() to reduce library drag */
  4075.   
  4076. + #include <compiler.h>
  4077.   #include <stddef.h>    /* for size_t */
  4078.   #include <stdlib.h>
  4079.   #include <memory.h>
  4080. ***************
  4081. *** 14,19 ****
  4082. --- 15,21 ----
  4083.   #include "lib.h"
  4084.   
  4085.   extern long _stksize;
  4086. + void *_malloc __PROTO((unsigned long));
  4087.   
  4088.   /* minimum chunk to ask OS for */
  4089.   static size_t MINHUNK =    4096L;    /* default */
  4090. ***************
  4091. *** 32,38 ****
  4092.   static int _ZeroMallocs = 0;
  4093.   
  4094.   __EXTERN void _bzero __PROTO((void *, unsigned long));
  4095. - __EXTERN void *_sbrk __PROTO((long));
  4096.   
  4097.   #ifdef __GNUC__
  4098.   asm(".stabs \"_malloc\",5,0,0,__malloc"); /* dept of clean tricks */
  4099. --- 34,39 ----
  4100. ***************
  4101. *** 161,167 ****
  4102.       s = (struct mem_chunk * )(((long) p) + p->size);
  4103.       if ((!_split_mem) && _heapbase != NULL &&
  4104.           s >= (struct mem_chunk *) _heapbase &&
  4105. !         s < (struct mem_chunk *) (_heapbase + _stksize)) {
  4106.         assert(s == (struct mem_chunk *) _heapbase);
  4107.         _heapbase = (void *) p;
  4108.         _stksize += p->size;
  4109. --- 162,168 ----
  4110.       s = (struct mem_chunk * )(((long) p) + p->size);
  4111.       if ((!_split_mem) && _heapbase != NULL &&
  4112.           s >= (struct mem_chunk *) _heapbase &&
  4113. !         s < (struct mem_chunk *) ((char *)_heapbase + _stksize)) {
  4114.         assert(s == (struct mem_chunk *) _heapbase);
  4115.         _heapbase = (void *) p;
  4116.         _stksize += p->size;
  4117. ***************
  4118. *** 173,179 ****
  4119.         s = (struct mem_chunk * )(((long) r) + r->size);
  4120.         if ((!_split_mem) && _heapbase != NULL &&
  4121.             s >= (struct mem_chunk *) _heapbase &&
  4122. !           s < (struct mem_chunk *) (_heapbase + _stksize)) {
  4123.           assert(s == (struct mem_chunk *) _heapbase);
  4124.           _heapbase = (void *) r;
  4125.           _stksize += r->size;
  4126. --- 174,180 ----
  4127.         s = (struct mem_chunk * )(((long) r) + r->size);
  4128.         if ((!_split_mem) && _heapbase != NULL &&
  4129.             s >= (struct mem_chunk *) _heapbase &&
  4130. !           s < (struct mem_chunk *) ((char *)_heapbase + _stksize)) {
  4131.           assert(s == (struct mem_chunk *) _heapbase);
  4132.           _heapbase = (void *) r;
  4133.           _stksize += r->size;
  4134. *** 1.1    1992/02/04 17:11:06
  4135. --- modf.cpp    1992/10/09 20:46:25
  4136. ***************
  4137. *** 141,147 ****
  4138.   .even
  4139.   _modf:
  4140.       movel    a1,a7@-            | save a1 (necessary?)
  4141. !     lea    0xfffa50,a0
  4142.       movew    #0x5403,a0@(comm)    | fintrz X -> fp0
  4143.       cmpiw    #0x8900,a0@(resp)    | check
  4144.       movel    a7@(8),a0@        | load X_hi
  4145. --- 141,147 ----
  4146.   .even
  4147.   _modf:
  4148.       movel    a1,a7@-            | save a1 (necessary?)
  4149. !     lea    0xfffffa50:w,a0
  4150.       movew    #0x5403,a0@(comm)    | fintrz X -> fp0
  4151.       cmpiw    #0x8900,a0@(resp)    | check
  4152.       movel    a7@(8),a0@        | load X_hi
  4153. *** 1.1    1992/06/01 01:54:10
  4154. --- obstack.c    1992/10/09 20:46:25
  4155. ***************
  4156. *** 15,22 ****
  4157.   along with this program; if not, write to the Free Software
  4158.   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  4159.   
  4160. - #include <obstack.h>
  4161.   #include <compiler.h>
  4162.   #ifndef _SIZE_T
  4163.   #define _SIZE_T __SIZE_TYPEDEF__
  4164.   typedef _SIZE_T size_t;
  4165. --- 15,23 ----
  4166.   along with this program; if not, write to the Free Software
  4167.   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  4168.   
  4169.   #include <compiler.h>
  4170. + #include <obstack.h>
  4171. + #include <stdlib.h>
  4172.   #ifndef _SIZE_T
  4173.   #define _SIZE_T __SIZE_TYPEDEF__
  4174.   typedef _SIZE_T size_t;
  4175. ***************
  4176. *** 64,70 ****
  4177.        struct obstack *h;
  4178.        size_t size;
  4179.        int alignment;
  4180. !      POINTER (*chunkfun) ();
  4181.        void (*freefun) ();
  4182.   {
  4183.     register struct _obstack_chunk* chunk; /* points to new chunk */
  4184. --- 65,71 ----
  4185.        struct obstack *h;
  4186.        size_t size;
  4187.        int alignment;
  4188. !      POINTER (*chunkfun) __PROTO((size_t));
  4189.        void (*freefun) ();
  4190.   {
  4191.     register struct _obstack_chunk* chunk; /* points to new chunk */
  4192. ***************
  4193. *** 82,94 ****
  4194.   
  4195.        These number are irrelevant to the new GNU malloc.  I suspect it is
  4196.        less sensitive to the size of the request.  */
  4197. !       int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))
  4198.               + 4 + DEFAULT_ROUNDING - 1)
  4199.              & ~(DEFAULT_ROUNDING - 1));
  4200.         size = 4096 - extra;
  4201.       }
  4202.   
  4203. !   h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
  4204.     h->freefun = freefun;
  4205.     h->chunk_size = size;
  4206.     h->alignment_mask = alignment - 1;
  4207. --- 83,95 ----
  4208.   
  4209.        These number are irrelevant to the new GNU malloc.  I suspect it is
  4210.        less sensitive to the size of the request.  */
  4211. !       size_t extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))
  4212.               + 4 + DEFAULT_ROUNDING - 1)
  4213.              & ~(DEFAULT_ROUNDING - 1));
  4214.         size = 4096 - extra;
  4215.       }
  4216.   
  4217. !   h->chunkfun = (struct _obstack_chunk * (*) __PROTO((size_t))) chunkfun;
  4218.     h->freefun = freefun;
  4219.     h->chunk_size = size;
  4220.     h->alignment_mask = alignment - 1;
  4221. ***************
  4222. *** 118,124 ****
  4223.     register size_t    new_size;
  4224.     register size_t obj_size = h->next_free - h->object_base;
  4225.     register long i;
  4226. !   int already;
  4227.   
  4228.     /* Compute size for new chunk.  */
  4229.     new_size = (obj_size + length) + (obj_size >> 3) + 100;
  4230. --- 119,125 ----
  4231.     register size_t    new_size;
  4232.     register size_t obj_size = h->next_free - h->object_base;
  4233.     register long i;
  4234. !   size_t already;
  4235.   
  4236.     /* Compute size for new chunk.  */
  4237.     new_size = (obj_size + length) + (obj_size >> 3) + 100;
  4238. *** 1.9    1992/06/01 01:54:10
  4239. --- perror.c    1992/10/09 20:46:25
  4240. ***************
  4241. *** 16,22 ****
  4242.           fputs(msg, stderr);
  4243.           fputs(": ", stderr);
  4244.           }
  4245. !     if(msg = strerror(errno))
  4246.           fputs(msg, stderr);
  4247.       fputs(".\n", stderr);
  4248.       }
  4249. --- 16,22 ----
  4250.           fputs(msg, stderr);
  4251.           fputs(": ", stderr);
  4252.           }
  4253. !     if((msg = strerror(errno)) != NULL)
  4254.           fputs(msg, stderr);
  4255.       fputs(".\n", stderr);
  4256.       }
  4257. *** 1.1    1992/04/13 15:50:45
  4258. --- putenv.c    1992/10/09 20:46:26
  4259. ***************
  4260. *** 27,33 ****
  4261.           len++;
  4262.   
  4263.   /* find the tag in the environment */
  4264. !     for (var = environ; name = *var; var++) {
  4265.           if (!strncmp(name, strng, len) && name[len] == '=')
  4266.               break;
  4267.       }
  4268. --- 27,33 ----
  4269.           len++;
  4270.   
  4271.   /* find the tag in the environment */
  4272. !     for (var = environ; (name = *var) != NULL; var++) {
  4273.           if (!strncmp(name, strng, len) && name[len] == '=')
  4274.               break;
  4275.       }
  4276. *** 1.13    1992/06/24 15:32:04
  4277. --- qsort.c    1992/10/09 20:46:26
  4278. ***************
  4279. *** 226,232 ****
  4280.               max_stack_size++;
  4281.       }
  4282.       /* Create the stack, or die trying! */
  4283. !     if (stack = MAKE_STACK (max_stack_size))
  4284.           top = stack;
  4285.       else
  4286.           return;
  4287. --- 226,232 ----
  4288.               max_stack_size++;
  4289.       }
  4290.       /* Create the stack, or die trying! */
  4291. !     if ((stack = MAKE_STACK (max_stack_size)) != NULL)
  4292.           top = stack;
  4293.       else
  4294.           return;
  4295. *** 1.7    1992/06/01 01:54:10
  4296. --- random.c    1992/10/09 20:46:26
  4297. ***************
  4298. *** 20,25 ****
  4299. --- 20,26 ----
  4300.   #endif /* LIBC_SCCS and not lint */
  4301.   
  4302.   #include <stdio.h>
  4303. + #include <unistd.h>
  4304.   
  4305.   /*
  4306.    * random.c:
  4307. ***************
  4308. *** 121,134 ****
  4309.    */
  4310.   
  4311.   static  long        randtbl[ DEG_3 + 1 ]    = { TYPE_3,
  4312. !                 0x9a319039, 0x32d9c024, 0x9b663182, 0x5da1f342,
  4313. !                 0xde3b81e0, 0xdf0a6fb5, 0xf103bc02, 0x48f340fb,
  4314. !                 0x7449e56b, 0xbeb1dbb0, 0xab5c5918, 0x946554fd,
  4315. !                 0x8c2e680f, 0xeb3d799f, 0xb11ee0b7, 0x2d436b86,
  4316. !                 0xda672e2a, 0x1588ca88, 0xe369735d, 0x904f35f7,
  4317. !                 0xd7158fd6, 0x6fa6f051, 0x616e6b96, 0xac94efdc,
  4318. !                 0x36413f93, 0xc622c298, 0xf5a42ab8, 0x8a88d77b,
  4319. !                     0xf5ad9d0e, 0x8999220b, 0x27fb47b9 };
  4320.   
  4321.   /*
  4322.    * fptr and rptr are two pointers into the state info, a front and a rear
  4323. --- 122,135 ----
  4324.    */
  4325.   
  4326.   static  long        randtbl[ DEG_3 + 1 ]    = { TYPE_3,
  4327. !                 0x9a319039L, 0x32d9c024L, 0x9b663182L, 0x5da1f342L,
  4328. !                 0xde3b81e0L, 0xdf0a6fb5L, 0xf103bc02L, 0x48f340fbL,
  4329. !                 0x7449e56bL, 0xbeb1dbb0L, 0xab5c5918L, 0x946554fdL,
  4330. !                 0x8c2e680fL, 0xeb3d799fL, 0xb11ee0b7L, 0x2d436b86L,
  4331. !                 0xda672e2aL, 0x1588ca88L, 0xe369735dL, 0x904f35f7L,
  4332. !                 0xd7158fd6L, 0x6fa6f051L, 0x616e6b96L, 0xac94efdcL,
  4333. !                 0x36413f93L, 0xc622c298L, 0xf5a42ab8L, 0x8a88d77bL,
  4334. !                      0xf5ad9d0eL, 0x8999220bL, 0x27fb47b9L };
  4335.   
  4336.   /*
  4337.    * fptr and rptr are two pointers into the state info, a front and a rear
  4338. ***************
  4339. *** 187,193 ****
  4340.   
  4341.       unsigned        x;
  4342.   {
  4343. !         register  int        i, j;
  4344.       long random();
  4345.   
  4346.       if(  rand_type  ==  TYPE_0  )  {
  4347. --- 188,194 ----
  4348.   
  4349.       unsigned        x;
  4350.   {
  4351. !         register  int        i /* , j */ ;
  4352.       long random();
  4353.   
  4354.       if(  rand_type  ==  TYPE_0  )  {
  4355. ***************
  4356. *** 194,203 ****
  4357.           state[ 0 ] = x;
  4358.       }
  4359.       else  {
  4360. !         j = 1;
  4361.           state[ 0 ] = x;
  4362.           for( i = 1; i < rand_deg; i++ )  {
  4363. !         state[i] = 1103515245*state[i - 1] + 12345;
  4364.           }
  4365.           fptr = &state[ rand_sep ];
  4366.           rptr = &state[ 0 ];
  4367. --- 195,204 ----
  4368.           state[ 0 ] = x;
  4369.       }
  4370.       else  {
  4371. !         /* j = 1; */
  4372.           state[ 0 ] = x;
  4373.           for( i = 1; i < rand_deg; i++ )  {
  4374. !         state[i] = 1103515245L*state[i - 1] + 12345;
  4375.           }
  4376.           fptr = &state[ rand_sep ];
  4377.           rptr = &state[ 0 ];
  4378. ***************
  4379. *** 297,304 ****
  4380.       char        *arg_state;
  4381.   {
  4382.       register  long        *new_state    = (long *)arg_state;
  4383. !     register  int        type        = new_state[0]%MAX_TYPES;
  4384. !     register  int        rear        = new_state[0]/MAX_TYPES;
  4385.       char            *ostate        = (char *)( &state[ -1 ] );
  4386.   
  4387.       if(  rand_type  ==  TYPE_0  )  state[ -1 ] = rand_type;
  4388. --- 298,305 ----
  4389.       char        *arg_state;
  4390.   {
  4391.       register  long        *new_state    = (long *)arg_state;
  4392. !     register  int        type        = (int) (new_state[0]%MAX_TYPES);
  4393. !     register  int        rear        = (int) (new_state[0]/MAX_TYPES);
  4394.       char            *ostate        = (char *)( &state[ -1 ] );
  4395.   
  4396.       if(  rand_type  ==  TYPE_0  )  state[ -1 ] = rand_type;
  4397. ***************
  4398. *** 349,359 ****
  4399.       long        i;
  4400.   
  4401.       if(  rand_type  ==  TYPE_0  )  {
  4402. !         i = state[0] = ( state[0]*1103515245 + 12345 )&0x7fffffff;
  4403.       }
  4404.       else  {
  4405.           *fptr += *rptr;
  4406. !         i = (*fptr >> 1)&0x7fffffff;    /* chucking least random bit */
  4407.           if(  ++fptr  >=  end_ptr  )  {
  4408.           fptr = state;
  4409.           ++rptr;
  4410. --- 350,360 ----
  4411.       long        i;
  4412.   
  4413.       if(  rand_type  ==  TYPE_0  )  {
  4414. !         i = state[0] = ( state[0]*1103515245L + 12345 )&0x7fffffffL;
  4415.       }
  4416.       else  {
  4417.           *fptr += *rptr;
  4418. !         i = (*fptr >> 1)&0x7fffffffL;    /* chucking least random bit */
  4419.           if(  ++fptr  >=  end_ptr  )  {
  4420.           fptr = state;
  4421.           ++rptr;
  4422. *** 1.1    1992/06/01 01:54:10
  4423. --- realloc.c    1992/10/09 20:46:26
  4424. ***************
  4425. *** 13,18 ****
  4426. --- 13,19 ----
  4427.   
  4428.   __EXTERN void *_malloc __PROTO((unsigned long));
  4429.   __EXTERN void _bzero __PROTO((void *, unsigned long));
  4430. + void *_realloc __PROTO((void *, unsigned long));
  4431.   
  4432.   #ifdef __GNUC__
  4433.   asm(".stabs \"_realloc\",5,0,0,__realloc"); /* dept of clean tricks */
  4434. *** 1.3    1991/04/26 03:42:08
  4435. --- regexp.c    1992/10/09 20:46:26
  4436. ***************
  4437. *** 32,37 ****
  4438. --- 32,38 ----
  4439.   #include <string.h>
  4440.   #include <regexp.h>
  4441.   #include <stdio.h>
  4442. + #include <types.h>
  4443.   #ifndef _COMPILER_H
  4444.   #include <compiler.h>
  4445.   #endif
  4446. ***************
  4447. *** 172,180 ****
  4448.   static void regoptail __PROTO((char *p, char *val));
  4449.   static int regtry __PROTO((regexp *prog, char *string));
  4450.   static int regmatch __PROTO((char *prog));
  4451. ! static int regrepeat __PROTO((char *p));
  4452.   static char *regnext __PROTO((char *p));
  4453.   static char *regprop __PROTO((char *op));
  4454.   
  4455.   /*
  4456.    - regcomp - compile a regular expression into internal code
  4457. --- 173,183 ----
  4458.   static void regoptail __PROTO((char *p, char *val));
  4459.   static int regtry __PROTO((regexp *prog, char *string));
  4460.   static int regmatch __PROTO((char *prog));
  4461. ! static size_t regrepeat __PROTO((char *p));
  4462.   static char *regnext __PROTO((char *p));
  4463. + #ifdef DEBUG
  4464.   static char *regprop __PROTO((char *op));
  4465. + #endif
  4466.   
  4467.   /*
  4468.    - regcomp - compile a regular expression into internal code
  4469. ***************
  4470. *** 197,203 ****
  4471.     register regexp *r;
  4472.     register char *scan;
  4473.     register char *longest;
  4474. !   register int len;
  4475.     int flags;
  4476.   
  4477.     if (exp == (char *)NULL) RFAIL("NULL argument");
  4478. --- 200,206 ----
  4479.     register regexp *r;
  4480.     register char *scan;
  4481.     register char *longest;
  4482. !   register size_t len;
  4483.     int flags;
  4484.   
  4485.     if (exp == (char *)NULL) RFAIL("NULL argument");
  4486. ***************
  4487. *** 501,507 ****
  4488.       *flagp |= HASWIDTH | SIMPLE;
  4489.       break;
  4490.         default:{
  4491. !         register int len;
  4492.           register char ender;
  4493.   
  4494.           regparse--;
  4495. --- 504,510 ----
  4496.       *flagp |= HASWIDTH | SIMPLE;
  4497.       break;
  4498.         default:{
  4499. !         register size_t len;
  4500.           register char ender;
  4501.   
  4502.           regparse--;
  4503. ***************
  4504. *** 529,535 ****
  4505.    - regnode - emit a node
  4506.    */
  4507.   static char *regnode(op)
  4508. ! char op;
  4509.   {
  4510.     register char *ret;
  4511.     register char *ptr;
  4512. --- 532,538 ----
  4513.    - regnode - emit a node
  4514.    */
  4515.   static char *regnode(op)
  4516. ! int op;
  4517.   {
  4518.     register char *ret;
  4519.     register char *ptr;
  4520. ***************
  4521. *** 552,558 ****
  4522.    - regc - emit (if appropriate) a byte of code
  4523.    */
  4524.   static void regc(b)
  4525. ! char b;
  4526.   {
  4527.     if (regcode != ®dummy)
  4528.       *regcode++ = b;
  4529. --- 555,561 ----
  4530.    - regc - emit (if appropriate) a byte of code
  4531.    */
  4532.   static void regc(b)
  4533. ! int b;
  4534.   {
  4535.     if (regcode != ®dummy)
  4536.       *regcode++ = b;
  4537. ***************
  4538. *** 566,572 ****
  4539.    * Means relocating the operand.
  4540.    */
  4541.   static void reginsert(op, opnd)
  4542. ! char op;
  4543.   char *opnd;
  4544.   {
  4545.     register char *src;
  4546. --- 569,575 ----
  4547.    * Means relocating the operand.
  4548.    */
  4549.   static void reginsert(op, opnd)
  4550. ! int op;
  4551.   char *opnd;
  4552.   {
  4553.     register char *src;
  4554. ***************
  4555. *** 597,603 ****
  4556.   {
  4557.     register char *scan;
  4558.     register char *temp;
  4559. !   register int offset;
  4560.   
  4561.     if (p == ®dummy) return;
  4562.   
  4563. --- 600,606 ----
  4564.   {
  4565.     register char *scan;
  4566.     register char *temp;
  4567. !   register long offset;
  4568.   
  4569.     if (p == ®dummy) return;
  4570.   
  4571. ***************
  4572. *** 770,776 ****
  4573.           reginput++;
  4574.           break;
  4575.           case EXACTLY:{
  4576. !             register int len;
  4577.               register char *opnd;
  4578.   
  4579.               opnd = OPERAND(scan);
  4580. --- 773,779 ----
  4581.           reginput++;
  4582.           break;
  4583.           case EXACTLY:{
  4584. !             register size_t len;
  4585.               register char *opnd;
  4586.   
  4587.               opnd = OPERAND(scan);
  4588. ***************
  4589. *** 868,876 ****
  4590.           case STAR:
  4591.           case PLUS:{
  4592.               register char nextch;
  4593. !             register int no;
  4594.               register char *save;
  4595. !             register int min;
  4596.   
  4597.               /* Lookahead to avoid useless match attempts
  4598.                * when we know what character comes next. */
  4599. --- 871,879 ----
  4600.           case STAR:
  4601.           case PLUS:{
  4602.               register char nextch;
  4603. !             register size_t no;
  4604.               register char *save;
  4605. !             register size_t min;
  4606.   
  4607.               /* Lookahead to avoid useless match attempts
  4608.                * when we know what character comes next. */
  4609. ***************
  4610. *** 911,920 ****
  4611.   /*
  4612.    - regrepeat - repeatedly match something simple, report how many
  4613.    */
  4614. ! static int regrepeat(p)
  4615.   char *p;
  4616.   {
  4617. !   register int count = 0;
  4618.     register char *scan;
  4619.     register char *opnd;
  4620.   
  4621. --- 914,923 ----
  4622.   /*
  4623.    - regrepeat - repeatedly match something simple, report how many
  4624.    */
  4625. ! static size_t regrepeat(p)
  4626.   char *p;
  4627.   {
  4628. !   register size_t count = 0;
  4629.     register char *scan;
  4630.     register char *opnd;
  4631.   
  4632. *** 1.12    1992/06/01 01:54:10
  4633. --- sbrk.c    1992/10/09 20:46:27
  4634. ***************
  4635. *** 29,34 ****
  4636. --- 29,36 ----
  4637.   extern long _stksize;
  4638.   extern short _split_mem;
  4639.   
  4640. + static void *HeapAlloc __PROTO((unsigned long sz));
  4641.   static void * HeapAlloc( sz )
  4642.   unsigned long sz ;
  4643.   {
  4644. ***************
  4645. *** 49,57 ****
  4646.       return( sp );
  4647.   }
  4648.   
  4649. ! #ifndef __GNUC__
  4650.   asm(".stabs \"_sbrk\",5,0,0,__sbrk"); /* dept of clean tricks */
  4651. - asm(".stabs \"_lsbrk\",5,0,0,__sbrk"); /* dept of clean tricks */
  4652.   #endif
  4653.   
  4654.   /* provided for compilers with sizeof(int) == 2 */
  4655. --- 51,58 ----
  4656.       return( sp );
  4657.   }
  4658.   
  4659. ! #ifdef __GNUC__
  4660.   asm(".stabs \"_sbrk\",5,0,0,__sbrk"); /* dept of clean tricks */
  4661.   #endif
  4662.   
  4663.   /* provided for compilers with sizeof(int) == 2 */
  4664. ***************
  4665. *** 84,97 ****
  4666.   
  4667.   #ifndef __GNUC__
  4668.   void *sbrk(x)
  4669. ! int x;
  4670.   {
  4671.       return _sbrk((long)x);
  4672. - }
  4673. - void *lsbrk(x)
  4674. - long x;
  4675. - {
  4676. -     return _sbrk(x);
  4677.   }
  4678.   #endif
  4679. --- 85,92 ----
  4680.   
  4681.   #ifndef __GNUC__
  4682.   void *sbrk(x)
  4683. ! size_t x;
  4684.   {
  4685.       return _sbrk((long)x);
  4686.   }
  4687.   #endif
  4688. *** 1.9    1992/06/01 01:54:10
  4689. --- setbuf.c    1992/10/09 20:46:27
  4690. ***************
  4691. *** 14,20 ****
  4692.           free(fp->_base);
  4693.       fp->_flag &= ~(_IOFBF | _IOLBF | _IONBF | _IOMYBUF);
  4694.       fp->_cnt = 0;
  4695. !     if(fp->_base = (unsigned char *)buf)    /* assignment intentional */
  4696.           {
  4697.           fp->_flag |= _IOFBF;
  4698.               /* this is intentionally not __DEFAULT_BUFSIZ__ ++jrb */
  4699. --- 14,20 ----
  4700.           free(fp->_base);
  4701.       fp->_flag &= ~(_IOFBF | _IOLBF | _IONBF | _IOMYBUF);
  4702.       fp->_cnt = 0;
  4703. !     if((fp->_base = (unsigned char *)buf) != NULL)
  4704.           {
  4705.           fp->_flag |= _IOFBF;
  4706.               /* this is intentionally not __DEFAULT_BUFSIZ__ ++jrb */
  4707. *** 1.4    1991/04/12 18:19:53
  4708. --- setjmp.cpp    1992/10/09 20:46:27
  4709. ***************
  4710. *** 14,24 ****
  4711.       .globl _longjmp
  4712.       .globl ___mint
  4713.   
  4714.   _longjmp:
  4715.   #ifdef __MSHORT__
  4716. !     tstw    ___mint            | see if MiNT is active
  4717.   #else
  4718. !     tstl    ___mint
  4719.   #endif
  4720.       beq    NOMINT            | no -- do not call sigreturn
  4721.       movew    #0x11a, sp@-        | Psigreturn() system call
  4722. --- 14,30 ----
  4723.       .globl _longjmp
  4724.       .globl ___mint
  4725.   
  4726. + #ifdef __MBASE__
  4727. + #define Mint    __MBASE__@(___mint)
  4728. + #else
  4729. + #define Mint    ___mint
  4730. + #endif
  4731.   _longjmp:
  4732.   #ifdef __MSHORT__
  4733. !     tstw    Mint            | see if MiNT is active
  4734.   #else
  4735. !     tstl    Mint
  4736.   #endif
  4737.       beq    NOMINT            | no -- do not call sigreturn
  4738.       movew    #0x11a, sp@-        | Psigreturn() system call
  4739. *** 1.5    1990/02/27 21:25:04
  4740. --- setvbuf.c    1992/10/09 20:46:27
  4741. ***************
  4742. *** 32,38 ****
  4743.       }
  4744.       else
  4745.       {
  4746. !         if(fp->_base = (unsigned char *) malloc(size))
  4747.           {
  4748.           fp->_flag |= _IOMYBUF;
  4749.           }
  4750. --- 32,38 ----
  4751.       }
  4752.       else
  4753.       {
  4754. !         if ((fp->_base = (unsigned char *) malloc(size)) != NULL)
  4755.           {
  4756.           fp->_flag |= _IOMYBUF;
  4757.           }
  4758. *** 1.8    1992/06/01 01:54:10
  4759. --- sprintf.c    1992/10/09 20:46:28
  4760. ***************
  4761. *** 3,9 ****
  4762.   #include <limits.h>
  4763.   #include "lib.h"
  4764.   
  4765. ! #ifdef __SOZOBON__    /* Electronic brain... */
  4766.   static FILE dummyf =
  4767.       {0L, (unsigned char *)0, (unsigned char *)0,
  4768.            _IOWRT|_IOBIN|_IOSTRING|_IOFBF, 0, LONG_MAX, '\0'};
  4769. --- 3,9 ----
  4770.   #include <limits.h>
  4771.   #include "lib.h"
  4772.   
  4773. ! #ifndef __GNUC__
  4774.   static FILE dummyf =
  4775.       {0L, (unsigned char *)0, (unsigned char *)0,
  4776.            _IOWRT|_IOBIN|_IOSTRING|_IOFBF, 0, LONG_MAX, '\0'};
  4777. ***************
  4778. *** 21,27 ****
  4779.       {
  4780.       register int n;
  4781.       va_list argp;
  4782. ! #ifndef __SOZOBON__
  4783.       FILE sf = 
  4784.       {0L, (unsigned char *)buf, (unsigned char *)buf,
  4785.            _IOWRT|_IOBIN|_IOSTRING|_IOFBF, 0, LONG_MAX,'\0'};
  4786. --- 21,27 ----
  4787.       {
  4788.       register int n;
  4789.       va_list argp;
  4790. ! #ifdef __GNUC__
  4791.       FILE sf = 
  4792.       {0L, (unsigned char *)buf, (unsigned char *)buf,
  4793.            _IOWRT|_IOBIN|_IOSTRING|_IOFBF, 0, LONG_MAX,'\0'};
  4794. ***************
  4795. *** 44,50 ****
  4796.       va_list args;
  4797.       {
  4798.       register int n;
  4799. ! #ifndef __SOZOBON__    /* Same again, please, landlord. */
  4800.       FILE sf = 
  4801.       {0L, (unsigned char *)buf, (unsigned char *)buf,
  4802.            _IOWRT|_IOBIN|_IOSTRING|_IOFBF, 0, LONG_MAX,'\0'};
  4803. --- 44,50 ----
  4804.       va_list args;
  4805.       {
  4806.       register int n;
  4807. ! #ifdef __GNUC__    
  4808.       FILE sf = 
  4809.       {0L, (unsigned char *)buf, (unsigned char *)buf,
  4810.            _IOWRT|_IOBIN|_IOSTRING|_IOFBF, 0, LONG_MAX,'\0'};
  4811. *** 1.4    1990/02/27 21:25:12
  4812. --- strcat.c    1992/10/09 20:46:28
  4813. ***************
  4814. *** 15,21 ****
  4815.       register char *dscan;
  4816.       register const char *sscan;
  4817.   
  4818. !     if ((sscan = src))
  4819.       {
  4820.           for (dscan = dst; *dscan != '\0'; dscan++)
  4821.           continue;
  4822. --- 15,21 ----
  4823.       register char *dscan;
  4824.       register const char *sscan;
  4825.   
  4826. !     if ((sscan = src) != NULL)
  4827.       {
  4828.           for (dscan = dst; *dscan != '\0'; dscan++)
  4829.           continue;
  4830. *** 1.8    1992/06/01 01:54:10
  4831. --- strchr.c    1992/10/09 20:46:28
  4832. ***************
  4833. *** 11,17 ****
  4834.   char *
  4835.   index(s, charwanted)
  4836.         const char *s;
  4837. !       char charwanted;
  4838.   {
  4839.         return strchr(s, charwanted);
  4840.   }
  4841. --- 11,17 ----
  4842.   char *
  4843.   index(s, charwanted)
  4844.         const char *s;
  4845. !       int charwanted;
  4846.   {
  4847.         return strchr(s, charwanted);
  4848.   }
  4849. ***************
  4850. *** 20,26 ****
  4851.   char *                /* found char, or NULL if none */
  4852.   strchr(s, charwanted)
  4853.   const char *s;
  4854. ! register char charwanted;
  4855.   {
  4856.       register char c;
  4857.   
  4858. --- 20,26 ----
  4859.   char *                /* found char, or NULL if none */
  4860.   strchr(s, charwanted)
  4861.   const char *s;
  4862. ! register int charwanted;
  4863.   {
  4864.       register char c;
  4865.   
  4866. *** 1.6    1992/06/01 01:54:10
  4867. --- strftime.c    1992/10/09 20:46:30
  4868. ***************
  4869. *** 37,56 ****
  4870.           const char *fmt;
  4871.           const struct tm *ts;
  4872.   {
  4873. !         int    num = 0;
  4874. !         int     len = 0, n;
  4875.           char    q;
  4876.           char    buf[BIG_LEN], *putstr, *s;
  4877.   
  4878.           for(;;) {
  4879.                   if (num >= maxsize) return 0;
  4880. !                 if (!(q = *fmt++))  break;
  4881.                   if (q != '%') {
  4882.                           *str++ = q;
  4883.                           num++;
  4884.                           continue;
  4885.                   }
  4886. !                 if (!(q = *fmt++)) break;       /* get format command */
  4887.   
  4888.   /* assume that sprintf will be used, with a variable length */
  4889.   /* this is the most common case, so it saves us some coding to do it here */
  4890. --- 37,57 ----
  4891.           const char *fmt;
  4892.           const struct tm *ts;
  4893.   {
  4894. !         long    num = 0;
  4895. !         long    len = 0;
  4896. !     int n;
  4897.           char    q;
  4898.           char    buf[BIG_LEN], *putstr, *s;
  4899.   
  4900.           for(;;) {
  4901.                   if (num >= maxsize) return 0;
  4902. !                 if ((q = *fmt++) == 0)  break;
  4903.                   if (q != '%') {
  4904.                           *str++ = q;
  4905.                           num++;
  4906.                           continue;
  4907.                   }
  4908. !                 if ((q = *fmt++) == 0) break;       /* get format command */
  4909.   
  4910.   /* assume that sprintf will be used, with a variable length */
  4911.   /* this is the most common case, so it saves us some coding to do it here */
  4912. *** 1.1    1992/08/14 14:48:29
  4913. --- stricmp.c    1992/10/09 20:46:30
  4914. ***************
  4915. *** 11,17 ****
  4916. --- 11,19 ----
  4917.    *           but doesn't change anything
  4918.    */
  4919.   
  4920. + #ifdef __GNUC__
  4921.   asm(".stabs \"_strcmpi\",5,0,0,_stricmp"); /* dept of clean tricks */
  4922. + #endif
  4923.   
  4924.   int                             /* <0 for <, 0 for ==, >0 for > */
  4925.   stricmp(scan1, scan2)
  4926. ***************
  4927. *** 43,45 ****
  4928. --- 45,57 ----
  4929.           else
  4930.                   return(c1 - c2);
  4931.   }
  4932. + #ifndef __GNUC__
  4933. + int
  4934. + strcmpi(scan1, scan2)
  4935. + register const char *scan1;
  4936. + register const char *scan2;
  4937. + {
  4938. +     return stricmp(scan1, scan2);
  4939. + }
  4940. + #endif
  4941. *** 1.4    1990/02/27 21:25:23
  4942. --- strncat.c    1992/10/09 20:46:30
  4943. ***************
  4944. *** 14,20 ****
  4945.       register const char *sscan;
  4946.       register long count;
  4947.   
  4948. !     if((sscan = src) && (n > 0))
  4949.       {
  4950.           for (dscan = dst; *dscan != '\0'; dscan++)
  4951.           continue;
  4952. --- 14,20 ----
  4953.       register const char *sscan;
  4954.       register long count;
  4955.   
  4956. !     if(((sscan = src) != NULL) && (n > 0))
  4957.       {
  4958.           for (dscan = dst; *dscan != '\0'; dscan++)
  4959.           continue;
  4960. *** 1.3    1990/02/27 21:25:26
  4961. --- strncpy.c    1992/10/09 20:46:31
  4962. ***************
  4963. *** 17,23 ****
  4964.       register long count;
  4965.   
  4966.       dscan = dst;
  4967. !     if (!(sscan = src))
  4968.           sscan = "";
  4969.       count = n;
  4970.       while (--count >= 0 && (*dscan++ = *sscan++) != '\0')
  4971. --- 17,23 ----
  4972.       register long count;
  4973.   
  4974.       dscan = dst;
  4975. !     if ((sscan = src) == NULL)
  4976.           sscan = "";
  4977.       count = n;
  4978.       while (--count >= 0 && (*dscan++ = *sscan++) != '\0')
  4979. *** 1.1    1992/08/14 14:48:29
  4980. --- strnicmp.c    1992/10/09 20:46:31
  4981. ***************
  4982. *** 11,17 ****
  4983. --- 11,19 ----
  4984.    *           but doesn't change anything
  4985.    */
  4986.   
  4987. + #ifdef __GNUC__
  4988.   asm(".stabs \"_strncmpi\",5,0,0,_strnicmp"); /* dept of clean tricks */
  4989. + #endif
  4990.   
  4991.   int                             /* <0 for <, 0 for ==, >0 for > */
  4992.   strnicmp(scan1, scan2, n)
  4993. ***************
  4994. *** 49,51 ****
  4995. --- 51,64 ----
  4996.           else
  4997.                   return(c1 - c2);
  4998.   }
  4999. + #ifndef __GNUC__
  5000. + int
  5001. + strncmpi(scan1, scan2, n)
  5002. + register const char *scan1;
  5003. + register const char *scan2;
  5004. + size_t n;
  5005. + {
  5006. +     return strnicmp(scan1, scan2, n);
  5007. + }
  5008. + #endif
  5009. *** 1.8    1992/06/01 01:54:10
  5010. --- strrchr.c    1992/10/09 20:46:31
  5011. ***************
  5012. *** 10,16 ****
  5013.   char *
  5014.   rindex(s, charwanted)
  5015.         const char *s;
  5016. !       char charwanted;
  5017.   {
  5018.         return strrchr(s, charwanted);
  5019.   }
  5020. --- 10,16 ----
  5021.   char *
  5022.   rindex(s, charwanted)
  5023.         const char *s;
  5024. !       int charwanted;
  5025.   {
  5026.         return strrchr(s, charwanted);
  5027.   }
  5028. ***************
  5029. *** 19,31 ****
  5030.   char *                /* found char, or NULL if none */
  5031.   strrchr(s, charwanted)
  5032.   const char *s;
  5033. ! register char charwanted;
  5034.   {
  5035.       register char c;
  5036.       register const char *place;
  5037.   
  5038.       place = NULL;
  5039. !     while (c = *s++)
  5040.           if (c == charwanted)
  5041.               place = s - 1;
  5042.       if (charwanted == '\0')
  5043. --- 19,31 ----
  5044.   char *                /* found char, or NULL if none */
  5045.   strrchr(s, charwanted)
  5046.   const char *s;
  5047. ! register int charwanted;
  5048.   {
  5049.       register char c;
  5050.       register const char *place;
  5051.   
  5052.       place = NULL;
  5053. !     while ((c = *s++) != 0)
  5054.           if (c == charwanted)
  5055.               place = s - 1;
  5056.       if (charwanted == '\0')
  5057. *** 1.11    1991/07/23 22:06:28
  5058. --- strtol.c    1992/10/09 20:46:32
  5059. ***************
  5060. *** 97,103 ****
  5061.         else 
  5062.             result -= digit;
  5063.         }
  5064. !   } while (c = *nptr++);
  5065.   
  5066.   
  5067.     if (!negative) {
  5068. --- 97,103 ----
  5069.         else 
  5070.             result -= digit;
  5071.         }
  5072. !   } while ((c = *nptr++) != 0);
  5073.   
  5074.   
  5075.     if (!negative) {
  5076. *** 1.6    1991/07/23 22:06:28
  5077. --- strtoul.c    1992/10/09 20:46:32
  5078. ***************
  5079. *** 97,103 ****
  5080.         else 
  5081.             result += digit;
  5082.         }
  5083. !   } while (c = *nptr++);
  5084.   
  5085.     if (negative)                /* ANSI says we should do this! */
  5086.       result = 0L - result;
  5087. --- 97,103 ----
  5088.         else 
  5089.             result += digit;
  5090.         }
  5091. !   } while ((c = *nptr++) != 0);
  5092.   
  5093.     if (negative)                /* ANSI says we should do this! */
  5094.       result = 0L - result;
  5095. *** 1.18    1992/06/24 15:32:04
  5096. --- system.c    1992/10/09 20:46:32
  5097. ***************
  5098. *** 24,30 ****
  5099.   #include "lib.h"
  5100.   
  5101.   #define isquote(c) ((c) == '\"' || (c) == '\'' || (c) == '`')
  5102. ! #define ARG_ERR       ( (Argentry *) -1 )
  5103.   
  5104.   /* struct. used to build a list of arguments for the command */
  5105.   
  5106. --- 24,30 ----
  5107.   #include "lib.h"
  5108.   
  5109.   #define isquote(c) ((c) == '\"' || (c) == '\'' || (c) == '`')
  5110. ! #define ARG_ERR       ( (Argentry *) -1L )
  5111.   
  5112.   /* struct. used to build a list of arguments for the command */
  5113.   
  5114. ***************
  5115. *** 33,38 ****
  5116. --- 33,41 ----
  5117.       char    string[1];
  5118.   } Argentry;
  5119.   
  5120. + static Argentry *_argalloc __PROTO((const char *s));
  5121. + static void _argfree __PROTO((Argentry *p));
  5122. + static Argentry *_parseargs __PROTO((const char *s));
  5123.   
  5124.   /* allocate an Argentry that will hold the string "s" */
  5125.   
  5126. ***************
  5127. *** 102,108 ****
  5128.           }
  5129.           *t = 0;
  5130.           cur->next = _argalloc(buf);
  5131. !         if (!(cur = cur->next))      /* couldn't alloc() */
  5132.               return ARG_ERR;
  5133.       }
  5134.       cur->next = (Argentry *) 0;
  5135. --- 105,111 ----
  5136.           }
  5137.           *t = 0;
  5138.           cur->next = _argalloc(buf);
  5139. !         if ((cur = cur->next) == NULL)      /* couldn't alloc() */
  5140.               return ARG_ERR;
  5141.       }
  5142.       cur->next = (Argentry *) 0;
  5143. ***************
  5144. *** 132,138 ****
  5145.           return 1;
  5146.       al = _parseargs(s);        /* get a list of args */
  5147.       if (al == ARG_ERR) {        /* not enough memory */
  5148. !         return errno = ENOMEM;
  5149.           return -1;
  5150.       }
  5151.   
  5152. --- 135,141 ----
  5153.           return 1;
  5154.       al = _parseargs(s);        /* get a list of args */
  5155.       if (al == ARG_ERR) {        /* not enough memory */
  5156. !         errno = ENOMEM;
  5157.           return -1;
  5158.       }
  5159.   
  5160. ***************
  5161. *** 142,148 ****
  5162.       argc = i = 0;
  5163.       for (cur = al; cur; cur = cur->next)
  5164.           argc++;
  5165. !     if (!(argv = (char **) malloc((size_t)(argc * sizeof(char *))))) {
  5166.           errno = ENOMEM; return -1;
  5167.       }
  5168.       for (cur = al; cur; cur = cur->next) {
  5169. --- 145,153 ----
  5170.       argc = i = 0;
  5171.       for (cur = al; cur; cur = cur->next)
  5172.           argc++;
  5173. !     if ((argv = (char **) malloc((size_t)(argc * sizeof(char *))))
  5174. !         == NULL)
  5175. !     {
  5176.           errno = ENOMEM; return -1;
  5177.       }
  5178.       for (cur = al; cur; cur = cur->next) {
  5179. ***************
  5180. *** 168,197 ****
  5181.   
  5182.       if (*infile) {
  5183.           (void)_unx2dos(infile,path);
  5184. !         infd = Fopen(path, 0);
  5185.           if (infd < __SMALLEST_VALID_HANDLE) {
  5186.               perror(infile);
  5187.               return(2);
  5188.           }
  5189. !         oldin = Fdup(0);
  5190.           (void)Fforce(0, infd);
  5191.       }
  5192.       if (*outfile) {
  5193.           (void)_unx2dos(outfile,path);
  5194.           if (append) {
  5195. !             outfd = Fopen(path, 2);
  5196.               if (outfd < __SMALLEST_VALID_HANDLE)
  5197. !                 outfd = Fcreate(path, 0);
  5198.               else
  5199.                   (void)Fseek(0L, outfd, 2);
  5200.           }
  5201.           else
  5202. !             outfd = Fcreate(path, 0);
  5203.           if (outfd < __SMALLEST_VALID_HANDLE) {
  5204.               perror(outfile);
  5205.               return(2);
  5206.           }
  5207. !         oldout = Fdup(1);
  5208.           (void)Fforce(1, outfd);
  5209.       }
  5210.   
  5211. --- 173,202 ----
  5212.   
  5213.       if (*infile) {
  5214.           (void)_unx2dos(infile,path);
  5215. !         infd = (int)Fopen(path, 0);
  5216.           if (infd < __SMALLEST_VALID_HANDLE) {
  5217.               perror(infile);
  5218.               return(2);
  5219.           }
  5220. !         oldin = (int)Fdup(0);
  5221.           (void)Fforce(0, infd);
  5222.       }
  5223.       if (*outfile) {
  5224.           (void)_unx2dos(outfile,path);
  5225.           if (append) {
  5226. !             outfd = (int)Fopen(path, 2);
  5227.               if (outfd < __SMALLEST_VALID_HANDLE)
  5228. !                 outfd = (int)Fcreate(path, 0);
  5229.               else
  5230.                   (void)Fseek(0L, outfd, 2);
  5231.           }
  5232.           else
  5233. !             outfd = (int)Fcreate(path, 0);
  5234.           if (outfd < __SMALLEST_VALID_HANDLE) {
  5235.               perror(outfile);
  5236.               return(2);
  5237.           }
  5238. !         oldout = (int)Fdup(1);
  5239.           (void)Fforce(1, outfd);
  5240.       }
  5241.   
  5242. *** 1.2    1992/03/06 19:19:47
  5243. --- sysvar.c    1992/10/09 20:46:32
  5244. ***************
  5245. *** 13,19 ****
  5246.          statements and we get bombs
  5247.        */
  5248.       ret = *((volatile long *)var);
  5249. !     (void)Super(save_ssp);
  5250.       return ret;
  5251.   }
  5252.   
  5253. --- 13,19 ----
  5254.          statements and we get bombs
  5255.        */
  5256.       ret = *((volatile long *)var);
  5257. !     (void)Super((void *) save_ssp);
  5258.       return ret;
  5259.   }
  5260.   
  5261. ***************
  5262. *** 26,30 ****
  5263.       
  5264.       save_ssp = Super(0L);
  5265.       *((volatile long *)var) = val;
  5266. !     (void)Super(save_ssp);
  5267.   }
  5268. --- 26,30 ----
  5269.       
  5270.       save_ssp = Super(0L);
  5271.       *((volatile long *)var) = val;
  5272. !     (void)Super((void *) save_ssp);
  5273.   }
  5274. *** 1.4    1992/03/22 21:57:30
  5275. --- textio.c    1992/10/09 20:46:33
  5276. ***************
  5277. *** 33,39 ****
  5278.                   *to++ = *from++;
  5279.           } while (--r);
  5280.       } while (buf == to);    /* only '\r's? - try to read next nbytes */
  5281. !     return (to - buf);
  5282.   }
  5283.   
  5284.   int
  5285. --- 33,39 ----
  5286.                   *to++ = *from++;
  5287.           } while (--r);
  5288.       } while (buf == to);    /* only '\r's? - try to read next nbytes */
  5289. !     return (int)(to - buf);
  5290.   }
  5291.   
  5292.   int
  5293. *** 1.5    1992/06/01 01:54:10
  5294. --- time.c    1992/10/09 20:46:33
  5295. ***************
  5296. *** 3,8 ****
  5297. --- 3,9 ----
  5298.   
  5299.   #include <time.h>
  5300.   #include <osbind.h>
  5301. + #include "lib.h"
  5302.   
  5303.   static struct tm this_tm;
  5304.   int _dst;
  5305. *** 1.1    1991/12/26 15:53:59
  5306. --- timeoday.c    1992/10/09 20:46:33
  5307. ***************
  5308. *** 4,10 ****
  5309. --- 4,14 ----
  5310.   #include <types.h>
  5311.   #include <time.h>
  5312.   #include <unistd.h>
  5313. + #ifdef __TURBOC__
  5314. + #include <sys\timeb.h>
  5315. + #else
  5316.   #include <sys/timeb.h>
  5317. + #endif
  5318.   
  5319.   extern int _dst;    /* in time.c */
  5320.   extern long _timezone;    /* in localtim.c */
  5321. *** 1.3    1992/06/01 01:54:10
  5322. --- tmpfile.c    1992/10/09 20:46:33
  5323. ***************
  5324. *** 8,13 ****
  5325. --- 8,15 ----
  5326.   
  5327.   extern int __mint;
  5328.   
  5329. + static void delete_tmpfiles __PROTO((void));
  5330.   typedef struct {
  5331.       char    *name;
  5332.       FILE    *fp;
  5333. ***************
  5334. *** 33,39 ****
  5335.       char *junknam;
  5336.       FILE *junkfil;
  5337.   
  5338. !     if ( !(junknam = tmpnam(NULL)) || !(junkfil = fopen(junknam, "w+b")) )
  5339.       {
  5340.           if(junknam)
  5341.               free(junknam);
  5342. --- 35,42 ----
  5343.       char *junknam;
  5344.       FILE *junkfil;
  5345.   
  5346. !     if ( ((junknam = tmpnam(NULL)) == NULL) || 
  5347. !         ((junkfil = fopen(junknam, "w+b")) == NULL ))
  5348.       {
  5349.           if(junknam)
  5350.               free(junknam);
  5351. *** 1.8    1992/06/01 01:54:10
  5352. --- tmpnam.c    1992/10/09 20:46:33
  5353. ***************
  5354. *** 19,26 ****
  5355.       size_t tlen;
  5356.       extern char *mktemp __PROTO((char *));
  5357.   
  5358. !     if (!(tmpdir = getenv("TEMP")) && !(tmpdir = getenv("TMPDIR")) &&
  5359. !         !(tmpdir = getenv("TMP")) && !(tmpdir = getenv("TEMPDIR")))
  5360.           tmpdir = ".";
  5361.   
  5362.       tlen = strlen(tmpdir);
  5363. --- 19,26 ----
  5364.       size_t tlen;
  5365.       extern char *mktemp __PROTO((char *));
  5366.   
  5367. !     if (((tmpdir = getenv("TEMP")) == NULL) && ((tmpdir = getenv("TMPDIR")) == NULL) &&
  5368. !         ((tmpdir = getenv("TMP")) == NULL) && ((tmpdir = getenv("TEMPDIR")) == NULL))
  5369.           tmpdir = ".";
  5370.   
  5371.       tlen = strlen(tmpdir);
  5372. *** 1.10    1992/06/24 15:32:04
  5373. --- utime.c    1992/10/09 20:46:34
  5374. ***************
  5375. *** 10,24 ****
  5376.    * written by Eric R. Smith, and placed in the public domain.
  5377.    *
  5378.    */
  5379.   #include <limits.h>
  5380. - #include <sys/types.h>
  5381.   #include <time.h>
  5382.   #include <errno.h>
  5383.   #include <osbind.h>
  5384.   #include <assert.h>
  5385.   #include "lib.h"
  5386.   
  5387.   /* convert a Unix time into a DOS time. The longword returned contains
  5388.      the time word first, then the date word */
  5389.   
  5390. --- 10,31 ----
  5391.    * written by Eric R. Smith, and placed in the public domain.
  5392.    *
  5393.    */
  5394. !  
  5395. ! #include <compiler.h>
  5396.   #include <limits.h>
  5397.   #include <time.h>
  5398.   #include <errno.h>
  5399.   #include <osbind.h>
  5400.   #include <assert.h>
  5401. + #ifdef __TURBOC__
  5402. + #include <sys\types.h>
  5403. + #else
  5404. + #include <sys/types.h>
  5405. + #endif
  5406.   #include "lib.h"
  5407.   
  5408. + time_t dostime __PROTO((time_t t));
  5409.   /* convert a Unix time into a DOS time. The longword returned contains
  5410.      the time word first, then the date word */
  5411.   
  5412. ***************
  5413. *** 28,34 ****
  5414.           time_t time, date;
  5415.       struct tm *ctm;
  5416.   
  5417. !     if (!(ctm = localtime(&t)))
  5418.           return 0;
  5419.       time = (ctm->tm_hour << 11) | (ctm->tm_min << 5) | (ctm->tm_sec >> 1);
  5420.       date = ((ctm->tm_year - 80) & 0x7f) << 9;
  5421. --- 35,41 ----
  5422.           time_t time, date;
  5423.       struct tm *ctm;
  5424.   
  5425. !     if ((ctm = localtime(&t)) == NULL)
  5426.           return 0;
  5427.       time = (ctm->tm_hour << 11) | (ctm->tm_min << 5) | (ctm->tm_sec >> 1);
  5428.       date = ((ctm->tm_year - 80) & 0x7f) << 9;
  5429. ***************
  5430. *** 53,65 ****
  5431.   
  5432.       (void)_unx2dos(_filename, filename);
  5433.       dtime = dostime(settime);    /* convert unix time to dos */
  5434. !     fh = Fopen(filename, 2);
  5435.       if (fh < 0) {
  5436.           errno = -fh;
  5437.           return -1;
  5438.       }
  5439. !     (void)Fdatime(&dtime, fh, 1);
  5440. !     if (fh = Fclose(fh)) {
  5441.           errno = -fh;
  5442.           return -1;
  5443.       }
  5444. --- 60,72 ----
  5445.   
  5446.       (void)_unx2dos(_filename, filename);
  5447.       dtime = dostime(settime);    /* convert unix time to dos */
  5448. !     fh = (int) Fopen(filename, 2);
  5449.       if (fh < 0) {
  5450.           errno = -fh;
  5451.           return -1;
  5452.       }
  5453. !     (void)Fdatime((_DOSTIME *) &dtime, fh, 1);
  5454. !     if ((fh = Fclose(fh)) != 0) {
  5455.           errno = -fh;
  5456.           return -1;
  5457.       }
  5458. ***************
  5459. *** 71,85 ****
  5460.   {
  5461.       unsigned long dtime;
  5462.       unsigned date, time;
  5463. -     int r;
  5464.   
  5465.       assert(t != 0);
  5466.       dtime = dostime(*t);
  5467. !     date = (dtime & 0xffff);
  5468. !     time = (dtime >> 16) & 0xffff;
  5469.   
  5470. !     if ((r = Tsetdate(date)) || (r = Tsettime(time))) {
  5471. !         errno = -r;
  5472.           return -1;
  5473.       }
  5474.       return 0;
  5475. --- 78,91 ----
  5476.   {
  5477.       unsigned long dtime;
  5478.       unsigned date, time;
  5479.   
  5480.       assert(t != 0);
  5481.       dtime = dostime(*t);
  5482. !     date = (int) (dtime & 0xffff);
  5483. !     time = (int) (dtime >> 16) & 0xffff;
  5484.   
  5485. !     if (Tsetdate(date) || Tsettime(time)) {
  5486. !         errno = EBADARG;
  5487.           return -1;
  5488.       }
  5489.       return 0;
  5490.