Compounded Let statments emook Junior Member Posts: 31 Threads: 13 Joined: Dec 2016 Reputation: 4 02-02-2017, 01:17 PM Hello, I've noticed that somthing that is possible is Sinclair Basic doesn't seem possible in Boriel.... eg: Sinclair Basic 10 LET x=0 20 LET x=x+1-(50 AND x=50) 30 PRINT AT 0,0;x, 40 GOTO 20 As you can see x=x+1 will increment minus 0 unless x=50 then it will subtract 50. Great for loops and counters. In ZXB I am having to expand this into IF THEN statements. x=0 x=x+1 myloop: IF x=50 THEN x=0 END IF Print at 0,0;x, GOTO myloop boriel Administrator Posts: 1,757 Threads: 55 Joined: Aug 2019 Reputation: 24 02-03-2017, 11:03 PM True hock: I didn't know this behaviour. Where can I find more info about this? anyway, the fastest way to this is: Code:```DIM x AS Byte = 0 myloop: x=(x+1) MOD 50 PRINT AT 0,0;x, GOTO myloop``` emook Junior Member Posts: 31 Threads: 13 Joined: Dec 2016 Reputation: 4 02-05-2017, 01:47 AM It is mentioned very briefly in the ZX Basic manual, http://www.worldofspectrum.org/ZXBasicM ... hap13.html But turns out to be far more useful. See this program that creates the +2 test screen : 10 FOR l=0 TO 21 : FOR i=7 to 0 STEP -1 : PRINT INK (l and l<8); PAPER i;("19" AND l<8); (" " AND l>= 8 ) ; BRIGHT 1; ("86" AND l<8); (" " AND l>=8);: NEXT i : NEXT l You can see a live version of it here : Run demo boriel Administrator Posts: 1,757 Threads: 55 Joined: Aug 2019 Reputation: 24 02-05-2017, 09:07 PM Ok. I see. I'll try to implement that, but with only in "--sinclair" mode. Otherwise bool comparisons will be slower :roll: Perhaps it would be better to implement the ? : operator like in C?? What do you people think? Haplo Junior Member Posts: 9 Threads: 3 Joined: May 2015 Reputation: 0 02-07-2017, 10:03 AM boriel Wrote:Perhaps it would be better to implement the ? : operator like in C?? I think that is a good idea, it could help to do more readable the code. britlion Posting Freak Posts: 805 Threads: 135 Joined: Apr 2009 Reputation: 5 09-19-2018, 08:51 PM Just following up a few threads. Not sure if this got implemented. It's a /very/ common way to do things like keys: Code:`LET x=x+(Inkey\$="P")-(Inkey\$="O")` And depends on the fact that in Sinclair basic, False equates to zero and true equates to 1. This is not stricktly speaking true in Boriel's Basic. It probably should work in sinclair mode. Perhaps Code:`x=x+(SGN (key="p") - (SGN (key="o"))` might be the same logical result, given false=0 and I think true is > 0 ? boriel Administrator Posts: 1,757 Threads: 55 Joined: Aug 2019 Reputation: 24 09-20-2018, 10:45 AM Or using --strict-boolean which ensures true is always 1 (with a little performance overhead). Anyway, boolean operations where slightly optimized upon 1.7.x+ So even without --strict-boolean many of them returns 1 for true. « Next Oldest | Next Newest »