version 1.13, 2000/09/06 08:47:15
|
version 1.16, 2000/09/11 21:09:39
|
Line 21
|
Line 21
|
\ Now: Kernel Module, Reloadable |
\ Now: Kernel Module, Reloadable |
|
|
create included-files 0 , 0 , ( pointer to and count of included files ) |
create included-files 0 , 0 , ( pointer to and count of included files ) |
\ here ," ./the terminal" dup c@ swap 1 + swap , A, here 2 cells - |
\ note: these names must not contain a "/" or "\"; otherwise a part of |
\ ./ is confusing for the search path stuff! There should be never a . |
\ that name might be used when expanding "./" (see expandtopic). |
\ in sourcefilename.... |
here ," *a file*" dup c@ swap 1 + swap |
here ," #terminal#" dup c@ swap 1 + swap , A, here 2 cells - |
here ," *a block*" dup c@ swap 1 + swap |
create image-included-files 1 , A, ( pointer to and count of included files ) |
here ," *evaluated string*" dup c@ swap 1 + swap |
|
here ," *the terminal*" dup c@ swap 1 + swap |
|
, A, , A, , A, , A, here 8 cells - |
|
create image-included-files 4 , A, ( pointer to and count of included files ) |
\ included-files points to ALLOCATEd space, while image-included-files |
\ included-files points to ALLOCATEd space, while image-included-files |
\ points to ALLOTed objects, so it survives a save-system |
\ points to ALLOTed objects, so it survives a save-system |
|
|
: loadfilename ( -- a-addr ) \ gforth-internal |
|
\G @i{a-addr} @code{2@@} produces the current file name ( @i{c-addr u} ) |
|
included-files 2@ loadfilename# @ min 2* cells + ; |
|
|
|
: sourcefilename ( -- c-addr u ) \ gforth |
: sourcefilename ( -- c-addr u ) \ gforth |
\G The name of the source file which is currently the input |
\G The name of the source file which is currently the input |
\G source. The result is valid only while the file is being |
\G source. The result is valid only while the file is being |
\G loaded. If the current input source is no (stream) file, the |
\G loaded. If the current input source is no (stream) file, the |
\G result is undefined. In Gforth, the result is valid during the |
\G result is undefined. In Gforth, the result is valid during the |
\G whole seesion (but not across @code{savesystem} etc.). |
\G whole seesion (but not across @code{savesystem} etc.). |
loadfilename 2@ ; |
loadfilename# @ loadfilename#>str ; |
|
|
: sourceline# ( -- u ) \ gforth sourceline-number |
: sourceline# ( -- u ) \ gforth sourceline-number |
\G The line number of the line that is currently being interpreted |
\G The line number of the line that is currently being interpreted |
Line 81 create image-included-files 1 , A, ( po
|
Line 80 create image-included-files 1 , A, ( po
|
loadfilename# @ >r |
loadfilename# @ >r |
save-mem add-included-file ( file-id ) |
save-mem add-included-file ( file-id ) |
included-files 2@ nip 1- loadfilename# ! |
included-files 2@ nip 1- loadfilename# ! |
['] include-file catch |
['] include-file2 catch |
r> loadfilename# ! |
r> loadfilename# ! |
throw ; |
throw ; |
|
|
Line 149 create image-included-files 1 , A, ( po
|
Line 148 create image-included-files 1 , A, ( po
|
: .strings ( addr u -- ) \ gforth |
: .strings ( addr u -- ) \ gforth |
\G list the strings from an array of string descriptors at addr |
\G list the strings from an array of string descriptors at addr |
\G with u entries, one per line. |
\G with u entries, one per line. |
included-files 2@ 2* cells bounds ?DO |
2* cells bounds ?DO |
cr I 2@ type 2 cells +LOOP ; |
cr I 2@ type 2 cells +LOOP ; |
|
|
: .included ( -- ) \ gforth |
: .included ( -- ) \ gforth |