From f5ac975b7f4f1931a687f4c60d008498f798128b Mon Sep 17 00:00:00 2001 From: Irene Knapp Date: Wed, 23 Sep 2026 03:14:24 -0700 Subject: use file calls to read source during compilation as a result of this, the massive invocations to compile things are now shorter not all the way shorter, but significantly shorter :) because of where these changes are, this doesn't change the binary at all, so no new evoke.hex is needed (yay!) Force-Push: yes Change-Id: I35dfd065b2a4fc4bf1b80f402a07088efca43676 --- transform.e | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'transform.e') diff --git a/transform.e b/transform.e index 26ee650..e184c7e 100644 --- a/transform.e +++ b/transform.e @@ -259,6 +259,35 @@ 3roll pack8 } if-else } if-else } forever ; +~ (output point, filename -- output point) +: pack-file-contents + dup 0 0 sys-open + ~ (output point, filename, open result code or file descriptor) + dup 0 > { + ." Couldn't open " swap emitstring space + ." because " space . ." ." newline + 2 ndrop exit + } if + + ~ (output point, filename, file descriptor) + { + dup 3 pick 1024 sys-read + ~ (output point, filename, file descriptor, read result code or length) + + dup 0 > { + ." Error while reading from " 3roll emitstring + ." because " space . ." ." newline + drop exit + } if + + dup 0 = { + 3 ndrop exit + } if + + 4 roll + 3unroll + } forever ; + + ~ In logical terms, this modifies an input buffer metadata structure ~ in-place to push a new, zeroed one into the start of the linked list formed ~ through the next-source field. -- cgit 1.4.1