Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 267
» Latest member: ConradoBadenas
» Forum threads: 1,083
» Forum posts: 6,474

Full Statistics

Online Users
There are currently 205 online users.
» 0 Member(s) | 202 Guest(s)
Baidu, Bing, Google

Latest Threads
Old zxbasic game errors
Forum: Help & Support
Last Post: boriel
2 hours ago
» Replies: 7
» Views: 107
Error: Undefined GLOBAL l...
Forum: Help & Support
Last Post: ardentcrest
2025-11-04, 05:46 PM
» Replies: 3
» Views: 99
A Fast(er) Plot Routine f...
Forum: How-To & Tutorials
Last Post: tubz74
2025-10-30, 03:16 PM
» Replies: 2
» Views: 149
Hall of Fame - Include fo...
Forum: How-To & Tutorials
Last Post: tubz74
2025-10-28, 03:48 PM
» Replies: 0
» Views: 87
[SOLVED] Array layout bug...
Forum: Bug Reports
Last Post: Zoran
2025-10-25, 05:48 PM
» Replies: 2
» Views: 204
3DOS Commands?
Forum: Help & Support
Last Post: boriel
2025-10-06, 02:54 PM
» Replies: 3
» Views: 362
How to open fuse as an ex...
Forum: How-To & Tutorials
Last Post: zedex82
2025-10-05, 07:36 PM
» Replies: 2
» Views: 270
CLS/Fade out ASM Sub-rout...
Forum: How-To & Tutorials
Last Post: tubz74
2025-10-05, 03:39 PM
» Replies: 2
» Views: 267
ZX Basic Studio Bugs
Forum: Bug Reports
Last Post: Duefectu
2025-09-23, 04:07 PM
» Replies: 5
» Views: 1,074
Printing with FZX
Forum: Help & Support
Last Post: boriel
2025-07-17, 10:08 PM
» Replies: 1
» Views: 1,959

 
  Version 1.1.4 released!
Posted by: boriel - 2009-03-30, 07:46 AM - Forum: ZX Basic Compiler - No Replies

Changes from Version 1.1.2 to 1.1.4

  • + The peephole optimizer has been enabled and seems to be working
    reasonabily well (use -O3 for higher optimization).
  • ! When a DIV BY ZERO error occurs with floating point numbers the program
    crashes and resets the computer. This behaviour has been fixed
    and now returns 0 value and sets the error code 6 (Numbert Too big)
    in the ERR_NR system variable.
  • * Refactorization of the assembler and compiler so they now
    shared the OPTIONS in a better way (still to be finished). This
    makes easier to program future compiler options. Now also --debug
    flag is additive, showing more verbosity the more it is used.
  • + Memory optimization: The PRINT routine (which is about 1K) is not
    included if not USED.
  • ! Fixed a bug in negative constant integer typecasting (Thanks to LCD
    at WOS for reporting it! ;-)). It was causing decremental FOR..NEXT
    to fail.
  • ! Scientific notation numbers (e.g. 2e10) were not correctly parsed.
    Fixed. Thanks again to LCD. ;-)
  • + Added TAB compatibility for the PRINT command (both as a command
    and as a CHR$ control character).
  • * PRINT code optimized for size, maintaining speed.

====
TODO:
  • Some little more peephole optimizations.
  • Implementation of SAVE/LOAD/VERIFY with DATA/CODE/SCREENS (And maybe even the BASIC zone)
  • 8 bits AND/OR/NOT/XOR instructions
  • READ/DATA/RESTORE (mostly for compatibility)
  • CLEAR for filling memory zones.
  • USR n and USR n$ function (mostly for compatibilty)

Print this item

  Version 1.1.1 released!
Posted by: boriel - 2009-03-16, 09:10 AM - Forum: ZX Basic Compiler - No Replies

This version fixed some issues and introduces interesting improvements:

Changes from Version 1.1.0 to 1.1.1

  • !Fixed a bug in CONTINUE DO which was not being correctly compiled
  • +PRINT routines were included even when neither PRINT nor
    drawing primitives were used. Optimized.[/*]
  • ! Fixed a lot of syntax error checkings with array operations.
  • ! Fixed array dimension checking
  • + Expanded syntax: Direct array assignation a = b (being a and b
    arrays of thes same type an size)[/*]
  • ! Fixes an error exception on syntax error for array subscripting.
  • * Changed alloc functions to match the FreeBasic names.
  • * Using a wrong sigil in array declaration is now forbidden.
  • * Better sigils (suffixes) types managements at DIM declarations.
  • * Lot of internal source code refactoring
  • + DIM r AT @a(k0, k1, ...) is allowed (k0, k1, ... constants)
  • ! Fixed a bug for local variables and parameters when the offset is
    very large (> 128)
  • + Enabled the --sinclair flag for automatic sinclair libraries inclusion
  • + Added SetAttr routine whichs changes the attribute of
    screen coordinate (I, J) with the given color attr
    value.
  • ! Fixed a buggy modu16 modi16 implementation that was not compiling
    correctly
  • * Output asm code is now slightly optimized (for speed an memory)
  • ! Fixed a bug in intenger parameters (16 and 32 bits)
  • ! Fixed a compiler crash when using arrays of Fixed Point numbers

Print this item

  Negative STEP does not work (*solved*)
Posted by: LCD - 2009-03-15, 08:03 PM - Forum: Bug Reports - Replies (12)

Hi Boriel, I just trying to write some stuff in ZX Basic compiler 1.1.0, but I ran into some problems:

Code:
x=0
if x=1 then
  print "1"
else if x=0 then
  print "0"
end if

I got the message "Unexpected end of file", so if it is a part of FOR NEXT Loop, I got the message "Unexpected Token 'NEXT' <NEXT>". ELSE alone works, but I was sure, ELSE IF should work too, Or maybe I'm wrong?

Another one: the program does not accept Exponents: 2e4 (=2000) or similar.
And finally:
Negative STEP does not work with integers or long, only with floats or byte:
Code:
dim x as integer

for x=7 to 1 step -1
  print x
next x

The compiler is otherwise fantastic! Please continue your great work!

Print this item

  Version 1.1.0 released!
Posted by: boriel - 2009-03-11, 09:35 AM - Forum: ZX Basic Compiler - No Replies

This version fixed some issues and introduces interesting improvements:

Changes from Version 1.0.9 to 1.1.0

  • SCREEN$ coordinated were swapped. Fixed.
  • DIM .. AT was not correctly working with local vars nor params. Fixed.
  • Added BOLD "attribute".
    Code:
    PRINT BOLD 1; "Hello"
  • Added ITALIC "attribute".
    Code:
    PRINT ITALIC 1; "Hello"
  • Added malloc, free and realloc functions to work with the heap
  • Some code rearrangement
  • The IFDEF directive was not working in the preprocessor. Fixed.
================================================================
Changes from Version 1.0.8 to 1.0.9
  • Fixed a bug which could crash the program if no memory
  • Added better error handler for parameter declaration
  • Added UCase function
  • Added Lcase and fixed ucase to be case insensitive
  • Added MultiKeys Function (similar to FREEBASIC) so multiple keys can be checked at once
  • Added GetKeyScanCodes
  • Added HEX and HEX16 functions to return HEXadecimal string representation of numbers
  • Fixed a bug when a$(n TO) was specified
  • Optimization: Remove unnecessary jumps at function returns.
  • STORE16 now generates a more efficient backend (Z80 ASM) code.
  • Added alias for arrays. Now you can declare:
    Code:
    DIM a(10)
      DIM c at @a
  • Better code generation for STORE32 and STOREF backend
  • Optimized constant array assignation as a direct store.
  • Added constant array Read access optimizations

Print this item

  Version 1.0.8 released!
Posted by: boriel - 2009-03-01, 01:34 AM - Forum: ZX Basic Compiler - No Replies

This release includes new fixes and improvements:

  • Fixed a bug in the PRINT command when printing floating point numbers due to a Spectrum ROM Bug. The temporary attributer were not being used.
  • Fixed a bug in the STR$ function that made the program to freeze and also clears the temporary attributes (related to the ROM bug as above).
  • Fixed a bug in the assembler which, sometimes won't assemble if #init directives were used. Also some code clean up.
  • Now you can enter ink/paper codes and graphic characters ala BASIN (read below)
  • Added shift bit instructions (SHL, SHR)
About the spectrum ROM bug. The original STR$ Basic function clean up the temporary attributes. Try this in your ZX Spectrum:
Code:
10 PRINT PAPER 2; STR$(0)
The bug causes that PAPER 2 has no effect (you should see a "0" over a red background). ZX Basic workaround this bug now.

To enter an UDG character like "A" type \A. For example:
Code:
PRINT "\a": REM This will print UDG "A"
The numeric graphics characters can be obtained using the backslash (as above) followed by two punctuation characters. These ones are: [ ] ['] [:] and [.] characters. Each dot represents a square in the graphic character. Try this:
Code:
10 PRINT "\  \::\:'\:.\..\'."

Print this item

  Version 1.0.7 released!
Posted by: boriel - 2009-02-22, 11:58 AM - Forum: ZX Basic Compiler - No Replies

This release includes new fixes and improvements:

  • Fixes a bug in the DRAW command. The draw implementation was buggy. The new DRAW implementation works ok, and is faster and smaller.
  • Support for DRAW with 3 arguments. Now you can DRAW arcs as in Sinclair BASIC. The routine works exactly as the ZX Spectrum ROM, but also allows drawing in the lower 16 scan lines
  • Optimization: If a function is not called, and you use -O1 (or a higher number), it won't be compiled, allowing saving space
  • Optimization: If a global variable is not used, and you use -O2 (or a higher number), it won't be compiled, allowing saving space
  • Optimization: The code generated for temporary atributes is now smaller and faster
New compiler options:
  • Use --array-base=1 to start arrays at subscript 1 (default is 0)
  • Use -On to enable optimizations. Higher n number leads to higher optimizations

Print this item

  About constants
Posted by: LCD - 2009-02-13, 07:10 PM - Forum: ZX Basic Compiler - Replies (9)

Defining constants with CONST Constant as UByte=0 is not the ideal way, because they can be easy mistaken for variables, and can interfer with variables. So my proposal is to change it to similar way, PureBasic does:
#Constant as UByte=0, and all constants are marked with "#" sign in the front. In PureBasic it is a little different, as the constant and variable types are defined this way: #constant.ub=0 (ub=short for unsigned byte, has to be defined only one time).
apart from this I propose to include build-in constants with ROM Labels and System variables:
#KSTATE=23552, #LASTK=23560, #REPDEL=23561, #REPPER=23562, ...
#start=$0, #error_1=$8, #print_a_1=$10, #get_char=$18
#test_char=$1C, #next_char=$20, #fp_calc=$28, #bc_spaces=$30, ...
Also constants for some other usages:
#False=0, #True=1, #Zero=0
#Black=0, #Blue=1, #Red=2, #Magenta=3,...

Is this a good idea???

Print this item

  Online Documentation (Wiki)
Posted by: boriel - 2009-02-13, 04:31 PM - Forum: Documentation - No Replies

There is (already) a Wiki with the online documentation.

Some users are unaware of this documentation. Please, read there before asking for help since the documentation includes a programming reference and lot of examples, code snippets, etc.

Note: To contribute to the wiki you must register (create an account) in this forum, and later login into the wiki with the same user/pass.

Print this item

  Version 1.0.5 released!
Posted by: boriel - 2009-02-13, 09:33 AM - Forum: ZX Basic Compiler - No Replies

New version 1.0.5 released.

This version fixes very important bugs. Please download this version before reporting problems with the compiler.

Print this item

  BUG report (*solved*)
Posted by: juanjo - 2009-02-03, 03:57 AM - Forum: Bug Reports - Replies (1)

Hola, he estado haciendo un programita con tu lenguaje, que me parece de lo mas interesante, y he dado con un par de bugs. Lo he posteado primero en speccy.org porque aun no conocia este foro, miralo alli por favor:

http://www.speccy.org/foro/viewtopic.php...375#p15541

Gracias

Print this item