10-17-2014, 07:50 PM
I found an error in ZX BASIC optimizer. Take a look at this test program:
This program produces the expected result if you compile it as follows:
However it will refuse to compile if you use this instead:
In this latter case it will produce this error message:
EDIT: Tested using latest ZX BASIC version 1.4.0s1898.
Code:
GO TO 10
sub FASTCALL test(flag AS UBYTE)
asm
cp 1
jp m,45000
jp 50000
end asm
end sub
10 POKE 50000,201: POKE 45000,201
test(1)
This program produces the expected result if you compile it as follows:
Code:
zxb.exe -t -O2 prog.bas
However it will refuse to compile if you use this instead:
Code:
zxb.exe -t -O3 prog.bas
In this latter case it will produce this error message:
Code:
C:>zxb.exe -t -O3 prog.bas
Traceback (most recent call last):
File "zxb.py", line 348, in <module>
File "zxb.py", line 301, in main
File "optimizer.pyc", line 2287, in optimize
File "optimizer.pyc", line 1493, in update_goes_and_comes
KeyError: '45000'
EDIT: Tested using latest ZX BASIC version 1.4.0s1898.