about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-03-12 12:36:22 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-03-12 12:36:30 -0700
commitd92a6115b918b335ebed80ce7c411fe7937c93b3 (patch)
tree46a03c9356d9f5cc94d743c60be5fb4a22af36d9
parentbfb5f707ac1ae5181565761e3164ab6d930333fe (diff)
downloadmu-d92a6115b918b335ebed80ce7c411fe7937c93b3.tar.gz
889 - ah, fixed that final error
-rw-r--r--trace.arc.t32
-rw-r--r--trace.mu4
2 files changed, 36 insertions, 0 deletions
diff --git a/trace.arc.t b/trace.arc.t
index fe4b2549..6dcebe0a 100644
--- a/trace.arc.t
+++ b/trace.arc.t
@@ -1581,9 +1581,11 @@ run: main 5: l")
             "+ main/ 2 : g hi "
             "+ main/ 3 : j    "))
   (prn "F - process-key expands trace index on a page with only subindex lines"))
+
 (run-code main31
   (default-space:space-address <- new space:literal 30:literal/capacity)
   (0:space-address/names:browser-state <- copy 3:space-address/raw/browser-state)
+  ; reinitialize
   (first-index-on-page:integer/space:1 <- copy 0:literal)
   (first-subindex-on-page:integer/space:1 <- copy -2:literal)
   (last-index-on-page:integer/space:1 <- copy 2:literal)
@@ -1623,5 +1625,35 @@ run: main 5: l")
             "                 "))
   (prn "F - process-key expands final index of trace at bottom of page"))
 
+(run-code main32
+  (default-space:space-address <- new space:literal 30:literal/capacity)
+  (0:space-address/names:browser-state <- copy 3:space-address/raw/browser-state)
+  ; reinitialize
+  (first-index-on-page:integer/space:1 <- copy 0:literal)
+  (first-subindex-on-page:integer/space:1 <- copy -2:literal)
+  (last-index-on-page:integer/space:1 <- copy 2:literal)
+  (last-subindex-on-page:integer/space:1 <- copy -2:literal)
+  (expanded-index:integer/space:1 <- copy -1:literal)
+  (expanded-children:integer/space:1 <- copy -1:literal)
+  (to-top 0:space-address/browser-state 2:terminal-address/raw)
+  (print-page 0:space-address/browser-state 2:terminal-address/raw)
+;?   (replace-character 2:terminal-address/raw ((#\* literal))) ;? 1
+  (s:string-address <- new "kk\nJjj")
+  (k:keyboard-address <- init-keyboard s:string-address)
+  (process-key 3:space-address/raw/browser-state k:keyboard-address 2:terminal-address/raw)
+  (process-key 3:space-address/raw/browser-state k:keyboard-address 2:terminal-address/raw)
+  (process-key 3:space-address/raw/browser-state k:keyboard-address 2:terminal-address/raw)
+  (process-key 3:space-address/raw/browser-state k:keyboard-address 2:terminal-address/raw)
+  (process-key 3:space-address/raw/browser-state k:keyboard-address 2:terminal-address/raw)
+  (process-key 3:space-address/raw/browser-state k:keyboard-address 2:terminal-address/raw)
+  (5:integer-address/raw <- get-address 2:terminal-address/raw/deref cursor-row:offset)
+  )
+(each routine completed-routines*
+  (awhen rep.routine!error
+    (prn "error - " it)))
+;? (prn (memory* memory*.5)) ;? 1
+(when (~is 3 (memory* memory*.5))
+  (prn "F - key movement stays within screen bounds, even when no next trace on page"))
+
 (reset2)
 ;? (print-times) ;? 3
diff --git a/trace.mu b/trace.mu
index dd46c664..89e0d17c 100644
--- a/trace.mu
+++ b/trace.mu
@@ -301,6 +301,8 @@
     { begin
       (done?:boolean <- greater-or-equal i:integer n:integer)
       (break-if done?:boolean)
+      (at-bottom?:boolean <- greater-or-equal cursor-row:integer/space:1 printed-height:integer/space:1)
+      (break-if at-bottom?:boolean)
 ;?       ($print (("down: incrementing\n" literal))) ;? 1
       (cursor-row:integer/space:1 <- add cursor-row:integer/space:1 1:literal)
       (cursor-down screen:terminal-address)
@@ -335,6 +337,8 @@
     { begin
       (done?:boolean <- greater-or-equal i:integer n:integer)
       (break-if done?:boolean)
+      (at-top?:boolean <- lesser-or-equal cursor-row:integer/space:1 0:literal)
+      (break-if at-top?:boolean)
       (cursor-row:integer/space:1 <- subtract cursor-row:integer/space:1 1:literal)
       (cursor-up screen:terminal-address)
       (i:integer <- add i:integer 1:literal)