02-06-2010, 12:05 PM
Okay, I've made several posts and it's all getting confusing. Here's what seems to be wrong:
- * [Tested Fixed in 1.25 Beta r1489]@variablename - Seems to point at one byte BELOW the correct one.
* [Can't replicate cleanly. Needs proved example of error.] [This was probably caused by the stack erorr which is fixed in r1489 ] CHR / CHR$ - CHR$(variable) seems to crash sometimes. CHR$(number) works fine.
* [Tested Fixed in 1.25 Beta r1489] BOLD and ITALIC cannot be used as temporary attributes (BOLD 1 works. PRINT BOLD 1;"Hello" does not.) The compiler issues some very cryptic error messages about this.
* -O2 and -O3 are likely to fail to compile what -O1 and no optimization compiles perfectly. (Seems to fail in 'update_goes_and_comes' in optimizer.pyc on larger files)
* [Tested Fixed in 1.25 Beta r1489]SHL and SHR don't work for Integers (reported by LCD)
*[Tested Fixed in 1.25 Beta 1] Comparisons : the Boolean logic for >= for type FIXED is bugged. (it always returns true)
*[Tested Fixed in 1.25 Beta 1] uByte seem to have something wrong on the comparison front as well:
Code:DIM ub as uByte
DIM b as byte
DIM ui as uInteger
DIM i as integer
DIM ul as uLong
DIM l as LONG
DIM fi as fixed
DIM fl as float
print ub,b,ui,i,ul,l,fi,fl
if 0<=20 then print "0<=20" : END IF
if ub <= 20 then print "ub <= 20" : END IF
if b <= 20 then print "b <= 20" : END IF
if ui <= 20 then print "ui <= 20" : END IF
if i <= 20 then print "i <= 20" : END IF
if ul <= 20 then print "ul <= 20" : END IF
if l <= 20 then print "l <= 20" : END IF
if fi <= 20 then print "fi <= 20" : END IF
if fl <= 20 then print "fl <= 20" : END IF
NOT strictly speaking broken, but serious "Quality of life" issues:
* The compiler's errors could be a lot more helpful!
1> Instead of "unexpected end of file" how about "You started a FOR loop on line 30 that never finished" and "You have an IF on line 100 that doesn't have an END IF" - if the compiler could say what statement or parenthesis isn't closed that would help me track down about 90% of my bugs. As it is, I type a line, compile, type a line, compile and so on - otherwise I'd never find the problem! [I'm REALLY bad at forgetting END IF]
2> Could we get a warning any time a variable is used that hasn't been DIM first? Or just plain not allow it, even? A mistyped variable (vectory instead of vectorY) is very hard to find if the compiler simply creates it without telling me. So the program compiles and runs, but the math isn't working right...
* The assembler seems to be very slow - zxb --asm program.bas returns to the command prompt within a few seconds. If we ask the assembler to assemble the file as well, it can stay away for several minutes.