2014-10-07 06:39:13 +00:00
|
|
|
; a screen is an array of pointers to lines, in turn arrays of characters
|
|
|
|
|
2014-12-13 02:07:30 +00:00
|
|
|
(function new-screen [
|
2015-01-03 02:13:04 +00:00
|
|
|
(default-space:space-address <- new space:literal 30:literal)
|
2014-12-14 21:21:32 +00:00
|
|
|
(nrows:integer <- next-input)
|
|
|
|
(ncols:integer <- next-input)
|
|
|
|
(result:screen-address <- new screen:literal nrows:integer)
|
|
|
|
(rowidx:integer <- copy 0:literal)
|
2014-10-07 21:03:09 +00:00
|
|
|
{ begin
|
2014-12-14 21:21:32 +00:00
|
|
|
(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)
|
2014-10-07 21:03:09 +00:00
|
|
|
}
|
2014-12-14 21:21:32 +00:00
|
|
|
(reply result:screen-address)
|
2014-11-25 05:09:07 +00:00
|
|
|
])
|