reorg primitives on screen
This commit is contained in:
parent
c8fb6d6aca
commit
bd538804db
|
@ -24,7 +24,7 @@ fn test-environment {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x30/height, 0/no-pixel-graphics
|
||||
# type some code into sandbox
|
||||
type-in env, screen, "(+ 3 4)" # we don't have any global definitions here, so no macros
|
||||
# run code in sandbox
|
||||
|
@ -49,7 +49,7 @@ fn test-environment {
|
|||
check-screen-row screen, 0xd/y, " ", "F - test-environment/13"
|
||||
check-screen-row screen, 0xe/y, " ", "F - test-environment/14"
|
||||
# bottom row is for a wordstar-style menu
|
||||
check-screen-row screen, 0xf/y, " ^r run main ^s run sandbox ^g go to ^m to trace ^a << ^b <word ^f word> ^e >> ", "F - test-environment/15"
|
||||
check-screen-row screen, 0x2f/y, " ^r run main ^s run sandbox ^g go to ^m to trace ^a << ^b <word ^f word> ^e >> ", "F - test-environment/15"
|
||||
}
|
||||
|
||||
fn test-definition-in-environment {
|
||||
|
@ -59,7 +59,7 @@ fn test-definition-in-environment {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x30/height, 0/no-pixel-graphics
|
||||
# define a global on the right (sandbox) side
|
||||
type-in env, screen, "(define f 42)"
|
||||
edit-environment env, 0x13/ctrl-s, 0/no-disk
|
||||
|
@ -68,9 +68,9 @@ 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, 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-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-background-color-in-screen-row screen, 0/bg, 4/y, " ........ ", "F - test-definition-in-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"
|
||||
|
@ -419,7 +419,7 @@ fn test-go-modal {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x10/height, 0/no-pixel-graphics
|
||||
# hit ctrl-g
|
||||
edit-environment env, 7/ctrl-g, 0/no-disk
|
||||
render-environment screen, env
|
||||
|
@ -454,7 +454,7 @@ fn test-leave-go-modal {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x10/height, 0/no-pixel-graphics
|
||||
# hit ctrl-g
|
||||
edit-environment env, 7/ctrl-g, 0/no-disk
|
||||
render-environment screen, env
|
||||
|
@ -487,7 +487,7 @@ fn test-jump-to-global {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x30/height, 0/no-pixel-graphics
|
||||
# define a global
|
||||
type-in env, screen, "(define f 42)"
|
||||
edit-environment env, 0x13/ctrl-s, 0/no-disk
|
||||
|
@ -530,7 +530,7 @@ fn test-go-modal-prepopulates-word-at-cursor {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x10/height, 0/no-pixel-graphics
|
||||
# type a word at the cursor
|
||||
type-in env, screen, "fn1"
|
||||
# hit ctrl-g
|
||||
|
@ -631,7 +631,7 @@ fn test-jump-to-nonexistent-global {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x10/height, 0/no-pixel-graphics
|
||||
# type in any (nonexistent) global name
|
||||
type-in env, screen, "f"
|
||||
# hit ctrl-g
|
||||
|
@ -702,7 +702,7 @@ fn test-create-global {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x30/height, 0/no-pixel-graphics
|
||||
# hit ctrl-g
|
||||
edit-environment env, 7/ctrl-g, 0/no-disk
|
||||
render-environment screen, env
|
||||
|
@ -740,7 +740,7 @@ fn test-create-nonexistent-global {
|
|||
# setup: screen
|
||||
var screen-on-stack: screen
|
||||
var screen/edi: (addr screen) <- address screen-on-stack
|
||||
initialize-screen screen, 0x80/width=72, 0x10/height, 0/no-pixel-graphics
|
||||
initialize-screen screen, 0x80/width, 0x10/height, 0/no-pixel-graphics
|
||||
# define a global
|
||||
type-in env, screen, "(define f 42)"
|
||||
edit-environment env, 0x13/ctrl-s, 0/no-disk
|
||||
|
|
|
@ -48,66 +48,103 @@ fn initialize-primitives _self: (addr global-table) {
|
|||
|
||||
fn render-primitives screen: (addr screen), xmin: int, xmax: int, ymax: int {
|
||||
var y/ecx: int <- copy ymax
|
||||
y <- subtract 0x10
|
||||
y <- subtract 0xf
|
||||
clear-rect screen, xmin, y, xmax, ymax, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var right-min/edx: int <- copy xmax
|
||||
right-min <- subtract 0x1e
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "primitives", right-min, y, xmax, ymax, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "fn apply set if while", right-min, y, xmax, ymax, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "booleans", right-min, y, xmax, ymax, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "= and or not", right-min, y, xmax, ymax, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "lists", right-min, y, xmax, ymax, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "cons car cdr no ", right-min, y, xmax, ymax, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "numbers", right-min, y, xmax, ymax, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "+ - * / %", right-min, y, xmax, ymax, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "< > <= >=", right-min, y, xmax, ymax, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
set-cursor-position screen, right-min, y
|
||||
draw-text-wrapping-right-then-down-from-cursor screen, "sqrt abs sgn", right-min, y, xmax, ymax, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
#? {
|
||||
#? compare screen, 0
|
||||
#? break-if-!=
|
||||
#? var foo/eax: byte <- read-key 0/keyboard
|
||||
#? compare foo, 0
|
||||
#? loop-if-=
|
||||
#? }
|
||||
y <- copy ymax
|
||||
y <- subtract 0xe
|
||||
var left-max/edx: int <- copy xmax
|
||||
left-max <- subtract 0x20
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, "cursor graphics", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, "cursor graphics", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " print", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen a -> a", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " print", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen a -> a", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " lines columns", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen -> number", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " lines columns", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen -> number", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " up down left right", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " up down left right", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " cr", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen ", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, "# move cursor down and to left margin", tmpx, xmax, y, 0x38/fg=trace, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " cr", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen ", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, "# move cursor down and to left margin", tmpx, left-max, y, 0x38/fg=trace, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, "pixel graphics", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, "pixel graphics", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " width height", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen -> number", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " width height", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen -> number", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " pixel", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen x y color", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " pixel", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen x y color", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, "screen/keyboard", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, "screen/keyboard", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " clear", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " clear", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": screen", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " key", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": () -> grapheme?", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " key", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": () -> grapheme?", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, "streams", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, "streams", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " stream", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": () -> stream ", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " stream", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": () -> stream ", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, " write", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": stream grapheme -> stream", tmpx, xmax, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
y <- increment
|
||||
var tmpx/eax: int <- copy xmin
|
||||
tmpx <- draw-text-rightward screen, "fn apply set if while cons car cdr no not and or = ", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
# numbers
|
||||
tmpx <- draw-text-rightward screen, "< > <= >= + - * / % sqrt abs sgn", tmpx, xmax, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, " write", tmpx, left-max, y, 0x2a/fg=orange, 0xdc/bg=green-bg
|
||||
tmpx <- draw-text-rightward screen, ": stream grapheme -> stream", tmpx, left-max, y, 7/fg=grey, 0xdc/bg=green-bg
|
||||
}
|
||||
|
||||
fn primitive-global? _x: (addr global) -> _/eax: boolean {
|
||||
|
|
Loading…
Reference in New Issue