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