From 7e7cabeb24e0779d0e7aef11fdc93b0ab619014a Mon Sep 17 00:00:00 2001 From: Toby Jaffey Date: Mon, 8 Dec 2025 21:41:51 +0000 Subject: [PATCH] Prettier, better terminal handling, more variation --- apps/lissajous/Makefile | 2 +- apps/lissajous/lissajous.c | 26 +++++++++++++++++--------- precompiled/lissajous.bin | Bin 13352 -> 14528 bytes 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/apps/lissajous/Makefile b/apps/lissajous/Makefile index 7843727..3066fef 100644 --- a/apps/lissajous/Makefile +++ b/apps/lissajous/Makefile @@ -6,7 +6,7 @@ PREFIX:=${DOCKER_CMD} riscv64-unknown-elf- CFLAGS+=-I../../common CFLAGS+=-fno-stack-protector CFLAGS+=-static-libgcc -fdata-sections -ffunction-sections -CFLAGS+=-g -Os -march=rv32ima_zicsr -mabi=ilp32 -static +CFLAGS+=-g -O6 -march=rv32ima_zicsr -mabi=ilp32 -static LDFLAGS:= -T ../linker.ld -nostdlib -Wl,--gc-sections LIBS:= -lgcc # needed for softfp diff --git a/apps/lissajous/lissajous.c b/apps/lissajous/lissajous.c index 92da9ab..e514c35 100644 --- a/apps/lissajous/lissajous.c +++ b/apps/lissajous/lissajous.c @@ -86,13 +86,14 @@ double cos(double x) { } void main(void) { - int freq1 = 45; - int freq2 = 90; + float freq1 = 45; + float freq2 = 90; for (int i = 0; i < 300; i++) { putc('\n'); } - print("\033[H"); // Cursor at Corner of Screen + print("\033[H"); // Cursor at Corner of Screen + print("\033[?25l"); // hide cursor float x = 0; float y = 0; @@ -101,18 +102,25 @@ void main(void) { while (1) { uint32_t framestart = millis(); - for (angle = 0; angle < 2 * PI; angle += 0.15) { + + print("\033[?2026h"); // pause updates + print("\033[2J"); // cls + + for (angle = 0; angle < 2 * PI; angle += 0.2) { movecursor(x, y); - x = 40 * cos(freq1 * angle + beta) + 60; - y = 20 * sin(freq2 * angle) + 30; + x = 20 * cos(freq1 * angle + beta) + 30; + y = 10 * sin(freq2 * angle) + 15; print("#"); } + + print("\033[?2026l"); // resume updates + // wait for next frame - while (millis() < framestart + 20) { + while (millis() < framestart + (1000 / 30)) { yield(); } beta += 0.05; - - print("\033[2J"); + freq1 += 0.01; + freq2 += 0.005; } } diff --git a/precompiled/lissajous.bin b/precompiled/lissajous.bin index 6381bb00d12952ea1ef290701eb70d6c7520906c..0891a0117821a96f8fa06a5592edcc4bb7754b47 100755 GIT binary patch delta 2736 zcmZuzUu;`f89(=)d+)inZxTBfwL?YJ&2b#pbFI=0`~;0VXtoK+`ozPKy2?oF15&BR z%V5&=?Tzg?S?WcHp$!S#sL-@hVavS9>;VyLl&q*M=}^`2)P!gS1e0w*1f!1dJJ-$} z39fW?e9!lNzwgiazTffHvn%IK9*>ab(UthJ`K+mYPXRf- zudt$bWwK~1%7;AW4)c+PVb~4x=pmb@KNI1pY=kFIMR?*&gvZZEpc8>kghv-6JiR<5 zG@aPfI%#eURdZjz^h6i41kBZtuXv#3#UC#<*Q-Bjwx*nU5rAQ9 z?R&cdJE#*eE5W9gYy-cG0N(}KIK5y)-=4#M&uQ+xfLdoHUt9f}!lT(CKGGhfqspK+ znjM6LlEk;~c9dG_&qQqRN9Nl*x$pmxWHgc=|Dy8^#nuCUgtmdQ;BBrC{V;>7_*on& z6};4HfiAIvw=`L>14jvuZVvKzdr%-y8-a>YfY>3}2ExR)o+LcBKzIUg+$B8e5{lJ} zHwc1K5R}r~SbK%1AWyr*c6u4oQ5V7nghMaeCV-K3PJ8YUO04pcWfh<*096`SR4<-Y zp|3(;h5k!$roxfBTP--Ea70l-@iEq5`2bG=D-EpZg2qQ&4S`Vykx>|EFwkJ|A{=RO zr1imE$QqDUE(-Q7@-d*%*~b%$22U;<$i_f627+SWMLr-3mIC-&}y#V z`v{e?P${dQnQI{s$PPXbthLu(LjV>6koE(xAAo&Fu&`n~vb&{|a7RTT76O5i3#A5> zs@uEe77R^lgow?;L<|rzUbwG{pYJEN;=XLH@R3^k{I*&v{Dh3NZB=&o_y>1MZT?MV z>r?szo>FuimCln3I!`w=1fU}j9mk|Qh*;;*&7dfM5}jXd(J>`x51^}GKwvr}qA-9_ ztlsC*MTVJY{cIHjB{VSCf8eoGjN{z0cGTSTb5yVilAFQri)BTyr%CQYM-?nj=n>3wsxi1#?EJQeq%hZPs;CiwjK)o+lw}aDTvIAWryiuW!O91h|r`P@simHeOQTj4>!Uz<%YeK zlMMqr>>X(gf&J`f@`Ol0oOh6qpeL?$Squ#mM7BZ6U}&_PyJXc|UwiLd>+~D2{W};F z4dt7{#?;0!6Ym*?Rcjq#Xk-XFa`x)MtS*D4{%60jj zXlveBq0Eyw@5GIA=26)3M`w7dtx-;A9B-*m%v&nX zW)L*J`s-O>nBEwhtAAMrt2hB3Ynw77QDW0HF*)Z4A&(&0Hbm)GKJyh+f=znTQ7KUIYc-Hh6p!jMp~&rnX>%>A^8j-`;ed z?v@>8rs!CC*~k*(yjk}+EJ9;hL%c8mZYQb;0zi`hw+%7R$T>oETrw}A+d_M9s?N%b2qUN3WlUGWl9%2>(`i+1HCy*)goVv{IdVY=rhX+euyu@H ztMayBkof^B)DOy>z>UcE1fK2h!@jE{6H*L68SuOZnzsw`q6^3|f1Sob`SGmgG*=G3 z+H4K|4s51?Dix3q1R#mg29ZG^VrlRy40K5x(7z7-b-$e5s;SZmPn=RfFa-9{Yk*u7 z|F*NO2Rq<_tH}12OcDwGLe9Uy{{>su9KRG>Ve7A692dxFmhE}iH`Z_5hS5isr!Tr?{O7ZLCc>0Fi{6Bv*? z4XIFt!rMZ!9-7L=+3?shuFr%2^8dMPoUXy(_5VHBN*Vhf`hPHRrZ$*T+M^Htfqhi9 z@)sWyOnR4ge*Q3WicUF2j@YJy< z3uhuWc`{SQJ@yJB?^9#K-)?3pPKX^qxH;;GMYsbI)iJwhwerLM3 Oej6}voFL?p6aNLi!8p|b delta 1531 zcmYjRU1(fI6h3qBo!w-!OHxPMLTj_lY}S}=LhZK3pLTzOZ9vq}H_?Z*ETZ5;2z~HH z*j=xiHQE@%h(%GhdC0bc4-G3_`~efRCgOv6sXiFkK%|9$xwl|!O+wdi?k1WGhq-gk znK|ct=Q}eya`m+)8Qnw9QS!|+U1(yZ%9~B&5x<{E6$f5YZ9S2!YT_gcoGuX2t2rXU zSY38Zl6sp{^#tW)Bu}bv<0)amkB7;-&#i5#f`xsG9JhT-`>Dd|r?nmXO~rR?LmMW} z+u=E~BWdqGRVa9Vh{J~6q3peCALYz)@swSjKLzDK2-GL%Vqa@ zF1tp!jOMwFOmf*V#btPgE1ejUb(RM&HSY2!?D9aO?@7vKUc7uzAW@x=vp7*Qqhkp> z`cuMLtbOFT69pB_;-K3)zGDzUT=pI(1;K?S8J;BBktgAUZj_VR$;j?Z!&ZAojKLSd zHBy;hgH&yyT;=E2846%BI>OA(JbdTi+g?}xFvVY4HNig)XkTeoTD zQ{NU)DatMc>z*-pRd1qtQ?wiaoVB-PEN#l(v%Bnh*yl`Vv2{!pV-&AmVj_S<-i2KB zQ@r^Rmigcff96oL1y1Xf?e07`kEFSMgmE)AXW6m5W%i^kyN6le zhTkLTPCu7_aY3M!`19jT75CA~!Oi>F|EVDcg5M3h?RD9eC)te_#->R2&JfUIKufoV zAyKBrvk#*`t@&ZMw5rMTU!~I^(eyyVn+82W%dM-(SWky$?M2Nb`IcA(YPUvUg2qVWpsyo!s&qH5KijalMpzqqz52WCqQbFi@p^xq8=hN^{%MJ$K+%a@; z)pX7qcM-T|WW`1F20^N)P(7f<{MsV0Q5P+ZzGWT^SR(iw+kG&zR%q44bljmFAoU37 z%(k!M?EAVHZz>9>Pd46z($~Xo?VjKv_z(Uqqf>?`1o1zyjuvDM$1QzjPlx&&!3Sr( zSzRt|!eIj!-ZrCovZENI#o8?d^ZMt^4y_<~vHCdW?CCT8N{_9V{NT4B?p@fv!8!QO zF=ugTMf;iM(Ue{OG3CsbYKUn!P|xy{dR(?&u4@fPU)nC8NekYB(F+g`Ea5;-KQtiK zS|2B-$4T&qP(|$vaA)n0rFz|hv~8~oyY||qMeDSE>G%I-fh|=6eS6t{iRbsg%g3I@ qvg^Y;aPEmi$DT