summaryrefslogtreecommitdiff
path: root/tnslc/hello.tnsl
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2023-05-18 23:30:18 -0400
committerKyle Gunger <kgunger12@gmail.com>2023-05-18 23:30:18 -0400
commitfe7d97a0a608398f500b1c64ff885acecf2541d5 (patch)
tree2518859272af7dc0d4e1b0a4b6f16b342d5d35f4 /tnslc/hello.tnsl
parentb6cd30ba672c64f3d96aa2b0c98bc13f4c603d21 (diff)
File reading/writing
Diffstat (limited to 'tnslc/hello.tnsl')
-rw-r--r--tnslc/hello.tnsl31
1 files changed, 28 insertions, 3 deletions
diff --git a/tnslc/hello.tnsl b/tnslc/hello.tnsl
index 8fb98a3..0742564 100644
--- a/tnslc/hello.tnsl
+++ b/tnslc/hello.tnsl
@@ -1,8 +1,33 @@
:include "c_wrap.tnsl"
-{}uint8 hello = "Hello World!\n\0"
+{}uint8 star = "hello.tnsl\0"
+{}uint8 space = " \0"
+{}uint8 new_line = "\n\0"
-/; main [int]
- _printf(~hello{0})
+/; print_triangle (int argc)
+ /; loop (int i = 0; i < argc) [i++]
+ /; loop (int j = 0; j < argc - i) [j++]
+ _printf(~space{0})
+ ;/
+ /; loop (int j = 0; j < 1 + 2*i) [j++]
+ _printf(~star{0})
+ ;/
+ _printf(~new_line{0})
+ ;/
+;/
+
+/; main (int argc, ~~uint8 argv) [int]
+ # On windows, the first two arguments are passed in RCX and RDX, so we need to
+ # update their positions here or else tnsl will have garbage values in r8 and r9
+ asm "mov r8, rcx"
+ asm "mov r9, rdx"
+
+ # If on linux, you would use rdi and rsi instead of rcx and rdx, respectively
+ # simply comment out the bove asm, and uncomment the below lines
+ # asm "mov r8, rdi"
+ # asm "mov r9, rsi"
+
+ print_triangle(argc)
+
return 0
;/ \ No newline at end of file