From 07f64b796d3aa2ca33496df019148d4d9f18eb3e Mon Sep 17 00:00:00 2001
From: Aryadev Chavali <aryadev@aryadevchavali.com>
Date: Thu, 2 Nov 2023 23:29:50 +0000
Subject: Implemented a routine which prints out a buffer of characters and use
 it

All in my assembly/virtual machine!
---
 test.asm | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/test.asm b/test.asm
index 0962956..6f857b8 100644
--- a/test.asm
+++ b/test.asm
@@ -11,32 +11,35 @@
   mset.byte 2
 
   push.reg.word 0
-  msize
-  malloc.stack.byte
-  mov.word 1
-  push.word 0
-  mov.word 2
+  mov.word 8
   push.reg.word 0
-  push.reg.word 2
-  push.word 1
+  call print_cptr
+  push.reg.word 8
+  mdelete
+
+  push.byte '\n'
+  print.char
+
+  halt
+
+;;; print_cptr: Prints pointer to a buffer of characters.  Pointer
+;;; should be on the stack as a word.
+print_cptr:
+  mov.word 0
+  push.word 0
+  mov.word 1
   push.reg.word 0
-  msize
-  sub.word
-  sub.word
+  push.reg.word 1
   mget.stack.byte
-  mov.byte 24
+  print.char
   push.reg.word 1
-  push.reg.byte 24
-  push.reg.word 2
-  mset.stack.byte
-  push.reg.word 2
   push.word 1
   plus.word
-  mov.word 2
-  push.reg.word 2
+  mov.word 1
+  push.reg.word 1
   push.reg.word 0
   msize
   eq.word
   not.byte
-  jump.if.byte 17
-  halt
+  jump.if.byte *-13
+  ret
-- 
cgit v1.2.3-13-gbd6f