about summary refs log blame commit diff stats
path: root/edit.mu
blob: 706d5de43b6de0115c0775baec43044206d3f0b3 (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

(function new-screen [
  (default-scope:scope-address <- new scope:literal 30:literal)
  (nrows:integer <- next-input)
  (ncols:integer <- next-input)
  (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 <- not-equal rowidx:integer nrows:integer)
    (loop-if x:boolean)
  }
  (reply result:screen-address)
])