For example, the decimal 0.010203 would become ABC by the following:

- decimal multiplied by 100, integer part (iPart) stored in variable I
- decimal multiplied by 100, decimal part (fPart) stored back in the list
- value of I is matched up with a letter/symbol/number, stored in a string (numbers 1-26 are A-Z, then 27=_, 28=., 29=,, and 30-39=1-9, and 40=?)
- repeats until I=0.
- Outputs entire string

Currently, the code I have is:

` ``100(iPart(⸤FLASH(1→I 100(fPart(⸤FLASH(1→⸤FLASH(1`

But I don't know how to convert the decimal to a string at that point. The list>string routines use the whole list, not just one cell. I was thinking it might be possible to have a separate list that, as the loop of the above code repeats, each integer gets stored. For example:

` ``1→I 1→A Repeat I=0 100(iPart(⸤FLASH(1→I 100(fPart(⸤FLASH(1→⸤FLASH(1 I→⸤CODE(A A+1→A End //then the list>string routine`

But I don't think this will be the most optimized/fastest way to do this (Speed is a necessity in this program).

Any thoughts, fixes, ideas appreciated.

Thanks,

UBER

pause

:ClrHome

:0->dim(L1)

:input A

:int(abs(A))

:While Ans not = 1

:Ans->L1 (1+dim(L1))

:if fpart (Ans/2)

:then: 3Ans+1

:else: Ans/2

:End:End

` ``ClrHome StoreGDB 1 AxesOff FnOff ClrDraw 0→Xmin 94→Xmax 0→Ymin 62→Ymax Vertical 31 Vertical 64 Line(32,0,63,0 Text(0,0,"Next Text(6,0,"Piece: Text(29,0,"Hold: Text(0,66,"Score: Text(12,66,"High: Text(24,66,"Level: Text(36,66,"Lines: For(θ,0,23,23 Line(0,49-θ,15,49-θ Line(15,49-θ,15,34-θ Line(15,34-θ,0,34-θ Line(0,34-θ,0,49-θ End DelVar [A] {21,12→dim([A] For(B,1,21 1→[A](B,1 1→[A](B,12 End For(A,2,11 1→[A](21,A End SetUpEditor TH UnArchive ⸤TH If not(dim(⸤TH {0→⸤TH 0→Z 1→R 0→T 0→W 20→J SetUpEditor L₃ DelVar L₃0→Q randInt(1,7→P Repeat K=45 or Q If T=1 and not(C 1→Q For(I,0,1 If not(I Goto GP End Ans→[B] dim(Ans→L₁ For(I,0,1 If not(I Goto GB End randInt(1,7→P For(I,0,1 If not(I Goto GP End Ans→[C] dim(Ans→L₂ For(I,0,1 If not(I Goto SN End 6→S 1→T 0→X 0→C 0→G Repeat K=45 or G or Q Text(6,66,Z Text(18,66,⸤TH(1 Text(30,66,R Text(42,66,W For(I,0,1 If not(I Goto SC End getKey→K If K=105 Then Text(57,0,"Paused Pause " Text(57,0,Ans+Ans End If K=34 or X>9 Then If X>9 0→X If K=34 Z+1→Z For(I,0,1 If not(I Goto EC End 1→θ For(A,1,L₁(2 If [A](T+⸤BB(A),S+A-1 0→θ End T+θ→T not(θ→G End If K=21 Then For(I,0,1 If not(I Goto EC End 1→G 0→H 1→θ While θ For(A,1,L₁(2 If [A](T+⸤BB(A),S+A-1 0→θ End If θ Then T+1→T H+1→H End End Z+2H→Z For(I,0,1 If not(I Goto SC End End If K=26 Then For(I,0,1 If not(I Goto EC End 1→θ For(B,1,L₁(1 If [A](T+B-1,S+⸤RB(B 0→θ End S+θ→S End If K=24 Then For(I,0,1 If not(I Goto EC End 1→θ For(B,1,L₁(1 If [A](T+B-1,S-2+⸤LB(B 0→θ End S-θ→S End If K=11 or K=15 Then If not(21<T+L₁(2) or 12<S+L₁(1 Then If 5=sum(L₁ Then If K=15 rowSwap([B],1,L₁(1))^^T^^ //^^T^^ is the transpose character If K=11 rowSwap([B]^^T^^,1,L₁(2 //^^T^^ is the transpose character Ans→[E] dim(Ans→L₅ 1→θ For(B,1,L₅(1 For(A,1,L₅(2 If [A](T+B-1,S+A-1) and [E](B,A 0→θ End End If θ Then For(I,0,1 If not(I Goto EC End [E]→[B] L₅→L₁ For(I,0,2 If not(I Goto GB If I=1 Goto SC End End End End End If K=91 and not(C Then 1→C For(I,0,1 If not(I Goto EC End If dim(L₃ Then For(B,1,L₃(1 For(A,1,L₃(2 If [D](B,A Pt-Off(3A,26-3B,2 End End [B]→[E] [D]→[B] [E]→[D] Else For(I,0,1 If not(I Goto EN End [B]→[D] [C]→[B] randInt(1,7→P For(I,0,1 If not(I Goto GP End Ans→[C] dim(Ans→L₂ For(I,0,1 If not(I Goto SN End End dim([B]→L₁ dim([D]→L₃ For(I,0,1 If not(I Goto GB End For(B,1,L₃(1 For(A,1,L₃(2 If [D](B,A Pt-On(3A,26-3B,2 End End 6→S 1→T End If G Then If T<J T→J For(B,1,L₁(1 For(A,1,L₁(2 If [B](B,A Then 1→[A](T+B-1,S+A-1 25+3A+3S→N 66-3B-3T→O Pt-On(N,O,1 Pt-On(N,O,2 End End End 0→θ L₁(1→dim(⸤C Fill(0,⸤C For(B,T,T-1+L₁(1 Matr>list([A]^^T^^,B,L₄ //^^T^^ is the transpose character If not(sum(not(L₄ Then B→⸤C(B-T+1 θ+1→θ For(A,2,11 0→[A](B,A End [A] For(A,B,J,-1 rowSwap(Ans,A,A-1 End Ans→[A] End End SortD(⸤C Z+R(80(θ=1)+|E2(θ=2)+200(θ=3)+400(θ=4→Z If Ans>⸤TH(1 Ans→⸤TH(1 W+θ→W 1+int(W/10→R If θ Then Text(57,0,"Clearing For(B,⸤C(1),J,-1 For(A,2,11 28+3A→N 63-3B→O If [A](B,A Then Pt-On(N,O,1 Pt-On(N,O,2 Else Pt-Off(N,O,1 Pt-Off(N,O,2 End End End " Ans+Ans Text(57,0,Ans+Ans J+θ→J End End X+R→X End For(I,0,1 If not(I Goto EN End End Archive ⸤TH RecallGDB 1 DelVar GDB1DelVar ADelVar BDelVar CDelVar GDelVar HDelVar IDelVar JDelVar KDelVar NDelVar ODelVar PDelVar QDelVar RDelVar SDelVar TDelVar WDelVar XDelVar YDelVar ZDelVar θDelVar [A]DelVar [B]DelVar [C]DelVar [D]DelVar [E]DelVar L₁DelVar L₂DelVar L₃DelVar L₄DelVar L₅DelVar ⸤CDelVar ⸤BBDelVar ⸤LBDelVar ⸤RB AxesOn ClrHome Return Lbl EC For(B,1,L₁(1 For(A,1,L₁(2 If [B](B,A Pt-Off(25+3A+3S,66-3B-3T,2 End End End Lbl EN For(B,1,L₂(1 For(A,1,L₂(2 If [C](B,A Pt-Off(3A,49-3B,2 End End End Lbl GB L₁(2→dim(⸤BB Fill(0,⸤BB L₁(1→dim(⸤LB Fill(0,⸤LB ⸤LB→⸤RB For(B,L₁(1),1,-1 For(A,1,L₁(2 If [B](B,A) and not(⸤BB(A B→⸤BB(A End End For(B,1,L₁(1 For(A,L₁(2),1,-1 If [B](B,A) and not(⸤RB(B A→⸤RB(B End End For(B,1,L₁(1 For(A,1,L₁(2 If [B](B,A) and not(⸤LB(B A→⸤LB(B End End End Lbl GP If P=1 [[1,1][1,1 If P=2 [[1][1][1][1 If P=3 [[0,1,0][1,1,1 If P=4 [[1,0][1,0][1,1 If P=5 [[0,1][0,1][1,1 If P=6 [[1,0][1,1][0,1 If P=7 [[0,1][1,1][1,0 End Lbl SC For(B,1,L₁(1 For(A,1,L₁(2 If [B](B,A Pt-On(25+3A+3S,66-3B-3T,2 End End End Lbl SN For(B,1,L₂(1 For(A,1,L₂(2 If [C](B,A Pt-On(3A,49-3B,2 End End End`

I am trying to follow this tutorial (tibasic(dot)wikia(dot)com/wiki/Pong) but im having an error with the line function that I cannot fix at all.

The bit of code im stuck on is this.

` ``:Line(91,B,91,B+9`

And the error I get is this

"ERR:INVALID DIM"

I have no idea what this means.

Thanks! ]]>

` ``:0→Xmin :-62→Ymin`

I have the -62→Ymin bit typed in correctly but it gives me an error.

"ERR:SYNTAX"

EDIT: I have fixed it now (I was using the subtract symbol instead of minus symbol) but now I have a different error

On this bit of code

` ``:Line(91,B,91,B+9`

i am getting the error "ERR:INVALID DIM" ]]>

` ``PROGRAM:BASICOS :"BasicOS ClrHome FnOff PlotsOff AxesOff ZStandard ZInteger Normal:Float Degree:Func Sequential Real:Full 1→Xmin 100→Xmax If det([[1:Then Disp "Library Error.","Install Celtic 3","to continue Pause ClrHome Return End real(7,0 If 2000>det(4:Then Disp "Memory Error.","There is not","enough RAM","memory. Pause ClrHome Return End "INPUT→Str2 det(0,7,Str2 If Ans=".P:NT:FN":Then Disp "Program Missing.","prgmINPUT is","missing from","RAM. Pause ClrHome Return End real(13,1 Text(0,0," GRAPHICS TEST real(13,0 If not(pxl-Test(6,0:Then ClrDraw ClrHome real(7,0 Disp "Graphics Error. "Re-Enable CLASSIC Mode and Re-Run the Program. If 2>real(11 "Re-Install the Celtic 3 Application. Output(2,1,Ans Pause ClrHome Return End det(0,7,Str2 sub(Ans,1,1 If Ans="A det(0,Str2 DelVar Str2 Lbl M ClrDraw real(7,0 real(13,1 Text(1,0,0," BasicOS real(13,0 Text(8,4,"FILE MANAGER Text(14,4,"ABOUT CALC Text(20,4,"TURN OFF Text(26,4,"----- ------ Text(32,4,"REPLACE WITH RETURN Text(38,4,"FILE TRANSFER Text(44,4,"QUIT 8→O:real(7,0 Repeat max(K={21,105 Text(O,0,"▶ Repeat K getKey→K End Text(O,0," max(8,min(44,O+6(K=34)-6(K=25→O End If O=8:Goto FM If O=14 Goto AC If O=20 Goto TO If O=26 Goto BC If O=32 Goto AR If O=38 Goto FT Lbl Q ClrDraw ClrHome real(7,0 real(13,1 Disp "Basic real(13,0 Output(1,6,"OS Disp "Bio_Hazard1282","Ver 8.5","TI-83+/84+/SE DelVar Str1DelVar Str2DelVar Str3DelVar Str4Return Lbl BC ClrDraw real(7,0 Text(1,24,0,"This option is Text(1,32,0,"available yet. Pause Goto M Lbl FT For(I,1,2 ClrDraw Text(1,24,0,"Input name for "Source If I=2 "Back-Up Text(1,32,0,Ans+" File real(7,0 Pause prgmINPUT If I=1:Str1→Str2 If I=2:Str1→Str3 End If Str2=Str3:Then Text(1,24,0,"Both files Text(1,32,0,"cannot have the Text(1,40,0,"same name. Pause End If Str2=Str3 Goto M sub(det(0,7,Str2),1,1 If Ans="A det(0,Str2 sub(det(0,7,Str3),1,1 If Ans="A det(0,Str3 ClrDraw real(7,0 real(13,1 Text(1,0,0," File Transfer real(13,0 Text(8,4,"COPY SOURCE Text(14,4,"RESTORE BACK-UP Text(20,4,"SWAP BOTH Text(26,4,"BACK Text(50,0,"SOURCE: "+Str2 Text(56,0,"BACK-UP: "+Str3 8→O Lbl M0 real(7,0 Repeat max(K={21,105 Text(O,0,"▶ Repeat K getKey→K End Text(O,0," max(8,min(26,O+6(K=34)-6(K=25→O End If O=8:Goto CS If O=14 Goto RB If O=20 Goto SB If O=26:Then Text(38,0,"ARCHIVING SOURCE det(0,Str2 Text(38,0,"ARCHIVING BACK-UP det(0,Str3 End If O=26 Goto M Lbl SB Text(44,0,"NOT IMPLEMENTED Goto M0 Lbl CS det(5,Str2→R For(I,4,5 det(0,I,Str3 End For(I,1,R det(5,Str2,I det(6,Str3,Ans,I Line(0,Ymin,int(100I/R),Ymin End Line(0,Ymin,Xmax,Ymin,0 Goto M0 Lbl RB det(5,Str3→R For(I,4,5 det(0,I,Str2 End For(I,1,R det(5,Str3,I det(6,Str2,Ans,I Line(0,Ymin,int(100I/R),Ymin End Line(0,Ymin,Xmax,Ymin,0 Goto M0 Lbl AC ClrDraw real(7,0 real(13,1 Text(1,0,0," About Calc real(13,0 Text(8,0,"TI-"+sub("83+ 83+SE84+ 84+SE",5(1+real(11))-4,5 det(4,2 Text(14,0,"SERIAL: ",sub(Ans,1,5)+"-"+sub(Ans,6,5 det(4,3 Text(20,0,"OS "+sub(Ans,1,1)+"."+sub(Ans,3,2 Text(26,0,"RAM: ",det(4 Text(32,0,"ROM: ",det(4,1 1+det(20,"EF6F4C3D280A78FE1E3805EF21521808EFB3503E042001AFEF8C47EFBF4A sub("DEADPOOROK GOODFULL",4Ans-3,4 Text(38,0,"BATTERY: "+Ans Pause Goto M Lbl TO ClrDraw real(7,0 real(12,6,0,0,94,62,1 real(13,1 Text(1,28,0," Turning Off real(13,0 rand(100 real(5→C For(I,C,0,1 real(5,0,I rand End det(20,"3E01D303FB76FDCB09A6 real(13,1 Text(1,28,0," Turning On real(13,0 For(I,0,C real(5,0,I rand End rand(100 Goto M Lbl AR ClrDraw real(7,0 prgmINPUT sub(det(0,7,Str1),1,1→Str2 If Ans="A det(0,Str1 ClrDraw real(13,1 Text(1,0,0," Scanning real(7,0 real(13,0 Text(8,0,"FINDING AND REPLACING ANY Text(14,0,"Stop COMMANDS WITH Return Text(28,0,"FILE: "+Str1 Text(34,0,"REPLACED: 0 DelVar Adet(5,Str1→R Text(40,0,"LINES: ",R For(I,1,R det(5,I,Str1 If Ans="Stop Then det(8,Str1,"Return",I A+1→A Text(34,0,"REPLACED: ",A End Line(0,Ymin,int(100I/R),Ymin End If Str2="A":Then Text(55,0,"ARCHIVING det(0,Str1 End real(7,0 Line(0,Ymin,Xmax,Ymin,0 Text(55,0,"ACTION COMPLETE Pause Goto M Lbl FM prgmINPUT If Str1="BASICOS" or Str1="INPUT":Goto M 8→O Lbl 0 ClrDraw real(7,0 Lbl 00 real(7,0 real(13,1 Text(1,0,0," File Manager real(13,0 sub(det(0,7,Str1),1,3→Str2 "rowSwap("=sub(Str1,1,1→A If not(Ans Text(8,4,"EXECUTE "ARCHIVE If "A"=sub(Str2,1,1:"UNARCHIVE Text(14,4,Ans "HIDE If "H"=sub(Str2,2,1:"UNHIDE Text(20,4,Ans If not(A:Then "LOCK If "L"=sub(Str2,3,1:"UNLOCK Text(26,4,Ans End Text(32,4,"DELETE Text(38,4,"DOWNLOAD If not(A Text(44,4,"TO APPVAR Text(50,4,"BACK Line(0,31,33,31 Text(8,47,sub(det(0,7,Str1),4,5)+"b Text(14,47,det(1,det(5,Str1))+" LINES Text(26,47,"RAM: ",det(4 Line(0,31,66,31 Text(32,47,"ROM: ",det(4,1 Str1 If sub(Str1,1,1)="rowSwap( "a"+sub(Str1,2,length(Str1)-1 Text(44,47,Ans Line(0,31,100,31 rand(5 Line(0,31,100,31,0 real(7,0 Repeat max(K={21,105 Text(O,0,"▶ Repeat K getKey→K End Text(O,0," max(8,min(50,O+6(K=34)-6(K=25→O End If A and max(O={8,26,44:Goto 0 If O=8:Goto 1 If max(O={14,20,26:Goto 2 If O=32:Goto 3 If O=38:Goto 4 If O=44:Goto 5 Goto M Lbl 1 For(I,0,13 Line(Xmin,I,Xmax,I,0 Line(Xmin,I,Xmax,I,0 End Horizontal 13 Horizontal 13 real(13,1 Text(1,20,0," Program Type real(13,0 Text(28,4,"BASIC Text(34,4,"ASSEMBLY 28→O Repeat max(K={21,105 Text(O,0,"▶ Repeat K getKey→K End Text(O,0," max(28,min(34,O+6(K=34)-6(K=25→O End O→B 8→O 2(10+expr(sub(det(0,7,Str1),4,5 If Ans>det(4 Goto 0 B→O StoreGDB 7 det(0,4,"XTEMP001 Str1 real(10,0,1 If O=28 prgmXTEMP001 If O=34 Asm(prgmXTEMP001 8→O ClrDraw real(7,0 det(0,4,"XTEMP001 RecallGDB 7 DelVar GDB7DelVar Pic7 8→O Goto 0 Lbl 2 Line(0,Ymin,50,Ymin If O=14 det(0,Str1 If O=20 det(0,3,Str1 If O=26 det(0,1,Str1 Line(0,Ymin,100,Ymin rand(5 Line(0,Ymin,100,Ymin,0 Goto 00 Lbl 3 det(0,4,Str1 Goto M Lbl 4 "DOWNLOAD→Str2 For(I,4,5 det(0,I,Str2 End det(5,Str1→R For(I,1,R det(5,Str1,I det(6,Str2,Ans,I If 2000>det(4:Then det(0,4,Str2 R→I real(13,1 Text(54,80," ! real(13,0 End Line(0,Ymin,int(100I/R),Ymin End Line(0,Ymin,100,Ymin,0 Text(1,54,89,"_ Text(1,52,89,"⬇ //Little bold arrow Goto 00 Lbl 5 det(0,2,Str1 Goto M`

It's not perfect, but this is a test version. This program size is a lot shorter compared to the other version in the archives. Here is an input program that is critical to have for the main program. This program is compatible from shells, but not from MirageOS. It will not work properly. (This is a sub-program, do not run it by itself):

` ``ClrDraw real(13,1 Text(1,0,0," File Name real(7,0 real(13,0 Text(8,0,"TYPE A EXISTING FILE NAME Horizontal 4 Horizontal 4 Line(Xmin,4,Xmin,4 Line(Xmax,4,Xmax,4 Pt-Off(Xmin,4 Pt-Off(Xmin,4 Pt-Off(Xmax,4 Pt-Off(Xmax,4 " →Str1 1→M Lbl 0 real(13,1 Text(1,91,sub("Aa1",M,1 real(13,0 Repeat max(K={21,105,31,23,45 Text(28,1,Str1+"| Repeat K getKey→K End If M<3(K>40 and K<95 and K≠44 and 9>length(Str1:Then "ABC DEFGHIJKLMNOPQRSTUVWXYZθ If M=2 "abc defghijklmnopqrstuvwxyzθ Str1+sub(Ans,K-5int(.1K)-20,1→Str1 End If M=3(9>length(Str1) and max(K={72,73,74,82,83,84,92,93,94,102 Str1+sub("0123456789",27-3int(.1K)+10fPart(.1K)+2(K=102),1→Str1 End If K=31:Then M+1 If Ans>3:1 Ans→M End If K=23(1<length(Str1 sub(Str1,1,length(Str1)-1→Str1 If K=45:Then For(I,2,0,1 Line(2,I,99,I,0 Line(2,I,99,I,0 End " →Str1 End If 1=length(Str1) or max(K={23,45,31:Goto 0 real(13,1 Text(28,1,Str1+" real(13,0 sub(Str1,2,length(Str1)-1→Str1 Text(36,0,"SELECT FILE TYPE Text(42,4,"PROGRAM Text(48,4,"APP VARIABLE 42→O Repeat max(K={21,105 Text(O,0,"▶ Repeat K getKey→K End Text(O,0," max(42,min(48,O+6(K=34)-6(K=25→O End If O=48:"rowSwap("+Str1→Str1 det(0,7,Str1 If Ans=".P:NT:FN":Then If "rowSwap("=sub(Str1,1,1 sub(Str1,2,length(Str1)-1→Str1 " "+Str1→Str1 Text(28,90,"× ".P:NT:FN End If Ans=".P:NT:FN":Goto 0 Text(28,90," ClrDraw ClrHome real(7,0 Return`

There are some empty pockets in the main program. You can add some features of your own. There is no Input commands in either program, so I took GatoradeDC's advice and made a text-input instead.

I'll add this to the archives, once we try to sniff out all the remaining bugs, and features.

Here is some other information about the programs:

Size: 4,422

Lines: 417

Size: 942

Lines: 80

Let me know if you have any suggestions.

]]>1. random number generated is 73 (so I need another which is 77)

2. divide 73 by 10 and assign to variable. A=7.3

3. B=ipart(A) giving me 7

4. C=fpart(A) giving me 0.3

5. B×10=70 and (1-C)×10=7 aded to gether giving me 77 assigned to D

6. result is 73 generated from 77

The rest is straight forward. Prompt and check that 77×73 is 5621. I want to add difficulty levels that shortens answer times. Also add highscores, nice UI,etc.

Here is the result so far:

:ClrHome

:Lbl A

:randInt(11,99)->A

:A/10->B

:A/10->C

:fpart(B)->D

:ipart(C)->E

:E×10->F

:(1-D)×10->G

:F+G->H

:A×H->I (fixed mistake pointed out by UEBERhelp)

:Disp A,H

:Prompt J

:If J=I

:Then

:ClrHome

:Output(5,8,"Bravo")

:Goto A

:Else

:ClrHome

:Output(5,8,"Boooo…")

:Goto A

Enjoy!

I am aware I can get rid of some variables and calculate some inside the commands. Also its just spaghetti code. But for the time it works.

In case you know of some more elegant solution to find the second nunber with the given requierments, let me know. I will post final results on my new wiki page.

Have a nice day.

Benarius

]]>[[a,b,c][d,e,f][g,h,i]] is stored row by row in a list: {a,b,c,d,e,f,g,h,i}. I would like an algorithm for multiplying an m*n matrix by a p*m matrix and keeping it in this list compression syntax. ]]>

So now I want to know how TI implemented logarithms and other functions and how to make my own versions. I've looked at the ln page, but there isn't anything there about how it's calculated. I'm familiar with Taylor series, Newton's Method, and Halley's method but I don't know how to use them correctly or if any of those would work for complex values. ]]>

- Converts TI-Basic to an assembly program
- finds out the total RAM and ROM of a calculator model

Thanks

]]>Hey! I just created an account to ask for some optimizations for my 3D rendering program for a TI-84 Plus CE. I've been coding in TI-BASIC for quite some time, so I have sufficient knowledge of the language. This code was translated from The Coding Train (java) to BASIC, so the original code is not mine, all I did was port it over.

Feel free to drop by and contribute what you may, all help is accepted, including constructive criticism.

Here's my code:

` ``: //Setup : ClrHome : TextColor(BLACK : 2→L : : //Matrix Setup : {8,2→dim([D] : {8,3→dim([A] : Fill(.5,[A] : For(A,2,8,2 : -.5→[A](A,3 : End : For(B,0,4,4 : For(A,3,4 : -.5→[A](A+B,2 : End : End : For(A,5,8 : -.5→[A](A,1 : End : : //Graph Setup : 16.5→Xmax : -Ans→Xmin : 10.25→Ymax : -Ans→Ymin : ClrDraw : GridOff : AxesOff : PlotsOff : FnOff : : //Main Loop : 0→θ : Repeat getKey=45 : //Calcualations : startTmr→W : For(A,1,8 : Matr▶list([A]^^T^^,A,L₁ //"^^T^^" is the superscript transpose token : List▶matr(L₁,[B] : [[cos(θ),-sin(θ),0][sin(θ),cos(θ),0][0,0,1→[J] : [[1,0,0][0,cos(θ),-sin(θ)][0,sin(θ),cos(θ→[I] : [[cos(θ),0,-sin(θ)][0,1,0][sin(θ),0,cos(θ→[H] : [J][B] : [I]Ans : [H]Ans→[B] : 1/(L-[B](3,1 : [[Ans,0,0][0,Ans,0 : 20Ans[B]→[B] : [B](1,1→[D](A,1 : [B](2,1→[D](A,2 : End : : //Drawing Edges : ClrDraw : For(A,1,4 : For(B,0,4,4 : [D](A+B-(A=4),1→N : [D](A+B-(A=4),2→O : [D](A+B+1+(A=2)-4(A=4),1→S : [D](A+B+1+(A=2)-4(A=4),2→T : Line(N,O,S,T,BLACK,1 : End : [D](A,1→N : [D](A,2→O : [D](A+4,1→S : [D](A+4,2→T : Line(N,O,S,T,BLACK,1 : End : : Text(0,0,"SPF: ",checkTmr(W //SPF is seconds per frame : θ+π/16→θ : End`

:⸤DECK(T

:Disp "Value:", sub("A23456789TJQK",int(Ans),1

:Disp "Suit:", sub("SPADES HEARTS DIAMONDSCLUBS ",4fpart(Ans)+1,8

When I run this I get

ADES HE

SPADES