Here is the optimized code:

` ``StoreGDB 1 ClrDraw AxesOff ⁻10→Ymin 10→Ymax ⁻10→Xmin 10→Xmax 4→H {0,0,0,0→L₁ Horizontal 7.5 Horizontal ⁻8 Text(1,0,"ABACUS- TATERTOMORROW Text(57,0,"EXIT COUNT: Line(⁻6,Ymin,⁻6,⁻8.5 For(A,1,4) For(B,20,80) Pxl-On(12A+3,B End For(B,1,9) For(C,1,5) Pxl-On(12A+C,20+2B End End End Lbl A Text(12H,8,"> Text(57,45,L₁(1),L₁(2),L₁(3),L₁(4 0→A While not(A getKey→A End Text(12H,8," " If A=11 Goto D If A=25 H-1→H If A=34 H+1→H If not(H 4→H If H>4 1→H If A=26 and 9>L₁(H Then 1+L₁(H→L₁(H If 0≠L₁(H Then For(A,12H-2,12H+2) If 12H≠A Then Pxl-Off(A+3,40-L₁(H)2 Pxl-On(A+3,80-L₁(H)2 End End End End If A=24 and 0≠L₁(H Then ⁻1+L₁(H→L₁(H For(A,12H-2,12H+2) If 12H≠A Then Pxl-On(A+3,40-L₁(H)2-2 Pxl-Off(A+3,80-L₁(H)2-2 End End End Goto A Lbl D ClrDraw RecallGDB 1 DelVar GDB1"`

` ``{2→L₁ 3→J Prompt X Repeat X=dim(L₁ If 1=max(gcd(J,L₁:augment(L₁,{J→L₁ J+2→J End`

it's size is 56 bytes according to my TI-83 ]]>

Well, I know this is insanely long, but until I can figure out another way to share this, here is the source code for my long but well-furnished Hangman game for the Ti-83 Plus, Ti-84 Plus, and Ti-84 Plus SE.

` ``ZoomSto AxesOff ClrDraw prgmPPGLOGO For(X,1,100) Pt-On(56,31) End ClrDraw Line(7,2,11,2) Line(12,3,12,4) Line(8,3,8,7) Line(9,5,11,5) Line(7,8,9,8) Line(13,8,15,8) Line(14,7,14,6) Pxl-On(4,14) Line(17,4,17,5) Line(19,4,19,5) Line(19,7,19,8) Line(17,8,17,7) Pxl-On(6,18) Line(23,8,22,8) Line(21,7,21,5) Line(22,6,24,6) Pxl-On(5,24) Line(23,4,22,4) Line(26,8,28,8) Line(27,7,27,2) Pxl-On(3,26) Line(31,8,33,8) Line(32,7,32,3) Line(31,2,35,2) Line(36,3,36,4) Line(35,5,33,5) Line(37,8,38,8) Line(38,7,38,2) Pxl-On(2,37) Pxl-On(5,39) Line(40,6,40,8) Line(42,10,43,10) Line(44,9,44,4) Pxl-On(8,43) Line(42,7,42,5) Pxl-On(4,41) Line(48,4,47,4) Pxl-On(5,46) Line(46,6,47,6) Pxl-On(7,48) Line(47,8,46,8) Line(50,8,52,8) Line(51,7,51,6) Pxl-On(4,51) Line(56,8,55,8) Line(54,7,54,5) Line(55,4,56,4) Pxl-On(5,56) Pxl-On(7,56) Text(3,58,"S") Line(62,2,68,2) Line(63,3,64,3) Pxl-On(3,68) Line(63,4,63,7) Line(64,8,67,8) Line(68,6,68,10) Pxl-On(10,67) Line(69,5,66,5) Pxl-On(6,66) Line(71,5,71,7) Line(72,8,73,8) Line(73,7,73,5) Line(73,4,72,4) Line(75,4,75,8) Pxl-On(5,76) Line(77,6,77,8) Pxl-On(5,78) Line(79,4,79,8) Line(82,4,83,4) Pxl-On(5,84) Line(84,6,82,6) Line(81,5,81,7) Line(82,8,83,8) Text(3,86,"S") Line(36,12,36,15) Line(37,14,38,14) Pxl-On(13,38) Line(38,12,37,12) Line(40,12,40,15) Line(41,12,42,12) Pxl-On(13,42) Pxl-On(14,41) Pxl-On(15,42) Line(44,12,44,15) Line(45,15,45,14) Pxl-On(12,45) Line(47,12,48,12) Pxl-On(13,47) Pxl-On(14,48) Line(48,15,47,15) Line(51,12,50,12) Line(50,13,50,15) Line(51,15,51,14) Line(53,12,53,15) Line(54,13,54,14) Line(55,13,55,15) Line(56,12,58,12) Line(57,13,57,15) Line(60,12,61,12) Pxl-On(13,60) Pxl-On(14,61) Line(61,15,60,15) Line(4,18,4,36) Line(5,37,5,17) Line(6,17,6,37) Line(7,36,7,18) Line(8,26,8,27) Line(9,26,9,27) Line(10,18,10,36) Line(11,37,11,17) Line(12,17,12,37) Line(13,36,13,18) Line(16,23,16,36) Line(17,37,17,21) Line(18,37,18,19) Line(19,18,19,36) Line(20,17,20,20) Line(21,17,21,20) Line(21,26,21,27) Line(20,27,20,26) Line(22,18,22,36) Line(23,37,23,19) Line(24,21,24,37) Line(25,36,25,23) Line(28,18,28,36) Line(29,37,29,17) Line(30,17,30,37) Line(31,36,31,18) Line(32,25,32,27) Line(33,28,33,26) Line(34,36,34,18) Line(35,17,35,37) Line(36,37,36,17) Line(37,18,37,36) Line(40,36,40,18) Line(41,17,41,37) Line(42,37,42,17) Line(43,17,43,37) Line(44,37,44,36) Line(44,19,44,17) Line(45,17,45,20) Line(45,29,45,30) Line(45,36,45,37) Line(46,37,46,35) Line(46,31,46,28) Line(46,20,46,17) Line(47,17,47,21) Line(47,28,47,37) Line(48,37,48,28) Line(48,21,48,17) Line(49,18,49,20) Line(49,29,49,36) Line(52,36,52,18) Line(53,17,53,37) Line(54,37,54,17) Line(55,18,55,36) Line(56,25,56,19) Line(57,20,57,26) Line(58,36,58,21) Line(59,22,59,37) Line(60,37,60,22) Line(61,21,61,36) Line(62,26,62,20) Line(63,19,63,25) Line(64,18,64,36) Line(65,37,65,17) Line(66,17,66,37) Line(67,36,67,18) Line(70,23,70,36) Line(71,37,71,21) Line(72,19,72,37) Line(73,36,73,18) Line(74,17,74,20) Line(75,20,75,17) Line(74,26,74,27) Line(75,27,75,26) Line(76,18,76,36) Line(77,37,77,19) Line(78,21,78,37) Line(79,36,79,23) Line(82,18,82,36) Line(83,37,83,17) Line(84,17,84,37) Line(85,36,85,18) Line(86,25,86,27) Line(87,28,87,26) Line(88,18,88,36) Line(89,37,89,17) Line(90,17,90,37) Line(91,36,91,18) Text(39,23,"3-LETTER WORDS") Text(57,81,"v6.0") Repeat G≠0 For(A,1,50) randInt(1,2) End getKey→G Text(51,27,"[Press Enter]") For(A,1,50) randInt(1,2) End getKey→G Text(51,27," " End Lbl M Menu("Hangman Menu ","Play Game",P,"Help",H,"Quit",Q) Lbl H ClrDraw Text(0,30,"Help Menu" Text(6,0,"---------------------------------------------------" Text(10,0,"To begin the game, press any") Text(16,0,"letter key.") Text(24,0,"To quit the game at any time,") Text(30,0,"press the [CLEAR] key. Text(38,0,"To return to the menu, press") Text(44,0,"the [ENTER] key.") Text(51,0,"Support:") Text(57,0,"Ti.PPG.help@Gmail.com") Pause Goto M Lbl P Lbl A ClrHome Output(1,1," A B Output(2,1,"C D E Output(3,1,"FGHIJ Output(4,1,"K L M Output(5,1,"NOPQR Output(6,1,"S T U Output(7,1," V W Output(8,1,"X Y Z Output(1,6,"] Output(2,6,"] Output(3,6,"] Output(4,6,"] Output(5,6,"] --- Output(6,6,"] Output(7,6,"] Output(8,6,"] randInt(1,38)→ DelVar A DelVar B DelVar C DelVar D DelVar E DelVar F DelVar G DelVar H DelVar I DelVar J DelVar K DelVar L DelVar M DelVar N DelVar O DelVar P DelVar Q DelVar R DelVar S DelVar T DelVar U DelVar V DelVar W DelVar X DelVar Y DelVar Z If =1 Goto 1 If =2 Goto 2 If =3 Goto 3 If =4 Goto 4 If =5 Goto 5 If =6 Goto 6 If =7 Goto 7 If =8 Goto 8 If =9 Goto 9 If =10 Goto 10 If =11 Goto 11 If =12 Goto 12 If =13 Goto 13 If =14 Goto 14 If =15 Goto 15 If =16 Goto 16 If =17 Goto 17 If =18 Goto 18 If =19 Goto 19 If =20 Goto 20 If =21 Goto 21 If =22 Goto 22 If =23 Goto 23 If =24 Goto 24 If =25 Goto 25 If =26 Goto 26 If =27 Goto 27 If =28 Goto 28 If =29 Goto 29 If =30 Goto 30 If =31 Goto 31 If =32 Goto 32 If =33 Goto 33 If =34 Goto 34 If =35 Goto 35 If =36 Goto 36 If =37 Goto 37 If =38 Goto 38 Lbl 1 1→C 2→A 3→T 0→ Goto 99 Lbl 2 1→B 2→A 3→T 0→ Goto 99 Lbl 3 1→R 2→A 3→T 0→ Goto 99 Lbl 4 1→E 2→M 3→U 0→ Goto 99 Lbl 5 1→D 2→O 3→G 0→ Goto 99 Lbl 6 1→A 2→P 3→E 0→ Goto 99 Lbl 7 4→E 3→L 0→ Goto 99 Lbl 8 1→H 2→E 3→N 0→ Goto 99 Lbl 9 1→A 2→S 3→P 0→ Goto 99 Lbl 10 1→P 2→I 3→G 0→ Goto 99 Lbl 11 1→H 2→O 3→G 0→ Goto 99 Lbl 12 1→E 2→L 3→K 0→ Goto 99 Lbl 13 1→C 2→U 3→B 0→ Goto 99 Lbl 14 1→D 2→O 3→E 0→ Goto 99 Lbl 15 1→K 2→I 3→D 0→ Goto 99 Lbl 16 1→R 2→A 3→M 0→ Goto 99 Lbl 17 1→Y 2→A 3→K 0→ Goto 99 Lbl 18 1→A 2→G 3→E 0→ Goto 99 Lbl 19 1→B 2→A 3→G 0→ Goto 99 Lbl 20 1→A 2→S 3→H 0→ Goto 99 Lbl 21 1→B 2→A 3→Y 0→ Goto 99 Lbl 22 1→B 2→O 3→T 0→ Goto 99 Lbl 23 1→B 2→U 3→G 0→ Goto 99 Lbl 24 1→C 2→A 3→B 0→ Goto 99 Lbl 25 1→B 2→E 3→D 0→ Goto 99 Lbl 26 1→C 2→O 3→P 0→ Goto 99 Lbl 27 1→D 2→A 3→Y 0→ Goto 99 Lbl 28 1→C 2→A 3→P 0→ Goto 99 Lbl 29 1→C 2→O 3→D 0→ Goto 99 Lbl 30 1→D 2→E 3→N 0→ Goto 99 Lbl 31 1→D 2→E 3→W 0→ Goto 99 Lbl 32 1→E 2→A 3→R 0→ Goto 99 Lbl 33 1→E 2→L 3→M 0→ Goto 99 Lbl 34 1→F 2→A 3→N 0→ Goto 99 Lbl 35 1→F 2→I 3→B 0→ Goto 99 Lbl 36 1→F 2→I 3→G 0→ Goto 99 Lbl 37 1→F 2→R 3→Y 0→ Goto 99 Lbl 38 1→G 2→A 3→S 0→ Goto 99 Lbl 99 Repeat θ≠0 getKey→θ End If θ=45 Then Lbl Q ClrHome ClrDraw ZoomRcl AxesOn ClrHome Stop End If θ=41 and A=1 Then Output(5,8,"A Output(1,2," Z+1→Z End If θ=41 and A=2 Then Z+1→Z Output(5,9,"A Output(1,2," End If θ=41 and A=3 Then Z+1→Z Output(5,10,"A Output(1,2," End If θ=41 and A=0 Then Output(1,2," +1→ End If θ=42 and B=1 Then Output(5,8,"B Output(1,4," Z+1→Z End If θ=42 and B=2 Then Output(5,9,"B Output(1,4," Z+1→Z End If θ=42 and B=3 Then Output(5,10,"B Output(1,4," Z+1→Z End If θ=42 and B=0 Then Output(1,4," " +1→ End If θ=43 and C=1 Then Output(5,8,"C Output(2,1," Z+1→Z End If θ=43 and C=2 Then Output(5,9,"C Output(2,1," Z+1→Z End If θ=43 and C=3 Then Output(5,10,"C Output(2,1," Z+1→Z End If θ=43 and C=0 Then Output(2,1," +1→ End If θ=51 and D=1 Then Output(5,8,"D Output(2,3," Z+1→Z End If θ=51 and D=2 Then Output(5,9,"D Output(2,3," Z+1→Z End If θ=51 and D=3 Then Output(5,10,"D Output(2,3," Z+1→Z End If θ=51 and D=0 Then Output(2,3," +1→ End If θ=52 and E=1 Then Output(5,8,"E Output(2,5," Z+1→Z End If θ=52 and E=2 Then Output(5,9,"E Output(2,5," Z+1→Z End If θ=52 and E=3 Then Output(5,10,"E Output(2,5," Z+1→Z End If θ=52 and E=4 Then Output(5,8,"EE Output(2,5," Z+2→Z End If θ=52 and E=0 Then Output(2,5," +1→ End If θ=53 and F=1 Then Output(5,8,"F Output(3,1," Z+1→Z End If θ=53 and F=2 Then Output(5,9,"F Output(3,1," Z+1→Z End If θ=53 and F=3 Then Output(5,10,"F Output(3,1," Z+1→Z End If θ=53 and F=0 Then Output(3,1," +1→ End If θ=54 and G=1 Then Output(5,8,"G Output(3,2," Z+1→Z End If θ=54 and G=2 Then Output(5,9,"G Output(3,2," Z+1→Z End If θ=54 and G=3 Then Output(5,10,"G Output(3,2," Z+1→Z End If θ=54 and G=0 Then Output(3,2," +1→ End If θ=55 and H=1 Then Output(5,8,"H Output(3,3," Z+1→Z End If θ=55 and H=2 Then Output(5,9,"H Output(3,3," Z+1→Z End If θ=55 and H=3 Then Output(5,10,"H Output(3,3," Z+1→Z End If θ=55 and H=0 Then Output(3,3," +1→ End If θ=61 and I=1 Then Output(5,8,"I Output(3,4," Z+1→Z End If θ=61 and I=2 Then Output(5,9,"I Output(3,4," Z+1→Z End If θ=61 and I=3 Then Output(5,10,"I Output(3,4," Z+1→Z End If θ=61 and I=0 Then Output(3,4," +1→ End If θ=62 and J=1 Then Output(5,8,"J Output(3,5," Z+1→Z End If θ=62 and J=2 Then Output(5,9,"J Output(3,5," Z+1→Z End If θ=62 and J=3 Then Output(5,10,"J Output(3,5," Z+1→Z End If θ=62 and J=0 Then Output(3,5," +1→ End If θ=63 and K=1 Then Output(5,8,"K Output(4,1," Z+1→Z End If θ=63 and K=2 Then Output(5,9,"K Output(4,1," Z+1→Z End If θ=63 and K=3 Then Output(5,10,"K Output(4,1," Z+1→Z End If θ=63 and K=0 Then Output(4,1," +1→ End If θ=64 and L=1 Then Output(5,8,"L Output(4,3," Z+1→Z End If θ=64 and L=2 Then Output(5,9,"L Output(4,3," Z+1→Z End If θ=64 and L=3 Then Output(5,10,"L Output(4,3," Z+1→Z End If θ=64 and L=0 Then Output(4,3," +1→ End If θ=65 and M=1 Then Output(5,8,"M Output(4,5," Z+1→Z End If θ=65 and M=2 Then Output(5,9,"M Output(4,5," Z+1→Z End If θ=65 and M=3 Then Output(5,10,"M Output(4,5," Z+1→Z End If θ=65 and M=0 Then Output(4,5," +1→ End If θ=71 and N=1 Then Output(5,8,"N Output(5,1," Z+1→Z End If θ=71 and N=2 Then Output(5,9,"N Output(5,1," Z+1→Z End If θ=71 and N=3 Then Output(5,10,"N Output(5,1," Z+1→Z End If θ=71 and N=0 Then Output(5,1," +1→ End If θ=72 and O=1 Then Output(5,8,"O Output(5,2," Z+1→Z End If θ=72 and O=2 Then Output(5,9,"O Output(5,2," Z+1→Z End If θ=72 and O=3 Then Output(5,10,"O Output(5,2," Z+1→Z End If θ=72 and O=0 Then Output(5,2," +1→ End If θ=73 and P=1 Then Output(5,8,"P Output(5,3," Z+1→Z End If θ=73 and P=2 Then Output(5,9,"P Output(5,3," Z+1→Z End If θ=73 and P=3 Then Output(5,10,"P Output(5,3," Z+1→Z End If θ=73 and P=0 Then Output(5,3," +1→ End If θ=74 and Q=1 Then Output(5,8,"Q Output(5,4," Z+1→Z End If θ=74 and Q=2 Then Output(5,9,"Q Output(5,4," Z+1→Z End If θ=74 and Q=3 Then Output(5,10,"Q Output(5,4," Z+1→Z End If θ=74 and Q=0 Then Output(5,4," +1→ End If θ=75 and R=1 Then Output(5,8,"R Output(5,5," Z+1→Z End If θ=75 and R=2 Then Output(5,9,"R Output(5,5," Z+1→Z End If θ=75 and R=3 Then Output(5,10,"R Output(5,5," Z+1→Z End If θ=75 and R=0 Then Output(5,5," +1→ End If θ=81 and S=1 Then Output(5,8,"S Output(6,1," Z+1→Z End If θ=81 and S=2 Then Output(5,9,"S Output(6,1," Z+1→Z End If θ=81 and S=3 Then Output(5,10,"S Output(6,1," Z+1→Z End If θ=81 and S=0 Then Output(6,1," +1→ End If θ=82 and T=1 Then Output(5,8,"T Output(6,3," Z+1→Z End If θ=82 and T=2 Then Output(5,9,"T Output(6,3," Z+1→Z End If θ=82 and T=3 Then Output(5,10,"T Output(6,3," Z+1→Z End If θ=82 and T=0 Then Output(6,3," +1→ End If θ=83 and U=1 Then Output(5,8,"U Output(6,5," Z+1→Z End If θ=83 and U=2 Then Output(5,9,"U Output(6,5," Z+1→Z End If θ=83 and U=3 Then Output(5,10,"U Output(6,5," Z+1→Z End If θ=83 and U=0 Then Output(6,5," +1→ End If θ=84 and V=1 Then Output(5,8,"V Output(7,2," Z+1→Z End If θ=84 and V=2 Then Output(5,9,"V Output(7,2," Z+1→Z End If θ=84 and V=3 Then Output(5,10,"V Output(7,2," Z+1→Z End If θ=84 and V=0 Then Output(7,2," +1→ End If θ=85 and W=1 Then Output(5,8,"W Output(7,4," Z+1→Z End If θ=85 and W=2 Then Output(5,9,"W Output(7,4," Z+1→Z End If θ=85 and W=3 Then Output(5,10,"W Output(7,4," Z+1→Z End If θ=85 and W=0 Then Output(7,4," +1→ End If θ=91 and X=1 Then Output(5,8,"X Output(8,1," Z+1→Z End If θ=91 and X=2 Then Output(5,9,"X Output(8,1," Z+1→Z End If θ=91 and X=3 Then Output(5,10,"X Output(8,1," Z+1→Z End If θ=91 and X=0 Then Output(8,1," +1→ End If θ=92 and Y=1 Then Output(5,8,"Y Output(8,3," Z+1→Z End If θ=92 and Y=2 Then Output(5,9,"Y Output(8,3," Z+1→Z End If θ=92 and Y=3 Then Output(5,10,"Y Output(8,3," Z+1→Z End If θ=92 and Y=0 Then Output(8,3," +1→ End If θ=93 Then Output(8,5," +1→ End If =1 Then Output(7,12,"I---I End If =2 Then Output(6,16,"[ Output(5,16,"[ Output(4,16,"[ Output(3,16,"[ Output(2,16,"I End If =3 Then Output(2,13,"1-- End If =4 Then Output(3,13,"T End If =5 Then Output(4,13,"O End If =6 Then Output(5,12,".U. End If =7 Then Output(6,13,"^" Goto 98 End If Z=3 Then Goto 97 End Goto 99 Lbl 98 If A=1 Output(5,8,"A If B=1 Output(5,8,"B If C=1 Output(5,8,"C If D=1 Output(5,8,"D If E=1 Output(5,8,"E If F=1 Output(5,8,"F If G=1 Output(5,8,"G If H=1 Output(5,8,"H If I=1 Output(5,8,"I If J=1 Output(5,8,"J If K=1 Output(5,8,"K If L=1 Output(5,8,"L If M=1 Output(5,8,"M If N=1 Output(5,8,"N If O=1 Output(5,8,"O If P=1 Output(5,8,"P If Q=1 Output(5,8,"Q If R=1 Output(5,8,"R If S=1 Output(5,8,"S If T=1 Output(5,8,"T If U=1 Output(5,8,"U If V=1 Output(5,8,"V If W=1 Output(5,8,"W If X=1 Output(5,8,"X If Y=1 Output(5,8,"Y If A=2 Output(5,9,"A If B=2 Output(5,9,"B If C=2 Output(5,9,"C If D=2 Output(5,9,"D If E=2 Output(5,9,"E If F=2 Output(5,9,"F If G=2 Output(5,9,"G If H=2 Output(5,9,"H If I=2 Output(5,9,"I If J=2 Output(5,9,"J If K=2 Output(5,9,"K If L=2 Output(5,9,"L If M=2 Output(5,9,"M If N=2 Output(5,9,"N If O=2 Output(5,9,"O If P=2 Output(5,9,"P If Q=2 Output(5,9,"Q If R=2 Output(5,9,"R If S=2 Output(5,9,"S If T=2 Output(5,9,"T If U=2 Output(5,9,"U If V=2 Output(5,9,"V If W=2 Output(5,9,"W If X=2 Output(5,9,"X If Y=2 Output(5,9,"Y If A=2 Output(5,10,"A If B=3 Output(5,10,"B If C=3 Output(5,10,"C If D=3 Output(5,10,"D If E=3 Output(5,10,"E If F=3 Output(5,10,"F If G=3 Output(5,10,"G If H=3 Output(5,10,"H If I=3 Output(5,10,"I If J=3 Output(5,10,"J If K=3 Output(5,10,"K If L=3 Output(5,10,"L If M=3 Output(5,10,"M If N=3 Output(5,10,"N If O=3 Output(5,10,"O If P=3 Output(5,10,"P If Q=3 Output(5,10,"Q If R=3 Output(5,10,"R If S=3 Output(5,10,"S If T=3 Output(5,10,"T If U=3 Output(5,10,"U If V=3 Output(5,10,"V If W=3 Output(5,10,"W If X=3 Output(5,10,"X If Y=3 Output(5,10,"Y Output(1,8,"YOU LOST! Output(7,1," [PRESS ENTER] Pause Menu("Play Again?","Yes",A,"No",B Lbl 97 Output(1,8,"YOU WON! Output(7,1," [PRESS ENTER] Pause Menu("Play Again?","Yes",A,"No",B Lbl B ClrDraw AxesOn ZoomRcl ClrHome`

Note that all the boxes are the lowercase "n" symbol which is the first character under the letter N in the catalog.

For this to work, you need to either take ou the line that says prgmPPGLOGO or create program PPGLOGO which draws my logo.

Here is the source code for that:

` ``0→Xmin 94→Xmax 0→Ymax 62→Ymin ClrDraw Line(11,17,20,17) Line(11,17,11,30) Line(11,30,14,30) Line(14,30,14,23) Line(14,23,20,23) Line(20,23,20,17) Line(14,19,17,19) Line(17,19,17,21) Line(17,21,14,21) Line(14,21,14,19) Line(22,19,25,19) Line(22,19,22,21) Line(25,19,25,21) Line(23,21,23,24) Line(24,21,24,24) Line(22,24,22,30) Line(25,24,25,30) Line(25,30,22,30) Line(27,25,27,24) Pt-On(28,24) Pt-On(31,24) Line(32,24,32,25) Line(32,29,32,30) Pt-On(31,30) Pt-On(28,30) Line(27,30,27,29) Line(29,25,30,25) Line(29,29,30,29) Line(28,26,28,28) Line(31,26,31,28) Line(34,24,34,30) Line(34,30,40,30) Line(40,30,40,24) Line(40,24,34,24) Line(36,26,38,26) Line(36,28,39,28) Line(42,17,45,17) Line(45,17,45,30) Line(45,30,42,30) Line(42,30,42,17) Line(16,33,16,46) Line(16,46,19,46) Line(19,46,19,39) Line(19,39,25,39) Line(25,39,25,33) Line(25,33,16,33) Line(19,35,22,35) Line(19,35,19,37) Line(19,37,22,37) Line(22,35,22,37) Line(27,33,27,46) Line(27,46,30,46) Line(30,46,30,43) Pt-On(31,43) Line(32,43,32,46) Line(32,46,34,46) Line(34,46,34,40) Line(34,40,30,40) Line(30,40,30,33) Line(30,33,27,33) Line(36,40,36,46) Line(36,46,42,46) Line(42,46,42,49) Line(42,49,36,49) Line(36,49,36,52) Line(36,52,45,52) Line(45,52,45,40) Line(45,40,42,40) Line(42,40,42,43) Line(42,43,39,43) Line(39,43,39,40) Line(39,40,36,40) Line(47,40,52,40) Line(52,40,52,46) Line(52,46,47,46) Line(47,46,47,40) Line(49,42,51,42) Line(48,44,50,44) Line(54,40,54,46) Line(54,46,57,46) Line(57,46,57,40) Line(55,40,55,37) Line(56,40,56,37) Line(54,37,54,35) Line(54,35,57,35) Line(57,35,57,37) Line(59,40,59,46) Line(59,46,62,46) Pt-On(62,45) Line(62,44,61,44) Pt-On(61,43) Line(61,42,62,42) Pt-On(62,41) Line(62,40,59,40) Line(64,40,69,40) Line(69,40,69,46) Line(64,46,69,46) Line(64,46,64,40) Line(66,42,68,42) Line(65,44,67,44) Line(48,48,51,48) Pt-On(52,49) Line(47,49,47,53) Line(48,54,51,54) Line(52,53,52,52) Line(50,51,51,51) Line(54,51,54,53) Pt-On(55,50) Line(55,54,56,54) Line(56,53,56,51) Line(58,50,58,54) Pt-On(59,50) Line(60,51,60,54) Pt-On(61,50) Line(62,50,62,54) Line(64,51,64,53) Line(65,50,66,50) Pt-On(67,51) Line(65,52,66,52) Line(65,54,66,54) Line(70,50,71,50) Pt-On(69,51) Line(70,52,71,52) Pt-On(72,53) Line(69,54,71,54) For(X,0,30) Pt-On(11,17) End For(X,0,30) Pt-On(2,8) End For(X,0,30) Pt-On(9,8) End For(X,0,30) Pt-On(15,9) End For(X,0,30) Pt-On(20,12) End For(X,0,30) Pt-On(23,16) End For(X,0,30) Pt-On(26,14) End For(X,0,30) Pt-On(30,11) End For(X,0,30) Pt-On(35,9) End For(X,0,30) Pt-On(41,8) End For(X,0,30) Pt-On(47,11) End For(X,0,30) Pt-On(51,15) End For(X,0,30) Pt-On(54,19) End For(X,0,30) Pt-On(55,25) End For(X,0,30) Pt-On(56,31) End For(X,0,30) Pt-On(60,28) End For(X,0,30) Pt-On(65,26) End For(X,0,30) Pt-On(71,26) End For(X,0,30) Pt-On(76,28) End Line(80,30,80,32) Line(81,30,81,35) Line(82,30,82,32) Line(80,34,82,34) Pt-On(80,36) Pt-On(82,36)`

If you took the time to copy this down, I salute you for your effort. If this is too hard for you, then feel free to copy-paste it in an emulator. :)

I shall find a way soon to post a downloadable file with both these programs.

]]>Code:

` ``4→Y 8→X While 1 ClrHome Output(Y,X,"θ getKey→K max(1,min(8,Y+(K=34)-(K=25→Y max(1,min(16,X+(K=26)-(K=24→X End`

I hoped you liked it and I am so excited to progress further with TI-Basic!

]]>I cant post links so you'll have to type the link yourself sry. ]]>

It originally just started out as a height map in a matrix, where I programmed the generator to make blocks that are only 1 higher or lower than their neighbors. After a few days I made a rough looking isometric render, then quickly changed it too look sharper and more colorful. I also made it so that you could edit the map, and I also moved the storage over to a list.

So, you can have the program generate a map for you or you can edit a map to make things like this:

The isometric rendering takes about 39-42 seconds on average on my CE, thanks to some optimizations by Cemetech user mr womp womp, which is a significant improvement from a time of 1:25-2:23 when I first started.

It could technically be changed to generate all the blocks instead of just the top ones, but because the top blocks usually cover up what's under/behind them there's really no point in slowing down the rendering that much. I will probably make a modeling program with this soon though specifically for making 3d models. Oh, and you can also rotate the terrain already to render it from all 4 corner angles.

Anyways, I hope you like it!

You can see the whole GitHub repository and download the .8xp from here: https://github.com/Michael2-3B/Terrain-CE

You can also see my original Cemetech thread here: https://cemete.ch/t16660

First Fantasy: Mana Force is a 2015 color remake of my 2002 TI-83 Plus game Mana Force. I have begun updating the TI-84 Plus CE version to take full advantage of CE Texlib ASM library (to draw rectangles and colored text on the home screen) undocumented capabilities. Here are the changes since the last 2015 release:

-The gray TI-OS bar at the top of the screen is now hidden.

-The in-game menu now takes the entire screen and has a border

-Fixed menu exit from save section bug introduced by the above change

-Dungeon walls no longer have horizontal gaps across the screen

-The game now uses 16 colors instead of 15, allowing some dungeon color changes

-The game is completely full screen now

-Your hit points are now displayed at the top of the screen at any time except in the menu

-There is a new sub-program for the custom font routine needed for the above

-You can now quit the game using CLEAR in the menu

-The shops and the warp zone now have a border like the menu

-Some empty green gaps in the village graphics, similar to the ones present in dungeons prior version 1.1 have been removed.

You can download the game at https://www.ticalc.org/archives/files/fileinfo/463/46383.html , but it's version 1.1, which misses some of the aforementioned additions. Version 2.0, pictured above, should come out soon.

]]>It is not available for download yet, and has yet to be forum-optimized, but here is the program:

(Note: → is represented as [->] , small E is represented as slash e slash , ≤ is represented as [<=] and ≠ is represented as [!=] )

` ``prgmTITIMER1 //Generates notation string "F'F F2B'BB2R'R R2L'LL2U'UU2D'DD2 -> Str1 //Asks what character you want around the border, and if length is not 1, repeats the action Lbl 0 Prompt Str3 If 1!=length(Str3 Goto 0 //Draws border For(X,1,16 For(Y,1,8 If X=1 or X=16 or Y=1 or Y=8 Output(Y,X,Str3 End:End //Starts a Loop for E, which at the end of the code will put the final time at the 'E'th part of L₆ DelVarDFor(E,1,/e/9 //Generates scramble For(C,2,5 2->B //This part of scramble generating doesn't use a For( loop because that will mean gaps in the scramble, see near end of While loop While B<=14 randInt(1,18->A //This part prevents redundancy If int(A/6)=int(D/6 Goto 1 Output(C,B,sub(Str1,2A-1,2 A->D B+2->B Lbl 1 End:End Output(7,2,"Press [Enter]. Pause For(C,2,7 Output(C,2," //14 spaces End Output(4,9,0 Pause //Actual timer (the timing system isn't entirely accurate, but I wanted to save information on the increment level, and it's only off by ~1 second every 5 minutes.) For(A,1,/e/9,.022 Output(4,5,A If getKey: Goto 2 End Lbl 2 A->L₆(E Pause End`

tibasicdev

.wikidot

.com/forum/t-10140286/neural-network-on-ti-84#post-4136063

which was looking for any neural net or ML implementations in TI-BASIC.

I actually developed a software suite for creating apps using a single layer RAM network, like a virtual implementation of a WISARD.

RAM networks are a kind of neural network that is implemented with lookup tables, making them really simple to train and execute. The WISARD was the first commercially available neural network device. Here is some info about it:

elen

.ucl

.ac

.be

/Proceedings

/esann

/esannpdf

/es2016-63.pdf

(Sorry, but my karma is to low to link to the page normally, just select that paragraph and paste it into a new tab and it will automatically remove new lines)

I'll see if I could upload the programs and get a link to it.

The suite lets you train a single discriminator at a time; a discriminator can recognize one feature or simple data pattern.

One discriminator's information can be stored in a single matrix, which can be backed-up in another variable, allowing you to clear it, and train another discriminator.

I wrote one test program that used this software suite to recognize a digit from a 3x5 pixel monochrome image, input as a binary list of length 15. I simply trained a discriminator for each digit, then recalled the contents of the discriminator into a program. I did this for all 10 digits. The resulting program would load a discriminator into the proper matrix var, the discriminator would output how likely that the input was the number that the discriminator was trained to recognize, and then the program would record this and move on to the next discriminator. It did this for all 10 discriminators, and output the number that corresponded to the discriminator that gave the highest score. This was literally a virtual implementation of the WISARD in TI-BASIC, but it couldn't process in parallel like the original hardware device, naturally, so it simply runs the discriminators in series.

]]>I am fairly new to Ti-Basic so I am very open to suggestions that all you Pros have :)! Here is the program…

` ``:ClrDraw :ClrHome :16->X :8->Y :1->Z :1->R :1->G :1->H :1->A :8->B :0->K :While 1 :Lbl Theta (I don't know how to get a theta) :GetKey->K :ClrHome :Output(R,Z,"* :Output(G,H,"* :Output(Y,X,"i (the I from [2nd] [.]) :Output(B,A,"PI (I don't know how to get a Pi) :If K=32 :Y-1->Y :If K=41 :X-1->X :If K=43 :X+1->X :If K=42 :Y+1->Y :If K=24 :A-1->A :If K=25 :B-1->B :If K=26 :A+1->A :If K=34 :B+1->B :If A=17 :1->A :If A=0 :16->A :If B=0 :8->B :If B=9 :1->B :If X=17 :1->X :If X=0 :16->X :If Y=9 :1->Y :If Y=0 :8->Y :If A=H and B=G :Goto 3 :If A=Z and B=R :Goto 4 :If X=H and Y=G :Goto 5 :If X=Z and Y=R :Goto 6 :If K=31 :Goto 1 :If K=15 :Goto 2 :End :Lbl 1 :randInt(1,16)->Z :randInt(1,8)->R :Output(R,Z,"*" :Goto Theta :Lbl 2 :randInt(1,8)->G :randInt(1,16)->H :Output(G,H,"*" :Goto Theta :Lbl 3 :Lbl 4 :ClrHome :Output(4,5,"i Wins!" :Stop :End :Lbl 5 :Lbl 6 :ClrHome :Output(4,5,"Pi Wins!" :Stop :End`

This comes with both a timer and a high score feature.

You can move the rows and columns with the arrow keys, and you can move the pointers on the sides of the board with mode, alpha, XTθn, and stat

You can copy and paste this into sourcecoder to try it out if you like, or download it here: http://ceme.tech/DL1955

` ``ClrHome "ABCDEFGHIJKLMNOPQRSTUVWXY->Str1 Ans->Str2 randIntNoRep(1,25->L1 sub(Str1,Ans(1),1 For(N,2,25 Ans+sub(Str1,L1(N),1 If not(remainder(N,5 Output(2+N/5,4,sub(Ans,N-4,5 End Ans->Str1 4->A Ans->B DelVar TDelVar KSetUpEditor LOOP UnArchive |LLOOP If not(dim(|LLOOP {0->|LLOOP "* Output(3,3,Ans Output(2,4,Ans Output(3,9,Ans Output(8,4,Ans Output(2,18,"Time: Output(7,18,"High: timeCnv(sum(|LLOOP Output(8,18,"n/a If sum(Ans Output(8,18,toString(Ans(3))+"m"+toString(Ans(4))+"s Repeat K=45 or Str1=Str2 Repeat Ans If T Then timeCnv(checkTmr(T Output(3,18,toString(Ans(3))+"m"+toString(Ans(4))+"s End getKey End Ans->K If sum(Ans={22,31,32,33 Then If K=22 or K=32 Then Output(A-1,3," Output(A-1,9," A+(K=32)-(K=22->A Ans+5(Ans=3)-5(Ans=9->A Output(Ans-1,3,"* Output(Ans-1,9,"* Else If K=31 or K=33 Then Output(2,B," Output(8,B," B+(K=33)-(K=31->B Ans+5(Ans=3)-5(Ans=9->B Output(2,Ans,"* Output(8,Ans,"* End End Else If K=24 or K=26 Then If not(T startTmr->T sub(Str1,5A-15-3(K=24),1+3(K=24))+sub(Str1,5A-19,4-3(K=24 Output(A-1,4,Ans If A>4 sub(Str1,1,5A-20)+Ans If A<8 Ans+sub(Str1,5A-14,26-(5A-14 Ans->Str1 Else If K=25 or K=34 Then If not(T startTmr->T sub(Str1,B+2+15(K=34),1)+sub(Str1,B-2,4)+sub(Str1,B+7-10(K=34),1)+sub(Str1,B+3,4)+sub(Str1,B+12-10(K=34),1)+sub(Str1,B+8,4)+sub(Str1,B+17-10(K=34),1)+sub(Str1,B+13,4)+sub(Str1,B-3+15(K=34),1 If B>4 sub(Str1,1,B-4)+Ans If B<8 Ans+sub(Str1,B+18,26-(B+18 Ans->Str1 For(I,0,4 Output(3+I,B,sub(Str1,5I+B-3,1 End End End End End If Str1=Str2 Then checkTmr(T If Ans<sum(|LLOOP) or not(sum(|LLOOP Then {Ans->|LLOOP timeCnv(sum(Ans Output(8,18,toString(Ans(3))+"m"+toString(Ans(4))+"s End Output(5,16,"Congrats! Repeat getKey End End Archive |LLOOP ClrHome`

Today, I would present you my project: a Ti-Basic text editor (name: Leviathan)

Actually, the project exist, the foundation is create and this require to add the most important: the Ti-Basic and Python (the news calculators use this) compatibility …

It's open-source and a uwp app, but if people can help me, manifest you ^^

(Sorry, I'm french, my english is not perfect <(＿ ＿)> but I work about this ^^)

I can add more informations about the project is your interest, else, no ^^

And if you don't understand, I can re-explain …

Thx for your attention

Fj ]]>

You can see it in action at youtube address Su0MpwFSWFE

I'll fisrt explain quickly how to make a qr code:

Firstly, you choose with which text type (kanji, numeric, etc) you're gonna encode the data (here, it's always alphanumeric : numbers and uppercase letters).

Secondly, you encode text in binary following the step matching the text type.

Thirdly, you generate the error correction codewords (that's the difficult part), basically (if I understand well), you divide two equations in a galois field (one is generate with your data string, the other depends on your qr size and error correction level), there are 4 level of correction (L, M, Q and H) here I use level M.

Fourth, you put the error codewords after your binary data string from before (it's different for larger qr code, though)

Fifth, you place the string in your matrix (black square for 1 and white square for 0)

Sixth, you "mask" some squares (it mean changing it's color by the opposite), there are 8 masking pattern, you are supposed to choose the optimal one (here I use only the mask pattern 1)

Last, you add the format string, which correspond to your error correction level and your mask pattern

I divided the entire program in 6 progams.

Posts merged and formatted by a moderator

]]>AxesOff

0->Xmin:256->Xmax

0->Ymin:256->Ymax

10->A

10->B

While 1

Lbl S

DispGraph

Pxl-On(A,B)

getKey->K

If K=105

Then

Stop

End

If K=45

Then

ClrDraw

End

If K=24

Then

B-1->B

Pxl-On(A,B

End

If K=25

Then

A-1->A

Pxl-On(A,B

End

If K=26

Then

B+1->B

Pxl-On(A,B

End

If K=34

Then

A+1->A

Pxl-On(A,B

End

If K=85

Then

While K=85

getKey->L

Pxl-On(A,B

If L=24

Then

B-1->B

Pxl-Off(A,B

Pxl-Off(A,B+1

End

If L=25

Then

A-1->A

Pxl-Off(A,B

Pxl-Off(A+1,B

End

If L=26

Then

B+1->B

Pxl-Off(A,B

Pxl-Off(A,B-1

End

If L=34

Then

A+1->A

Pxl-Off(A,B

Pxl-Off(A-1,B

End

If L=45

Then

ClrDraw

End

If L=95

11->K

End

End

End

End

End ]]>

In Daleks you're The Doctor, you move with the numpad as Daleks chase you. The Store key acts as a repeatable dangerous teleport using the "Tardis," and the Ln key is the "Sonic Screwdriver," killing enemy Daleks.

Game code:

https://pastebin.com/TMu6pyiB

I've also TASed programming the game and then playing it as an experimental project, I have a newer version not yet on YouTube that's closer to the pastebin code and saves 50 seconds. I discovered the 1.02 OS bug due to the OS used for TASing in BizHawk.

https://youtu.be/JH9E_SoiYQs

First, how do we shuffle L1 in BASIC?

` ``rand(dim(L1->L2 SortA(L2,L1`

This is a super clever algorithm, but slow as heck as the lists get bigger. Plus, it uses an extra list of the same size, wasting precious RAM. So how does the Fisher-Yates algorithm work? You start at the last element. Randomly choose an element up to and including the current element and swap them. Now move down one element and repeat (so now the last element is off limits, then the last two, et cetera). Repeat this until there is one element left.

This is easy to perform in-place, and it performs n-1 swaps, making it significantly faster than the BASIC algorithm above. In fact, let's implement it in BASIC:

` ``dim(L1->N For(K,N,2,-1 randInt(1,K->A L1(K->B L1(A->L1(K B->L1(A End`

This takes approximately 37.5 seconds to sort a 999 element list. I don't even have the RAM needed to test the regular method, but extrapolating, it would take the "normal" method approximately 73 seconds for 999 elements. So basically, the Fisher-Yates algorithm is actually faster even in TI-BASIC (after about 400 elements, though).

So without further ado, the assembly code!

` ``;Randomizes a TI-list in Ans _RclAns= 4AD7h seed1 = $80F8 seed2 = $80FC seed1_0=seed1 seed1_1=seed1+2 seed2_0=seed2 seed2_1=seed2+2 #define bcall(x) rst 28h \ .dw x .db $BB,$6D .org $9D95 ; Put it into 15MHz mode if possible! in a,(2) add a,a sbc a,a out (20h),a ; Initialize the random seed ld hl,seed1 ld b,7 ld a,r _: xor (hl) ld (hl),a inc hl djnz -_ or 99 or (hl) ld (hl),a ; Locate Ans, verify that it is a list or complex list bcall(_RclAns) ex de,hl ld c,(hl) inc hl ld b,(hl) inc hl ld (list_base),hl dec a jr z,+_ sub 12 ret nz dec a _: ;A is 0 if a real list, -1 if complex ;HL points to the first element ;BC is the number of elements and $29 ;make it either NOP or ADD HL,HL ld (get_complex_element),a sub 29h sbc a,a ;FF if real, 00 if complex cpl and 9 add a,9 ld (element_size),a shuffle_loop: push bc push bc call rand pop bc ex de,hl call mul16 dec bc ;swap elements DE and BC call get_element push hl ld d,b ld e,c call get_element pop de call swap_elements pop bc dec bc ld a,c dec a jr nz,shuffle_loop inc b dec b jr nz,shuffle_loop ret swap_elements: ;HL and DE point to the elements element_size = $+2 ld bc,255 _: ld a,(de) ldi dec hl ld (hl),a inc hl djnz -_ ret get_element: ;Input: ; DE is the element to locate ;Output: ; HL points to the element ld l,e ld h,d add hl,hl add hl,hl add hl,hl add hl,de get_complex_element: nop list_base = $+1 ld de,0 add hl,de ret rand: ;Tested and passes all CAcert tests ;Uses a very simple 32-bit LCG and 32-bit LFSR ;it has a period of 18,446,744,069,414,584,320 ;roughly 18.4 quintillion. ;LFSR taps: 0,2,6,7 = 11000101 ;291cc ;Thanks to Runer112 for his help on optimizing the LCG and suggesting to try the much simpler LCG. On their own, the two are terrible, but together they are great. ld hl,(seed1) ld de,(seed1+2) ld b,h ld c,l add hl,hl \ rl e \ rl d add hl,hl \ rl e \ rl d inc l add hl,bc ld (seed1_0),hl ld hl,(seed1_1) adc hl,de ld (seed1_1),hl ex de,hl ;;lfsr ld hl,(seed2) ld bc,(seed2+2) add hl,hl \ rl c \ rl b ld (seed2_1),bc sbc a,a and %11000101 xor l ld l,a ld (seed2_0),hl ex de,hl add hl,bc ret mul16: ;BC*DE ld hl,0 ld a,16 mul16_loop: add hl,hl rl e rl d jr nc,+_ add hl,bc jr nc,+_ inc de _: dec a jr nz,mul16_loop ret`

It isn't perfect, but it is pretty good and importantly, it is fast! The biggest problem is in the random number generator, but even that is still pretty good for this application. ]]>