From 529a4a7e655f7c0fbce4d9081128dddb2d452f55 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Thu, 3 Jul 2025 11:21:06 +0200 Subject: [PATCH] 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