Releases: spotlessmind1975/ugbasic
v 1.16.5
Version 1.16.5 of ugBASIC and UGBASIC-IDE has just been released.
In addition to containing strong optimizations on the generated code, and numerous fixes and corrections for all targets (especially for the Amstrad CPC 664 and TRS-80 Color Computer 1/2/3 targets), 32-bit division has finally been implemented for the 6809 processor and the code generation for the MOS 6502/6510/8502 has been improved, with a reduced memory footprint. Even more, the MSPRITE
command under vic2 supports the duplication of graphic definition, in order to reduce the memory requirements. The MIDI to IMF converter has been improved, with support for volume changing and specific percussion handling and automatic instrument calculation that composition software takes for granted, and improvements have also been made to multitasking interleaving capabilities, which can now also handle "busy" waits, making it even easier to write algorithms. Threads can, among other things, be suspended and resumed with the SUSPEND
and RESUME
commands.
From this release of ugBASIC, the additional data type IMAGEREF
is now available, which allows you to represent an IMAGE
, an ATLAS
or an entire SEQUENCE
parametrically, that is, as a reference to one of the same graphic elements previously loaded. This tool allows you to modify the graphic resources at run time, thus allowing you to create games with great aesthetic variability. A whole set of instructions has been added, to manage (automatically) the animations and movements of graphic elements, taking advantage of the improved multitasking. In particular, the ANIMATE
command allows you to activate and drive animations while the program is running, and so does the MOVE
command, which allows you to move objects in parallel, even synchronized with the animation. This is a fairly recent feature, which will be improved and extended in future versions. The new PATH
data type, together with the TRAVEL
instruction, allows you to calculate all the intermediate points of a path between two points, thus allowing you to easily create "programmed paths", such as those associated with graphic adventure animations. These paths are also available on the MOVE
statement, to allow you to move elements on defined paths.
Finally, an additional OPTION FINAL RETURN
directive has been added, which allows you to generate a subprogram, callable, if the target allows it, from embedded BASIC or in general from the host operating system. Additional pragma DEFINE RESIDENT DETECTION
allows to optimize the usage of resident memory, when banking is active. The PRINT RAW
is now available, to print characters without escape sequence parsing. It is now possible to indicate whether an array can receive data from expansion memories, with the FOR BANK READ
and FOR BANK WRITE
options. The conditional compilation has been extended, to support compilation conditional on the presence or absence of hardware sprites (ON SPRITE AVAILABLE
/ ON SPRITE NOT AVAILABLE
). The audio and music assets are now READ ONLY
by default, as well as graphical assets on "console" type targets. The "retro compatible hacks" have been updated 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
v 1.16.4
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
v1.16.3
Version 1.16.3 of ugBASIC and UGBASIC-IDE has just been released. In addition to containing numerous fixes and corrections for all targets, there is a preliminary support for multiplexed sprites under vic2. Moreover, there are many space optimization techniques, and support for analogic joystick has been added. It is now possible to suggest the start address for program, using the DEFINE PROGRAM START
pragma, and to differentiate procedures if a joystick is not present.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu
v1.16.2
Version 1.16.2 of ugBASIC and UGBASIC-IDE has just been released. In addition to containing numerous fixes and corrections for all targets, there is a preliminary support for audio on TRS-80 Color Computer target and the support for Thomson TO8 is no more in beta stage. Moreover, the support for Thomson MO5 has been extended, to support seamlessy MEMO5 expansion memory and, finally, for Thomson MO6 / Olivetti Prodest PC128, the support for scanline waiting has been added to WAIT VBL
instruction.
New instructions has been added: CONSOLE
, CONSOLE SAVE
, CONSOLE USE
commands has been added, to have up to four different virtual consoles; CLINE
command has been extended, to support graphical modes; ENABLE INTERRUPT
/ DISABLE INTERRUPT
, that are able to enable or disable interrupts at CPU level; COMBINE NIBBLE
, that can combine two 4 bit values in a single 8 bit value; LINE
, as alias of DRAW
but with a more standard BASIC compatible syntax; PLAY
, to play a string as a music; DEFINE AUDIO TARGET
and DEFINE AUDIO SYNC / ASYNC
pragmas, to select the output for audio and synchronized play; the BIT
data type has been optimized; WRITING
instruction has been deprecated, and not more supported.
Even more, the UGBASIC-IDE application has been improved, with the correction of autocompletion and the introduction of the "Time Machine": this is a mechanism with which it will be possible to locally manage the space occupied by the various compilers, and the related versioning. It will be possible to download, remotely, the versions archived in the last two years. Thanks to specific encryption verification mechanisms (accessible at each compiler level), the consistency of the executables is guaranteed at each download. Furthermore, it is now possible to set up novelty detection at the level of HOTFIX / COLDFIX, and not just entire versions. It will therefore not be necessary to keep an eye on the Facebook group to find out about the updates, which will be presented on the wizard, specially revised and updated.
The IDE is now able to collect, on its own, any problems that arise and inform the author of ugBASIC, with the user's authorization. You will also be able to configure the editor to compile individual targets, converting the menu selection to a single button selection, and set the size of the memory expansion for use with the emulator for Commodore 64 computers (with REU), Thomson MO5 and Thomson TO8.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu
v 1.16.1
Version 1.16.1 of ugBASIC and UGBASIC-IDE has just been released. In addition to presenting many bug fixes from the last published version, it features support for the Thomson TO8 (to8) target. It is currently in beta stage.
For Olivetti Prodest PC128 the memory management has been enhanced, to leave more memory available, and for Commodore 64 + REU the banked access on vic2 has been optimized. In general, the code generated has been space reduced, the array can be stored on banks and flipping of images using FLIP IMAGE
command has been introduced, in order to reduce the memory footprints for graphical images.
The version added the support for sound card based on SN76489 on Olivetti Prodest PC128 and TRS-80 Color Computer 1, 2 and 3 (by using the GMC cartidge), both for direct sounds (like sound effects) and for background music, also banked on external memory with the BANKED
keyword, if available. A way to play native PSG files has been added, as well. From this point on, the static and dynamic hardware integration and configuration will be available directly from ugBASIC by using the CONFIGURATION
instruction.
Floating point routines on MOROTOLA 6809 and MOS 6502/6510 has been enhanced with the EXP
and LOG
instructions. Added instructions VARBANKPTR
and VARBANK
, to allow access to banked memory.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu
v 1.16
Version 1.16 of ugBASIC and UGBASIC-IDE has just been released. In addition to presenting many bug fixes from the last published version, it features support for the Commodore 64 + REU (c64reu
) target.
The handling of integers (variable and constants) has been improved, with a deep optimization of implicit conversions and on unused temporary variables, and an improvement of up to 30% in the size of the final executable, with the same source. Moreover, there are no more limits in number of frames for LOAD IMAGES
/ LOAD SEQUENCE
.
Improved PAL/NTSC detection, with the possibility of obtaining information at runtime and to wait for a specific raster line using WAIT VBL
, as well as the possibility of knowing whether you are operating with a LITTLE ENDIAN
or BIG ENDIAN
system. Now it is possible to redefine, at run time, the characters of the font loaded via the DEFDGR
command, as well as load an external one with the LOAD FONT
command.
The management of constant values has been extended, to allow the definition of string constants by juxtaposition of string constants, as well as the generation of strings of repeating zeros. This new ability, combined with the ability to define IMAGE
/ IMAGES
/ SEQUENCE
starting from strings, makes it possible to participate in programming competitions where it is necessary to be able to draw nice graphics without being able to load them from storage media.
It is now possible disable and re-enable multitasking using FORBID
and ALLOW
keywords to (RE
)SPAWN
a set of threads at the same time, assigning the handle of each of them to an element of a previously declared array, and to KILL
threads in the very same way. The SOUND
command has been extended to allow you to output a sequence of sounds with a single instruction.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu
v 1.15.3
Version 1.15.3 of ugBASIC and UGBASIC-IDE has just been released. In addition to containing numerous fixes and corrections for all targets, the compiler is now able to generate disk images for ATARI (format: ATR), DSK (for MSX1) and D64 (for VIC20). In general, you can define the contents of all disk media with the BEGIN STORAGE
and ENDSTORAGE
commands. These also allow you to describe the layout of the RAM memories involved, by means of shared variables, and therefore allow you to load images, sequences, animations and maps at run time.
To do this we find the first implementation of the DLOAD
and DSAVE
commands to, respectively, load and save data to mass storage. At the moment this is an experimental function available for the following targets: atari
, atarixl
, c64
, c128
, cpc
, msx1
and vic20
. Support is also eventually available for the coco
and coco3
targets, but it is very experimental.
Other instructions have been added: DEFDGR
, which allows you to redefine graphic fonts at run time, POKEW
and PEEKW
, which allow you to write and read one integer (2 bytes) at a time; POKED
and PEEKD
, which allow you to write and read a long integer (4 bytes) at a time; STRPTR
, which allows you to get the address where a string begins.
A better hard coded palette has been selected for the various graphics cards, and the compiler has been made more consistent with the BASIC specification. In particular, FOR...NEXT
instructions now allow you to indicate dynamic extremes, as well as being able to interact with the counter variable and with the step, and jump inside or outside the FOR...NEXT
loop freely.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu
v1.15.2
Version 1.15.2 of ugBASIC and UGBASIC-IDE has just been released. In addition to containing numerous fixes and corrections for all targets, several commands have been added: BORDER
, RUN
, INT
(function), GET
on images (and sequences), NEW IMAGES
to create image collections, AFTER...CALL
, AFTER...GOSUB
. NOTE
like a "function", OPTION TYPE NARROW
, OPTION TYPE WIDE
, and a more standard BASIC syntax. I.e., the DIM
syntax when data type is given, IF..THEN..ELSE
with line numbers and IF..THEN
with following statement.
Generally speaking, default data type is now SIGNED WORD
(INT
) and the default graphic mode (choosen with BITMAP ENABLE
alone) has been changed for every chipset: i.e., 320x200x4 under Amstrad CPC 664 and 128x192x4 under MOTOROLA 6847. Moreover, in order to have a better image conversion, support for differentiated color detection on chipset 6847 has been added, and the bitmap colorization and palette reservation on Amstrad CPC 664 has been improved, and fixed GET IMAGE
on screens larger than 256 pixels and PUT IMAGE
of transparent images as non transparent.
Now EVERY...CALL
and EVERY...GOSUB
supports multiple timers (up to 8 independent timers). The MIDI to IMF converted has been refactorized, in order to support MIDI command SET PROGRAM on programmable audio chipset, and the MUSIC
keyword has been fixed on some chipset (like POKEY). It has been extended with the LOOP
keyword, in order to implement a neverending IMF/MIDI music score (like a generic soundtrack).
On TRS-80 COLOR COMPUTER 3 the hard coded palette has been better defined. The frequency algorithm decoding has been improved for target with AY-8910 audio chipset. Finally, protothreading has been optimized when a loop start and for Commodore 128 (8502 version) the support for joystick reading under irq has been added.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu
v 1.15.1
Version 1.15.1 of ugBASIC and UGBASIC-IDE has just been released. In addition to containing numerous fixes and corrections for all targets, several commands have been added: PRINT@
, CLEAR
, RESTORE
, READ
, DATA
, READ FAST
, DATA AS
, OPTION READ
, OPTION CLIP
, SPC
, PUT
, GET
, LINE
, DRAW
, PAINT
, PMODE
, PCLS
, SCREEN
, SCREEN PAGE
.
Performance has improved for TRS-80 COCO3 computers, and support for double buffering has been added, while for all the PUT TILEMAP
command has become more spatially efficient. There is also better compatibility with 1980s BASIC syntax, such as the use of the variable in the NEXT keyword. Finally, the IDE allows you to run programs directly on emulators for ColevoVision, ColEm and CoolCV.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
v 1.15
Version 1.15 of ugBASIC and UGBASIC-IDE has just been released. In addition to presenting many bug fixes from the last published version, it features support for the TRS-80 Color Computer 3 (coco3) target. The IDE has also been improved, with auto completion (CTRL+ENTER keys), online help (F1) and the possibility of exploring the keywords of the language.