From 09178c6d94e90e3711bfbd28c4c9f67f261b2595 Mon Sep 17 00:00:00 2001 From: jakob Date: Tue, 20 Jan 2026 12:56:35 +0100 Subject: [PATCH] clean up ppm viewer program --- ppm viewer/AF.dev | Bin 0 -> 30015 bytes ppm viewer/README.md | 16 ++++ ppm viewer/ppm.asm | 195 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 211 insertions(+) create mode 100644 ppm viewer/AF.dev create mode 100644 ppm viewer/README.md create mode 100644 ppm viewer/ppm.asm diff --git a/ppm viewer/AF.dev b/ppm viewer/AF.dev new file mode 100644 index 0000000000000000000000000000000000000000..6e1b37c9af70d38b87faab04d505cd10a9a9ded0 GIT binary patch literal 30015 zcmeHv2UJs8*R~Ytklqs#(i1uaLhn_2?@d4uv7un^jtZgz(m@nO5DNKgW@rglPKzuN=mh5H1(GXL=T#iB6$-1YruH?=;**R)MMYHs z>SWn|OA zF*zwP?-W@c6_}03Qp?EPlYFzaRNiKWs2?RE$e@M1$+0>mmY&hKI%i;0PZtE}5ETCh z!szZG^>T)he5G1WSy^Rw-SXzze0B8?12_tb$$mZ$a;9`}j5}p0b;|V89FlH=7Jdzx zSA=6$kk|muS&`(d(BhoP^1RUUg2=K)E9=^G9(eAnx8XB5|7r&|wjYPQAw*Kjcoi1=nFScZEjym|t&3`@^PQ@+z7&(kE%Qzy(*#m`g2 zFV-S0!_bzX=|&j5lA7w!ZyDOBQOFlt>#rPYU@@peuYWy#A)9{vNW=5Xt=_J7Lr3NB zXn!*$t&?kVN{lRX0Mz$<(^L#GRufl%Wfr1!muit0Ymw(-Y1tg%cx$_y@Q8(3S^4wl zm91D-T~b_8xT1LRqTHOEX|Zvc4$i48{sb*TvWgBt2R-y#hW1_Uq`epR-aXM|B+wgr z{p;zQ3Yk~h*1o!Vc)<9bSHF0%(f&@5NccrI$%bF@ga)No@6 zy5k&O=8qfKP*;2M)QNjP+<*1v=Xbxo`{U2w|3r>Ip#ApyZ*PBj^V6#zA3lC~>TKuw zHLGSPCp#J#pfT8wPJe!O`pfHw@0{4;BsF|Ll8@f{FJ08vBc9z^`s_;EnSJX)3gn|8 zQ>m@-iC|uW^vOxp&NEHY!aFOfjn+3_k~8_>!MzV3-FyA!r3{(>$?1>ZfB)^LS1-CR zo>^I#FW~bOJ~Zs{IP8fXtDj$PyL_bS~x%+kU(hS;j-NB?z1nR_q=`c>bKv1{o@bd&!2FD&VN1Rfd2aH zyPto0+HtJS)5C2DI}{Tm{GVSw*wfv5qN%`$OO+2}$PHgbmqx(U=cPY9v*X$2wo`j* z=`;$sa)}blZd1EX#3q-V6zfBxy$ckliyGXHb~AokmDzrB3^ z4be2&iPzi5)e4ms)!+9%w3@NXMhT3TXZ|2$Z&F?l}Jo`>J~{9(Z}Zy=zZATb(+a!O&^=^;&SVgu6>Ws?>$_ng*q7}>2laso;yJ7C2ub}<<>o33m z_ABtD_vzES_wL`kb^Gq!dp$i*oWZ6u2xNWr6-sgBKv2!HnYR#s-Zla*y!Y-Hx>w0Ez;7U+BW&<*=2>xTbeetx9*RP4D)ky4s&a%opoR+7SyPxWUE*bB4B=zR1elY`nK9(NmHhJ)*sS$(7dH8;2XNw5prM8GFk|MXI?Np9HjBvxw+_Mu#|7r|QPc=~^X-*W zqI@0AjSO9FtPF)bFJ}i9UTcgkc9B0l!~~yYLtYsp3^OO_Q#A9V4A&>?mqhY}B#i`X z+PY*TZ!uuf-q=`VD(wnz*Om^(UPSH;ww71LWvr)J(w$hDUIJfhPLKnyoX+nOS%NRTO;_xX!p3FfZGdP>Uw=sf-lxG5;ID1=3U?8XeU&0{5VgLo2(&JMQWIk82Dzzlpn z0bbiyOcd$qx>!kVBxV#Mo=enp7N8dfu(LgwG>p2H9xBFylpmt!V}P0K$0~{9JMz#Y z3<>EDbRIz?!HQBHC(I4u##>W31a)mR!N!2)FJ%SVa1%U@MtU0t*>cRdcncOL)s8vU zi!;rOSroymj1kl(2>pyn!xX=&n5u#<5xdw|w=$AF#gjeB-#m;>KfyQa5?gGh3vDzs zJq)lRW_VXI&P>2oRo9TRv{%LQ*Cz1Gqj`YUEML8%2=3}cVWKrT&Wb$IjbTjJ2{a*A z#tKvIsbiezz_GFz0l-xoFDQ-Ty9qH&qPCY9A7F^F(bKZyk*p+cYXt7pg5HVX0TEf(s=*j?A zl*b54qXpHm!ipGSaRfKTjuv7oNVFp52kRM7wTx*R6MW1!OiMje{$0=Z+81qGpB>)u z?8uJ3)=gcNizj)BYvP1+eOY8Y2FY%GHHWIIstyY6B)~25Va)LrI!a%q`6pX zc0|zYjyBV#og@Qwl!}~?0s>3@AL2X zK>P9N&O4i{XN9{i3uXfw9fd??m9J$%R992?_VO$*UU{f>|L&bT=S|5<53q5hp^mbR zn`wdwq43()wLSZrx*J#3O&{%NLLcu$Nw*`ER8)Z#x_kHTbLYEu?A)2-MlX)wEeT|o zMDnX*gyk`Opi@~if)cctB9-{P>Bdrzc3pqTKwsNuK2q zoQh}xaH%Xx2tdi2unhi;7FI;@rbpU7>gmhO%!K=A%$NaR6zl7d7s&Jw5f$W+_wU`l=`OMG^r-G;$n6%`>;q#(l(G}xC@Vla%V^5S2Ac|8c!AY8w{ds|sq zuBD|-#G-N98gSOqM&U4+8D5OSV8)b;g!31=b#!zfF~#F?!=qxy23S-?am%9kvL;6i zfvYSERy|>541Z#fC5}i|R8%CANa5k(XU}zIXCy5T(p?n9jggX<1aV=lOtd18cH?cS zE$Qoh1YYKw*RL*g9IBleQ!y!c^^EBC^Aa|Gm$Kozl-l_ti*jOe5=I2OTJV^Z;lsa# zIf2DsceQN&{kM02$LiN#-n1RqgU1tq2J%ByL)*iMQVBeXU}pr{oWFP(jY2YgT3T9q zdaRkg+|_X+(C4dS1*>93NQ*0Fm#bN$Gsp6jQcTPe<#er|u{AG!bcDMu9m%H*hisb6x=K0;B)>okbV<0y0eWBqK%3@Hty{AyEiDbJqX{0afS@wZi#o}Pm}W~%0{cozj*(Jg zrR0$|q|tW7Y-iF!A6iiu+nj~QV=!nC(i~`!5)$B95+x{! z7Oo6quN&|3@Iw2Os~wN8oOpcWRO1xCq7W9W8YL0@l5k#eICo_@2O3CsZJNdIIezDB zCto7GFsEm5F2hz3NWKs^9V$=mJ)!5i0vmhawboF{qhCm4nR-I8{qa1qPs7j z=SX)t*tfAnNb}pfa!o_RmbvY_z6?uBDJ+ODO8%Tr)ySbTJD0mtBQ*@)z&mO z)a__&*jB%;p{A;=VEO#nGsmPP#P~W&MRdrFni`0gEt)gYiw81W8U@G;mjrVynA&rF z^}ukIJzrQD!aUiS-+Sxq4_8n0-Z{UoXhLDIF39qLGDOyn5@=C^m63ww!OV(L(i2+? z?wxFEC|ejTWiIq%7KHOwM(}fkIdRrh2(BtBeF8ZZ355su?|J+4%eQae{PN3NID?jW z^XkWzZCfZ5iX12u3X9TEkC70-5ndH1EC|($x4=3XF%x1UH`moZID7o(%ctL*Klb+G ziQgaH{`2LtKOs*6?dKPNK7ah~&ZRe9$A0ea=)HLQ((xnfYpUbpV(dlaOj}HO6t5}< zEDB+MC_mDYEY(Bhhw#8;1q6yhS*N!a_4H$PZeQ_)6@fGvP@n+cD?_-mAcVCp%cE`G zg8gfuE$rG`wYhqUm4Fg!jvr}7n&d`b5zd2mA?4r{J_TGtfnfEj%G)=u_B?v<kx|j>*&zXJY`}WrtPF!qSd%U*f=GHaO4>iAe zeE*le$FJ{Qe|6*Ht7~0wetqx8+uk3ZpFP@hV9VnJTh268pKMt5q_e&I*rDk;lYAts z8J@J7cyV3`FV&tNYEE+EW5A0n3f0@TAiDQ@=c8*Ufma}dSC4G2Ofm)81m|b~D?m(8 z6sFg*B!a69l1IaGSY5#9{csevB!HiHhwqlP|b?2 zJ(~|VH=fzDwy(XV_rT`f16z6yH1*0FK-AOP^z=~6gT0%-Usrmjq2l=J!cDm|yBe#0 zyLkNco|ZT-$5;!(cLD5?c2t1NRfvhVB3H!*?hazL zGEA@eySUz)r+cn-f@XVk`Fnutz}kiF8}iC?LZlq5x~4XGM#{rgOquAJK5TF$cofvI zPo%pB@fqwu%?y=@a}r>tjnK7XW9ste{d%e6$M)uD?JY;wtZZ5~&)Y^4uqc9Y1`IwaO;g7>oX&R>`e`eri^W`DSWu6@zt?i&kk-` zoD^cu!$ROI$(ANz=}4KHRVfw^FCKbwty2z^{QUIZ#of!&L63oolM5r@cKP6XkW(NP zECB!)5bRh}(T<8~qZ}ED)+81gD-YMh*_w;X3*k=n)`cL_XR0$)R#Mi{LNN(ic09t4 z@3P-^?(aLe6+q|(DB7E|6C>rQQt;UBO{;!7vZEKlsvjjeR`4eP*mG!`i=~j#9Zt2}#Q#me9s)tE;pc>G$G3rVMvBp1i9ei^A1FW9hJiTRhIEW|cC^@xO zhO;|1=J(z222qv6_4s<{-Se$m3bP>Ak>*JEHY93kBUTN(aSaXiFmqBx9N$Sq7^c|2 zU=32@Q+2>pMx#)bnK3WhHp7&A+qTNvo0EHhA%owN5gz#V#9n}9kWqu3SI74>KmIN>_?yi1%``jR}p4>WfZf7MJ z382jYEBS&5CPYP|@sTxi9$q>s*KCNi-a6f}qdL`*G18WjVh<~zjy%P$G+b3c!$Qbn zh7S{k`dm3jh`{?1;J(A#KZaHF ztK)lD=44I{cC8*8!y(~jjY@cXVoyJkfLMFW?S`TYW%E3YS(Yr#sh+wJ6xxtI;xTCT zYaMd9dTyQBIxh+YPzDsjE09D$4B%Q3Ky59Z)O-63-1$iM5%}Q3k*@I;_|Z-@TOJnT z&+wYS`-YbuW=1TD=IQHVL5&T*yHD5w5UapssS+t$5kZvkFCm!A)Bzq`5OPHpa3e-{p3 z1+-8(EQP_khihg%y?tJW)yc=#I~uaRi;;Cu?q3g zf1{ig&kk*a`QC3{-Lr2avIzc7S@n~rZ5twShgu%(SO*K`i^JRdK>xRHd3IpqvqLQq z+`HFQb!ScPqNLC`OFWpnU>KA{aH>mVDo7?-XSU9bTp7xgdE!X42Q2pfKB%u) z@&4lRyO*Xm=J;G`Yv{Xm?(VsRE8c2-G!~nqr@dPJm zg+Jv$$wXjd-|cfP3u71gF;c8a0*VeOD>-r0)it9nhzkPP7@hxARVcst|Kkh`ZcSFw z!_6gq?c1Lo+_F1=_KFFq-D~oHJlukyG+-Xc*E>KA>3p~p4zdewhL8Msc>Ar!;?k^? zrX@4(Z(G%Oc*o7U<#*TRW%@bJ@urs}F&w0=3}x-iO9reST|L=z^K5r(9f)UXG_?L3 zWF0xd5K|v?S3wY?W7Bf5B6{zfJGO4&@<7HkAD*2)W6-7oZ`xUa%?sgB@vuIAmP*uE zH{1K`^B?W52lWm*>ej9ed1gD&l!1j2wr{Q|dqVweo0wwHX#2xO3qBxvgKgqNA#;Klb9esDs zUutWBaQ#QI0t^d7SOp=>?YSet&;o2>-MqMe?TSD~b8h0~(NPfil9L3mGS)>e4Q7j( z#LuMOu_)B81>+xVDC`9z9N;>-<63jwf>E(08PVq}7W8dj^=xl_-+@hitxX7pWcYw~ zdWwkK);^hDdcLRbX>--dqM6H5!? ztV*H~6aCD#5)i0|7u&bY3PpUJ0VD@H0x%@Na@aCA;`Fv+Kov3I5x1!GX2;I5c%!zO zY17BXK+W)gKq;^YT1$dBZ2V^nw<;*v8;LKJ&As1P+;b3t>)DZ(zQZjoMT;{+Mx=S! zug^(2Q8?q;>LvHqFMqh9@KIwCw1*p3++DZyQq}xJxs%E>qrz=Wl6>8dtyu{uy*S(g zwta8=_6IGi@2<_=w>W!*5w#=|A(cE@D2JjXl3N}tYRn$7I?W0e!7@ap1DIelAdrGT z2*H`UiLSRgcS1x0G2pKv{v%>MTswL1Li_&Jb51lZn>so|MRlOqMnRE|L(TWoV-r3b zR`6C7lsqMd7t7||-%#{;Z{t&#YsQm$`m~y(H1iD&9pJ zYGdkVEHu=ml6AB-6_wCxYNys$ytk~{xBswvJ&5*^{As>soJIc33RnRLuqqqi53mc& zEm#)i3SW-lK=f5m6vAvR&wh6Aq8y^ZGhlVM>rnf~Whb|;$V>>3n^-bxDPXkJr+Mlc zu*jcD2Kx!DsO)5F(7I&OgZgEllfftj!~m|Exj9mYR9ZA9`OR^e2`aN69`9QBL&J(qGctTkS@V5$!CwX(fJiID^*~brL~>X@ zdIo~YLem0}%1twZ!TS0EiAeO5O2(^>+vi%_8gfr=D~Jhn84y6^|5|D)S#Atn0+{Zf zJ65kq!eZvf2X$A>d$^(ChwW>gwrzdWv2T9HNFz0k@hE(e*s#>fW}3t@md8&dQd2Ob zU=0*iNqJIC=*wd}A@PUk`L?E~+gG10oj*C)-QSF|G*A};Szu%qg)*x~nw)AXJhgRY zS)9RN;F56(fk^HQ!u|5KuPjz{{rhc?Z=C)BtLq&%I(I`A+4ozPyW92qp>o8~TI!k3 z3?k;U*bGBoN`GHL(Oke;mKt%Uc=q+$yxUtU-*)WVzHC97g=8XwRm9h?Gq$WZlP>27 zlTi3{bMxlnWp6K^dUq&81@Ike%~ z-3w3eU1*vg4Q}$F+{qyN8&LglaUopux~69Zg&wpG13zPs<_fg?@zs~0cGpD-?eeCFyU3r`)~ z_uJ1u{rShcmlu!UsV|Cgw2XE%cMy=B`8x3uo&9B#pWnX-YWd!|)~km%J-T$X_vRT` z#UNb*G5NRCk%t)}MTCvgD!R{AI=iaT$-<3P9BzyGYjD(qqp^Ha` z99xogZpDmI?lulQ?G!soybUGUp1L@Q4NDs&YwmZo0Z@bM7j(d#In!M7-s~L0sG;lv zv#NPv?7glwFgu^zI1NGOJ7@PllEo$9fp@yvR!$CWUO8!Gxc5*U4z{Qzmk??O6-u8g zg!LDkCf5>EPpcB4+Jor4T+v-_b)xZcCv1~OF?-L4N1TsZ8seWy`Wo|IL zG)9>1#Y(oPCEHN}7D%T;4Ge_PN7+*|o#{EAx{HI5kS3(JkN};GEpRRjWgTx=0uz)i zVaO^5SZ!aN2oVEBs}IR-0mlZg>euQk!?|lR?5-W&bg*nPBq<=Cymf8_tf4!KtXdk5efqDf6iqsC-Lzq<{I!HxdrNFy3Kmph0E4xI9jj8_EM@=KHf} z`>^Kuu@?n#mWT05BcXBzii`T^2oeOLCmCG);z<6b*1Del7$oyO9h~+V))>&Kq?;! zs1RuynB5?wfHpugh|%5nep^q!83|Z*fCXMZ*$Y;{idf-nKTfJGl$eSJuike1JRBY(3;F?`2wcD}sI{2t$w;xMdFbOcG=~_R3W{tp8Wy9n7~!e}@gz@{rUsOC zeQwkJ{o7DfQqt1Yauib&T*SFS?8zQXDoTB{8>cqeP;Pb0o!s{l1jR+b6QCB*BbpDC z=-OQk@s@rWyw(BQW_^|?Oc@G704u1A7{m(Tl~W4};YK;LRz!-*`eRuLQ3otBq(9b$ z4yu4pMJo-dpMk1|KvOc*10c_d7SxY24m6{Dl1%h_IR0A?N;#69IZUF?SSQAU0Io4j zb5@je#~gnIB_w@-#0>_q0?Aq!z*!k1u8b2S>OGv(IK}7D@C2Kscs^GlY3D@Hr;tT-qa5dk>!oj-GYkY&+$|J9=;5U2#5 z4{*t_LRbMLNw6a4r&u>;T9zPzJ3gr8jnn+^pKpak{G;oq?wmbPon%%P$%k^~DZYGg zMpg}A1qI0f)S^HR6xFzj@zvQua8DT$<3gS7S~lbrb;QgK;^Gt}R18t;I_pavo> zpr|7)2or-$cT9IJjzqA6Rv1j*I3o~3PrY|9oZOHH5g4d1U7e_(>dJ*`(wcZ7l-E|o z2v&sgCcDuRZ75L5>~Dyh5b3gOrZ;G|LDs>e0IOW2G=gT&$NeSb0<}h7`gpK`tK$R} zvHWGBoY^CoDYg_aO;v}il|!lcIrOt36W zw15hqsu%$f1Kwt=lo%*w?Vjg@==^>@K=BXf%Av-)XZP2nT9hIc3xd)FV;@uMbT1~T z@u^irh@>m}Jx>;(A6>E5dn-$z}bjP1g{T1deZ1<|1haA^o1 z><~vj22^x{HPWIbggFULM>j7oniM+TSAXO3N#jSwCHmPNT^`w*-IP;vtX9{31C z1|GIU4k7^h3Wvi78sq2sGM9#O76t0XT9CkahRxI@670PDVuwP2ok4w?shQt(B_ zLiV~$+k$Y84HpGtm>MAdE=)hzi~zeQjA>f7934HpMwo;Iss^wMFu^B#={HTZLDV~v zHU$gZ_Ri_OHKVM`B6%}L=#6&gS?OtmnSS1V}$i^6Q`QN1@Rr87`oQ=LhITS`b6b2=R`*SwZ4tJ4&K0CDDcqR&<;- zqL#r*1ex+OrEi>IC+8KE@a!j~fb~G_KscC|gTI17a*-jeAIiJ{8u!#Wv z=`RCTR#qmHscZ(-o~s>fN}!8UQ<3};4~ z105g&prDjJ*^UN(I*176sZyCSi5S}#_pQ0zxeHAF98YGDIn~2je|qwW(Gf1;o|c)> z{u!Y@@ox6J=TCUFe#OycGtx#l-fSq|x*&VtM{g9P97P#U^e9UbREL7W4{7C*wqyYf zqx?^{6CkXvu8Y+WP|<(Kb6`fF@&6Ki?yfohrBS?PpfT(bS%a!|OE%Vwg$b8Ha1Vh9 z+9-QEvZsKdGdsi(DrrHhH%|3`dgmMzX~Sl^Q4Um7HjzTpl?_x$Di-wZYp9z!mQPg6 zPmO%Jr*2M+FB7eFp|Semx8LQ z8dgh9d7yasGeYzCM=L641lg`1V-3c6wkHb!Nq1!U7!g#}wX~tAn~t+&;~-pPz`zhO z+G?8Gquh94>VSs`?(>U>m#-e)nB_{1mXfeTBH;<%&VTmau3s=kL{u)%O8N7~nY`2p z9zmrlD{aHf39vB%Mxm^tmK|aN6~7>W@H8+R=K8T+M7R%a(Z3HDen(JAM_UI7_K|=4 z{FgK}wPIcLmxl6}1oOZ)NONSk>*M8u07aXSq(iofKz%;qu_}c~nH7WWs*t|TraaxqWK4p02#FRff_AH1G@f4#(R2>}@M(+7)>7bUx zTgxg&5X%;P2e8MW;_<)!SOHXI(P=c5e}z}WhQaTI6s6ebhj3OzfEZFi48e*}{rHd0 zDFs=PUE8YX!bhrq5JHedz&PlxgW_KCoL#<4C`Kt92m6ljcryap^B zOem@9FU(W0G+?hyvw*^T8L0#-B9Ks?5d*xuPqSCzgK>YlKVXAAWT0T!pkT8-bisE6 zKUYjg|2?XPLSg2F8dt>Yx0dHXZ44+Gh(7>Uu;X=TDuIB*WH{2m07ym}Fp4(Hjuv4- zl4&YLZ-Yd~xtXj@F_MRXz~5XL$N^x*bj%>}KHdC2;gb}dCE_)(?H!zDWbSM*t6<^t zF!(U$hJ2xdn8z$jG_6XJv{g=%ML~rSM};{GsPF5~!KHz9Gi?8bo9tXqK%oMxgIXalnn7OQLtI>>y<%BS(=Nv?uL|L z@Z)S@<2)_U80Rd&ShG?sOg-W5&2t+b$%7*10?g7ngWo{bi=|-ng-5eZD4Gj%M zA}WnRqR_xoe*bR1z8?JgXiShlM~}^6bIgs6jm2UUeKCWfi^k%>mKZW#1rh<5;cZYe zH@WM`_N%8_x38Qs!;KPb3ct*tL&WIF_piYUXlZ7`=W@aRF*Y#Z!tNj*Umy@rsZ@Yb z{xmciSD(ere2V6#}JhGMCSk;KTrfXAj#s8|9~9b7!wW=sZ+W@%;$ zVyLIfG%+^jaJU=}M^{%D%J}6AJrGr2$ak}|hB9e4ds`nDCl7mDCu=ES3NaSgZ~Il? z^07g{9KD`6 zkH|ld0EfY{S-Ltp+8~KQDn~0z2TO^Wp+1F7!QpU&Si!y?_~k20V?%H*?4=eXoE$vt zZM+@rtjtXH*ld{fU!?V)zwrIP$dQ3F()qekk`EdvpscI}@&z)e39nXN9pnY}jH{|Z zyzPBbi9{e83I$jUT9?5