Commit | Line | Data |
---|---|---|
11f94d2e JM |
1 | GOTO MAIN |
2 | ||
3 | REM $INCLUDE: 'readline.in.bas' | |
4 | REM $INCLUDE: 'types.in.bas' | |
5 | REM $INCLUDE: 'reader.in.bas' | |
6 | REM $INCLUDE: 'printer.in.bas' | |
7 | ||
9e8f5211 JM |
8 | REM $INCLUDE: 'debug.in.bas' |
9 | ||
cc9dbd92 | 10 | REM READ(A$) -> R |
11f94d2e JM |
11 | MAL_READ: |
12 | GOSUB READ_STR | |
13 | RETURN | |
14 | ||
cc9dbd92 | 15 | REM EVAL(A, E) -> R |
af621e3a | 16 | SUB EVAL |
cc9dbd92 | 17 | R=A |
af621e3a | 18 | END SUB |
11f94d2e | 19 | |
cc9dbd92 | 20 | REM PRINT(A) -> R$ |
11f94d2e | 21 | MAL_PRINT: |
cc9dbd92 | 22 | AZ=A:PR=1:GOSUB PR_STR |
11f94d2e JM |
23 | RETURN |
24 | ||
b7b1787f | 25 | REM REP(A$) -> R$ |
af621e3a | 26 | SUB REP |
11f94d2e | 27 | GOSUB MAL_READ |
cc9dbd92 | 28 | IF ER<>-2 THEN GOTO REP_DONE |
85d70fb7 | 29 | |
af621e3a | 30 | A=R:CALL EVAL |
cc9dbd92 | 31 | IF ER<>-2 THEN GOTO REP_DONE |
4b84a23b | 32 | |
cc9dbd92 | 33 | A=R:GOSUB MAL_PRINT |
85d70fb7 | 34 | RT$=R$ |
4b84a23b | 35 | |
85d70fb7 JM |
36 | REP_DONE: |
37 | REM Release memory from EVAL | |
cc9dbd92 | 38 | AY=R:GOSUB RELEASE |
85d70fb7 | 39 | R$=RT$ |
af621e3a | 40 | END SUB |
11f94d2e | 41 | |
b7b1787f | 42 | REM MAIN program |
11f94d2e JM |
43 | MAIN: |
44 | GOSUB INIT_MEMORY | |
b7b1787f | 45 | |
bbab5c5d | 46 | ZT=ZI: REM top of memory after base repl_env |
4b84a23b | 47 | |
85d70fb7 | 48 | REPL_LOOP: |
60ef223c | 49 | A$="user> ":GOSUB READLINE: REM call input parser |
85d70fb7 JM |
50 | IF EOF=1 THEN GOTO QUIT |
51 | ||
af621e3a | 52 | A$=R$:CALL REP: REM call REP |
11f94d2e | 53 | |
cc9dbd92 | 54 | IF ER<>-2 THEN GOSUB PRINT_ERROR:GOTO REPL_LOOP |
85d70fb7 JM |
55 | PRINT R$ |
56 | GOTO REPL_LOOP | |
11f94d2e | 57 | |
85d70fb7 | 58 | QUIT: |
4e7d8a1b | 59 | REM GOSUB PR_MEMORY_SUMMARY |
b7b1787f JM |
60 | END |
61 | ||
85d70fb7 | 62 | PRINT_ERROR: |
bf8d1f7d | 63 | PRINT "Error: "+ER$ |
cc9dbd92 | 64 | ER=-2:ER$="" |
85d70fb7 JM |
65 | RETURN |
66 |