add shifting of argument list in interpreter mode

This commit is contained in:
Jesse D. McDonald 2020-12-18 08:58:38 -06:00
parent 1d930672bc
commit 559eb400a8
1 changed files with 12 additions and 2 deletions

View File

@ -2384,6 +2384,9 @@ SYSTEM DEFINITIONS
\ immediately following the NULL-terminated array of argument pointers
ARGV ARGC 1+ CELLS+ CONSTANT ENVIRON
VARIABLE ARGV-SHIFT
0 ARGV-SHIFT !
FORTH DEFINITIONS
\ Convert a C string to a FORTH string by counting the characters
@ -2400,10 +2403,16 @@ FORTH DEFINITIONS
2DROP CELL+
REPEAT ▪ NIP ▪ 2RDROP ;
\ Return ARGC decremented by ARGV-SHIFT, but not less than zero
: ARGC ( -- u ) ARGC DUP ARGV-SHIFT @ UMIN - ;
\ Return the string value of the numbered command-line argument
\ Argument 0 is (normally) the pathname of the current program
: ARGV ( u -- c-addr u )
DUP ARGC U>= IF DROP 0 0 ELSE ARGV SWAP CELLS+ @ CSTRING THEN ;
DUP ARGC U>= IF DROP 0 0 ELSE ARGV SWAP ARGV-SHIFT @ + CELLS+ @ CSTRING THEN ;
: SHIFT-ARGV ( -- c-addr u )
0 ARGV 1 ARGV-SHIFT +! ;
UTILITY DEFINITIONS
@ -3018,7 +3027,8 @@ SYSTEM DEFINITIONS
{
ONLY FORTH DEFINITIONS
ARGC 2 U>= IF
1 ARGV [[ ' INCLUDED ]] CATCH
"SHIFT-ARGV SCONSTANT INTERPRETER" EVALUATE
0 ARGV [[ ' INCLUDED ]] CATCH
DUP EXCP-QUIT = IF
DROP 2DROP QUIT
ELSE ?DUP IF