Data stack: ( v -- )
+X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;ds=sidebyside;f=reference.html;h=9137d075cfd0bd68e35fda305d8050d21cc8f636;hb=7a99f2ed7cfe55f3aa69560b31c055ce45fe1f0c;hp=609c422d1f31238ff88134fad393ef226287787e;hpb=ea06ac29b3258dd6b91801a5175066e81275667d;p=rrq%2Frrqforth.git diff --git a/reference.html b/reference.html index 609c422..9137d07 100644 --- a/reference.html +++ b/reference.html @@ -770,17 +770,24 @@ asciidoc.install(); ! C@ C! +W@ +W! +D@ +D! 2@ 2! !+ @n++ @n-- C, -S" +W, +D, +S" >R R@ R> -R[n]
+R[n] +D[n]DATA-STACK RETURN-STACK @@ -801,10 +808,12 @@ asciidoc.install(); BEGIN BREAK
TELL +.TEMP +TEMP +TEMPHELD +TEMPSPACE +TEMPUSED TERMINATE0 TFA>CFA TFA>DFA @@ -876,6 +900,8 @@ asciidoc.install(); THIS-WORD TRUE TUCK
Data stack: ( v -- )
+"W," (W-comma) is a function word that puts a "word" (double-byte) on +the HERE heap. The two least significant bytes of the value +are put at the current free head address, which also is incremented +accordingly.
Data stack: ( v -- )
+"D," (D-comma) is a function word that puts a "double word" +(double-byte) on the HERE heap. The four least significant +bytes of the value are put at the current free head address, which +also is incremented accordingly.
Data stack: ( n -- a )
+"D[n]" is a function word that pushes the address for the n:th cell of +the data stack onto the data stack.
Data stack: ( cfa -- tfa )
+"CFA>TFA" is a function word that pushes word tfa of the given cfa.
Data stack: ( a -- v )
+"W@" is a function word that pushes the "word" (double-byte) value v +from the address a.
Data stack: ( -- v ) Return stack: ( v -- v )
+"R@" is a function word that "copies" the top return stack value onto +the data stack.
Data stack: ( v a -- )
+"W!" is a function word that stores the "word" (2-byte) value v (the +two least significant bytes of the cell) at the address a.
Data stack: ( v a -- )
+"D!" is a function word that stores the "doublw word" (4-byte) value v +(the four least significant bytes of the cell) at the address a.
Data stack: ( -- v ) Return stack: ( v -- v )
@@ -1258,7 +1415,8 @@ _______________________________________________________
"ARGS" is a value word that holds a pointer to the command line data block which consists of a count cell followed by that many asciiz -pointers and then a 0 cell.
ARGS -> 8 bytes: count of non-zero asciiz pointers following
8 bytes: command name string
- 8 bytes: first argument string
- 8* ...
- 8 zero
+ 8* bytes: argument strings
+ 8 bytes: zero cell
+ 8* bytes: envirnment strings
+ 8 bytes: zero cell
Data stack: ( wordlist -- )
+"DEFINITIONS" is a function word that installs the given wordlist as +the CURRENT-WORDLIST one.
Data stack: ( v -- char* n )
+".TEMP" is a function word that renders a cell value as an integer +using the current BASE, which is either +DECIMAL or HEX. In DECIMAL +BASE, a negative value is rendered as such with a leading +minus sign, whereas HEX BASE rendering is +unsigned.
Data stack: ( -- )
+Data stack: ( v -- )
"EXIT" is a function word that implements the ending of a FORTH -definition and its threading to the subsequent step of the calling -definition.
"EXIT" is a function word that terminates the rrqforth
process
+immediately with the given exit code.
Data stack: ( c fd -- )
+"FDEMIT" is a function word that puts the given character code to the +given file descriptor. The character is the least significant byte of +the data stack cell.
Data stack: ( char* n fd -- )
+"FDTELL" is a function word that prints a string to the given file +descriptor.
Data stack: ( -- chars* n )
"S"" is a function word that pushes the [n:char] pointer for a string -inlined subsequently to it in the containing definition. This is -similar to LIT but for a string literal.
"LIT-STRING" is a function word that pushes the char* and length n of +a subsequent inline string, then advances execution to continue after +the string. This is similar to LIT but for a block literal.
Note that the inlined byte count includes the terminating NUL byte.
data stack: ( "name" -- )
+Data stack: ( -- ) Input stream: " chars"
"LOAD-FILE"" is a function word that opens a file via -OPEN-FILE", allocates a stream buffer of 15000 -bytes for reading it, saves the stream pointer as value for the newly -created filename variable, and then it invokes -EVALUATE-STREAM for processing the file.
"S"" is an immediate function word that compiles the subseqent +characters up to terminating double-quote into the current definition, +preceded by a LIT-STRING cell, and the count of +bytes scanned. The inline text includes a terminating NUL character +which also is included in the inlined count.
Note that "S"" uses " for reading the string.
data stack: ( -- a )
+"LOAD-BUFFER-SIZE" is a variable word telling the buffer size in bytes +that LOAD-FILE should use.
data stack: ( chaz* -- * 0/1 )
+"LOAD-FILE" is a function word that evaluates a text file. It opens a +file via OPEN-FILE and sets up a stream with a +buffer of LOAD-BUFFER-SIZE bytes for +reading it. The stream is passed to +EVALUATE-STREAM for processing its words. Upon +its return the file is closed and the stream memory is reclaimed, and +then the function returns whatever +EVALUATE-STREAM returns.
Data stack: ( v1 v2 -- v3 )
+"MAX" is a function word that selects the greatest of v1 and v2. To +that end, the values are 64-bit signed integers.
Data stack: ( v1 v2 -- v3 )
+"MIN" is a function word that selects the least of v1 and v2. To that +end, the values are 64-bit signed integers.
Data stack: ( "name" -- fd )
+Data stack: ( chaz* -- fd )
"OPEN-FILE"" is a function word that reads the intputstream for a -filename, adds that to the dictionary as a no-content variable, opens -that file and returns the input file descriptor.
"OPEN-FILE" is a function word that opens the file named by the zero +terminated character string and returns the file descriptor, or if +less than 0, the system call error code.
Data stack: ( -- a )
+"RSP" is a function word that pushes the return stack pointer value +onto the data stack.
Data stack: ( n -- a )
+"R[n]" is a function word that pushes the address for the n:th cell of +the return stack onto the data stack.
Data stack: ( stream -- n )
+"READ-STREAM-LINE" is a function word that gets the next line from the +given stream buffer into PAD and returns number of characters. If the +stream is backed by a file descriptor, the stream buffer is refilled +from there as needed, by a SYS_READ call when more characters are +needed.
At the end of the stream READ-WORD returns 0 length.
All character codes less or equal to 32 are regarded as "whitespace".
The "#" character following whitespace starts a line comment and the +rest of the line is ignored. Note that this is also recognised with +parethesis commenting.
Data stack: ( -- )
+"RETURN" is a function word that implements the ending of a FORTH +definition and make execution return to the next step in the calling +definition.
compile.asm: WORD p_right_bracket,],fasm
Data stack: ( n -- a )
-"R[n]" is a function word that pushes the address for the n:th cell on -the top return stack value onto the data stack.
Data stack: ( -- )
";" (semi-colon) is a function word that ends a new forth definition -by means of adding an EXIT
";" (semi-colon) is an immediate function word that ends a new forth +definition by means of adding an EXIT cell, then changing +<<p_state,STATE> to interpreting.
"STR>TEMP" is a function word that copies a given string plus a +terminating NUL character into a TEMPSPACE snippet, +all preceded by a length cell. It returns a pointer for to the text in +the snippet and its length, excluding the NUL character at end and the +length cell before tie text.
length: 8 bytes
+returned char*: n bytes
+ nul: 1 byte
+"TEMP" is a function word that "allocates" a TEMPSPACE +area of given size and returns its base address. The allocation is +temporary and only valid until there is a later allocation that +overruns this area.
Allocations are done in succession until the requested size overruns +the TEMPSPACE. If so, the allocation pointer is reset +and the space is allocated from start again. This is all intended for +small and short-lived data areas.
Data stack: ( -- a )
+"TEMPHELD" is a variable word that keeps the lowest offset of the +TEMPSPACE space to reuse upon cycling. The space +below TEMPHELD is "held" in the sense of not being reused upon +cycling. An application may change the TEMPSPACE offset as needed to +dynamically preserve memory longer term.
Data stack: ( -- a )
+"TEMPSPACE" is a variable word that holds three cells the for managing +"temporary memory":
+the size of the temporary memory space (default 104857600 bytes) +
++the base address for whole temporary memory area +
++the amount currently used +
+This memory is intended to be used by requesting snippets of memory in +a cyclic fashion via TEMP without concern about it possibly +overlapping a prior request.
Data stack: ( -- a )
+"TEMPUSED" is a variable word that keeps the lowest offset of the +TEMPSPACE space to use next as temporary space. This +is advance upon each allocation via TEMP, and recycled back +to TEMPHELD when next allocation otherwise would exceed +the space size.
Data stack: ( stream* -- )
+"UNSTREAM" is a function word that releases the memory allocated for a +stream, and closes the associated file if it’s a file stream.
This kind of stream has the stream header as a prefix within the +allocated memory. Thus, stream* is the base address for the memory to +reclaim, and the size of this is determined from the cell at (stream* ++ 16) plus the 32 bytes head itself.
Data value: ( wordlist -- ) Input stream: word
+"USE" is a function word that looks up next word given the wordlist. +It reads next word on INPUT via READ-WORD, +then temporarily changes CURRENT-WORDLIST to +FIND the word via the given wordlist, and returns the TFA +of that word, or just 0 if the word coudn’t be found.