I got extra inspiration for this version after fighting with complex IF in one line, now you can use block structured IF while preserving the old-style IF, even better the new DO/LOOP statement construct and a way to exit loops with EXIT. Check the manual for the full syntax.
Also some enhancements to DEF FN to make it more powerful. The IntyColor utility got a much needed revamp, now it allows to use MOBs in your images for extra graphics definition, automatically or with an instructions file provided by you
Note: if you have downloaded version 1.2 before, download now latest one, it solves a bug when compiling the multiline IF statement.
Changes, enhancements and fixes in version 1.2:
- Support for multiline IF/ELSEIF/END IF
- Added statement DO WHILE expr...LOOP, DO UNTIL expr...LOOP, DO...LOOP WHILE expr, DO...LOOP UNTIL expr.
- Added statement EXIT, use as: EXIT FOR, EXIT WHILE or EXIT DO.
- Added #BACKTAB array to access screen directly (without using PEEK/POKE)
- DEF FN now accepts strings in definition.
- New LEN() function to get size of string.
- New POS() function to get current screen position.
- Initializes ECS sound generator.
- Added automatic seed of pseudorandom generator with RAM trash (courtesy of GroovyBee)
- Warnings now can be disabled with option -w
- Macro replacement now accepts string as arguments.
- Shows file causing error or warning when inside INCLUDE. (some very big programs developed in IntyBASIC were needing this )
- Optimized generation of code for plus constant followed by minus constant.
- Optimized generation of code for POKE.
- Solved bug where nested macros doesn't worked.
- Solved several bugs in macros for multiplication by constant (not so used numbers)
- Added a new contribution (tcg.bas) by Catsfolly.
- Superb enhancements for IntyColor utility: (run without arguments to see usage)
- Option -m for creating MOB automatically (for third/fourth color in same block)
- Option -c to not include constants.c (option -m)
- Option -r to create BMP report colored (error/GRAM/GROM)
- Option -g to indicate how to use the MOB (use with -m)
- Options -fx and -fy to flip in X and Y directions.
New in version 1.2.2:
- Support for reading/writing JLP in-flash memory using the FLASH statement, now you can make your game to save your high-score tables, achievements, current position in game, etc. (new sample flash.bas)
- Stack is now always allocated to system memory, some things moved in intybasic_epilogue.asm.
- Generates warnings when using constants bigger than 8 bits for assignment to 8-bits variables or for TO value.
- Generates errors if labels are redefined, undefined and warnings if never used. (instead of waiting for assembler pass to catch them)
- New contribution 42k.bas by GroovyBee, shows how to make a maximum-sized IntyBASIC program.
New in version 1.2.3:
- Added SIGNED statement to indicate arrays or variables of 8-bits signed. At start of your program, for example, add SIGNED a,my_array,b,c
- SPRITE statement now allows expression on MOB index. So it's easy to write FOR A=0 TO 7:SPRITE A,0:NEXT A
- SCREEN allows for sixth argument to support a wide origin screen, useful for horizontal scrolling or to display a fraction of a big map. (check landscape.bas)
- Solved bug where warnings were treated as errors for final return code of command line. (it interrupted SDK compilation)
- Solved bug where some warnings couldn't be disabled.
- Solved bug where 16-bits variables counting was wrong.
- New sample: landscape.bas (additional SCREEN syntax)
New in version 1.2.4:
- Optimizes sequences of ANDI/XORI instructions.
- Gives warning in case of assignment to variable previously declared as CONST.
- Solved bug where ELSEIF had to be finished with ELSE.
- A few warnings returned wrongly an error code in command-line.
- Warns about assignment to variables reserved for IntyBASIC use.
- Updated constants.bas
- IntyColor: Updated for new SCREEN syntax.
- IntyColor: MOB data for assembler mode output is now in hardware order and generates better data.
- IntyColor: Solved color bug introduced in 1.2.1
New in version 1.2.5:
- Added UNSIGNED statement, allows to make unsigned comparisons.
- Added PLAY VOLUME statement.
- Added NO DRUMS syntax to PLAY.
- Added MUSIC JUMP statement.
- Added MUSIC.PLAYING expression.
- Added CALL statement (like USR but outside expressions)
- DATA allows for string literal.
- DO statement followed by colon now isn't taken as label.
- Corrected bug in PAL detection.
- Updated constants.bas (corrections and new constants for Coloured Squares mode) and keypad.bas sample.
- Added contrib/ColouredSquares.bas a sample of drawing lines in Coloured Squares mode by GroovyBee.
- Added samples/bats.bas (animated bats)
- Added samples/envelope.bas (using envelope sounds)
New in version 1.2.6:
- Detects when PROCEDURE isn't finished at end of source code. Also starting a new PROCEDURE without closing the previous one now is an error instead of a warning.
- Added DATA VARPTR to allow arrays of pointers to arrays and/or variables.
- Generates warning when using DEFINE and requesting more than 16 GRAM to define.
- Internal: the mode_select variable now preserves in bit 0 the actual mode.
- Solved bugs in multiplication by 126 and 127.
- Solved bug in usage of JLP acceleration. (wrongly cached registers)
- Corrected contrib/clowns.bas (catsfolly) it broke with a change in constants.bas
- Added contrib/Gram2GromFont.bas (GroovyBee) showing how to take the GROM font and creating an entirely new font.
- Added contrib/TinyFont.bas (GroovyBee) showing how to display 40 columns using a 4 pixel wide font.
- Added manual notes about assembly language conventions for USR and CALL.
New in version 1.2.7:
- Allows to concatenate lines using the character \ at the end of a line. (suggested by GroovyBee)
- Now optimizes access to arrays when using same index even if different array or offset. (double speed in common cases!!! intvnut suggested it a long of time ago)
- Solved bug where DEFINE VARPTR swallowed one extra lexical component.
- Solved bug where 1024-x*x generated wrong code.
- Solved bug where PRINT "string" as first statement would write in non-screen memory.
- Minor edit in manual (definition of BORDER)
New in version 1.2.8:
- Added DATA PACKED for strings, same as DATA but fits two characters per word.
- Added OPTION EXPLICIT to force declaration of variables using DIM (without index), for example DIM A,B
- Added OPTION WARNINGS to disable compilation warnings.
- Warns about strange use of constants in FOR/NEXT
- Changed CC3/JLP memory flags to "=RM" for as1600 (needed for LTO-Flash)
- Solved three minor bugs. (optimization: reused register already trashed, weird expression a<5>b crashing, array optimization would trigger as1600 error because of "big" constant)
Edited by nanochess, Fri Oct 7, 2016 5:29 PM.