Merge pull request #383 from asarhaddon/ada2tco-do
[jackhill/mal.git] / basic / step1_read_print.in.bas
CommitLineData
11f94d2e
JM
1GOTO MAIN
2
d7a6c2d6 3REM $INCLUDE: 'mem.in.bas'
11f94d2e 4REM $INCLUDE: 'types.in.bas'
93593012 5REM $INCLUDE: 'readline.in.bas'
11f94d2e
JM
6REM $INCLUDE: 'reader.in.bas'
7REM $INCLUDE: 'printer.in.bas'
8
9e8f5211
JM
9REM $INCLUDE: 'debug.in.bas'
10
cc9dbd92 11REM READ(A$) -> R
11f94d2e
JM
12MAL_READ:
13 GOSUB READ_STR
14 RETURN
15
cc9dbd92 16REM EVAL(A, E) -> R
af621e3a 17SUB EVAL
cc9dbd92 18 R=A
af621e3a 19END SUB
11f94d2e 20
cc9dbd92 21REM PRINT(A) -> R$
11f94d2e 22MAL_PRINT:
c756af81 23 AZ=A:B=1:GOSUB PR_STR
11f94d2e
JM
24 RETURN
25
b7b1787f 26REM REP(A$) -> R$
af621e3a 27SUB REP
11f94d2e 28 GOSUB MAL_READ
cc9dbd92 29 IF ER<>-2 THEN GOTO REP_DONE
85d70fb7 30
af621e3a 31 A=R:CALL EVAL
cc9dbd92 32 IF ER<>-2 THEN GOTO REP_DONE
4b84a23b 33
cc9dbd92 34 A=R:GOSUB MAL_PRINT
4b84a23b 35
85d70fb7
JM
36 REP_DONE:
37 REM Release memory from EVAL
cc9dbd92 38 AY=R:GOSUB RELEASE
af621e3a 39END SUB
11f94d2e 40
b7b1787f 41REM MAIN program
11f94d2e
JM
42MAIN:
43 GOSUB INIT_MEMORY
b7b1787f 44
bbab5c5d 45 ZT=ZI: REM top of memory after base repl_env
4b84a23b 46
85d70fb7 47 REPL_LOOP:
60ef223c 48 A$="user> ":GOSUB READLINE: REM call input parser
01975886 49 IF EZ=1 THEN GOTO QUIT
9d59cdb3 50 IF R$="" THEN GOTO REPL_LOOP
85d70fb7 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:
9d59cdb3 59 REM GOSUB PR_MEMORY_SUMMARY_SMALL
115e430d
JM
60 #cbm END
61 #qbasic SYSTEM
b7b1787f 62
85d70fb7 63 PRINT_ERROR:
c756af81
JM
64 PRINT "Error: "+E$
65 ER=-2:E$=""
85d70fb7
JM
66 RETURN
67