shell: start on support for fake keyboard
This commit is contained in:
parent
400574f956
commit
a509279aea
|
@ -12,6 +12,8 @@ type cell {
|
||||||
index-data: int
|
index-data: int
|
||||||
# type 5: screen
|
# type 5: screen
|
||||||
screen-data: (handle screen)
|
screen-data: (handle screen)
|
||||||
|
# type 6: keyboard
|
||||||
|
keyboard-data: (handle stream byte)
|
||||||
# TODO: array, (associative) table, stream
|
# TODO: array, (associative) table, stream
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,3 +150,13 @@ fn clear-screen-cell _self-ah: (addr handle cell) {
|
||||||
var screen/eax: (addr screen) <- lookup *screen-ah
|
var screen/eax: (addr screen) <- lookup *screen-ah
|
||||||
clear-screen screen
|
clear-screen screen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn allocate-keyboard _out: (addr handle cell), capacity: int {
|
||||||
|
var out/eax: (addr handle cell) <- copy _out
|
||||||
|
allocate out
|
||||||
|
var out-addr/eax: (addr cell) <- lookup *out
|
||||||
|
var dest-ah/ecx: (addr handle stream byte) <- get out-addr, keyboard-data
|
||||||
|
populate-stream dest-ah, capacity
|
||||||
|
var type/ecx: (addr int) <- get out-addr, type
|
||||||
|
copy-to *type, 6/keyboard
|
||||||
|
}
|
||||||
|
|
|
@ -2,11 +2,12 @@ type sandbox {
|
||||||
data: (handle gap-buffer)
|
data: (handle gap-buffer)
|
||||||
value: (handle stream byte)
|
value: (handle stream byte)
|
||||||
screen-var: (handle cell)
|
screen-var: (handle cell)
|
||||||
|
keyboard-var: (handle cell)
|
||||||
trace: (handle trace)
|
trace: (handle trace)
|
||||||
cursor-in-trace?: boolean
|
cursor-in-trace?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
fn initialize-sandbox _self: (addr sandbox), screen?: boolean {
|
fn initialize-sandbox _self: (addr sandbox), screen-and-keyboard?: boolean {
|
||||||
var self/esi: (addr sandbox) <- copy _self
|
var self/esi: (addr sandbox) <- copy _self
|
||||||
var data-ah/eax: (addr handle gap-buffer) <- get self, data
|
var data-ah/eax: (addr handle gap-buffer) <- get self, data
|
||||||
allocate data-ah
|
allocate data-ah
|
||||||
|
@ -17,10 +18,12 @@ fn initialize-sandbox _self: (addr sandbox), screen?: boolean {
|
||||||
populate-stream value-ah, 0x1000/4KB
|
populate-stream value-ah, 0x1000/4KB
|
||||||
#
|
#
|
||||||
{
|
{
|
||||||
compare screen?, 0/false
|
compare screen-and-keyboard?, 0/false
|
||||||
break-if-=
|
break-if-=
|
||||||
var screen-ah/eax: (addr handle cell) <- get self, screen-var
|
var screen-ah/eax: (addr handle cell) <- get self, screen-var
|
||||||
new-screen screen-ah, 5/width, 4/height
|
new-screen screen-ah, 5/width, 4/height
|
||||||
|
var keyboard-ah/eax: (addr handle cell) <- get self, keyboard-var
|
||||||
|
allocate-keyboard keyboard-ah, 5/capacity
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
var trace-ah/eax: (addr handle trace) <- get self, trace
|
var trace-ah/eax: (addr handle trace) <- get self, trace
|
||||||
|
|
Loading…
Reference in New Issue