changed trap messages somewhat, corrected bug in InOut, undone changes

to confarray.c
This commit is contained in:
ceriel 1987-11-02 11:22:06 +00:00
parent c41fae1f8a
commit b24e6763c3
3 changed files with 12 additions and 19 deletions

View file

@ -256,6 +256,8 @@ IMPLEMENTATION MODULE InOut ;
integ := int integ := int
END; END;
IF buf[index] > " " THEN IF buf[index] > " " THEN
Write(buf[index]);
Write(termCH);
Traps.Message("illegal integer"); Traps.Message("illegal integer");
HALT; HALT;
END; END;
@ -419,6 +421,7 @@ IMPLEMENTATION MODULE InOut ;
END WriteString; END WriteString;
BEGIN (* InOut initialization *) BEGIN (* InOut initialization *)
unread := FALSE;
WITH ibuf DO WITH ibuf DO
fildes := 0; fildes := 0;
bufferedcount := BUFSIZ; bufferedcount := BUFSIZ;

View file

@ -9,12 +9,12 @@ static struct errm {
{ ERANGE, "range bound error"}, { ERANGE, "range bound error"},
{ ESET, "set bound error"}, { ESET, "set bound error"},
{ EIOVFL, "integer overflow"}, { EIOVFL, "integer overflow"},
{ EFOVFL, "floating overflow"}, { EFOVFL, "real overflow"},
{ EFUNFL, "floating underflow"}, { EFUNFL, "real underflow"},
{ EIDIVZ, "divide by 0"}, { EIDIVZ, "divide by 0"},
{ EFDIVZ, "divide by 0.0"}, { EFDIVZ, "divide by 0.0"},
{ EIUND, "undefined integer"}, { EIUND, "undefined integer"},
{ EFUND, "undefined float"}, { EFUND, "undefined real"},
{ ECONV, "conversion error"}, { ECONV, "conversion error"},
{ ESTACK, "stack overflow"}, { ESTACK, "stack overflow"},

View file

@ -1,13 +1,5 @@
#include <m2_traps.h> #include <m2_traps.h>
/* Runtime handling of "value" conformant arrays.
The routine that accepts the conformant array parameter first calls
the routine new_stackptr. This routine computes a new stack pointer
for the calling routine and returns it. The new space on the stack is
large enough to store the array.
Then, it calls copy_array to do the copying.
*/
struct descr { struct descr {
char *addr; char *addr;
int low; int low;
@ -22,9 +14,6 @@ char *
_new_stackptr(pdescr, a) _new_stackptr(pdescr, a)
register struct descr *pdescr; register struct descr *pdescr;
{ {
/* The parameter "a" is not used and not supplied.
It's address is the old stack-pointer.
*/
unsigned int size = (((pdescr->highminlow + 1) * pdescr->size + unsigned int size = (((pdescr->highminlow + 1) * pdescr->size +
(EM_WSIZE - 1)) & ~(EM_WSIZE - 1)); (EM_WSIZE - 1)) & ~(EM_WSIZE - 1));
@ -41,19 +30,20 @@ _new_stackptr(pdescr, a)
} }
_copy_array(p, a) _copy_array(p, a)
register int *p; register char *p;
{ {
register int *q; register char *q;
register unsigned int sz; register unsigned int sz;
char dummy; char dummy;
ppdescr--; ppdescr--;
sz = (((*ppdescr)->highminlow + 1) * (*ppdescr)->size) / EM_WSIZE; sz = (((*ppdescr)->highminlow + 1) * (*ppdescr)->size +
(EM_WSIZE -1)) & ~ (EM_WSIZE - 1);
if ((char *) &a - (char *) &dummy > 0) { if ((char *) &a - (char *) &dummy > 0) {
(*ppdescr)->addr = (char *) (q = &a); (*ppdescr)->addr = q = (char *) &a;
} }
else (*ppdescr)->addr = (char *) (q = &a - sz); else (*ppdescr)->addr = q = (char *) &a - sz;
while (sz--) *q++ = *p++; while (sz--) *q++ = *p++;
} }