about summary refs log blame commit diff stats
path: root/edit.mu
blob: b390d42a6abb064e9da724a80345a42b4ad63796 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                                         
                 




                                                                     
         





                                                                                                                      
   
                                 
  
; a screen is an array of pointers to lines, in turn arrays of characters

(def new-screen [
  ((default-scope scope-address) <- new (scope literal) (30 literal))
  ((nrows integer) <- arg)
  ((ncols integer) <- arg)
  ((result screen-address) <- new (screen literal) (nrows integer))
  ((rowidx integer) <- copy (0 literal))
  { begin
    ((curr-line-address-address line-address-address) <- index-address (result screen-address deref) (rowidx integer))
    ((curr-line-address-address line-address-address deref) <- new (line literal) (ncols integer))
    ((curr-line-address line-address) <- copy (curr-line-address-address line-address-address deref))
    ((rowidx integer) <- add (rowidx integer) (1 literal))
    ((x boolean) <- neq (rowidx integer) (nrows integer))
    (continue-if (x boolean))
  }
  (reply (result screen-address))
])