Vectrex32 Release Notes ======================= Version 1.24, June 15, 2020 ---------------------------- New features and bug fixes. - Significantly reduce memory usage. - Allow spites to be magnified by different amounts in the X, Y, and Z directions. - Add SpriteSetData() subroutine. - Add BreakOnControlC() subroutine. - Allow reading binary data friom stdin. - Fix crash when there's a syntax error in an array initializer. - Fix truncate() function. - Fix FTell() behavior. - Fix calculation of 3D distances. - Fix printing of floating point numbers. - Fix some bugs in handling large drawing lists. Version 1.23, March 31, 2020 ---------------------------- New features and bug fixes. - Allow larger drawing lists by reusing the DPRAM multiple times per frame. - Add Sgn (signum) function. - Optimize memory usage of array initializers. - Fix the error reporting of line numbers in included files. - Show include file names when tracing is on. Version 1.22, January 22, 2020 ------------------------------ New feature and bug fix. - Added support for INCLUDE files. See details in the GS BASIC manual. - Fixed a problem with accessing structure members. Version 1.21, December 30, 2019 ------------------------------- New features and bug fixes. - Add run-time error handling with ON ERROR CALL - Add 2.5D sprites, which are 2D sprites that can be positioned in the 3D world. - Add binary file I/O with FRead and FWrite. Add random access with FSeek and FTell. - Add byte arrays to support binary files. - Add bitwise operators &, |, ^, and ~ (AND, OR, Exclusive OR, and Complement). WARNING: if you were using ^ for exponentiation, you need to change your code! - Add the pow() function for exponentiation. - Allow == for testing equality, since you can't teach an old C programmer new tricks. :-) - Add SpriteGetUserData and SpriteSetUserData to allow a program to associate arbitrary data with a sprite - Handle dual-port RAM overflows more gracefully. - When re-DIMming an array, free the old array before allocating the new one. This is more memory efficient. Version 1.20, October 11, 2019 ------------------------------ New features and significant optimization to BASIC. - Add C-like structs - Add matrix arithmetic: +, -, * (dot product) and / (by a scalar) - Add matrix functions: norm(), transpose(), cross() (for cross product) - Add ByRef keyword to specify when arguments should be passed to subroutines and functions by reference instead of by value. - Add atan2() function. - Add DeepCopy() function for copying arrays and structs Version 1.19, September 24, 2019 -------------------------------- Bug fixes. This is an absolutely necessary fix to 1.18. - Demo3D, MBOV, and Yankee had crashes. These were symptoms of a more fundamental problem with the Vectrex32's communication with the 6809. Version 1.18, March 30, 2019 ---------------------------- Bug fixes and features. - Add VectorGunner game, a Tail Gunner clone - Add the Val() function, which converts strings to numbers - Add some debugging support: the DrawingListSprite() function and the display of sprite indexes in DumpSprites() - Optimize drawing to address flickering problem - Fix crash triggered by a specific syntax error Version 1.17, August 2, 2018 ---------------------------- Bug fixes and features. Features: - Add file I/O, useful for saving high scores or loading game data - Add Code pseudo-sprite, which allows BASIC programs to send any 6809 code to the Vectrex - Add Instr function for searching in strings. May be useful when parsing high score files or data files. - Reduce the memory used by compiled BASIC code. - Improve the documentation for SpriteTranslate(). Bug fixes: - Fix playing of music; random sounds were playing after the music was done. - When trace is on (TRON), print line numbers for ELSEIF statements. - Handle lines terminated by only LF. - Remove support for large coordinates in DotsSprites; it was adding extra dots and there's no alternative solution. - Improve error reporting when there are large coordinates. - Prevent the Sound() function from modifying the AY-3-8912's I/O Enable bits. - Fix occasional 6809 crashes. They were caused when the signal line from the Vectrex32 that tells the 6809 that there are new commands to execute had a glitch on it. The 6809 code now double-checks the validity of that signal. Version 1.16, Not Widely Released --------------------------------- Bug fixes rolled into version 1.17. Version 1.15, May 12, 2017 -------------------------- Bug fixes and minor features. Features: - Report the hardware version in the introductory message (e.g. D3 or D6). Bug fixes: Many thanks to "Astrosynthesist" for finding many of these bugs. - Correctly read the Y coordinate of the joystick on controller 2. - Improve Ctrl+C handling. - Improve handling of Dual-Port RAM overflows. - In the Lunar Lander game, disable drawing of the LEM when it goes off the top of the screen. - Reset the position of the 3D camera when a game is ended. Version 1.14, December 11, 2016 ------------------------------- New features, new game, and bug fixes. Features: - Add the new game Missilebreak Outvaders - Improve line drawing by allowing patterns. Many thanks to Malban for his new version of Draw_VLp - Improve line drawing by eliminating the bright dot at the end of the line. Many thanks to Malban again for his insights into the cause of this problem. - Add a transformable vector font to the Vectrex32. - Support the Vectrex's built-in Explosion routine. - Add GetTickCount() function to measure time more precisely. - Add Asc() function to get the ASCII value of a character. - Allow the LOAD command to be entered in Debug mode. - Allow arrays to be dimensioned with zero rows. - Add SpriteGetMagnification() function. Bug fixes: - Fix handling of unary minus in expressions - Improve error reporting. - Allow higher frame rates. Version 1.13, November 18, 2016 ------------------------------- Optimization and manual change. - Several changes were made to use memory more efficiently on the Vectrex32. - An example in the manual was corrected. Version 1.12, October 27, 2016 ------------------------------ A bug fix. - If Vectrex32 was unable to find a function or subroutine that is called in a program, it could lead to a crash later. This bug is now fixed. Version 1.11, October 25, 2016 ------------------------------ Minor feature additions. - The FOR...NEXT loop now supports STEP, with both positive and negative values - The FOR...NEXT loop now supports floating point numbers for the start, end, and step - The WaitForFrame function now accepts an optional fourth argument to specify the resolution of the analog joystick. Version 1.10, October 19, 2016 ------------------------------ Bug fixes and support for 3D graphics. - 3D sprites added. 3D sprites can be rotated and placed in a virtual world. Vectrex32 applies a perspective transform and draws them on the screen. - Add other features and enhance existing features to support 3D. - BASIC statements continued over many lines could trigger Out of Memory errors. Fixed. - A large number of arrays could cause Out of Memory errors. Fixed. - There were circumstances where BASIC did not report the line and column number of an error. Fixed. - Drawing immediately after a ReturnToOrigin caused the lines to draw incorrectly. Fixed. Thanks to Malban for his assistance in fixing this. - Changed the Vectrex32 timebase from 1000Hz to 960Hz. This allows more frame rates to implemented accurately (e.g. 60 fps, 120 fps). - There were fatal defects in the firmware upgrade mechanism. Fixed. - Fatal errors required the Vectrex to be turned off and on in order to restart the Vectrex32. We now attempt to reboot the Vectrex32. - The name "SmartCart" is retired. The product is now just "Vectrex32". Version 1.00, August 21, 2016 ----------------------------- Initial version