home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / devel / ada / adaed_ta.z / adaed_ta / ada.diff next >
Encoding:
Text File  |  1992-06-25  |  80.1 KB  |  3,146 lines

  1. *** Adaed-1.11.0a/Makefile    Fri Feb  7 20:17:51 1992
  2. --- Adaed1.11.0a-l/Makefile    Thu Jun 25 22:35:12 1992
  3. ***************
  4. *** 1,7 ****
  5.   # $Header: /griffin.a/ada/porter/all/RCS/Makefile,v 1.9 1992/02/04 19:19:56 porter Exp $
  6.   
  7.   CC= gcc
  8. ! CFLAGS=-g
  9.   
  10.   #CC= g++
  11.   #CFLAGS=-g
  12. --- 1,7 ----
  13.   # $Header: /griffin.a/ada/porter/all/RCS/Makefile,v 1.9 1992/02/04 19:19:56 porter Exp $
  14.   
  15.   CC= gcc
  16. ! CFLAGS=
  17.   
  18.   #CC= g++
  19.   #CFLAGS=-g
  20. ***************
  21. *** 12,22 ****
  22.   LINKER= $(CC)
  23.   LFLAGS=-lg
  24.   
  25. ! INSTALL = install
  26.   
  27. ! BINDIR = /usr/local
  28.   LIBDIR = /usr/local/lib
  29. ! MANDIR = /usr/local/man
  30.   
  31.   .SUFFIXES:
  32.   .SUFFIXES: .o .c .h .ch .s .vbs
  33. --- 12,22 ----
  34.   LINKER= $(CC)
  35.   LFLAGS=-lg
  36.   
  37. ! INSTALL = cp
  38.   
  39. ! BINDIR = /usr/local/bin
  40.   LIBDIR = /usr/local/lib
  41. ! MANDIR = /usr/man
  42.   
  43.   .SUFFIXES:
  44.   .SUFFIXES: .o .c .h .ch .s .vbs
  45. ***************
  46. *** 70,83 ****
  47.   install : all predef
  48.       -mkdir $(BINDIR)
  49.       -mkdir $(LIBDIR)
  50. !     install adacomp adabind adaexec adalib $(BINDIR)
  51. !     install adaprs adasem adagen $(LIBDIR)
  52. !     install predefdir/0.axq $(LIBDIR)/predef.axq
  53. !     install predefdir/0.trc $(LIBDIR)/predef.trc
  54. !     install predefdir/lib $(LIBDIR)/predef.lib
  55.       -rm $(LIBDIR)/adabind
  56.       ln -s $(BINDIR)/adabind $(LIBDIR)/adabind
  57. !     install adabind.l adacomp.l adaed.l adaexec.l adalib.l $(MANDIR)/manl
  58.   
  59.   # remove all targets
  60.   MADE_HDRS =    vars.h gvars.h ivars.h hdr.h libhdr.h ghdr.h
  61. --- 70,83 ----
  62.   install : all predef
  63.       -mkdir $(BINDIR)
  64.       -mkdir $(LIBDIR)
  65. !     $(INSTALL) adacomp adabind adaexec adalib $(BINDIR)
  66. !     $(INSTALL) adaprs adasem adagen $(LIBDIR)
  67. !     $(INSTALL) predefdir/0.axq $(LIBDIR)/predef.axq
  68. !     $(INSTALL) predefdir/0.trc $(LIBDIR)/predef.trc
  69. !     $(INSTALL) predefdir/lib $(LIBDIR)/predef.lib
  70.       -rm $(LIBDIR)/adabind
  71.       ln -s $(BINDIR)/adabind $(LIBDIR)/adabind
  72. !     $(INSTALL) adabind.l adacomp.l adaed.l adaexec.l adalib.l $(MANDIR)/manl
  73.   
  74.   # remove all targets
  75.   MADE_HDRS =    vars.h gvars.h ivars.h hdr.h libhdr.h ghdr.h
  76. ***************
  77. *** 94,100 ****
  78.   LIB_OBJS = adalib.o misc.o libf.o
  79.   
  80.   adalib: $(LIB_OBJS)
  81. !     $(LINKER) -o adalib -g $(LIB_OBJS) -lm >lib.lm
  82.   
  83.   #---------------------------#
  84.   # adacomp FILES AND ACTIONS #
  85. --- 94,100 ----
  86.   LIB_OBJS = adalib.o misc.o libf.o
  87.   
  88.   adalib: $(LIB_OBJS)
  89. !     $(LINKER) -static -o adalib -g $(LIB_OBJS) -lm >lib.lm
  90.   
  91.   #---------------------------#
  92.   # adacomp FILES AND ACTIONS #
  93. ***************
  94. *** 114,120 ****
  95.               prserr.o prsinit.o prsutil.o pspans.o recover.o reduce.o shift.o
  96.   
  97.   adaprs: $(PRS_OBJS)     
  98. !     $(LINKER) -o adaprs -g $(PRS_OBJS) -lm >prs.lm
  99.   
  100.   #--------------------------#
  101.   # adasem FILES and ACTIONS #
  102. --- 114,120 ----
  103.               prserr.o prsinit.o prsutil.o pspans.o recover.o reduce.o shift.o
  104.   
  105.   adaprs: $(PRS_OBJS)     
  106. !     $(LINKER) -o adaprs $(PRS_OBJS) -lm >prs.lm
  107.   
  108.   #--------------------------#
  109.   # adasem FILES and ACTIONS #
  110. diff -C 3 Adaed-1.11.0a/adacomp.c Adaed1.11.0a-l/adacomp.c
  111. *** Adaed-1.11.0a/adacomp.c    Fri Feb  7 20:18:23 1992
  112. --- Adaed1.11.0a-l/adacomp.c    Fri Jun  5 22:53:55 1992
  113. ***************
  114. *** 56,65 ****
  115.   static int run_prog(char *, char **);
  116.   static void delete_file(char *);
  117.   #ifdef SYSTEM_V
  118.   static  int mkdir(char *, int);
  119.   #endif
  120.   #ifdef vms
  121. ! static void fold_upper(char *s)                                /*;fold_upper*/
  122.   #endif
  123.   
  124.   char   *argname;
  125. --- 56,67 ----
  126.   static int run_prog(char *, char **);
  127.   static void delete_file(char *);
  128.   #ifdef SYSTEM_V
  129. + #ifndef linux
  130.   static  int mkdir(char *, int);
  131.   #endif
  132. + #endif
  133.   #ifdef vms
  134. ! static void fold_upper(char *s)                            /*;fold_upper*/
  135.   #endif
  136.   
  137.   char   *argname;
  138. ***************
  139. *** 864,869 ****
  140. --- 866,872 ----
  141.   }
  142.   
  143.   #ifdef SYSTEM_V
  144. + #ifndef linux
  145.   #include <sys/stat.h>
  146.   /* no mkdir available, mknod doesn't work, so use system */
  147.   char syscommand[100];        /* argument for system() call */
  148. ***************
  149. *** 883,888 ****
  150. --- 886,892 ----
  151.       }
  152.       else return (-1);
  153.   }
  154. + #endif
  155.   #endif
  156.   
  157.   #ifdef vms
  158. diff -C 3 Adaed-1.11.0a/appendf.doc Adaed1.11.0a-l/appendf.doc
  159. *** Adaed-1.11.0a/appendf.doc    Fri Feb  7 20:17:52 1992
  160. --- Adaed1.11.0a-l/appendf.doc    Thu Jun 25 22:39:42 1992
  161. ***************
  162. *** 29,37 ****
  163.                   end record;
  164.   
  165.              type NAME    is (ELXSI_BSD, ELXSI_ENIX, PC_DOS, 
  166. !                       SUN_UNIX, VAX_UNIX, VAX_VMS) ; 
  167.   
  168. !            SYSTEM_NAME  : constant NAME := SUN_UNIX;
  169.   
  170.                   STORAGE_UNIT    : constant  :=  8;
  171.                   MEMORY_SIZE     : constant  :=  2**16 - 1;
  172. --- 29,37 ----
  173.                   end record;
  174.   
  175.              type NAME    is (ELXSI_BSD, ELXSI_ENIX, PC_DOS, 
  176. !                       SUN_UNIX, VAX_UNIX, VAX_VMS, LINUX) ; 
  177.   
  178. !            SYSTEM_NAME  : constant NAME := LINUX;
  179.   
  180.                   STORAGE_UNIT    : constant  :=  8;
  181.                   MEMORY_SIZE     : constant  :=  2**16 - 1;
  182. diff -C 3 Adaed-1.11.0a/config.h Adaed1.11.0a-l/config.h
  183. *** Adaed-1.11.0a/config.h    Fri Feb  7 20:20:04 1992
  184. --- Adaed1.11.0a-l/config.h    Wed Jun  3 23:07:48 1992
  185. ***************
  186. *** 28,33 ****
  187. --- 28,42 ----
  188.    * 4 byte boundaries. (e.g. SPARC).
  189.    */
  190.   
  191. + #ifdef linux
  192. + #define WORDSIZE32
  193. + #ifndef SYSTEM_V
  194. + #define SYSTEM_V
  195. + #endif
  196. + #define ALIGN2
  197. + #define OP_SYS "Linux 0.96"
  198. + #endif
  199.   #ifdef sun
  200.   #define WORDSIZE32
  201.   #ifndef BSD
  202. diff -C 3 Adaed-1.11.0a/farith.c Adaed1.11.0a-l/farith.c
  203. *** Adaed-1.11.0a/farith.c    Fri Feb  7 20:18:54 1992
  204. --- Adaed1.11.0a-l/farith.c    Mon Jun  8 22:24:52 1992
  205. ***************
  206. *** 459,465 ****
  207.       printf("int *v,p;\n{\nint i,*u;\n");
  208.       printf("\tif (p < 0 || p > %d) {\n",NUMBER);
  209.       printf("\t\tv[0] = v[1] = 1;\n");
  210. !     printf("\t\traise(SYSTEM_ERROR,\"power of 5 too large\");\n\t}\n");
  211.       printf("\tu = pow5[p];\n");
  212.       printf("\tfor (i=0;i<=u[0];i++) v[i] = u[i];\n}\n");
  213.   }
  214. --- 459,465 ----
  215.       printf("int *v,p;\n{\nint i,*u;\n");
  216.       printf("\tif (p < 0 || p > %d) {\n",NUMBER);
  217.       printf("\t\tv[0] = v[1] = 1;\n");
  218. !     printf("\t\tRaise(SYSTEM_ERROR,\"power of 5 too large\");\n\t}\n");
  219.       printf("\tu = pow5[p];\n");
  220.       printf("\tfor (i=0;i<=u[0];i++) v[i] = u[i];\n}\n");
  221.   }
  222. ***************
  223. *** 501,507 ****
  224.       int i,*u;
  225.       if (p < 0 || p > 20) {
  226.           v[0] = v[1] = 1;
  227. !         raise(SYSTEM_ERROR,"power of 5 too large");
  228.       }
  229.       u = pow5[p];
  230.       for (i=0;i<=u[0];i++) v[i] = u[i];
  231. --- 501,507 ----
  232.       int i,*u;
  233.       if (p < 0 || p > 20) {
  234.           v[0] = v[1] = 1;
  235. !         Raise(SYSTEM_ERROR,"power of 5 too large");
  236.       }
  237.       u = pow5[p];
  238.       for (i=0;i<=u[0];i++) v[i] = u[i];
  239. diff -C 3 Adaed-1.11.0a/ginter.c Adaed1.11.0a-l/ginter.c
  240. *** Adaed-1.11.0a/ginter.c    Fri Feb  7 20:18:58 1992
  241. --- Adaed1.11.0a-l/ginter.c    Mon Jun  8 22:25:25 1992
  242. ***************
  243. *** 59,65 ****
  244.           }
  245.       }
  246.       sprintf(dummy_array,
  247. !       "\tdefault: raise(%d, \"Interface\");\n}\n}\n", 6);
  248.       code = strjoin(code, dummy_array);
  249.   #ifdef SUPPORT_PRAGMA_INTERFACE
  250.       file = efopenl("interface.c", "", "w", "t");
  251. --- 59,65 ----
  252.           }
  253.       }
  254.       sprintf(dummy_array,
  255. !       "\tdefault: Raise(%d, \"Interface\");\n}\n}\n", 6);
  256.       code = strjoin(code, dummy_array);
  257.   #ifdef SUPPORT_PRAGMA_INTERFACE
  258.       file = efopenl("interface.c", "", "w", "t");
  259. diff -C 3 Adaed-1.11.0a/inta.c Adaed1.11.0a-l/inta.c
  260. *** Adaed-1.11.0a/inta.c    Fri Feb  7 20:19:08 1992
  261. --- Adaed1.11.0a-l/inta.c    Mon Jun  8 22:28:10 1992
  262. ***************
  263. *** 501,507 ****
  264.           case I_DEREF_W:
  265.               POP_ADDR(bse, off);
  266.               if (bse == 255)
  267. !                 raise(CONSTRAINT_ERROR, "Null access value");
  268.               else {
  269.                   value = *ADDR(bse, off);
  270.                   PUSH(value);
  271. --- 501,507 ----
  272.           case I_DEREF_W:
  273.               POP_ADDR(bse, off);
  274.               if (bse == 255)
  275. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  276.               else {
  277.                   value = *ADDR(bse, off);
  278.                   PUSH(value);
  279. ***************
  280. *** 511,517 ****
  281.           case I_DEREF_L:
  282.               POP_ADDR(bse, off);
  283.               if (bse == 255)
  284. !                 raise(CONSTRAINT_ERROR, "Null access value");
  285.               else {
  286.                   lvalue = *ADDRL(bse, off);
  287.                   PUSHL(lvalue);
  288. --- 511,517 ----
  289.           case I_DEREF_L:
  290.               POP_ADDR(bse, off);
  291.               if (bse == 255)
  292. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  293.               else {
  294.                   lvalue = *ADDRL(bse, off);
  295.                   PUSHL(lvalue);
  296. ***************
  297. *** 521,527 ****
  298.           case I_DEREF_A:
  299.               POP_ADDR(bse, off);
  300.               if (bse == 255)
  301. !                 raise(CONSTRAINT_ERROR, "Null access value");
  302.               else {
  303.                   value = *ADDR(bse, off);
  304.                   PUSH(value);
  305. --- 521,527 ----
  306.           case I_DEREF_A:
  307.               POP_ADDR(bse, off);
  308.               if (bse == 255)
  309. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  310.               else {
  311.                   value = *ADDR(bse, off);
  312.                   PUSH(value);
  313. ***************
  314. *** 533,539 ****
  315.           case I_DEREF_D:
  316.               POP_ADDR(bse, off);
  317.               if (bse == 255)
  318. !                 raise(CONSTRAINT_ERROR, "Null access value");
  319.               else {
  320.                   value = *ADDR(bse, off);
  321.                   PUSH(value);
  322. --- 533,539 ----
  323.           case I_DEREF_D:
  324.               POP_ADDR(bse, off);
  325.               if (bse == 255)
  326. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  327.               else {
  328.                   value = *ADDR(bse, off);
  329.                   PUSH(value);
  330. ***************
  331. *** 584,590 ****
  332.               POP_ADDR(bas1, off1);
  333.               POP_ADDR(bas2, off2);
  334.               if (bas1 == 255 || bas2 == 255)
  335. !                 raise(CONSTRAINT_ERROR, "Null access value");
  336.               else
  337.                   *ADDR(bas2, off2) = *ADDR(bas1, off1);
  338.               break;
  339. --- 584,590 ----
  340.               POP_ADDR(bas1, off1);
  341.               POP_ADDR(bas2, off2);
  342.               if (bas1 == 255 || bas2 == 255)
  343. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  344.               else
  345.                   *ADDR(bas2, off2) = *ADDR(bas1, off1);
  346.               break;
  347. ***************
  348. *** 593,599 ****
  349.               POP_ADDR(bas1, off1);
  350.               POP_ADDR(bas2, off2);
  351.               if (bas1 == 255 || bas2 == 255)
  352. !                 raise(CONSTRAINT_ERROR, "Null access value");
  353.               else
  354.                   *ADDRL(bas2, off2) = *ADDRL(bas1, off1);
  355.               break;
  356. --- 593,599 ----
  357.               POP_ADDR(bas1, off1);
  358.               POP_ADDR(bas2, off2);
  359.               if (bas1 == 255 || bas2 == 255)
  360. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  361.               else
  362.                   *ADDRL(bas2, off2) = *ADDRL(bas1, off1);
  363.               break;
  364. ***************
  365. *** 602,608 ****
  366.               POP_ADDR(bas1, off1);
  367.               POP_ADDR(bas2, off2);
  368.               if (bas1 == 255 || bas2 == 255)
  369. !                 raise(CONSTRAINT_ERROR, "Null access value");
  370.               else {
  371.                   *ADDR(bas2, off2) = *ADDR(bas1, off1);
  372.                   *ADDR(bas2, off2 + 1) = *ADDR(bas1, off1 + 1);
  373. --- 602,608 ----
  374.               POP_ADDR(bas1, off1);
  375.               POP_ADDR(bas2, off2);
  376.               if (bas1 == 255 || bas2 == 255)
  377. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  378.               else {
  379.                   *ADDR(bas2, off2) = *ADDR(bas1, off1);
  380.                   *ADDR(bas2, off2 + 1) = *ADDR(bas1, off1 + 1);
  381. ***************
  382. *** 614,620 ****
  383.               GET_GAD(bse, off);
  384.               POP_ADDR(bas1, off1);
  385.               if (bas1 == 255)
  386. !                 raise(CONSTRAINT_ERROR, "Null access value");
  387.               else
  388.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  389.               break;
  390. --- 614,620 ----
  391.               GET_GAD(bse, off);
  392.               POP_ADDR(bas1, off1);
  393.               if (bas1 == 255)
  394. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  395.               else
  396.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  397.               break;
  398. ***************
  399. *** 623,629 ****
  400.               GET_GAD(bse, off);
  401.               POP_ADDR(bas1, off1);
  402.               if (bas1 == 255)
  403. !                 raise(CONSTRAINT_ERROR, "Null access value");
  404.               else
  405.                   *ADDRL(bse, off) = *ADDRL(bas1, off1);
  406.               break;
  407. --- 623,629 ----
  408.               GET_GAD(bse, off);
  409.               POP_ADDR(bas1, off1);
  410.               if (bas1 == 255)
  411. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  412.               else
  413.                   *ADDRL(bse, off) = *ADDRL(bas1, off1);
  414.               break;
  415. ***************
  416. *** 632,638 ****
  417.               GET_GAD(bse, off);
  418.               POP_ADDR(bas1, off1);
  419.               if (bas1 == 255)
  420. !                 raise(CONSTRAINT_ERROR, "Null access value");
  421.               else {
  422.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  423.                   *ADDR(bse, off + 1) = *ADDR(bas1, off1 + 1);
  424. --- 632,638 ----
  425.               GET_GAD(bse, off);
  426.               POP_ADDR(bas1, off1);
  427.               if (bas1 == 255)
  428. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  429.               else {
  430.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  431.                   *ADDR(bse, off + 1) = *ADDR(bas1, off1 + 1);
  432. ***************
  433. *** 644,650 ****
  434.               GET_LAD(bse, off);
  435.               POP_ADDR(bas1, off1);
  436.               if (bas1 == 255)
  437. !                 raise(CONSTRAINT_ERROR, "Null access value");
  438.               else
  439.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  440.               break;
  441. --- 644,650 ----
  442.               GET_LAD(bse, off);
  443.               POP_ADDR(bas1, off1);
  444.               if (bas1 == 255)
  445. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  446.               else
  447.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  448.               break;
  449. ***************
  450. *** 653,659 ****
  451.               GET_LAD(bse, off);
  452.               POP_ADDR(bas1, off1);
  453.               if (bas1 == 255)
  454. !                 raise(CONSTRAINT_ERROR, "Null access value");
  455.               else
  456.                   *ADDRL(bse, off) = *ADDRL(bas1, off1);
  457.               break;
  458. --- 653,659 ----
  459.               GET_LAD(bse, off);
  460.               POP_ADDR(bas1, off1);
  461.               if (bas1 == 255)
  462. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  463.               else
  464.                   *ADDRL(bse, off) = *ADDRL(bas1, off1);
  465.               break;
  466. ***************
  467. *** 662,668 ****
  468.               GET_LAD(bse, off);
  469.               POP_ADDR(bas1, off1);
  470.               if (bas1 == 255)
  471. !                 raise(CONSTRAINT_ERROR, "Null access value");
  472.               else {
  473.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  474.                   *ADDR(bse, off + 1) = *ADDR(bas1, off1 + 1);
  475. --- 662,668 ----
  476.               GET_LAD(bse, off);
  477.               POP_ADDR(bas1, off1);
  478.               if (bas1 == 255)
  479. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  480.               else {
  481.                   *ADDR(bse, off) = *ADDR(bas1, off1);
  482.                   *ADDR(bse, off + 1) = *ADDR(bas1, off1 + 1);
  483. ***************
  484. *** 674,680 ****
  485.               POP(value);
  486.               POP_ADDR(bse, off);
  487.               if (bse == 255)
  488. !                 raise(CONSTRAINT_ERROR, "Null access value");
  489.               else 
  490.                   *ADDR(bse, off) = value;
  491.               break;
  492. --- 674,680 ----
  493.               POP(value);
  494.               POP_ADDR(bse, off);
  495.               if (bse == 255)
  496. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  497.               else 
  498.                   *ADDR(bse, off) = value;
  499.               break;
  500. ***************
  501. *** 683,689 ****
  502.               POPL(lvalue);
  503.               POP_ADDR(bse, off);
  504.               if (bse == 255)
  505. !                 raise(CONSTRAINT_ERROR, "Null access value");
  506.               else 
  507.                   *ADDRL(bse, off) = lvalue;
  508.               break;
  509. --- 683,689 ----
  510.               POPL(lvalue);
  511.               POP_ADDR(bse, off);
  512.               if (bse == 255)
  513. !                 Raise(CONSTRAINT_ERROR, "Null access value");
  514.               else 
  515.                   *ADDRL(bse, off) = lvalue;
  516.               break;
  517. ***************
  518. *** 830,836 ****
  519.               POPF(rval1);
  520.               rvalue = rval1 + rval2;
  521.               if (ABS(rvalue) > ADA_MAX_REAL)
  522. !                 raise(NUMERIC_ERROR, "Floating point addition overflow");
  523.               PUSHF(rvalue);
  524.               break;
  525.   
  526. --- 830,836 ----
  527.               POPF(rval1);
  528.               rvalue = rval1 + rval2;
  529.               if (ABS(rvalue) > ADA_MAX_REAL)
  530. !                 Raise(NUMERIC_ERROR, "Floating point addition overflow");
  531.               PUSHF(rvalue);
  532.               break;
  533.   
  534. ***************
  535. *** 839,845 ****
  536.               POPF(rval1);
  537.               rvalue = rval1 - rval2;
  538.               if (ABS(rvalue) > ADA_MAX_REAL)
  539. !                 raise(NUMERIC_ERROR, "Floating point subtraction overflow");
  540.               PUSHF(rvalue);
  541.               break;
  542.   
  543. --- 839,845 ----
  544.               POPF(rval1);
  545.               rvalue = rval1 - rval2;
  546.               if (ABS(rvalue) > ADA_MAX_REAL)
  547. !                 Raise(NUMERIC_ERROR, "Floating point subtraction overflow");
  548.               PUSHF(rvalue);
  549.               break;
  550.   
  551. ***************
  552. *** 848,854 ****
  553.               POPF(rval1);
  554.               rvalue = rval1 * rval2;
  555.               if (ABS(rvalue) > ADA_MAX_REAL)
  556. !                 raise(NUMERIC_ERROR, "Floating point multiplication overflow");
  557.               PUSHF(rvalue);
  558.               break;
  559.   
  560. --- 848,854 ----
  561.               POPF(rval1);
  562.               rvalue = rval1 * rval2;
  563.               if (ABS(rvalue) > ADA_MAX_REAL)
  564. !                 Raise(NUMERIC_ERROR, "Floating point multiplication overflow");
  565.               PUSHF(rvalue);
  566.               break;
  567.   
  568. ***************
  569. *** 856,866 ****
  570.               POPF(rval2);
  571.               POPF(rval1);
  572.               if (rval2 == 0.0)
  573. !                 raise(NUMERIC_ERROR, "Floating point division by zero");
  574.               else {
  575.                   rvalue = rval1 / rval2;
  576.                   if (ABS(rvalue) > ADA_MAX_REAL)
  577. !                     raise(NUMERIC_ERROR, "Floating point division overflow");
  578.               }
  579.               PUSHF(rvalue);
  580.               break;
  581. --- 856,866 ----
  582.               POPF(rval2);
  583.               POPF(rval1);
  584.               if (rval2 == 0.0)
  585. !                 Raise(NUMERIC_ERROR, "Floating point division by zero");
  586.               else {
  587.                   rvalue = rval1 / rval2;
  588.                   if (ABS(rvalue) > ADA_MAX_REAL)
  589. !                     Raise(NUMERIC_ERROR, "Floating point division overflow");
  590.               }
  591.               PUSHF(rvalue);
  592.               break;
  593. ***************
  594. *** 880,886 ****
  595.                   rvalue = 1.0;                /* x ** 0 = 0.0 */
  596.               else if (rval1 == 0.0) {
  597.                   if (val2 < 0)                /* 0 ** -x = error */
  598. !                     raise(NUMERIC_ERROR, "Negative power of zero");
  599.                   else
  600.                       rvalue = 0.0;/* 0 ** +x = 0.0 */
  601.               }
  602. --- 880,886 ----
  603.                   rvalue = 1.0;                /* x ** 0 = 0.0 */
  604.               else if (rval1 == 0.0) {
  605.                   if (val2 < 0)                /* 0 ** -x = error */
  606. !                     Raise(NUMERIC_ERROR, "Negative power of zero");
  607.                   else
  608.                       rvalue = 0.0;/* 0 ** +x = 0.0 */
  609.               }
  610. ***************
  611. *** 894,900 ****
  612.                                * exponent is positive. If it is negative, the
  613.                                * result will converge towards 0
  614.                                */
  615. !                             raise(NUMERIC_ERROR, "Exponentiation");
  616.                               break;
  617.                           }
  618.                           else { 
  619. --- 894,900 ----
  620.                                * exponent is positive. If it is negative, the
  621.                                * result will converge towards 0
  622.                                */
  623. !                             Raise(NUMERIC_ERROR, "Exponentiation");
  624.                               break;
  625.                           }
  626.                           else { 
  627. ***************
  628. *** 929,935 ****
  629.               POP(val1);
  630.               value = val1 + val2;
  631.               if (value < -128 || value > 127)
  632. !                 raise(NUMERIC_ERROR, "Overflow");
  633.               else
  634.                   PUSH(value);
  635.               break;
  636. --- 929,935 ----
  637.               POP(val1);
  638.               value = val1 + val2;
  639.               if (value < -128 || value > 127)
  640. !                 Raise(NUMERIC_ERROR, "Overflow");
  641.               else
  642.                   PUSH(value);
  643.               break;
  644. ***************
  645. *** 939,945 ****
  646.               POP(val1);
  647.               value = word_add(val1, val2, &overflow);
  648.               if (overflow)
  649. !                 raise(NUMERIC_ERROR, "Overflow");
  650.               else
  651.                   PUSH(value);
  652.               break;
  653. --- 939,945 ----
  654.               POP(val1);
  655.               value = word_add(val1, val2, &overflow);
  656.               if (overflow)
  657. !                 Raise(NUMERIC_ERROR, "Overflow");
  658.               else
  659.                   PUSH(value);
  660.               break;
  661. ***************
  662. *** 949,955 ****
  663.               POPL(lval1);
  664.               lvalue = long_add(lval1, lval2, &overflow);
  665.               if (overflow)
  666. !                 raise(NUMERIC_ERROR, "Overflow");
  667.               else
  668.                   PUSHL(lvalue);
  669.               break;
  670. --- 949,955 ----
  671.               POPL(lval1);
  672.               lvalue = long_add(lval1, lval2, &overflow);
  673.               if (overflow)
  674. !                 Raise(NUMERIC_ERROR, "Overflow");
  675.               else
  676.                   PUSHL(lvalue);
  677.               break;
  678. ***************
  679. *** 959,965 ****
  680.               val2 = GET_WORD;
  681.               value = val1 + val2;
  682.               if (value < -128 || value > 127)
  683. !                 raise(NUMERIC_ERROR, "Overflow");
  684.               else
  685.                   PUSH(value);
  686.               break;
  687. --- 959,965 ----
  688.               val2 = GET_WORD;
  689.               value = val1 + val2;
  690.               if (value < -128 || value > 127)
  691. !                 Raise(NUMERIC_ERROR, "Overflow");
  692.               else
  693.                   PUSH(value);
  694.               break;
  695. ***************
  696. *** 969,975 ****
  697.               val2 = GET_WORD;
  698.               value = word_add(val1, val2, &overflow);
  699.               if (overflow)
  700. !                 raise(NUMERIC_ERROR, "Overflow");
  701.               PUSH(value);
  702.               break;
  703.   
  704. --- 969,975 ----
  705.               val2 = GET_WORD;
  706.               value = word_add(val1, val2, &overflow);
  707.               if (overflow)
  708. !                 Raise(NUMERIC_ERROR, "Overflow");
  709.               PUSH(value);
  710.               break;
  711.   
  712. ***************
  713. *** 983,989 ****
  714.               ip += WORDS_LONG;
  715.               lvalue = long_add(lval1, lval2, &overflow);
  716.               if (overflow)
  717. !                 raise(NUMERIC_ERROR, "Overflow");
  718.               PUSHL(lvalue);
  719.               break;
  720.   
  721. --- 983,989 ----
  722.               ip += WORDS_LONG;
  723.               lvalue = long_add(lval1, lval2, &overflow);
  724.               if (overflow)
  725. !                 Raise(NUMERIC_ERROR, "Overflow");
  726.               PUSHL(lvalue);
  727.               break;
  728.   
  729. ***************
  730. *** 991,999 ****
  731.               POP(val2);
  732.               POP(val1);
  733.               if (val2 == 0)
  734. !                 raise(NUMERIC_ERROR, "Division by zero");
  735.               else if (val1 == -128 && val2 == -1)
  736. !                 raise(NUMERIC_ERROR, "Overflow");
  737.               else {
  738.                   value = val1 / val2;
  739.                   PUSH(value);
  740. --- 991,999 ----
  741.               POP(val2);
  742.               POP(val1);
  743.               if (val2 == 0)
  744. !                 Raise(NUMERIC_ERROR, "Division by zero");
  745.               else if (val1 == -128 && val2 == -1)
  746. !                 Raise(NUMERIC_ERROR, "Overflow");
  747.               else {
  748.                   value = val1 / val2;
  749.                   PUSH(value);
  750. ***************
  751. *** 1004,1012 ****
  752.               POP(val2);
  753.               POP(val1);
  754.               if (val2 == 0)
  755. !                 raise(NUMERIC_ERROR, "Division by zero");
  756.               else if (val1 == MIN_INTEGER && val2 == -1)
  757. !                 raise(NUMERIC_ERROR, "Overflow");
  758.               else {
  759.                   value = val1 / val2;
  760.                   PUSH(value);
  761. --- 1004,1012 ----
  762.               POP(val2);
  763.               POP(val1);
  764.               if (val2 == 0)
  765. !                 Raise(NUMERIC_ERROR, "Division by zero");
  766.               else if (val1 == MIN_INTEGER && val2 == -1)
  767. !                 Raise(NUMERIC_ERROR, "Overflow");
  768.               else {
  769.                   value = val1 / val2;
  770.                   PUSH(value);
  771. ***************
  772. *** 1017,1025 ****
  773.               POPL(lval2);
  774.               POPL(lval1);
  775.               if (lval2 == 0)
  776. !                 raise(NUMERIC_ERROR, "Division by zero");
  777.               else if (lval1 == MIN_LONG && lval2 == -1)
  778. !                 raise(NUMERIC_ERROR, "Overflow");
  779.               else {
  780.                   lvalue = lval1 / lval2;
  781.                   PUSHL(lvalue);
  782. --- 1017,1025 ----
  783.               POPL(lval2);
  784.               POPL(lval1);
  785.               if (lval2 == 0)
  786. !                 Raise(NUMERIC_ERROR, "Division by zero");
  787.               else if (lval1 == MIN_LONG && lval2 == -1)
  788. !                 Raise(NUMERIC_ERROR, "Overflow");
  789.               else {
  790.                   lvalue = lval1 / lval2;
  791.                   PUSHL(lvalue);
  792. ***************
  793. *** 1045,1051 ****
  794.               POP(val2);
  795.               POP(val1);
  796.               if (val2 == 0)
  797. !                 raise(NUMERIC_ERROR, "Division by zero");
  798.               else {
  799.                   value = val1 % val2;
  800.                   PUSH(value);
  801. --- 1045,1051 ----
  802.               POP(val2);
  803.               POP(val1);
  804.               if (val2 == 0)
  805. !                 Raise(NUMERIC_ERROR, "Division by zero");
  806.               else {
  807.                   value = val1 % val2;
  808.                   PUSH(value);
  809. ***************
  810. *** 1056,1062 ****
  811.               POPL(lval2);
  812.               POPL(lval1);
  813.               if (lval2 == 0)
  814. !                 raise(NUMERIC_ERROR, "Division by zero");
  815.               else {
  816.                   lvalue = lval1 % lval2;
  817.                   PUSHL(lvalue);
  818. --- 1056,1062 ----
  819.               POPL(lval2);
  820.               POPL(lval1);
  821.               if (lval2 == 0)
  822. !                 Raise(NUMERIC_ERROR, "Division by zero");
  823.               else {
  824.                   lvalue = lval1 % lval2;
  825.                   PUSHL(lvalue);
  826. ***************
  827. *** 1080,1086 ****
  828.               POP(val2);
  829.               POP(val1);
  830.               if (val2 == 0)
  831. !                 raise(NUMERIC_ERROR, "Division by zero");
  832.               else {
  833.                   /* the idea is to transform val1 in a positive value.
  834.                    * a mod b = (a + k*b) mod b
  835. --- 1080,1086 ----
  836.               POP(val2);
  837.               POP(val1);
  838.               if (val2 == 0)
  839. !                 Raise(NUMERIC_ERROR, "Division by zero");
  840.               else {
  841.                   /* the idea is to transform val1 in a positive value.
  842.                    * a mod b = (a + k*b) mod b
  843. ***************
  844. *** 1105,1111 ****
  845.               POPL(lval2);
  846.               POPL(lval1);
  847.               if (lval2 == 0)
  848. !                 raise(NUMERIC_ERROR, "Division by zero");
  849.               else {
  850.                   /* the idea is to transform lval1 in a positive value.
  851.                    * a mod b = (a + k*b) mod b
  852. --- 1105,1111 ----
  853.               POPL(lval2);
  854.               POPL(lval1);
  855.               if (lval2 == 0)
  856. !                 Raise(NUMERIC_ERROR, "Division by zero");
  857.               else {
  858.                   /* the idea is to transform lval1 in a positive value.
  859.                    * a mod b = (a + k*b) mod b
  860. ***************
  861. *** 1131,1137 ****
  862.               POP(val1);
  863.               value = val1 * val2;
  864.               if (value < -128 || value > 127)
  865. !                 raise(NUMERIC_ERROR, "Overflow");
  866.               else
  867.                   PUSH(value);
  868.               break;
  869. --- 1131,1137 ----
  870.               POP(val1);
  871.               value = val1 * val2;
  872.               if (value < -128 || value > 127)
  873. !                 Raise(NUMERIC_ERROR, "Overflow");
  874.               else
  875.                   PUSH(value);
  876.               break;
  877. ***************
  878. *** 1141,1147 ****
  879.               POP(val1);
  880.               value = word_mul(val1, val2, &overflow);
  881.               if (overflow)
  882. !                 raise(NUMERIC_ERROR, "Overflow");
  883.               PUSH(value);
  884.               break;
  885.   
  886. --- 1141,1147 ----
  887.               POP(val1);
  888.               value = word_mul(val1, val2, &overflow);
  889.               if (overflow)
  890. !                 Raise(NUMERIC_ERROR, "Overflow");
  891.               PUSH(value);
  892.               break;
  893.   
  894. ***************
  895. *** 1150,1156 ****
  896.               POPL(lval1);
  897.               lvalue = long_mul(lval1, lval2, &overflow);
  898.               if (overflow)
  899. !                 raise(NUMERIC_ERROR, "Overflow");
  900.               PUSHL(lvalue);
  901.               break;
  902.   
  903. --- 1150,1156 ----
  904.               POPL(lval1);
  905.               lvalue = long_mul(lval1, lval2, &overflow);
  906.               if (overflow)
  907. !                 Raise(NUMERIC_ERROR, "Overflow");
  908.               PUSHL(lvalue);
  909.               break;
  910.   
  911. ***************
  912. *** 1158,1164 ****
  913.               POP(val2);
  914.               POP(val1);
  915.               if (val2 < 0)
  916. !                 raise(NUMERIC_ERROR, "Overflow");
  917.               else if (val2 == 0)
  918.                   value = 1;
  919.               else {
  920. --- 1158,1164 ----
  921.               POP(val2);
  922.               POP(val1);
  923.               if (val2 < 0)
  924. !                 Raise(NUMERIC_ERROR, "Overflow");
  925.               else if (val2 == 0)
  926.                   value = 1;
  927.               else {
  928. ***************
  929. *** 1166,1172 ****
  930.                   for (i = 1; i < val2; i++) {
  931.                       value = value * val1;
  932.                       if (value > 127)
  933. !                         raise(NUMERIC_ERROR, "Overflow");
  934.                   }
  935.               }
  936.               PUSH(value);
  937. --- 1166,1172 ----
  938.                   for (i = 1; i < val2; i++) {
  939.                       value = value * val1;
  940.                       if (value > 127)
  941. !                         Raise(NUMERIC_ERROR, "Overflow");
  942.                   }
  943.               }
  944.               PUSH(value);
  945. ***************
  946. *** 1176,1182 ****
  947.               POP(val2);
  948.               POP(val1);
  949.               if (val2 < 0)
  950. !                 raise(NUMERIC_ERROR, "Overflow");
  951.               else if (val2 == 0)
  952.                   value = 1;
  953.               else
  954. --- 1176,1182 ----
  955.               POP(val2);
  956.               POP(val1);
  957.               if (val2 < 0)
  958. !                 Raise(NUMERIC_ERROR, "Overflow");
  959.               else if (val2 == 0)
  960.                   value = 1;
  961.               else
  962. ***************
  963. *** 1184,1190 ****
  964.               for (i = 1; i < val2; i++) {
  965.                   value = word_mul(value, val1, &overflow);
  966.                   if (overflow)
  967. !                     raise(NUMERIC_ERROR, "Overflow");
  968.               }
  969.               PUSH(value);
  970.               break;
  971. --- 1184,1190 ----
  972.               for (i = 1; i < val2; i++) {
  973.                   value = word_mul(value, val1, &overflow);
  974.                   if (overflow)
  975. !                     Raise(NUMERIC_ERROR, "Overflow");
  976.               }
  977.               PUSH(value);
  978.               break;
  979. ***************
  980. *** 1193,1199 ****
  981.               POPL(lval2);
  982.               POPL(lval1);
  983.               if (lval2 < 0)
  984. !                 raise(NUMERIC_ERROR, "Overflow");
  985.               else if (lval2 == 0)
  986.                   lvalue = 1;
  987.               else {
  988. --- 1193,1199 ----
  989.               POPL(lval2);
  990.               POPL(lval1);
  991.               if (lval2 < 0)
  992. !                 Raise(NUMERIC_ERROR, "Overflow");
  993.               else if (lval2 == 0)
  994.                   lvalue = 1;
  995.               else {
  996. ***************
  997. *** 1201,1207 ****
  998.                   for (i = 1; i < lval2; i++) {
  999.                       lvalue = long_mul(lvalue, lval1, &overflow);
  1000.                       if (overflow)
  1001. !                         raise(NUMERIC_ERROR, "Overflow");
  1002.                   }
  1003.               }
  1004.               PUSHL(lvalue);
  1005. --- 1201,1207 ----
  1006.                   for (i = 1; i < lval2; i++) {
  1007.                       lvalue = long_mul(lvalue, lval1, &overflow);
  1008.                       if (overflow)
  1009. !                         Raise(NUMERIC_ERROR, "Overflow");
  1010.                   }
  1011.               }
  1012.               PUSHL(lvalue);
  1013. ***************
  1014. *** 1243,1257 ****
  1015.                       fix_convert(fix_resu, temp_template, FX_RANGE(ptr));
  1016.                       fvalue = int_tol(fix_resu);
  1017.                       if (arith_overflow)
  1018. !                         raise(NUMERIC_ERROR,
  1019.                             "Fixed point multiplication overflow");
  1020.                       if (fix_out_of_bounds(fvalue, ptr))
  1021. !                         raise(CONSTRAINT_ERROR,
  1022.                             "Fixed point value out of bounds");
  1023.                       PUSHL(sgn*fvalue);
  1024.                   }
  1025.                   else
  1026. !                     raise(SYSTEM_ERROR, "Conversion to invalid type");
  1027.               }
  1028.               break;
  1029.   
  1030. --- 1243,1257 ----
  1031.                       fix_convert(fix_resu, temp_template, FX_RANGE(ptr));
  1032.                       fvalue = int_tol(fix_resu);
  1033.                       if (arith_overflow)
  1034. !                         Raise(NUMERIC_ERROR,
  1035.                             "Fixed point multiplication overflow");
  1036.                       if (fix_out_of_bounds(fvalue, ptr))
  1037. !                         Raise(CONSTRAINT_ERROR,
  1038.                             "Fixed point value out of bounds");
  1039.                       PUSHL(sgn*fvalue);
  1040.                   }
  1041.                   else
  1042. !                     Raise(SYSTEM_ERROR, "Conversion to invalid type");
  1043.               }
  1044.               break;
  1045.   
  1046. ***************
  1047. *** 1268,1274 ****
  1048.               ptr = ADDR(bas1, off1);
  1049.   
  1050.               if (fval2 == 0) {
  1051. !                 raise(NUMERIC_ERROR, "Fixed point division by zero");
  1052.                   fvalue = 0;
  1053.                   PUSHL(fvalue);
  1054.               }
  1055. --- 1268,1274 ----
  1056.               ptr = ADDR(bas1, off1);
  1057.   
  1058.               if (fval2 == 0) {
  1059. !                 Raise(NUMERIC_ERROR, "Fixed point division by zero");
  1060.                   fvalue = 0;
  1061.                   PUSHL(fvalue);
  1062.               }
  1063. ***************
  1064. *** 1292,1305 ****
  1065.                       int_div(fix_val1, fix_val2, fix_resu);
  1066.                       fvalue = int_tol(fix_resu);
  1067.                       if (arith_overflow)
  1068. !                         raise(NUMERIC_ERROR, "Fixed point division overflow");
  1069.                       if (fix_out_of_bounds(fvalue, ptr))
  1070. !                         raise(CONSTRAINT_ERROR,
  1071.                             "Fixed point value out of bounds");
  1072.                       PUSHL(sgn*fvalue);
  1073.                   }
  1074.                   else
  1075. !                     raise(SYSTEM_ERROR, "Conversion to invalid type");
  1076.               }
  1077.               break;
  1078.   
  1079. --- 1292,1305 ----
  1080.                       int_div(fix_val1, fix_val2, fix_resu);
  1081.                       fvalue = int_tol(fix_resu);
  1082.                       if (arith_overflow)
  1083. !                         Raise(NUMERIC_ERROR, "Fixed point division overflow");
  1084.                       if (fix_out_of_bounds(fvalue, ptr))
  1085. !                         Raise(CONSTRAINT_ERROR,
  1086.                             "Fixed point value out of bounds");
  1087.                       PUSHL(sgn*fvalue);
  1088.                   }
  1089.                   else
  1090. !                     Raise(SYSTEM_ERROR, "Conversion to invalid type");
  1091.               }
  1092.               break;
  1093.   
  1094. ***************
  1095. *** 1315,1321 ****
  1096.   
  1097.           case I_NEG_B:
  1098.               if (TOS == -128)
  1099. !                 raise(NUMERIC_ERROR,"Byte overflow");
  1100.               else
  1101.                   TOS = -TOS;
  1102.               break;
  1103. --- 1315,1321 ----
  1104.   
  1105.           case I_NEG_B:
  1106.               if (TOS == -128)
  1107. !                 Raise(NUMERIC_ERROR,"Byte overflow");
  1108.               else
  1109.                   TOS = -TOS;
  1110.               break;
  1111. ***************
  1112. *** 1322,1328 ****
  1113.   
  1114.           case I_NEG_W:
  1115.               if (TOS == MIN_INTEGER)
  1116. !                 raise(NUMERIC_ERROR,"Overflow");
  1117.               else
  1118.                   TOS = -TOS;
  1119.               break;
  1120. --- 1322,1328 ----
  1121.   
  1122.           case I_NEG_W:
  1123.               if (TOS == MIN_INTEGER)
  1124. !                 Raise(NUMERIC_ERROR,"Overflow");
  1125.               else
  1126.                   TOS = -TOS;
  1127.               break;
  1128. ***************
  1129. *** 1329,1335 ****
  1130.   
  1131.           case I_NEG_L:
  1132.               if (TOS == MIN_LONG)
  1133. !                 raise(NUMERIC_ERROR,"Overflow");
  1134.               else
  1135.                   TOSL = -TOSL;
  1136.               break;
  1137. --- 1329,1335 ----
  1138.   
  1139.           case I_NEG_L:
  1140.               if (TOS == MIN_LONG)
  1141. !                 Raise(NUMERIC_ERROR,"Overflow");
  1142.               else
  1143.                   TOSL = -TOSL;
  1144.               break;
  1145. ***************
  1146. *** 1336,1342 ****
  1147.   
  1148.           case I_ABS_B:
  1149.               if (TOS == -128)
  1150. !                 raise(NUMERIC_ERROR,"Byte overflow");
  1151.               else
  1152.                   TOS = ABS(TOS);
  1153.               break;
  1154. --- 1336,1342 ----
  1155.   
  1156.           case I_ABS_B:
  1157.               if (TOS == -128)
  1158. !                 Raise(NUMERIC_ERROR,"Byte overflow");
  1159.               else
  1160.                   TOS = ABS(TOS);
  1161.               break;
  1162. ***************
  1163. *** 1343,1349 ****
  1164.   
  1165.           case I_ABS_W:
  1166.               if (TOS == MIN_INTEGER)
  1167. !                 raise(NUMERIC_ERROR,"Overflow");
  1168.               else
  1169.                   TOS = ABS(TOS);
  1170.               break;
  1171. --- 1343,1349 ----
  1172.   
  1173.           case I_ABS_W:
  1174.               if (TOS == MIN_INTEGER)
  1175. !                 Raise(NUMERIC_ERROR,"Overflow");
  1176.               else
  1177.                   TOS = ABS(TOS);
  1178.               break;
  1179. ***************
  1180. *** 1350,1356 ****
  1181.   
  1182.           case I_ABS_L:
  1183.               if (TOS == MIN_LONG)
  1184. !                 raise(NUMERIC_ERROR,"Overflow");
  1185.               else
  1186.                   TOSL = ABS(TOSL);
  1187.               break;
  1188. --- 1350,1356 ----
  1189.   
  1190.           case I_ABS_L:
  1191.               if (TOS == MIN_LONG)
  1192. !                 Raise(NUMERIC_ERROR,"Overflow");
  1193.               else
  1194.                   TOSL = ABS(TOSL);
  1195.               break;
  1196. ***************
  1197. *** 1409,1421 ****
  1198.               ptr1 = ADDR(bse, off);
  1199.               if (TYPE(ptr1) == TT_FX_RANGE) {
  1200.                   if (fix_out_of_bounds(TOSL, ptr1))
  1201. !                     raise(CONSTRAINT_ERROR, "Fixed point value out of bounds");
  1202.               }
  1203.               else if (TYPE(ptr1) == TT_FL_RANGE) {
  1204.                   rval1 = FL_RANGE(ptr1)->fllow;
  1205.                   rval2 = FL_RANGE(ptr1)->flhigh;
  1206.                   if (TOSF < rval1 || TOSF > rval2)
  1207. !                     raise(CONSTRAINT_ERROR,
  1208.                         "Floating point value out of bounds");
  1209.               }
  1210.               else if ((TYPE(ptr1) == TT_I_RANGE) ||
  1211. --- 1409,1421 ----
  1212.               ptr1 = ADDR(bse, off);
  1213.               if (TYPE(ptr1) == TT_FX_RANGE) {
  1214.                   if (fix_out_of_bounds(TOSL, ptr1))
  1215. !                     Raise(CONSTRAINT_ERROR, "Fixed point value out of bounds");
  1216.               }
  1217.               else if (TYPE(ptr1) == TT_FL_RANGE) {
  1218.                   rval1 = FL_RANGE(ptr1)->fllow;
  1219.                   rval2 = FL_RANGE(ptr1)->flhigh;
  1220.                   if (TOSF < rval1 || TOSF > rval2)
  1221. !                     Raise(CONSTRAINT_ERROR,
  1222.                         "Floating point value out of bounds");
  1223.               }
  1224.               else if ((TYPE(ptr1) == TT_I_RANGE) ||
  1225. ***************
  1226. *** 1424,1430 ****
  1227.                   val_low = I_RANGE(ptr1)->ilow;
  1228.                   val_high = I_RANGE(ptr1)->ihigh;
  1229.                   if (TOS < val_low || TOS > val_high)
  1230. !                     raise(CONSTRAINT_ERROR, "Out of bounds");
  1231.               }
  1232.   #ifdef LONG_INT
  1233.               else if (TYPE(ptr1) == TT_L_RANGE) {
  1234. --- 1424,1430 ----
  1235.                   val_low = I_RANGE(ptr1)->ilow;
  1236.                   val_high = I_RANGE(ptr1)->ihigh;
  1237.                   if (TOS < val_low || TOS > val_high)
  1238. !                     Raise(CONSTRAINT_ERROR, "Out of bounds");
  1239.               }
  1240.   #ifdef LONG_INT
  1241.               else if (TYPE(ptr1) == TT_L_RANGE) {
  1242. ***************
  1243. *** 1432,1438 ****
  1244.                   lval_low = L_RANGE(ptr1)->llow;
  1245.                   lval_high = L_RANGE(ptr1)->lhigh;
  1246.                   if (lvalue < lval_low || lvalue > lval_high)
  1247. !                     raise (CONSTRAINT_ERROR, "Out of bounds");
  1248.               }
  1249.   #endif
  1250.               else    /* error here */
  1251. --- 1432,1438 ----
  1252.                   lval_low = L_RANGE(ptr1)->llow;
  1253.                   lval_high = L_RANGE(ptr1)->lhigh;
  1254.                   if (lvalue < lval_low || lvalue > lval_high)
  1255. !                     Raise (CONSTRAINT_ERROR, "Out of bounds");
  1256.               }
  1257.   #endif
  1258.               else    /* error here */
  1259. ***************
  1260. *** 1445,1451 ****
  1261.               if (TYPE(ptr1) == TT_FX_RANGE) {
  1262.                   fval1 = TOSL;
  1263.                   if (fix_out_of_bounds(fval1, ptr1))
  1264. !                     raise(CONSTRAINT_ERROR, "Fixed point value out of bounds");
  1265.               }
  1266.               else if (TYPE(ptr1) == TT_FL_RANGE) {
  1267.                   rvalue = TOSF;
  1268. --- 1445,1451 ----
  1269.               if (TYPE(ptr1) == TT_FX_RANGE) {
  1270.                   fval1 = TOSL;
  1271.                   if (fix_out_of_bounds(fval1, ptr1))
  1272. !                     Raise(CONSTRAINT_ERROR, "Fixed point value out of bounds");
  1273.               }
  1274.               else if (TYPE(ptr1) == TT_FL_RANGE) {
  1275.                   rvalue = TOSF;
  1276. ***************
  1277. *** 1452,1458 ****
  1278.                   rval1 = FL_RANGE(ptr1)->fllow;
  1279.                   rval2 = FL_RANGE(ptr1)->flhigh;
  1280.                   if (rvalue < rval1 || rvalue > rval2)
  1281. !                     raise(CONSTRAINT_ERROR,
  1282.                         "Floating point value out of bounds");
  1283.               }
  1284.               else if ((TYPE(ptr1) == TT_I_RANGE) ||
  1285. --- 1452,1458 ----
  1286.                   rval1 = FL_RANGE(ptr1)->fllow;
  1287.                   rval2 = FL_RANGE(ptr1)->flhigh;
  1288.                   if (rvalue < rval1 || rvalue > rval2)
  1289. !                     Raise(CONSTRAINT_ERROR,
  1290.                         "Floating point value out of bounds");
  1291.               }
  1292.               else if ((TYPE(ptr1) == TT_I_RANGE) ||
  1293. ***************
  1294. *** 1461,1467 ****
  1295.                   val_low = I_RANGE(ptr1)->ilow;
  1296.                   val_high = I_RANGE(ptr1)->ihigh;
  1297.                   if (TOS < val_low || TOS > val_high)
  1298. !                     raise(CONSTRAINT_ERROR, "Out of bounds");
  1299.               }
  1300.   #ifdef LONG_INT
  1301.               else if (TYPE(ptr1) == TT_L_RANGE) {
  1302. --- 1461,1467 ----
  1303.                   val_low = I_RANGE(ptr1)->ilow;
  1304.                   val_high = I_RANGE(ptr1)->ihigh;
  1305.                   if (TOS < val_low || TOS > val_high)
  1306. !                     Raise(CONSTRAINT_ERROR, "Out of bounds");
  1307.               }
  1308.   #ifdef LONG_INT
  1309.               else if (TYPE(ptr1) == TT_L_RANGE) {
  1310. ***************
  1311. *** 1469,1475 ****
  1312.                   lval_low = L_RANGE(ptr1)->llow;
  1313.                   lval_high = L_RANGE(ptr1)->lhigh;
  1314.                   if (lvalue < lval_low || lvalue > lval_high)
  1315. !                     raise (CONSTRAINT_ERROR, "Out of bounds");
  1316.               }
  1317.   #endif
  1318.               else    /* error here */
  1319. --- 1469,1475 ----
  1320.                   lval_low = L_RANGE(ptr1)->llow;
  1321.                   lval_high = L_RANGE(ptr1)->lhigh;
  1322.                   if (lvalue < lval_low || lvalue > lval_high)
  1323. !                     Raise (CONSTRAINT_ERROR, "Out of bounds");
  1324.               }
  1325.   #endif
  1326.               else    /* error here */
  1327. ***************
  1328. *** 1493,1499 ****
  1329.               PUSH_ADDR(bse, off);
  1330.               ptr1 = ADDR(bse, off);
  1331.               if (!qual_index(ptr, ptr1))
  1332. !                 raise(CONSTRAINT_ERROR, "Wrong bounds");
  1333.               break;
  1334.   
  1335.           case I_QUAL_INDEX_L:
  1336. --- 1493,1499 ----
  1337.               PUSH_ADDR(bse, off);
  1338.               ptr1 = ADDR(bse, off);
  1339.               if (!qual_index(ptr, ptr1))
  1340. !                 Raise(CONSTRAINT_ERROR, "Wrong bounds");
  1341.               break;
  1342.   
  1343.           case I_QUAL_INDEX_L:
  1344. ***************
  1345. *** 1503,1509 ****
  1346.               PUSH_ADDR(bse, off);
  1347.               ptr1 = ADDR(bse, off);
  1348.               if (!qual_index(ptr, ptr1))
  1349. !                 raise(CONSTRAINT_ERROR, "Wrong bounds");
  1350.               break;
  1351.   
  1352.           case I_QUAL_SUB_G:
  1353. --- 1503,1509 ----
  1354.               PUSH_ADDR(bse, off);
  1355.               ptr1 = ADDR(bse, off);
  1356.               if (!qual_index(ptr, ptr1))
  1357. !                 Raise(CONSTRAINT_ERROR, "Wrong bounds");
  1358.               break;
  1359.   
  1360.           case I_QUAL_SUB_G:
  1361. ***************
  1362. *** 1513,1519 ****
  1363.               PUSH_ADDR(bse, off);
  1364.               ptr1 = ADDR(bse, off);
  1365.               if (!qual_sub(ptr, ptr1))
  1366. !                 raise(CONSTRAINT_ERROR, "Wrong bounds");
  1367.               break;
  1368.   
  1369.           case I_QUAL_SUB_L:
  1370. --- 1513,1519 ----
  1371.               PUSH_ADDR(bse, off);
  1372.               ptr1 = ADDR(bse, off);
  1373.               if (!qual_sub(ptr, ptr1))
  1374. !                 Raise(CONSTRAINT_ERROR, "Wrong bounds");
  1375.               break;
  1376.   
  1377.           case I_QUAL_SUB_L:
  1378. ***************
  1379. *** 1523,1529 ****
  1380.               PUSH_ADDR(bse, off);
  1381.               ptr1 = ADDR(bse, off);
  1382.               if (!qual_sub(ptr, ptr1))
  1383. !                 raise(CONSTRAINT_ERROR, "Wrong bounds");
  1384.               break;
  1385.   
  1386.           case I_SUB_B:
  1387. --- 1523,1529 ----
  1388.               PUSH_ADDR(bse, off);
  1389.               ptr1 = ADDR(bse, off);
  1390.               if (!qual_sub(ptr, ptr1))
  1391. !                 Raise(CONSTRAINT_ERROR, "Wrong bounds");
  1392.               break;
  1393.   
  1394.           case I_SUB_B:
  1395. ***************
  1396. *** 1531,1537 ****
  1397.               POP(val1);
  1398.               value = val1 - val2;
  1399.               if (value < -128 || value > 127)
  1400. !                 raise(NUMERIC_ERROR, "Overflow");
  1401.               else
  1402.                   PUSH(value);
  1403.               break;
  1404. --- 1531,1537 ----
  1405.               POP(val1);
  1406.               value = val1 - val2;
  1407.               if (value < -128 || value > 127)
  1408. !                 Raise(NUMERIC_ERROR, "Overflow");
  1409.               else
  1410.                   PUSH(value);
  1411.               break;
  1412. ***************
  1413. *** 1541,1547 ****
  1414.               POP(val1);
  1415.               value = word_sub(val1, val2, &overflow);
  1416.               if (overflow)
  1417. !                 raise(NUMERIC_ERROR, "Overflow");
  1418.               else
  1419.                   PUSH(value);
  1420.               break;
  1421. --- 1541,1547 ----
  1422.               POP(val1);
  1423.               value = word_sub(val1, val2, &overflow);
  1424.               if (overflow)
  1425. !                 Raise(NUMERIC_ERROR, "Overflow");
  1426.               else
  1427.                   PUSH(value);
  1428.               break;
  1429. ***************
  1430. *** 1551,1557 ****
  1431.               POPL(lval1);
  1432.               lvalue = long_sub(lval1, lval2, &overflow);
  1433.               if (overflow)
  1434. !                 raise(NUMERIC_ERROR, "Overflow");
  1435.               else
  1436.                   PUSHL(lvalue);
  1437.               break;
  1438. --- 1551,1557 ----
  1439.               POPL(lval1);
  1440.               lvalue = long_sub(lval1, lval2, &overflow);
  1441.               if (overflow)
  1442. !                 Raise(NUMERIC_ERROR, "Overflow");
  1443.               else
  1444.                   PUSHL(lvalue);
  1445.               break;
  1446. ***************
  1447. *** 1576,1582 ****
  1448.               POP_ADDR(bse, off);/* left type */
  1449.               value = SIZE(ADDR(bse, off));
  1450.               if (SIZE(ADDR(bas1, off1)) != value)
  1451. !                 raise(CONSTRAINT_ERROR, "Arrays not same size for AND");
  1452.               else {
  1453.                   POP_ADDR(bas1, off1);/* left object */
  1454.                   ptr1 = ADDR(bas1, off1);
  1455. --- 1576,1582 ----
  1456.               POP_ADDR(bse, off);/* left type */
  1457.               value = SIZE(ADDR(bse, off));
  1458.               if (SIZE(ADDR(bas1, off1)) != value)
  1459. !                 Raise(CONSTRAINT_ERROR, "Arrays not same size for AND");
  1460.               else {
  1461.                   POP_ADDR(bas1, off1);/* left object */
  1462.                   ptr1 = ADDR(bas1, off1);
  1463. ***************
  1464. *** 1595,1601 ****
  1465.               POP_ADDR(bse, off);/* left type */
  1466.               value = SIZE(ADDR(bse, off));
  1467.               if (SIZE(ADDR(bas1, off1)) != value)
  1468. !                 raise(CONSTRAINT_ERROR, "Arrays not same size for OR");
  1469.               else {
  1470.                   POP_ADDR(bas1, off1);/* left object */
  1471.                   ptr1 = ADDR(bas1, off1);
  1472. --- 1595,1601 ----
  1473.               POP_ADDR(bse, off);/* left type */
  1474.               value = SIZE(ADDR(bse, off));
  1475.               if (SIZE(ADDR(bas1, off1)) != value)
  1476. !                 Raise(CONSTRAINT_ERROR, "Arrays not same size for OR");
  1477.               else {
  1478.                   POP_ADDR(bas1, off1);/* left object */
  1479.                   ptr1 = ADDR(bas1, off1);
  1480. ***************
  1481. *** 1614,1620 ****
  1482.               POP_ADDR(bse, off);/* left type */
  1483.               value = SIZE(ADDR(bse, off));
  1484.               if (SIZE(ADDR(bas1, off1)) != value)
  1485. !                 raise(CONSTRAINT_ERROR, "Arrays not same size for XOR");
  1486.               else {
  1487.                   POP_ADDR(bas1, off1);/* left object */
  1488.                   ptr1 = ADDR(bas1, off1);
  1489. --- 1614,1620 ----
  1490.               POP_ADDR(bse, off);/* left type */
  1491.               value = SIZE(ADDR(bse, off));
  1492.               if (SIZE(ADDR(bas1, off1)) != value)
  1493. !                 Raise(CONSTRAINT_ERROR, "Arrays not same size for XOR");
  1494.               else {
  1495.                   POP_ADDR(bas1, off1);/* left object */
  1496.                   ptr1 = ADDR(bas1, off1);
  1497. ***************
  1498. *** 1815,1824 ****
  1499.               ptr = ADDR(bse, off);
  1500.               value = *ptr;
  1501.               if (value < 0)
  1502. !                 raise(PROGRAM_ERROR, "Access before elaboration");
  1503.               else {
  1504.                   if (cur_stackptr+SECURITY_LEVEL>new_task_size)
  1505. !                     raise(STORAGE_ERROR, "Stack overflow");
  1506.                   else {
  1507.                       old_cs = cs;
  1508.                       cs = value;
  1509. --- 1815,1824 ----
  1510.               ptr = ADDR(bse, off);
  1511.               value = *ptr;
  1512.               if (value < 0)
  1513. !                 Raise(PROGRAM_ERROR, "Access before elaboration");
  1514.               else {
  1515.                   if (cur_stackptr+SECURITY_LEVEL>new_task_size)
  1516. !                     Raise(STORAGE_ERROR, "Stack overflow");
  1517.                   else {
  1518.                       old_cs = cs;
  1519.                       cs = value;
  1520. ***************
  1521. *** 1841,1847 ****
  1522.   #endif
  1523.                       /* reserve space for locals */
  1524.                       if (val1 < 0)
  1525. !                         raise(SYSTEM_ERROR, "Negative size of locals");
  1526.                       else
  1527.                           cur_stackptr += val1;
  1528.                       PUSH(sfp);
  1529. --- 1841,1847 ----
  1530.   #endif
  1531.                       /* reserve space for locals */
  1532.                       if (val1 < 0)
  1533. !                         Raise(SYSTEM_ERROR, "Negative size of locals");
  1534.                       else
  1535.                           cur_stackptr += val1;
  1536.                       PUSH(sfp);
  1537. ***************
  1538. *** 1866,1875 ****
  1539.               ptr = ADDR(bse, off);
  1540.               value = *ptr;
  1541.               if (value < 0)
  1542. !                 raise(PROGRAM_ERROR, "Access before elaboration");
  1543.               else {
  1544.                   if (cur_stackptr+SECURITY_LEVEL>new_task_size)
  1545. !                     raise(STORAGE_ERROR, "Stack overflow");
  1546.                   else {
  1547.                       old_cs = cs;
  1548.                       cs = value;
  1549. --- 1866,1875 ----
  1550.               ptr = ADDR(bse, off);
  1551.               value = *ptr;
  1552.               if (value < 0)
  1553. !                 Raise(PROGRAM_ERROR, "Access before elaboration");
  1554.               else {
  1555.                   if (cur_stackptr+SECURITY_LEVEL>new_task_size)
  1556. !                     Raise(STORAGE_ERROR, "Stack overflow");
  1557.                   else {
  1558.                       old_cs = cs;
  1559.                       cs = value;
  1560. ***************
  1561. *** 1893,1899 ****
  1562.   #endif
  1563.                       /* reserve space for locals */
  1564.                       if (val1 < 0)
  1565. !                         raise(SYSTEM_ERROR, "Negative size of locals");
  1566.                       else
  1567.                           cur_stackptr += val1;
  1568.                       PUSH(sfp);
  1569. --- 1893,1899 ----
  1570.   #endif
  1571.                       /* reserve space for locals */
  1572.                       if (val1 < 0)
  1573. !                         Raise(SYSTEM_ERROR, "Negative size of locals");
  1574.                       else
  1575.                           cur_stackptr += val1;
  1576.                       PUSH(sfp);
  1577. ***************
  1578. *** 2098,2104 ****
  1579.               break;
  1580.   
  1581.           case I_RAISE:
  1582. !             raise(exr, "");
  1583.               break;
  1584.   
  1585.           case I_RESTORE_STACK_POINTER:
  1586. --- 2098,2104 ----
  1587.               break;
  1588.   
  1589.           case I_RAISE:
  1590. !             Raise(exr, "");
  1591.               break;
  1592.   
  1593.           case I_RESTORE_STACK_POINTER:
  1594. ***************
  1595. *** 2154,2160 ****
  1596.               break;
  1597.   
  1598.           default:
  1599. !             raise(SYSTEM_ERROR, "Bad opcode");
  1600.   
  1601.           }            /* end switch on operation code */
  1602.       }                /* end loop through instructions */
  1603. --- 2154,2160 ----
  1604.               break;
  1605.   
  1606.           default:
  1607. !             Raise(SYSTEM_ERROR, "Bad opcode");
  1608.   
  1609.           }            /* end switch on operation code */
  1610.       }                /* end loop through instructions */
  1611. diff -C 3 Adaed-1.11.0a/intb.c Adaed1.11.0a-l/intb.c
  1612. *** Adaed-1.11.0a/intb.c    Fri Feb  7 20:19:09 1992
  1613. --- Adaed1.11.0a-l/intb.c    Mon Jun  8 22:29:27 1992
  1614. ***************
  1615. *** 95,101 ****
  1616.           }
  1617.   #endif
  1618.           else    /* error */
  1619. !             raise(SYSTEM_ERROR,"Unknown type for attribute FIRST or LAST");
  1620.           break;
  1621.   
  1622.       case ATTR_O_FIRST:
  1623. --- 95,101 ----
  1624.           }
  1625.   #endif
  1626.           else    /* error */
  1627. !             Raise(SYSTEM_ERROR,"Unknown type for attribute FIRST or LAST");
  1628.           break;
  1629.   
  1630.       case ATTR_O_FIRST:
  1631. ***************
  1632. *** 143,149 ****
  1633.               if (*ptr == 0)
  1634.                   PUSH(*(ptr + 1));
  1635.               else
  1636. !                 raise(SYSTEM_ERROR, "Attribute on discriminant bound");
  1637.           }
  1638.           break;
  1639.   
  1640. --- 143,149 ----
  1641.               if (*ptr == 0)
  1642.                   PUSH(*(ptr + 1));
  1643.               else
  1644. !                 Raise(SYSTEM_ERROR, "Attribute on discriminant bound");
  1645.           }
  1646.           break;
  1647.   
  1648. ***************
  1649. *** 264,270 ****
  1650.             ||(TYPE(ptr) == TT_ENUM)) {
  1651.               POP(value);
  1652.               if (value <= I_RANGE(ptr)->ilow)
  1653. !                 raise(CONSTRAINT_ERROR, "Out of range (PRED)");
  1654.               value--;
  1655.               PUSH(value);
  1656.           }
  1657. --- 264,270 ----
  1658.             ||(TYPE(ptr) == TT_ENUM)) {
  1659.               POP(value);
  1660.               if (value <= I_RANGE(ptr)->ilow)
  1661. !                 Raise(CONSTRAINT_ERROR, "Out of range (PRED)");
  1662.               value--;
  1663.               PUSH(value);
  1664.           }
  1665. ***************
  1666. *** 272,284 ****
  1667.           else if (TYPE(ptr) == TT_L_RANGE) {
  1668.               POPL(lvalue);
  1669.               if (lvalue <= L_RANGE(ptr)->llow)
  1670. !                 raise (CONSTRAINT_ERROR, "Out of range (PRED)");
  1671.               lvalue--;
  1672.               PUSHL(lvalue);
  1673.           }
  1674.   #endif
  1675.           else    /* error */
  1676. !             raise(SYSTEM_ERROR,"Unknown type for attribute PRED");
  1677.           break;
  1678.   
  1679.       case ATTR_SUCC:
  1680. --- 272,284 ----
  1681.           else if (TYPE(ptr) == TT_L_RANGE) {
  1682.               POPL(lvalue);
  1683.               if (lvalue <= L_RANGE(ptr)->llow)
  1684. !                 Raise (CONSTRAINT_ERROR, "Out of range (PRED)");
  1685.               lvalue--;
  1686.               PUSHL(lvalue);
  1687.           }
  1688.   #endif
  1689.           else    /* error */
  1690. !             Raise(SYSTEM_ERROR,"Unknown type for attribute PRED");
  1691.           break;
  1692.   
  1693.       case ATTR_SUCC:
  1694. ***************
  1695. *** 289,295 ****
  1696.             ||(TYPE(ptr) == TT_ENUM)) {
  1697.               POP(value);
  1698.               if (value >= I_RANGE(ptr)->ihigh)
  1699. !                 raise(CONSTRAINT_ERROR, "Out of range (SUCC)");
  1700.               value++;
  1701.               PUSH(value);
  1702.           }
  1703. --- 289,295 ----
  1704.             ||(TYPE(ptr) == TT_ENUM)) {
  1705.               POP(value);
  1706.               if (value >= I_RANGE(ptr)->ihigh)
  1707. !                 Raise(CONSTRAINT_ERROR, "Out of range (SUCC)");
  1708.               value++;
  1709.               PUSH(value);
  1710.           }
  1711. ***************
  1712. *** 297,309 ****
  1713.           else if (TYPE(ptr) == TT_L_RANGE) {
  1714.               POPL(lvalue);
  1715.               if (lvalue >= L_RANGE(ptr)->lhigh)
  1716. !                 raise (CONSTRAINT_ERROR, "Out of range (SUCC)");
  1717.               lvalue++;
  1718.               PUSHL(lvalue);
  1719.           }
  1720.   #endif
  1721.           else    /* error */
  1722. !             raise(SYSTEM_ERROR,"Unknown type for attribute SUCC");
  1723.           break;
  1724.   
  1725.       case ATTR_SIZE:
  1726. --- 297,309 ----
  1727.           else if (TYPE(ptr) == TT_L_RANGE) {
  1728.               POPL(lvalue);
  1729.               if (lvalue >= L_RANGE(ptr)->lhigh)
  1730. !                 Raise (CONSTRAINT_ERROR, "Out of range (SUCC)");
  1731.               lvalue++;
  1732.               PUSHL(lvalue);
  1733.           }
  1734.   #endif
  1735.           else    /* error */
  1736. !             Raise(SYSTEM_ERROR,"Unknown type for attribute SUCC");
  1737.           break;
  1738.   
  1739.       case ATTR_SIZE:
  1740. ***************
  1741. *** 436,442 ****
  1742.           break;
  1743.   
  1744.       default:
  1745. !         raise(SYSTEM_ERROR, "Unknown attribute");
  1746.       }
  1747.   }
  1748.   
  1749. --- 436,442 ----
  1750.           break;
  1751.   
  1752.       default:
  1753. !         Raise(SYSTEM_ERROR, "Unknown attribute");
  1754.       }
  1755.   }
  1756.   
  1757. ***************
  1758. *** 458,464 ****
  1759.           if (TYPE(ptr_from) == TT_FL_RANGE) {
  1760.               POPF(rvalue);
  1761.               if (ABS(rvalue) >(float)(MAX_LONG))
  1762. !                 raise(NUMERIC_ERROR, "Integer out of bounds");
  1763.               else {
  1764.                   value = (rvalue + (rvalue > 0.0? 0.5 : -0.5));
  1765.                   PUSH(value);
  1766. --- 458,464 ----
  1767.           if (TYPE(ptr_from) == TT_FL_RANGE) {
  1768.               POPF(rvalue);
  1769.               if (ABS(rvalue) >(float)(MAX_LONG))
  1770. !                 Raise(NUMERIC_ERROR, "Integer out of bounds");
  1771.               else {
  1772.                   value = (rvalue + (rvalue > 0.0? 0.5 : -0.5));
  1773.                   PUSH(value);
  1774. ***************
  1775. *** 470,476 ****
  1776.               value = lvalue;
  1777.               PUSH(value);
  1778.               if ((long) value != lvalue)                    /* if overflow */
  1779. !                 raise(NUMERIC_ERROR, "fixed_point conversion");
  1780.           }
  1781.           /* Note: nothing to do if *ptr_from == TT_I_RANGE */
  1782.       }
  1783. --- 470,476 ----
  1784.               value = lvalue;
  1785.               PUSH(value);
  1786.               if ((long) value != lvalue)                    /* if overflow */
  1787. !                 Raise(NUMERIC_ERROR, "fixed_point conversion");
  1788.           }
  1789.           /* Note: nothing to do if *ptr_from == TT_I_RANGE */
  1790.       }
  1791. ***************
  1792. *** 531,537 ****
  1793.                   }
  1794.                   /*      watch out: we introduced a bias in the exponent */
  1795.                   if (exp2 >(84 - 21))
  1796. !                     raise(NUMERIC_ERROR, "Floating point value overflow");
  1797.                   else if (exp2 <(-84 - 21))
  1798.                       PUSHF(0.0);    /* underflow */
  1799.                   else {
  1800. --- 531,537 ----
  1801.                   }
  1802.                   /*      watch out: we introduced a bias in the exponent */
  1803.                   if (exp2 >(84 - 21))
  1804. !                     Raise(NUMERIC_ERROR, "Floating point value overflow");
  1805.                   else if (exp2 <(-84 - 21))
  1806.                       PUSHF(0.0);    /* underflow */
  1807.                   else {
  1808. ***************
  1809. *** 597,603 ****
  1810.                   }
  1811.                   lvalue *= res_sign;
  1812.                   if (lvalue < MIN_LONG || lvalue > MAX_LONG) {
  1813. !                     raise (NUMERIC_ERROR, "Fixed point overflow");
  1814.                       lvalue = 0;
  1815.                   }
  1816.               }
  1817. --- 597,603 ----
  1818.                   }
  1819.                   lvalue *= res_sign;
  1820.                   if (lvalue < MIN_LONG || lvalue > MAX_LONG) {
  1821. !                     Raise (NUMERIC_ERROR, "Fixed point overflow");
  1822.                       lvalue = 0;
  1823.                   }
  1824.               }
  1825. ***************
  1826. *** 612,622 ****
  1827.               fix_convert(fix_val1, FX_RANGE(ptr_from), FX_RANGE(ptr_to));
  1828.               lvalue = int_tol(fix_val1);
  1829.               if(arith_overflow)
  1830. !                 raise(NUMERIC_ERROR,"Fixed point conversion overflow");
  1831.               PUSHL(res_sign*lvalue);
  1832.           }
  1833.           else
  1834. !             raise(SYSTEM_ERROR,"Conversion from an unknown type");
  1835.       }
  1836.       else if (TYPE(ptr_to) == TT_U_ARRAY || TYPE(ptr_to) == TT_C_ARRAY) {
  1837.           if (TYPE(ptr_from) == TT_U_ARRAY || TYPE(ptr_from) == TT_C_ARRAY) {
  1838. --- 612,622 ----
  1839.               fix_convert(fix_val1, FX_RANGE(ptr_from), FX_RANGE(ptr_to));
  1840.               lvalue = int_tol(fix_val1);
  1841.               if(arith_overflow)
  1842. !                 Raise(NUMERIC_ERROR,"Fixed point conversion overflow");
  1843.               PUSHL(res_sign*lvalue);
  1844.           }
  1845.           else
  1846. !             Raise(SYSTEM_ERROR,"Conversion from an unknown type");
  1847.       }
  1848.       else if (TYPE(ptr_to) == TT_U_ARRAY || TYPE(ptr_to) == TT_C_ARRAY) {
  1849.           if (TYPE(ptr_from) == TT_U_ARRAY || TYPE(ptr_from) == TT_C_ARRAY) {
  1850. ***************
  1851. *** 644,650 ****
  1852.               }
  1853.               if (from_is_empty || to_is_empty) {
  1854.                   /* one is empty, the other is not */
  1855. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1856.                   return;
  1857.               }
  1858.   
  1859. --- 644,650 ----
  1860.               }
  1861.               if (from_is_empty || to_is_empty) {
  1862.                   /* one is empty, the other is not */
  1863. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1864.                   return;
  1865.               }
  1866.   
  1867. ***************
  1868. *** 660,666 ****
  1869.                   ptr2 = ADDR(bas2, off2);
  1870.                   if (I_RANGE(ptr1)->ihigh - I_RANGE(ptr1)->ilow
  1871.                     !=I_RANGE(ptr2)->ihigh - I_RANGE(ptr2)->ilow) {
  1872. !                     raise(CONSTRAINT_ERROR, "Array conversion");
  1873.                       return;
  1874.                   }
  1875.               }
  1876. --- 660,666 ----
  1877.                   ptr2 = ADDR(bas2, off2);
  1878.                   if (I_RANGE(ptr1)->ihigh - I_RANGE(ptr1)->ilow
  1879.                     !=I_RANGE(ptr2)->ihigh - I_RANGE(ptr2)->ilow) {
  1880. !                     Raise(CONSTRAINT_ERROR, "Array conversion");
  1881.                       return;
  1882.                   }
  1883.               }
  1884. ***************
  1885. *** 679,691 ****
  1886.               }
  1887.               if (from_is_empty || to_is_empty) {
  1888.                   /* one is empty, the other is not */
  1889. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1890.                   return;
  1891.               }
  1892.               /* both have components: do the conversion */
  1893.               if (S_ARRAY(ptr_from)->sahigh - S_ARRAY(ptr_from)->salow !=
  1894.                   I_RANGE(ptr2)->ihigh - I_RANGE(ptr2)->ilow) {
  1895. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1896.                   return;
  1897.               }
  1898.           }
  1899. --- 679,691 ----
  1900.               }
  1901.               if (from_is_empty || to_is_empty) {
  1902.                   /* one is empty, the other is not */
  1903. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1904.                   return;
  1905.               }
  1906.               /* both have components: do the conversion */
  1907.               if (S_ARRAY(ptr_from)->sahigh - S_ARRAY(ptr_from)->salow !=
  1908.                   I_RANGE(ptr2)->ihigh - I_RANGE(ptr2)->ilow) {
  1909. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1910.                   return;
  1911.               }
  1912.           }
  1913. ***************
  1914. *** 705,717 ****
  1915.               }
  1916.               if (from_is_empty || to_is_empty) {
  1917.                   /* one is empty, the other is not */
  1918. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1919.                   return;
  1920.               }
  1921.               /* both have components: do the conversion */
  1922.               if (I_RANGE(ptr1)->ihigh - I_RANGE(ptr1)->ilow !=
  1923.                   S_ARRAY(ptr_to)->sahigh - S_ARRAY(ptr_to)->salow) {
  1924. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1925.                   return;
  1926.               }
  1927.           }
  1928. --- 705,717 ----
  1929.               }
  1930.               if (from_is_empty || to_is_empty) {
  1931.                   /* one is empty, the other is not */
  1932. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1933.                   return;
  1934.               }
  1935.               /* both have components: do the conversion */
  1936.               if (I_RANGE(ptr1)->ihigh - I_RANGE(ptr1)->ilow !=
  1937.                   S_ARRAY(ptr_to)->sahigh - S_ARRAY(ptr_to)->salow) {
  1938. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1939.                   return;
  1940.               }
  1941.           }
  1942. ***************
  1943. *** 726,738 ****
  1944.               }
  1945.               if (from_is_empty || to_is_empty) {
  1946.                   /* one is empty, the other is not */
  1947. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1948.                   return;
  1949.               }
  1950.               /* both have components: do the conversion */
  1951.               if (S_ARRAY(ptr_from)->sahigh - S_ARRAY(ptr_from)->salow !=
  1952.                   S_ARRAY(ptr_to)->sahigh - S_ARRAY(ptr_to)->salow) {
  1953. !                 raise(CONSTRAINT_ERROR, "Array conversion");
  1954.                   return;
  1955.               }
  1956.           }
  1957. --- 726,738 ----
  1958.               }
  1959.               if (from_is_empty || to_is_empty) {
  1960.                   /* one is empty, the other is not */
  1961. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1962.                   return;
  1963.               }
  1964.               /* both have components: do the conversion */
  1965.               if (S_ARRAY(ptr_from)->sahigh - S_ARRAY(ptr_from)->salow !=
  1966.                   S_ARRAY(ptr_to)->sahigh - S_ARRAY(ptr_to)->salow) {
  1967. !                 Raise(CONSTRAINT_ERROR, "Array conversion");
  1968.                   return;
  1969.               }
  1970.           }
  1971. ***************
  1972. *** 912,918 ****
  1973.               }
  1974.           }
  1975.           if (overflow)
  1976. !             raise(NUMERIC_ERROR,"Type size overflow");
  1977.           I_RANGE(ptr)->object_size = component_size;
  1978.           break;
  1979.   
  1980. --- 912,918 ----
  1981.               }
  1982.           }
  1983.           if (overflow)
  1984. !             Raise(NUMERIC_ERROR,"Type size overflow");
  1985.           I_RANGE(ptr)->object_size = component_size;
  1986.           break;
  1987.   
  1988. ***************
  1989. *** 1020,1026 ****
  1990.   
  1991.   
  1992.       default:
  1993. !         raise (SYSTEM_ERROR, "Elaborate unknown type");
  1994.       }
  1995.   
  1996.       if (flag == 1)
  1997. --- 1020,1026 ----
  1998.   
  1999.   
  2000.       default:
  2001. !         Raise (SYSTEM_ERROR, "Elaborate unknown type");
  2002.       }
  2003.   
  2004.       if (flag == 1)
  2005. ***************
  2006. *** 1109,1115 ****
  2007.       }
  2008.   }
  2009.   
  2010. ! void raise(int exception_value, char *reason)                    /*;raise*/
  2011.   {
  2012.       if (exception_trace && cs > 2) {
  2013.           printf("raising exception %s in %s",
  2014. --- 1109,1115 ----
  2015.       }
  2016.   }
  2017.   
  2018. ! void Raise(int exception_value, char *reason)                    /*;Raise*/
  2019.   {
  2020.       if (exception_trace && cs > 2) {
  2021.           printf("raising exception %s in %s",
  2022. ***************
  2023. *** 1254,1260 ****
  2024.           ) { /* second argument is dummy */
  2025.           lvalue = scan_integer_string(ptr,&i);
  2026.           if ((i+1) != slen)            /* If not all scanned */
  2027. !             raise(CONSTRAINT_ERROR, "Number not integer literal for VALUE");
  2028.       }
  2029.       if (val1 == TT_I_RANGE) {
  2030.           value = (int) lvalue;
  2031. --- 1254,1260 ----
  2032.           ) { /* second argument is dummy */
  2033.           lvalue = scan_integer_string(ptr,&i);
  2034.           if ((i+1) != slen)            /* If not all scanned */
  2035. !             Raise(CONSTRAINT_ERROR, "Number not integer literal for VALUE");
  2036.       }
  2037.       if (val1 == TT_I_RANGE) {
  2038.           value = (int) lvalue;
  2039. ***************
  2040. *** 1261,1267 ****
  2041.           if (value == lvalue)
  2042.               PUSH(value);
  2043.           else
  2044. !             raise(CONSTRAINT_ERROR, "Number out of range for VALUE");
  2045.       }
  2046.       else
  2047.           PUSH(value);
  2048. --- 1261,1267 ----
  2049.           if (value == lvalue)
  2050.               PUSH(value);
  2051.           else
  2052. !             Raise(CONSTRAINT_ERROR, "Number out of range for VALUE");
  2053.       }
  2054.       else
  2055.           PUSH(value);
  2056. ***************
  2057. *** 1339,1345 ****
  2058.           break;
  2059.   
  2060.       default:
  2061. !         raise(SYSTEM_ERROR, "Creating object of unknown type");
  2062.       }
  2063.   }
  2064.   
  2065. --- 1339,1345 ----
  2066.           break;
  2067.   
  2068.       default:
  2069. !         Raise(SYSTEM_ERROR, "Creating object of unknown type");
  2070.       }
  2071.   }
  2072.   
  2073. ***************
  2074. *** 1546,1552 ****
  2075.       if (val_high < val_low)                /* make null slice if null */
  2076.           length = 0;
  2077.       else if (val_high > high_bound || val_low < low_bound) {
  2078. !         raise(CONSTRAINT_ERROR, "Slice index out of bounds");
  2079.           return;
  2080.       }
  2081.       else
  2082. --- 1546,1552 ----
  2083.       if (val_high < val_low)                /* make null slice if null */
  2084.           length = 0;
  2085.       else if (val_high > high_bound || val_low < low_bound) {
  2086. !         Raise(CONSTRAINT_ERROR, "Slice index out of bounds");
  2087.           return;
  2088.       }
  2089.       else
  2090. ***************
  2091. *** 1637,1643 ****
  2092.       /* check bounds */
  2093.   
  2094.       if (val_low < rlow || val_high > rhigh) {
  2095. !         raise(CONSTRAINT_ERROR, "Array catenate");
  2096.           return;
  2097.       }
  2098.   
  2099. --- 1637,1643 ----
  2100.       /* check bounds */
  2101.   
  2102.       if (val_low < rlow || val_high > rhigh) {
  2103. !         Raise(CONSTRAINT_ERROR, "Array catenate");
  2104.           return;
  2105.       }
  2106.   
  2107. ***************
  2108. *** 1674,1680 ****
  2109.           val_low = S_ARRAY(ptr1)->salow;
  2110.           val_high = S_ARRAY(ptr1)->sahigh;
  2111.           if (value < val_low || value > val_high)
  2112. !             raise(CONSTRAINT_ERROR, "Index out of bounds");
  2113.           result = (value - val_low) * val2;
  2114.       }
  2115.   
  2116. --- 1674,1680 ----
  2117.           val_low = S_ARRAY(ptr1)->salow;
  2118.           val_high = S_ARRAY(ptr1)->sahigh;
  2119.           if (value < val_low || value > val_high)
  2120. !             Raise(CONSTRAINT_ERROR, "Index out of bounds");
  2121.           result = (value - val_low) * val2;
  2122.       }
  2123.   
  2124. ***************
  2125. *** 1694,1700 ****
  2126.               val_low = I_RANGE(ptr2)->ilow;
  2127.               val_high = I_RANGE(ptr2)->ihigh;
  2128.               if (value < val_low || value > val_high) {
  2129. !                 raise(CONSTRAINT_ERROR, "Index out of bounds");
  2130.               }
  2131.               value = value - val_low;
  2132.               result = (value * delta) + result;
  2133. --- 1694,1700 ----
  2134.               val_low = I_RANGE(ptr2)->ilow;
  2135.               val_high = I_RANGE(ptr2)->ihigh;
  2136.               if (value < val_low || value > val_high) {
  2137. !                 Raise(CONSTRAINT_ERROR, "Index out of bounds");
  2138.               }
  2139.               value = value - val_low;
  2140.               result = (value * delta) + result;
  2141. ***************
  2142. *** 1703,1709 ****
  2143.           result = result * val1;
  2144.       }
  2145.       else
  2146. !         raise(SYSTEM_ERROR, "Illegal array type");
  2147.       off += result;
  2148.       PUSH_ADDR(bse, off);
  2149.   }
  2150. --- 1703,1709 ----
  2151.           result = result * val1;
  2152.       }
  2153.       else
  2154. !         Raise(SYSTEM_ERROR, "Illegal array type");
  2155.       off += result;
  2156.       PUSH_ADDR(bse, off);
  2157.   }
  2158. ***************
  2159. *** 1726,1732 ****
  2160.        * "a := b" will be valid if a is a null array and b a non null one
  2161.        */
  2162.       if (length1 != length2)
  2163. !         raise(CONSTRAINT_ERROR, "Arrays not same length");
  2164.       else if (length1 == 0) return; /* null array */
  2165.       else {
  2166.           if (ptr4 < ptr2) {
  2167. --- 1726,1732 ----
  2168.        * "a := b" will be valid if a is a null array and b a non null one
  2169.        */
  2170.       if (length1 != length2)
  2171. !         Raise(CONSTRAINT_ERROR, "Arrays not same length");
  2172.       else if (length1 == 0) return; /* null array */
  2173.       else {
  2174.           if (ptr4 < ptr2) {
  2175. diff -C 3 Adaed-1.11.0a/intbprots.h Adaed1.11.0a-l/intbprots.h
  2176. *** Adaed-1.11.0a/intbprots.h    Fri Feb  7 20:20:22 1992
  2177. --- Adaed1.11.0a-l/intbprots.h    Mon Jun  8 22:20:42 1992
  2178. ***************
  2179. *** 12,18 ****
  2180.   void type_elaborate(int, int, int);
  2181.   void subprogram(int, int);
  2182.   int compute_offset(int, int, int, int, int *, int *);
  2183. ! void raise(int, char *);
  2184.   void create_structure();
  2185.   void create_copy_struc();
  2186.   void compare_struc();
  2187. --- 12,18 ----
  2188.   void type_elaborate(int, int, int);
  2189.   void subprogram(int, int);
  2190.   int compute_offset(int, int, int, int, int *, int *);
  2191. ! void Raise(int, char *); /* raise is already defined in libc.a on linux */
  2192.   void create_structure();
  2193.   void create_copy_struc();
  2194.   void compare_struc();
  2195. diff -C 3 Adaed-1.11.0a/intc.c Adaed1.11.0a-l/intc.c
  2196. *** Adaed-1.11.0a/intc.c    Fri Feb  7 20:19:10 1992
  2197. --- Adaed1.11.0a-l/intc.c    Mon Jun  8 22:30:23 1992
  2198. ***************
  2199. *** 108,114 ****
  2200.               else if (field < first_field  
  2201.                 ||(field > last_field && next_case == -1)) {
  2202.   
  2203. !                 raise(CONSTRAINT_ERROR, "Record component not present");
  2204.                   return;
  2205.               }
  2206.   
  2207. --- 108,114 ----
  2208.               else if (field < first_field  
  2209.                 ||(field > last_field && next_case == -1)) {
  2210.   
  2211. !                 Raise(CONSTRAINT_ERROR, "Record component not present");
  2212.                   return;
  2213.               }
  2214.   
  2215. ***************
  2216. *** 245,251 ****
  2217.           }
  2218.           else if (field < first_field 
  2219.               ||(field > last_field && next_case == -1)) {
  2220. !             raise(CONSTRAINT_ERROR, "Record component not present");
  2221.               return;
  2222.           }
  2223.   
  2224. --- 245,251 ----
  2225.           }
  2226.           else if (field < first_field 
  2227.               ||(field > last_field && next_case == -1)) {
  2228. !             Raise(CONSTRAINT_ERROR, "Record component not present");
  2229.               return;
  2230.           }
  2231.   
  2232. ***************
  2233. *** 428,434 ****
  2234.           i = nb_discr;
  2235.           while (i-- > 0) {
  2236.               if (*ptr_a++ != *ptr_v++) {
  2237. !                 raise(CONSTRAINT_ERROR, "Discriminant");
  2238.                   return;
  2239.               }
  2240.           }
  2241. --- 428,434 ----
  2242.           i = nb_discr;
  2243.           while (i-- > 0) {
  2244.               if (*ptr_a++ != *ptr_v++) {
  2245. !                 Raise(CONSTRAINT_ERROR, "Discriminant");
  2246.                   return;
  2247.               }
  2248.           }
  2249. ***************
  2250. *** 462,468 ****
  2251.               i = nb_discr;
  2252.               while(i-- > 0) {
  2253.                   if (*ptr_a++ != *ptr_v++) {
  2254. !                     raise(CONSTRAINT_ERROR, "Discriminant");
  2255.                       return;
  2256.                   }
  2257.               }
  2258. --- 462,468 ----
  2259.               i = nb_discr;
  2260.               while(i-- > 0) {
  2261.                   if (*ptr_a++ != *ptr_v++) {
  2262. !                     Raise(CONSTRAINT_ERROR, "Discriminant");
  2263.                       return;
  2264.                   }
  2265.               }
  2266. ***************
  2267. *** 485,491 ****
  2268.                   discr = *ptr_a++;
  2269.                   discr_list[i] = discr;
  2270.                   if (discr != *ptr_v++) 
  2271. !                 raise(CONSTRAINT_ERROR, "Discriminant");
  2272.                   return;
  2273.                   */
  2274.                   discr_list [i] = *ptr_v;
  2275. --- 485,491 ----
  2276.                   discr = *ptr_a++;
  2277.                   discr_list[i] = discr;
  2278.                   if (discr != *ptr_v++) 
  2279. !                 Raise(CONSTRAINT_ERROR, "Discriminant");
  2280.                   return;
  2281.                   */
  2282.                   discr_list [i] = *ptr_v;
  2283. ***************
  2284. *** 508,514 ****
  2285.                   discr = *ptr_a++;
  2286.                   discr_list[i] = discr;
  2287.                   if (discr != *ptr_v++) {
  2288. !                     raise(CONSTRAINT_ERROR, "Discriminant");
  2289.                       return;
  2290.                   }
  2291.               }
  2292. --- 508,514 ----
  2293.                   discr = *ptr_a++;
  2294.                   discr_list[i] = discr;
  2295.                   if (discr != *ptr_v++) {
  2296. !                     Raise(CONSTRAINT_ERROR, "Discriminant");
  2297.                       return;
  2298.                   }
  2299.               }
  2300. ***************
  2301. *** 647,653 ****
  2302.               return qual_index(type_ptr2, type_ptr1);
  2303.   
  2304.           else if (TYPE(type_ptr2) == TT_D_ARRAY) {
  2305. !             raise(SYSTEM_ERROR, "qual index on TT_D_ARRAY");
  2306.               return FALSE;
  2307.   #ifdef TBSN
  2308.               return qual_index(type_ptr2, type_ptr1);
  2309. --- 647,653 ----
  2310.               return qual_index(type_ptr2, type_ptr1);
  2311.   
  2312.           else if (TYPE(type_ptr2) == TT_D_ARRAY) {
  2313. !             Raise(SYSTEM_ERROR, "qual index on TT_D_ARRAY");
  2314.               return FALSE;
  2315.   #ifdef TBSN
  2316.               return qual_index(type_ptr2, type_ptr1);
  2317. ***************
  2318. *** 677,683 ****
  2319.               return qual_index(type_ptr2, type_ptr1);
  2320.       }
  2321.       else if (TYPE(type_ptr1) == TT_D_ARRAY) {
  2322. !         raise(SYSTEM_ERROR, "qual index on TT_D_ARRAY");
  2323.           return FALSE;
  2324.   #ifdef TBSN
  2325.           if (TYPE(type_ptr2) == TT_U_ARRAY || TYPE(type_ptr2) == TT_C_ARRAY) {
  2326. --- 677,683 ----
  2327.               return qual_index(type_ptr2, type_ptr1);
  2328.       }
  2329.       else if (TYPE(type_ptr1) == TT_D_ARRAY) {
  2330. !         Raise(SYSTEM_ERROR, "qual index on TT_D_ARRAY");
  2331.           return FALSE;
  2332.   #ifdef TBSN
  2333.           if (TYPE(type_ptr2) == TT_U_ARRAY || TYPE(type_ptr2) == TT_C_ARRAY) {
  2334. ***************
  2335. *** 816,822 ****
  2336.       off = TOS;
  2337.       bse = TOSM(1);
  2338.       if (TYPE(ptr) == TT_RECORD)
  2339. !         raise(SYSTEM_ERROR, "Qual discr on simple record");
  2340.       else if (TYPE(ptr) == TT_U_RECORD)
  2341.           return;            /* no constraint applied */
  2342.       else if (TYPE(ptr) == TT_C_RECORD) {
  2343. --- 816,822 ----
  2344.       off = TOS;
  2345.       bse = TOSM(1);
  2346.       if (TYPE(ptr) == TT_RECORD)
  2347. !         Raise(SYSTEM_ERROR, "Qual discr on simple record");
  2348.       else if (TYPE(ptr) == TT_U_RECORD)
  2349.           return;            /* no constraint applied */
  2350.       else if (TYPE(ptr) == TT_C_RECORD) {
  2351. ***************
  2352. *** 825,831 ****
  2353.           ptr += WORDS_C_RECORD + 1;
  2354.           while (nb_discr > 0) {
  2355.               if (*ptr++ != *ptr1++) {
  2356. !                 raise(CONSTRAINT_ERROR, "Discriminant");
  2357.                   return;
  2358.               }
  2359.               nb_discr--;
  2360. --- 825,831 ----
  2361.           ptr += WORDS_C_RECORD + 1;
  2362.           while (nb_discr > 0) {
  2363.               if (*ptr++ != *ptr1++) {
  2364. !                 Raise(CONSTRAINT_ERROR, "Discriminant");
  2365.                   return;
  2366.               }
  2367.               nb_discr--;
  2368. ***************
  2369. *** 832,838 ****
  2370.           }
  2371.       }
  2372.       else if (TYPE(ptr) == TT_D_RECORD) {
  2373. !         raise(SYSTEM_ERROR, "Qual discr on TT_D_RECORD");
  2374.           return;
  2375.   #ifdef TBSN
  2376.           nb_discr = C_RECORD(ptr)->nb_discr_c - 1;
  2377. --- 832,838 ----
  2378.           }
  2379.       }
  2380.       else if (TYPE(ptr) == TT_D_RECORD) {
  2381. !         Raise(SYSTEM_ERROR, "Qual discr on TT_D_RECORD");
  2382.           return;
  2383.   #ifdef TBSN
  2384.           nb_discr = C_RECORD(ptr)->nb_discr_c - 1;
  2385. ***************
  2386. *** 840,846 ****
  2387.           ptr += WORDS_C_RECORD + 3;
  2388.           while (nb_discr > 0) {
  2389.               if (*ptr++ != *ptr1++) {
  2390. !                 raise(CONSTRAINT_ERROR, "Discriminant");
  2391.                   return;
  2392.               }
  2393.               ptr++;
  2394. --- 840,846 ----
  2395.           ptr += WORDS_C_RECORD + 3;
  2396.           while (nb_discr > 0) {
  2397.               if (*ptr++ != *ptr1++) {
  2398. !                 Raise(CONSTRAINT_ERROR, "Discriminant");
  2399.                   return;
  2400.               }
  2401.               ptr++;
  2402. ***************
  2403. *** 849,855 ****
  2404.   #endif
  2405.       }
  2406.       else
  2407. !         raise(SYSTEM_ERROR, "Unknown record type in qual discr");
  2408.   }
  2409.   
  2410.   void allocate_new()                                            /*;allocate_new*/
  2411. --- 849,855 ----
  2412.   #endif
  2413.       }
  2414.       else
  2415. !         Raise(SYSTEM_ERROR, "Unknown record type in qual discr");
  2416.   }
  2417.   
  2418.   void allocate_new()                                            /*;allocate_new*/
  2419. ***************
  2420. *** 864,870 ****
  2421.          ACCESS(ptr1)->collection_avail = ACCESS(ptr1)->collection_avail - value;
  2422.       } 
  2423.       else {
  2424. !         raise(STORAGE_ERROR, "collection exhausted");
  2425.           return;
  2426.       }
  2427.       allocate(value, &bas2, &off2, &ptr2);
  2428. --- 864,870 ----
  2429.          ACCESS(ptr1)->collection_avail = ACCESS(ptr1)->collection_avail - value;
  2430.       } 
  2431.       else {
  2432. !         Raise(STORAGE_ERROR, "collection exhausted");
  2433.           return;
  2434.       }
  2435.       allocate(value, &bas2, &off2, &ptr2);
  2436. ***************
  2437. *** 907,913 ****
  2438.   
  2439.       case TT_U_RECORD:
  2440.       case TT_V_RECORD:
  2441. !         raise(SYSTEM_ERROR, "Allocate unconstrained record");
  2442.           break;
  2443.   
  2444.       default:
  2445. --- 907,913 ----
  2446.   
  2447.       case TT_U_RECORD:
  2448.       case TT_V_RECORD:
  2449. !         Raise(SYSTEM_ERROR, "Allocate unconstrained record");
  2450.           break;
  2451.   
  2452.       default:
  2453. ***************
  2454. *** 927,933 ****
  2455.          ACCESS(ptr4)->collection_avail = ACCESS(ptr4)->collection_avail - value;
  2456.       } 
  2457.       else {
  2458. !         raise(STORAGE_ERROR, "collection exhausted");
  2459.           return;
  2460.       }
  2461.       allocate(value, &bas1, &off1, &ptr1);
  2462. --- 927,933 ----
  2463.          ACCESS(ptr4)->collection_avail = ACCESS(ptr4)->collection_avail - value;
  2464.       } 
  2465.       else {
  2466. !         Raise(STORAGE_ERROR, "collection exhausted");
  2467.           return;
  2468.       }
  2469.       allocate(value, &bas1, &off1, &ptr1);
  2470. ***************
  2471. *** 1043,1049 ****
  2472.       int *p;
  2473.   
  2474.       if (size < 0 || size >max_mem) {
  2475. !         raise(SYSTEM_ERROR, "Ridiculous size for object creation");
  2476.           *ptr = heap_addr + WORDS_PTR + 1;
  2477.           *off = *ptr - heap_addr;
  2478.           *bse = heap_base;
  2479. --- 1043,1049 ----
  2480.       int *p;
  2481.   
  2482.       if (size < 0 || size >max_mem) {
  2483. !         Raise(SYSTEM_ERROR, "Ridiculous size for object creation");
  2484.           *ptr = heap_addr + WORDS_PTR + 1;
  2485.           *off = *ptr - heap_addr;
  2486.           *bse = heap_base;
  2487. ***************
  2488. *** 1052,1058 ****
  2489.       size += 1 + WORDS_PTR;
  2490.       if (heap_next > heap_addr + max_mem - size) {
  2491.           if(!allocate_new_heap()) {
  2492. !             raise(STORAGE_ERROR, "Object creation");
  2493.               *ptr = heap_addr + WORDS_PTR + 1;
  2494.               *off = *ptr - heap_addr;
  2495.               *bse = heap_base;
  2496. --- 1052,1058 ----
  2497.       size += 1 + WORDS_PTR;
  2498.       if (heap_next > heap_addr + max_mem - size) {
  2499.           if(!allocate_new_heap()) {
  2500. !             Raise(STORAGE_ERROR, "Object creation");
  2501.               *ptr = heap_addr + WORDS_PTR + 1;
  2502.               *off = *ptr - heap_addr;
  2503.               *bse = heap_base;
  2504. ***************
  2505. *** 1114,1120 ****
  2506.       int *p;
  2507.   
  2508.       if (size < 0) {
  2509. !         raise(SYSTEM_ERROR, "Ridiculous size for object allocation");
  2510.           *ptr = heap_addr + WORDS_PTR + 1;
  2511.           *off = *ptr - heap_addr;
  2512.           *bse = heap_base;
  2513. --- 1114,1120 ----
  2514.       int *p;
  2515.   
  2516.       if (size < 0) {
  2517. !         Raise(SYSTEM_ERROR, "Ridiculous size for object allocation");
  2518.           *ptr = heap_addr + WORDS_PTR + 1;
  2519.           *off = *ptr - heap_addr;
  2520.           *bse = heap_base;
  2521. ***************
  2522. *** 1123,1129 ****
  2523.       size += 1 + WORDS_PTR;
  2524.       if (heap_next > heap_addr + max_mem - size) {
  2525.           if(!allocate_new_heap()) {
  2526. !             raise(STORAGE_ERROR, "Allocator");
  2527.               *ptr = heap_addr + WORDS_PTR + 1;
  2528.               *off = *ptr - heap_addr;
  2529.               *bse = heap_base;
  2530. --- 1123,1129 ----
  2531.       size += 1 + WORDS_PTR;
  2532.       if (heap_next > heap_addr + max_mem - size) {
  2533.           if(!allocate_new_heap()) {
  2534. !             Raise(STORAGE_ERROR, "Allocator");
  2535.               *ptr = heap_addr + WORDS_PTR + 1;
  2536.               *off = *ptr - heap_addr;
  2537.               *bse = heap_base;
  2538. ***************
  2539. *** 1178,1184 ****
  2540.   void push_task_frame(int first)                            /*;push_task_frame*/
  2541.   {
  2542.       if (heap_next > heap_addr + max_mem - 4 - 2*WORDS_PTR)
  2543. !         raise(STORAGE_ERROR, "Tasking");
  2544.       else {
  2545.           *heap_next++ = 4 + WORDS_PTR;
  2546.           *(int **)(heap_next) = BLOCK_FRAME->bf_tasks_declared;
  2547. --- 1178,1184 ----
  2548.   void push_task_frame(int first)                            /*;push_task_frame*/
  2549.   {
  2550.       if (heap_next > heap_addr + max_mem - 4 - 2*WORDS_PTR)
  2551. !         Raise(STORAGE_ERROR, "Tasking");
  2552.       else {
  2553.           *heap_next++ = 4 + WORDS_PTR;
  2554.           *(int **)(heap_next) = BLOCK_FRAME->bf_tasks_declared;
  2555. ***************
  2556. *** 1265,1271 ****
  2557.               type_discr = ADDR (*(field_ptr+1), *(field_ptr+2));
  2558.               if ( I_RANGE(type_discr)->ilow > new_discr_list [i]
  2559.                 || I_RANGE(type_discr)->ihigh < new_discr_list [i]) {
  2560. !                 raise (CONSTRAINT_ERROR, "Discr. does not hold in bounds");
  2561.               }
  2562.               field_ptr += 3;
  2563.               discr_ptr += 2;
  2564. --- 1265,1271 ----
  2565.               type_discr = ADDR (*(field_ptr+1), *(field_ptr+2));
  2566.               if ( I_RANGE(type_discr)->ilow > new_discr_list [i]
  2567.                 || I_RANGE(type_discr)->ihigh < new_discr_list [i]) {
  2568. !                 Raise (CONSTRAINT_ERROR, "Discr. does not hold in bounds");
  2569.               }
  2570.               field_ptr += 3;
  2571.               discr_ptr += 2;
  2572. ***************
  2573. *** 1305,1311 ****
  2574.               ptr1 = ADDR(bas1, off1);
  2575.               if ((low <= high) && (I_RANGE(ptr1)->ilow > low
  2576.                 || I_RANGE(ptr1)->ihigh < high)) {
  2577. !                 raise (CONSTRAINT_ERROR,
  2578.                     "Array with discr. does not hold in bounds");
  2579.               }
  2580.           }
  2581. --- 1305,1311 ----
  2582.               ptr1 = ADDR(bas1, off1);
  2583.               if ((low <= high) && (I_RANGE(ptr1)->ilow > low
  2584.                 || I_RANGE(ptr1)->ihigh < high)) {
  2585. !                 Raise (CONSTRAINT_ERROR,
  2586.                     "Array with discr. does not hold in bounds");
  2587.               }
  2588.           }
  2589. ***************
  2590. *** 1320,1326 ****
  2591.               type_discr = ADDR (*(field_ptr+1), *(field_ptr+2));
  2592.               if ( I_RANGE(type_discr)->ilow > new_discr_list [i]
  2593.                 || I_RANGE(type_discr)->ihigh < new_discr_list [i]) {
  2594. !                 raise (CONSTRAINT_ERROR, "Discr. does not hold in bounds");
  2595.               }
  2596.               field_ptr += 3;
  2597.           }
  2598. --- 1320,1326 ----
  2599.               type_discr = ADDR (*(field_ptr+1), *(field_ptr+2));
  2600.               if ( I_RANGE(type_discr)->ilow > new_discr_list [i]
  2601.                 || I_RANGE(type_discr)->ihigh < new_discr_list [i]) {
  2602. !                 Raise (CONSTRAINT_ERROR, "Discr. does not hold in bounds");
  2603.               }
  2604.               field_ptr += 3;
  2605.           }
  2606. diff -C 3 Adaed-1.11.0a/predef.ada Adaed1.11.0a-l/predef.ada
  2607. *** Adaed-1.11.0a/predef.ada    Fri Feb  7 20:17:50 1992
  2608. --- Adaed1.11.0a-l/predef.ada    Thu Jun 25 22:31:05 1992
  2609. ***************
  2610. *** 47,55 ****
  2611.   package SYSTEM is
  2612.   
  2613.      type NAME    is (ELXSI_BSD, ELXSI_ENIX, PC_DOS, 
  2614. !              SUN_UNIX, VAX_UNIX, VAX_VMS) ; 
  2615.   
  2616. !    SYSTEM_NAME  : constant NAME := SUN_UNIX;
  2617.      STORAGE_UNIT : constant      := 32;
  2618.      MEMORY_SIZE  : constant      := 2**16 - 1;
  2619.   
  2620. --- 47,55 ----
  2621.   package SYSTEM is
  2622.   
  2623.      type NAME    is (ELXSI_BSD, ELXSI_ENIX, PC_DOS, 
  2624. !              SUN_UNIX, VAX_UNIX, VAX_VMS, LINUX) ; 
  2625.   
  2626. !    SYSTEM_NAME  : constant NAME := LINUX;
  2627.      STORAGE_UNIT : constant      := 32;
  2628.      MEMORY_SIZE  : constant      := 2**16 - 1;
  2629.   
  2630. diff -C 3 Adaed-1.11.0a/predef1.c Adaed1.11.0a-l/predef1.c
  2631. *** Adaed-1.11.0a/predef1.c    Fri Feb  7 20:19:28 1992
  2632. --- Adaed1.11.0a-l/predef1.c    Mon Jun  8 22:31:44 1992
  2633. ***************
  2634. *** 1788,1794 ****
  2635.   
  2636.   void predef_raise(int exception, char *msg)            /*;predef_raise*/
  2637.   {
  2638. !     raise(exception, msg);
  2639.       longjmp(raise_env, 1);
  2640.   }
  2641.   
  2642. --- 1788,1794 ----
  2643.   
  2644.   void predef_raise(int exception, char *msg)            /*;predef_raise*/
  2645.   {
  2646. !     Raise(exception, msg);
  2647.       longjmp(raise_env, 1);
  2648.   }
  2649.   
  2650. diff -C 3 Adaed-1.11.0a/predef2.c Adaed1.11.0a-l/predef2.c
  2651. *** Adaed-1.11.0a/predef2.c    Fri Feb  7 20:19:28 1992
  2652. --- Adaed1.11.0a-l/predef2.c    Mon Jun  8 22:32:25 1992
  2653. ***************
  2654. *** 176,187 ****
  2655.   
  2656.               if ((year % 4) == 0 && month == 2) {
  2657.                   if (day > 29) { /* check leap year */
  2658. !                     raise(TIME_ERROR, "Day too large");
  2659.                       return;
  2660.                   }
  2661.               }
  2662.               else if (day > days_in_month[month]) {
  2663. !                 raise(TIME_ERROR, "Day too large");
  2664.                   return;
  2665.               }
  2666.               if (secs >= ONE_DAY) {
  2667. --- 176,187 ----
  2668.   
  2669.               if ((year % 4) == 0 && month == 2) {
  2670.                   if (day > 29) { /* check leap year */
  2671. !                     Raise(TIME_ERROR, "Day too large");
  2672.                       return;
  2673.                   }
  2674.               }
  2675.               else if (day > days_in_month[month]) {
  2676. !                 Raise(TIME_ERROR, "Day too large");
  2677.                   return;
  2678.               }
  2679.               if (secs >= ONE_DAY) {
  2680. ***************
  2681. *** 189,195 ****
  2682.                   days = days_in(year, month, day + 1);
  2683.                   ymd_of(days, &year, &month, &day);
  2684.                   if (year < 1901 || year > 2099) {
  2685. !                     raise(TIME_ERROR, "Year out of range");
  2686.                       return;
  2687.                   }
  2688.               }
  2689. --- 189,195 ----
  2690.                   days = days_in(year, month, day + 1);
  2691.                   ymd_of(days, &year, &month, &day);
  2692.                   if (year < 1901 || year > 2099) {
  2693. !                     Raise(TIME_ERROR, "Year out of range");
  2694.                       return;
  2695.                   }
  2696.               }
  2697. ***************
  2698. *** 248,259 ****
  2699.   
  2700.               days = days_in(year, month, day);
  2701.               if (days <= 0) {
  2702. !                 raise(TIME_ERROR, "Year out of range");
  2703.                   return;
  2704.               }
  2705.               ymd_of(days, &year, &month, &day);
  2706.               if (year < 1901 || year > 2099) {
  2707. !                 raise(TIME_ERROR, "Year out of range");
  2708.                   return;
  2709.               }
  2710.               create(WORDS_TIME_RECORD, &bse, &off,(int **)(&time_ptr));
  2711. --- 248,259 ----
  2712.   
  2713.               days = days_in(year, month, day);
  2714.               if (days <= 0) {
  2715. !                 Raise(TIME_ERROR, "Year out of range");
  2716.                   return;
  2717.               }
  2718.               ymd_of(days, &year, &month, &day);
  2719.               if (year < 1901 || year > 2099) {
  2720. !                 Raise(TIME_ERROR, "Year out of range");
  2721.                   return;
  2722.               }
  2723.               create(WORDS_TIME_RECORD, &bse, &off,(int **)(&time_ptr));
  2724. ***************
  2725. *** 303,309 ****
  2726.               dur = ONE_DAY * days + secs;
  2727.   
  2728.               if (fix_out_of_bounds(dur, (int *)FX_RANGE(dur_tt_ptr)))
  2729. !                 raise(TIME_ERROR, "Out of range");
  2730.               else {
  2731.                   /* direct code needed since TOSML macro wrong */
  2732.                   /* pop arguments, store long and restore args */
  2733. --- 303,309 ----
  2734.               dur = ONE_DAY * days + secs;
  2735.   
  2736.               if (fix_out_of_bounds(dur, (int *)FX_RANGE(dur_tt_ptr)))
  2737. !                 Raise(TIME_ERROR, "Out of range");
  2738.               else {
  2739.                   /* direct code needed since TOSML macro wrong */
  2740.                   /* pop arguments, store long and restore args */
  2741. diff -C 3 Adaed-1.11.0a/tasking.c Adaed1.11.0a-l/tasking.c
  2742. *** Adaed-1.11.0a/tasking.c    Fri Feb  7 20:19:49 1992
  2743. --- Adaed1.11.0a-l/tasking.c    Mon Jun  8 22:34:03 1992
  2744. ***************
  2745. *** 279,290 ****
  2746.   
  2747.       rts = (struct rts_item *) malloc(sizeof(struct rts_item));
  2748.       if (rts == (struct rts_item *)0) {
  2749. !         raise(STORAGE_ERROR, "Allocating space for task");
  2750.           return;
  2751.       }
  2752.       rts->tcbs = (int *) malloc((unsigned) sizeof(int)*mult);
  2753.       if (rts->tcbs == (int *)0) {
  2754. !         raise(STORAGE_ERROR, "Allocating space for task");
  2755.           return;
  2756.       }
  2757.       RTS_TYPE(rts) = CREATE;
  2758. --- 279,290 ----
  2759.   
  2760.       rts = (struct rts_item *) malloc(sizeof(struct rts_item));
  2761.       if (rts == (struct rts_item *)0) {
  2762. !         Raise(STORAGE_ERROR, "Allocating space for task");
  2763.           return;
  2764.       }
  2765.       rts->tcbs = (int *) malloc((unsigned) sizeof(int)*mult);
  2766.       if (rts->tcbs == (int *)0) {
  2767. !         Raise(STORAGE_ERROR, "Allocating space for task");
  2768.           return;
  2769.       }
  2770.       RTS_TYPE(rts) = CREATE;
  2771. ***************
  2772. *** 310,316 ****
  2773.   static void done_creation()                                    /*;done_creation*/
  2774.   {
  2775.       if (MY_EXCEPTION == STORAGE_ERROR) {
  2776. !         raise(STORAGE_ERROR, "Not enough space for new tasks");
  2777.           MY_EXCEPTION = 0;
  2778.       }
  2779.       if (MY_WHAT != NULL_TASK)         /* MY_WHAT is leader of RTS */
  2780. --- 310,316 ----
  2781.   static void done_creation()                                    /*;done_creation*/
  2782.   {
  2783.       if (MY_EXCEPTION == STORAGE_ERROR) {
  2784. !         Raise(STORAGE_ERROR, "Not enough space for new tasks");
  2785.           MY_EXCEPTION = 0;
  2786.       }
  2787.       if (MY_WHAT != NULL_TASK)         /* MY_WHAT is leader of RTS */
  2788. ***************
  2789. *** 480,490 ****
  2790.           return;
  2791.       }
  2792.       if (MY_EVENT == TASKERR_EVENT) {
  2793. !         raise(TASKING_ERROR, "Tasking error in activation");
  2794.           MY_EXCEPTION = 0;
  2795.       }
  2796.       else if (MY_EVENT == PROGERR_EVENT) {
  2797. !         raise(PROGRAM_ERROR, "Activating an unelaborated task");
  2798.           MY_EXCEPTION = 0;
  2799.       }
  2800.       MY_ACTION = NO_ACTION;
  2801. --- 480,490 ----
  2802.           return;
  2803.       }
  2804.       if (MY_EVENT == TASKERR_EVENT) {
  2805. !         Raise(TASKING_ERROR, "Tasking error in activation");
  2806.           MY_EXCEPTION = 0;
  2807.       }
  2808.       else if (MY_EVENT == PROGERR_EVENT) {
  2809. !         Raise(PROGRAM_ERROR, "Activating an unelaborated task");
  2810.           MY_EXCEPTION = 0;
  2811.       }
  2812.       MY_ACTION = NO_ACTION;
  2813. ***************
  2814. *** 711,717 ****
  2815.               make_ready(task, ABORT_EVENT);            
  2816.           break;
  2817.       default: 
  2818. !         raise(SYSTEM_ERROR, "Aborting task in unknown state");
  2819.           break;
  2820.       }
  2821.   }
  2822. --- 711,717 ----
  2823.               make_ready(task, ABORT_EVENT);            
  2824.           break;
  2825.       default: 
  2826. !         Raise(SYSTEM_ERROR, "Aborting task in unknown state");
  2827.           break;
  2828.       }
  2829.   }
  2830. ***************
  2831. *** 934,940 ****
  2832.       }
  2833.   }
  2834.   
  2835. ! /* Procedure to raise TASKING_ERROR in all tasks waiting for or engaged   */
  2836.   /* in a rendezvous with the currently active task                         */
  2837.   
  2838.   void purge_rdv(int curr)                                        /*;purge_rdv */
  2839. --- 934,940 ----
  2840.       }
  2841.   }
  2842.   
  2843. ! /* Procedure to Raise TASKING_ERROR in all tasks waiting for or engaged   */
  2844.   /* in a rendezvous with the currently active task                         */
  2845.   
  2846.   void purge_rdv(int curr)                                        /*;purge_rdv */
  2847. ***************
  2848. *** 1122,1128 ****
  2849.       if (TCB_IO_ITEM(task) == NULL) {
  2850.           new_item=(struct io_item_type *)malloc(sizeof(struct io_item_type));
  2851.           if (new_item == (struct io_item_type *)0) {
  2852. !             raise(STORAGE_ERROR, "Allocating space for timer chain");
  2853.               return(NULL);
  2854.           }
  2855.       }
  2856. --- 1122,1128 ----
  2857.       if (TCB_IO_ITEM(task) == NULL) {
  2858.           new_item=(struct io_item_type *)malloc(sizeof(struct io_item_type));
  2859.           if (new_item == (struct io_item_type *)0) {
  2860. !             Raise(STORAGE_ERROR, "Allocating space for timer chain");
  2861.               return(NULL);
  2862.           }
  2863.       }
  2864. ***************
  2865. *** 1214,1220 ****
  2866.           wake = -1; 
  2867.           break;       /* innner remove*/
  2868.       default :             
  2869. !         raise(SYSTEM_ERROR, "Unexpected event");
  2870.           break;
  2871.       }
  2872.       II_FLAG(item) = 0;
  2873. --- 1214,1220 ----
  2874.           wake = -1; 
  2875.           break;       /* innner remove*/
  2876.       default :             
  2877. !         Raise(SYSTEM_ERROR, "Unexpected event");
  2878.           break;
  2879.       }
  2880.       II_FLAG(item) = 0;
  2881. ***************
  2882. *** 1320,1326 ****
  2883.                           RTS_TEMPL_OFF(item),item,i); 
  2884.                       break;
  2885.                   default :
  2886. !                     raise(SYSTEM_ERROR, "Unexpected type"); 
  2887.                       break;
  2888.                   }
  2889.                   break;   /* out of for loop */
  2890. --- 1320,1326 ----
  2891.                           RTS_TEMPL_OFF(item),item,i); 
  2892.                       break;
  2893.                   default :
  2894. !                     Raise(SYSTEM_ERROR, "Unexpected type"); 
  2895.                       break;
  2896.                   }
  2897.                   break;   /* out of for loop */
  2898. ***************
  2899. *** 1332,1338 ****
  2900.       if (item == (struct rts_item *)0)
  2901.       { /* No active task was found, error condition */
  2902.           MY_STATUS = ACTIVE;
  2903. !         raise(SYSTEM_ERROR, "No activatable task");
  2904.           MY_EXCEPTION = 0;
  2905.           return;
  2906.       }
  2907. --- 1332,1338 ----
  2908.       if (item == (struct rts_item *)0)
  2909.       { /* No active task was found, error condition */
  2910.           MY_STATUS = ACTIVE;
  2911. !         Raise(SYSTEM_ERROR, "No activatable task");
  2912.           MY_EXCEPTION = 0;
  2913.           return;
  2914.       }
  2915. ***************
  2916. *** 1387,1393 ****
  2917.       case NO_ACTION       :                 
  2918.           break;
  2919.       default : 
  2920. !         raise(SYSTEM_ERROR, "Tasks awakened in an unknown state");
  2921.           MY_EXCEPTION = 0;                 
  2922.           break;
  2923.       }
  2924. --- 1387,1393 ----
  2925.       case NO_ACTION       :                 
  2926.           break;
  2927.       default : 
  2928. !         Raise(SYSTEM_ERROR, "Tasks awakened in an unknown state");
  2929.           MY_EXCEPTION = 0;                 
  2930.           break;
  2931.       }
  2932. ***************
  2933. *** 1402,1408 ****
  2934.                   sleep((unsigned)sleep_time);
  2935.           }
  2936.           else if ((MY_ACTION != DONE_CREATION) && (MY_ACTION != DONE_ACTIVATION))
  2937. !             raise(PROGRAM_ERROR, "System inactive(deadlock)");
  2938.       }
  2939.       MY_ACTION = NO_ACTION;
  2940.   }
  2941. --- 1402,1408 ----
  2942.                   sleep((unsigned)sleep_time);
  2943.           }
  2944.           else if ((MY_ACTION != DONE_CREATION) && (MY_ACTION != DONE_ACTIVATION))
  2945. !             Raise(PROGRAM_ERROR, "System inactive(deadlock)");
  2946.       }
  2947.       MY_ACTION = NO_ACTION;
  2948.   }
  2949. ***************
  2950. *** 1532,1538 ****
  2951.               if (guard == 1)
  2952.                   term_index = accept_index;
  2953.           }
  2954. !         else raise(SYSTEM_ERROR,
  2955.               "Unknown alternative in select statement");
  2956.       }
  2957.   
  2958. --- 1532,1538 ----
  2959.               if (guard == 1)
  2960.                   term_index = accept_index;
  2961.           }
  2962. !         else Raise(SYSTEM_ERROR,
  2963.               "Unknown alternative in select statement");
  2964.       }
  2965.   
  2966. ***************
  2967. *** 1584,1590 ****
  2968.        */
  2969.   
  2970.       if ((num_open_alts == 0) && (delay_index == -1) && (term_index == -1)){
  2971. !         raise(PROGRAM_ERROR, "No open alternatives in select");
  2972.           return;
  2973.       }
  2974.   
  2975. --- 1584,1590 ----
  2976.        */
  2977.   
  2978.       if ((num_open_alts == 0) && (delay_index == -1) && (term_index == -1)){
  2979. !         Raise(PROGRAM_ERROR, "No open alternatives in select");
  2980.           return;
  2981.       }
  2982.   
  2983. ***************
  2984. *** 1707,1713 ****
  2985.       }
  2986.   
  2987.       if ((num_alts != 0) && (accept_index == -1)) {
  2988. !         raise(SYSTEM_ERROR, "Nonexistant alternative selected");
  2989.           return;
  2990.       }
  2991.       close_guards(open_en, num_alts);
  2992. --- 1707,1713 ----
  2993.       }
  2994.   
  2995.       if ((num_alts != 0) && (accept_index == -1)) {
  2996. !         Raise(SYSTEM_ERROR, "Nonexistant alternative selected");
  2997.           return;
  2998.       }
  2999.       close_guards(open_en, num_alts);
  3000. ***************
  3001. *** 1725,1731 ****
  3002.           accept_rdv(MY_WHO,accept_index,num_alts); 
  3003.           break;
  3004.       default          : 
  3005. !         raise(SYSTEM_ERROR, 
  3006.               "Unexpected event in select/accept"); 
  3007.           break;
  3008.       }
  3009. --- 1725,1731 ----
  3010.           accept_rdv(MY_WHO,accept_index,num_alts); 
  3011.           break;
  3012.       default          : 
  3013. !         Raise(SYSTEM_ERROR, 
  3014.               "Unexpected event in select/accept"); 
  3015.           break;
  3016.       }
  3017. ***************
  3018. *** 1798,1804 ****
  3019.       family = TOSM(num_param + 1);
  3020.       owner  = TOSM(num_param + 2);
  3021.       if (owner != ORIG(owner) || STACK(owner) == (int *)0) {
  3022. !         raise(TASKING_ERROR, "Call to an entry in a terminated task");
  3023.           return;
  3024.       }
  3025.       entry_num = entry_number(owner, family, member);
  3026. --- 1798,1804 ----
  3027.       family = TOSM(num_param + 1);
  3028.       owner  = TOSM(num_param + 2);
  3029.       if (owner != ORIG(owner) || STACK(owner) == (int *)0) {
  3030. !         Raise(TASKING_ERROR, "Call to an entry in a terminated task");
  3031.           return;
  3032.       }
  3033.       entry_num = entry_number(owner, family, member);
  3034. ***************
  3035. *** 1812,1822 ****
  3036.       /* STEP 2: Perform some error detection */
  3037.   
  3038.       if (entry_num > TCB_NUM_ENTRIES(owner)) {
  3039. !         raise(SYSTEM_ERROR, "Nonexistant entry called");
  3040.           return;
  3041.       }
  3042.       if (TCB_STATUS(owner) == TERMINATED || TCB_ABNORMAL(owner)) {
  3043. !         raise(TASKING_ERROR, "Call to an entry of a terminated task");
  3044.           return;
  3045.       }
  3046.   
  3047. --- 1812,1822 ----
  3048.       /* STEP 2: Perform some error detection */
  3049.   
  3050.       if (entry_num > TCB_NUM_ENTRIES(owner)) {
  3051. !         Raise(SYSTEM_ERROR, "Nonexistant entry called");
  3052.           return;
  3053.       }
  3054.       if (TCB_STATUS(owner) == TERMINATED || TCB_ABNORMAL(owner)) {
  3055. !         Raise(TASKING_ERROR, "Call to an entry of a terminated task");
  3056.           return;
  3057.       }
  3058.   
  3059. ***************
  3060. *** 1900,1906 ****
  3061.       case ENDRDV_EVENT: 
  3062.           disable_io(&MY_IO_ITEM);
  3063.           if (MY_EXCEPTION)
  3064. !             raise(MY_EXCEPTION, "Exception propagated from called task");
  3065.           MY_EXCEPTION = 0;
  3066.           for (i = cur_stackptr - num_param - 3 + 1; i <= cur_stackptr; i++)
  3067.               cur_stack[i] = cur_stack[i+3];
  3068. --- 1900,1906 ----
  3069.       case ENDRDV_EVENT: 
  3070.           disable_io(&MY_IO_ITEM);
  3071.           if (MY_EXCEPTION)
  3072. !             Raise(MY_EXCEPTION, "Exception propagated from called task");
  3073.           MY_EXCEPTION = 0;
  3074.           for (i = cur_stackptr - num_param - 3 + 1; i <= cur_stackptr; i++)
  3075.               cur_stack[i] = cur_stack[i+3];
  3076. ***************
  3077. *** 1909,1919 ****
  3078.               PUSH(1); 
  3079.           break;
  3080.       case TASKERR_EVENT :
  3081. !         raise(TASKING_ERROR, "Entry call failed: called task terminated");
  3082.           MY_EXCEPTION = 0;             
  3083.           break;
  3084.       default    : 
  3085. !         raise(SYSTEM_ERROR, "Unexpected event in entry call");     
  3086.           break;
  3087.       }
  3088.       MY_STATUS = ACTIVE;
  3089. --- 1909,1919 ----
  3090.               PUSH(1); 
  3091.           break;
  3092.       case TASKERR_EVENT :
  3093. !         Raise(TASKING_ERROR, "Entry call failed: called task terminated");
  3094.           MY_EXCEPTION = 0;             
  3095.           break;
  3096.       default    : 
  3097. !         Raise(SYSTEM_ERROR, "Unexpected event in entry call");     
  3098.           break;
  3099.       }
  3100.       MY_STATUS = ACTIVE;
  3101. ***************
  3102. *** 1966,1972 ****
  3103.   
  3104.       item = (struct q_item*) malloc(sizeof(struct q_item));
  3105.       if (item == (struct q_item*)0) {
  3106. !         raise(STORAGE_ERROR, "Allocating space for entry queue");
  3107.           return;
  3108.       }
  3109.       ITEM_FLAG(item) = 1;
  3110. --- 1966,1972 ----
  3111.   
  3112.       item = (struct q_item*) malloc(sizeof(struct q_item));
  3113.       if (item == (struct q_item*)0) {
  3114. !         Raise(STORAGE_ERROR, "Allocating space for entry queue");
  3115.           return;
  3116.       }
  3117.       ITEM_FLAG(item) = 1;
  3118. ***************
  3119. *** 2170,2181 ****
  3120.   
  3121.       item = (struct rts_item *) malloc(sizeof(struct rts_item));
  3122.       if (item == (struct rts_item *)0){
  3123. !         raise(STORAGE_ERROR, "Allocating space for ready queue");
  3124.           return;
  3125.       }
  3126.       item->tcbs = (int *) malloc(sizeof(int));
  3127.       if (item->tcbs == (int *)0){
  3128. !         raise(STORAGE_ERROR, "Allocating space for ready queue");
  3129.           return;
  3130.       }
  3131.       RTS_TYPE(item) = READY;
  3132. --- 2170,2181 ----
  3133.   
  3134.       item = (struct rts_item *) malloc(sizeof(struct rts_item));
  3135.       if (item == (struct rts_item *)0){
  3136. !         Raise(STORAGE_ERROR, "Allocating space for ready queue");
  3137.           return;
  3138.       }
  3139.       item->tcbs = (int *) malloc(sizeof(int));
  3140.       if (item->tcbs == (int *)0){
  3141. !         Raise(STORAGE_ERROR, "Allocating space for ready queue");
  3142.           return;
  3143.       }
  3144.       RTS_TYPE(item) = READY;
  3145.