Author Topic: Grammer 2.51 released!  (Read 215 times)

0 Members and 1 Guest are viewing this topic.

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4632
  • Rating: +717/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Grammer 2.51 released!
« on: February 15, 2020, 05:41:25 pm »
After seven years, Grammer was revived with a new update! In fact, since then, there have been three more major updates, including today's Grammer

After losing the source code in 2013, Grammer progress died, but then in 2016 Hans Burch(ticalc) 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. 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.
  • 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:
  • Grammer has an external module system, which means that specialty routines can be added to extend the language. For example, Yeong has created a textbox module 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.
  • 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!
Spoiler For More updates:
  • The source code has been cleaned up significantly and put on GitHub.
  • RecallPic now works on archived picture variables.
  • pxl-Test(' was removed and replaced with an equivalent rectangle method.
  • Rectangle clipping now works in all directions!
  • Line drawing now has real clipping!
  • The solve( now includes port commands, and relocation of where the vars are stored.
  • L (the list L), can be used to execute specific lines of code.
  • Text( now supports displaying signed numbers via the Fix command, as well as floating point numbers.
  • ▶Dec converts a string to a float, useful for user input.
  • Param can be used to read a list of parameters passed to a subroutine.
  • Param' and Param° push to and pop from a stack, respectively, where Pmt_Bgn points to the start of the stack and Pmt_End points to the end of the stack.
  • Circle( has 9 new methods, all with different fill options (much like the rectangle routines).
  • Variable-width fonts have a more sensible format, and the fonts are ported to work with DrDnar's Monochrome Font Editor. The font files are included with the downloads so you can use them as templates for your own fonts.

Download the latest Grammer v2.51!