Release [REPO] PandaBAS 0.801


Deep avatar
Oct 12, 2010
Hi all -

Just uploaded the latest PandaBAS, I know you've all been wetting yourselves waiting for this.

Here's what's new:

What's new for SpecBAS




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.


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




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


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
Get it:

Bug reports and feedback here, on the repo or on the official forums.



Deep avatar
Oct 12, 2010
damn! thats a list :)
Oh, I been busy :)

Thing is, even though the audience on the Pandora is limited there's quite a lot of folks out there using the desktop PC versions so I get quite a lot of suggestions and bug reports. I diligently work my way through them and constantly make improvements :)

Last edited by a moderator: