SUBROUTINE STEPPC C C PURPOSE: INCREMENTS PROGRAM COUNTER OF HP-67 EMULATOR PROGRAM C BY APPROPRIATE AMOUNT TO POSITION "PC" AT NEXT SEQUENTIAL C INSTRUCTION. MUST KNOW # PROGRAM STEPS NECESSARY FOR EACH FUNCTION. C SO, CURRENTLY HAVE FOLLOWING CONVENTION FOR VARIOUS COMMANDS: C C CODE #'S -128 TO 0 = 1 PROGRAM STEP C 1 TO 63 = 2 PROGRAM STEPS C 65 TO 119 = CURRENTLY UNASSIGNED C 120 = 9 PROGRAM STEPS C 122 TO 127 = VARIABLE # STEPS--P(PC+1) C HOLDS # BYTES IN STRING C C NOTE: TO INSERT NEW COMMANDS, MUST CODE THE COMMAND IN THE MASTER C COMMAND TABLE WHILE FOLLOWING THE ABOVE CONVENTION. IF THIS CONVENTION C IS NOT FOLLOWED, ADD THE APPROPRIATE FORTRAN STATEMENTS HERE TO C DEFINE # PROGRAM STEPS FOR THE NEW COMMAND. C C CURRENTLY HAVE THE CONSTRAINT THAT A 0=R/S COMMAND ALWAYS BE PRESENT C AT THE END OF THE PROGRAM, P(NSTEPS). THIS MAKES CHECKING COMMAND C INSERTIONS FOR INSUFFICIENT PROGRAM SPACE EASIER. C C VARIABLES: C P -COMMON BYTE ARRAY CONTAINING PROGRAM STEPS C PC -COMMON INTEGER VARIABLE POINTING TO CURRENT PROGRAM STEP C ERROR -COMMON BYTE FLAG FOR ERROR REPORTING C NSTEPS -LOCAL VARIABLE DEFINING CURRENT # PROGRAM STEPS C LASTPC -LOCAL VARIABLE SET TO CURRENT VALUE OF PC C C C SORENSON, 1/81 C COMMON/MEMORY/PC,P(1000) INTEGER PC BYTE P COMMON/FLAGS/STATE,ERROR,STKLFT,NEST,ANGLES,RADIX,DIGITS,FLAG(4) BYTE STATE,ERROR,STKLFT,NEST,ANGLES,RADIX,DIGITS,FLAG DATA NSTEPS/1000/ LASTPC=PC PC=LASTPC+1 IF(P(LASTPC).LE.0)GO TO 100 PC=LASTPC+2 IF(P(LASTPC).LE.63)GO TO 100 C C AT THIS POINT, MAY WANT TO INSERT CORRECT PC INCREMENTS FOR THE C CURRENTLY UNASSIGNED CODES (64-119) AS THEY GET ASSIGNED C IF(P(LASTPC).LE.119)GO TO 110 PC=LASTPC+9 IF(P(LASTPC).LE.121)GO TO 100 C C FOR REMAINING COMMANDS, P(LASTPC+1)=BYTE COUNT FOR REMAINDER OF C COMMAND; TOTAL # BYTES IN COMMAND = P(LASTPC+1)+2. C PC=LASTPC+2+P(LASTPC+1) C C FINISH UP-IF PC WENT BEYOND NSTEPS, RESET IT TO TOP OF MEMORY C 100 IF(PC.GT.NSTEPS)PC=1 RETURN C C IN EVENT OF SEEING AN UNASSIGNED CODE, SIGNAL ERROR C 110 ERROR=-2 RETURN END