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