summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/board-qemu/slof/hvterm.fs
blob: 98c14458201a0bf7cba27ff04ff203ca13660e3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
\ *****************************************************************************
\ * Copyright (c) 2011 IBM Corporation
\ * All rights reserved.
\ * This program and the accompanying materials
\ * are made available under the terms of the BSD License
\ * which accompanies this distribution, and is available at
\ * http://www.opensource.org/licenses/bsd-license.php
\ *
\ * Contributors:
\ *     IBM Corporation - initial implementation
\ ****************************************************************************/

\ PAPR hvterm console.  Enabled very early.

0 CONSTANT default-hvtermno
\ Buffer for pre-display
4096 CONSTANT disp-size
CREATE prevga-disp-buf 4096 allot
0 value disp-ptr
true value store-prevga?

: store-to-disp-buffer         ( ch  --  )
    prevga-disp-buf disp-ptr disp-size MOD + c!
    disp-ptr 1 + to disp-ptr
;

: hvterm-emit
    store-prevga? IF
	dup store-to-disp-buffer
    THEN
    default-hvtermno SWAP hv-putchar
;
: hvterm-key?  default-hvtermno hv-haschar ;
: hvterm-key   BEGIN hvterm-key? UNTIL default-hvtermno hv-getchar ;

' hvterm-emit to emit
' hvterm-key  to key
' hvterm-key? to key?

\ Override serial methods to make term-io.fs happy
: serial-emit hvterm-emit ;
: serial-key? hvterm-key? ;
: serial-key  hvterm-key  ;