Change BF interpreter calling convention, add VM-INSTRUCTION format.
This commit is contained in:
parent
28a92f27a8
commit
7d74d7e877
12
BF-RUN.COB
12
BF-RUN.COB
|
@ -50,13 +50,13 @@
|
||||||
D 03 DEBUG-CYCLES PIC 9(5).
|
D 03 DEBUG-CYCLES PIC 9(5).
|
||||||
|
|
||||||
LINKAGE SECTION.
|
LINKAGE SECTION.
|
||||||
01 BF-I-O.
|
01 BF-INPUT PIC X(999).
|
||||||
03 BF-INPUT PIC X(999).
|
01 BF-CODE PIC X(999).
|
||||||
03 BF-CODE PIC X(999).
|
01 BF-OUTPUT PIC X(999).
|
||||||
03 BF-OUTPUT PIC X(999).
|
01 CYCLE-LIMIT PIC 9(8).
|
||||||
03 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 IN-PTR.
|
||||||
MOVE 1 TO IP.
|
MOVE 1 TO IP.
|
||||||
MOVE 0 TO CYCLES.
|
MOVE 0 TO CYCLES.
|
||||||
|
|
22
WOPO.COB
22
WOPO.COB
|
@ -57,6 +57,9 @@
|
||||||
05 OUT-REG PIC 9.
|
05 OUT-REG PIC 9.
|
||||||
05 INTERPRETER PIC X(5).
|
05 INTERPRETER PIC X(5).
|
||||||
05 INSTRUCTION-CODE PIC X(992).
|
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 RAW-INSTRUCTION REDEFINES INSTRUCTION PIC X(999).
|
||||||
03 PREV-IP PIC 999.
|
03 PREV-IP PIC 999.
|
||||||
03 NEXT-IP PIC 999.
|
03 NEXT-IP PIC 999.
|
||||||
|
@ -1084,8 +1087,9 @@
|
||||||
PERFORM INDEX-PARAMS
|
PERFORM INDEX-PARAMS
|
||||||
IF NUM-PARAMS OF WOPO IS LESS THAN 2 THEN
|
IF NUM-PARAMS OF WOPO IS LESS THAN 2 THEN
|
||||||
PERFORM BF-LIMIT-CYCLES
|
PERFORM BF-LIMIT-CYCLES
|
||||||
D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT
|
D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT OF BF-I-O
|
||||||
CALL "BF-RUN" USING BF-I-O
|
CALL "BF-RUN" USING BF-INPUT, BF-CODE,
|
||||||
|
BF-OUTPUT, CYCLE-LIMIT OF BF-I-O
|
||||||
D DISPLAY "BF RAN"
|
D DISPLAY "BF RAN"
|
||||||
PERFORM HANDLE-BF-OUTPUT
|
PERFORM HANDLE-BF-OUTPUT
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -1097,24 +1101,24 @@
|
||||||
|
|
||||||
BF-LIMIT-CYCLES.
|
BF-LIMIT-CYCLES.
|
||||||
IF NUM-PARAMS OF WOPO IS EQUAL TO 0 THEN
|
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
|
ELSE
|
||||||
MOVE 1 TO PTR(SRC)
|
MOVE 1 TO PTR(SRC)
|
||||||
PERFORM GET-PARAM
|
PERFORM GET-PARAM
|
||||||
MOVE R(1) TO CYCLE-LIMIT.
|
MOVE R(1) TO CYCLE-LIMIT OF BF-I-O.
|
||||||
IF CYCLE-LIMIT > 250000 THEN
|
IF CYCLE-LIMIT OF BF-I-O > 250000 THEN
|
||||||
IF USER-LEVEL < 90 THEN
|
IF USER-LEVEL < 90 THEN
|
||||||
IF USER-LEVEL < 70 THEN
|
IF USER-LEVEL < 70 THEN
|
||||||
MOVE 250000 TO CYCLE-LIMIT
|
MOVE 250000 TO CYCLE-LIMIT OF BF-I-O
|
||||||
PERFORM BF-CYCLES-LIMITED
|
PERFORM BF-CYCLES-LIMITED
|
||||||
ELSE IF CYCLE-LIMIT > 1900000 THEN
|
ELSE IF CYCLE-LIMIT OF BF-I-O > 1900000 THEN
|
||||||
MOVE 1900000 TO CYCLE-LIMIT
|
MOVE 1900000 TO CYCLE-LIMIT OF BF-I-O
|
||||||
PERFORM BF-CYCLES-LIMITED.
|
PERFORM BF-CYCLES-LIMITED.
|
||||||
|
|
||||||
BF-CYCLES-LIMITED.
|
BF-CYCLES-LIMITED.
|
||||||
STRING "INSUFFICIENT LEVEL FOR REQUESTED CYCLE LIMIT. ",
|
STRING "INSUFFICIENT LEVEL FOR REQUESTED CYCLE LIMIT. ",
|
||||||
"ACTUAL LIMIT WILL BE ",
|
"ACTUAL LIMIT WILL BE ",
|
||||||
CYCLE-LIMIT,
|
CYCLE-LIMIT OF BF-I-O,
|
||||||
"."
|
"."
|
||||||
INTO R(1).
|
INTO R(1).
|
||||||
MOVE 1 TO SRC.
|
MOVE 1 TO SRC.
|
||||||
|
|
Loading…
Reference in New Issue