Not logged in

Differences From Artifact [d8bd82a4f91dc27e]:

File debug.rx part of check-in [c44b785881] - initial update to debug.rx by crc on 2010-09-15 19:34:46. [annotate] [view]

To Artifact [295342dee0dd1877]:

File debug.rx part of check-in [e091b5413a] - update debug.rx for latest image. refactor the code a bit as well. by charleschilders on 2010-09-20 00:53:43. [annotate] [view]


@@ -10,44 +10,46 @@
 
   ( Resolve addresses to headers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
   : header?   (  a-af ) dup xt->d ;
   : xt->name  (  a-$  ) xt->d d->name ;
-  : .name     (  a-   ) xt->name print space ;
-  : resolve   (  n-   ) header? if .name ;then red "<call " print (.) '> emit space ;
-  : (resolve) (  n-   ) header? if red dup . yellow '( emit space .name ') emit space ;then red . ;
+  : .name     (  a-   ) xt->name puts  space ;
+  : <call>    (  n-   ) red "<call " puts putn '> emit space ;
+  : resolve   (  n-   ) header? if .name ;then <call> ;
+  : (name)    (  a-   ) yellow '( emit space .name ') emit space ;
+  : (resolve) (  n-   ) header? if red dup putn space (name) ;then red putn space ;
 
   : instr?    (  n-f  )
-     0 case: "nop" print     0 ;case
-     1 case: "lit" print    -1 ;case
-     2 case: "dup" print     0 ;case
-     3 case: "drop" print    0 ;case
-     4 case: "swap" print    0 ;case
-     5 case: "push" print    0 ;case
-     6 case: "pop" print     0 ;case
-     7 case: "call" print   -1 ;case
-     8 case: "jump" print   -1 ;case
-     9 case: ";" print       0 ;case
-    10 case: ">jump" print  -1 ;case
-    11 case: "<jump" print  -1 ;case
-    12 case: "!jump" print  -1 ;case
-    13 case: "=jump" print  -1 ;case
-    14 case: "@" print       0 ;case
-    15 case: "!" print       0 ;case
-    16 case: "+" print       0 ;case
-    17 case: "-" print       0 ;case
-    18 case: "*" print       0 ;case
-    19 case: "/mod" print    0 ;case
-    20 case: "and" print     0 ;case
-    21 case: "or" print      0 ;case
-    22 case: "xor" print     0 ;case
-    23 case: "<<" print      0 ;case
-    24 case: ">>" print      0 ;case
-    25 case: "0;" print      0 ;case
-    26 case: "1+" print      0 ;case
-    27 case: "1-" print      0 ;case
-    28 case: "in" print      0 ;case
-    29 case: "out" print     0 ;case
-    30 case: "wait" print    0 ;case
+     0 case: "nop"   puts  0 ;case
+     1 case: "lit"   puts -1 ;case
+     2 case: "dup"   puts  0 ;case
+     3 case: "drop"  puts  0 ;case
+     4 case: "swap"  puts  0 ;case
+     5 case: "push"  puts  0 ;case
+     6 case: "pop"   puts  0 ;case
+     7 case: "call"  puts -1 ;case
+     8 case: "jump"  puts -1 ;case
+     9 case: ";"     puts  0 ;case
+    10 case: ">jump" puts -1 ;case
+    11 case: "<jump" puts -1 ;case
+    12 case: "!jump" puts -1 ;case
+    13 case: "=jump" puts -1 ;case
+    14 case: "@"     puts  0 ;case
+    15 case: "!"     puts  0 ;case
+    16 case: "+"     puts  0 ;case
+    17 case: "-"     puts  0 ;case
+    18 case: "*"     puts  0 ;case
+    19 case: "/mod"  puts  0 ;case
+    20 case: "and"   puts  0 ;case
+    21 case: "or"    puts  0 ;case
+    22 case: "xor"   puts  0 ;case
+    23 case: "<<"    puts  0 ;case
+    24 case: ">>"    puts  0 ;case
+    25 case: "0;"    puts  0 ;case
+    26 case: "1+"    puts  0 ;case
+    27 case: "1-"    puts  0 ;case
+    28 case: "in"    puts  0 ;case
+    29 case: "out"   puts  0 ;case
+    30 case: "wait"  puts  0 ;case
     space resolve 0 ;
 
   : end? ( a-a || a- )
     ( First, see if we have a ; followed by a header ~~~~~~~~~~ )
@@ -55,30 +57,26 @@
     ( Otherwise, look for two nop's in a row ~~~~~~~~~~~~~~~~~~ )
     dup @+ 0 =if @+ 0 =if pop 2drop else drop ;then drop ;then
     ( Neither? Discard the address ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
     drop ;
-  : row ( a-a ) cyan dup . @+ instr? if @+ space (resolve) then cr ;
-  : decompile ( a- ) repeat row end? again ;
+  : row       ( a-a )
+    cyan dup putn space @+ instr? if @+ space (resolve) then cr ;
+  : decompile ( a-  ) repeat row end? again ;
 
   ( Interactive browsing of memory ~~~~~~~~~~~~~~~~~~~~~~~~~~ )
   variable x
+  : rows @fh 2 - ;
   : handle
     key
-      'i case: x --  drop ;then
-      'k case: x ++  drop ;then
-      'j case: 20 -x drop ;then
-      'l case: 20 +x drop ;then
+      'i case:    1 -x drop ;then
+      'k case:    1 +x drop ;then
+      'j case: rows -x drop ;then
+      'l case: rows +x drop ;then
       'z case: rdrop drop ;then
     drop ;
-  : browse ( - )
-    repeat
-      clear
-      @x 20 for row next drop
-      handle
-    again ;
+  : browse (  - ) repeat clear @x rows for row next drop handle again ;
 ---reveal---
-  : see ( "- )
-    ' 0; cr decompile normal ;
-  : nav ( a- ) !x browse normal ;
+  : see    ( "- ) ' 0; cr decompile normal ;
+  : nav    ( a- ) !x browse normal ;
 }}
 
 global