After seven years, Grammer was revived (https://www.omnimaga.org/grammer/latest-grammer-updates/msg407211/#msg407211) with a new update! In fact, since then, there have been three more major updates, including today's Grammer 2.51.0.0.
After losing the source code in 2013, Grammer progress died, but then in 2016 Hans Burch(ticalc) (https://www.ticalc.org/archives/files/authors/115/11564.html) recovered the source code, presumably by disassembling the last binary and comparing it to an old source file. I didn't actually get to working on Grammer again until late 2018, but since that it has had fairly steady updates. I first documented, reorganized, and cleaned up the code, then put it up on GitHub (https://github.com/Zeda/Grammer2). I started adding features and managed to rope in @NonstickAtom785 into the action with bug reports, improved documentation, and recently some bug fixes.
In the past 16 months, there have been many updates and modifications to expand Grammer's abilities. With these new updates, Grammer has now graduated up from a 1-page app to a 2-page app (16384 bytes vs. 32768 bytes), but the updates are (hopefully) worth it!
Here is a quick summary of added features since the 2012 update.
- Grammer now has a real main menu! Instead of just showing one entry at a time, now you can scroll through programs with a real scrollable menu.
(https://i.imgur.com/w8HdE5Q.png) - Grammer now has support for single-precision floating point math, including the basic operations, as well as exponentials, logarithms, trig, inverse trig, and more! Keep in mind, Grammer is intended to use 16-bit integer math, so it's a bit convoluted to use floats:
(https://i.imgur.com/9YUElKJ.gif) - Grammer has an external module system, which means that specialty routines can be added to extend the language. For example, Yeong (https://www.omnimaga.org/profile/yeong/) has created a textbox module (https://www.omnimaga.org/grammer-language/rtext-the-grammer-module/msg406850/#msg406850) which can be useful for game dialog!
- Grayscale is not backwards compatible. Grayscale is now 4-level gray, instead of 3-level. Grayscale now takes color from both buffers, so BOTH buffers must have a black pixel to appear black (before, there was a black buffer and a gray buffer, where a black pixel in the former would override the latter).
- Input and Menu routines have been significantly modified, with Input being the most obvious. In place of highlighting the entered text, a blinking cursor is displayed, making it more obvious that input is desired from the user. On the programming end, you can now relocate the Input buffer and size. So now if you want to have the user enter a name of up to 8 bytes, you can point the input buffer to where you want the string written, and set the size to 8. The Menu( routine now has scrolling, and internally it is more memory friendly, allowing more options. An entirely new Menu(' routine allows the programmer to generate menu items using a subroutine. This could be really useful for game menus where, say, an inventory menu is prone to changing.
(https://i.imgur.com/t30kDBe.gif) - Grammer officially has stack support!
- You can now save and restore variables within a ▶Nom(...End block, which is useful for subroutines.
- Pt-Off( finally supports big sprites!
Download the latest Grammer v2.51 (https://www.omnimaga.org/grammer/latest-grammer-updates/new/#new)!
(https://i.imgur.com/vrP0jRF.gif)