aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/bareio.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/programs/bareio.zc')
-rw-r--r--tests/programs/bareio.zc28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/programs/bareio.zc b/tests/programs/bareio.zc
new file mode 100644
index 0000000..6da50b1
--- /dev/null
+++ b/tests/programs/bareio.zc
@@ -0,0 +1,28 @@
+// bare-metal syscalls: clock, a RAM file, random, and the machine size.
+// zc0 subset, so a run-only image can carry it. names stay off u/m/d.
+fn main() {
+ let buf[16], n, t0, t1, i, fd, r, board[8];
+ t0 = syscall(6, 0, 0, 0);
+ i = 0;
+ while (i < 20000) i = i + 1;
+ t1 = syscall(6, 0, 0, 0);
+ if (t0 >= 0 && t1 >= t0) put_s("tick ");
+ else put_s("notick ");
+ fd = syscall(1, "note", 1, 0);
+ n = syscall(4, fd, "zy", 2);
+ syscall(2, fd, 0, 0);
+ fd = syscall(1, "note", 0, 0);
+ n = syscall(3, fd, buf, 8);
+ syscall(2, fd, 0, 0);
+ buf[n] = 0;
+ put_n(n); put_c(' '); put_s(buf); put_c(' ');
+ r = syscall(8, 0, 0, 0);
+ if (r != -1) put_s("rand ");
+ else put_s("norand ");
+ n = syscall(5, "BOARD", board, 8);
+ if (n > 0) put_s("board ");
+ else put_s("noboard ");
+ put_n(syscall(9, 0, 0, 0));
+ put_c(10);
+ return 0;
+}