Releases: nanochess/CVBasic
CVBasic v0.9.1
Changes in v0.9.1:
o Added support for MSX2 using --msx2
o MSX2: It supports the PALETTE statement.
o MSX2: It supports MODE 4, extended sprites, DEFINE SPRITE COLOR, BORDER, and SCROLL.
o MSX2/SMS: Added PALETTE DEFAULT.
o MSX2: Added examples viboritas_msx2.bas and palette_msx2.bas.
o Added note about support of Blue and Purple buttons (Super Action Controllers for Colecovision)
o Added support for spinners and roller controller using CONT1.SPINNER and CONT2.SPINNER (Colecovision)
o Z80: Added small optimization for PRINT, saving one byte for each string printed.
o NES: Solved important bug where VPOKE/PRINT would corrupt some variables, and arrays could be allocated to the wrong address.
CVBasic v0.9.0
o Added support for NES/Famicom using --nes
o MSX: Added support for Konami mapper using -konami
o Solved bug in DEF FN precedence inside expressions.
o Solved bug in > operator with 16-bit variable.
o NABU: Solved bug where compilation would warn of both sound chips.
o TI-99/4A: Corrected bug in CHR$ and DEFINE VRAM READ.
o TI-99/4A: Solved bugs doing operations with 8-bit variables and 16-bit values.
o TI-99/4A: Solved bug in multiplication by 1.
o TI-99/4A: Solved bug in SELECT CASE.
o TI-99/4A: Solved bug in DEFINE COLOR PLETTER.
o TI-99/4A: Optimizes more operations with constants.
o TI-99/4A: Added more optimization using register labeling, saves many bytes, and speeds up.
CVBasic v0.8.0
o Added support for Sega Master System using --sms
o Added support for VDP.STATUS (for reading VDP status)
o Added SELECT CASE / END SELECT
o Added support for CHR$ in PRINT (for portable printing of arbitrary characters in the current cursor position)
o Added SCROLL statement for Sega Master System.
o Added BORDER flags for Sega Master System.
o Added PALETTE statement for Sega Master System.
o Adapted BITMAP, SCREEN, and SPRITE for Sega Master System.
o Optimizes code using directly DI/EI instructions in Z80 platforms if possible.
CVBasic v0.7.1
o Added support for NABU PC using --nabu (with -cpm option)
o Added support for USR/CALL with up to 5 arguments (only Z80)
o Added DEFINE VRAM READ to read VRAM.
o Added new example brinquitos.bas
o Added new example vramcopy.bas
o Optimizes division by 16.
o More optimization.
CVBasic v0.7.0
Changes in v0.7.0:
- Added support for Tatung Einstein using the switch --einstein
- Added support for Casio PV2000 using the switch --pv2000
- Added support for Hanimex/Soundic Pencil II using the switch --pencil
- Added support for Texas Instruments TI-99/4A using the switch --ti994a
- Protected the AY-3-8910 mixer so you don't need to worry anymore of putting the correct bits 6-7.
CVBasic v0.6.0
This release adds support for Creativision / Dick Smith's Wizzard using a new library and a new 6502 backend, the target is selected with the --creativision switch.
Added also support for Sord M5 computer (--sord switch) and Memotech MTX computers (--memotech switch).
Added new syntax VDP(2) = 7 for setting VDP registers.
Support for 16K of RAM in MSX (using -ram16 switch)
Optimizes 8-bit division by power of two, pointer subtraction, and added a peephole optimizer for Z80 code.
CVBasic v0.5.1
I just have released the newest version 0.5.1
Now with support to target Spectravideo SVI-318/328 computers using the --svi switch. It is amazing to create a game and target four platforms at a time! Notice the Spectravideo doesn't support bank-switching because there isn't a PCB cartridge supporting it.
The highlights are SIGNED and UNSIGNED keywords for typing variables. Remember SIGNED is a little slower for comparisons, but it also comes with signed division, and signed modulo.
Added OPTION EXPLICIT to make it required to declare all variables using DIM (much in the style of C), also OPTION WARNINGS to avoid generating warnings altogether.
This release also solves several bugs (Megacart not working with SGM, SG1000 bootup, and SC3000 joystick not working).
It also includes more extensive optimization, typically saving dozens of bytes up to a few hundred.
CVBasic v0.5.0
This new version implements bank-switching.
Bank-switching is supported for Colecovision with Megacart-style banking, for SG1000 using Sega mapper ($fffe), and for MSX using ASCII16 mapper.
Changes in v0.5.0:
- New statements BANK ROM (for selection ROM size from 128K, 256K, 512K or 1MB!), BANK to select a bank for following code/data, and BANK SELECT to select a bank to access.
- New statement SPRITE FLICKER ON/OFF.
- Optimization of code generation for NEXT.
- Optimization of several 8-bit and 16-bit operations in common usage.
- Added patch to make SG1000 compilations compatible with SC3000.
Enjoy it!
CVBasic v0.4.3
New changes in this version v0.4.3:
- DATA statements can now use constant expressions.
- Support for DATA VARPTR (creating tables of addresses).
- Optimized access to arrays when using constant index (so fast as variables).
- Implemented USR and CALL to simplify calling assembler language.
- Added support for formatted PRINT with leading zeros or spaces, for example, PRINT AT 5,"Score:",<5>#score
- Emits warnings for unused variables.
- Emits warnings for GOTO jumping to PROCEDURE, or GOSUB to non-PROCEDURE.
- Generates error codes for automated builds.
- Super Game Module support added (using --sgm option on compilation). This is 24 KB. of RAM! And compatible with Coleco ADAM ;)
- It includes the CVBasic source code in the ASM output so you can see how things are compiled.
- Background color default is transparent, so you can use BORDER to change the color of the full screen.
- Updated manual.
- Random numbers are more random because the video interrupt increments the lfsr.
- Reduced size of the prologue, saves at least 140 bytes.
- Speed up of mode setup, and VRAM copying.
- Sega SG-1000 ROMs save around 32 bytes.
CVBasic v0.4.2
New changes in this version v0.4.2:
- Solved optimization bugs.
- MSX target now can use the whole 32K of ROM.
- Solved a bug where CONT and CONT2 didn't worked on MSX.
- Solved a bug where the music player would fail depending on the final program size.
- Solved a bug where ON GOTO/GOSUB would trigger a debugging message.