So, I have been developing a program that utilizes Celtic III for a CLI. So far in my early versions, I have made it so you can type commands like this:


~$: ARG1 ARG2

Where argument 1 is a four-character command and the second argument can be whatever you want.
An example input:



The program also accepts custom functions, so you could have your own commands installed. You would have to make a program that has the code. In the main program, it has a built-in function that allows you to make other ones.


:If Str2="HLWD

Above in the function, the HLWD is the four-character prefix for the command.
The commented out "commands line is where you would put your code. You can even import another BASIC program's code from it. You can also do assembly code but to do that you have to add the det(20," prefix and add the hexadecimal code after the quotation mark.
There are about 9 built-in commands so far as of this version.
In this early version, single commands with no arguments have to be appended by two spaces. So to quit the program, you would have to type "QUIT " to exit.

I am planning to make it so you can have three or four arguments, with each on as long as you want. You are also not required to append spaces to single commands.

You can also have 4 arguments, like so:



In this example, the UGROUP command (short for "ungroup") which ungroups program-type files from a group file. The first argument `1` tells the program to overwrite all existing files (You can also pass 0 to not overwrite). The second argument `A` tells the program to send ungrouped files to archive (or `R` for RAM). And finally, the last argument `TIFLOW` is the group that contains the five program files.

If you want, you can also have nested arguments.

So this is the basic idea of this project, and I hope things go all and well.
I'd like to hear your input for suggestions, comments, or complaints. I'm excited about this program and hope people like it. The arguments are stored in four different strings, so there might be a better solution to that in case a function changes them.
You could hash them and put them into a list with a custom name. That way, nothing will change it.
Michael0x18 wrote:
You could hash them and put them into a list with a custom name. That way, nothing will change it.

THat sounds like a good idea. Hopefully the list is as short as possible, to minimize the amount of memory commands use
Of course, you might also be able to put the commands into an appvar, which eliminates the need for hashing (and only being able to store 5 characters per entry).
Michael0x18 wrote:
Of course, you might also be able to put the commands into an appvar, which eliminates the need for hashing (and only being able to store 5 characters per entry).

I can store them into app vars, but I can use any length I want when I separate the string containing the commands into different strings with this code:


"UGROUP 1 A TIFLOW ->Str1 //in the program, the command you did
DelVar G0
Repeat G=length(Str1
sub(Str1,Ans+1,inString(Str1," ",Ans+1)-Ans-1
   If A=1
   If A=2
   If A=3
   If A=4
inString(Str1," ",G+1->G

Or it would have been the correct code if I didn't get a domain error from Str1.
EDIT: I found the solution to my problem. All fixed!
So far, the program to install/remove functions is complete. I've also completed the main program will all the normal built-in functions.

You can also view information about the function, change function settings (like the minimum OS and the calculator model required).

You can also update the main program as well (if there is a new version of it)

If you'd like the demo for it, shoot me a DM or reply.

Main program demo:

Installing and removing functions demo:

Updating the main program demo:

Yes, I know that the updating thing is a bit cumbersome. But I did this to make the programs feel more like a terminal.
I've changed a little bit on how the main program works.

* Removed MathPrint support
* Capitalized the "D"s in "done"
* Changed a section in the data list, it now is the install location of functions instead of whether math print should be enabled (if not done so already)
* Added a built-in command to unsquish squished assembly code in assembly programs
* Removed the built-in command `CRASH`.

I've also made a fork of this program for the TI-84 Plus/SE. In this version 1.03α84, I've added the following built-in commands:

* TIMER_hours_minutes_seconds: Sets a timer for the desired hours, minutes, and seconds.
* STOPWATCH: Starts a stopwatch.
* TIME: Shows the time.
* DATE: Shows the date.
* HWCLOCK: This shows the hardware clock integer.
* UNIXCLOCK: Shows the Unix integer from the Hardware Clock.

If you have any suggestions, comments, or complaints let me know! OwO
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum