[SLOF] [PATCH v6 1/2] Fix output word
Thomas Huth
thuth at redhat.com
Fri Apr 6 19:03:49 AEST 2018
On 06.04.2018 10:47, Laurent Vivier wrote:
> We can select the console output, but it does not really work
>
> Implement term-io-emit, as we have term-io-key to really
> send characters to the output selected by stdout.
>
> Resolve xt-handle and ihandle in the output command.
>
> Use them in the new term-io-emit function.
>
> Signed-off-by: Laurent Vivier <lvivier at redhat.com>
> ---
> slof/fs/term-io.fs | 36 +++++++++++++++++++++++++++++++-----
> 1 file changed, 31 insertions(+), 5 deletions(-)
>
> diff --git a/slof/fs/term-io.fs b/slof/fs/term-io.fs
> index 52ce12a..d247b09 100644
> --- a/slof/fs/term-io.fs
> +++ b/slof/fs/term-io.fs
> @@ -10,6 +10,17 @@
> \ * IBM Corporation - initial implementation
> \ ****************************************************************************/
>
> +0 VALUE write-xt
> +
> +VARIABLE stdout
> +
> +: set-stdout ( ihandle -- )
> + \ Close old stdout:
> + stdout @ ?dup IF close-dev THEN
> + \ Now set the new stdout:
> + dup stdout !
> + encode-int s" stdout" set-chosen
> +;
>
> : input ( dev-str dev-len -- )
> open-dev ?dup IF
> @@ -24,12 +35,15 @@
>
> : output ( dev-str dev-len -- )
> open-dev ?dup IF
> - \ Close old stdout:
> - s" stdout" get-chosen IF
> - decode-int nip nip ?dup IF close-dev THEN
> + \ find new ihandle and xt handle
> + dup s" write" rot ihandle>phandle find-method
> + 0= IF
> + drop
> + cr ." Cannot find the write method for the given output console " cr
> + EXIT
> THEN
> - \ Now set the new stdout:
> - encode-int s" stdout" set-chosen
> + to write-xt
> + set-stdout
> THEN
> ;
>
> @@ -40,6 +54,18 @@
>
> 1 BUFFER: (term-io-char-buf)
>
> +: term-io-emit ( char -- )
> + write-xt IF
> + (term-io-char-buf) c!
> + (term-io-char-buf) 1 write-xt stdout @ call-package
> + drop
> + ELSE
> + [ ' emit behavior compile, ]
> + THEN
> +;
> +
> +' term-io-emit to emit
> +
> : term-io-key ( -- char )
> s" stdin" get-chosen IF
> decode-int nip nip dup 0= IF 0 EXIT THEN
>
Reviewed-by: Thomas Huth <thuth at redhat.com>
More information about the SLOF
mailing list