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 | ||
b7b1787f | 8 | REM READ(A$) -> R% |
11f94d2e JM |
9 | MAL_READ: |
10 | GOSUB READ_STR | |
11 | RETURN | |
12 | ||
b7b1787f | 13 | REM EVAL(A%, E%) -> R% |
11f94d2e JM |
14 | EVAL: |
15 | R%=A% | |
16 | RETURN | |
17 | ||
b7b1787f | 18 | REM PRINT(A%) -> R$ |
11f94d2e | 19 | MAL_PRINT: |
241d5d57 | 20 | AZ%=A%: PR%=1: GOSUB PR_STR |
11f94d2e JM |
21 | RETURN |
22 | ||
b7b1787f | 23 | REM REP(A$) -> R$ |
11f94d2e JM |
24 | REP: |
25 | GOSUB MAL_READ | |
26 | IF ER% THEN RETURN | |
b7b1787f | 27 | A%=R%: GOSUB EVAL |
11f94d2e | 28 | IF ER% THEN RETURN |
b7b1787f | 29 | A%=R%: GOSUB MAL_PRINT |
4b84a23b JM |
30 | |
31 | REM Release memory from EVAL | |
32 | AY%=R%: GOSUB RELEASE | |
33 | ||
11f94d2e JM |
34 | RETURN |
35 | ||
b7b1787f | 36 | REM MAIN program |
11f94d2e JM |
37 | MAIN: |
38 | GOSUB INIT_MEMORY | |
b7b1787f | 39 | |
4b84a23b JM |
40 | ZT%=ZI%: REM top of memory after repl_env |
41 | ||
11f94d2e JM |
42 | MAIN_LOOP: |
43 | A$="user> " | |
44 | GOSUB READLINE: REM /* call input parser */ | |
b7b1787f JM |
45 | IF EOF=1 THEN GOTO MAIN_DONE |
46 | A$=R$: GOSUB REP: REM /* call REP */ | |
11f94d2e | 47 | IF ER% THEN GOTO ERROR |
b7b1787f | 48 | PRINT R$ |
11f94d2e JM |
49 | GOTO MAIN_LOOP |
50 | ||
51 | ERROR: | |
52 | PRINT "Error: " + ER$ | |
53 | ER%=0 | |
54 | ER$="" | |
55 | GOTO MAIN_LOOP | |
56 | ||
b7b1787f | 57 | MAIN_DONE: |
4b84a23b | 58 | P1%=ZT%: P2%=-1: GOSUB PR_MEMORY |
241d5d57 | 59 | GOSUB PR_MEMORY_SUMMARY |
b7b1787f JM |
60 | END |
61 |