Omnimaga > Grammer
Latest Grammer Updates
Xeda112358:
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: ---
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
--- End code ---
There are tons of other features, too, but I cannot remember them all.
Xeda112358:
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: ---:Text(+2,,"2
--- End code ---
The +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: ---:Text(56,0
--- End code ---
Xeda112358:
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 :)
Xeda112358:
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: ---P▶Ry(2,"D,LR,U
--- End code ---
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 :)
Xeda112358:
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:
Navigation
[0] Message Index
[#] Next page
Go to full version