Hi Prasana,
thanks a lot for your bug report. It's nice to see that toke is widely used nowadays and I'm glad if we can get the last few bugs out of it.
If the msb of *opc is set 1(Value >0 0x8yyy), the offs gets changed to ffff8yyy.
Changing offs to u16 and receive_offset returning value of u16 type would solve the problem. Change the prototype for receive_offset in emit.h as well.
I've changed the code in a slightly different way, doing the same thing though.
- Create a fcode source file with around 7000 variables.
Are you sure you mean variables? A single FCode program has a limitation of 2048 variables due to the space reserved for them (Local FCode numbers go from 0x800 to 0xfff).
The problem you described occurs though if your bytecode size exceeds 0x7fff bytes.
I fixed this in openbios--main--patch-21. Now you get an error message if you exceed the maximum word count and case..endcase constructs are working for code larger than 32KB ;-)
You can also download toke-0.6.9 in a bit.
Stefan