SUBROUTINE INSERT C C PURPOSE: INSERTS A NOP (-2) INSTRUCTION INTO PROGRAM MEMORY, MOVING C REMAINING PROGRAM STEPS DOWN. NOTE: INSERT LEAVES PC POINTING AT C NOP COMMAND AND WILL CHECK TO MAKE SURE THAT INSERTION WILL NOT C REMOVE A FINAL R/S (0) COMMAND FROM LAST PROGRAM STEP, P(NSTEPS). C C VARIABLES: C P -COMMON BYTE ARRAY CONTAINING PROGRAM STEPS C PC -COMMON INTEGER VARIABLE POINTING TO CURRENT COMMAND C ERROR -COMMON BYTE FLAG TO INDICATE ERROR CONDITION C NSTEPS -LOCAL VARIABLE SET TO CURRENT # PROGRAM STEPS C NOP -LOCAL BYTE VARIABLE SET TO NOP COMMAND CODE (-2) C RS -LOCAL BYTE VARIABLE SET TO R/S COMMAND CODE (0) C C C C SORENSON, 1/81 C COMMON/FLAGS/STATE,ERROR,STKLFT,NEST,ANGLES,RADIX,DIGITS,FLAG(4) BYTE STATE,ERROR,STKLFT,NEST,ANGLES,RADIX,DIGITS,FLAG COMMON/MEMORY/PC,P(1000) BYTE P INTEGER PC BYTE NOP,RS DATA NSTEPS/1000/,NOP/-2/,RS/0/ C C CHECK TO MAKE SURE R/S INSTRUCTION WILL STILL BE IN LAST PROGRAM STEP C IF(P(NSTEPS-1).EQ.RS)GO TO 5 C C FLAG ERROR= INSUFFICIENT PROGRAM SPACE C ERROR=-1 RETURN C C MOVE ALL PROGRAM STEPS DOWN BY 1 LOCATION C 5 J=NSTEPS DO 10 I=PC,NSTEPS-1 P(J)=P(J-1) J=J-1 10 CONTINUE C C SET CURRENT PROGRAM STEP TO NOP INSTRUCTION AND EXIT C P(PC)=NOP RETURN END