From ff8a3bc4ac48f8025d793c078f4c6d2ffbce4019 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Wed, 5 Mar 2025 22:08:17 +0200 Subject: Add procedure declaration & call macros --- atk16_schasm/main.scm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'atk16_schasm/main.scm') diff --git a/atk16_schasm/main.scm b/atk16_schasm/main.scm index 3258a7f..a3f16ad 100644 --- a/atk16_schasm/main.scm +++ b/atk16_schasm/main.scm @@ -47,7 +47,7 @@ (def-label 'branch-true (emit-word 2)) -;; use macros for convenience +;; use macros like %if, %while for convenience (let ((x #x5678)) (%if-else (R1 == R2) (emit-word #x1234) @@ -56,11 +56,18 @@ (%if (R1 <= (u16 #xFF)) (emit-word #xbeef)) -(comment - (ld R1 (u16 10)) - (%while (R1 > (u16 0)) - (%call println (label 'text-data)) - (sub R1 (u16 1)))) +;; procedure declarations +(%def-proc println str) +(def-label 'println + ;; R0 := str + ;; ... + (ld PC SP pop: #t indirect: 1)) + +;; procedure calls +(ld R1 (u16 10)) +(%while (R1 > (u16 0)) + (%call println (label 'text-data)) + (sub R1 (u16 1))) ;; compile to a 128KB image file (write-image-to "out.bin") -- cgit v1.3