e4eb91eb79
FossilOrigin-Name: 0787996383d82ab30c7b62dc4adf38c8360c6849f8e3b9d23f9e788d2d5322c7
56 lines
1.7 KiB
Forth
56 lines
1.7 KiB
Forth
# Scripting Support
|
|
|
|
This is the scripting interface words for use with retro-unix
|
|
or other interfaces providing device type 9 support.
|
|
|
|
The initial words were provided in a `sys:` namespace. In 2020.10
|
|
this is changing to `script:`, with the old names being deprecated.
|
|
|
|
## Rev. 0
|
|
|
|
The initial version of this I/O device provides support for some
|
|
basic interactions.
|
|
|
|
- obtaining the name of the script
|
|
- obtaining the number of arguments passed
|
|
- obtaining the arguments passed
|
|
- "including" a file (which has RETRO process the file as inuput)
|
|
|
|
## Rev. 1
|
|
|
|
In 2020.10, the device was extended to add support for new additional
|
|
introspection and control of the `include` process.
|
|
|
|
- obtaining the current file name
|
|
- obtaining the current line number
|
|
- direct RETRO to ignore the rest of the current line
|
|
- direct RETRO to ignore any remaining lines in the file
|
|
|
|
## Rev. 2
|
|
|
|
Adds support for `abort`.
|
|
|
|
# The Code
|
|
|
|
~~~
|
|
{{
|
|
'Scripting var
|
|
:identify
|
|
@Scripting n:zero? 0; drop
|
|
#9 io:scan-for dup n:negative?
|
|
[ drop 'IO_DEVICE_TYPE_0009_NOT_FOUND s:put nl ]
|
|
[ !Scripting ] choose ;
|
|
---reveal---
|
|
:script:arguments (-n) identify #0 @Scripting io:invoke ;
|
|
:script:get-argument (n-s) s:empty swap identify #1 @Scripting io:invoke ;
|
|
:include (s-) identify #2 @Scripting io:invoke ;
|
|
:script:name (-s) s:empty identify #3 @Scripting io:invoke ;
|
|
|
|
:script:current-file (-s) s:empty identify #4 @Scripting io:invoke ;
|
|
:script:current-line (-n) identify #5 @Scripting io:invoke ;
|
|
:script:ignore-to-eol (-) identify #6 @Scripting io:invoke ;
|
|
:script:abort-include (-) identify #7 @Scripting io:invoke ;
|
|
|
|
:abort (-) &Compiler v:off identify #8 @Scripting io:invoke ;
|
|
}}
|
|
~~~
|