Omnimaga
Calculator Community => Major Community Projects => The Axe Parser Project => Topic started by: Quigibo on February 02, 2010, 06:00:05 pm
-
THIS THREAD IS ONLY FOR UPDATES TO MAKE THEM EASY TO FIND. PLEASE DISCUSS IN THE OTHER THREADS.
Axe Parser
Alpha 0.0.2
New Features:
- String storage
- Display strings
- Display new line
- rand
- Don't display done
- Pause in milliseconds
An example program also included.
-
Axe Parser
Alpha 0.0.3
New Features:
- String constants
- Multiplication, Division, and Modulo
- Parenthesis for Math
- Negative sign
- Output(
Changed:
- The Fn tokens are now merged with the Diagnostic tokens
New example program.
-
Axe Parser
Alpha 0.0.4
New Features:
- More string character support
- Adding and subtracting constants optimized
- Pixel routines
- For loops
- Compiling progress indication
- Hexadecimal data entry
Changed:
- DispGraph is now the Ion Fast Copy instead of the slower OS routine.
New example program.
-
Axe Parser
Alpha 0.0.5
New Features:
- Sprite support!
- Screen shifting
- Screen inversion
- Fixed unary operators
- Direct key input
- Static pointers
- More automatic optimizations
Changed:
- You must add >Dec to display integers
- ClrHome now clears the text buffer as well
New example program.
-
Axe Parser
Alpha 0.0.6
New Features:
- Pointers!
- Double Buffering
- Alphabetical Listings
- Character Display
- Else Statement
- If-False Statement
- New Automatic Optimizations
- Sprite Editor Updated
Changed:
- Sprites are now clipped!
- DispGraph is now SafeCopy instead of FastCopy
New example program.
-
Axe Parser
Alpha 0.1.0
Sorry, I've been really busy this week. I haven't had a lot of time to add all the things I wanted to.
New Features:
- Faster Parsing
- Program List Is Improved
- 15MHz Commands
Changed:
I added the new speed command to my Game Of Life example program so you can see the speed difference.
-
Axe Parser
Alpha 0.1.1
Surprise update!
New Features:
- Parse archived programs.
- Lightning fast parsing speed
Changed:
- Fixed MAJOR bug that gave random error when parsing.
No new examples since nothing new to show.
-
Axe Parser
Alpha 0.1.2
New Features:
- Automated data copy, exchange, and fill.
- Absolute value for signed numbers
- Sign extension for single byte signed numbers
- Hexadecimal constants
- ASCII constants
Changed:
- Multiplication should work with signed numbers now.
- Comments now need to start with a period instead of a single quote.
No new examples since I didn't have time to make anything.
-
Axe Parser
Alpha 0.1.3
HUGE UPDATE! A lot of new stuff happening.
New Features:
- Cleaner command list.
- Name your programs with an Axe Header.
- Sound through the link port.
- Direct detect any key.
- Return if not command.
- Squares and square roots.
- Draw text anywhere.
- Small sized text mode.
- Inverted text mode.
- Draw text to buffer mode.
- Numerical data entry.
- Add empty data to program memory for extra storage.
- Read and write 2 byte numbers for the full 16 bits.
Changed:
- Using int() implies that it the argument is a pointer.
- Axe is no laughing matter now. Default name is "AXEPROG" instead of "LOL"
New example program to test sound effects.
-
Axe Parser
Alpha 0.1.4
Added all this stuff last minute... I've been busy.
New Features:
- Create Application Variables.
- Read and Write to Appvars.
- Archive and Unarchive Appvars.
Changed:
- Fixed a bug that caused some programs to freeze.
New example program to show file saving and auto-archiving.
-
Axe Parser
Alpha 0.1.5
New Features:
- Sine and cosine.
- Signed comparisons.
- Grayscale display.
- Programs can now be accessed just like appvars.
Changed:
- The commands for using calc files have changes to make them easier, smaller, and faster.
- Fixed a couple minor bugs.
- A few new optimizations.
I changed the example program "Counter" to show the new format for saving to files. Notice its 30 bytes smaller as well.
-
Axe Parser
Beta 0.2.0
New Features:
- A real documentation!
- New user interface.
- Compile for shells.
- Contrast adjustment.
- Absorb "Pic" files into programs.
Changed:
- Headers are mandatory.
- Only Axe Source programs show up on compile list.
- Fixed a few more bugs.
New example file from tutorial.
-
Axe Parser
Beta 0.2.1
New Features:
- Line command
- Counter statement
- Signed division
- Use theta as a variable
- Lowercase toggle built into parser
- Error message list added to doc
Changed:
- Pixel drawing and line drawing are now safe. They won't corrupt ram when drawn off screen.
- The free RAM in L1 has shrunk by 2 bytes (becasue theta needs those).
- Fixed a bugs that made some negative constants unoptimized.
My attempt at 3d:
-
Axe Parser
Beta 0.2.1b (fixed)
Sorry guys, my mistake. Here is the real 0.2.1
-
Axe Parser
Beta 0.2.2
New Features:
- Min and Max operations
- Display numbers and ASCII characters anywhere
- Binary Numbers
- Import Pics as tile maps
- Huge update to auto-opts list
Changed:
- Fixed A LOT of bugs.
- Programs should be smaller due to auto-opts.
Edit: Fixed some more bugs
-
Axe Parser
Beta 0.2.3
New Features:
- Clear the back-buffer
- Invert the back-buffer
- Copy data from end backwards
- Logical boolean operators
Changed:
- Logical operators are separated from the previous bitwise operations.
- Grayscale is once again a 6MHz-only command until I resolve a compatibility issue.
- Exact percent should show up on errors.
-
Axe Parser
Beta 0.2.4
One word to describe this release: grayscale!
New Features:
- Draw pixels to the back buffer (grayscale)
- Get pixels form the back buffer
- Draw sprites to the back buffer (grayscale)
- 4 color grayscale rendering
- Draw ANY buffer directly to the screen without having to copy it to the main buffer
- Look-ahead parsing significantly reduces code size when using static pointers
Changed:
- A couple new auto-opts for "is negative" and "is not negative" .
- Fixed bug with Cos( Sin( and square root as second argument
- Fixed bug with >Frac and >Dec when last line was a pointer.
Cool new example program to test 4 color grayscale.
-
Axe Parser
Beta 0.2.5
If I weren't so busy I would have added more stuff...
New Features:
- Scroll to errors (kind of) by pressing [prgm] after an error.
- Read and write to the Ans variable as a number.
- New text mode to toggle auto-scrolling at last line.
Changed:
N/A
-
Axe Parser
Beta 0.2.6
New Features:
- Instant goto when pressing [prgm] after errors.
- Use Sub() and Asm() inline with math operations.
- Sorting command added.
- Some very basic OS interrupt commands.
- Constant expressions are evaluated pre-compile time.
- Reading and writing to static addresses should be fully optimized now.
- Math and numbers are more flexible.
Changed:
- Reading and writing to static addresses returns the value instead of the address.
- Fixed several bugs.
Made a 3D game for the fun of it.
-
Axe Parser
Gamma 0.3.0
This should make up for skipping a week of updates :)
New Features:
- Subroutines can now have arguments!
- New variables for subroutine arguments.
- Experimantal "Axe Tokens". Toggle them with Alpha+Vars.
- Grayscale commands improved and save interrupt states.
- Base 2 logarithm and exponential.
- Draw arbitrary sized bitmaps to the buffer or directly to the screen
Changed:
- Major bug fix, no more errors when reading from archive.
- SetupEditor is no longer needed or supported.
- Fixed other minor bugs.
-
Axe Parser
Gamma 0.3.1
No new commands, but you got to admit these new features are pretty cool. Even cooler if had I decided to throw in application compiling :P
New Features:
- Real error scrolling just like BASIC! Finally!
- The new token names are now automatic. They turn on if the program has an Axe Header
- Axe does not re-save the settings unless you make changes. It will keep it unarchived if you want to unarchive it.
- Commands list shows both new and old token spellings.
- More nested expressions are allowed in a single statement.
Changed:
- Fixed some bugs in the new tokens and documentation.
EDIT: Please Re-Download if you got a copy earlier. There was a big problem with the error scrolling on programs larger than 10kb that I'm still not able to fix, but at least it won't crash the calc now.
-
Axe Parser
Gamma 0.3.2
Probably one of my largest updates in terms of useful features.
New Features:
- Compile your programs to applications!
- Axioms can be imported for added functionality!
- Custom interrupt support!
- Display Tokens.
- New token value constants.
- Find the length of a zero terminated data block.
- Display small text without defining coordinates first.
- Sound quality has drastically improved.
- Developer information included.
Changed:
- Fixed more bugs with negative numbers (I hate those things!)
- Error scrolling is much cleaner, but still messes up in gigantic programs
-
Axe Parser
Gamma 0.3.3
New Features:
- Draw rectangles and boxes.
- Draw circles.
- Interrupts are now compatible with applications.
- 2 New advanced multiplication techniques: Fixed Point and High Order.
- "Return" at the end of the program is automatically optimized.
- Error scrolling is more accurate.
- Simple application signing included.
- Import Pictures from archive.
- Support for full screen pictures.
Changed:
- Freq() can now play lower notes, and only the tone "0" has changed.
- Fixed some issues with negative numbers.
- Fixed the Data() command. All numbers should work with it now.
- Pixel drawing far off screen is safe now!
New Example program: Fractal Explorer! You will not find a faster one for the calculator!
-
Axe Parser
Delta 0.4.0
At last! The wait was worth it!
New Features:
- Almost every external variable can now be fully used in Axe.
- Read external variables directly from flash.
- Delete external variables.
- Updated documentation for external variable usage.
- White space is completely white now, its ignored almost everywhere.
- Text commands have improved greatly.
- Temporary pointers allow any data to be defined and used immediately in any command.
- Direct I/O control of the link port.
- Error messages are more descriptive.
- Size of the program is displayed when compiling to an application.
- Slightly improved application compiling.
- New optimizations to reduce the size of nearly every program.
- Read from pointers in reverse (big endian).
- Change log included with the parser.
Changed:
- Fixed end of program bug.
- Text command syntax has changed to look exactly like the output and display syntax.
-
Axe Parser
Delta 0.4.1
Just a minor follow-up with some bug fixes and a couple new features.
New Features:
- New masked sprite drawing routine for 3 level grayscale.
- Main sprite drawing routines can be drawn to any specified buffer.
Changed:
- Fixed bug with file pointers.
- Fixed small bug in defragmenting and app compiling.
-
Axe Parser
Delta 0.4.2
This update includes the most drastic improvements in a single update I think.
New Features:
- Create Axe Backup files automatically to preserve source code during ram clears!
- Manually manage your backups in the compile menu.
- Include external source code directly into your main source code!
- Basic sprite rotation and flipping!
- Automatic Calc-To-Calc linking with the I/O cable!
- Static pointers and label names can now be up to 3 letter/numbers!
- Many new auto-optimizations.
- Faster division routine (but also slightly larger).
- [2nd] and [Mode] now also work in the GUI like [Enter] and [Clear] respectively.
Changed:
- Fixed bug that would randomly make the high-nibble of long hex numbers 0.
- Fixed progress bar looping when compiling from large programs in rom.
- Fixed division bug with constants close to 255.
- Compatible with Mac TI-Connect.
- Return optimization in no longer automatic due to possible program leaks.
-
Axe Parser
Delta 0.4.3
Another follow-up update. Has some interesting new features too.
New Features:
- Screen-shift the back buffer in any direction.
- Bit checking for 16-bit numbers.
- New auto-opts for bit checking.
- Missing label displayed when receiving a missing label error.
Changed:
- Fixed bug that was randomly crashing the parser.
- Fixed end of file bug with external program names.
- Parser always resets the window top to the correct position.
-
Axe Parser
Delta 0.4.4
New Features:
- Convert integers to and from floating point numbers.
- String input just like BASIC!
- ElseIf and Else!If statements.
- Data search routine similar to BASIC's inString.
Changed:
- Fixed bug with custom interrupt labels.
-
Axe Parser
Delta 0.4.5
Wow, its been a while :)
New Features:
- Direct Nibble manipulation!
- Subroutines can save and restore argument variables (for recursive uses).
- Most Axe variables can be dereferenced.
Changed:
- Correct number of Ends after nested elseif statements
- White space in program is handled better when scrolling to an error.
- Axioms are temporarily disabled.
- Fixed Auto Power Down bug.
- getkey() routines alway delay long enough to register a key even in 15MHz.
- DispGraphrr can be used in an interrupt routine now.
- Optimized Copy() Fill() and Exch() commands.
-
Axe Parser
Delta 0.4.6
No new commands, but a lot of new features.
New Features:
- Direct key support for the [On] key using getKey(41)
- Added new Axiom Tokens (but they aren't usable yet)
- Static data can be stored to variable pointer
- Pressing alpha-character jumps to program in compile menu
- Selector wraps around in the compile menu
Changed:
- Fixed bug that made some invalid syntax become comments
- Fixed Elseif bug
- Added new auto-optimizations
- Automatic backups only after finishing compile with no errors
- Compiling to apps always attempts a defragmentation
- App signature improved and resignable on-calc with external program
- Fixed program menu bug after manual backups
- Manual backup key is now "Alpha"
- Fixed sector boundary reading bug when reading large source from archive.
-
Axe Parser
Delta 0.4.7
Wow, look at all these new things!
New Features:
- Lots of new auto optimizations to reduce code size
- Values can be stored to pointers in reverse order (big endian)
- Display numbers in hexadecimal
- Draw lines to the back buffer
- New "Display & Clear" routine to do both simultaneously
- Bitwise complement command for 8 and 16 bit numbers
- Reallocate variables anywhere in the program!
- Custom icon support when compiling for shells!
Changed:
- getkey() can now take a variable as an argument!
- Fixed bug when leaving parenthesis off inline data
- Fixed the input command. It should never display garbage anymore
- New, faster line drawing routine
- File pointers can now be dereferenced
- The L1 buffer has changed position and is now 2 bytes larger
- The variables are now located after the end of the L1 buffer by default
-
Axe Parser
Delta 0.4.8
Just a little patch before the stable release.
New Features:
- A few more optimizations
- Multi-line comments!
- Axiom SDK updated and probably finalized
Changed:
- Fixed 3 Level grayscale routine hopefully
- Fixed reading protected programs from archive
- Fixed application size field
- Line drawing off-screen does not draw the line.
- A few other minor bug fixes.
-
Axe Parser
Epsilon 0.5.0
Sorry about the super slow pace of updates...
New Features:
- Axioms finally fully functional!
- Example axiom included.
- "While 1" and "Repeat 0" automatically optimize to "Do" loops.
- New "EndIf" and "End!If" statements for post-testing in loops.
- Help menu actually shows something now!
Changed:
- Fixed sprite rotation commands.
- Fixed nibble reading commands.
-
Axe Parser
Epsilon 0.5.1
Almost done... maybe.
New Features:
- New getkey for grabbing key combinations.
- Compile menu tells you the shell settings to avoid accidental compiles.
- DispGraph is now significantly faster.
- New command to check string equality.
- Lots of new optimizations (Thanks again to Runer112!)
Changed:
- Fixed Axiom system when reading commands with single r modifiers.
- Fixed MemKit axiom bugs.
- Corrected typo in help menu.
- not() can be used in expressions.
- Fixed Ptr->DispGraph bug.
-
Axe Parser
Epsilon 0.5.2
Lots of fixing and polishing. Should be ready for a stable release very soon!
New Features:
- All DispGraph variants now work with every speed and every interrupt mode!
- Fix command can have multiple modes on the same line.
- Jump table added with API documentation for external parsing.
- rand is dereferencable.
- A few new error codes for better clarification.
- Left and right arrows can be used to change settings.
- Same arrows can also change the shell form the compile menu.
- Define constants in your code as static variables.
- Data defined in Axioms is more intuitive and works as expected.
Changed:
- GetCalc now consistently returns proper float pointers.
- Fixed credits to RabbitSign (GNU).
- Fixed dereferencing bug.
- Fixed bug with Pt-Mask().
- Fixed bug with multi-line comments.
- Fixed parenthesis issue on last line.
- Optimized for loops when the third parameter is constant.
- Optimized all unsigned comparisons against constants.
- Optimized and, or, and xor when applied to constants.
- Optimized various other commands.
-
Axe Parser
Epsilon 0.5.3b
The last of the betas for sure.
New Features:
- Increment and decrement operators!
- Reciprocal operation for 8.8 fixed point numbers
- On key will force quit compiling safely.
- Faster and more optimized DispGraph routines.
- Significantly faster square root routine.
Changed:
- Fixed major bug with the Disp command when compiling for apps.
- Fixed incorrect optimization with Dispgraph to other buffers.
- Fixed the new numerical constants feature.
- Fixed bug with nibble storing.
- Fixed bug with big-endian storing.
EDIT: Fixed a few bugs since there was at least one major one. If you downloaded it before this edit, please re-download.
-
Axe Parser
Omega 1.0.0
Words cannot even describe...
New Features:
- Pixel drawing to any buffer.
- Rectangle drawing to any buffer.
- Line drawing to any buffer.
- DispGraphClrDraw now has grayscale equivalents.
- All DispGraph variants can use arbitrary buffers.
- New hyper-optimized loop structure for repeating code.
- Checksum command.
- New Pt-Mask() variant that uses a single buffer and also allows inverting.
- New ClrDraw shorthand to clear both buffers at once.
- Optimized all loop structures and back-jumping.
- All data is stored at the end of the program, allowing larger programs in RAM.
- All data can be forward-declared.
- Variable names are now up to 5 letters long and can use lowercase.
- Symbol limit raised from 150 to over 2000.
- New custom-named variables.
- Warning is shown if program contains code past the executable limit.
- New command to read OS's current contrast setting.
- Longer, more descriptive error messages.
- Fixed point decimal numbers can be typed in like floats in BASIC.
- New notation for subroutine calls: MySub(Arg1,Arg2,...).
- Peephole optimizations reduce the size of programs drastically.
- Ternary operator for inline if expressions.
- Emergency return command.
- Use lambdas for functional programming.
- Goto and subroutines can use addresses defined by expressions.
- Referencing commands optimize better in math operations.
- Updated documentation slightly.
- Axioms can call other subroutines with forward offsets.
- Fixed-point multiplication auto-optimizes constants.
Changed:
- Colons are now inline and can be used inside expressions.
- Sprite buffer drawing syntax has changed.
- DispGraph user-defined buffer syntax has changed.
- Fixed bug with EndIf not working on for loops.
- Binary prefix is now pi instead of "b".
- Fixed a bug that caused crashing when no programs were in the compile list.
- Fixed a bug when nesting commands that used files.
- Fixed the Next() command in MemKit.
- The CompileOP1 entrypoint will not overwrite the appvar settings.
- Flash is locked after quitting Axe for security reasons.
- All characters should convert correctly in text.
- Fixed a bug that allowed commas in referencing commands.
I know this is A LOT to take in, so I included a file "Changes.pdf" inside the download to better explain the changes. I highly recommend reading it before you start playing around with it so you can use the new features to their full potential.
Caution: Use this version at your own risk. It may require ROM clears and loss of data.
-
Axe Parser
Omega 1.0.1
Had to pull an all-nighter for this next day update.
New Features:
- Use variables as single byte values!
- ClrDraw now works on any buffer.
- DrawInv now works on any buffer.
Changed:
- Fixed bug with freezing after backing up.
- Fixed bug with include files not being recognized.
- Fixed the Shade() command.
- Fixed error not showing up when using blocks inside expressions.
Caution: Use this version at your own risk. It may require ROM clears and loss of data.
-
Axe Parser
Omega 1.0.2
If you've used 1.0.0 or 1.0.1, I highly recommend you BACKUP your data and do a FULL ROM CLEAR before installing!
Sorry about the bugs!
New Features:
- Files now work in both RAM and archive!
- Ternary operator is optimized for short circuit statements.
Changed:
- Fixed major bug with sector leaking.
- Fixed error checking with inline blocks.
- Fixed a few issues with colons.
- Fixed character conversions for prgm, grp, and appv.
- Fixed possible bug with GetCalc() when overwriting archived vars.
- Fixed possible bug with backups missing a hash in the compile menu.
- Fixed a bug that prevented labels to start with a number.
- Fixed Zeros(0) causing a freeze.
-
Axe Parser
Omega 1.0.3
Thanks everyone who helped catch more bugs with 1.0.2. Hopefully this version should be much more stable :)
New Features:
- New easy short circuit operators for "and" and "or"!
- Ternary "Not-if" variant.
- Reading data from files is an order of magnitude faster.
Changed:
- Fixed issue with reading constant pointers.
- Fixed [On] key issue with getkeyr after program quits.
- Copy should now work with files in RAM.
- Fixed bug with pixel commands on other buffers.
- Fixed ternary operators in block conditionals.
- Fixed issues with length() command.
-
Axe Parser
Omega 1.0.4
New Features:
- Axe apps no longer delete themselves after 15 runs (thanks thepenguin77!)
- Horizontal and Vertical commands work on any buffer.
- Create buffers filled with any value.
- New pt-Get() routines for cloning sprites. (thanks calcmaniac84!)
Changed:
- Fixed and optimized all multiplication.
- Fixed small bug with 4 level grayscale.
- Fixed returnr for apps.
- Zeros() token changed to Buff()
- Pointer calls now keep the accumulator preserved during the call.
- Lots of new optimizations! (thanks Runer112!)
-
Axe Parser
Omega 1.0.5b
New Features:
- Press [zoom] for a speedy fast (but less optimized) compile time!
Changed:
- Fixed compile error when overwriting an archived executable.
- Fixed error with random 'r' appearing in strings.
- New peephole optimizations should reduce executable size another percent or so.
EDIT: Okay, now it should be good... ::)
-
Axe Parser
Omega 1.1.0
The largest changelog since 1.0.0! So many bug fixes... anyway, special thanks to jacobly who has been helping a lot with the development recently. Also thanks Runer112 for the constant issue tracking and debugging.
New Features:
- New Select() command for simple and powerful optimization and storage.
- Redesigned Bitmap() command is clipped, faster, and works with any buffer.
- Axioms can now make page 0 jumps and calls.
- Toggle upper and lower case in your programs with the new Fix command.
- 8.8 to 8.8 sqrt.
- Single argument for loops can now take any expression as an argument.
- Now able to use Return in a single argument for loop.
- The Axe app disables G-T mode on startup.
- Conditional comment blocks. (aka preprocessor conditionals)
- Absorb appvars, programs, and strings directly into an executable.
- Zoom option now controllable through the API.
Changed:
- Added slightly more delay to direct key input.
- Function calls have a higher precedence over operations.
- Fixed multiple bugs with peephole optimizations.
- Fixed auto-replacements for inline Axioms.
- getkeyr handles lowercase more usefully.
- Fixed weird negative sign problem in brackets.
- Labels cannot be placed in a single argument for statement.
- Fixed horizontal-() bug causing crashes.
- Fixed random wrong num of args issue.
- Fixed a few mistakes in the commands list.
- Fixed custom list token in getcalc strings.
- Fixed constant store on last line.
- Throws an error when no digits entered for hex and binary constants.
- Buff() can only be defined with known constants.
- Fixed occasional tilemap sprite import glitch.
- Fixed *^ operation.
- Fixed cumsum() command.
-
Axe Parser
Omega 1.1.1
I was surprised how fast I was able to fix things an add some of these features...
New Features:
- Sexy new compiling progress bar.
- See the name of subprograms currently being parsed.
- See the total size so far of the executable.
- See progress when writing a compiled program to an app.
- Faster multiplication.
- New "Switch"-like statement to generate jump-tables.
- Now able to chain static declarations.
- Added a * in the compile menu to indicate archived programs.
Changed:
- Fixed scrolling to errors in large programs!
- Fixed issue with the getkeyr command not resetting.
- Fixed random errors occurring when parsing archived programs.
- Fixed empty brackets causing an error.
- Press [clear] to skip seeing the source error, otherwise it will show.
-
Axe Parser
Omega 1.1.2
Happy 2 year anniversary to Axe! :love: Some very cool and game-changing features here to celebrate...
New Features:
- Shiny new commands list! Thanks to Etienne Gauvin!
- [Beta] New compile setting to reduce executable size: "Axe Fusion" (But requires Axe to run)
- Axioms can now define their own custom token replacements. Thanks to Runer112!
- Optimized sprite commands, Z-Test(), and more!
- The "equal" and "not equal" operations can be used in constant expressions.
- New command to give default values to undefined constants.
- Pt-Mask()r now works on any buffer.
- Circle() now works on any buffer.
- New optimized shorthand for screen buffer copying.
- New command to retrieve an indexed string from a list of strings.
Changed:
- Removed default Axiom tokens, but you can add them back to your Axiom if you used them.
- Axioms can now be redefined multiple times with no effect on the program.
- Fixed documentation of EndIf command.
- Z-Test() will throw an error if used in a for loop instead of crashing.
- Fixed some syntax bugs with files.
-
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!
-
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.
-
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 (http://ourl.ca/4072) 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.