From 3ecf16b50421d21b228052e6c7b639501f9d5a94 Mon Sep 17 00:00:00 2001 From: neauoire Date: Fri, 2 Jul 2021 10:57:50 -0700 Subject: [PATCH] Font example --- projects/examples/demos/font.tal | 206 +++++++++++++++++++++++++++++++ projects/fonts/chicago12.uf2 | Bin 0 -> 8448 bytes projects/fonts/courier12.uf2 | Bin 0 -> 8448 bytes projects/fonts/geneva12.uf2 | Bin 0 -> 8448 bytes projects/fonts/helvetica12.uf2 | Bin 0 -> 8448 bytes projects/fonts/newyork18.uf3 | Bin 0 -> 18688 bytes projects/fonts/palatino12.uf2 | Bin 0 -> 8448 bytes projects/fonts/times12.uf2 | Bin 0 -> 8448 bytes projects/fonts/venice14.uf3 | Bin 0 -> 18688 bytes 9 files changed, 206 insertions(+) create mode 100644 projects/examples/demos/font.tal create mode 100644 projects/fonts/chicago12.uf2 create mode 100644 projects/fonts/courier12.uf2 create mode 100644 projects/fonts/geneva12.uf2 create mode 100644 projects/fonts/helvetica12.uf2 create mode 100644 projects/fonts/newyork18.uf3 create mode 100644 projects/fonts/palatino12.uf2 create mode 100644 projects/fonts/times12.uf2 create mode 100644 projects/fonts/venice14.uf3 diff --git a/projects/examples/demos/font.tal b/projects/examples/demos/font.tal new file mode 100644 index 0000000..b4ac4ff --- /dev/null +++ b/projects/examples/demos/font.tal @@ -0,0 +1,206 @@ +( font ) + +%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } +%< { LTH } %> { GTH } %= { EQU } %! { NEQ } +%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } +%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } + +%RTN { JMP2r } +%TOS { #00 SWP } +%INCR { SWP #01 ADD SWP } +%GET-ITERATORS { SWP2k POP SWP POP } + +%DEBUG { ;print-hex JSR2 #0a .Console/write DEO } +%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO } + +( devices ) + +|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] +|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 ] +|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ] +|80 @Controller [ &vector $2 &button $1 &key $1 ] +|a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ] + +( variables ) + +|0000 + +@position + &x $2 + &y $2 + +( init ) + +|0100 ( -> ) + + ( theme ) + #0f73 .System/r DEO2 + #0fe3 .System/g DEO2 + #0fc3 .System/b DEO2 + + ( load font ) + #4000 .File/length DEO2 + ;fontpath .File/name DEO2 + ;font-data .File/load DEO2 + + #0000 #0030 ;sometext #21 ;draw-uf3 JSR2 + +BRK + +@draw-uf3 ( x* y* text* color -- ) + + STH + STH2 + .Screen/y DEO2 + .Screen/x DEO2 + STH2r + &loop + LDAk #0a ! ,&no-linebreak JCN + #0000 .Screen/x DEO2 + .Screen/y DEI2 #0018 ++ .Screen/y DEO2 + &no-linebreak + LDAk STHkr ;draw-letter3 JSR2 + #0001 ++ + LDAk ,&loop JCN + POP2 + POPr + +RTN + +@draw-letter3 ( char color -- ) + + POP + + DUP TOS #0048 ** ;font-data #0100 ++ ++ .Screen/addr DEO2 + + .Screen/x DEI2 .position/x STZ2 + .Screen/y DEI2 .position/y STZ2 + + #00 #03 + &ver + #00 #03 + &hor + GET-ITERATORS + TOS #0008 ** .position/y LDZ2 ++ .Screen/y DEO2 + TOS #0008 ** .position/x LDZ2 ++ .Screen/x DEO2 + #21 .Screen/color DEO + .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2 + INCR + LTHk ,&hor JCN + POP2 + + INCR + LTHk ,&ver JCN + POP2 + + TOS ;font-data ++ LDA TOS .position/x LDZ2 ++ .Screen/x DEO2 + + .position/y LDZ2 .Screen/y DEO2 + +RTN + +@draw-label ( x* y* text* color -- ) + + STH + STH2 + .Screen/y DEO2 + .Screen/x DEO2 + STH2r + &loop + LDAk #0a ! ,&no-linebreak JCN + #0000 .Screen/x DEO2 + .Screen/y DEI2 #0010 ++ .Screen/y DEO2 + + &no-linebreak + LDAk STHkr ;draw-letter JSR2 + #0001 ++ + LDAk ,&loop JCN + POP2 + POPr + +RTN + +@draw-letter ( char color -- ) + + STH + + STHk TOS #0020 ** ;font-data #0100 ++ ++ .Screen/addr DEO2 + OVRr STHr .Screen/color DEO + + .Screen/y DEI2 #0008 ++ .Screen/y DEO2 + .Screen/addr DEI2 #0010 ++ .Screen/addr DEO2 + OVRr STHr .Screen/color DEO + + .Screen/x DEI2 #0008 ++ .Screen/x DEO2 + .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2 + OVRr STHr .Screen/color DEO + + .Screen/y DEI2 #0008 -- .Screen/y DEO2 + .Screen/addr DEI2 #0010 -- .Screen/addr DEO2 + OVRr STHr .Screen/color DEO + + STHkr TOS ;font-data ++ LDA TOS .Screen/x DEI2 ++ #0008 -- .Screen/x DEO2 + + POPr POPr + +RTN + +@draw-short ( short* color -- ) + + STH SWP + DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2 + ( draw ) STHkr .Screen/color DEO + #0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2 + .Screen/x DEI2 #0008 ++ .Screen/x DEO2 + ( draw ) STHkr .Screen/color DEO + DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2 + .Screen/x DEI2 #0008 ++ .Screen/x DEO2 + ( draw ) STHkr .Screen/color DEO + #0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2 + .Screen/x DEI2 #0008 ++ .Screen/x DEO2 + ( draw ) STHr .Screen/color DEO + +RTN + +@print-hex ( value -- ) + + STHk #04 SFT ,&parse JSR .Console/write DEO + STHr #0f AND ,&parse JSR .Console/write DEO + RTN + &parse ( value -- char ) + DUP #09 GTH ,&above JCN #30 ADD RTN &above #09 SUB #60 ADD RTN + +RTN + +@cursor + ffff ffff ffff ffff + +@font-hex + 003c 464a 5262 3c00 0018 0808 0808 1c00 + 003c 4202 3c40 7e00 003c 421c 0242 3c00 + 000c 1424 447e 0400 007e 407c 0242 3c00 + 003c 407c 4242 3c00 007e 0204 0810 1000 + 003c 423c 4242 3c00 003c 4242 3e02 3c00 + 003c 4242 7e42 4200 007c 427c 4242 7c00 + 003c 4240 4042 3c00 007c 4242 4242 7c00 + 007e 4078 4040 7e00 007e 4078 4040 4000 + +@sometext + 4927 6c6c 206d 616b 6520 6120 736f 756e + 6420 7468 6174 2773 2073 6f20 616c 6f6e + 6520 0a74 6861 7420 6e6f 206f 6e65 2063 + 616e 206d 6973 7320 6974 2c20 7468 6174 + 2077 686f 6576 6572 200a 6865 6172 7320 + 6974 2077 696c 6c20 7765 6570 2069 6e20 + 7468 6569 7220 736f 756c 732c 200a 616e + 6420 6865 6172 7468 7320 7769 6c6c 2073 + 6565 6d20 7761 726d 6572 2c20 0a61 6e64 + 2062 6569 6e67 2069 6e73 6964 6520 7769 + 6c6c 2073 6565 6d20 6265 7474 6572 200a + 746f 2061 6c6c 2077 686f 2068 6561 7220 + 6974 2069 6e20 7468 6520 6469 7374 616e + 7420 746f 776e 732e 20 $1 + +@fontpath "projects/fonts/newyork18.uf3 + +@font-data \ No newline at end of file diff --git a/projects/fonts/chicago12.uf2 b/projects/fonts/chicago12.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..14c1d82f404104671447d735d69d456339d87252 GIT binary patch literal 8448 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 ba+V0*`Z)Ea(pLXkJYl?A<1DD>sQCW@{@gLA literal 0 HcmV?d00001 diff --git a/projects/fonts/newyork18.uf3 b/projects/fonts/newyork18.uf3 new file mode 100644 index 0000000000000000000000000000000000000000..84ffeaccfd03d5cf477ff1a7907671f1d2b7ceea GIT binary patch literal 18688 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 literal 0 HcmV?d00001 diff --git a/projects/fonts/palatino12.uf2 b/projects/fonts/palatino12.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..cbe312cd0c6ff360f555aec3bfbcd7b66a9be7ac GIT binary patch literal 8448 zcmeHMy>jD55*|VTH~=AXfW@jPnM*=6L{nSqG9~#`vaJ#sT;R}wA3%Xa2NzxBU_wVO zKEgi6g$%Cl5iaH^z>*wrYS({QKxBxkjMNq z2}86&81ROIAdVtHaXg5k0W=2D@N^Ij22q?OB97xA4tN}L-j6tp!!Qbm%A(&7<2Zqz zkcSaVk~lgYs4l3lelS!BJrI1vkVQO-Be)ECbedo+$oU|N`u#q7Ttxvq8U#r)7@kHW z&VwN0h*k{=Jm4&ek|)kw)QPWJzC2qR^Z=ob@B3@N?nvfqjzGJ$ z-Pibot@dKSGh5H|v1VosFxf-f$-E*G&L_m_mXDVQ^SANI93wRTizmw-xIgsF&D!yw zBzazz#>yXB_D@CexNz8GLq6Qk=VaCK|1>|GzgY=wf%)f?#mn|;eeN&JuK7pyy1nLY zo?>dtj_vPBvPwwzgqU`_X4Uu87Pa|Ra$@XPZ9wsA{hQ;jm2t+pQ>e zVq`h+JX8>)dex-d2z?Ycd#(4BrrC^UC}pZ6mE>kreO^WN{X({y)qug*I>E@@Mv<`X z*Qv;+nb|e+Pwtt8Q+x)m#=q3#?__8E2aK=c-(&C{#<%CEa1i+;ochehp<5Ub%y(&) zPtM*jSqoF`U+(I@ZQq&SYCO*KEMw!<>ZhN!+w{BI&cv}A!+R>&-&7X+xF`8@q5Yfn z$K*hr`D6dmGspaF`%zjsmTXrKp!R?IrWQidncwK9SWSDqTA8sgABofLxFi)Mqzo8pp7bwY(GG`tl@9#w#Xkg@Vqn)@LiVFHO<~d-#c}>&5p?)Lzdl zRXyNJojwyS1AA!Cd7d}vueNdj>In6Wtn2QW>A0MfBrh+B)9rIne7J1_nA`gcwMp5` ze`Vhvq32DJV#({`3*wq~GJh(lcWc`t|EnWHIGum$s}?ETScz#?6jUQ9a3#dqdD@)c zACwRzt6zo%S1K?2w{hr-Lffha##uf#HF;MTP0B`gzi5n8=d={q^M8t8#!@*pJ%4V&GA&X zzCiX=HucZkR5IEc=Mx8_*Nc59r{;Zg2%$Io3+P=?C4Y1S5Itd}QXZ!1U5@%&Q)=h;k@)6narHHm z8#Klh?2|0GzkFUz%)E{=U~bNwvm_?;}05#uwt5Z0i=) zjibQv@px;U587QR8z)g#nvcwEWCOD@iws^ZWDB!d`dl{~8+oDc_1yIp>Yu8*2e#11B_)T z5L}dHZd})PFS5=?|2#XDQ z-AJX?qO(W{)F@11bMbSGkdsXPWIlwJA~Kl4iSRG_Ek{)ee+pgD+L&vEXxW6CNug>>H&vV;j>74eczudSm?++DwxBe~uPy7}C zxZ0fWBdnhj@AZZ=5RT@4FXes|);qA@)h)xHrkwT|-}(N+_)Z-DojAgH?fsx5J>H=H vcGJsOZ)Nvd_1ipsjt-M#cEUNT))ESS@U^{?K3j&G<>H`TUz*g>RfXigrO!Ij literal 0 HcmV?d00001 diff --git a/projects/fonts/times12.uf2 b/projects/fonts/times12.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..83d982d36a8a96cea49718a0d63c6f8b51080e4c GIT binary patch literal 8448 zcmeHML5SQ&7A>c{)oRZ`WH7`mge`|5C_^B9F!2!PP}|X(o~&7v5QC3O;)4l32o|z) zn8flhkj`FK2@cro9@-0DhQLBj3%Ti(7O5G*M+2xse z@Bdf-cU7tMRciNG)p~?yU})_12aa=g)bID5A^qt&s`Yxq;c&3#QX39OqyAttJUeoS zh2^dh>-YMOL*ev~NU!JgMl!fRpd`cw&NGg~Wc0`#4Rq^KQy)TcGK2y~YyJLkZ8V|} zb%xI9?6BACk6cPUB75jK>kg$_8#(KP0d;g7_Zf$9NPh1e6_;4Qk{vq_3gH?EW=O3THe}01{ ztoV7|klA<|zWDa+F5K^d0EG~sOOXqaP=h7}2Q4un4>dTcH)x6cFh1l>mtlF{p6409 zl_uw+t>takDvvM)n!lVN+={>v&x)o@5Fn4_^f}BJ1Q^d;kBb@16A&QjW7k!BE8e}} zPiG4k-4%gjkt8R!__0V%Xa?xs%D)he}tl73@<}`IoFeT|mqH%y`e(s;9JgdwPC9 zst>NnrK`c%4Q{}F9Rzrq77GZoH9opNvO#ZMzb8T9`?|iW8x;YhZ*HDD$1+(489N6* z@bP5h!i5c$zjb|{6zNsk*7!~jWc@opy4LlJUvXUtSrAAZq6gn z5_zawm2MVDbs3_J}ci+2^DlAB!Auz{d57y)F2G^ZNSa@M?_HNY}@u45+98rqE!PqZvZf>53sR$g59fh2SFk9D$v13662D-;HP~b_*MXC%CAe}w9 zsGUE!N>%od_dhjsuhG&)vAlkM;R0QOH@^h?9Z03q`h4H=?K;~wp6?!SjKcMb2Xp|Z zSs(xKa`^y*{sTybzWMwy^z)DG&j(sAYyG0~XVs(BuCoq3oZI80G_rm^O}AM;jq6{` z&r%yebZ>@i{9j*0`*2k(-Ww7e3L#Ods<7s@> z`bOo#u7`G=#%GOZoG+-taNJg!Rh}$^v;sYPgP$Klj0ISQV<8{V>iKtK%2P2=gYOV@Zh4X4wa(7yu#Zcn~?_|?OSGC_dbllu=I++VFP z{aYy@4WfW zyD zZ0FD07d^MH-`_9ZZbUP7`(n|k&J^w9-zvSb$=dt2mOrRu4f6CO1nec}zl>#2mta26 zS-!*%*Y@Pjoja2an2$j;-umpL^fQ>ZKs3g)dxzh`T(Z8LYJh;Aq!B1ku*UoZ{2Fhc zIin4O$^Uft&T>AxzF=@7b-7bs3VShQroU|`o4Vi;NydXtGNF!S3}73P(JwNpR-S3 zegIO(Mcr7!anIySG+NvxUhN9$1Y~Pm-#bgY)%NC6o$4doqu*7H&i1pJW&ip1^S$5o z{!dj`HhjDyaIiF@_s>+BZNfz&c-yT!q>4mYCK-!G{r#x5|F@>cR=s@ws~w;#aqWXd zjd#$l%hlQrue^2li)%0aMWz*V{Y6SreU9h9O*hD%+W$`~Kfv?t?-%stul4<=3>PZD zxqiIk{iXW)L0~*NNQFuH^@M;s2dQw*a;mQS9x(N;c-OPn2d{jAQu8zG$GZFXU#ZDE zJdr=B+d@6cVlPH8gR`iQylfrig|GhSH%>ZFX8-^I literal 0 HcmV?d00001 diff --git a/projects/fonts/venice14.uf3 b/projects/fonts/venice14.uf3 new file mode 100644 index 0000000000000000000000000000000000000000..e320f039ea4e31d619c3310e35db8c9a5933da87 GIT binary patch literal 18688 zcmeHO&2Jk;6rUvi*mc)s6$)A^t6EyC^nj{OBa9KIaZ8j2s8A0*a9qd50X3?ODpf`@ z@k&S$hamNsBY#3dFFk;?BvDeSrL9z{^uWQPRXK2}#3cvR@@Ch&S-%;tJ)0m3-FL{$ z`@J{6oq0Ro>k!fr8PXw7*-4X0NtTpsGM&!IDLExkk)6NEWLiqgB%6`;W#o(^r4@O< zB4=bplJ{k@S#Xz9lAM&KbS9ma2xY1@6SL62uL<7WfXaz>`0nQ3MAt^ zAp_E>2~CrPyh3Xk5O@}#AmAuvv$O(=Bqafp(*d_Q8%H3HKpcTM0&xW52*eSHBk<2e zz%UF<43I%s7`t`r`Fy?`h^UQ@ws6UO{^|5I2K(u1@jP}pS1;xcoG+>v57pnE{=l)@ zw&nSKRLCAYF>?x3t6VPouxI9{xx+`XA*a1neSfM%Nc*a)TP8O1bzRr_1~F7p4Ti@A z(G67+VbWEN@mD}3O=bAQct@291=~k4Fpw@W^^sa|G#RMu08WO%^dEhIVqGpw5AU*y zDWc9gJ${`Gg>&+PxJ2VtHZl7hshTXdL++l`i?h1Wjf^nW- zNOcnvq9~fiSw^s1x6bQ7fC<-!$5XphNKFdHr@MBJ<_s;-@ztA0blza*L+H(h#-N-B z_Jiihd_NbC-NYDF2C9V7K6+`2=|3<|RiZNC=|i+P=AmJi$2QHj$2c^SYAqRU(gw^l z4G#`Y)%k1Ju*3MtF_32fTOiolLvOCGV#~U1+pFth^N-qES$26W+vB7AI>UHIfG)6` z@vQt*Z7sVzfd&{ST^^@|#V?0ZpC@2&dD;PFfb2wtiI06}ZEf@BWw)?300(vXVr7LU z?ZBHEYpuZh+9Cj1)^|2F_m{@f5_WQyuY=6=kKMZUUOYh7?MR5K+Zfu>>nmq3P@;c=ym!UuJz@C|(mZsLQVGU$ebiHV~{fCZik8f;j0tQAqfOwXWv`2mJ zeOOB1Qo|Ss=rG=${*3BV7$57@$7%<>L$b})N7xF-rjHjknivk(TZ@a>fu0K#MQ~lN zY*ic{7?K`erBbPW`uP~d8N~Ks&&*FN4_zK88g(bnU>UDo%FlTC) zuFRf+BeP)+S{-68yYmJV@t&4Vr?YfHwcsV%1Fk!SA0G(NJ3}-)R6PEn;gC70_4R`1 z=cROYw|^2F?+qB#UU@Hd#<^)WJbj?FZ0gw0fU~BONQDgpT!b_@^QSXEYnoVnhE@fRE+*#0beq&?f_AfP|QgxVuae-eS1JSK*3=8W`*Z{5H7;v5Fu#dnI ziDs>iP7|kH_h((ia+4^3o9j33wgvZNIhY*qvl?_81%h!yw=oo|yX~qu?F~96B!=2I z^WN9(`|!dxH+-LgGJ2VDqq}Bv&~@D_&ABcz>dV~t=w-_*#iYD;J$SUf{orS@cJX+i zi`(|yHuFqTVD^v8RS;7AWJ%L8nv z8$+Rbum0Q_(xGL8#r0w*Mh;6NX7)TgaWqLPtL5o}ZqYs9=5u2s#+-`B8&=8!ACJnrABRJDfP{XP=AA z5OMEqbYk!3-e$< zJ`s5IbKmR<4Mhc4!V2B_E@yehUg>+MH?isF&3pHLo4k(USdSwRM<9+s&j@@4`^-D{ ztE5dY{dBvhUq3^01HL?n-am7G(J8@gojFtL_qc95`?-?9EiIL9zgT;2BOs6Fr}Lxe z-wY$v7B~{XMN3){ia!@coPB~--rc?ENW#5eg)wdK=6;pHX>d>O4