@snail_
The way RGB(I MOD 2<<8,(2AND I)<<7,I>>2<<8) works is by converting 3 bit RGB into 24 bit RGB
it's basically the same as RGB((I AND 1)*255,(I AND 2)/2*255,(I AND 4)/4*255)
Oh, and I found a bug with the fill tool
it instantly fills the entire undo buffer; you should call D before or after the GPAINT
Maybe use a short function that won't do anything, like D"CLS"
Also, you can shorten the color/tool selection code if you do something like:
C=C+(8AND B)/8-(4AND B)/4AND 7 T=T+(8AND B&&T<5)-(4AND B&&T>0)Rather than using GOSUB/RETURN, your tool subroutines can be something like
GOTO"@"+STR$(T) @0 TOUCH OUT A,U,V GLINE X/2,Y/2,U/2,V/2 X=U Y=V WAIT ON A GOTO @E,@0 'rather than using a WHILE loop @1 D"L" GLINE X/2,Y/2,U/2,V/2 GOTO @E ... @EPrinting spaces is shorter than LOCATE:
LOCATE C,?"^" 'displaying the selected color ?" "*C;"^"Here's some more changes I made: Q5SEX3, I think there's enough room to add another tool (I think a larger brush would be nice, or maybe a way to save/load drawings)