Author Topic: Latest Updates (***DO NOT POST HERE!***)  (Read 86697 times)

0 Members and 1 Guest are viewing this topic.

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Latest Updates (***DO NOT POST HERE!***)
« Reply #45 on: November 22, 2012, 07:24:24 pm »
Axe Parser
Omega 1.2.0



It's Thanksgiving, and this year, we can all give thanks for Axe living on! Just temporarily under new management. :)

New Features:
  • Have the need for speed? Using #ExprOn will request that all following code and called Axe routines be optimized for speed instead of size! Using #ExprOff does the reverse. Currently this only affects a few Axe routines (*, Pt-On(), Pt-Change(), DrawInv, Horizontal+/-, >Hex), but more will come! Axe Fusion always uses the fastest Axe routines available.
  • Continuing with the speed theme, DispGraphRecallPic has been added! It's the same as DispGraph and then RecallPic, but it's almost as fast as DispGraph alone.
  • Fixed point division! Syntax is: /*
  • Fixed point square! Syntax is: ²r
  • Labels and constant names can be up to 13 characters long!
  • No longer corrputs the OS when unlocking flash!
  • Even shinier commands list! BIG thanks to jacobly! I'm also trying to add size and speed data for everything; it's a work in progress, so please excuse errors/missing values for now.
  • Full support for big endian variables.
  • Signed min() and max(): just throw on an r.

Changed:
  • Better string parsing, including spelling out multi-character tokens, more reliable "var", and "grp" (w) is now "tmp"; these arbitrary-size variables will be automatically deleted on exiting.
  • Optimized most DispGraph variants: all but 4-level DispGraphClrDraw are smaller, which is larger because...
  • 4-level DispGraphClrDraw is about 15% faster. Also, 4-level DispGraph is about 5% faster.
  • Optimized >Hex, stdDev(), Horizontal-(EXPR), getKey(EXPR), -1, interrupts, and all archived variable routines slightly.
  • Optimized more stuff that I forgot.
  • nib{}r now always reads from the half of memory your code exists in.
  • inData(0,DATA) now returns 0, so no more adding 1 to all your key checks!
  • ln(0) now returns -1, it seems slightly more proper than 255.
  • Disp >Tok accepts the same argument type as Text >Tok.
  • Added "signed" equal and not equal operators.
  • Added optimizations for ^10, //0, and //-1, not that the latter two will ever be needed.
  • The A-theta variables have been moved, so L1 is now 768 bytes long by default.
  • When pointed into a variable in RAM, the Y1T and Y2T variables will be updated automatically if the variable is moved.
  • The X1T and X2T variables will act similarly when pointed into a VAT entry.
  • The X4T-Y6T variables have been added.
  • Slightly larger but faster multiplications by some large powers of 2.
  • Fixed a bug when a string displayed in an app went offscreen.
  • Fixed drawing sprites to arbitrary buffers.
  • Fixed rectangle clipping.
  • Fixed the size of the stdDev() subroutine.
  • Fixed some Axe fusion-related bugs.
  • Fixed some bugs with the token hook.
  • Fixed some bugs with comments.
  • Fixed some peephole optimization bugs.
  • Fixed a silly typo in an error message.
  • Fixed many errors in the command list.
  • Fixed many other bugs that I forgot about.
  • And probably introduced some bugs!

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Latest Updates (***DO NOT POST HERE!***)
« Reply #46 on: December 16, 2012, 08:01:22 pm »
Axe Parser
Omega 1.2.1



As expected, I introduced some issues with 1.2.0. So here's a few bug fixes and improvements, with some new features to boot!

New Features:
  • BIG NEWS: Every geometry drawing command (lines, circles, and rectangles) can be drawn as black, white, or inverted! For black, use them as normal; for white or inverted, put a W or an I right before the command.
  • New HLine() and VLine() commands (also in black, white and inverted). That's the letters H or V followed by the Line( token. They can be used to draw all the way across the screen, like HLine(Y), or line segments, like HLine(Y,X1,X2).
  • New 8*8 sprite routine: Pt-And(X,Y,SPRITE)  (this is the Plot3( token).
  • Added For(EXPR)r, which treats EXPR as an 8-bit value; good for really fast, compact loops with a variable number of iterations.
  • Added LnRegr, which repairs what custom interrupts destroy (table data). Please use this instead of the normal LnReg when disabling custom Axe interrupts!
  • Constant expressions can now be included in blocks of inline assembly. For example: Asm(11(°Data+8)) to include a 2-byte value, or Asm(3E(°MapW)r) to include a 1-byte value.
  • To help fix future bugs, you can now press STAT upon errors during compilation to dump a bunch of data. Copy it down and send it to me, and it should hopefully make isolating strange bugs easy!

Changed:
  • Adjusted the 4-level grayscale routine masking code to look *nearly* as good as pre-1.2.0 with the speed of 1.2.0.
  • Moved custom interrupt data out of L2 (statVars) so it can be used with a custom interrupt enabled.
  • Slightly optimized all the sprite, rectangle, and line drawing commands.
  • Your lowercase setting will be remembered and restored if you run Axe after a RAM clear.
  • Improved the progress bar when compiling in terms of both aesthetics (at least I think so) and speed.
  • Optimized to use less power when doing nothing!
  • Added even more delay to the direct key input routine. Hopefully there will be no more freak issues with it on any calculators.
  • Fixed a long-standing bug that has been resulting in some routines (like the modulus routine) being added twice.
  • Fixed a bug with rectangle clipping.
  • Fixed special tokens not being properly converted to characters (like 'appv').
  • Fixed compiling as an application possibly leaving random data at the end of the application name.
  • Fixed token replacements not working for archived Axioms.



Known Bugs:
  • 3-argument HLine() and VLine() cause crashes.
  • Inverted circles are missing a few pixels.
« Last Edit: December 19, 2012, 12:52:57 am by Runer112 »

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Latest Updates (***DO NOT POST HERE!***)
« Reply #47 on: October 25, 2013, 06:12:09 pm »
Axe Parser
Omega 1.2.2



I've been quite busy with school (and generally lazy to boot), sorry it's been so long since the last update. The Axe application is bursting at the seams, so it's difficult for me to fit in new language features, but I fit in a few. The primary focus of this release is to improve stability, so a lot of the new things in this version are application usability improvements and bug fixes.

If there are any outstanding bugs, even if you've reported them before, or if you find any new bugs, please report them in the Bug Reports thread. I'd like to get Axe to be as stable as reasonably possible, and you can help.

New Features:
  • New command to call the OS keypad scanning function: getKeys (or getKeyS). A useful application is to put this in your custom interrupt so you can use getKey and getKeyr in your program like normal.
  • New command to set the LCD's z-address: ZInterval #.
  • New commands that suspend annoying things for the remainder of your program: Fullr and Fullrr. The former suspends any memory delays on non-83+ calculators and the latter suspends Horiz mode (forces a ClrHome upon execution and when your program returns). These commands will not properly restore the suspended settings if you use Returnr!
  • Added a new form of calling inData() for which you specify the length of the data to check: inData(BYTE,PTR,SIZE). No issues when searching for zero!
  • Axe no longer disables Horiz or G-T modes.
  • APD can now activate, so accidentally leaving Axe running won't drain your battery so much.
  • Error if application being compiled will be too large after the first pass instead of the second pass.
  • Using lowercase letters in the output name header will throw an error when not compiling as an application.
  • Generally more robust source file header parsing and validation, including being able to jump to errors in headers.

Changed:
  • Renamed sign{} to signed{} and renamed stdDev() to strGet() for clarity.
  • Optimized direct key input slightly. ***If your calculator has had key port (delay) problems related to getKey(#), please test that direct key input works.***
  • [Jacobly] Greatly optimized the speed of high-order and fixed-point multiplication.
  • [Jacobly] Optimized circle drawing slightly.
  • Changed the default varaible location again, this time into smallEditRam. The previous location conflicted with MathPrint.
  • Reorganized the command list slightly.
  • Fixed sometimes getting stuck in an infinite key wait loop after an error.
  • Improved the error dumper with more debugging information for me!
  • FIXED THE SEEMINGLY RANDOM COMPILING FROM ARCHIVE ERRORS THAT HAVE PLAGUED AXE SINCE 1.0.0! Big thanks to shmibs for helping me debug this!
  • Fixed some parsing issues with For()r.
  • Fixed 3-argument HLine() and VLine().
  • Fixed inverted circle drawing.
  • Fixed ?Hex and archived value reads in programs compiled for Axe Fusion.
  • Fixed an error with the use of special OS variable names, like Pic2, in strings.
  • Fixed an obscure bug caused by putting r2-r6 immediately before a function call.
  • Fixed error scrolling with zStart crashing for archived source programs that span multiple archive pages.
  • Fixed 8-character names immediately throwing an error when trying to compile applications.
  • Fixed multiple bugs with application writing, including not recognizing when there was no space for the application.
  • Fixed an error being thrown when compiling a program whose target already exists in archive after a fresh garbage collect. Thanks to thepenguin77 for helping me debug this!
  • Fixed other bugs I forgot about.
« Last Edit: October 29, 2013, 04:06:41 pm by Runer112 »