From e394b9c34d37dd1c33fbb0077fc5067dd924fc57 Mon Sep 17 00:00:00 2001 From: Perry Kivolowitz Date: Sun, 11 Dec 2022 10:29:43 -0600 Subject: [PATCH] getting close --- projects/snow/main.s | 63 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/projects/snow/main.s b/projects/snow/main.s index 364cb53..211b7e1 100644 --- a/projects/snow/main.s +++ b/projects/snow/main.s @@ -7,7 +7,9 @@ .equ MAX_LINE, 24 .equ MAX_LINE_X2, 48 -storm .req x27 +storm .req x27 // base address of storm +estorm .req x28 // end of storm + main: stp x29, x30, [sp, -16]! stp x27, x28, [sp, -16]! @@ -36,10 +38,20 @@ main: stp x29, x30, [sp, -16]! 1: mov storm, x0 // The base address of the // allocated memory will be // preserved in x27. + mov estorm, x0 // prep end of storm calculation ldr x2, [sp], 16 // Restore the allocation size. + add estorm, estorm, x2 // Preserve end-of-storm. mov w1, wzr // Fill with zero. bl memset // x0 still had base address. + bl InitializeStorm + +10: bl Erase + bl StepAll + bl RenderAll + bl Delay + b 10b + 99: mov x0, storm bl free @@ -49,6 +61,53 @@ bye: ldp x27, x28, [sp], 16 ldp x20, x30, [sp], 16 ret +/* line comes to us in w0 + column comes to us in w1 +*/ + +Move: stp x20, x30, [sp, -16]! + mov w2, w1 + mov w1, w0 + ldr x0, =move_str + bl printf + ldp x20, x30, [sp], 16 + ret + +Erase: stp x20, x30, [sp, -16]! + mov w0, 1 + mov w1, 1 + bl Move + ldr x0, =erase_str + bl printf + ldp x20, x30, [sp], 16 + ret + +RenderOne: + ret + +RenderAll: + ret + +Delay: + ret + +StepOne: + ret + +StepAll: + ret + +InitializeStorm: + stp x20, x30, [sp, -16]! + mov x20, storm +1: mov x0, x20 + bl ResetFlake + add x20, x20, Flake.size + cmp estorm, x20 + bne 1b + ldp x20, x30, [sp], 16 + ret + /* x0 contains the address of a Flake in need of being reset. The column number of a Flake is anywhere from 1 to 80 (a default terminal). The starting line is anywhere from 1 to @@ -100,6 +159,8 @@ mod: sdiv x2, x0, x1 // x2 gets a // b .data bad_malloc: .asciz "Allocation of flakes has failed" +move_str: .asciz "\033[%d;%dH" +erase_str: .asciz "\033[2J" .section Flake .struct 0