Zero is deleted as a possible argument to LOI and STI.
Allowing that was an oversight.
This commit is contained in:
parent
1f56b2aa4c
commit
6459b0bf5f
1 changed files with 5 additions and 6 deletions
|
@ -281,7 +281,7 @@ begin if (a<0) or (a>maxoffs)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function argo(a:double):size;
|
function argo(a:double):size;
|
||||||
begin if (a<0) or (a>maxoffs)
|
begin if (a<=0) or (a>maxoffs)
|
||||||
then trap(EODDZ)
|
then trap(EODDZ)
|
||||||
else if (a mod wsize<>0) and (wsize mod a<>0) then trap(EODDZ);
|
else if (a mod wsize<>0) and (wsize mod a<>0) then trap(EODDZ);
|
||||||
argo:=a ;
|
argo:=a ;
|
||||||
|
@ -683,7 +683,7 @@ begin
|
||||||
a:=argp(uerrorproc);
|
a:=argp(uerrorproc);
|
||||||
uerrorproc:=0; { reset signal }
|
uerrorproc:=0; { reset signal }
|
||||||
call(a); { call the routine }
|
call(a); { call the routine }
|
||||||
intrap:=false; { Don't catch recursive traps anymore }
|
intrap:=false; { Do not catch recursive traps anymore }
|
||||||
goto 8888; { reenter main loop }
|
goto 8888; { reenter main loop }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1149,7 +1149,7 @@ end;
|
||||||
jmp (r2) /done
|
jmp (r2) /done
|
||||||
|
|
||||||
The important thing to notice is where and how the operand fetch occurred:
|
The important thing to notice is where and how the operand fetch occurred:
|
||||||
lol2, lol4, and lol6, (the mini's) have implicit operands
|
lol2, lol4, and lol6, (the minis) have implicit operands
|
||||||
lolb knew it had to fetch one byte, and did so without any table lookup
|
lolb knew it had to fetch one byte, and did so without any table lookup
|
||||||
lolw knew it had to fetch a word, and did so, high order byte first }
|
lolw knew it had to fetch a word, and did so, high order byte first }
|
||||||
{
|
{
|
||||||
|
@ -1604,10 +1604,9 @@ begin
|
||||||
end;
|
end;
|
||||||
CSA: begin k:=argw(k); if k<>wsize then trap(EILLINS);
|
CSA: begin k:=argw(k); if k<>wsize then trap(EILLINS);
|
||||||
a:=popa;
|
a:=popa;
|
||||||
st:= popsw - signwd(memw(a+asize)); b:=0;
|
st:= popsw - signwd(memw(a+asize));
|
||||||
if (st>=0) and (st<=memw(a+wsize+asize)) then
|
if (st>=0) and (st<=memw(a+wsize+asize)) then
|
||||||
b:=mema(a+2*wsize+asize+asize*st);
|
b:=mema(a+2*wsize+asize+asize*st) else b:=mema(a);
|
||||||
if b=0 then b:=mema(a);
|
|
||||||
if b=0 then trap(ECASE) else newpc(b)
|
if b=0 then trap(ECASE) else newpc(b)
|
||||||
end;
|
end;
|
||||||
CSB: begin k:=argw(k); if k<>wsize then trap(EILLINS); a:=popa;
|
CSB: begin k:=argw(k); if k<>wsize then trap(EILLINS); a:=popa;
|
||||||
|
|
Loading…
Add table
Reference in a new issue