ZXDunny
Deep avatar
- Joined
- Oct 12, 2010
- Messages
- 2,585
Hi all -
Just uploaded the latest PandaBAS, I know you've all been wetting yourselves waiting for this.
Here's what's new:
Bug reports and feedback here, on the repo or on the official forums.
D.
Just uploaded the latest PandaBAS, I know you've all been wetting yourselves waiting for this.
Here's what's new:
Get it: http://repo.openpandora.org/?page=detail&app=pandabas.zxdunny.2994What's new for SpecBAS
v0.0.0.801
==========
Added:
Optimised POKE$ which offers little in the way of day-to-day speed increases, but the twister demo runs a bit better
Massively optimised filled circles and ellipses - huge speed increase!
Slight optimisations to other primitive drawing commands - rectangles and polygons
Optimised the line drawing routine, much faster now
Filled Polygons now obey INVERSE if the texture is solid
Zones. A Zone is a region of a window against which you can test a coordinate, and get the zone number it's in. Handy.
Fixed:
ON COLLIDE created an extra keyword which caused a stack overflow
Fixed a small annoying bug in the WINDOW command
The expression evaluator was misbehaving again - should be fine now
CONST errors in string slicer assignments - in fact, Slicers in general weren't behaving well
Documentation for CONST and LET amended
v0.0.0.800
==========
Added:
Optimised variable accesses local to procedures, quite a nice result there
Speedups added to any commands that utilise the stack - GO SUB, DO .. LOOP, WHILE, UNTIL etc
TEXTURE$ converts a string to a graphic-string for use in, i.e., fills
LET can now assign a value to multiple variables - LET a,b,c=0 or LET a$,b$,c$="Hi" for example
More optimisation to internal string handling
You can, if you really want, start a line with any number of statement separators (
Protected banks show up with a small "key" icon to indicate their locked state in LIST BANK
Converted the whole interpreter to store token handlers inside the tokens themselves - much more efficient
Improved variable caching to save on look-ups, results in a respectable speed boost
String operations should now be quite a lot quicker due to a better string copying routine
CONST name,value - sets a constant. Like a variable, but much faster to process as no look-up is needed
SCALE sx,sy is now a standalone command
SCALE can now be used in INPUT the same as in PRINT
Sprite clones now inherit OVER and such, but still don't cause collisions
Sprites can now wrap - use WRAP WINDOW or WRAP CLIP (to wrap to the clipping region) after SPRITE NEW
Converted Sprite movement systems to relative offsets instead of absolutes
LIST BANK now lists banks in ID order
Added an Out of Memory error for overrunning the various stacks allocated to BASIC
Sprites now have their own OVER mode. Set it with SPRITE NEW id,x,y [COLLIDE] [OVER m] or SPRITE OVER id,mode
INCLUDE now searches the "include:" assign for files if they're not found in the current directory
Fixed:
Certain embedded PRINT commands were evaluated in the wrong order
Fixed sprite wrapping for sprites that don't quite ... wrap properly
REM splitting is bugged - so has been disabled for now pending a proper fix
Forcing a SCROLL? prompt with a large font caused too much scrolling
LIST VAR array() now displays empty arrays correctly
You can no longer kill SpecBAS by resizing the editor windows too small
Automatically created "system" banks can no longer be destroyed by the user
Default mouse pointer is now restored if the current graphic being used is deleted or replaced
Graphic banks, when rotated, were displaced on their own canvas
Sprite Info handlers (such as SPRITEw et al) would crash with a negative frame value
Some errors would render their lines non-editable
SPRITE FLIP and SPRITE MIRROR didn't work correctly for sprites of even width/height, only odd
Errors that return an "Invalid Keyword" error caused issues with the expression evaluator
LIST BANK 0 listed ... interesting values for window metrics
READing into a string array with one dimension now works as it should - these take precedence over regular string slicers
Streams can now access memory banks like they are supposed to
Eraseing (or generally mucking about with) a graphic bank that is the current drawing surface resets drawing to the default window
SPRITEw and SPRITEh, when called with a spriteid that points to an empty sprite, crashed specbas
LOAD "filename" BANK NEW now returns the correct bank ID number
BANK ERASE wouldn't function correctly because it assumed all banks were fonts
Banks can now be unprotected properly
Many range-limited operations were overruning their allocated memory
PRINTing at the very bottom of the screen might have caused a Scroll? message after all
CASE no longer overwrites the case-stack and jumps to END CASE properly after WHEN
The constant "PI" and the function of the same name were clashing... unsurprisingly!
Rapid keyboard hammering could cause a crash as the internal keybuffer may get cleared while the interpreter is working on it
Sprite collision now checks both the window -and- the display for sprite-to-sprite collision
ON COLLIDE is cleared properly after NEW and RUN
VAL no longer crashes specbas with invalid characters
Sprite collision now only checks pixels in the sprite's window, not the overall screen display
String slicing with one element such as LET a$(1)="H" for a string variable now works again
Sprites now inherit the correct window info when changed to a new window
PRINTed newlines were taking up two rows of characters rather than one, which resulted in erroneous "Scroll?" prompts
Bug reports and feedback here, on the repo or on the official forums.
D.