fix issue w/include causing rre to exit in interactive mode
FossilOrigin-Name: adfe6121a489741204ff86b16d6236ee66caef8d1fab9c48c196698ad27568b4
This commit is contained in:
parent
eecd8d7ebf
commit
b511cfea0b
3 changed files with 10 additions and 8 deletions
File diff suppressed because one or more lines are too long
|
@ -375,7 +375,7 @@ void execute(int cell) {
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case IO_TTY_PUTC: putc(stack_pop(), stdout); fflush(stdout); break;
|
case IO_TTY_PUTC: putc(stack_pop(), stdout); fflush(stdout); break;
|
||||||
case IO_TTY_GETC: stack_push(getc(stdin)); break;
|
case IO_TTY_GETC: stack_push(getc(stdin)); break;
|
||||||
case -9999: include_file(string_extract(stack_pop())); break;
|
case -9999: include_file(string_extract(stack_pop())); break;
|
||||||
case IO_FS_OPEN: ioOpenFile(); break;
|
case IO_FS_OPEN: ioOpenFile(); break;
|
||||||
case IO_FS_CLOSE: ioCloseFile(); break;
|
case IO_FS_CLOSE: ioCloseFile(); break;
|
||||||
case IO_FS_READ: stack_push(ioReadFile()); break;
|
case IO_FS_READ: stack_push(ioReadFile()); break;
|
||||||
|
@ -833,9 +833,11 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
if (strcmp(argv[1], "-i") == 0) {
|
if (strcmp(argv[1], "-i") == 0) {
|
||||||
execute(d_xt_for("listen", Dictionary));
|
execute(d_xt_for("banner", Dictionary));
|
||||||
|
while (1) execute(d_xt_for("listen", Dictionary));
|
||||||
} else if (strcmp(argv[1], "-ic") == 0) {
|
} else if (strcmp(argv[1], "-ic") == 0) {
|
||||||
execute(d_xt_for("listen-cbreak", Dictionary));
|
execute(d_xt_for("banner", Dictionary));
|
||||||
|
while (1) execute(d_xt_for("listen-cbreak", Dictionary));
|
||||||
} else {
|
} else {
|
||||||
include_file(argv[1]);
|
include_file(argv[1]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -336,8 +336,6 @@ once for each line in a file. This makes some things trivial. E.g., a simple
|
||||||
'CBreak var
|
'CBreak var
|
||||||
|
|
||||||
:version (-) @Version #100 /mod putn $. putc putn ;
|
:version (-) @Version #100 /mod putn $. putc putn ;
|
||||||
:banner (-) 'RETRO_12_(rx- puts version $) putc nl
|
|
||||||
EOM putn '_MAX,_TIB_@_1025,_Heap_@_ puts here putn nl ;
|
|
||||||
:eol? (c-f) [ ASCII:CR eq? ] [ ASCII:LF eq? ] [ ASCII:SPACE eq? ] tri or or ;
|
:eol? (c-f) [ ASCII:CR eq? ] [ ASCII:LF eq? ] [ ASCII:SPACE eq? ] tri or or ;
|
||||||
:valid? (s-sf) dup s:length n:-zero? ;
|
:valid? (s-sf) dup s:length n:-zero? ;
|
||||||
:ok (-) compiling? [ nl 'Ok_ puts ] -if ;
|
:ok (-) compiling? [ nl 'Ok_ puts ] -if ;
|
||||||
|
@ -347,9 +345,11 @@ once for each line in a file. This makes some things trivial. E.g., a simple
|
||||||
[ getc dup buffer:add check-eof check-bs eol? ] until
|
[ getc dup buffer:add check-eof check-bs eol? ] until
|
||||||
buffer:start s:chop ] buffer:preserve ;
|
buffer:start s:chop ] buffer:preserve ;
|
||||||
---reveal---
|
---reveal---
|
||||||
|
:banner (-) 'RETRO_12_(rx- puts version $) putc nl
|
||||||
|
EOM putn '_MAX,_TIB_@_1025,_Heap_@_ puts here putn nl ;
|
||||||
:bye (-) @CBreak [ 'stty_-cbreak unix:system ] if #0 unix:exit ;
|
:bye (-) @CBreak [ 'stty_-cbreak unix:system ] if #0 unix:exit ;
|
||||||
:listen (-)
|
:listen (-)
|
||||||
banner ok repeat gets valid? [ interpret ok ] [ drop ] choose again ;
|
ok repeat gets valid? [ interpret ok ] [ drop ] choose again ;
|
||||||
:listen-cbreak (-)
|
:listen-cbreak (-)
|
||||||
&CBreak v:on 'stty_cbreak unix:system listen ;
|
&CBreak v:on 'stty_cbreak unix:system listen ;
|
||||||
}}
|
}}
|
||||||
|
|
Loading…
Reference in a new issue