From 2b1da2ffb87fcdad07ff86345e03886c79856f9e Mon Sep 17 00:00:00 2001 From: rex <631752+reginaldford@users.noreply.github.com> Date: Sat, 19 Oct 2024 17:20:29 -0400 Subject: [PATCH] minor cleanup and updates to examples --- sms_src/examples/benchmark.sms | 2 +- sms_src/examples/benchmark_fastfib.sms | 2 +- sms_src/examples/char.sms | 6 ++++-- sms_src/examples/clock.sms | 2 +- sms_src/examples/colorTGA.sms | 5 ++--- sms_src/examples/fire.sms | 2 +- sms_src/examples/generateRGBImg.sms | 4 ++-- sms_src/examples/termDraw_saturn.sms | 2 +- sms_src/examples/watch.sms | 2 +- src/main/engine/sm_ast_engine.c | 17 +++++++---------- src/main/sm_main.c | 3 +-- 11 files changed, 22 insertions(+), 25 deletions(-) mode change 100644 => 100755 sms_src/examples/fire.sms diff --git a/sms_src/examples/benchmark.sms b/sms_src/examples/benchmark.sms index a6541e0d..18b2ef62 100755 --- a/sms_src/examples/benchmark.sms +++ b/sms_src/examples/benchmark.sms @@ -1,4 +1,4 @@ -#!/usr/local/bin/sms -m1g +#!/usr/local/bin/sms -m.5g #Use this to benchmark something { let _errHandler = (x) => { diff --git a/sms_src/examples/benchmark_fastfib.sms b/sms_src/examples/benchmark_fastfib.sms index 901cc09a..a2988988 100755 --- a/sms_src/examples/benchmark_fastfib.sms +++ b/sms_src/examples/benchmark_fastfib.sms @@ -26,5 +26,5 @@ return 2 *f(n-3) + f(n-4) + f(n-2) ; }; - benchmark(:f(31)); + benchmark(:f(40)); }; diff --git a/sms_src/examples/char.sms b/sms_src/examples/char.sms index 2a2c518d..603b1116 100755 --- a/sms_src/examples/char.sms +++ b/sms_src/examples/char.sms @@ -1,7 +1,7 @@ # Library function to get a char from the byte number in ascii # The character is returned as a length 1 string.. # Example: char(55) == "7" -cxLet(parent(_scratch), :char , ( value ) => { +{ let index = round(value); let chars = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" str+ "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F" str+ @@ -20,4 +20,6 @@ cxLet(parent(_scratch), :char , ( value ) => { "\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF" str+ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"; strPart(chars, index, 1); -}); + # Return this context as a library + self; +}; diff --git a/sms_src/examples/clock.sms b/sms_src/examples/clock.sms index 3e20650f..b6703eba 100755 --- a/sms_src/examples/clock.sms +++ b/sms_src/examples/clock.sms @@ -1,4 +1,4 @@ -#!/usr/local/bin/sms -qm32k +#!/usr/local/bin/sms -qm48k # Simply puts the time every second { # Represents a number from 0 to 99 diff --git a/sms_src/examples/colorTGA.sms b/sms_src/examples/colorTGA.sms index 5e6a9e08..ffb38c2d 100755 --- a/sms_src/examples/colorTGA.sms +++ b/sms_src/examples/colorTGA.sms @@ -67,8 +67,7 @@ return true; } else return ; }; - - # Expose the write function for usage - cxLet(parent(_scratch), :colorTGA, self); + # Return this context as a library + self; }; diff --git a/sms_src/examples/fire.sms b/sms_src/examples/fire.sms old mode 100644 new mode 100755 index 52f952c5..477f1101 --- a/sms_src/examples/fire.sms +++ b/sms_src/examples/fire.sms @@ -1,4 +1,4 @@ -#!/usr/local/bin/sms +#!/usr/local/bin/sms -qm16 #Draws a fire-like image. #Must be run in the directory with colorPrint.sms { diff --git a/sms_src/examples/generateRGBImg.sms b/sms_src/examples/generateRGBImg.sms index c359d284..34a36f52 100755 --- a/sms_src/examples/generateRGBImg.sms +++ b/sms_src/examples/generateRGBImg.sms @@ -1,9 +1,9 @@ -#!/usr/local/bin/sms -m1g +#!/usr/local/bin/sms -m1.15g # Usage: This script demonstrates creating a rainbow gradient using colorTGA.write { # Evaluate and include the colorTGA library - eval(fileParse("colorTGA.sms")); + let colorTGA = import "colorTGA.sms"; # Image dimensions let width = 1920; diff --git a/sms_src/examples/termDraw_saturn.sms b/sms_src/examples/termDraw_saturn.sms index c710cd81..4aa4ed2b 100755 --- a/sms_src/examples/termDraw_saturn.sms +++ b/sms_src/examples/termDraw_saturn.sms @@ -1,4 +1,4 @@ -#!/usr/local/bin/sms -qm16 +#!/usr/local/bin/sms -qm24 # Uses tput to get terminal dimensions, # Then runs a for loop to fill up the screen with numbers { diff --git a/sms_src/examples/watch.sms b/sms_src/examples/watch.sms index b1c97dd1..f24e8940 100755 --- a/sms_src/examples/watch.sms +++ b/sms_src/examples/watch.sms @@ -1,4 +1,4 @@ -#!/usr/local/bin/sms -qm18k +#!/usr/local/bin/sms -qm64k #Tiny rendition of the linux 'watch' program { let cmd = _args[size(_args) - 1]; diff --git a/src/main/engine/sm_ast_engine.c b/src/main/engine/sm_ast_engine.c index 771b45dc..0ee7eaa1 100644 --- a/src/main/engine/sm_ast_engine.c +++ b/src/main/engine/sm_ast_engine.c @@ -1702,16 +1702,13 @@ inline sm_object *sm_engine_eval(sm_object *input, sm_cx *current_cx, sm_expr *s case SM_PUTLN_EXPR: { sm_string *str; sm_object *evaluated; - for (int i = 0; i < sme->size; i++) { - evaluated = eager_type_check(sme, i, SM_STRING_TYPE, current_cx, sf); - if (evaluated->my_type == SM_ERR_TYPE) - return evaluated; - str = (sm_string *)evaluated; - for (uint32_t i = 0; i < str->size; i++) - putchar((&str->content)[i]); - putchar('\n'); - putchar('\0'); - } + evaluated = eager_type_check(sme, 0, SM_STRING_TYPE, current_cx, sf); + if (evaluated->my_type == SM_ERR_TYPE) + return evaluated; + str = (sm_string *)evaluated; + for (uint32_t i = 0; i < str->size; i++) + putchar((&str->content)[i]); + putchar('\n'); fflush(stdout); return ((sm_object *)sms_true); break; diff --git a/src/main/sm_main.c b/src/main/sm_main.c index 0721e2a9..0f74a57e 100644 --- a/src/main/sm_main.c +++ b/src/main/sm_main.c @@ -147,10 +147,9 @@ int main(int num_args, char *argv[]) { clean_exit(&env, 1); } if (env.quiet_mode == false) { - printf("Custom Heap Size: "); char bytelength_str[16]; sm_sprint_fancy_bytelength(bytelength_str, env.mem_bytes); - printf("%s", bytelength_str); + printf("Custom Heap Size: %s\n", bytelength_str); } break; }