From 1a18c9e24be64b116f7f726d8b2951d5a214e4cd Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 25 Apr 2021 21:35:14 -0700 Subject: . --- shell/README.md | 2 +- shell/data.limg | 84 ++++++++++++++++++++++++++++++++++++++++ shell/iterative-definitions.limg | 84 ---------------------------------------- 3 files changed, 85 insertions(+), 85 deletions(-) create mode 100644 shell/data.limg delete mode 100644 shell/iterative-definitions.limg (limited to 'shell') diff --git a/shell/README.md b/shell/README.md index 6c83c08f..2c94018d 100644 --- a/shell/README.md +++ b/shell/README.md @@ -29,7 +29,7 @@ $ echo '(+ 1 1)' |dd of=data.img conv=notrunc You can also try one of the files of definitions in this directory (`*.limg`). ```sh -$ cat iterative-definitions.limg |dd of=data.img conv=notrunc +$ cat data.limg |dd of=data.img conv=notrunc ``` Now run with both code and data disks: diff --git a/shell/data.limg b/shell/data.limg new file mode 100644 index 00000000..c54a1229 --- /dev/null +++ b/shell/data.limg @@ -0,0 +1,84 @@ +( + (globals . ( + (hline1 . (fn () (screen y lo hi color) + (while (< lo hi) + (pixel screen lo y color) + (set lo (+ lo 1))))) + (vline1 . (fn () (screen x lo hi color) + (while (< lo hi) + (pixel screen x lo color) + (set lo (+ lo 1))))) + (hline . (fn () (screen y color) + (hline1 screen y 0 (width screen) color))) + (vline . (fn () (screen y color) + (vline1 screen y 0 (height screen) color))) + (andf . (fn () (a b) + (if a + (if b + 1 + ()) + ()))) + (orf . (fn () (a b) + (if a + a + b))) + (brline . (fn () (screen x0 y0 x1 y1 color) + ((fn (dx dy sx sy) + ((fn (err) + (brline1 screen x0 y0 x1 y1 dx dy sx sy err color)) + (+ dx dy))) + (abs (- x1 x0)) + (- 0 (abs (- y1 y0))) + (sgn (- x1 x0)) + (sgn (- y1 y0))))) + (brline1 . (fn () (screen x y xmax ymax dx dy sx sy err color) + (while (orf (< x xmax) (< y ymax)) + (pixel screen x y color) + ((fn (e2) + (if (>= e2 dy) + (set x (+ x sx)) + ()) + (if (<= e2 dx) + (set y (+ y sy))) + (set err (+ err + (+ + (if (>= e2 dy) + dy + 0) + (if (<= e2 dx) + dx + 0))))) + (* err 2))))) + (read_line_2 . (fn () (keyboard stream) + ((fn (c) + (if (= c 10) + stream + (if (= c 0) + stream + (read_line_2 keyboard (write stream c))))) + (key keyboard)))) + (read_line . (fn () (keyboard) + (read_line_2 keyboard (stream)))) + (fill_rect . (fn () (screen x1 y1 x2 y2 fill_color) + (while (< y1 y2) + (hline1 screen y1 x1 x2 fill_color) + (set y1 (+ y1 1))))) + (chessboard . (fn () (screen px) + (chessboard1 screen px 0 15))) + (chessboard1 . (fn () (screen px y color) + (clear screen) + (while (< y (height screen)) + (chessboard2 screen px y 0 color) + (set y (+ y px)) + (chessboard2 screen px y px color) + (set y (+ y px))))) + (chessboard2 . (fn () (screen px y x color) + (while (< x (width screen)) + (fill_rect screen x y (+ x px) (+ y px) color) + (set x (+ x px)) + (set x (+ x px))))) + (main . (fn () (screen keyboard) + (chessboard screen 16))) + )) + (sandbox . (+ 1 2)) +) diff --git a/shell/iterative-definitions.limg b/shell/iterative-definitions.limg deleted file mode 100644 index c54a1229..00000000 --- a/shell/iterative-definitions.limg +++ /dev/null @@ -1,84 +0,0 @@ -( - (globals . ( - (hline1 . (fn () (screen y lo hi color) - (while (< lo hi) - (pixel screen lo y color) - (set lo (+ lo 1))))) - (vline1 . (fn () (screen x lo hi color) - (while (< lo hi) - (pixel screen x lo color) - (set lo (+ lo 1))))) - (hline . (fn () (screen y color) - (hline1 screen y 0 (width screen) color))) - (vline . (fn () (screen y color) - (vline1 screen y 0 (height screen) color))) - (andf . (fn () (a b) - (if a - (if b - 1 - ()) - ()))) - (orf . (fn () (a b) - (if a - a - b))) - (brline . (fn () (screen x0 y0 x1 y1 color) - ((fn (dx dy sx sy) - ((fn (err) - (brline1 screen x0 y0 x1 y1 dx dy sx sy err color)) - (+ dx dy))) - (abs (- x1 x0)) - (- 0 (abs (- y1 y0))) - (sgn (- x1 x0)) - (sgn (- y1 y0))))) - (brline1 . (fn () (screen x y xmax ymax dx dy sx sy err color) - (while (orf (< x xmax) (< y ymax)) - (pixel screen x y color) - ((fn (e2) - (if (>= e2 dy) - (set x (+ x sx)) - ()) - (if (<= e2 dx) - (set y (+ y sy))) - (set err (+ err - (+ - (if (>= e2 dy) - dy - 0) - (if (<= e2 dx) - dx - 0))))) - (* err 2))))) - (read_line_2 . (fn () (keyboard stream) - ((fn (c) - (if (= c 10) - stream - (if (= c 0) - stream - (read_line_2 keyboard (write stream c))))) - (key keyboard)))) - (read_line . (fn () (keyboard) - (read_line_2 keyboard (stream)))) - (fill_rect . (fn () (screen x1 y1 x2 y2 fill_color) - (while (< y1 y2) - (hline1 screen y1 x1 x2 fill_color) - (set y1 (+ y1 1))))) - (chessboard . (fn () (screen px) - (chessboard1 screen px 0 15))) - (chessboard1 . (fn () (screen px y color) - (clear screen) - (while (< y (height screen)) - (chessboard2 screen px y 0 color) - (set y (+ y px)) - (chessboard2 screen px y px color) - (set y (+ y px))))) - (chessboard2 . (fn () (screen px y x color) - (while (< x (width screen)) - (fill_rect screen x y (+ x px) (+ y px) color) - (set x (+ x px)) - (set x (+ x px))))) - (main . (fn () (screen keyboard) - (chessboard screen 16))) - )) - (sandbox . (+ 1 2)) -) -- cgit 1.4.1-2-gfad0