Skip to content

v 1.16.4

Compare
Choose a tag to compare
@spotlessmind1975 spotlessmind1975 released this 30 Sep 20:35
· 913 commits to main since this release

Version 1.16.4 of ugBASIC and UGBASIC-IDE has just been released.

In addition to containing numerous fixes and corrections for all targets, great efforts have been made to optimize the code, in terms of space and speed. In particular, the MOS 6502/6510/8502 and Zilog Z80 processors now produce less code thanks to the improved peephole optimizers, and all compilers removes unused variables and reduce spaces of embedded code. For targets that have memory banks, such as the Commodore 64 REU (c64reu), the Thomson MO6 (pc128op), Thomson TO8 (to8), and the TRS-80 Color Computer 3 (coco3) have automatic loading into the memory banks, even if the resource is not marked as BANKED. This allows a lot of space to be automatically recovered. The available memory for parsing has been increased of a 10x factor, and dynamic strings are more space efficient thanks to string tranpilation.

From this release ugBASIC joins the "TSB Project": this is a github project that will try to port most of the commands and syntax available on Simons' BASIC and TUNED Simons' BASIC directly into ugBASIC. New commands implemented: PLACE, CMOB, MOB ON/OFF, LOOP...EXIT IF...END LOOP, CHECK, ROT, DRAW, CSET, CGOTO, HIRES, MULTI, MOD (as a command), COLOR, WAVE, PAUSE, ENVELOPE, DUP, INST, FILL, CIRCLE, INSERT, DRAW TO, JOY (with TSB convention), %%, $$, CENTER AT, ON KEY, CHAR, PROC, NRM, AT (string swap), KEYGET, PAINT, DO NULL, D.POKE, D.PEEK, REC, BLOCK. The project aims at portability rather than implementation: therefore, you will have access to all the more advanced features, while being able to recompile your Simons' BASIC projects (this is driven by OPTION DIALECT pragma).

Moreover, this is the first version to implement the DOJO protocol. The ugBASIC language is now equipped with primitives capable of communicating with an external server, called DOJO, which is a system for creating virtual "game rooms" online.

The behaviour that can be selected with the pragma commands have been extended, and allow you to change many aspects of the language and its features. For example, it is now possible to preserve the palette on Amstrad CPC (cpc) with the PALETTE PRESERVE pragma, and it is possible to enable keyboard / joystick management directly under interrupt, to ensure that the value readings are performed at a constant speed. In this regard, a specific keyboard driver has been implemented for each target, with a support for keyboard queue.

The ZX Spectrum (zx) compiler now emulates key directions using the world wide WASD standard, and random number generation has been made more compatible with other BASICs, if the parameter 0 or 1 is used (RND(0), RND(1)), with "out of the box" generation of floating point numbers between 0.0 and 1.0. Disk image generation for the TRS-80 Color Computer 1/2/3 (coco,coco3) has also been enhanched, along with disk image generation for the C64 with REU memory expansion (c64reu). The DATA instruction is now able to manage binary strings.

Finally, from this version onwards, "retro compatible hacks" have been implemented which ensure that previously written games can run without any issues, although there have been some small changes in the specifications.

For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu