diff --git a/BF-RUN.COB b/BF-RUN.COB index 38cbf5b..71fe5e5 100644 --- a/BF-RUN.COB +++ b/BF-RUN.COB @@ -50,13 +50,13 @@ D 03 DEBUG-CYCLES PIC 9(5). LINKAGE SECTION. - 01 BF-I-O. - 03 BF-INPUT PIC X(999). - 03 BF-CODE PIC X(999). - 03 BF-OUTPUT PIC X(999). - 03 CYCLE-LIMIT PIC 9(8). + 01 BF-INPUT PIC X(999). + 01 BF-CODE PIC X(999). + 01 BF-OUTPUT PIC X(999). + 01 CYCLE-LIMIT PIC 9(8). - PROCEDURE DIVISION USING BF-I-O. + PROCEDURE DIVISION USING BF-INPUT, BF-CODE, + BF-OUTPUT, CYCLE-LIMIT. MOVE 1 TO IN-PTR. MOVE 1 TO IP. MOVE 0 TO CYCLES. diff --git a/WOPO.COB b/WOPO.COB index 6429129..98b96a5 100644 --- a/WOPO.COB +++ b/WOPO.COB @@ -57,6 +57,9 @@ 05 OUT-REG PIC 9. 05 INTERPRETER PIC X(5). 05 INSTRUCTION-CODE PIC X(992). + 05 VM-INSTRUCTION REDEFINES INSTRUCTION-CODE. + 07 CYCLE-LIMIT PIC 9(8). + 07 VM-CODE PIC X(984). 03 RAW-INSTRUCTION REDEFINES INSTRUCTION PIC X(999). 03 PREV-IP PIC 999. 03 NEXT-IP PIC 999. @@ -1084,8 +1087,9 @@ PERFORM INDEX-PARAMS IF NUM-PARAMS OF WOPO IS LESS THAN 2 THEN PERFORM BF-LIMIT-CYCLES - D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT - CALL "BF-RUN" USING BF-I-O + D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT OF BF-I-O + CALL "BF-RUN" USING BF-INPUT, BF-CODE, + BF-OUTPUT, CYCLE-LIMIT OF BF-I-O D DISPLAY "BF RAN" PERFORM HANDLE-BF-OUTPUT ELSE @@ -1097,24 +1101,24 @@ BF-LIMIT-CYCLES. IF NUM-PARAMS OF WOPO IS EQUAL TO 0 THEN - MOVE 999 TO CYCLE-LIMIT + MOVE 999 TO CYCLE-LIMIT OF BF-I-O ELSE MOVE 1 TO PTR(SRC) PERFORM GET-PARAM - MOVE R(1) TO CYCLE-LIMIT. - IF CYCLE-LIMIT > 250000 THEN + MOVE R(1) TO CYCLE-LIMIT OF BF-I-O. + IF CYCLE-LIMIT OF BF-I-O > 250000 THEN IF USER-LEVEL < 90 THEN IF USER-LEVEL < 70 THEN - MOVE 250000 TO CYCLE-LIMIT + MOVE 250000 TO CYCLE-LIMIT OF BF-I-O PERFORM BF-CYCLES-LIMITED - ELSE IF CYCLE-LIMIT > 1900000 THEN - MOVE 1900000 TO CYCLE-LIMIT + ELSE IF CYCLE-LIMIT OF BF-I-O > 1900000 THEN + MOVE 1900000 TO CYCLE-LIMIT OF BF-I-O PERFORM BF-CYCLES-LIMITED. BF-CYCLES-LIMITED. STRING "INSUFFICIENT LEVEL FOR REQUESTED CYCLE LIMIT. ", "ACTUAL LIMIT WILL BE ", - CYCLE-LIMIT, + CYCLE-LIMIT OF BF-I-O, "." INTO R(1). MOVE 1 TO SRC.