From 7f83828988c2efab56f37c1711cbf6118be8234f Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sat, 8 Mar 2025 00:48:20 +0200 Subject: Refactor, improve --- atk16_schasm/structs_idea.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 atk16_schasm/structs_idea.scm (limited to 'atk16_schasm/structs_idea.scm') diff --git a/atk16_schasm/structs_idea.scm b/atk16_schasm/structs_idea.scm new file mode 100644 index 0000000..d2fcc86 --- /dev/null +++ b/atk16_schasm/structs_idea.scm @@ -0,0 +1,28 @@ +# This buffer is for notes you don’t want to save, and for Chicken Scheme code. + +;; define structs +(%def-struct point + (x u16) + (y u16)) + +;; static struct instances +(%static global-point + point (u16 10) (u16 20)) + +;; use static address as load offset +(ld R0 ZR (global-point:x)) + +;; stack allocated instances +(%def-proc (main) + ;; alloc some space on the stack + (%svar my-point (point:size)) + ;; use stack offset as load offset + (ld R0 SP (my-point:x))) + +;; a vector of static instances +(let loop ((i 0)) + (when (< i 10) + (%static (string->symbol (format "global-points/~A" i)) + point (u16 i) (u16 i)))) + +(ld R0 ZR (global-points/0:x)) -- cgit v1.3