shell: larger fake screen

This commit is contained in:
Kartik K. Agaram 2021-06-12 10:46:28 -07:00
parent 662e6b7177
commit 4bd1785c86
4 changed files with 41 additions and 37 deletions

View File

@ -20,7 +20,7 @@ type environment {
fn test-environment {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -34,18 +34,16 @@ fn test-environment {
# top row blank for now
check-screen-row screen, 0/y, " ", "F - test-environment/0"
check-screen-row screen, 1/y, " screen: ", "F - test-environment/1"
# starting at the same screen row, render the fake screen that exists within the sandbox within env
check-background-color-in-screen-row screen, 0/bg, 1/y, " ........ ", "F - test-environment/1-2"
check-background-color-in-screen-row screen, 0/bg, 2/y, " ........ ", "F - test-environment/2"
check-background-color-in-screen-row screen, 0/bg, 3/y, " ........ ", "F - test-environment/3"
check-screen-row screen, 4/y, " ", "F - test-environment/4"
check-screen-row screen, 5/y, " keyboard: ", "F - test-environment/5"
check-background-color-in-screen-row screen, 0/bg, 5/y, " ................ ", "F - test-environment/5-2"
check-screen-row screen, 6/y, " ", "F - test-environment/6"
check-screen-row screen, 7/y, " (+ 3 4) ", "F - test-environment/7"
check-screen-row screen, 8/y, " ... trace depth: 4 ", "F - test-environment/8"
check-screen-row screen, 9/y, " => 7 ", "F - test-environment/9"
check-screen-row screen, 0xa/y, " ", "F - test-environment/10"
check-background-color-in-screen-row screen, 0/bg, 2/y, " ........ ", "F - test-environment/2"
check-background-color-in-screen-row screen, 0/bg, 3/y, " ........ ", "F - test-environment/3"
check-background-color-in-screen-row screen, 0/bg, 4/y, " ........ ", "F - test-environment/4"
check-screen-row screen, 5/y, " ", "F - test-environment/5"
check-screen-row screen, 6/y, " keyboard: ", "F - test-environment/6"
check-background-color-in-screen-row screen, 0/bg, 6/y, " ................ ", "F - test-environment/6-2"
check-screen-row screen, 7/y, " ", "F - test-environment/7"
check-screen-row screen, 8/y, " (+ 3 4) ", "F - test-environment/8"
check-screen-row screen, 9/y, " ... trace depth: 4 ", "F - test-environment/9"
check-screen-row screen, 0xa/y, " => 7 ", "F - test-environment/10"
check-screen-row screen, 0xb/y, " ", "F - test-environment/11"
check-screen-row screen, 0xc/y, " ", "F - test-environment/12"
check-screen-row screen, 0xd/y, " ", "F - test-environment/13"
@ -57,7 +55,7 @@ fn test-environment {
fn test-definition-in-environment {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -70,16 +68,16 @@ fn test-definition-in-environment {
check-screen-row screen, 0/y, " ", "F - test-definition-in-environment/0"
# global definition is now on the left side
check-screen-row screen, 1/y, " (define f 42) screen: ", "F - test-definition-in-environment/1"
check-background-color-in-screen-row screen, 0/bg, 1/y, " ........ ", "F - test-definition-in-environment/1-2"
check-background-color-in-screen-row screen, 0/bg, 2/y, " ........ ", "F - test-definition-in-environment/2"
check-background-color-in-screen-row screen, 0/bg, 3/y, " ........ ", "F - test-definition-in-environment/3"
check-screen-row screen, 4/y, " ", "F - test-definition-in-environment/4"
check-screen-row screen, 5/y, " keyboard: ", "F - test-definition-in-environment/5"
check-background-color-in-screen-row screen, 0/bg, 5/y, " ................ ", "F - test-definition-in-environment/5-2"
check-screen-row screen, 6/y, " ", "F - test-definition-in-environment/6"
check-screen-row screen, 7/y, " ", "F - test-definition-in-environment/7"
check-background-color-in-screen-row screen, 0/bg, 2/y, " ........ ", "F - test-environment/2"
check-background-color-in-screen-row screen, 0/bg, 3/y, " ........ ", "F - test-environment/3"
check-background-color-in-screen-row screen, 0/bg, 4/y, " ........ ", "F - test-environment/4"
check-screen-row screen, 5/y, " ", "F - test-definition-in-environment/4"
check-screen-row screen, 6/y, " keyboard: ", "F - test-definition-in-environment/5"
check-background-color-in-screen-row screen, 0/bg, 6/y, " ................ ", "F - test-definition-in-environment/5-2"
check-screen-row screen, 7/y, " ", "F - test-definition-in-environment/6"
check-screen-row screen, 8/y, " ", "F - test-definition-in-environment/7"
# you can still see the trace on the right for what you just added to the left
check-screen-row screen, 8/y, " ... trace depth: 4 ", "F - test-definition-in-environment/8"
check-screen-row screen, 9/y, " ... trace depth: 4 ", "F - test-definition-in-environment/8"
}
# helper for testing
@ -102,12 +100,12 @@ fn type-in self: (addr environment), screen: (addr screen), keys: (addr array by
}
}
fn initialize-environment _self: (addr environment) {
fn initialize-environment _self: (addr environment), fake-screen-width: int, fake-screen-height: int {
var self/esi: (addr environment) <- copy _self
var globals/eax: (addr global-table) <- get self, globals
initialize-globals globals
var sandbox/eax: (addr sandbox) <- get self, sandbox
initialize-sandbox sandbox, 1/with-screen
initialize-sandbox sandbox, fake-screen-width, fake-screen-height
var partial-global-name-ah/eax: (addr handle gap-buffer) <- get self, partial-global-name
allocate partial-global-name-ah
var partial-global-name/eax: (addr gap-buffer) <- lookup *partial-global-name-ah
@ -415,7 +413,7 @@ fn read-and-evaluate-and-save-gap-buffer-to-globals _in-ah: (addr handle gap-buf
fn test-go-modal {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -450,7 +448,7 @@ fn test-go-modal {
fn test-leave-go-modal {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -483,7 +481,7 @@ fn test-leave-go-modal {
fn test-jump-to-global {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -526,7 +524,7 @@ fn test-jump-to-global {
fn test-go-modal-prepopulates-word-at-cursor {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -627,7 +625,7 @@ fn test-go-modal-prepopulates-word-at-cursor {
fn test-jump-to-nonexistent-global {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -698,7 +696,7 @@ fn test-jump-to-nonexistent-global {
fn test-create-global {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack
@ -736,7 +734,7 @@ fn test-create-global {
fn test-create-nonexistent-global {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 8/fake-screen-width, 3/fake-screen-height
# setup: screen
var screen-on-stack: screen
var screen/edi: (addr screen) <- address screen-on-stack

View File

@ -31,7 +31,7 @@ fn evaluate _in-ah: (addr handle cell), _out-ah: (addr handle cell), env-h: (han
var screen-obj/eax: (addr screen) <- lookup *screen-obj-ah
compare screen-obj, 0
break-if-=
var y/ecx: int <- render-screen 0/screen, screen-obj, 0x70/xmin, 1/ymin
var y/ecx: int <- render-screen 0/screen, screen-obj, 0x58/xmin, 2/ymin
var key/eax: byte <- read-key 0/keyboard
compare key, 0
break-if-=

View File

@ -4,7 +4,7 @@
fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) {
var env-storage: environment
var env/esi: (addr environment) <- address env-storage
initialize-environment env
initialize-environment env, 0x20/fake-screen-width, 8/fake-screen-height
load-state env, data-disk
$main:loop: {
render-environment screen, env

View File

@ -9,7 +9,7 @@ type sandbox {
cursor-in-keyboard?: boolean
}
fn initialize-sandbox _self: (addr sandbox), fake-screen-and-keyboard?: boolean {
fn initialize-sandbox _self: (addr sandbox), fake-screen-width: int, fake-screen-height: int {
var self/esi: (addr sandbox) <- copy _self
var data-ah/eax: (addr handle gap-buffer) <- get self, data
allocate data-ah
@ -20,10 +20,10 @@ fn initialize-sandbox _self: (addr sandbox), fake-screen-and-keyboard?: boolean
populate-stream value-ah, 0x1000/4KB
#
{
compare fake-screen-and-keyboard?, 0/false
compare fake-screen-width, 0
break-if-=
var screen-ah/eax: (addr handle cell) <- get self, screen-var
new-fake-screen screen-ah, 8/width, 3/height, 1/enable-pixel-graphics
new-fake-screen screen-ah, fake-screen-width, fake-screen-height, 1/enable-pixel-graphics
var keyboard-ah/eax: (addr handle cell) <- get self, keyboard-var
new-fake-keyboard keyboard-ah, 0x10/keyboard-capacity
}
@ -188,6 +188,9 @@ fn maybe-render-empty-screen screen: (addr screen), _self: (addr sandbox), xmin:
var _screen-obj/eax: (addr screen) <- lookup *screen-obj-ah
var screen-obj/edx: (addr screen) <- copy _screen-obj
var x/eax: int <- draw-text-rightward screen, "screen: ", xmin, 0x99/xmax, y, 0x17/fg, 0xc5/bg=blue-bg
x <- copy xmin
x <- add 2
y <- increment
y <- render-empty-screen screen, screen-obj, x, y
return y
}
@ -217,7 +220,10 @@ fn maybe-render-screen screen: (addr screen), _self: (addr sandbox), xmin: int,
return ymin
}
var x/eax: int <- draw-text-rightward screen, "screen: ", xmin, 0x99/xmax, ymin, 0x17/fg, 0xc5/bg=blue-bg
x <- copy xmin
x <- add 2
var y/ecx: int <- copy ymin
y <- increment
y <- render-screen screen, screen-obj, x, y
return y
}