Introducing AtomicOS!

Over the past week or two, I've been working on a Windows-like interface, written in Axe Parser for the TI-83/84 Plus/SE.

Completed features:
• A functioning mouse system with multiple cursor sprites depending on the position and circumstance of the mouse (The mouse is normally the default slanted arrow cursor, but can become a grabby hand if the mouse is over something clickable, or a resize arrow cursor for resizing things like windows and (images?)
• Support for the translucent selection rectangle (the translucent box you might use on the desktop for selecting multiple files or apps)
• The ability to turn the calculator off and back on again, saving your place in the shell; and a battery that tells you your battery percentage to the closest 25%
• A demo window that can be moved around the screen
• Inverting the current option selected

Work-in-progress:
• Resizing windows (pretty painful...)
• A built-in command line
• More types of cursors, like the I-beam text cursor and maybe a "loading" cursor

Planned features (of which there are many):
• The ability to launch apps
• Pinning apps to the desktop
• Adding an app store and settings app
• Deleting/uninstalling apps
• Lock screen (?)
• Having multiple windows open at once
• An about screen
• ...and maybe even an easter egg...

At this point, you may be wondering how apps will function. Of course, it is impossible to download apps from online onto a calc, so you will need to manually download them through TI-Connect CE or another linking program. The "apps" (they're not actually flash applications, I'm just calling them "apps"), will probably be appvars that Atomic will detect and list. Each app will just be a regular program with a specialized header to make it detectable by Atomic, similar to the way one might make a TI-Basic program compatible with MirageOS.

Note that this is of course not actually a custom OS like KnightOS to replace the TI-OS. In other words, you will still be able to exit the program and return to the home screen to do math.

I hope that all made sense! If it didn't, let me know and I will try to reword it differently.

Screenshots should come soon, but I will need to figure out how to get an emulator running first.


Screenshots!


https://drive.google.com/file/d/1tXR-5RT9D4vKZlGiXXR1e1QObvExzCQ7/view?usp=sharing

I'll probably post better screenshots once I manage to get an emulator running.
I haven't been working on this as much as I should, but it's time for a project update!


Here's what's been added since the latest screenshots:

• The minimize, maximize/restore, and close icons in the top right corner of each window
• Inverting the three afore-mentioned icons when the mouse is over one of them
• Closing, maximizing, and restoring windows (minimizing hasn't been done yet)


Here's what I'll add next:

• Minimizing and re-opening (of course)
• Manual resizing by moving the mouse to the very outside of a window
• I fixed a lot of bugs involving the mouse, there might be a few left. (It would sometimes display the wrong cursor.)

Finally, screenshots:
https://drive.google.com/file/d/1BN9RUJcwvInkzJJ1kQ-YjVw8wyxwtYze/view?usp=drive_link
Good thing seeing projects started on monochrome calculators Smile. A great leap forward for axe programs!
P.S. maybe use an image hosting site like imgur and use BBCode to link to here.
Jeff calc 84 wrote:
Good thing seeing projects started on monochrome calculators Smile. A great leap forward for axe programs!
P.S. maybe use an image hosting site like imgur and use BBCode to link to here.


Thanks! I personally like the monochrome series a lot. I will definitely look into imgur, so thanks for the suggestions and compliment. Very Happy
I'm back, with even more updates!

Added features:
• Manual resizing by moving the mouse to the edge of a window and shrinking or expanding it
• Minimizing windows
• Re-opening minimized windows from the taskbar

Bug fixes:
• Graphical bug where the inverted Windows icon in the bottom left didn't completely fill the sprite
• Mouse would start drawing the translucent selection rectangle sometimes if it went below a section of the screen.

I may add window snapping (moving a window all the way to a side of the screen and making it fill that half, and the top of the screen to maximize), but I don't use that feature much on actual computers and it would mean that you can no longer have a window all the way on either side. If you guys don't feel either way about it, then I just won't do it and save time, program speed, and size. I'm still curious to hear your input though.

I will explain in greater detail how files will function in AtomicOS. There will be three file types: apps, text documents, and images. All three will be appvars, but their filetypes will be distinguished by their headers. Apps will simply be code that AtomicOS will execute before returning back to the desktop of Atomic. Text documents will consist of their title followed by the contents of the note in plaintext. Finally, images will be formatted as the size of the image in pixels (1x1 to 96x53), then tons of encoded digits that make up the image itself. Text documents will be viewable when you click on them, and maybe editable at some point. Images will be drawn to the screen when you open them and you will be able to scale them with two different keys (probably + and -).

I think I'm just about done with the graphical part of the interface for now and it's time to move on to the core of the program. This will mean detection of specific files, running them, and returning to the main part of Atomic. Unfortunately, I don't know assembly, and I don't think you can do much of that in Axe. (Someone please correct me if I am mistaken.) Therefore, I will need to accomplish much of this using inline hex, so if any of you assembly programmers happen to have or know of any routines that can detect and/or run programs, that will be much appreciated. Also, if possible, please leave it in the hexadecimal format so I can use it in my Axe code inline.

https://imgur.com/a/Kr7mjeY
Also, how do I embed the video into this post from imgur? I tried and I couldn't get it to work. Thanks!
Quote:

https://imgur.com/a/Kr7mjeY
Also, how do I embed the video into this post from imgur? I tried and I couldn't get it to work. Thanks!

1. Go to the link
2. Right click on the video
3. Select "Open this video in a new tab"
4. A new tab should be opened. Copy the link to the video and proceed as normal.

Hope this helps Smile
Jeff calc 84 wrote:

4. A new tab should be opened. Copy the link to the video and proceed as normal.

This is the part where I'm confused. Is there some BBCode magic I need to use to embed it? I tried [img] and [url] but they didn't work.

Also, to TL;DR some of my previous post, does anyone have any hexcode snippets I can use for AtomicOS? I can't really proceed much with it until I have them. Wink

EDIT: I forgot to mention what hexcodes I needed. Although just about anything would be useful, I specifically need ones for detecting appvars that begin with some kind of header, and one to run them.
use [img ] and [/img ] for this.
Example: [img ]https://imgtu.com/uploads/lhwf1am4/1759589669.gif[/img ]
The effect:


Quote:
I specifically need ones for detecting appvars that begin with some kind of header, and one to run them.

Actually, regular Axe can do this too.
An example would be:

Code:
.A
#Axiom(MEMKIT)
"ERROR!"->Str2
ClrHome
ZXmin)
ZXmax)->X
Repeat X=0
   ZXmax)->X
   dim()->Y
   dim()^^r^^r->Z
   If Y=21 and (Z=0)
      dim()^^r->P
      If P
         If ({P}=72) and ({P+1}=73) and ({P+2}=74)
            Disp P+3
         Else
            Disp Str2
            Disp [i]
            Disp {P}>Dec
            Disp [i]
            Disp {P+1}>Dec
            Disp [i]
            Disp {P+2}>Dec
         End
         Pause 2000
         ClrHome
      End
   End
End

Where the first three bytes of all AppVars will be compared to 72,73,and 74. If it matches, the program prints the rest of the AppVar. Otherwise, it prints "ERROR!" and then prints the first three bytes of the AppVar in decimal format. Uses MemKit. Smile
Note: if you type this in on the calculator, replace ZXmin with Load(, and ZXmax with Next(. Smile
Link to the same question on Omnimaga
As for running the AppVar... Do you mean the appvar is assembly byte code or something Question
Hope this helps. Smile
It's good to see the monochrome calculators still getting some love, nice project Smile.
Like this?


Quote:

Actually, regular Axe can do this too.
An example would be:

[code]

Where the first three bytes of all AppVars will be compared to 72,73,and 74. If it matches, the program prints the rest of the AppVar. Otherwise, it prints "ERROR!" and then prints the first three bytes of the AppVar in decimal format. Uses MemKit. Smile
Note: if you type this in on the calculator, replace ZXmin with Load(, and ZXmax with Next(. Smile
Link to the same question on Omnimaga

Thank you! I'd completely forgotten about MemKit...Laughing I'll still need to spend a little while figuring it out though, as I've never used it.

Quote:

As for running the AppVar... Do you mean the appvar is assembly byte code or something Question
Hope this helps. Smile

Yeah, I think it will just be some kind of assembly program, but as an appvar. Basically det(0,2) in Celtic III when you convert a program to/from an appvar. I don't actually know assembly or really anything about appvars, so all the apps and stuff will probably just be programs for the time being. Thanks a lot for the help! Very Happy

Quote:
It's good to see the monochrome calculators still getting some love, nice project Smile.

Thanks!
Actually, if it's REALLY assembly byte code, then you only have to copy the bytes to a new program, add the header, checksum etc., and then run it. Smile
This may be useful: https://merthsoft.com/linkguide/ti83+/fformat.html
Jeff calc 84 wrote:
Actually, if it's REALLY assembly byte code, then you only have to copy the bytes to a new program, add the header, checksum etc., and then run it. Smile
This may be useful: https://merthsoft.com/linkguide/ti83+/fformat.html
This is not necessary if you're generating the program on-calculator, it's only for creating a .8x* file offline. Is that what you're talking about? Or do you mean a computer program to generate a file you can send to the calculator?
This project looks pretty cool! I've been looking for a alternative for DCS7 since it's been crashing a lot for me, and this looks fairly promising!
It's still in the beta stages though...
Yeah, Atomic isn't close to being done yet, as I still need to finish the interface, actually get file detection done with MemKit, make it customizable with a Settings app, and eliminate all of the bugs that might show up. I haven't had time to work on it very much, and when I have I've been working on other programs, but this one is one of my top priorities. I'm hoping to have at least a beta released before Christmas, but only time will tell. Thanks for the support! Smile
  
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

 

Advertisement