However, when I did the Shift+[RCL] function with Str1, I noticed something was odd about the first four characters. Instead of displaying:

"

, it displayed:

"

. And it only got more weird. When I moved the cursor up to the top, it changed to:

ClrHomefPart(

And whenever you press [CLEAR] it resets the cursor to line 1, column 8, and it will actually accept commands there.

I tried it multiple times, and it kept happening the same way. Whenever you press [ENTER], it sets the first few characters to:

ClrHomefPart(

but if you press [CLEAR] from there, it resets to the normal position, at 1,1.

What I found most odd about it was that it actually changed the string from the initial form. In any case, I hope to do more research, but if you try something like it (but in a diff. order) you might get strange results as well. See what you can find!

]]>Code:

` ``:ClrHome :0→X :Prompt H,M // Hours and Minutes :ClrHome :Lbl 1 // I checked it for a memory leak and I think that it is ok :iPart(X/5.445809055→S // Number that I have come up with lots of testing :Output(4,7,": :Output(4,10,": :If H>12 :Output(4,5,H :If H<=12 :Then :Output(4,5,"0 :Output(4,6,H :End :If M>=10 :Output(4,8,M :If M<10 :Then :Output(4,8,"0 :Output(4,9,M :End :If S>=10 :Output(4,11,S :If S<10 :Then :Output(4,11,"0 :Output(4,12,S :End :If S=60 :Then :0→S :ClrHome :0→X :M+1→M :End :If M=60 :Then :0→X :0→M :0→S :H+1→H :End :If H>=24 :Then :1→H :0→M :0→S :ClrHome :End :X+1→X :Goto 1`

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.

]]>(Note, this is in SourceCoder3 format) Here's the code:

` ``For(I,4,~1+int(1.59154943092*pi End I+BROWN/int([e]->I% not(Ans->|N Goto E Lbl C If |N=2MedGray+1 Goto E If sum(|N={DarkGray,25,2Magenta,2Navy,2MedGray+1 Then Output(I,I%," " I+(|N=2Navy)(I<Blue)-(|N=Gray+2)(I>1->I I%+(|N=2Magenta)(I%<2Magenta)-(|N=DarkGray)(I%>1->I% End Lbl S Output(I,I%,"X" For(theta,int(~|E9rand),0 getKey->|N If Ans 1->theta End Goto C Lbl E ClrHome If not(|N Goto S`

:x + 1 ->x

This is currently all I have. From now on I would need to program something that tells the calculator what to do depending on what items the player and the calculator chose. There's probably also some optimization that can be done, so if anyone could help me I would really appreciate it.

]]>https://www.artyfactory.com/isometric-drawing/images/large-isometric-cube.gif

Requirements:

- Each tiny cube should be drawn individually, and overlay cubes behind it if necessary.

- The number of tiny cubes should be able to be changed easily.

Disp: "0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

Disp: " 0

prgm //Insert name of the program here

I would prefer if people provided hints (what command they would use or how they would use it) but not show any code. I'm a beginner-intermediate programmer so if anyone could help, I would greatly appreciate it.

]]>` ``ClrHome {11,28}→dim([A]) For(A,2,10) For (B,2,27) max(0,randInt(⁻3,1))→[A](A,B) Output(A,B-1),"O") End:End 0→G Output(1,1,"GENERATION") Output(1,16,"MEMBERS=") Repeat getKey or M=0 G+1→G For(A,2,10) For(B,1,26) Output(A,B,sub(" O",[A](A,B+1)+1,1)) End:End Output(1,12,G) Output(1,24," ") //four spaces [A]→[B] 0→M For(A,2,10) For(B,2,27) Output(A,B-1,"θ") If [A](A,B)=1:M+1→M Output(1,24,M) 0→N For(C,-1,1) For(D,-1,1) If [A](A+C,B+D) and 2≠sum(not({C,D}≠0)):N+1→N End:End If N=3 and [A](A,B)=0 1→[B](A,B) If [A](A,B)=1 and N≠2 and N≠3 0→[B](A,B) Output(A,B-1,sub(" O",[A](A,B)+1,1)) End:End [B]→[A] End`

]]>
Much of the community here is comprised of BASIC programmers, so you won't be as affected. However, many popular games and utilities are assembly programs, so you and other calculator owners won't be able to play/use them on the new OS (and presumably subsequent ones).

On the bright side, this does mean that there will be more demand for BASIC games, and we might see more people who need our help.

Stay safe everyone!

]]>Can be because of anything but here are a couple of examples:

- Has the best version of TI-Basic (Define best however you like)

- Best interface

- Anything else you would like to mention

I'm new to the community so I'm interested in what your opinions are. Have a great time coding, and I'm interested in seeing the responses.

]]>` ``ClrDraw ZStandard 104->Xmax ~72->Ymin ZInteger real(12,3,0,0,94,61,1 41->A:Ans->E 29->B:Ans->F 1->H:0->V 5->S:0->theta 0->D Pt-On(41,~29,2 Repeat not(pxl-Test(N-1,M-1 2+3int(31rand->M 2+3int(20rand->N End Pt-On(M,~N,2 Pt-Off(M,~N,3 Pxl-On(N,M Repeat D or K=45 getKey->K If Ans:Then If H:Then (Ans=34)-(Ans=25->V If Ans 0->H Else (Ans=26)-(Ans=24->H If Ans 0->V End End If H:Then A+3H->A If pxl-Test(B,Ans-H 1->D A Pt-On(Ans,~B,2 Pxl-Off(B,Ans-H Pxl-Off(B,Ans-2H Else B+3V->B If pxl-Test(Ans-V,A:1->D B Pt-On(A,~Ans,2 Pxl-Off(Ans-V,A Pxl-Off(Ans-2V,A End If D Goto SQ If pxl-Test(B,A:Then Pxl-Off(B,A Repeat not(pxl-Test(N-1,M-1 2+3int(31rand->M 2+3int(20rand->N End Pt-On(M,~N,2 Pt-Off(M,~N,3 Pxl-On(N,M Pxl-On(62,theta theta+1->theta If Ans=95 1->D S+3->S End If D Goto SQ If S:Then S-1->S:Else pxl-Test(F,E-1)-pxl-Test(F,E+1 If Ans:Then Pxl-On(F,E+2Ans Pt-Off(E,~F,2 E+3Ans->E Else 1-2pxl-Test(F+1,E Pxl-On(F+2Ans,E Pt-Off(E,~F,2 F+3Ans->F End:End Lbl SQ:End`

The only problem is that makes the game slower. If you were to run the original game and this game back-to-back, you can definitely tell a difference. Is there a faster way to do this so it doesn't affect performance? There are no memory leaks in this program. (This is programmed in Source Coder 3 on Cemetech, so ignore if some parts of the code if it looks funny. ~'s are negatives, and -> is the Store (→) character. theta is θ)

]]>If there are any other programs, shells, apps, or stuff like that that would be helpful to have on my calculator, could someone share that with me? Thanks!

]]>` ``ClrHome:ClrDraw 38→A:24→B:8→N:1→M randInt(0,A-1,N)→⸤SEEDX randInt(0,B-1,N)→⸤SEEDY {11,15,19,14,10,13,23,22,21,20}→⸤COLOR 0→R "√((⸤SEEDX(I)-K)²+(⸤SEEDY(I)-L)²"→u For(K,0,A) For(L,0,B) N→dim(⸤DISTS) For(I,1,N) u→⸤DISTS(I) End SortA(⸤DISTS) If ⸤DISTS(M)>R ⸤DISTS(M)→R End:End For(K,0,A) For(L,0,B) For(I,1,N) u→⸤DISTS(I) End SortA(⸤DISTS) ⸤COLOR(max(1,(min,23,int(round(10*⸤DISTS(M)/R,0)))))→C Pt-On(K,L,C) Pt-On(K,L,2,C) End:End For(I,1,N) Pt-On(⸤SEEDX(I),⸤SEEDY(I),BLACK) Pt-On(⸤SEEDX(I),⸤SEEDY(I),2,BLACK) End`

I've tried to optimize it as much as possible, and here is the program so far:

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`

(Learned it a few years ago, but I thought it was cool)

Anyway, after studying pi from mid-March (I knew 145 digits) to late April (I knew 500 digits), I finally added 4 digits so the number I knew would be divisible by 6. (Now it's 504.)

Anyway, here's the first 144 digits of pi and a TI-BASIC program to fact-check me with:

3.14 159 26 535 897 932 3846 264 3383 279 502 884 197 1693 99 37510 58209 74944 5 92307 816 406 286 208 9986 2803 482 53421 1706 798 21480 865132 8230 6647 0938 4460 95505 8223 1725 359

` ``{3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4,3,3,8,3,2,7,9,5,0,2,8,8,4,1,9,7,1,6,9,3,9,9,3,7,5,1,0,5,8,2,0,9,7,4,9,4,4,5,9,2,3,0,7,8,1,6,4,0,6,2,8,6,2,8,0,3,4,8,2,5,3,4,2,1,1,7,0,6,7,9,8,2,1,4,8,0,8,6,5,1,3,2,8,2,3,0,6,6,4,7,0,9,3,8,4,4,6,0,9,5,5,0,5,8,2,2,3,1,7,2,5,3,5,9→L₁ Disp sum(L₁`

If I made a mistake somewhere, you should just ckeck out the internet, I got the original fact from

three

.onefouronefive

.net. ]]>

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`

EDIT: Nevermind, I found out how to do this. It's a bigger pain-in-the-*yoink* to do so.

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

]]>` ``#include <iostream> using namespace std; int mul_inv(int a, int b) { int b0 = b, t, q; int x0 = 0, x1 = 1; if (b == 1) return 1; while (a > 1) { q = a / b; t = b, b = a % b, a = t; t = x0, x0 = x1 - q * x0, x1 = t; } if (x1 < 0) x1 += b0; return x1; } int main(void) { cout<<mul_inv(42, 2017)<<endl; return 0; }`

in my TI-Nspire CX So far I have the following code but am getting variable not defined in if statement.

Here is the code I have in my Nspire CX so far.

` ``Define LibPub modinv(a,b)= Func Local b0,t,q,x0,x1 0→x0 1→x1 If b=1 Then Return 1 EndIf While a>1 q:=((a)/(b)) t:=b b:=mod(a,b) a:=t t:=x0 x0:=x1-q*x0 x1:=t EndWhile If x1<0 Then x1:=x1+b0 EndIf Return x1 EndFunc`

the inspire is throwing an error on this line.

` `` If x1<0 Then x1:=x1+b0 EndIf`

Not sure what I am doing wrong here! Any insight would be appreciated!

]]>` ``Define chat()= Prgm Requeststr “Say Something:”,I,0 If I=“test” Then Disp “You: “,I Wait 1 Disp “Java: Test is valid” Wait 3 Requeststr “Say something:”,I,0 Elseif I=“r” then Disp “You: “,I Wait 1 Disp “Java: Test is valid” Endif Endprgm`

How do I make any phrase/word be able to be said on any “say something”? Because I just says say something I type r and it says say something again and then I say r and it works. I want to not make it an orderly fashion and make it work every time… please help me… ]]>

If you want to see the game you can go to CalcNerd on Youtube. I am fairly new to this Ti-Basic community but am loving it!

]]>For now, all you need to know to help with this program is that there is a line of cells across the top, and each one is either on or off. When it advances to the next generation of cells (drawn in on the next line), it changes one cell's state based on the cell to the left and the cell to the right. Because of this, the program has to check each cell in the row to determine if it should stay on, stay off, or change state. I am hoping there is a faster way to do this, since right now it takes a very long time to draw an entire screen.

W is the width of the screen that the calculator is drawing on (and it is centered at 132, the middle of the screen for a TI 84 CE)

Str1 is an 8 digit string of zeroes and ones. The calculator determines how a cell should change by checking the cell and its left and right neighbor and turning that into a number 1-8 (because there are 8 different states the 3 cells could be in). The number corresponds to a digit in Str1 and determines if that cell should be on or off. Str1 can be changed to show any of the rules for cellular automata.

` ``For(Y,0,163) For(X,132-W/2,132+W/2) If expr(sub(Str1,8-4(pxl-Test(Y,X-1))-2(pxl-Test(Y,X))-pxl-Test(Y,X+1),1 Pxl-On(Y+1,X End End`

There are online programs that can do this in a matter of seconds. Is there a way I can make this loop run faster? I have tried referencing a list of 8 numbers instead of a string, but it didn't appear to run faster. I'm hoping there is something that I have missed, but it's possible that a calculator just can't run any faster. If you have any ideas of how to speed this up, I would greatly appreciate it!

]]>Minimum Requirements:

Display: 320x320/ 240x320 - 16 bit color LCD

CPU: ARM9-26EJ-S (132 MHz)

SDRAM: 64 MB

NAND Memory: 128 MB

Flash ROM: 512KB NOR ROM

OS Version: Min. v4.5.0

COMPATIBILITY:

Ti-Nspire CX CAS & Non-CAS

Ti-Nspire CX II CAS & Non-CAS

a = 6 b = 4 def nCr(a, b): #Since a nCr B = a!/(b!*(a-b)!): a!, b!, and (a-b)! are 3 elements and are put into a list for simplicity L1 = [a, b, a-b] L2 = [0, 0, 0] for i in range(3): n = L1[i] g = 1 #Factorial for each list element in L1 for j in range(1,n + 1): g = g*j #Put the factorial in it's own element in L2 L2[i] = g #Since each L2 element were factorialed, do the same thing as a!/(b!*(a-b)!) return L2[0] / (L2[1] * L2[2]) Ans = nCr(a, b) print(Ans)

If this is the formula for binompdf(, how can this be interpreted in python as a function?

def binompdf(n, p, k)

\begin{align} \operatorname{binompdf}(n,p,k) = \binom{n}{k}\,p^k\,(1-p)^{n-k} = \frac{n!}{k!\,(n-k)!}\,p^k\,(1-p)^{n-k} \end{align}

]]>
I believe the most recent one on education.ti.com is `5.4.0.0034`

EDIT: I just found and installed this Operating System :D

]]>` ``Disp “score=“,score”%”`

So the output is:

` ``Score=80%`

How to replicate: Run a program with the Menu( command then let the calculator shut off by itself for 2 hours. Turn it back on and go straight to the Catalog and find the GetCalc( command. Press enter. The above image is the result. After you use the GetCalc( command with

Define whatsmyname()

Prgm

Disp “you’re “,name

RequestStr “would you like a name change?”,n

If yes Then

RequestStr “New name:”,name,0

Else

Text “ok, fair enough.”,0

Don’t judge me please. I’m new to programming and This is my first program.

]]>Avalanche (done), Chase (HARD)(done), Chase (EASY)(done), Connect 4 (2 Player), Darts, Demented Snake, Fly the Copter, Guess the Number, Hangman, Hop Over, Light Cycles, Mancala (Ruleset 1), Mancala (Ruleset 2), Mastermind (Alternative), Maze Walkthrough, Memory, Mine Field, Pong (done), Rock-Paper-Scissors, Simon Says, Snake, and Tetris ("debugging").

Let me know what you guys think or if you have any suggestions so far. When this thing is done, I hope to have all the sources in the README.txt file.

]]>` ``:"Find And Replace TOOL If det([[1:Then Disp "E:CELTIC 3 Is","Not Installed. Return End:real(7,0 //Turn run indicator off Disp "","Input An","Existing prgm. Lbl 0 Repeat 9>length(Str9) and not(inString("mean(seq(rowSwap(*row(",sub(Str9,1,1 det(20,"FD361251 //Activate Alpha-lock Input ">",Str9 End det(0,7,Str9 If Ans=".P:NT:FN Disp "E:Undefined If Ans=".P:NT:FN Goto 0 Lbl M Disp "*FINDING OPTIONS","1:Find","2:Find, Replace","3:Quit Repeat 1=length(Str1) and inString("123",sub(Str1,1,1 Input ">",Str1 End If Str1!="3 //!= is not equal to Goto FF DelVar Str1Delvar Str9Return Lbl FF DelVar AStr1="2→F sub(det(0,7,Str9),1,1 If F and Ans="A //Check to see if [Find, Replace] was selected and if selected program is archived Then Disp "UnArchiving 1→A:det(0,Str9 End DelVar Qdet(5,Str9→R //Store amount of lines of code the program has to R expr(sub(det(0,7,Str9),4,5→S //Get program size and store it to S If R>75:Then //Confirm is user wants to search in programs that have over 75 lines of code Disp "prgm"+Str9+" Is",det(1,R)+" Lines Of","Code. Continue? Repeat 1=length(Str2) and (Str2="Y" or Str2="N Input ">",Str2 End Str2="N→Q //If Str2 equals "N" (or "No") then return to FINDING OPTIONS menu End If Q:Goto M Repeat 1=length(Str2 Input "Find:",Str2 End If F:Then Repeat 1=length(Str3 Input "Replace:",Str3 End:End ClrHome:real(7,0 real(13,1 Disp " FINDING //8 spaces after the word FINDING real(13,0 Disp "Searching","prgm"+Str9+"...","Lines:"+det(1,R),"Size:"+det(1,S)+"b If not(F Output(7,1,"Line:0% Output(8,1,"Total:0% 0→Z //Initialize finding variable. If just 'Find' was selected, then this variable is only for Finding. For(X,1,R //Start at first line and loop to last line (could take a while) det(5,Str9,X→Str1 //Read the nth line (X) from the program and store to Str1 If not(F:Then Output(7,6,"0% //Two spaces after 0% For(J,1,length(Str1 Z+(Str2=sub(Str1,J,1→Z Output(7,6,det(1,int(100J/length(Str1)))+"% End Else length(Str2→J 1→I While inString(Str1,Str2,I inString(Str1,Str2,I→I Str3 If I>1 sub(Str1,1,I-1)+Ans If I+J<1+length(Str1 Ans+sub(Str1,I+J,1+length(Str1)-(I+J Ans→Str1 I+length(Str3→I End det(8,Str9,Str1,X //Replace the modified Str1 in line X. (E.x. If line 21 had 'HELLO*WORLD!' and you were searching got asterisks and replacing them with spaces, it would update the original line of code in the program) Output(8,7,det(1,int(100X/R))+"% End ClrHome real(13,1 Disp "*TASK COMPLETED //1 space after word COMPLETED real(13,0 If F:Then Disp "All Text "+Str2,"Replaced With "+Str3,"In prgm"+Str9 Else Disp det(1,Z)+" "+Str2,"Found In ","prgm"+Str9 End If A:Then //If program was archived before the task was started, re-archive it to prevent user frustration Output(8,1,"Archiving det(0,Str9 Output(8,1," //9 spaces End Pause DelVar Str1DelVar Str2DelVar Str3DelVar Str9ClrHome Return`

This Celtic 3 program has the ability to find and replace text in any program (provided you have enough RAM). You can simply find tokens/characters in any program (silent search without touching the program) or find and replace (unarchive the program and modify it). Works with any program (including assembly, but avoid doing this). This program is 1,285 bytes in size. It can be run with shells.

Note: Any //'s are comments. DO NOT type those in the actual program.

]]>