-
If any of you are wondering what my recent tweets have been about, or what I'm blabbering on about in IRC then let me enlighten you :)
I have recently been working on a OS inspired by KOS. Rogue has been in the works for a long time but has never really gotten off the ground until recently. RogueOS was originally going to be based on the Knight Kernel, but since I am unable to work with the Knight Kernel due to re-writes, I'm opting for just basing it off of a basic version of the Knight Kernel and working from there.
After making that decision I sat down and wrote out what my goals for Rogue were and here is a somewhat edited version of that original list.
Features
- Multitasking
- App Style programs
- Animated App Switching
- System Pane
- 3 Dedicated screen buffers
- Filesystem
- Power Menu
Multitasking
- Interrupt based
- States
- 0 - No Thread
- 1 - Zombie
- 2 - Started
- 3 - Running
- 4 - Interruptable
- 5 - Uninterruptable
- Shifts through Thread Table in a round-robin manner
App Style Programs
- Specific file structure for each app ( ie: app.exe, metadata, resources etc )
Animated Switching
- Switching between running apps will be animated with a slide in from left/right
- ON+left/right arrows will switch between the running apps
System Pane
- By default a bottom pane will be displayed showing different information
- Info
- Free RAM ( percent )
- Current App ( App # / Total running # )
Time ( I'm still on the fence about this one )- Battery low warning ( only if battery is low )
3 Dedicated screen buffers
- So apps don't have to allocate extra buffers for greyscale etc
- buffers
- 0 - Main buffer
- 1 - Back buffer
- 2 - extra buffer
Filesytem
- Basic FAT style filesystem for now. Possible change to a Journaling system later
- Supports
- Directories
- Files
- Symbolic Links
Power Menu
- Holding ON will bring up the power menu in an overlay ( interrupting any running apps ( so everything goes greyscale ) )
- Overlay
- Up Arrow - Sleep
- Down Arrow - Hibernate
- Left Arrow - Go left one running app
- Right Arrow - Go right one running app
- Y=/F1 - Bring up System Menu ( ie: apps and options )
- Sleeping turns off the screen and halts processes, then puts the cpu into a low power state
- Hibernate Backs up the RAM State and turns the calculator off completely
Completed Milestones
- Multitasking
- FAT/Filesystem reading
- Loading Executables/Data to RAM
- LCD Locking for specific threads
- Integrating some of the Knight Kernel features
So right now, I have a working, but limited OS :D
Oh and before I forget, I am working on this project with a mix of wine, mono, spasm, wabbitemu, wxwabbitemu, make, gedit and os2tools. Right now the building process is aimed for linux, but I could add in support for windows later, when I get around to making an svn for you guys to grab from :)
(http://dl.dropbox.com/u/763272/Screenshot-Wabbitemu-2.gif)
Booting Rogue OS's debug build. Using boot.exe and welcome.exe to display the two last messages with multitasking
( BTW: I'm writing my last Diploma exam tomorrow, so I'm not really active until after it, but I thought I should just post this now for the hype :P )
-
This looks promising Eeems, as most OSs, but it seems you've started making some stuff :) I just don't get the exes, what are they, calculator files?
Good luck with this :)
-
Wait, "welcome.exe?"
Are you seriously parsing .exe files? O.O
-
Not .app? D: J/k looks awesome! I really like those keypad tricks like holding ON. Any idea when we can have a demo? :D
-
This looks promising Eeems, as most OSs, but it seems you've started making some stuff :) I just don't get the exes, what are they, calculator files?
Thanks :)
Exe's are executable files. My file system isn't limited like TIOS the data can have any format/name it wants.
Wait, "welcome.exe?"
Are you seriously parsing .exe files? O.O
.exe is just an extension placeholder for now, I might change it to something else, I might not.
Not .app? D: J/k looks awesome! I really like those keypad tricks like holding ON. Any idea when we can have a demo? :D
lol :P
Yeah, I'm excited about them too, I have no idea when I will be at that state, but I'll try to get an svn set up as soon as possible so you guys can grab the most recent source whenever you want and make your own personal demos :P
-
Here's a suggestion: When the user holds down the ON button for, say, three seconds, the calculator either turns off immediately after quitting all programs (since RAM clears don't even matter at all), or goes into a "teacher mode" that looks like the TI-OS homescreen.
-
Here's a suggestion: When the user holds down the ON button for, say, three seconds, the calculator either turns off immediately after quitting all programs (since RAM clears don't even matter at all), or goes into a "teacher mode" that looks like the TI-OS homescreen.
Umm, I'm not going to do that. I prefer letting people hold on to keep the overlay on as long as possible.
I'm also not going to support all the math functions by default so I'm not going to have a teacher mode. Someone could make a Teacher Mode addition to it if they want and they could add in a patch for the three second thing as well, but I'm going to let people hold the on button as long as they want. Especially since apps that disable multitasking or turn off the system pane need a way for the user to get out of them/ view the pane. Holding on will display the overlay as well as force show the system pane.
Anyways, here is the svn for you guys, feel free to load trunk/build/Rogue.rom into an emulator to see it in action. I would recommend against loading it onto your calc for the time being with the 8xu since it is really useless. If you want to help me work on it feel free to let me know and I can set up a branch for you :)
http://code.google.com/p/rogueos/
-
Wait, "welcome.exe?"
Are you seriously parsing .exe files? O.O
.exe is just an extension placeholder for now, I might change it to something else, I might not.
I vote that they don't end in .exe -- it reduces confusion.
What happens if an app is already in grayscale and you bring up the overlay? It could potentially look ugly if the app uses grayscale in an unusual way.
-
Wait, "welcome.exe?"
Are you seriously parsing .exe files? O.O
.exe is just an extension placeholder for now, I might change it to something else, I might not.
I vote that they don't end in .exe -- it reduces confusion.
What happens if an app is already in grayscale and you bring up the overlay? It could potentially look ugly if the app uses grayscale in an unusual way.
The greyscale rendering will be disabled, and it become monochrome for the length of time the overlay is open since I don't want the headache of somehow rendering both my overlay and it's greyscale at once, it's just going to use the screen buffer ( 0 ) for it.
-
Looks pretty cool. I always get excited about this kind of thing. :w00t:
-
Looks pretty cool. I always get excited about this kind of thing. :w00t:
Thanks :) Me too :P
So I've been trying to work on the file system to get better support for Directories atm, and it's kind of coming along :/
-
Sounds awesome :D
-
Hey, nice to see you post about this. I'm looking forward to seeing this develop. =)
-
I'd like to put up a request for 5 Graph buffers -- two main, two for copying to the main ones for quick static rendering, and an extra one :)
-
Ok this might just be me but I just rabbed the .rom file from the provided link and dragged 'n dropped it unto wabbitemu. It then says boot succesfull but if I press any key the screen goes blank. I suppose this is not what should be happening? 3 dedicated buffers made my day though :) lol
-
/\i think that is what's supposed to happen, actually, as he doesn't have much else fully implemented yet./\
good luck on the file system, eeems!
-
Ok this might just be me but I just rabbed the .rom file from the provided link and dragged 'n dropped it unto wabbitemu. It then says boot succesfull but if I press any key the screen goes blank. I suppose this is not what should be happening? 3 dedicated buffers made my day though :) lol
yes, that is all it is suppose to do right now, it's running boot/boot.bin which loads boot/boot.txt and displays it on the screen then waits for a keypress then shuts down.I'd like to put up a request for 5 Graph buffers -- two main, two for copying to the main ones for quick static rendering, and an extra one :)
that is a lot of extra space. If a program wants extra graph buffers they can allocate the space themselves.
Hey, nice to see you post about this. I'm looking forward to seeing this develop. =)
Thanks :)
good luck on the file system, eeems!
I have already been able to implement multilevel directory support! :D
EDIT: I started adding sound support, but it is still extremely unstable so it's turned off by default in src/inc/Options.inc
-
So I'm almost done getting my filesystem patcher working ( it takes an existing folder structure, compiles all the * . * .asm files into * . * ( so boot.bin.asm into boot.bin ) and then creates all the necessary files from that for the FAT as well as a file that includes all the correct files. ). I'm still having issues with putting the right info on the FAT, but it's almost done! This will make it really easy for me to mess around with what is on the FAT. To patch the folder structure ( currently src/filesystem/ ) into the normal build just run make filesystem. Or to test it make filesystem debug.
Sound is still not working correctly though.
-
I have finally gotten my filesystem patcher to work completely! It's not quite as good as defining your own filesystem ( an extra 0A00h is added at the end ) but it works!
If you get the most recent svn revision ( remember this only builds on linux until someone converts the makefile and my MakeFS script. ) the folder structure that it builds in is this:
/ ; root directory
boot/ ; where all the bootup files are stored
boot.bin ; binary to run on bootup
boot.txt ; welcome message to display at bootup
etc/ ; All the settings will be stored here
hostname.txt ; Hostname of the system ("Rogue"). It's a placeholder for now.
src/filesystem/boot/boot.bin.asm is the file that is compiled into boot/boot.bin so feel free to play around with that if anybody wants to mess around.
A normal make all looks like this:
-
you're computer's name is "chloe"? lol
Glad to see it builds well with the filesystem.
-
you're computer's name is "chloe"? lol
Glad to see it builds well with the filesystem.
Yep :P
I'm currently trying to solve an issue with a hardware bug that I had thought I had fixed, but it's not longer working. The filesystem is working great though :D
-
Alright since my last post was yesterday :P
I worked my way around the hardware bug thanks to Runer112 :)
And here is the overlay ( Without the system tray, I'm working on adding that ). Thanks again to Runer112 ( and to ZippyDee ) for helping me get my sprite routines working.
EDIT: sorry eeems, i accidentally hit modify and had to restore the post by going back and copy/pasting. i'm using a proxy, though, so i didn't have the link to the gif you used and had to save/upload it D=
-
what exactly was the hardware bug? i saw a lot of you talking with runer, but i never got exactly what the issue was.
-
Some of Eeems' routines require that interrupts be off. So he has to back up the on/off status of the interrupts before he can disable them and run his routine, and then he has to re-enable them at the end if they were on. The ld a,i instruction is the primary way to do this, as it affects flags by setting the p/v flag if they are on and resetting it if they are not on. However, due to a hardware bug, if an interrupt activates right as this instruction is reached, the flags will reflect interrupts being off. So unless you do some more robust testing than just relying on the flag output of ld a,i, your interrupts will be mysteriously disabled on rare occasions.
-
ah, ok thanks.
do you think there's any way this could have been what was causing the garbled text issue, eeems? it certainly seemed liked an interrupt issue. i can't svn checkout the new code to test, though, because my father has blocked google.code again.
-
ah, ok thanks.
do you think there's any way this could have been what was causing the garbled text issue, eeems? it certainly seemed liked an interrupt issue. i can't svn checkout the new code to test, though, because my father has blocked google.code again.
why did he block it?
-
Looks pretty cool!
-
ah, ok thanks.
do you think there's any way this could have been what was causing the garbled text issue, eeems? it certainly seemed liked an interrupt issue. i can't svn checkout the new code to test, though, because my father has blocked google.code again.
This is really strange, I'm not getting it and I've been testing a *ton* ( as to be expected )
Hmm, use withg.us.to to check it out and then download it from there :)
Looks pretty cool!
Thanks! Hopefully we can get together and talk about cross-compatibility with KOS sometime soon?
-
Ok, so I've stabilized my code a ton. It's ~95% more stable now.
(http://dl.dropbox.com/u/763272/Rogue/Screenshot1.gif)
( sorry about how slow that screenshot is, keypresses in wine wabbit suck )
-
It's not that slow, or at least I don't think it is.
-
I see the word FInished in the screenshot O.O
-
I see the word FInished in the screenshot O.O
I think that's for the execution of something. The OS can't be near finished. ...Can it?
-
It's not that slow, or at least I don't think it is.
It's going way slower then it should be :P I'll do a screen capture of it to show you later ( using wxwabbit )
-
Hey, lookie here!
(http://dl.dropbox.com/u/763272/Rogue/Screenshot-Wabbitemu-0.png)
Any guesses ;P
-
Sounds like a nice, friendly OS to program for. :)
Will it support dual booting with the TI-OS?
-
Sounds like a nice, friendly OS to program for. :)
Will it support dual booting with the TI-OS?
No ( and you aren't the first to ask this ). Due to how different they are it will be impossible to dual boot the two OS's on the same calc. Plus there would be hardly any space to do so with.
-
Oh, :\
Would it be possible for someone to make a program to support TI bcalls?
-
Oh, :\
Would it be possible for someone to make a program to support TI bcalls?
There is the possibility of a compatibility layer, but I haven't looked too into it.
-
Oh, :\
Would it be possible for someone to make a program to support TI bcalls?
There is the possibility of a compatibility layer, but I haven't looked too into it.
Well, either way, it sounds like it will become a great OS. :)
-
Hey, lookie here!
(http://dl.dropbox.com/u/763272/Rogue/Screenshot-Wabbitemu-0.png)
Any guesses ;P
May I know how you start the ROM in wxwabbit? I sent it to wxwabbitemu, but can't start it (I'll fix this bug on wxwabbitemu today or tomorrow, from now on ROMs will load automatically like in Windows Wabbitemu). How did you start it?
-
I just opened the rom in wabbit and it works.
What exactly are you getting that is an issue?
( Also I'm using revision 74 of wxwabbitemu to load this )
To anybody on windows using wabbitemu, Rogue will not boot on any version past 1.5.6.20 due to the fact that wabbit now requires you to have a boot page and I have been relying on the bootfree page included with wabbit. I will eventually maybe work on a fix for that, but until then, use wxwabbitemu or an older version of wabbitemu and it will work.
EDIT: I've been working on the panel a bit still, but mainly I've been trying to track down some annoying random bugs in my code.
(http://dl.dropbox.com/u/763272/Rogue/Screenshot-Wabbitemu.png)
( Oh btw, why it's now at 90% is probably because I added a 10 byte text buffer for some text routines so there is a tiny bit less space there. Also my free space routine doesn't round up, it rounds down so it is probably actually just under 99% free. )
I see the word FInished in the screenshot O.O
It just means that the system start up is finished :P