From bdadc933ef7aa44535533a106139aa1b1506e9aa Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 4 Oct 2014 23:00:19 -0700 Subject: 95 --- edit.mu | 25 +++++++++++++++++++++++++ mu.arc | 37 +++++++++++++++++++------------------ 2 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 edit.mu diff --git a/edit.mu b/edit.mu new file mode 100644 index 00000000..5ac6e043 --- /dev/null +++ b/edit.mu @@ -0,0 +1,25 @@ +(main + (cls) + ((x1 integer) <- literal 10) + ((y1 integer) <- literal 5) + (cursor (x1 integer) (y1 integer)) + ((s string) <- literal "Hello, ") + (print (s string)) + (bold-mode) + ((s string) <- literal "you") + (print (s string)) + (non-bold-mode) + ((s string) <- literal ".") + (print (s string)) + ((x2y2 integer) <- literal 1) + (cursor (x2y2 integer) (x2y2 integer)) + ((s string) <- literal "Press a key...") + (print (s string)) + ((key string) <- getc) + (cll) + ((s string) <- literal "You pressed: ") + (print (s string)) + (print (key string)) + ((s string) <- literal "\n") + (print (s string)) +) diff --git a/mu.arc b/mu.arc index ceca177e..9b26027c 100644 --- a/mu.arc +++ b/mu.arc @@ -58,6 +58,7 @@ location (obj size 1) integer (obj size 1) boolean (obj size 1) + string (obj size 1) ; temporary hack ; arrays consist of an integer length followed by the right number of elems integer-array (obj array t elem 'integer) integer-address (obj size 1 address t elem 'integer) ; pointer to int @@ -292,9 +293,6 @@ (if types*.type!array (new-array type (v arg.1)) (new-scalar type))) - print - (do1 nil - (apply prn (map m arg))) ; multiprocessing run @@ -302,6 +300,22 @@ fork (enq (make-context (v arg.0)) contexts*) + ; text interaction + cls + (do1 nil ($.charterm-clear-screen)) + cll + (do1 nil ($.charterm-clear-line)) + cursor + (do1 nil ($.charterm-cursor (m arg.0) (m arg.1))) + print + (do1 nil ($.charterm-display (m arg.0))) + getc + ($.charterm-read-key) + bold-mode + (do1 nil ($.charterm-bold)) + non-bold-mode + (do1 nil ($.charterm-normal)) + reply (do (pop-stack context) (if empty.context (return ninstrs)) @@ -435,20 +449,7 @@ (reset) (awhen cdr.argv (map add-fns:readfile it) + ($.open-charterm) (run 'main) + ($.close-charterm) (prn memory*)) - -($:with-charterm - (charterm-clear-screen) - (charterm-cursor 10 5) - (charterm-display "Hello, ") - (charterm-bold) - (charterm-display "you") - (charterm-normal) - (charterm-display ".") - (charterm-cursor 1 1) - (charterm-display "Press a key...") - (let ((key (charterm-read-key))) - (charterm-cursor 1 1) - (charterm-clear-line) - (printf "You pressed: ~S\r\n" key))) -- cgit 1.4.1-2-gfad0