Omnimaga

Calculator Community => Discontinued => Major Community Projects => KnightOS => Topic started by: SirCmpwn on June 22, 2010, 04:37:41 pm

Title: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on June 22, 2010, 04:37:41 pm
Thanks for your interest in KnightOS!  Here's some stuff you might like to check out:
Latest Update (http://ourl.ca/6182/250929)
Demo Downloads:
TI-73 (http://knightos.sf.net/downloads/KnightOS_73-DEBUG.73u)
TI-83+ (http://knightos.sf.net/downloads/KnightOS_83p-DEBUG.8xu)
TI-83+ SE (http://knightos.sf.net/downloads/KnightOS_83pSE-DEBUG.8xu)
TI-84+ (http://knightos.sf.net/downloads/KnightOS_84p-DEBUG.8xu)
TI-84+ SE (http://knightos.sf.net/downloads/KnightOS_84pSE-DEBUG.8xu)

DISCLAIMER: These OS files are pre-release demos, and are not guaranteed to be stable.  In the event that you need to remove KnightOS or repair any problems, simply remove a battery, hold down DEL, and replace it.  You will be able to send a new OS.  Regardless, no responsibility for damage incurred by using these demos should be leveled against Drew DeVault.

(http://img.removedfromgame.com/imgs/KnightOS-10-9-2011.gif)
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on July 31, 2010, 11:17:53 pm
Update
KnightOS had a major breakthrough - the first successful hardware test!
Eeems, who recently started working on the kernel with me, tested KnightOS on a TI-83+ today successfully.  All the implemented features worked flawlessly, and it sent to the calculator just fine in signed form.  It was also tested by _player on a TI-84+ SE after some changes.
In addition, the following features and landmarks have been reached:
*Memory allocation is done, for both executable and data memory
*Eeems wrote a sound driver that allows for sound to be played from the OS
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on August 02, 2010, 08:24:56 am
Update
The filesystem now has a basic flat implementation, and I will be supporting the tree in a few days.  In addition, I was able to load a file from the filesystem into RAM and execute it.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on August 03, 2010, 09:27:30 am
Update
Program loading now works almost completely, I'm going to work on the tasker later today, after band camp.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on August 04, 2010, 11:35:50 pm
Update
KnightOS made a major stride today - relative address loading.  At runtime, a program has no idea where it will end up in RAM, and therefore cannot correctly load relative pointers, or perform relative jumps or calls.  I just implemented kld, which has the same syntax as ld, but it calls a system routine that adds the program's RAM offset to the specified address, and uses SMC to modify the executing code so that it only needs to run the system routine once.  It's pretty awesome.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on August 05, 2010, 08:57:12 am
Update
KnightOS now supports relative loading, jumping, and calling within executing programs via the kld, kcall, and kjp macros.  This is how it works:
Before running, the code for kld hl, HelloWorld, assuming that HelloWorld is at 0015h, looks like this:
rst 08h
ld hl, 0015h
Now, KnightOS loads the program into RAM and executes it.  However, programs do not know where they will be loaded at runtime.  Let's assume that it is loaded into 8100h.  When rst 08h is executed, KnightOS changes the code to this:
nop
ld hl, 8115h
This way, it is much faster and it never has to execute the rst again.  The same method applies to kcall and kjp.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on August 26, 2010, 08:48:32 am
Update
Multitasking now works!  That's right - you can now run up to 20 programs at once under KnightOS.
4 days of non-stop work finally paid off, I guess!  Attached is a screen shot of the process in action.  It shows two programs displaying the hex value of A, which is unique to their threads - they aren't displaying the same A.
(http://www.omnimaga.org/index.php?action=dlattach;topic=3502.0;attach=2974;image)
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on September 23, 2010, 08:42:05 am
Update
I added directory support to the filesystem last knight, so the OS now has full read support for the filesystem.  I will be adding libraries today, and write support next.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on October 14, 2010, 06:08:40 pm
Update
lcall and LoadLibrary now work, allowing you to load libraries into RAM and call functions exposed within.  LoadLibrary accepts the same arguments as ExecProgram, and lcall's syntax is lcall ID, Function.  Each library has a two byte ID, and I will set up a library registration service, so that IDs aren't re-used.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on October 15, 2010, 10:33:51 pm
Update
Libraries are now fully implemented, with the ability to lcall functions in a library, and the ability to navigate through a library from within itself, using lld, lcall, and ljp.
(http://www.omnimaga.org/index.php?action=dlattach;topic=3502.0;attach=3878;image)
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on October 22, 2010, 10:48:02 pm
Update
Flash writing now works great!  You can change the value of anything in flash memory.  Still to-do are page erasures, and for some odd reason, the flash write routine doesn't return correctly, but that should be easy to fix.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on November 07, 2010, 02:44:24 pm
Update
I haven't really been working that much on KnightOS.  You may have noticed my aversion to deadlines with this project.  Because of this, I have decided that on Janurary 1st, 2011, I will be releasing the KnightOS Developer Beta.  It will not have a lot of the functionality of the final OS, but it will be done to the point that developers can start working on it.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on November 27, 2010, 06:27:26 am
Update
I just created the official KnightOS website at http://knightos.sourceforge.net (http://knightos.sourceforge.net), where you will eventually be able to find downloads, source code, documentation, and developer information for KnightOS.  Please let me know if you find anything wrong with it.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on November 28, 2010, 08:15:12 pm
Update
I just implemented thread freezing in KnightOS, so that the OS can freeze threads when the loose focus. Frozen threads are not executed. Threads can also specify whether or not they are freezable, and will not be frozen if they specify otherwise. I also made it quite a bit easier for threads to access their thread flags.
(http://knightos.sourceforge.net/KnightOSThreadFreezing.gif)
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on November 30, 2010, 06:44:27 pm
Update
Hardware locking is now been implemented for the LCD port, and I am adding locks on the I/O, USB, and Keyboard hardware as well.  Of course I can't entirely stop programs from accessing the ports, but I can ask them to play nice, and all of the official routines are compliant with hardware locks.  The screenshot below is a demonstration of this technique, based on the same program from the previous update.  There are two threads, both waiting for keypresses.  Thread 01 is waiting on 1, and thread 02 is waiting for 2, and when those keys are pressed, they display their message.  Thread 01 is also watching for S, however, and when it sees it, it releases the LCD and gives control to thread 02.  In the screenshot, I alternate pressing 1 and 2, then press S every so often to switch LCD control.  Both threads try to write to the LCD, but only one is successful, and I can change which one that is.
The KnightKernel is progressing extremely well, and all I have left is to add hardware locking to other ports, add one flash control routine, and implement the filesystem.  Then it's just basic programs until the developer release.
(http://knightos.sourceforge.net/KnightOSHardwareLocking.gif)
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on December 08, 2010, 06:56:58 pm
Update
Up until today, the kernel has been split half and half between Little and Big Endian.  When I first started KnightOS, I was a bit confused as to the meanings of both, and ended up using Big Endian for everything.  But about halfway through, I became less ignorant, and started using Little Endian, because it is the standard.  However, I never took the time to go back and fix the old stuff that used Big Endian.  Today, I fixed it, and with that...
The kernel is done!
I feel that the kernel has been fleshed out completely.  The image I had in my mind 7 months ago for the kernel is now sitting in front of me.
That means that all that remains to be done before the developer release is the filesystem, and several small OS programs so that it is usable on-calc.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on January 15, 2011, 01:04:51 am
Update
It's been a while, due to some life issues, but this is on track for a developer preview on February 1st.  I got TI-84+ (SE) compatibility working (it previously was not), and started converting the filesystem to KFS.  Due to the complex nature of the KFS (it has been optimized for Flash), I have made an external program that will patch the filesystem into a ROM/8xu file.  I have also extended the KFS specification to include the garbage collection procedure.  Just a bit longer guys, and you'll have a copy to play with.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on April 18, 2011, 05:53:08 pm
Update
Hi there!  Sorry it's been so long since I've posted an update, but I've spent more time grounded than not in the past few months.  Now to the important stuff:
I've gotten basic KFS support working.  In past builds of KnightKernel, a simple read-only filesystem has been used as a temporary fix.  My current aims with KnightKernel is to get the real KnightOS Filesystem working on it, and in order to do this, I completely scrapped all existing filesystem related code and started fresh.  This means that I disabled multithreading and a lot of other features (including actually booting without crashing) that relied on reading from the filesystem.  Today, I re-enabled those features as basic support for reading from a KFS compliant filesystem has been added.
In addition to adding this support, RAM has been set aside for a file stream table, and I've also written several custom build tools for the kernel, as well as laid out the final structure of KnightOS itself.  I've written a tool that will take a ROM file and copy a directory on your hard drive to root on the ROM file, and one that will take the internal include file and generate an external include file based on it.  Next on my to-do list is to flesh out file reading a bit more, and add write support.  After that, I believe the kernel will be complete, and work on the OS itself may begin.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: SirCmpwn on May 09, 2011, 07:46:51 pm
Update
I'm still grounded, but I've finally managed to do what I previously considered impossible - I have compiled KnightOS entirely from a Linux machine.  This means I can get back to work on it and finally, KnightOS is back on track.  I still have the filesystem implementation to do, and that's one of the last things to do for the kernel.  After that, I'll get to work on KnightOS itself and have a developer release out in no time.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: KnightOS on October 10, 2011, 12:34:47 pm
The thread list program has been added and integrated into libgui so that users can switch between active threads.  Several other bug fixes have been added to improve overall stability of the system.  Here's a screenshot of the latest version, including task management:
(http://img.removedfromgame.com/imgs/KnightOS-10-9-2011.gif)

The latest version is available for download here:
TI-73 (http://knightos.sf.net/downloads/KnightOS_73-DEBUG.73u)
TI-83+ (http://knightos.sf.net/downloads/KnightOS_83p-DEBUG.8xu)
TI-83+ SE (http://knightos.sf.net/downloads/KnightOS_83pSE-DEBUG.8xu)
TI-84+ (http://knightos.sf.net/downloads/KnightOS_84p-DEBUG.8xu)
TI-84+ SE (http://knightos.sf.net/downloads/KnightOS_84pSE-DEBUG.8xu)

Note that these may be unstable and cause crashes.  In the event that your calculator becomes irrevocably crashed, you can fix it by removing a single battery, holding down the DEL key, and replacing the battery.  This will enable you to send a new OS, such as the official TI OS.  Be aware that installing any of these OSes has a high risk of deleting items in your archive, should you choose to re-install TI OS.  It is highly unlikely that your calculator will be damaged to the point that it cannot be recovered, verging on the point of impossible.  Regardless, I am not responsible for damage incurred.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: TheCoder1998 on January 15, 2014, 10:22:39 am
i'm sorry for replying on a (really old) topic i shouldn't reply on, but the links are broken...

i just thought i should mention that  ::)
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: Hayleia on January 15, 2014, 10:50:34 am
Yeah, but the guy is banned so he can't really fix them.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: Sorunome on January 15, 2014, 11:18:45 am
what are the real links?

I could edit them in.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: flyingfisch on January 15, 2014, 11:22:53 am
Just curious, how did he get banned?
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: Matrefeytontias on January 15, 2014, 11:24:56 am
I don't think the working links should be added in. First, nobody asked SirCmpwn, second, they're not nearly ready to be used.
Title: Re: KnightOS Updates (DO NOT POST HERE)
Post by: Sorunome on January 15, 2014, 11:28:57 am
Just curious, how did he get banned?
http://ourl.ca/12599