Author Topic: KnightOS Updates (DO NOT POST HERE)  (Read 18036 times)

0 Members and 1 Guest are viewing this topic.

SirCmpwn

  • Guest
KnightOS Updates (DO NOT POST HERE)
« 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
Demo Downloads:
TI-73
TI-83+
TI-83+ SE
TI-84+
TI-84+ SE

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.

« Last Edit: October 11, 2011, 03:31:56 pm by meishe91 »

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #1 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
« Last Edit: August 01, 2010, 08:04:41 pm by SirCmpwn »

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #2 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #3 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #4 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #5 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #6 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.
« Last Edit: August 26, 2010, 05:59:15 pm by SirCmpwn »

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #7 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.
« Last Edit: September 23, 2010, 08:42:20 am by SirCmpwn »

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #8 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #9 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.
« Last Edit: October 15, 2010, 10:35:19 pm by SirCmpwn »

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #10 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #11 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #12 on: November 27, 2010, 06:27:26 am »
Update
I just created the official KnightOS website at 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.
« Last Edit: November 27, 2010, 06:27:48 am by SirCmpwn »

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #13 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.

SirCmpwn

  • Guest
Re: KnightOS Updates (DO NOT POST HERE)
« Reply #14 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.