*************************************************************************************
The Utlities Cometh... (06/04/2015)
I have been busy with the new MShell templets and I decided to create a "starting templet", which is going to be the first module loaded when you start MShell. This module I think I will call "The MShell 2 System" module or "Ms2Sys". Ms2Sys will not only have the "Module Menu" for selecting the MShell module in which you wish to run, but will also be a sort of "System Manager" module as well. Ms2Sys will contain many utilities to manage the OS9/NitrOS9 system such as editing screen colors, setting your mouse/joystick settings, keyboard repeat settings, free memory, disk check, free disk space, and a lot more. I have already started on several of these utilities and I'm very happy with how well they mesh into the MShell system and GUI. Some of the utilities I already have working are:
I know I'm probably forgetting some things, but I think you will get the idea. I am rewriting a lot of utilities so that they function properly in the MShell GUI environment. I try to find sources for utilities that have a little more functionality than the original Microware utilities that came with OS9 L2. Some utilities are completely original and have never before been implemented on an OS9 system. And of course, no intergrated, multi module project of this size and scope has ever been attempted before under OS9 and the Coco 3. I have already surpassed "Desk Mate 3" and "Multi-Vue" in size, scope, and functionality.
I have the GUI templets far enough along now that I will probably start dropping the code to MShell's original "File Manager" into the 2 panel templet so I can get it going and have some functionality instead of just an empy GUI. I have already started working my "BootMajik" and "Sound Chaser" projects into the new modules as well. I hope to soon do a demo release with at least 4 working modules so I can show off the versitality and modularity of a good GUI based OS9 system. Until then... Keep on Coding :-)
B.P.
*************************************************************************************
Time to STOP!... (11/10/2015)
I have been in and out of the MShell code for the past few months as my studio has picked up some business, but when I get a chance to work on MShell, boy do I work on it!. The past few months have been crazy as I found new ways to do many things in MShell and have expanded it's capabilities tremendously! I finally reduced my 3-part virtual memory routines (for the 3 different file systems) down to a 'generic' routine which works with all 3 files systems. This alone took a large chunk of code from the file manager module and any routine using this code. I think I can even optimize it further but I'm going to save that for the "upcoming rewrite" of MShell's core code. In experimenting wth MShell's C code, I have found there's lots of things that I can write in aseembly using the RMA assembler which would be much faster than the same C routine. So ultimately, I'm going to attempt a partial conversion to RMA code from C. I may do a 100% conversion if I see that this works well. Converting from C to RMA is no trivial matter, especially when dealing with large structured string arrays. C was written for that kind of thing and already has libraries supporting it. In asm (or RMA), you have to write your own string handlers and that's not easy, but it can be done (and I'm doing it!).
In the meantime, I have still been updating the current release of MShell but have come to a point where I feel I must STOP. The more I add now, the more I have to convert later. The main things I've been adding are functions that have been requested from my MShell users, so it was not in vain. I have about 4 more small things I'm going to complete in this revision and then I'm going to dedicate all my time to the assembly rewrite of MShell. In the past week alone, I have added about 9 or 10 major functions to MShell. Most of which involve "batch processing" This has been about the most requested feature for MShell... The ability to select and mark a group of files, click copy, delelte or move and MShell completes the action on all selected files in succession. Another thing I added was a couple of 'forked' modules that report and test the Coco's memory and a free disk space analyzer. This was actually easier than I thought it would be, but I just hadn't had enough free memory in the project until I optimized the virtual memory routines. Doing that released a lot of memory and I had some room to play. But as I said, it's time to stop. Starting next week, all my free time goes to the new MShell conversion project. Once this is done, MShell should be smaller, faster, and have many more features. The conversion also makes it easier to expand with the new modules I'm working on ... the "BootMajik" NitrOs9 boot creator, the "CocoIDE' Coco programming environment, the Dw4 system manager (for managing all aspects of the DW4 sevrer), and the "CocoHub" source control manager for "CocoIDE". These will be my projects for the new year as I have done about all I can do with a file manager (for now). So there's lots of good things yet to come!
B.P.
*************************************************************************************
Running STOP signs!... (12/02/2015)
I have tried to stop working on the current revision of MShell several times now so that I could focus on the C to ASM rewrite of the code, but it just hasn't worked. I sent my last revision to a group of test users to see if there were any 'bugs' to be squashed, and of course they found a few. Then in fixing the bugs, I made a few optimizations and freed up some memory so I started adding more utilities. The next thing I know, I'm four or five test versions down the road with several more utilities added! The one utility I added was a much needed feature, the "Directory Favorites". The Directory Favorites allows the user to browse to any directory on any file system (OS9, RSDOS, or PC) and then 'save' that filepath into a 20 slot directory favorites listing which can be instantly recalled at any time to go straight to that directory. This makes it easier to get to those "most used" directories buried deep on your OS9 hard drive or your PC server. I've also implemented a "Dir Sort" routine to sort your directories to keep them looking neat. There's a couple of more things that I can't think of at the moment, but for the past 2 weeks, I have been in a programming frenzy as the utilities just keep coming. I have two more that will be added in the next couple of days, which will be the "Delete Dir", "Copy Dir" and "Move Dir" which are much needed to complete the goals I had set for this module set in the beginning. With those utilities, I can finally complete the "Disk Copy" function will will be a combination of several utilities being run in conjunction with each other to get the job done.
Most of the programming time is spent chasing down the "add one thing, break two others" syndrom. This is due to the fact that the MShell modules and subroutines all sit on the edge of the Coco's and OS9's capabilities.There are many things in MShell, like the fragged subroutines, the virtual memory, the graphics work area and the menu overlay save buffers that all rely on falling on a 256 byte page or 8k page boundry. When something new is added, it moves other things over their boundries and something breaks. Then there's the evergrowing program stack space. Sometimes it's hard to tell were the boundries are being crossed as a function can span between two or three modules or subroutines, all using virtuall memory. For example, just this morning, I was adding a new menu to the graphics handler. I then proceeded to add code to the modules that would use the menu. Once I had things like I wanted, I run MShell and everything started breaking. I was getting error messages for functions I wasn't even using... after about 3 hours of chasing down and debugging code in the modules, I decided to take a look at the original addition of the menu to the graphics handler. I had added padding to the code in the graphics handler to make it's code fill the space needed so the mapped in graphics screen (for direct drawing) would fall on an 8k boundry. In adding the menu, the code stepped over this boundry and the direct draw graphics were overwriting the menu system. I removed the extra code padding and everything went back to working like normal and the new menu worked perfectly. And that was one of the easier ones to find... Some take days to figure out what is going on.
So I hope to finish up these last few routines within the next couple of days so I can then get back to work on the upcoming "New MShell v02.00.00" rewrite and maybe get back to work on some of the upcoming MShell modules that I keep mentioning... like the BootMajik automated OS9 boot maker, the FTP browser, The CocoIDE programming environment... BUT WAIT..... There's 213 bytes of memory I'm not using... I have a routine that will fit right in there!
B.P.
*************************************************************************************
Prev / Next