about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-02-16 00:39:22 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-02-16 00:39:22 -0800
commit76911c57d1fb69467b5e9ad7fb717cea947c9bd0 (patch)
treeb39520a5422910815c7487e0a6e0e9080d51f4b6
parent737e99bde791401bf52b32e46c2aa91fb0dadf59 (diff)
downloadmu-76911c57d1fb69467b5e9ad7fb717cea947c9bd0.tar.gz
754 - traces are part of screen state
-rw-r--r--trace.arc.t14
-rw-r--r--trace.mu21
2 files changed, 17 insertions, 18 deletions
diff --git a/trace.arc.t b/trace.arc.t
index c2777106..1ae0ed39 100644
--- a/trace.arc.t
+++ b/trace.arc.t
@@ -25,8 +25,8 @@ schedule:  done with routine")
       (traces:instruction-trace-address-array-address <- parse-traces s:stream-address)
       (len:integer <- length traces:instruction-trace-address-array-address/deref)
       (screen:terminal-address <- init-fake-terminal 70:literal 15:literal)
-      (screen-state:space-address <- screen-state)
-      (print-traces-collapsed screen-state:space-address screen:terminal-address traces:instruction-trace-address-array-address)
+      (screen-state:space-address <- screen-state traces:instruction-trace-address-array-address)
+      (print-traces-collapsed screen-state:space-address screen:terminal-address)
       (1:string-address/raw <- get screen:terminal-address/deref data:offset)
     ])))
 ;? (set dump-trace*)
@@ -44,6 +44,7 @@ schedule:  done with routine")
             "+ main/ 2 : (((3 integer)) <- ((add)) ((1 integer)) ((2 integer)))    "
             "+ main/ 2 : 4 => ((3 integer))                                        "))
   (prn "F - print-traces-collapsed works"))
+;? (quit) ;? 1
 
 (reset)
 (new-trace "print-trace-from-middle-of-screen")
@@ -72,7 +73,7 @@ schedule:  done with routine")
       ; position the cursor away from top of screen
       (cursor-down 1:terminal-address/raw)
       (cursor-down 1:terminal-address/raw)
-      (screen-state:space-address <- screen-state)
+      (screen-state:space-address <- screen-state traces:instruction-trace-address-array-address)
       (print-traces-collapsed screen-state:space-address 1:terminal-address/raw traces:instruction-trace-address-array-address)
       (2:string-address/raw <- get 1:terminal-address/raw/deref data:offset)
     ])))
@@ -90,7 +91,6 @@ schedule:  done with routine")
             "+ main/ 2 : (((3 integer)) <- ((add)) ((1 integer)) ((2 integer)))    "
             "+ main/ 2 : 4 => ((3 integer))                                        "))
   (prn "F - print-traces-collapsed works"))
-
 (run-code main2
   (print-character 1:terminal-address/raw ((#\* literal))))
 (when (~screen-contains memory*.2 70
@@ -132,7 +132,7 @@ schedule:  done with routine")
       ; position the cursor away from top of screen
       (cursor-down 2:terminal-address/raw)
       (cursor-down 2:terminal-address/raw)
-      (3:space-address/raw <- screen-state)
+      (3:space-address/raw <- screen-state 1:instruction-trace-address-array-address/raw)
       ; draw trace
       (print-traces-collapsed 3:space-address/raw/screen-state 2:terminal-address/raw 1:instruction-trace-address-array-address/raw)
       ; move cursor up
@@ -281,7 +281,7 @@ schedule:  done with routine")
       ; position the cursor away from top of screen
       (cursor-down 2:terminal-address/raw)
       (cursor-down 2:terminal-address/raw)
-      (3:space-address/raw <- screen-state)
+      (3:space-address/raw <- screen-state 1:instruction-trace-address-array-address/raw)
       ; draw trace
       (print-traces-collapsed 3:space-address/raw/screen-state 2:terminal-address/raw 1:instruction-trace-address-array-address/raw)
       (4:string-address/raw <- get 2:terminal-address/raw/deref data:offset)
@@ -366,7 +366,7 @@ schedule:  done with routine")
       ; position the cursor away from top of screen
       (cursor-down 2:terminal-address/raw)
       (cursor-down 2:terminal-address/raw)
-      (3:space-address/raw <- screen-state)
+      (3:space-address/raw <- screen-state 1:instruction-trace-address-array-address/raw)
       ; draw trace
       (print-traces-collapsed 3:space-address/raw/screen-state 2:terminal-address/raw 1:instruction-trace-address-array-address/raw)
       ; expand penultimate line
diff --git a/trace.mu b/trace.mu
index e13be5c4..1b28804c 100644
--- a/trace.mu
+++ b/trace.mu
@@ -213,6 +213,7 @@
 ;; data structure
 (function screen-state [
   (default-space:space-address <- new space:literal 30:literal/capacity)
+  (traces:instruction-trace-address-array-address <- next-input)
   ; app-specific coordinates depending on where the cursor was when the trace
   ; browser was started
   (cursor-row:integer <- copy 0:literal)
@@ -225,6 +226,7 @@
   (default-space:space-address <- new space:literal 30:literal/capacity)
   (0:space-address/names:screen-state <- next-input)
   (screen:terminal-address <- next-input)
+  ; if not at bottom, move cursor down
   { begin
     (at-bottom?:boolean <- greater-or-equal cursor-row:integer/space:1 height:integer/space:1)
     (break-if at-bottom?:boolean)
@@ -294,21 +296,19 @@
   (default-space:space-address <- new space:literal 30:literal/capacity)
   (0:space-address/names:screen-state <- next-input)
   (screen:terminal-address <- next-input)
-  (traces:instruction-trace-address-array-address <- next-input)
-  (print-traces-collapsed-from 0:space-address screen:terminal-address traces:instruction-trace-address-array-address 0:literal/from)
+  (print-traces-collapsed-from 0:space-address/screen-state screen:terminal-address 0:literal/from)
 ])
 
 (function print-traces-collapsed-from [
   (default-space:space-address <- new space:literal 30:literal/capacity)
   (0:space-address/names:screen-state <- next-input)
   (screen:terminal-address <- next-input)
-  (traces:instruction-trace-address-array-address <- next-input)
   (i:integer <- next-input)
-  (len:integer <- length traces:instruction-trace-address-array-address/deref)
+  (len:integer <- length traces:instruction-trace-address-array-address/space:1/deref)
   { begin
     (done?:boolean <- greater-or-equal i:integer len:integer)
     (break-if done?:boolean)
-    (tr:instruction-trace-address <- index traces:instruction-trace-address-array-address/deref i:integer)
+    (tr:instruction-trace-address <- index traces:instruction-trace-address-array-address/space:1/deref i:integer)
     (print-instruction-trace-collapsed screen:terminal-address tr:instruction-trace-address 0:space-address/screen-state)
     (i:integer <- add i:integer 1:literal)
     (loop)
@@ -321,7 +321,6 @@
   (0:space-address/names:screen-state <- next-input)
   (k:keyboard-address <- next-input)
   (screen:terminal-address <- next-input)
-  (traces:instruction-trace-address-array-address <- next-input)
   (c:character <- read-key k:keyboard-address silent:literal/terminal)
   { begin
     ; no key yet
@@ -358,10 +357,10 @@
     (toggle?:boolean <- equal c:character ((#\newline literal)))
     (break-unless toggle?:boolean)
     (original-row:integer <- copy cursor-row:integer/space:1)
-    (tr:instruction-trace-address <- index traces:instruction-trace-address-array-address/deref cursor-row:integer/space:1)  ; assumes cursor row is a valid index into traces, ie no expanded rows
+    (tr:instruction-trace-address <- index traces:instruction-trace-address-array-address/space:1/deref cursor-row:integer/space:1)  ; assumes cursor row is a valid index into traces, ie no expanded rows
     (print-instruction-trace screen:terminal-address tr:instruction-trace-address 0:space-address/screen-state)
     (next-row:integer <- add original-row:integer 1:literal)
-    (print-traces-collapsed-from 0:space-address/screen-state screen:terminal-address traces:instruction-trace-address-array-address next-row:integer)
+    (print-traces-collapsed-from 0:space-address/screen-state screen:terminal-address next-row:integer)
     (back-to 0:space-address/screen-state screen:terminal-address original-row:integer)
     (reply nil:literal)
   }
@@ -370,7 +369,6 @@
 
 (function main [
   (default-space:space-address <- new space:literal 30:literal/capacity)
-  (0:space-address/names:screen-state <- screen-state)
   (x:string-address <- new
 "schedule: main
 run: main 0: (((1 integer)) <- ((copy)) ((1 literal)))
@@ -387,13 +385,14 @@ mem: ((3 integer)): 3 <= 4
 schedule:  done with routine")
   (s:stream-address <- init-stream x:string-address)
   (traces:instruction-trace-address-array-address <- parse-traces s:stream-address)
+  (0:space-address/names:screen-state <- screen-state traces:instruction-trace-address-array-address)
 ;?   ($print (("#traces: " literal))) ;? 1
 ;?   ($print len:integer) ;? 1
 ;?   ($print (("\n" literal))) ;? 1
   (cursor-mode)
-  (print-traces-collapsed 0:space-address/screen-state nil:literal/terminal traces:instruction-trace-address-array-address)
+  (print-traces-collapsed 0:space-address/screen-state nil:literal/terminal)
   { begin
-    (quit?:boolean <- process-key 0:space-address/screen-state nil:literal/keyboard nil:literal/terminal traces:instruction-trace-address-array-address)
+    (quit?:boolean <- process-key 0:space-address/screen-state nil:literal/keyboard nil:literal/terminal)
     (break-if quit?:boolean)
     (loop)
   }