aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test.asm41
1 files 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