Omnimaga => Discontinued => Our Projects => Walnut => Topic started by: z80man on July 03, 2011, 02:32:53 pm

Title: Walnut Shell
Post by: z80man on July 03, 2011, 02:32:53 pm
Walnut Shell
For the Casio Prizm(
Introducing the start of the Walnut shell for the Casio Prizm, fx-cg10/20. Walnut is primarily a shell designed to run executable programs written in assembly, C, C++, and any other compatible compiled language. The goal is to make life easier for both the developer and the user.

For the developer:
No longer will you have to deal with the complicated g3a app format which not only limits your application's run time but also imposes heavy security and an over sized header. Instead you now have the gxp format which is far more flexible and smaller. The layout of the header is based off the packet design by Qwerty.55 which allows for changes to be easily made in the future along with allowing the developer to include only what is relevant to their program. The gxp format includes many optional fields that affect the way the program is ran such as physical/virtual execution and flash/ram execution. You can even set the program's origin and the designated cpu, memory, and peripheral clock before running too. With Walnut being heavily based off of popular computer OS's such as Windows, Linux, and Macintosh, commands in the shell are based off a terminal/command line. This terminal is normally invisible for the users sake but allows for many options on data being passed to a program. To allow the efficient development of programs a Walnut SDK is currently being built. It will be paired with the gcc compiler/assembler and will include a program to convert binary files to the gxp format. Later on this will become a gui based program that will easily manage everything from compilation to distribution. To make programs more efficient Walnut will heavily manage the virtual memory for the program. What this will mean is that because of the virtual layout, programs' executable data will lie on a continuous space while the data has its own space which will make the operand and instruction cache faster. Lastly Walnut provides a large number of built in routines that will cover everything from flash to usb and from sound to data compression. There is even a simple syntax for including and calling external libraries which will have the extension of gll.

For the user:
Although Walnut is primarily designed for running programs it also excels at opening many files too. An example is that whenever a picture file is selected, it is automatically sent to the default picture viewer/editor. Or by right clicking you will get a list of programs registered to open that file. If you're used to any major computer platform you will already know how to navigate Walnut and will find that many operations are the same. Selecting files and folders can be done from a simplistic terminal or from a customizable gui. Loading new programs couldn't be easier due to Casio's built in FAT and usb support. Walnut makes use of the FAT format allowing programs and files to be easily stored in folders. Because the Prizm is a calculator and is limited on memory, compression is very important. Over time Walnut will support a variety of mainstream compression techniques to allow the user to keep all their favorite programs at once. Lastly Walnut will help manage organization by storing the proper files in their proper folders. An example would be that a new bmp image would be automatically sent to the pictures folder.
Title: Re: Walnut Shell
Post by: shmibs on July 03, 2011, 02:37:38 pm
so in what state of completion is this at the moment?
Title: Re: Walnut Shell
Post by: z80man on July 03, 2011, 02:44:12 pm
Currently I'm working on the file/folder management and the gui. I hope to have a demo of Walnut loading and running a test program soon.
Title: Re: Walnut Shell
Post by: Ashbad on July 03, 2011, 02:44:25 pm
This is awesome!  :D  this will make C coder a lot more fun for me, and probably a lot easier as well.  What type of routines does it include at the moment?
Title: Re: Walnut Shell
Post by: z80man on July 03, 2011, 02:46:33 pm
This is awesome!  :D  this will make C coder a lot more fun for me, and probably a lot easier as well.  What type of routines does it include at the moment?
Right now most of the routines are for drawing stuff such as sprites, lines, circles. I will be focusing more on the libraries once I get the execution part perfect.
Title: Re: Walnut Shell
Post by: AngelFish on July 03, 2011, 03:06:41 pm
Nice to see this progressing. :)
Title: Re: Walnut Shell
Post by: calcdude84se on July 08, 2011, 05:08:11 pm
5-day bump. (And my first time seeing the topic.)
Sounds great. Not having to make an application every time seems like it'll be incredibly useful.
I don't have a PRIZM myself, but good luck! Others will surely find this most useful. :)
Title: Re: Walnut Shell
Post by: TIfanx1999 on July 09, 2011, 08:18:19 am
Sounds awesome, can't wait to see more! =)
Title: Re: Walnut Shell
Post by: Hot_Dog on August 04, 2011, 02:57:10 pm
This is going to be awesome, z80man!  Thanks for putting this together!
Title: Re: Walnut Shell
Post by: z80man on August 21, 2011, 04:40:37 am
---See Poll Above---
--Expires On The 1st of September--

When working on the location where ram would be located it came upon me that there is the possibility that virtual memory could be used instead of physical memory which apps currently use. When apps are developed both options will be available but one will need to be the default choice. Advantages of using virtual memory is that the physical location can be changed in runtime so old apps will be more compatible with newer shells. It is also worth noting that there is no speed difference between either mode. Hard coded applications though may prefer to use physical memory for ram as functions can be copied there in order to have direct access to the hardware. But in these cases it may be easier for the developer to select that option when building
Title: Re: Walnut Shell
Post by: z80man on August 31, 2011, 02:09:28 am
Now that this poll is just about expired it appears that ram data will be by default in virtual memory. This will hopefully allow in far future versions of Walnut for specially made programs to take advantage of multitasking capabilities. Simple programs that could benefit from multitasking that I've thought of are text editors, debuggers, command prompt, calculators, sprite editors, screen recorders, and most notably quadratic solvers :P
Title: Re: Walnut Shell
Post by: DJ Omnimaga on August 31, 2011, 03:15:13 pm
This shell will definitively be a must. I'M glad you started making one z80man :)
Title: Re: Walnut Shell
Post by: AngelFish on August 31, 2011, 03:43:40 pm
As much as I prefer physical memory, most programmers will be using C, which is much better adapted to virtual memory than physical memory.