From e0428951902411bb4b2cef005d4deb253b5fa643 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Wed, 2 Jul 2025 15:13:45 +0200 Subject: [PATCH 1/7] save drawing to file --- one_line.txt | Bin 0 -> 5456 bytes one_line_canvas.tal | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 one_line.txt diff --git a/one_line.txt b/one_line.txt new file mode 100644 index 0000000000000000000000000000000000000000..9c94cb4e2e83463a4682f22d19835bd495228b4e GIT binary patch literal 5456 zcmeIuTMB|e00q!?qBCRpCQZX8+DJrL^dQg%wVcqNLbQbb`iP))wv9gSS;Bb^zs`H` zazFIaKIxTn=*ph-j&{TD%2}(7ouBmuPlxG9M46vEg;~&<8f&o;d-HG^ZFs^nE_oHz zVeQp!Z58dUwq|oSVPiJ#O@k!J1L+^#i*?f*(kN?XMHbpZUzrOV literal 0 HcmV?d00001 diff --git a/one_line_canvas.tal b/one_line_canvas.tal index 8b2e8d8..2c0a766 100644 --- a/one_line_canvas.tal +++ b/one_line_canvas.tal @@ -1,7 +1,9 @@ |00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 +|80 @Controller/vector $2 &button $1 &key $1 |90 @Mouse/vector $2 &x $2 &y $2 &state $5 &scrolly &scrolly-hb $1 &scrolly-lb $1 +|a0 @File/vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 @@ -33,6 +35,13 @@ ( set pxs-pt to start of pixels ) ;pxs ;pxs-pt STA2 ;on-mouse .Mouse/vector DEO2 + ;on-controller .Controller/vector DEO2 + BRK + +@on-controller + .Controller/key DEI + ( if "e" key is pressed ) + #65 EQU ?write-drawing-file-to-disk BRK @add-px-to-drawing @@ -79,6 +88,13 @@ &end JMP2r +@write-drawing-file-to-disk + ;/filename .File/name DEO2 + #1550 .File/length DEO2 + ;pxs .File/write DEO2 + JMP2r + &filename "one_line.txt $1 + @on-mouse ( -> ) .Mouse/x DEI2 .x STZ2 .Mouse/y DEI2 .y STZ2 From 6330088ba5d30da4b2f566d2cf9c33f049ea5218 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Wed, 2 Jul 2025 20:15:09 +0200 Subject: [PATCH 2/7] init one_line_gen with whole byte sample image --- one_line.pbm | Bin 0 -> 32 bytes one_line_canvas.tal | 4 +-- one_line_gen.tal | 85 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 one_line.pbm create mode 100644 one_line_gen.tal diff --git a/one_line.pbm b/one_line.pbm new file mode 100644 index 0000000000000000000000000000000000000000..6e7c7a446e191fda124bc3d8a9af92ba8899ddde GIT binary patch literal 32 XcmZPwU@&3eV&DKm1t8{Pc#aAIPvi&* literal 0 HcmV?d00001 diff --git a/one_line_canvas.tal b/one_line_canvas.tal index 2c0a766..678221f 100644 --- a/one_line_canvas.tal +++ b/one_line_canvas.tal @@ -5,8 +5,6 @@ |90 @Mouse/vector $2 &x $2 &y $2 &state $5 &scrolly &scrolly-hb $1 &scrolly-lb $1 |a0 @File/vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 - - |58 @canvas-width |1f @canvas-height @@ -93,7 +91,7 @@ #1550 .File/length DEO2 ;pxs .File/write DEO2 JMP2r - &filename "one_line.txt $1 + &filename "one_line.1line $1 @on-mouse ( -> ) .Mouse/x DEI2 .x STZ2 diff --git a/one_line_gen.tal b/one_line_gen.tal new file mode 100644 index 0000000..3f691bf --- /dev/null +++ b/one_line_gen.tal @@ -0,0 +1,85 @@ +|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 +|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 +|a0 @File/vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 + +( + Portable BitMap + https://en.wikipedia.org/wiki/Netpbm#File_formats + P4 + # This is an example binary format of the letter "J" with each byte in decimal notation + 6 10 + 8 8 8 8 8 8 136 112 0 0 + + 88x31 pixel image + row of 88px -> 11 bytes 8 bits per byte + 31 rows -> 341 bytes + + ) + +|00 +@img-pt $2 +@img $20 + + +|0100 +@on-reset + ( set img-pt to start of img ) + ;img ;img-pt STA2 + LIT2 00 "P write-to-image + LIT2 00 "4 write-to-image + #000a write-to-image + #0008 write-to-image + #0008 write-to-image + #0020 write-to-image + #0008 write-to-image + #000a write-to-image + #00e7 write-to-image + #00e7 write-to-image + #00e7 write-to-image + #00e7 write-to-image + #00e7 write-to-image + #00e7 write-to-image + #00e7 write-to-image + #00e7 write-to-image + save-file + BRK + +@write-to-image ( val* ) + ;img-pt LDA2 ( val* pt* ) + STA2 ( ) + ;img-pt LDA2 ( pt* ) + #0002 ADD2 ( pt*+2 ) + ;img-pt STA2 + JMP2r + +@save-file + ;/filename .File/name DEO2 + #0020 .File/length DEO2 + ;img .File/write DEO2 + JMP2r + &filename "one_line.pbm $1 + + +( +@gen-image + ( set image-pt to start of image ) + ;image ;image-pt STA2 + LIT2 00 "P write-to-image + LIT2 00 "4 write-to-image + #000a write-to-image + #0008 write-to-image + #0020 write-to-image + #0008 write-to-image + #00ff write-to-image + JMP2r + + + + +@image-pt $2 +( todo include space for header ) +@image $155 + +( @drawing $1550 ( 5456 ) ) + +) From d7529196b721757bc304bb08f104b56e05a6df9b Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Thu, 3 Jul 2025 10:02:06 +0200 Subject: [PATCH 3/7] switch to using shorts and ascii numbers plus small clean up --- one_line.pbm | Bin 32 -> 15 bytes one_line_gen.tal | 48 ++++++++++++++++++++++------------------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/one_line.pbm b/one_line.pbm index 6e7c7a446e191fda124bc3d8a9af92ba8899ddde..f8af577b842162d6218d35f628c124a82a3e9496 100644 GIT binary patch literal 15 QcmWGA;j&P$;Cc=P052a1VE_OC literal 32 XcmZPwU@&3eV&DKm1t8{Pc#aAIPvi&* diff --git a/one_line_gen.tal b/one_line_gen.tal index 3f691bf..d36b826 100644 --- a/one_line_gen.tal +++ b/one_line_gen.tal @@ -16,49 +16,47 @@ ) -|00 -@img-pt $2 -@img $20 |0100 @on-reset ( set img-pt to start of img ) ;img ;img-pt STA2 - LIT2 00 "P write-to-image - LIT2 00 "4 write-to-image - #000a write-to-image - #0008 write-to-image - #0008 write-to-image - #0020 write-to-image - #0008 write-to-image - #000a write-to-image - #00e7 write-to-image - #00e7 write-to-image - #00e7 write-to-image - #00e7 write-to-image - #00e7 write-to-image - #00e7 write-to-image - #00e7 write-to-image - #00e7 write-to-image + LIT "P write-to-image + LIT "4 write-to-image + #0a write-to-image + LIT "8 write-to-image + #20 write-to-image + LIT "8 write-to-image + #0a write-to-image + #e7 write-to-image + #e7 write-to-image + #e7 write-to-image + #e7 write-to-image + #e7 write-to-image + #e7 write-to-image + #e7 write-to-image + #e7 write-to-image save-file BRK -@write-to-image ( val* ) - ;img-pt LDA2 ( val* pt* ) - STA2 ( ) +@write-to-image ( val ) + ;img-pt LDA2 ( val pt* ) + STA ( ) ;img-pt LDA2 ( pt* ) - #0002 ADD2 ( pt*+2 ) + #0001 ADD2 ( pt*+1 ) ;img-pt STA2 JMP2r @save-file ;/filename .File/name DEO2 - #0020 .File/length DEO2 + #000f .File/length DEO2 ;img .File/write DEO2 JMP2r &filename "one_line.pbm $1 +@img-pt $2 +@img $20 ( @gen-image @@ -74,8 +72,6 @@ JMP2r - - @image-pt $2 ( todo include space for header ) @image $155 From 2df49c1a01388ce4be78a753c63ad77846447bab Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Thu, 3 Jul 2025 10:28:03 +0200 Subject: [PATCH 4/7] one_line -> footer --- footer.1line | Bin 0 -> 5456 bytes one_line_canvas.tal | 2 +- one_line_gen.tal | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 footer.1line diff --git a/footer.1line b/footer.1line new file mode 100644 index 0000000000000000000000000000000000000000..922886a18ae092ceb1ab018b3ea2abe7f7b3974a GIT binary patch literal 5456 zcmeIug>~yz007W#@<3o_ko0H{Q}WxcU<*x2oWv;h4F4xFNF#QS9^Vn}8Z5vZddR~r zb|pu0WJj?TTeS*S(JGlGvusw(s#!DZX2WcnEwerA%(}DQtUuFcx~ZGQA{Moo&28Zb z%P=*wZ}!Zt*|8c{-KyC&yJ}aQic@k+ZqX}v>Rg%23wbH6q!nJ{HCmx1TA(?aV^4Br zN3{!f(Jt8yyJ>gqo})R2LmlRFS2*0Jwqfa(X7$a2DO-|-ZEPb4I=}^U;6bZwRV-!` zTeo^v*Xmept7W(Bx>IwiZh5XQl%=wiy`oq0%3j5-xplYUHl4Q9ae7YQAuc)uMXbj3PzrZBn5OllgIYALpCOAdCB3q9Z>OE!xGWhjrNF`nQFdO}a|8T$hF7n#U;&T^XZyU5s`=j0~tETg%RkzBuuE5FlR%ZwZU5kLIGuIx&0A91K!{}u*+7{ z(Oum&Ji{Y%vLFk(q$|3nFZ7kZvNyJ2@9cwpvMt-OJv*=?3yl*!(ii3umwMD=bGBeh zw&W|m<}dt}zwwQD7a!tNY{gFO#X%g!kstUw-|$!@A|Ww-6R%>;R%}k^e8HDu)}Ga8 zwOMsmnU!ayC4Rwi!><^tnDa7RJ(88Ea!rUdStX zBO9`z@AQLy(k(rZBRLu;D`*A{zv7qu(y4SR9t#I`uWaRa zJTJHvx9T*Urqgn|ZqMy|eNS7G6?vn3;ujC{5`5sWmS`b4k%ark!Pt=(u@);aZB850 o`m{E!n(AKCfycmO;4$zR_}>rw2aJ9^8UO$Q literal 0 HcmV?d00001 diff --git a/one_line_canvas.tal b/one_line_canvas.tal index 678221f..aff98a3 100644 --- a/one_line_canvas.tal +++ b/one_line_canvas.tal @@ -91,7 +91,7 @@ #1550 .File/length DEO2 ;pxs .File/write DEO2 JMP2r - &filename "one_line.1line $1 + &filename "footer.1line $1 @on-mouse ( -> ) .Mouse/x DEI2 .x STZ2 diff --git a/one_line_gen.tal b/one_line_gen.tal index d36b826..1ab3af1 100644 --- a/one_line_gen.tal +++ b/one_line_gen.tal @@ -13,7 +13,7 @@ 88x31 pixel image row of 88px -> 11 bytes 8 bits per byte 31 rows -> 341 bytes - + hexdump -C footer.pbm ) @@ -53,7 +53,7 @@ #000f .File/length DEO2 ;img .File/write DEO2 JMP2r - &filename "one_line.pbm $1 + &filename "footer.pbm $1 @img-pt $2 @img $20 From 940f8e235ccc4370692d328387e171a21ef954c7 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Thu, 3 Jul 2025 10:48:30 +0200 Subject: [PATCH 5/7] load drawing --- footer.1line | Bin 5456 -> 5456 bytes footer.pbm | Bin 0 -> 351 bytes one_line_gen.tal | 44 ++++++++++++++++++-------------------------- 3 files changed, 18 insertions(+), 26 deletions(-) create mode 100644 footer.pbm diff --git a/footer.1line b/footer.1line index 922886a18ae092ceb1ab018b3ea2abe7f7b3974a..88e3d95358382d7d633fd650c7b755fe5d82ff62 100644 GIT binary patch delta 119 zcmV~$$q~XZ3;M1& diff --git a/footer.pbm b/footer.pbm new file mode 100644 index 0000000000000000000000000000000000000000..02d1dcf1382378efa85e606596d9577d89158eaf GIT binary patch literal 351 YcmWGA;j*w$FgE0R4h0OOfQlgi0H-?$#Q*>R literal 0 HcmV?d00001 diff --git a/one_line_gen.tal b/one_line_gen.tal index 1ab3af1..fc3d9fb 100644 --- a/one_line_gen.tal +++ b/one_line_gen.tal @@ -16,19 +16,25 @@ hexdump -C footer.pbm ) - +|1550 @drawing-size +|15f @image-size ( header 9 + data 341 = 350 ) |0100 @on-reset ( set img-pt to start of img ) ;img ;img-pt STA2 + ( file header ) LIT "P write-to-image LIT "4 write-to-image #0a write-to-image LIT "8 write-to-image - #20 write-to-image LIT "8 write-to-image + #20 write-to-image + LIT "3 write-to-image + LIT "1 write-to-image #0a write-to-image + ( image data ) + load-drawing #e7 write-to-image #e7 write-to-image #e7 write-to-image @@ -40,6 +46,13 @@ save-file BRK +@load-drawing + ;/filename .File/name DEO2 + ;drawing-size .File/length DEO2 + ;drawing .File/read DEO2 + JMP2r + &filename "footer.1line $1 + @write-to-image ( val ) ;img-pt LDA2 ( val pt* ) STA ( ) @@ -50,32 +63,11 @@ @save-file ;/filename .File/name DEO2 - #000f .File/length DEO2 + ;image-size .File/length DEO2 ;img .File/write DEO2 JMP2r &filename "footer.pbm $1 @img-pt $2 -@img $20 - -( -@gen-image - ( set image-pt to start of image ) - ;image ;image-pt STA2 - LIT2 00 "P write-to-image - LIT2 00 "4 write-to-image - #000a write-to-image - #0008 write-to-image - #0020 write-to-image - #0008 write-to-image - #00ff write-to-image - JMP2r - - -@image-pt $2 -( todo include space for header ) -@image $155 - -( @drawing $1550 ( 5456 ) ) - -) +@img $image-size +@drawing $drawing-size From 529a4a7e655f7c0fbce4d9081128dddb2d452f55 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Thu, 3 Jul 2025 11:21:06 +0200 Subject: [PATCH 6/7] get image export working --- footer.1line | Bin 5456 -> 5456 bytes footer.pbm | Bin 351 -> 351 bytes one_line_gen.tal | 85 ++++++++++++++++++++++++++++++++++++++++++----- playground.tal | 63 +++++++++++++++++++---------------- 4 files changed, 111 insertions(+), 37 deletions(-) diff --git a/footer.1line b/footer.1line index 88e3d95358382d7d633fd650c7b755fe5d82ff62..b57de0b3c6ee323ec1abf28203ceb00f067f9f97 100644 GIT binary patch literal 5456 zcmeIu2SO8R7y!_{$tU@Tv`MD-b`C_5nh-RUwCOdIUK9w`%J!h59&sq1(1aGWp#vsZV1olLc;G_-Aw&>E z0x9&M4+9v&2*$AUZ1>sTv;AlLZ~zmS!VKo{7T&=*T)-tP;0mtc25#XF?%_RrfRFGA zKEoGyfZyQ{_!Ituzu_PF7nbk{U*Q}4f}ijMp5Qy28fW^McBVGehSHFma#L!GEwL@M z`3~RVOwMF2#-eT7rX12CT*4(i(kFc?ph7C7BRXPYCT0^h;ksOxPx(~n2|ckd_N9R| zlt=PN87mWYs?D^SKG)~QTjQOvL2gjbsZDB=enG#aUoufZkOBT_xL?w zU)UG-r32|eK2R!3MXhKRy{cD@rLokP+EQIAOL-|hN{`~B@KyNAf8)Nf-`VfX6Z1s> zpng(6$zSBJ%+Jh^%v0tGeMjHWSM-RM=wI{?`WyX){zQME-_Zm5fR7Dl+0Ncm*uw85i z+s0mDTi8qN1-6Mj$2PEy{PWyq_Qm?v`c`%;_bR_#*e>qiyXC#|K5;-CkQK5@9ukM; zTB%m70 zIc87UGq%Ar=mymw8|Aa|Y3ZbNT&fdws!rFLI$P(CxfAY`Yj91rMYpLo(Jr^}CVo<^ z7he~v%n?@?&cu%7N}lA4As><<5thSJ!lcZQnh?|S96v8!=C5+s+3WR1;i5ce=lo2V zN>h2NOq99sj=3Zk#8vsWcvrZ~-{tyY$neP9Ibp%te1xIv6PYgsya%4xbRZFvUQ}5^<%~Var zl5F1QOu3_WWK*EZ7WTqp*OUq)>NBHOKvGGwJo=$ zrtZ)VYm1g_DURUFfgGu^mS~BZD6t%gKIgL@8}PA|NQvB4x^gUrTr4DFS4yRx+*bxl zU+zh%*cB3fAdl6FHr1!f~OU1Mg1x^Kir-{`545-PspDX!wEwr1;& z9%-=}$)W7Yu52roYHA(BHf+f;Ji|3C!!+7PtOQD`^pv48R0mpL>uIUh)k3warmCm8 zs;ByDz(riZ1hmh%tjBn?N4d1iSYlhW*fXPHxPr&`g@G^<$Kp(y$rCx1BdIHfQXsjM zL)oN7`gFjCVxanxEw_ZG(2`=lul}~O8dwdi237;Bfz`ljU^TEBSPiTORs*Yn)xiG_ F{0DVS6*T|= literal 5456 zcmeIu*J0|&0szqMWHh5h&LC-09VGkiz7{}{WEWt8Ue-s$I1!cG)RAMYre{Jk?WX@=Tgb3vnqf(F(2L5-#8z&fpAr zqANLyt=a{7tDYsSS71$ zQ5)O3)wMcS+iF=&yJ^>)s#9@GGi5F>j~o9%w-??1r7N9k#+|*a+)kEv$s)Pz{v>Jc_;)$bk}7qH0u&Td@}7 zkcB+pM;?#>hkB@my{H?tqgK?68c{te?!g}Va-c??s2AxW4Vcf5Qcw!YK_#fp`HXwq zW431Z?2g@XYEH>jUB#1U;#{1gg|Gxm!INCsQJsQSnbxO`X>-z?v?lFIXVRVYCfY=w z7!y1pQ#xf+ZgP{E)Fh^1DVA(Yw&)-Sx`GE>Xh~+FFAt=lI6`AIhEMQGcm}_~6Br94 zI79<95c^_Z>Z1W1!l5t{Mqmv3a3J(SUl@V`81Mn>vp(&UJ|2((9kL-G@i8CL0qz@p zy{`?7p)tfG@BI?(D|z^u}_0^AK@n5<+Jbu&hRSU)th{g&gchz3xB|G@JBd{SLv?gYOY++ANY-a z#H(^E+>3cBFW-vS!bQC(Khn4O2mOY>g@1*A!CA@+dGV(Hpl^5)Z^}hJ%UAVQx|i;S zt9(bf_yInIPho?$=v{aPFJLabz*qE!)@Uuhiyz`nTnn$li?9-2;Tpcf5BLV&;8s|J zH{l)FC9C1+uI?J1;o%vc<2hN7C0UUd@=9Lm8(q_P`awVGhHmMO?&*Ps#*rMz3w5ze zJmS$Aozn$fuq9iu7xv2D*qXod5B|wFe9L!y&ky{-_UxUlS5KYv@$JEOVi>4y`Z@6SAtq%Bzi((x+gobC7}M)P3F8{GQ(px8SUeUE z>R#E&8|fX*RJZI_oVwF+noh^Z)Au4!d_Z{4-{4tEyPEhFyGi4Tl~UT ze90$`NqthAR3{ZviNr`c0$&JWgc2!{Q#n;)DMX2qsdREOUSvf7G#jKX7v3MdUd@@e@m;R-F^}f1aov-#+>(n`QPrZ|NYM)wvJv;^; d1CN2nz+>Ps@ECXuJO&;EkAcU)W8gm;_&-jIW7+@! diff --git a/footer.pbm b/footer.pbm index 02d1dcf1382378efa85e606596d9577d89158eaf..b672d375db79023c6baa8774d17f87bcb9207951 100644 GIT binary patch literal 351 zcmYk&u};G<5P;!7j#Z)(ln7O*TZ8BW6u}U&Gy_Ao(wT*Yg(qOkm4WgeY`g?!Kw@Ah zyZ~L$a@SKY8g2ZRR diff --git a/one_line_gen.tal b/one_line_gen.tal index fc3d9fb..46f80a3 100644 --- a/one_line_gen.tal +++ b/one_line_gen.tal @@ -1,7 +1,8 @@ |00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |a0 @File/vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 - +%dbug { #01 .System/debug DEO } +%print { .Console/write DEO } ( Portable BitMap https://en.wikipedia.org/wiki/Netpbm#File_formats @@ -35,16 +36,82 @@ #0a write-to-image ( image data ) load-drawing - #e7 write-to-image - #e7 write-to-image - #e7 write-to-image - #e7 write-to-image - #e7 write-to-image - #e7 write-to-image - #e7 write-to-image - #e7 write-to-image + ( get first 8 pixels ) + #1f ;/y STA + &y-loop + #58 ;/x STA + #01 ;/i STA + &row-loop + ;/x LDA #07 ADD ;/y LDA get-pixel + ;/x LDA #06 ADD ;/y LDA get-pixel + ;/x LDA #05 ADD ;/y LDA get-pixel + ;/x LDA #04 ADD ;/y LDA get-pixel + ;/x LDA #03 ADD ;/y LDA get-pixel + ;/x LDA #02 ADD ;/y LDA get-pixel + ;/x LDA #01 ADD ;/y LDA get-pixel + ;/x LDA ;/y LDA get-pixel + build-byte + write-to-image + ;/x LDA #08 ADD ;/x STA + ;/i LDA INC ;/i STA + ;/i LDA #0c NEQ ?/row-loop ( run 11 times ) + ;/y LDA #01 ADD ;/y STA + ;/y LDA #3e + NEQ ?/y-loop ( run 31 times ) save-file BRK + &i $1 + &y $1 + &x $1 + + +@build-byte ( p p p p p p p p ) + LITr 00 ( p p p p p p p p | 00 ) + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + STHr + JMP2r + +@get-pixel ( x y -> bool ) + ,/y STR ( x ) + ,/x STR ( ) + ;drawing ,/pt STR2 + &loop + ( looped through the entire drawing? ) + ,/pt LDR2 ( pt* ) + ;drawing ;drawing-size ADD2 ( pt* end-of-drawing* ) + EQU2 ?/not-found + ( check if current x y has already been visited ) + ,/pt LDR2 LDA2 ( x1 y1 ) + ,/x LDR ( x1 y1 x ) + ,/y LDR ( x1 y1 x y ) + EQU2 ?/found + ( incrment pointer and save it ) + ,/pt LDR2 ( pt* ) + #0002 ADD2 ( pt+2* ) + ,/pt STR2 + !/loop + ¬-found #01 JMP2r + &found #00 JMP2r + &pt $2 + &x $1 + &y $1 + +( @remove-offset ) + @load-drawing ;/filename .File/name DEO2 diff --git a/playground.tal b/playground.tal index 10b2c93..08ee0af 100644 --- a/playground.tal +++ b/playground.tal @@ -2,35 +2,42 @@ |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 + |0100 @on-reset - #0aa8 - #0058 - NIP - ( mem-test ) + #01 + #00 + #00 + #00 + #00 + #00 + #00 + #01 + build-byte + ( + #0a ( b ) + #10 SFT ( b ) + #00 ( b 00 ) + ?{ #01 ORA } + ) BRK -@mem-test ( a b c -- x) - !{ - &a $1 - &b $1 - &c $1 - } - ,/a STR - ,/b STR - ,/c STR - - ,/a LDR - ,/b LDR - ADD - ,/c LDR - ADD ( 06 ) - - STH - #00 STH - SWP2r - JMP2r - - - - ( !{ &a $1 } ) +@build-byte ( p p p p p p p p ) + LITr 00 ( p p p p p p p p | 00 ) + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + LITr 10 SFTr + ?{ LITr 01 ORAr } + STHr + JMP2r From bbcf9111fc0c15214ad4dceb4037c4cc44e85b32 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Thu, 3 Jul 2025 19:34:27 +0200 Subject: [PATCH 7/7] add a bit of docs --- one_line_gen.tal | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/one_line_gen.tal b/one_line_gen.tal index 46f80a3..1c698f3 100644 --- a/one_line_gen.tal +++ b/one_line_gen.tal @@ -1,8 +1,9 @@ |00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |a0 @File/vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 + %dbug { #01 .System/debug DEO } -%print { .Console/write DEO } + ( Portable BitMap https://en.wikipedia.org/wiki/Netpbm#File_formats @@ -36,7 +37,6 @@ #0a write-to-image ( image data ) load-drawing - ( get first 8 pixels ) #1f ;/y STA &y-loop #58 ;/x STA @@ -64,7 +64,7 @@ &y $1 &x $1 - +( take 8 01 / 00 off the stack and create a byte with them ) @build-byte ( p p p p p p p p ) LITr 00 ( p p p p p p p p | 00 ) ?{ LITr 01 ORAr } @@ -85,6 +85,7 @@ STHr JMP2r +( given a pixel x,y figure out if it is part of the drawing ) @get-pixel ( x y -> bool ) ,/y STR ( x ) ,/x STR ( ) @@ -110,9 +111,7 @@ &x $1 &y $1 -( @remove-offset ) - - +( load .1line drawing file from disk to memory ) @load-drawing ;/filename .File/name DEO2 ;drawing-size .File/length DEO2 @@ -120,6 +119,7 @@ JMP2r &filename "footer.1line $1 +( write a single byte to the image buffer ) @write-to-image ( val ) ;img-pt LDA2 ( val pt* ) STA ( ) @@ -128,6 +128,7 @@ ;img-pt STA2 JMP2r +( save the image buffer to disk ) @save-file ;/filename .File/name DEO2 ;image-size .File/length DEO2