diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-07-17 14:57:44 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-07-17 14:57:44 -0700 |
commit | a2a6e35ef5fd56518d6f7a719aab616a7751a551 (patch) | |
tree | 568109f3e8b191fd742d1c82f42f9b0c0c5430c9 | |
parent | 52b870126fb4b90bbe0a30df4a65525bf5c59463 (diff) | |
download | mu-a2a6e35ef5fd56518d6f7a719aab616a7751a551.tar.gz |
1802 - cleanup
-rw-r--r-- | 029debug.cc | 1 | ||||
-rw-r--r-- | 071print.mu | 54 | ||||
-rw-r--r-- | 081run_interactive.cc | 10 | ||||
-rw-r--r-- | edit.mu | 76 |
4 files changed, 49 insertions, 92 deletions
diff --git a/029debug.cc b/029debug.cc index 90a1159e..e185a314 100644 --- a/029debug.cc +++ b/029debug.cc @@ -115,6 +115,7 @@ case _DUMP: { break; } +//: Helper for debugging: grab an address and then dump its value. :(before "End Globals") long long int foo = -1; :(before "End Primitive Recipe Declarations") diff --git a/071print.mu b/071print.mu index c68f1e55..85185405 100644 --- a/071print.mu +++ b/071print.mu @@ -91,8 +91,6 @@ recipe fake-screen-is-clear? [ recipe print-character [ local-scope -#? $print [--- #? 1 -#? ] #? 1 x:address:screen <- next-ingredient c:character <- next-ingredient color:number, color-found?:boolean <- next-ingredient @@ -107,8 +105,6 @@ recipe print-character [ break-if bg-color-found?:boolean bg-color:number <- copy 0:literal/black } -#? $print [eee ] #? 1 -#? $foo #? 1 #? trace [app], [print character] #? 1 { # if x exists @@ -126,8 +122,6 @@ recipe print-character [ #? reply-unless legal?:boolean, x:address:screen #? legal?:boolean <- lesser-than column:address:number/deref, width:number #? reply-unless legal?:boolean, x:address:screen -#? $print [fff ] #? 1 -#? $foo #? 1 # special-case: newline { newline?:boolean <- equal c:character, 10:literal/newline @@ -146,19 +140,14 @@ recipe print-character [ reply x:address:screen/same-as-ingredient:0 } # save character in fake screen -#? $print [ggg ] #? 1 -#? $foo #? 1 index:number <- multiply row:address:number/deref, width:number index:number <- add index:number, column:address:number/deref buf:address:array:screen-cell <- get x:address:screen/deref, data:offset len:number <- length buf:address:array:screen-cell/deref -#? $print row:address:number/deref, [, ], column:address:number/deref, [ vs ], screen-height:number, [, ], screen-width:number, [ length ], len:number, [ -#? ] #? 1 # special-case: backspace { backspace?:boolean <- equal c:character, 8:literal break-unless backspace?:boolean -#? $print [$$$] # shouldn't come here #? 1 { # unless cursor is already at left margin at-left?:boolean <- lesser-or-equal column:address:number/deref, 0:literal @@ -174,51 +163,20 @@ recipe print-character [ } reply x:address:screen/same-as-ingredient:0 } -#? $print [hhh ] #? 1 -#? $foo #? 1 #? $print [saving character ], c:character, [ to fake screen ], cursor:address/screen, [ #? ] #? 1 cursor:address:screen-cell <- index-address buf:address:array:screen-cell/deref, index:number -#? $dump cursor:address:screen-cell #? 1 -#? $print [iii ] #? 1 -#? $foo #? 1 cursor-contents:address:character <- get-address cursor:address:screen-cell/deref, contents:offset -#? $dump cursor-contents:address:character #? 1 -#? $print [jjj ] #? 1 -#? $foo #? 1 cursor-color:address:number <- get-address cursor:address:screen-cell/deref, color:offset -#? $print [kkk ] #? 2 -#? $foo #? 2 -#? $dump cursor-color:address:character #? 1 cursor-contents:address:character/deref <- copy c:character -#? $print [lll ] #? 2 -#? $foo #? 2 -#? $dump x:address:screen #? 1 -#? $dump buf:address:array:screen-cell #? 1 -#? $dump height:number #? 1 -#? $dump width:number #? 1 -#? $dump row:address:number/deref #? 1 -#? $dump column:address:number/deref #? 1 -#? $dump index:number #? 1 -#? $dump len:number #? 1 cursor-color:address:number/deref <- copy color:number -#? $print [mmm ] #? 2 -#? $foo #? 2 # increment column unless it's already all the way to the right { right:number <- subtract width:number, 1:literal -#? $print [nnn ] #? 1 -#? $foo #? 1 at-right?:boolean <- greater-or-equal column:address:number/deref, right:number -#? $print [ooo ] #? 1 -#? $foo #? 1 break-if at-right?:boolean -#? $print [ppp ] #? 1 -#? $foo #? 1 column:address:number/deref <- add column:address:number/deref, 1:literal } -#? $print [qqq ] #? 1 -#? $foo #? 1 reply x:address:screen/same-as-ingredient:0 } # otherwise, real screen @@ -430,24 +388,12 @@ recipe move-cursor [ x:address:screen <- next-ingredient new-row:number <- next-ingredient new-column:number <- next-ingredient -#? screen-width:number <- screen-width x:address:screen -#? screen-height:number <- screen-height x:address:screen # if x exists, move cursor in fake screen { break-unless x:address:screen row:address:number <- get-address x:address:screen/deref, cursor-row:offset -#? $print row:address:number/deref, [ vs ], screen-height:number, [ -#? ] #? 1 -#? legal?:boolean <- greater-or-equal row:address:number/deref, 0:literal -#? assert legal?:boolean, [row too small in move-cursor] -#? legal?:boolean <- lesser-than row:address:number/deref, screen-height:number -#? assert legal?:boolean, [row too large in move-cursor] row:address:number/deref <- copy new-row:number column:address:number <- get-address x:address:screen/deref, cursor-column:offset -#? legal?:boolean <- greater-or-equal column:address:number/deref, 0:literal -#? assert legal?:boolean, [column too small in move-cursor] -#? legal?:boolean <- lesser-than column:address:number/deref, screen-width:number -#? assert legal?:boolean, [column too large in move-cursor] column:address:number/deref <- copy new-column:number reply x:address:screen/same-as-ingredient:0 } diff --git a/081run_interactive.cc b/081run_interactive.cc index f54a73e3..d88885d7 100644 --- a/081run_interactive.cc +++ b/081run_interactive.cc @@ -55,7 +55,7 @@ bool run_interactive(long long int address) { if (Recipe_ordinal.find("interactive") == Recipe_ordinal.end()) Recipe_ordinal["interactive"] = Next_recipe_ordinal++; Old_screen = Memory[SCREEN]; - cerr << "save screen: " << Old_screen << '\n'; //? 1 +//? cerr << "save screen: " << Old_screen << '\n'; //? 2 // try to sandbox the run as best you can // todo: test this if (!Current_scenario) { @@ -170,7 +170,7 @@ if (current_instruction().operation == RUN_INTERACTIVE && !current_instruction() } if (SIZE(current_instruction().products) >= 3) { vector<double> screen; - cerr << "returning screen " << Memory[SCREEN] << " to " << current_instruction().products.at(2).to_string() << " value " << current_instruction().products.at(2).value << '\n'; +//? cerr << "returning screen " << Memory[SCREEN] << " to " << current_instruction().products.at(2).to_string() << " value " << current_instruction().products.at(2).value << '\n'; //? 1 screen.push_back(Memory[SCREEN]); write_memory(current_instruction().products.at(2), screen); } @@ -180,12 +180,8 @@ if (current_instruction().operation == RUN_INTERACTIVE && !current_instruction() //: however, we need what was on the stack to decide whether to clean up :(after "Starting Reply") bool must_clean_up_interactive = (current_recipe_name() == "interactive"); -//? cerr << "reply: " << Memory[SCREEN] << '\n'; //? 1 -//? cerr << "reply2: " << Name[Recipe_ordinal["render-sandboxes"]]["screen"] << '\n'; //? 1 :(after "Falling Through End Of Recipe") bool must_clean_up_interactive = (current_recipe_name() == "interactive"); -//? cerr << "pop: " << Memory[SCREEN] << '\n'; //? 1 -//? cerr << "pop2: " << Name[Recipe_ordinal["render-sandboxes"]]["screen"] << '\n'; //? 1 :(before "End Reply") if (must_clean_up_interactive) clean_up_interactive(); :(before "Complete Call Fallthrough") @@ -199,7 +195,7 @@ void clean_up_interactive() { delete Trace_stream; Trace_stream = NULL; } - cerr << "restore screen: " << Memory[SCREEN] << " to " << Old_screen << '\n'; +//? cerr << "restore screen: " << Memory[SCREEN] << " to " << Old_screen << '\n'; //? 1 Memory[SCREEN] = Old_screen; Old_screen = 0; } diff --git a/edit.mu b/edit.mu index e57461c3..94e4c7cc 100644 --- a/edit.mu +++ b/edit.mu @@ -3,13 +3,52 @@ recipe main [ local-scope open-console - initial-recipe:address:array:character <- new [recipe new-add [ - x:number <- next-ingredient - y:number <- next-ingredient - z:number <- add x:number, y:number - reply z:number + initial-recipe:address:array:character <- new [ +# return true if a list of numbers contains the pattern 1, 5, 3 +recipe check [ + default-space:address:array:location <- new location:type, 30:literal + state:number <- copy 0:literal + { + +next-number + curr:number, found?:boolean <- next-ingredient + break-unless found?:boolean + # if curr is 1, state = 1 + { + state1:boolean <- equal curr:number, 1:literal + break-unless state1:boolean + state:number <- copy 1:literal + loop +next-number:label + } + # if state is 1 and curr is 5, state = 2 + { + state-is-1?:boolean <- equal state:number, 1:literal + break-unless state-is-1?:boolean + state2:boolean <- equal curr:number, 5:literal + break-unless state2:boolean + state:number <- copy 2:literal + loop +next-number:label + } + # if state is 2 and curr is 3, return true + { + state-is-2?:boolean <- equal state:number, 2:literal + break-unless state-is-2?:boolean + state3:boolean <- equal curr:number, 3:literal + break-unless state3:boolean + reply 1:literal/found + } + # otherwise reset state + #state:number <- copy 0:literal + loop + } + reply 0:literal/not-found ]] - initial-sandbox:address:array:character <- new [print-character screen:address, 97] +#? initial-recipe:address:array:character <- new [recipe new-add [ +#? x:number <- next-ingredient +#? y:number <- next-ingredient +#? z:number <- add x:number, y:number +#? reply z:number +#? ]] + initial-sandbox:address:array:character <- new [] env:address:programming-environment-data <- new-programming-environment 0:literal/screen, initial-recipe:address:array:character, initial-sandbox:address:array:character event-loop 0:literal/screen, 0:literal/console, env:address:programming-environment-data ] @@ -344,7 +383,6 @@ recipe render-screen [ row:number <- next-ingredient row:number <- add row:number, 1:literal reply-unless s:address:screen, row:number/same-as-ingredient:4, screen:address/same-as-ingredient:0 -#? $start-tracing #? 1 # print 'screen:' column:number <- copy left:number move-cursor screen:address, row:number, column:number @@ -368,7 +406,6 @@ recipe render-screen [ done?:boolean <- greater-or-equal row:number, screen-height:number break-if done?:boolean column:number <- copy left:number -#? $dump row:number #? 1 move-cursor screen:address, row:number, column:number # initial leader for each row: two spaces and a '.' print-character screen:address, 32:literal/space, 245:literal/grey @@ -1112,7 +1149,6 @@ recipe render-sandboxes [ screen-height:number <- screen-height screen:address:screen at-bottom?:boolean <- greater-or-equal row:number screen-height:number reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address:screen/same-as-ingredient:0 -#? $dump row:number #? 1 # render sandbox contents sandbox-data:address:array:character <- get sandbox:address:sandbox-data/deref, data:offset row:number, screen:address:screen <- render-string screen:address:screen, sandbox-data:address:array:character, left:number, right:number, 7:literal/white, row:number @@ -1131,7 +1167,6 @@ recipe render-sandboxes [ # render sandbox screen if necessary at-bottom?:boolean <- greater-or-equal row:number screen-height:number #? reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address:screen/same-as-ingredient:0 -#? $dump row:number #? 1 { empty-screen?:boolean <- fake-screen-is-clear? sandbox-screen:address:screen break-if empty-screen?:boolean @@ -1139,19 +1174,8 @@ recipe render-sandboxes [ } at-bottom?:boolean <- greater-or-equal row:number screen-height:number #? reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address:screen/same-as-ingredient:0 -#? $dump row:number #? 1 # draw solid line after sandbox -#? $print [aaa ] #? 1 -#? $dump screen:address:screen #? 1 -#? $dump right:number -#? $foo screen:address:screen #? 1 -#? xxx:address:array:screen-cell <- get screen:address:screen/deref, data:offset -#? $dump xxx:address:array:screen-cell -#? yyy:number <- length xxx:address:array:screen-cell/deref -#? $dump yyy:number draw-horizontal screen:address:screen, row:number, left:number, right:number, 9473:literal/horizontal-double -#? $print [zzz ] #? 1 -#? $dump screen:address:screen #? 1 # draw next sandbox next-sandbox:address:sandbox-data <- get sandbox:address:sandbox-data/deref, next-sandbox:offset row:number, screen:address:screen <- render-sandboxes screen:address:screen, next-sandbox:address:sandbox-data, left:number, right:number, row:number @@ -2939,22 +2963,12 @@ recipe draw-horizontal [ break-if bg-color-found?:boolean bg-color:number <- copy 0:literal/black } -#? $print [bbb ], 5155:number/raw, [ #? 1 -#? ] #? 1 move-cursor screen:address, row:number, x:number { -#? $print [ccc ], 5155:number/raw, [ #? 1 -#? ] #? 1 continue?:boolean <- lesser-or-equal x:number, right:number # right is inclusive, to match editor-data semantics break-unless continue?:boolean -#? $print [ddd ], 5155:number/raw, [ #? 1 -#? ] #? 1 print-character screen:address, style:character, color:number, bg-color:number -#? $print [xxx ], 5155:number/raw, [ #? 1 -#? ] #? 1 x:number <- add x:number, 1:literal -#? $print [yyy ], 5155:number/raw, [ #? 1 -#? ] #? 1 loop } ] |