Review: Meta Kernel ROM Card
|Full Title||MDG Meta Kernel|
|Authors||Maubert Development Group (Jean-Yves Avenard, Christian Bourgeois, Cyrille de Brébisson, Etienne de Foras, and Gérald Squelart)|
|Form||128K ROM card for GX Slot 1|
|Reviewer||Eric Rechlin (Home Page)|
What is the Meta Kernel?
The Meta Kernel (remember, there is no "a" in Kernel!) is a 128K ROM card for the HP48GX. It replaces most of the user interface, both speeding it up and adding new features, without changing it so much that it needs to be relearned. Some operations seem to be 100 times faster, and functions previously unusable on the 48 become indispensable.
Replacements are included for the stack, the memory manager, the equation writer, the matrix writer, the text editor, the character browser, the graphics editor, and more. The Meta Kernel also adds a System RPL and assembly language development kit and many minor functions.
Components of the Meta Kernel
The Meta Kernel has a full stack replacement that is almost completely customizable. One can select the number of levels shown to be anywhere from five to nine lines by setting the font size (6 or 8 pixels high, with a choice of either 22 or 33 columns with the 6 pixel font) and the header size (no lines, one line, or two lines). Unlike many stack replacements, the command line uses the same font size as the rest of the stack. Custom (user-made) fonts may also be used for the stack, and a number are included on the MK disk.
Algebraics are shown with "pretty print". Though this isn't as comprehensive as EqStack, as it doesn't use pretty print with matrices and units, it is considerably faster. EqStack can coexist with the Meta Kernel, and it only takes 8K of RAM, so one can install it if they care. A cache isn't used for algebraics, so stack manipulations with complex algebraics are slightly slower than with Java, but it isn't necessary because MK is much faster at creating pretty print algebraics than Java or EqStack is. Grobs are also shown on the stack, and both of these functions can be turned off if desired.
One can select the stack to be either right-aligned (like a normal HP48) or left-aligned, though grobs and algebraics are always shown on the left. When the header is two lines, it shows a similar amount of information as the HP48 header, though it gets rid of the user flag status display but adds beeper, slot 2, and base status displays. When it is set to one line, less information is shown, but one can customize this as they like. It's too bad that the customization of the header isn't documented, though a custom setup for Erable is included on the MK disk. Either an analog or digital clock may optionally be shown in the two-line header.
There is also a new interactive stack, which is much faster than the original, allows information to be shown about each object, and uses the same font as the stack.
The editor included with Meta Kernel is very similar to StringWriter. At first glance it appears to be the same as the built-in editor, but soon it is apparent that it is completely different. Scrolling and typing is much faster as there is no lag in waiting for the calculator to catch up with typing. In addition, buried within a submenu, one can select the font to be bold, italic, underline, or inverse, and alternate fonts may also be used. One may even use as many as about 250 fonts in a single string!
It doesn't allow multiple font sizes within a single string, nor does it allow switching the font size without exiting and reentering the editor, but there are still a lot more features than most editors have. Just like the built-in editor, all HP48 menus are accessible. In addition, both cut/copy/paste and find/replace functions are available.
The Meta Kernel editor was designed to be as similar to the built-in editor as possible. This has its advantages and its disadvantages. Fortunately, STARTED and EXITED variables can be created for customizing it. The editor defaults to showing the standard header and the standard font. By creating STARTED and EXITED programs, one can remove the header or make it use the minifont.
There are a few features missing that are found in TED/ED, like the ability to press ENTER to insert a new line when alpha mode is on, the ability to hold down the cursor key and have it go to the next line when it reaches a new line, and the ability to show ten lines by removing the menu from the bottom of the screen. For this reason, I keep TED on my calculator even though I have Meta Kernel, as each editor serves its own purpose. Plus, TED includes a nice object viewer (VV).
The Filer is a complete replacement for the HP48G series right-shift-VAR memory browser. However, the Filer seems infinitely faster, can manage port memory as well, and has a user-friendly tree-style interface.
Upon loading the Filer, the Windows Explorer-style tree window is shown. One can navigate through the tree and jump to a file list to see the contents of a folder or port. The Filer makes daunting tasks, like moving libraries from one port to another, trivial. Reordering, renaming, purging, copying, and moving variables are extremely simple. There is no lag to anything, and it makes the HP48 seem like it has a 20MHz processor! Even 50K libraries can be moved from port to port in a couple seconds.
The Filer takes all the best features of PC Tools and other HP48 file management tools and puts them into one easy-to-use package. I saw no bugs in the Filer, though there were a couple minor French to English translation mistakes. The most notable was the use of the word "ARBO" instead of "TREE" to go back to the directory tree from the file lists.
Even the hidden directory is accessible in the filer. Also included is an information screen, giving, among other things, the memory address of an object, and a hexadecimal memory browser and disassembler. The Filer also has a few unexpected nice touches, like the ability to recall objects from write-protected ports (or ROM cards) and the ability to transfer files to another HP48.
The Meta Kernel also comes with a replacement equation writer called EQW. Whereas the HP48's built-in equation writer is so slow that it's unusable (probably because the team member designing it left HP for family reasons partly into the development of it), the one in Meta Kernel is extremely fast. A rather large equation that took one minute and six seconds to load in to the built-in equation writer took less than a second for EQW to load.
In addition, although the built-in equation writer is meant for writing equations, not editing them, EQW is also excellent at editing them. The MTH key brings up a menu of common math functions, plus commands to copy and paste parts of the equation and convert it to a grob. When pressing the tic-mark key, a cursor is displayed for selecting parts of the equation.
Entering equations into EQW is a little different than one might expect, but it works very well. For example, to enter 'COS(X)/6+3^2', one presses COS, DEL (DEL is redefined to insert an X when in editing mode), right-arrow, /, 6, right-arrow, +, 3, y^x, 2.
Like most of the Meta Kernel applications, EQW is customizable. By pressing PRG one can switch between the minifont and the standard font. Because both of these fonts are customizable, the appearance of EQW can be completely tailored to one's needs. By pressing the CST key, a user-defined custom program can be used. People who use Erable, like myself, can use a pre-created Erable choosemenu for accessing commonly-used Erable functions.
I LOVE this program!!! This really puts RainEQ (which seems to have been influenced by EQW) to shame.
An all-new matrix writer is included with the Meta Kernel. This is not only much faster than the built-in matrix writer, but also adds support for symbolic matrices, suitable for manipulation with ALG48 or any other symbolic matrix program. The matrix writer replacement uses the current stack font, so five or more lines are shown at a time.
One of the best features of the Meta Kernel is its integration, and the matrix writer is no exception. One can use EQW to insert algebraic expressions into a matrix, and the text editor may also be used to insert a string with multi-font text. Like all other Meta Kernel components, cells can be copied and pasted.
The new matrix writer is also an example of the efficiency of the Meta Kernel code, and thus the skill of the programmers. The original HP48 matrix writer is about 29K. In contrast, the Meta Kernel matrix writer, which is much faster and has many more features, is only 5.5K.
In my testing of the new matrix writer I only found one small bug. Though the button to decrease the cell width will rotate around to the largest size if the cell width is already the narrowest, the button to increase the cell width does not rotate around to the smallest width upon reaching the largest. I don't care whether it wraps around or not as long as it is consistent between the two buttons. Also, a button to turn on and off vector writing is not available. Perhaps a better solution would be to make the increase cell width button wrap around, and then replace the decrease cell width button with a VECT button (like the original matrix writer).
A completely different replacement for the CHARS program is also included. In addition to providing a high-speed character browser, the CHARS replacement also has a font editor for the current stack font (though not the minifont). One could, for example, use the font editor to add the Euro character (looks like this: € for users of a newer operating system supporting the Euro character like Windows NT 4.0 SP4) in place of an unused character.
Though the built-in CHARS program isn't particularly slow, the new one is much easier to use while retaining all of the features of the original. This is yet another winner for the MK team.
PICTURE2 is a replacement for the HP48's PICTURE program, though there are so many differences there is no comparison. PICTURE2 is a true graphics editing program, allowing 4 gray shades, text insertion, cut/copy/paste, and the creation of many shapes. Unfortunately, like any feature-filled program, it takes a while to learn. I have been working with PICTURE2 for several months but still don't know what all the features are for!
The graphics for many French HP48 games were created right on the 48 with PICTURE2, and it is much more powerful than PowerPaint. There are shortcut keys for virtually every function, and if a shortcut key is forgotten, the menus have the shortcut key in bold to remind the user. There is also a zoom function as well as three bookmarks (also used for creating shapes). The menu can be turned on or off, and a cursor-location window is also available.
The specifications of PICTURE2 are also very impressive: up to 4 colors, up to 2048x2048 pixels, and pattern fills of up to 8x8 pixels. This is all in a package of only 9K.
This brings me to another extremely useful function of the MetaKernel: multitasking. Most of the Meta Kernel applications have a shortcut key or softkey to halt the program and jump to the stack. This means that in PICTURE2, one can press the HALT softkey to go to the stack, perform some calculations (even going into the equation writer or the matrix writer, for example), create a text document in the editor, and then jump back to PICTURE2 to resume editing the picture. Despite the fact that this isn't true multitasking, it is still very useful.
The VAR menu is also replaced by the Meta Kernel. The new menu uses the minifont for lowercase letter support and also has different styles for different types of objects. For example, a rounded box is used for programs, a rectangular box with a line above it is used for directories (like the normal HP48), a rectangular box with four dots above it (quote marks) is used for strings, an inverted box with borders on the left and right is for numbers and algebraics, an inverted box with a border all around is for grobs, and a rectangular box is for other objects (like lists).
The new menu display is much faster than the built-in menu display routine, but it's still slower than Java, probably because it's partially System RPL rather than completely assembly language. Some other menus are also replaced with new lowercase ones, but it's not very consistent because, unlike Java, it only converts a tiny fraction of the built-in menus. The new menu display can also be turned off for those who don't like it.
This is one of only a few features in the Meta Kernel that could potentially be excellent, but it's only good because it's not fully implemented.
The final major part of the Meta Kernel is MASD, a System RPL and assembly language development kit. An RPL table is included for System RPL, and it takes 41K and can be in any port. Assembly and disassembly is much faster than Jazz. Unfortunately, a debugger isn't included, which many users will miss.
MASD uses its own syntax for assembly language, based on Jean-Yves Avenard's HP-ASM syntax. This syntax isn't compatible with the official HP syntax (also used by Jazz), but it is much easier to use, and Mr. Avenard has hinted that it will become the new official HP syntax, as he, along with several other members of the MDG, now work for HP's Australian Calculator Operation. With the release of PC-based assemblers for the MASD syntax, this could become a reality.
Jazz programmers will have to spend some time getting used to the new syntax, but new users should have a much better time learning it than learning Jazz. System RPL code created for Jazz can be compiled with MASD by simply adding a !NOCODE<newline>!RPL to the beginning and a @ to the end, so System RPL programmers will not have to learn anything new.
System RPL command completion is also included, so one could, for example, type #1, then right-shift-SPC, and then see a list of all commands starting with #1. They could then choose #1+ROLL, for example, and it is inserted into the code. A key-repeat feature would be useful in the menu, for skipping past many commands, but it still works well. The command completion feature is especially important because the Meta Kernel does not have an entries catalog.
Another example of Meta Kernel's integration is the ability to write System RPL and other special objects directly on the command line. For example, one can type ~ XLIB 1219 12 to put an XLIB on the stack. Or, one could type TRUE to put the System RPL TRUE object on the stack, or ~ E 15777 (where E is alpha-right-shift-E) to place the address (in hex) of the null character on the stack.
As mentioned in the previous sections, the Meta Kernel is extremely well integrated with consistent interfaces, a lot of customizability, and multitasking. In addition, it has a number of minor features, aimed at speeding up the HP48. There are far too many to list here, so I will highlight some of the most important features.
Perks for Programmers
In addition to the commands already mentioned, the Meta Kernel includes fixed entry points useful to both System RPL and assembly language coders.
There are 52 assembly language entry points. They cover many different functions, like decompressing BZ objects, beeping, keyboard handling, a fast off routine, and more.
There are 24 System RPL entry points. These entry points work with matrices, access internal Filer commands, and more.
The Meta Kernel comes with a beautifully-formatted, 150 page, printed manual as well as extended documentation on the included disk.
In addition to comprehensive coverage of all the components, the manual also includes introductions to System RPL and assembly language. There is even a brief RPL entry point list for System RPL programmers, plus specific information on each of the Meta Kernel entry points.
In this day and age, when companies like Microsoft seem to be omitting owner's manuals from their latest products, the extensive owner's manual is an unexpected touch. Considering that the native language of the programmers is French and the manual is in English, this is quite an accomplishment in itself.
As mentioned before, the Meta Kernel comes with a disk containing additional software and documentation.
The disk contains programs to display grayscale graphics as dithered monochrome graphics on the stack and to generate new RPL tables with more or fewer entry points, plus more than a dozen new fonts for the stack (download the UFL package for new minifonts) and customization examples for the editor and equation writer. Also on the disk are some programs that make use of the Meta Kernel and other useful, unrelated programs.
The disk also has more documentation, like a nicely formatted version of the HP RPL Manual in Word format and formatted entry tables.
The Meta Kernel was originally sold on a disk for around $50. It required a 128K RAM card, bringing the total investment to over $150 if an official HP card was used. In the spring of 1998, MDG made an agreement to have version 2.20 sold on a ROM card. This raised the price by about 50% but meant that a RAM card was no longer needed.
It is a product of more than five years of work by as many people. At first, it was a work in progress, as people who received version 1.x expecting to receive a free upgrade to 2.x when it was released. Upon the release of the ROM card version, sales were ceased for the RAM version, meaning new users would no longer receive updates. That's no problem, however, because few changes have been made since the 2.20 release of the ROM card.
Jean-Yves Avenard has stated that the Meta Kernel will someday be free, but the contract with da Vinci for distributing it doesn't end until mid-2000. However, it was recently announced that the contract with da Vinci was revoked because da Vinci refused to pay royalties to MDG for its sales. Because of this, any ROM card of the Meta Kernel purchased from da Vinci is an ILLEGAL COPY.
MDG is now working on Meta Kernel 3.0, according to Mr. Avenard's posts to HP48 newsgroups. He has said that it will add support for pretty print of matrices and units, a user-accessible full-screen browser, a faster EQW, and INFORM2, replacing INPUTFORM but 500 times faster (replacing all built-in input forms!!!). In addition, an on-stack scroller will be provided for viewing objects larger than the stack size and multitasking will be improved. Mr. Avenard also said that it will be modular, allowing the user to install as much or as little as needed, with a base size of about 70K.
Don't expect Meta Kernel 3.0 any time soon either. It was originally promised for August, 1998, but that deadline was missed. At the time of this writing (July 1999), Meta Kernel 3.0 still hasn't been released, and there is no sign of it being released soon. It probably isn't worth waiting for, though, as it may never become available.
Trying Before Buying
It is possible to try some of the features of the Meta Kernel before buying it. Owners of a 128K RAM card in slot 1 (or Emu48 users) may download a demo of Meta Kernel 1.x. It has many restrictions, and is missing a lot of features found in the latest version, but it gives a good idea of what the Meta Kernel is like.
Jean-Yves Avenard has also made some parts of the Meta Kernel freely available. For example, one can download Library Commander, which adds many of the command line System RPL features of the Meta Kernel to a stock HP48.
I think the Meta Kernel is a must-have program for any HP48 user. Of course, one needs a 48GX and must be willing to spend around $90 or so on a ROM card, but it's well worth it. The Meta Kernel transforms the HP48 from a good calculator to an excellent calculator. I have extensively used the Meta Kernel for about four months and have never found any major bugs. With a program this big (the source code is over 1MB!), one would expect there to be bugs, but I never received a single Memory Clear attributable to Meta Kernel.
Though there are a few things I would like to see improved in the Meta Kernel, none are major. The HP48 is like a brand new calculator when the Meta Kernel is installed, with nearly every interface function working faster and with more features. All I can say is to save up a little money and buy the Meta Kernel as soon as possible. Afterwards, you'll be unable to understand how you were able to live without it, and you'll never want to give it up. Of course, it will take a little while to get used to it, but it's well worth it.