\\LDADDR 02.09.86 VERSION 22 (EXPR CH:? ? ERROR:?)->IF CALL ^1 ^2<> THEN RETURN ^3 LOCALS LSTACK PROGRAM TOSTAC() * INPUT: - VALUE TO WRITE INTO STACK * IF CALL WRITE #MIN2$#SP,0<> THEN CALL IT ,,'CHANER' **IF #SP<=&FF THEN #ITWORD=#ITWORD.IOR.'SL:BIT' RETURN , PROGRAM FROMST() * INPUT: NO * OUTPUT: CARRY -- FALSE --> ERROR * -- TRUE --> - VALUE * IF CALL READ #SP,0<> THEN CALL IT ,,'CHANER' ,,#SP=,,#SP+2 RETURN ,,0 LOCALS -LLOAD DATA P,L EQUALS PSTACK=6 DATA ARG BYTES NREG=0 PROGRAM LDADDR(#W4) * INPUT: - ARGUMENT OF COMMAND * OUTPUT: - ADDRESS OF VALUE * NREG:=.AND.&7<1 =#W4>3.AND.&7 (XCASE ^A OF 7 XCASE (RN) =#REG(NREG:) XCASE (RN)+ ARG=#REG(NREG:) $#REG()=((IF #TIPCOM<> AND NREG:<'PSTACK' THEN =1 ELSE =2)) =ARG XCASE @(RN)+ CH:READ #REG(NREG:),0 ERROR:, ,,#REG()=,,#REG(NREG:)+2 XCASE -(RN) IF #TIPCOM<> AND NREG:<'PSTACK' THEN =#MIN1 ELSE =#MIN2 $#REG(NREG:)= XCASE @-(RN) CH:READ #MIN2$#REG(NREG:),0 ERROR:, XCASE XXX(RN) CH:READ #PC,0 ERROR:, ,,#PC=,,#PC+2 =+#REG(NREG:) XCASE @XXX(RN) CH:READ #PC,0 ERROR:, ,,#PC=,,#PC+2 CH:READ +#REG(NREG:),0 ERROR:, XCASE) RETURN ,,0