Basic: fix step6 arg test. Gensym. Misc cleanup.
[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
cc9dbd92 10REM READ(A$) -> R
11f94d2e
JM
11MAL_READ:
12 GOSUB READ_STR
13 RETURN
14
cc9dbd92 15REM EVAL(A, E) -> R
af621e3a 16SUB EVAL
cc9dbd92 17 R=A
af621e3a 18END SUB
11f94d2e 19
cc9dbd92 20REM PRINT(A) -> R$
11f94d2e 21MAL_PRINT:
cc9dbd92 22 AZ=A:PR=1:GOSUB PR_STR
11f94d2e
JM
23 RETURN
24
b7b1787f 25REM REP(A$) -> R$
af621e3a 26SUB 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 40END SUB
11f94d2e 41
b7b1787f 42REM MAIN program
11f94d2e
JM
43MAIN:
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