Author Topic: Latest Grammer Updates  (Read 14837 times)

0 Members and 2 Guests are viewing this topic.

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Latest Grammer Updates
« on: February 26, 2012, 11:40:07 am »
EDIT: Go to the last post for the newest full release. This will include at least a tutorial, command documentation and the latest version of Grammer.

This topic is solely for Grammer releases. These can be discussed in this topic. This first version to appear here has the following features:
Code: [Select]

getKey               String support          sprite support
Tilemapping          Line drawing            rectangles (11 styles)
circle drawing       pixel plotting          multiple buffers
Grayscale            Particle effects        Fire Effects
53 vars +1 sysvar    [ON] break              Custom fonts
Custom Error handler variable creation       var editing
RAM editing          Labels                  sub routines
External labels      external routines       TI-OS var access
If conditionals      While, Repeat, For      Goto
Hexadecimal input    binary input            relative line jumping

16-bit math including:
      addition         (carry=1-bit overflow)
      subtraction      (carry=1-bit overflow)
      division         (carry=16-bit remainder)
      multiplication   (carry=16-bit overflow)
      square           (carry=16-bit overflow)
      square root      (carry=remainder)
      square root (rounded)
      negative
      min(
      max(
      abs(
      sin(
      cos(
      rand
      gcd(
      lcm(
       nCr
       and
       or
       xor
      not(
      signed division
      randInt(
Logic including:
      Less than
      Less than or equal
      equal
      not equal
      greater than
      greater than or equal
Text output for:
     16-bit numbers in arbitrary bases
     32-bit numbers in arbitrary bases
     strings
     Typewriter mode
     inverted text
     custom font style
     line wrapping
There are tons of other features, too, but I cannot remember them all.

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #1 on: March 25, 2012, 09:06:36 am »
Version 2.25.03.12
I have to rewrite the readme for this thing sometime, it is getting messy...

Updates:
I am going to have to rewrite this whole document because it is a mess with
inserting new commands everywhere. Anyways, here are useful additions since the
last update:
-The user can now use lowercase letters instead of, say, A'. This is the same
size, but looks cleaner.
-You can now store Ɵ' and Ans at the same time by defining both vars after →.
For example, R*P→aA will store the upper 16-bits of the multiplication in a and
the lower 16-bits in A.
-Output(2 is the Text( mode for drawing the fixed font to pixel coordinates
-Text( without arguments will return the coordinates as Ans=Y, Ɵ'=X
-For the coordinates in a Text( command, you can do relative placement. For
example, if you want text at 2 pixels below the last drawn text:
Code: [Select]
:Text(+2,,"2The +2 draws it down 2 pixel from the last location and the empty argument for X
means it uses the previous X coordinate. Useful for subscripts and super scripts
-You can set the Text( coordinates by using two arguments for Y and X. For
example:
Code: [Select]
:Text(56,0

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #2 on: April 29, 2012, 11:04:11 pm »
Version 2.29.04.12
I have rewritten the readme, added in support for the menu options, and modified some commands. I tried fixing bugs like the fact that length( wasn't returning what it was supposed to. I also made more arguments optional for certain functions like the sprite and circle commands. Any comments or suggestions can go in the appropriate topic :)

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #3 on: May 01, 2012, 09:25:40 pm »
Version 2.01.05.12
I have updated the readme with new info for the new functions. Fix now returns the current state of the modes and you can now use bitlogic to set or reset certain modes. For example, to reset a certain modes, get their mode number and do something like this:

Fix  and not(n   ;Example, n=6 to enable ON and make the graph screen update normally

To set certain modes, do this:

Fix  or n   ;Example, n=6 to disable ON and make the screen update inverted

You can also now use RecallPic and StorePic :)

Finally, the particle engine has been updated! It is now faster (2048 particles in PARTEX2 now is done at 5.66 FPS instead of 3.60 :D) and the rules can be changed :) There are two ways to customise the rules, the easy way being something like this:
Code: [Select]
P▶Ry(2,"D,LR,U
That sets the rule to check the down direction first, if it cannot move down, try left and right, if that fails, check up :)

Any comments or suggestions can go in the appropriate topic :)

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #4 on: September 13, 2019, 08:08:50 pm »
EDIT: Updated this download with a critical bugfix with the Send( command. Was v2.50.6.3.
EDIT2: Yet more important bugs were fixed, now we are graduating to 2.50.6.7 for this update :|

Grammer v2.50.6.4
There have been many updates, importantly the version naming convention. In the past, the Grammer version was identified by the date that it was made. Now it is separated into 2.major.minor.veryminor.

Updates: This is NOT an exhaustive list.

  • Older assembly Grammer programs will NOT be compatible with this version or versions going forward.
  • Grammer is now a 2-page app (32768 bytes), whereas it used to be a 1-page app (16384 bytes).
  • The main menu has been significantly updated, hopefully for the better.
  • Some token replacements have been changed.
  • Fixed various bugs, made various optimizations.

To the language:
  • Grammer programs can now use external modules, via the ▶DMS token.
  • G-T returns the address of the default front buffer.
  • G-T' returns the address of AppBackUpScreen, a typical backbuffer.
  • Wide support for floating point routines.
  • Added stack support and better parameter parsing via Pmt_Bgn, Pmt_End, and Param
  • Added the ▶Nom( ... End block to preserve a set of variables within the block. For example, you can save vars A, B, and C, use them within the block, and they'll be restored when the block ends. This is very useful for subroutines where you may want to use variables without destroying the callee's variables.
  • Input has been changed! It now has a blinking cursor instead of highlighting the text.
  • The Input buffer can now be relocated and you can set a max size! Useful for when you want to limit, say, a player's name. Use →Input and →Input'.
  • The width argument for Pt-Off( is finally meaningful! Sprites can now be drawn to pixel coordinates and be wider (big sprites!).
  • The Menu( command was totally rewritten. It looks similar, but is a lot smoother and will now scroll if there are too many entries (scrolling menu!). It is also much nicer on RAM usage, so you'll be able to fit more options than previously allowed.
  • A new menu method is available via Menu('. You can supply a title, location, width, height, and pointers to two Grammer subroutines. The menu will then call your subroutines to get the string to display and the value to return upon selection. Useful for menus that have many options, but options that can be "computed" in some way (for example, reading lines from an external file and supplying those as options).
  • Added 9 more Circle( methods using filled circles!

Here are some screenshots:


Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #5 on: November 25, 2019, 11:50:01 am »
Grammer v2.50.7.6
Over the past ~2 months, a bunch of bugs have been found and fixed, thanks especially to @NonstickAtom785 and Hans Burch. I also updated the main menu and worked more on documentation. From the main menu, you can now use [*] to archive/unarchive, and the [Hook] option was replaced with [More], where you can enable/disable the token hook and lowercase.
Some of the bugs fixed are:
  • Lbl got broken in the previous update, it was fixed for this.
  • Vertical was buggy, now fixed.
  • Storing Input to an OS string was broken, now fixed. (it would send too many bytes)
  • Parsing Input with expr( was broken, it works again.
  • Archive / Unarchive were messing with some RAM that Grammer occasionally used, causing a crash. This is now fixed.
  • Fixed a bug with using " to end a string.
  • Fixed a bug with custom fonts!
  • Fixed two bugs with Else not being processed properly.

Some other updates:
  • Variable fonts are now slightly indexed for faster access. Text should display faster with it now.
  • You can exit the main menu with [On], now.
  • You can now select with [2nd] from the main menu.
  • nCr, a routine that might never be used by Grammerians, now only overflows when the final result would actually overflow (before, it could overflow during some intermediate calculations).

Compatibility-breaking updates:
  • Grayscale is now only offered in 50-50 (3-level) and 33-67 (4-level) modes. I was able to make the LCD update routines faster and smaller. From the old version, presumably nobody would want to use the (uglier) modes anyways.

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #6 on: December 04, 2019, 12:56:13 pm »
Grammer v2.50.8.6
In this update, I focused on fonts!
  • I broke compatibility with third-party variable-width fonts (all zero of them) made for Grammer. Whereas before, Grammer had a variable font in which each char had its own height and width, now the whole font gets a height byte, and each char gets a width. This seemed a lot more reasonable-- it's a lot easier to program with it, it's a bit faster to access chars, and I could use DrDnar's Monochrome Font Editor
  • I converted both the fixed 4x6 font to an mfefont, and I totally remade the variable font as an mfefont
  • Whereas before, the variable width font was sparse (missing many chars), now it is complete!
  • Yes, huge fonts are supported, technically.

Now for bug fixes. Again, big thanks to @NonstickAtom785 and Hans Burch:
  • For <<expr>> is officially documented, and fixed, and now you can nest them.
  • For <<var>>,0,65535 no longer causes an infinite loop.
  • Rounded square roots now round in the correct direction.
  • Yet another If-related bug was fixed, this time the bug was with Then (but not with Then...Else). This bug caused the program to erroneously skip End statements if they were programmed as End:End. Ouch.
  • !If works again.
  • A page boundary bug was fixed that could cause major issues when reading variables from archive.

Some other updates:
  • Modules are no longer verified when calling a module function. Instead, they are verified when they are initialized (ex. "5MYMOD->$) and after verified, Grammer assumes that they remain correct. This reduces some overhead for module functions.

Offline Xeda112358

  • they/them
  • Project Author
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Latest Grammer Updates
« Reply #7 on: February 15, 2020, 11:07:47 am »
Grammer v2.51.0.0
Time for 2.51 !

The GitHub page is getting a lot more documentation, thanks to @NonstickAtom785 (both in documenting and bugging me to document stuff).

Bug Fixes:
  • Fixed bug with Param
  • Fixed bugs with Input
  • Fixed bug with PauseIf. This was allowing un-breakable infinite loops!
  • Fixed bugs with Archive/Unarchive (and similar bugs). These could cause crashes.
  • Fixed bugs with archiving in the main menu
  • Fixed bug with empty strings
  • Fixed bug with ending quotes on strings!
  • Fixed Omnicalc/Batlib fonts
  • Fixed bug with not implementing screen invert :|

Updates:
  • Optimized Dispgraph
  • Added new display methods that allow overlaying or masking multiple buffers
  • Added smooth-scrolling tilemap routines! This is long overdue; I reserved space for more tilemap commands and it took 8 years to actually do it >_>
  • Reimplemented degree token to temporarily set a buffer
  • Added TI-OS fonts to the text routines (request)
  • Added support for archived fonts (but not Grammer's variable-width format fonts :/)
  • The menu routine font is no longer hard-coded, so you can use custom fonts!
  • Menu(' now has a mode to support multiple headers, so you can make menus where you press left/right to go to the next menu.
  • Updated variable-width font at request to look like it used to.
  • Reimplemented ' option for the Menu( command.
  • Added DS<( to complement IS>( (nonstickatom)
  • Recreated the program launcher. This is an assembly program that calls the Grammer parser to parse code (caled prgmG250).

Here's a screenshot implementing the smooth-scrolling tilemap commands and new DispGraph techniques:



In news related to Grammer updates, this might be the last major update for a while; life is about to get very busy for me. If all goes according to plan, this "busy" might be longterm :)

EDIT: Forgot to add the files >_>