Hi,
Prepare yourself... alot of just text...
So you have arrived to this blog of text and wondering what all this jumbo mumbo is about,
you have arrived to the right entry. Hi, My name is Zakai Hamilton...
This project started out officially on 8 September 2002 (Yes... I started writing notes on my palm then for the project).
Q: So what is Screens Environment?
A: Good Question.
PalmOS - Yes... the OS (not the hardware) does feel a little old in the last few years right? Feel a bit abandoned? We were promised Cobalt just to find it trashed with some future linux version which we are a bit afraid of. But what about existing devices? If you have spent over 400$ on a LifeDrive device, you want to know that your device is going to last for quite a few years.
So, the Screens Environment project is designed to bring the magic back to the OS. How? By enhancing it with a nice thick layer of icing. Think of PalmOS... Its very low level, its API is low level costantly using your pointers logic and even its user interface is low level. Very bare, simple and small.
It reminds me alot of DOS... a very relatively simple thing which realy got better with the applications built on top of it. Then came windows and the rest is history.
I think history is repeating itself with mobile platforms. You have the bare PalmOS which is cool and edgy at the beggining but looses its edge as time goes by. So to keep it alive but still be compatible, you have two options: Emulation and 'Shutdown to DOS'.
I decided to choose the second option to be compatible with PalmOS applications. So Screens Environment is like Windows 3.1? Yes... Its an operating system on top of an operating system.
So what does Screens Environment offer?
1. Cooperative Multi-tasking - Just like Windows 3.1 you will able to run multiple applications at the same time and switch between them easily.
2. Window Management - You will able to move, resize, size and so on just like Windows but on your Palm. Sounds flaky? It isn't. Its not the default. The default is maximized windows, so think of window management as an extra, not a forced default.
3. Managed information - Hate that Contacts and Calander dont cooperate very well? Screens Environment has a center object store that not only can store information but can manage external information as well. You will able to make relationships between information from different data sets so changing one automaticly changes the other. This is the highlight of Screens Environment and I feel is a key to its success.
These I guess are the main three key points in Screens Environment with the third one being the main key point. Managing Information is why most users have a PalmOS device in the first place and Screens Environment is designed to take that a step further.
Q & A:
Q: Why is Screens Environment taking so long?
A: This project has grown just as I have. I am married and work at a full time job which leaves me very little time for the project but my passion for it keeps me going (plus the comments and notes I get from you users here and there).
Q: How much will Screens Environment cost?
A: Nothing... Its open source... Free of charge... No money required... I respect users, not credit cards.
Q: How open source?
A: As much as it goes. I dont care if you take every line of code, repackage it as your own and sell it. If that's what you think will bring you success, its fine by me. Really... Consider it your own personal idea. That's what Screens Environment is... a bunch of ideas merged together. So its not GPL, LGPL or anything like that. Its Free as is as Free as it gets.
Q: Wheres the catch?
A: Uh... There is always a catch... but why I should I tell you that ;)
Q: If Screens Environment is an OS, how much will the API cost?
A: Nothing just as the operating system environment will = 0$
Q: Is this like Open source where you get money by support?
A: No, Support is free... email me at
zhamilton1@yahoo.co.uk at any time for any help. I constantly help PalmOS developers with thier bits and pieces.
Q: So what's the catch then?
A: You'll just have to wait and see ;)
Q: What is Screens Environment requirements?
A: A Palm III and up
Q: Memory requirements?
A: About 256K for minimum I think
Q: Will it support HiRes and HiRes+
A: Yes... I personaly have a Tugsten E so it will mostly be driven for HiRes at the beggining with HiRes+ towards the 1.0 release.
Q: Where are the diagrams?
A: Well... there isn't much to show at the moment... I think diagrams will be more helpfull when the project is more 'alive' on my display.
OK... Thats it folks...
Now the update:
The plan code named "Saturn" is designed to be the first release of Screens Environment. It does have the object storage but uses it more for data store and less for API calls. While this means less flexability, it gives the ability to release Screens sooner which I think is important.
Technical Whoo...hooo... follows:
The major stop part at the moment is the KernelObject component. The good news is that its not far away from being coded in that there is 4 functions left before it which hopefully I should finish by the end of the week to work on getting this object storage working. I must admit that my knowledge from NDS has had a positive effect on this object storage. I actually have a working version of it working on windows CE but its NDS property and coded in C++. Screens Environment is coded in C, so it uses its own object storage implementation but the ideas and design share quite alot.
I finished coding the previous components: KernelMemory, KernelArray, KernelMap, KernelCollection have been coded with KernelItem left before KernelObject. Thier names are quite straightforward. KernelMemory deals with memory allocations, KernelArray handles a memory allocation split into fixed size elements. KernelMap extends that by allowing each element to have an identifier, KernelCollection is a two dimensional array where columns have identifiers while rows are by index and finally KernelItem is a hierarchy of memory allocations. All these together are used in KernelObject to form the hierarchy and organization of objects including relationships between objects.
Just to give you a quick glipse on the code, here is the header file of the kernel which I have written up to and including KernelObject.
http://www.geocities.com/zhamilton1/Kernel.zip
I will give out the source code of up to the KernelObject once I finish writing it. But enjoy the header file untill then. Basicly I will publish the source code for every component I finish. Note that the source code has not been checked that its correct untill I can get the drawing functions to work, so dont tell me how the code is illegal (although I have spent alot of time on writing good code without a debugger). Also note that this is my own code, so feel free to accuse me of copying ;)
I know this is a lot of technical stuff, but that's all exists at the moment. It will get much more interesting once I get to the layering component which follows shortly.
Thanks again for your comments, they keep this project alive,
Zakai Hamilton