Change logs of ugBASIC language

Branch beta

  • UPDATE [rev. 20240906] BETA


    commit: bcb416b38 (on github)
    • Added DEFINE LOAD BANKED ON/OFF for pc128op and to8 target (default: ON)
    • Fixed IMAGE WIDTH / IMAGE HEIGHT on BANKED images (to8, pc128op, mo5)
    • Fixed PLOT under pc128op
    • Fixed audio support for pc128op
    • Fixed unsigned power of two division under 6809
    • Fixed IMAGE WIDTH / IMAGE HEIGHT on images
    • Fixed absolute jump in keyboard support under atari
    • Fixed zero paged registers for gtia
    • Fixed LOWER under z80
    • Fixed power of 2 division on z80


  • UPDATE [rev. 20240904] BETA


    commit: 0e59244eb (on github)
    • Fixed byte / multibyte on coco / coco3
    • Fixed variable generation under c64/c64reu
    • Fixed optimization rule under 6502
    • Retro compatible hack: cocon_1163
    • Retro compatible hack: acme_1163
    • Separated version
    • Better loader for coco dsk image
    • Fixed SOUND to use vic1 timer under vic20
    • Fixed SOUND to use ay9810 timer under sc3000/sg1000
    • Fixed SOUND to use ted timer under plus4 (untested)
    • Fixed SOUND to use sn76489 timer under pc128op
    • Moved ay8910 timer manager into startup module
    • Added support for KEYBOARDMANAGER under msx1
    • Fixed SOUND to use ay8910 timer under msx1
    • Fixed SOUND to use ay8910 timer under cpc
    • Fixed SOUND to use ay8910 timer under coleco
    • Fixed SOUND to use sid timer under c64reu
    • Fixed optimization routines for c64reu
    • Fixed default -R value for c128
    • Fixed c64reu interrupt services routines
    • Moved used variables inside vic2
    • Fixed SOUND to use sid timer under c64
    • Fixed startup routines under c64
    • Fixed starting sound generation under sid (c64)
    • Fixed SOUND to use sid timer under c128z (stub)
    • Fixed SOUND to use sid timer under c128
    • Fixed start video buffer in atarixl
    • Fixed SOUND to use pokey timer under atari/atarixl
    • Fixed division by power by 2 on z80
    • Fixed audio stop under sid (c64, c64reu, c128)
    • Moved inside sid startup irq service for sid timers
    • Fixed non scrolling PRINT in graphic mode under vic2 / ted
    • Added check dimensions on image loading under zx
    • Added preliminary support for RLE encoding on PUT IMAGE (vic2 only, c128 only, mode 3 only)
    • Fixed multiplication on power of 2
    • Removed spurious space occupied (6502 targets)
    • Increased performance of 6502 optimizer
    • Moved dynamic string parameters on page 0 on c64, c128 and c64reu
    • Implemented SCREEN MODE UNIQUE on variables (vic2)
    • Implemented SCREEN MODE UNIQUE on PLOT (vic2)
    • Increase space optimization on missing SET LINE on DRAW
    • Moved dynamic INSTRUMENT inside the MUSIC library on sid
    • Promoted irq service on atari/atarixl


  • UPDATE [rev. 20240831] BETA


    commit: 2a8018908 (on github)
    • Removed distruptive optimization rule under 6502
    • Increased and fixed performance of 6502 optimizer
    • Fixed lowecase for vic20 and c65reu support
    • Added conditional compilation for SYSCALL
    • Added conditional compilation for READ, DATA and related
    • Promoted irq service routine on pc128op
    • Promoted irq service routine on coco
    • Moved to compile time the msprite address (vic2)
    • Fixed d64 image creation under c64reu
    • Changed position for jump table generation under c64reu
    • Fixed string tranpilation (memory allocation)
    • Added conditional compilation for SCANCODE and related
    • Fixed missing re-enabling interrupt under c64
    • Fixed keyboard driver's optimization
    • Fixed gtia preprocessor
    • Fixed code generation on variable definition (6502)
    • Added conditional compilation for sid support
    • Factorized MSPRITE under vic2
    • Added conditional compilation for SCANCODE and related
    • Added conditional compilation for JOY and related
    • Removed duplicate VARINIT
    • Added conditional compilation for MUSIC
    • Added conditional compilation for EVERY
    • Added conditional compilation for CONSOLE on vic2
    • Added conditional compilation for vic2 DOUBLE BUFFER
    • Added conditional compilation for vic2 WAIT VBL
    • Removed unused EVERYSTATUS variable
    • Removed unused keyboard variables from c128z target
    • Makes INPUT RATE complement of INPUT DELAY
    • Removed unused keyboard variables from d32/d64 target
    • Removed unused keyboard variables from mo5 target
    • Removed unused keyboard variables from to8 target
    • Removed scancode library from cpc target
    • Removed unused keyboard variables from pc128op target
    • Removed scancode library from msx1 target
    • Removed useles KBDRATE on d32/d64 target
    • Fixed DATA generation for binary strings under cpc
    • Removed scancode library from cpc target
    • Removed useles KBDRATE on coco target
    • Removed scancode variables from c128z
    • Removed scancode library from c128z
    • Fixed DATA generation for binary strings under c128z
    • Removed KBDCHAR and scancode asm library on c128
    • Removed KBDCHAR and scancode asm library on atari
    • Fixed DATA generation for binary strings under c128
    • Fixed path separator decoding for LOAD instructions
    • Fixed error messages on INCLUDE FILE and IMPORT DECLARES
    • Refactorized disk image generation under coco
    • Fixed RESTORE with label
    • Fixed LOWER under atari
    • Fixed current mode under atari (gtia)
    • Fixed DATA generation for binary strings under atari
    • Fixed utf8 support on INCLUDE
    • Fixed LOWER under atari


  • UPDATE [rev. 20240827] BETA


    commit: d357d9ec4 (on github)
    • Increased available memory for parsing on compilers (10x factor)
    • Variable management alignment on coco/coco3
    • Refactorized disk image generation under coco3
    • Refactorized disk image generation under coco
    • Fixed star star (mul2) operator with variables
    • Fixed alignment for 6809 code generation
    • Fixed READ dynamic strings
    • Fixed RESTORE under 6809
    • Fixed string garbage collection under 6502
    • Fixed INK / PEN / COLOR for coco/d32/d64 (graphic modes)


  • UPDATE [rev. 20240825] BETA


    commit: 9637a554e (on github)
    • Fixed DUP instruction
    • Fixed WAIT KEY under cpc
    • Fixed memory exhausting re-using static strings (z80)
    • Fixed memory exhausting re-using static strings (6502)
    • Fixed memory exhausting re-using static strings (6809)
    • Fixed wrong IRQ usage in BELL command (coco / coco3)
    • Fixed add with 32 bit constants under 6809
    • Fixed MID function under 6809
    • Fixed disruptive optimization rule under 6809
    • Fixed vic2 graphical mode 2 COLUMNS
    • Fixed PRINT under graphical mode 3 (vic2)
    • Fixed note selection on PLAY
    • Fixed default duration and octave for PLAY command
    • Fixed error messages


  • UPDATE [rev. 20240823] BETA


    commit: 97e950000 (on github)
    • Implement DOJO protocol #942
    • Stub for DOJO protocol on remaining targets
    • Preliminary support for DOJO protocol on c64reu target
    • Preliminary support for DOJO protocol on coco/coco3 target
    • Preliminary support for DOJO protocol on c64 target
    • Added support for cpu_ztoa on z80
    • Added support for cpu_ztoa on 6809
    • Added support for cpu_ztoa on 6502


  • UPDATE [rev. 20240814] BETA


    commit: c30862cfd (on github)
    • Add support for keyword PLACE (function) (TSB only+SB) #883
    • Add support for keyword CMOB (SB) #821
    • Add support for keyword MOB ON/OFF (SB) #871
    • Add support for LOOP ... EXIT IF ... END LOOP (SB) #838
    • Add support for keyword CHECK (command) (TSB only) #818


  • UPDATE [rev. 20240813] BETA


    commit: 53ca6e273 (on github)
    • Added support for KEY PRESSED ASYNC pragma on new keyboard drivers
    • Added support for keyboard driver under atari, atarixl, c64, c64reu, c128, c128z, coco, coco3, cpc, d32/d64, mo5, msx1, pc128op, zx (KEY SHIFT, PUT KEY, KEY STATE, CLEAR KEY, and so on)
    • Added (stub) support for keyboard driver under coleco, plus4, sc3000/sg1000, to8, vic20
    • Fixed CMOVE to support console limits
    • Fixed BIN function under 6502
    • Added support for KEY SPEED
    • Added support for LINE INPUT
    • Better support for datatype on INPUT
    • Added missing symbol for FLOAT
    • Added cpu_ctoa on 6502, 6809 and z80
    • Added support for IRQ under c128z
    • Added support for native RELEASE on WAIT KEY
    • Add support for keyword ROT (SB) #890
    • Add support for keyword DRAW (SB) #834
    • Removed reduce reduce conflict on HALTED, IMAGES, TICKS, FRAME, SPAWN
    • Removed wrong LINE string command
    • Add support for keyword CSET (SB+TSB only) #825
    • Add support for keyword CGOTO (SB) #816
    • Fixed 6809 instruction for sn-76489
    • Add support for keyword HIRES (SB) #849
    • Add support for pragma CLS #898
    • Fixed XOR opcode on 6809 code generation
    • Already present keyword JOY (SB+TSB only) #854
    • Add support for keyword MULTI (SB+TSB only) #875
    • Add support for keyword MOD (command) (SB+TSB only) #873
    • Add support for keyword COLOR (TSB only) #823
    • Added support for OPTION DIALECT
    • Add support for keyword WAVE (SB+TSB only) #896
    • Fixed abbreviation for WAIT


  • UPDATE [rev. 20240802] BETA


    commit: 46603073f (on github)
    • Add support for keyword PAUSE (SB+TSB only) #881
    • Add support for keyword ENVELOPE (SB) #839
    • Add support for keyword DUP (SB+TSB only) #836
    • Add support for keyword CGOTO (SB) #816
    • Added cpu_jump_indirect under z80
    • Added cpu_jump_indirect under 6809
    • Added cpu_jump_indirect under 6502
    • Add support for keyword INST (function) (SB+TSB only) #852


  • UPDATE [rev. 20240801] BETA


    commit: c8b373a43 (on github)
    • Add support for keyword FILL (SB) #845
    • Added support for print function with NULL
    • Add support for keyword INSERT (command) (TSB only) #850
    • Add support for keyword CIRCLE (SB) #820
    • BELL instruction hangs coco3 target #916
    • Fixed storage of char under 6502
    • Improving CLS color for CoCo #917
    • Added DEFINE COLOR IMPLICIT EXPLICIT pragma and DRAW TO #835
    • Fixed disruptive optimization rule under MOS 6502
    • Add support for keyword INSERT (function) (SB) #851


  • UPDATE [rev. 20240730] BETA


    commit: 5a584a210 (on github)
    • Removed NO_ERROR dependency on d64 (output)
    • Already present keyword JOY (SB+TSB only) #854
    • Add support for pragma OPTION EXEC (TSB only) #841
    • Add support for keyword %% (TSB only) #806
    • Fixes on array definition
    • Add support for keyword $$ (TSB only) #805
    • Add support for keyword CENTER AT (TSB only) #814
    • INPUT on Spectrum leaves cursor #914
    • Possible screen misalignment on C64? #915
    • Compiler crash for CoCo target #912
    • Scrolling broken for CPC target #913
    • PRINT introduces spaces in Dragon target #906
    • CLS does not reset cursor position #911
    • INPUT not working on C64 #909
    • INPUT not working on Spectrum target #908
    • Scroll causes weird chars to appear on Spectrum target #907
    • Removed floating point debug print under 6502
    • Added preliminary support for troubleshooting and '-w' parameter
    • unexpected Float compilation error with simple FLOAT math #904
    • Renamed VT_ARRAY to avoid conflicts with windows.h
    • Added preliminary support for troubleshooting
    • [BETA] IdentifierSpaced compilation error when declaring variable #903
    • Add support for keyword CHAR (SB) #817


  • UPDATE [rev. 20240726] BETA


    commit: 11125b383 (on github)
    • Check correctness of temporary path #902
    • Fixed switch to text mode under vic2
    • Add support for pragma NEWLINE ON CENTER (TSB) #815
    • Add support for keyword PROC (SB) #885
    • Add support for keyword NRM (command) (SB+TSB only) #879
    • Add support for keyword AT (string swap) (TSB) #809
    • Added support for SWAPping strings
    • Add support for pragma OPTION CALL (SB+TSB) #813
    • PROCEDURE cannot return FLOAT #901
    • Fixed c128 PAPER command
    • Fixed vic2 set paper color


  • UPDATE [rev. 20240725] BETA


    commit: 4912cdf65 (on github)
    • Aliasing of keyword PAINT (SB+TSB only) #900
    • Add support for keyword KEYGET (TSB only) #855 #899
    • Implicit type casting upgrade
    • PROCEDURE cannot return FLOAT #901
    • Fixed c128 PAPER command
    • Fixed vic2 set paper color
    • Add support for keyword DO NULL (TSB only) #832
    • Add support for pragma CLS #898


  • UPDATE [rev. 20240723] BETA


    commit: 5004c2713 (on github)
    • Add support for keyword D!POKE (TSB only) #828
    • Add support for keyword D!PEEK (TSB only) #827
    • Add support for pragma CLS #898
    • Add support for keyword HIRES (SB) #849
    • Fixed c128 PAPER command.
    • Fixed vic2 PLOT based on paper color.
    • Fixed vic2 set paper color.
    • Add support for keyword REC (SB) #887
    • Add support for keyword BLOCK (SB) #812
    • Fixed PLOT on vic2 to clear the pixel is PEN is equal to background.
    • Allow PRINT under double buffer mode #730


  • UPDATE [rev. 20240717] BETA


    commit: c5dfd0405 (on github)
    • Fixed PLOT color under zx
    • Fixed PLOT under tms9918 (coleco,msx1,sg1000,sc3000)
    • Fix TEXTMAP AT / BITMAP AT under 6847 #800
    • Fixed image used flag on assignment-by-copy under vic2
    • Fixed PRINT with image used under vic2
    • Fixed NEW IMAGE with image used under vic2
    • Fixed GET IMAGE with image used under vic2
    • Fixed SPRITE under vic2
    • Fixed constant emission in empty procedures
    • Fixed CONSOLE under atari/atarixl text mode
    • Fixed PALETTE / COLOR under atari/atarixl
    • Fixed FOR...NEXT multithreaded
    • Fixed FOR...NEXT if variable is named
    • Fixed EVERY CALL calling procedure name
    • Fixed dynamic vars on atari/atarixl
    • Fixed PALETTE / COLOR under atari/atarixl
    • Fixed dynamic implicit variable definition (variable_export)
    • Fixed IMAGE STORAGE
    • Fixed FOR...NEXT if variable is named
    • Fixed dynamic vars on atari/atarixl


  • UPDATE [rev. 20240714] BETA


    commit: d4973b613 (on github)
    • Add pragma for start address (DEFINE PROGRAM START) #801
    • Add pragma for analogic joystick samples count #787
    • Add support for analogic joystick #786
    • Fixed FOR...NEXT on index variable undefined
    • Fixed BIT instruction under 6809
    • Fixed PLOT on 4 colors resolution on gime
    • Fixed bit check extended on little endian targets (coco3 and so)
    • Refactorized buffered (deferred) output
    • Fixed FOR...NEXT step
    • Fixed FOR...NEXT on multithread
    • Fixed starting number of threads
    • Fixed FOR...NEXT
    • STEP not working for the Dragon target #802
    • Fixed FOR...NEXT backward
    • Fixed SCANCODE under atari/atarixl
    • Fixed signed conversion of float from constant under 6502
    • Fixed SIGNED BYTE to FLOAT conversion under 6502
    • Fixed CONSOLE under atari/atarixl text mode
    • Added support for SPRITE ON / SPRITE OFF / SPRITE ENABLE / SPRITE DISABLE on all targets
    • Fixed PROCEDURE / ON PROC if procedure name is a reserved word
    • Fixed horizontal offset on MSPRITE on vic2
    • Fixed MSPRITE conversion on vic2
    • Fixed calling sequence for multiplexed sprite on vic2
    • Added check for datatype on direct assignment
    • Fixed REM decoding using CR on Windows systems


  • UPDATE [rev. 20240702] BETA


    commit: 09b4c59c2 (on github)
    • Fixed REM decoding using CR on Windows systems
    • Fixed inversion joystick detection (up/down) on coco3
    • Fix joystick count under to8
    • Fixed WAIT MILLISECONDS on msx1
    • Fixed interrupt service on msx1 - avoid to double increment timer
    • Implemented CLINE on zx
    • Fixed tms9918 source code for 32 bit compilation
    • Fixed 6847 source code for 32 bit compilation
    • Fixed array write for BIT datatype
    • Fixed array definition inside memory area for c64
    • Fixed vic2 source code for 32 bit compilation
    • Fixed dynamic string garbage collection on z80


  • UPDATE [rev. 20240629] BETA


    commit: 1f7751fa5 (on github)
    • Added JOY COUNT and JOYCOUNT as constant factors.


  • UPDATE [rev. 20240628] BETA


    commit: e1c231b4d (on github)
    • Fixed (not) support for keyboard on sg1000
    • Added support for ON JOYSTICK [NOT] AVAILABLE
    • Avoid emit code for RETURN if inside an empty procedure
    • Emit error if CASE ELSE is already used
    • BITMAP ENABLE without parameters is SCREEN #3 under pc128op/to8
    • BITMAP ENABLE without parameters is SCREEN #0 under cpc
    • Fixed JOY COUNT when no joystick is available (c128z, mo5, pc128op)
    • Fixed CLINE under cpc
    • On Commodore targets missing label crashes IDE #798
    • Fixed JOY under zx (returns always 0)
    • Fixed KEY STATE / KEY PRESS code for key cursors under zx
    • Added value on negative constant error (E071)
    • Fixed CONSOLE support under zx
    • Fixed keyboard codes for sc3000
    • Fixed CLINE on pc128op
    • Fixed KEY STATE and KEY PRESS under msx1
    • Fixed (not) supporting JOY on mo5
    • Fixed KEY STATE under mo5
    • Fixed garbage collection under mo5, pc128op and to8
    • Fixed joystick support con d32/d64
    • Fixed joystick support con coco3
    • Space optimization: removed variables if timers are not used
    • Fixed FREE_STRING under z80
    • Added default palette on tms9918
    • Space optimization: removed variables if timers are not used (coleco)
    • Fixed KEY STATE on atari/atarixl
    • Fixed scancode on atari/atarixl
    • Fixed z80_move_8bit_indirect under z80
    • Fixed move_8bit_with_offset under z80
    • Fixed image conversion on mode 1 on cpc
    • Fixed z80_move_8bit_indirect under z80
    • Fixed image color decoding on cpc chipset


  • UPDATE [rev. 20240623] BETA


    commit: 8485a613c (on github)
    • SCREEN COLUMNS returns wrong value #792
    • PRINT @ not working #791
    • Fixed BANK READ on pc128op, mo5 and to8.


  • UPDATE [rev. 20240622] BETA


    commit: e6c1a8c8a (on github)
    • Fixed cpu_move_8bit_with_offset2 on 6809
    • Space optimization with multidimensional array under 256 bytes
    • Fixed PEN color on PRINT on vic2 graphics mode
    • Fixed PUT IMAGE under vic2 with constant usage
    • Space optimization avoid calculation if ORIGIN / RESOLUTION is unused
    • Space optimization for GR LOCATE
    • Space optimization in calling PUT IMAGE under vic2 (c64, c64reu, c128)
    • Space optimization removed unused variables
    • Space optimization: add rule to 6502 optimizer


  • UPDATE [rev. 20240621] BETA


    commit: 8980f1848 (on github)
    • Space optimization: remove save / restore page 0 (c64, c128, c64reu)
    • Moved MEMORIZE / REMEMBER support on actual CONSOLE
    • Space optimization and removed vestigial code
    • Space optimization if PLAY is not called (6502, 6809)
    • Space optimization if DRAW is not called (6502, 6809)
    • Fixed MAX STRINGS variable on 6502
    • Fixed FREE STRING variable on 6502
    • Space optimization if timers are not used (6502, 6809)
    • Fixed CONSOLE print under vic2 graphic mode
    • Fixed atlas cut size of frames
    • Check presence of line numbers
    • Initialized to zero variables should be not reinitialized #788
    • Fixed starting vertical scroll position under vic2


  • UPDATE [rev. 20240617] BETA


    commit: 47ff89d96 (on github)
    • Fixed variable generation under c128, c64, c64reu
    • Implemented await for done on MSPRITE UPDATE
    • Fixed optimizer for 6502
    • Added support for margin and spacing in TSX files
    • Added preliminary support for image and atlas descriptors
    • Refactorized file_get_size
    • Error if (C)SPRITE is mixed with MSPRITE
    • Removed (useless) support for multicolor and doubling sprites (vic2)
    • Optimized image usage under vic2
    • Added support for OFFSET and ORIGIN on IMAGES / SEQUENCE LOAD and STORAGE
    • Fixed image size asserts referred to frame width / height
    • Added support for MSPRITE SYNC / ASYNC pragma
    • Fixed PRINT color PEN under vic2 graphic mode
    • Reset MSPRITE update flag on startup (vic2)
    • Added support for SPRITE ENABLE / DISABLE on multiplexed sprites
    • Fixed MSPRITE init (vic2)
    • Fixed MSPRITE decoding on vic2


  • UPDATE [rev. 20240609] BETA


    commit: f5be006d1 (on github)
    • Fixed PEN under c128
    • Fixed protothreading under 6502 after MSPRITE base zero register refactoring
    • Fixed IRQ management under c64reu after MSPRITE refactoring
    • Fixed dynamic string under 6502 after MSPRITE base zero register refactoring


  • UPDATE [rev. 20240604] BETA


    commit: 9012efd09 (on github)
    • Added support for IGNORE COLOR on CSPRITE/MSPRITE definition
    • Added preliminary support for sprite multiplexing under vic2 (c64, c64reu, c128)
    • Fixed SCANCODE / INKEY under c128
    • Refactorized SPRITE code on vic2


  • UPDATE [rev. 20240601] BETA


    commit: 7cdc4b714 (on github)
    • Fixed palette detection on vic2 using pepto values
    • Fixed PRINT under vic2 and graphic modes
    • Fixed CENTER instruction for CONSOLE support
    • Fixed LOCATE instruction for CONSOLE support


  • UPDATE [rev. 20240524] BETA


    commit: 38a69c681 (on github)
    • Add CONSOLE to delimit video surface #366
    • CLINE should support graphical modes #145
    • Added support for ENABLE INTERRUPT / DISABLE INTERRUPT
    • EI/DI implementation for mc6809 #185
    • Fixed PRINT on vic2 (foreground color)


  • UPDATE [rev. 20240523] BETA


    commit: 1141d9dfa (on github)
    • Refactorized setup_embedded for cpu type
    • Migrate inline code to library call on demand #134 #135 #136 - swap
    • Fixed SWAP variable usage
    • Added support for COMBINE NIBBLE instruction
    • Migrate inline code to library call on demand #134 #135 #136 - combine nibbles
    • Migrate inline code to library call on demand #134 #135 #136 - string flip
    • Migrate inline code to library call on demand #134 #135 #136 - bit manipulation


  • UPDATE [rev. 20240520] BETA


    commit: d5955613d (on github)
    • Migrate inline code to library call on demand #134 #135 #136 - bit manipulation
    • Fixed disruptive optimization rule on 6809
    • Fixed z80_bit_inplace_8bit_extended_indirect under z80
    • Removed unused ML instruction cpu_is_negative
    • Fixed FP constant calculation on 6502
    • Fixed array definition under cpc
    • Added LINE syntax without color
    • Fixed expansionBanks decoding in embedded language
    • Add support for CONSOLE command #165 - fix gtia
    • Separated DRAW and LINE syntax
    • Added support for data type suffix on FOR / NEXT instructions
    • Allow support for not expanded mo5


  • UPDATE [rev. 20240518] BETA


    commit: ca11dba44 (on github)
    • Implement scanline in WAIT VBL for ef936x #772


Any problem?

If you have found a problem, if you think there is a bug or, more simply, you would like something to be improved, write a topic on the official forum, or open an issue on GitHub.
Thank you!