As a side note, I'm fairly new to coding; I've been teaching myself for years and only recently started looking up the more advanced stuff. If there are possible improvements in my code, I would appreciate hearing those.

` ``:1→N :2→O :ClrAllLists :ClrHome :Input "DEGREE:",D :For(I,0,D :ClrHome :Disp "X^ :Output(1,3,D-I :Output(1,5,"TERM :Input ":",A :A→L₁(I+1 :End :ClrHome :Disp "QUOTIENTS ROOTS :L₁(1→A :Ans→L₄(1 :abs(L₁(D+1→B :For(I,1,B :If B/I=iPart(B/I :Then :B/I→L₂(N :N+1→N :End :End :1→N :For(I,1,A :If A/I=iPart(A/I :Then :A/I→L₃(N :N+1→N :End :End :dim(L₂ →L :dim(L₃→M :For(I,1,L :For(J,1,M :L₂ (I)/L₃(J→S :L₁(1→N :For(K,2,D+1 :L₁(K)+SN→N :Ans→L₄(K :End :If not(L₄(D+1 :Then :Disp S▶Frac :Output(O,1,L₄ :O+1→O :End :L₁(1→N :For(K,2,D+1 :L₁(K)-SN→N :Ans→L₄(K :End :If not(L₄(D+1 :Then :Disp -S▶Frac :Output(O,1,L₄ :End :End :End`

` ``ClrHome While 1 “ “→Str1 getKey→E While not(E=105) getKey→E If E=104: Str1+”-”→Str1 If E=102: Str1+"0" →Str1 If E=92: Str1+"1" →Str1 If E=93: Str1+"2" →Str1 If E=94: Str1+"3" →Str1 If E=82: Str1+"4" →Str1 If E=83: Str1+"5" →Str1 If E=84: Str1+"6" →Str1 If E=72: Str1+"7" →Str1 If E=73: Str1+"8" →Str1 If E=74: Str1+"9" →Str1 If E=41: Str1+"A" →Str1 If E=42: Str1+"B" →Str1 If E=95: Str1+"+" →Str1 If E=85: Str1+"-" →Str1 If E=75: Str1+"*" →Str1 If E=65: Str1+"/" →Str1 If E=55: Str1+"^" →Str1 ClrHome Disp Str1 End sub(Str1, 2, length(Str1)-1→Str1 “ “ →Str3 //HERE IS THE WHILE-LOOP IN QUESTION While length(Str1)>0 inString(Str1, “+” →U :If U=0: length(Str1→U inString(Str1, “-” →V :If U=0: length(Str1→U inString(Str1, “*” →W :If U=0: length(Str1→U inString(Str1, “/” →X :If U=0: length(Str1→U inString(Str1, “^” →Y :If U=0: length(Str1→U sub(Str1, 1, min({U, V, W, X, Y→Str2 length(Str2) →G length(Str2) →H If G+1>H: Then: str1=”” Else: sub(Str1, G+1, H-G→Str1 12→A G-inString(Str2, “.”)-1→B 0→D For(N,1, G-1 0→F sub(Str2, N, 1→Str4 If not(Str4=”.”): B-1→B If Str4=”1”:1→F If Str4=”2”:2→F If Str4=”3”:3→F If Str4=”4”:4→F If Str4=”5”:5→F If Str4=”6”:6→F If Str4=”7”:7→F If Str4=”8”:8→F If Str4=”9”:9→F If Str4=”A”:10→F If Str4=”B”:11→F (F*(A^B))+D→D End Str3+toString(D)+sub(Str2, length(Str2), 1→Str3 If sub(Str3, 1, 1)=” “:sub(Str3, 2, length(Str3)-1→Str3 Disp "String 1: "+Str1 Disp "String 2: "+Str2 Disp "String 3: "+Str3 End`

I am trying to write a program on my TI-84+ CE that allows the user to perform calculations with base-12 numbers with ease. The basic idea is that when the program is running, the calculator may be used like a normal calculator, and that the user's input is displayed as they type. The program receives a String input with base-12 numbers and converts all of the numbers in the String to base 10. I have been coding pieces at a time, so this is only part of the final product. I have a piece of code that takes a substring of the input string that includes a number and the following operator (if one exists), calculates the base-10 value based on the digits in the substring, and then concatenates that value with the operator in the substring to a third string, which I plan to use the String>Expression method with later. The issue is that the while-loop in which this piece of code is housed only works once! I even tried displaying the three Strings at the end of the loop and no matter what, they only display once! For example, "5*9A-6" displays Str1 as "9A-6", Str2 as "5/", and Str3 as "5/" (all 3 are displayed only once). By the end of the loop's first iteration, Str1 clearly has a length greater than 0 (4), and yet the while-loop doesn't run again. Does anyone have any idea what the issue is or how to fix it?

P.S. The part of my code that I have pasted here that is not the "problem code" may not be exactly syntactically correct as I was planning my code in a google doc, but hopefully it is easy to see what its purpose is. The piece of code with the issue is very faithful to what I have written on my calculator, though.

]]>` ``Input ¨Order:¨,O O+1→O O→dim(L₁) O→dim(L₂) O→dim(L₃) For(A,1,0) Input ¨Coefficient: ¨,C C→L₁(A) End Input ¨Num Of Real Roots: ¨,N N→dim(L₂) For(A,1,N) Input ¨Root: ¨,R R→L₂(A) End For(A,1,N) L₁(1)→L₃(1) For(B,1,O-1) L₂(A)*L₃(B)→L₄(B+1) L₁(B+1)+L₄(B+1)→L₃(B+1) End L₃→L₁ O-1→O Disp L₁ End`

]]>
I have also not been so active on the forums lately, school and my new job have gotten in the way of this. I am letting you know I am not dead.

]]>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.

]]>