I have a uQLx on a Pi0-W (which, I measured, runs 20 times faster than my BBQL) and I tested today the 8 colors mode which obviously works OK.
Code: Select all
( COLOR CONSTANTS )
0 CONSTANT BLACK
1 CONSTANT BLUE
2 CONSTANT RED
3 CONSTANT MAGENTA
4 CONSTANT GREEN
5 CONSTANT CYAN
6 CONSTANT YELLOW
7 CONSTANT WHITE
HEX
( 4COLORS TABLE )
CREATE 4COLORS
7F7F , BFBF , DFDF , EFEF , F7F7 , FBFB , FDFD , FEFE ,
0080 , 0040 , 0020 , 0010 , 0008 , 0004 , 0002 , 0001 ,
8000 , 4000 , 2000 , 1000 , 0800 , 0400 , 0200 , 0100 ,
8080 , 4040 , 2020 , 1010 , 0808 , 0404 , 0202 , 0101 ,
( 8COLORS TABLE )
CREATE 8COLORS
3F3F , CFCF , F3F3 , FCFC , 0040 , 0010 , 0004 , 0001 ,
0080 , 0020 , 0008 , 0002 , 00C0 , 0030 , 000C , 0003 ,
8000 , 2000 , 0800 , 0200 , 8040 , 2010 , 0804 , 0201 ,
8080 , 2020 , 0808 , 0202 , 80C0 , 2030 , 080C , 0203 ,
DECIMAL
( DOT for MODE 4 )
: 4DOT ( c,x,y --- )
128 * SWAP 8 /MOD 2* ROT + 0 131072. D+
2DUP A@ 3 PICK 2* 4COLORS + @ AND 4 PICK 0>
IF 4 ROLL 2/ 16 * 4 ROLL 2* + 4COLORS + @ OR
ELSE >R 2SWAP 2DROP R>
THEN ROT ROT A! ;
( DOT for MODE 8 )
: 8DOT ( c,x,y --- )
128 * SWAP 4 /MOD 2* ROT + 0 131072. D+
2DUP A@ 3 PICK 2* 8COLORS + @ AND 4 PICK 0>
IF 4 ROLL 8 * 4 ROLL 2* + 8COLORS + @ OR
ELSE >R 2SWAP 2DROP R>
THEN ROT ROT A! ;
VARIABLE COLOR
( TEST FOR 4DOT - syntax : black, red, green or white 4TDOT )
: 4TDOT ( color --- ) TIME ROT
COLOR ! 256 0 DO 512 0 DO COLOR @ I J 4DOT LOOP LOOP
TIME 2SWAP D- KEY 2DROP . ;
( TEST FOR 8DOT - syntax : any of the eight colors 8TDOT )
: 8TDOT ( color --- ) TIME ROT
COLOR ! 256 0 DO 256 0 DO COLOR @ I J 8DOT LOOP LOOP
TIME 2SWAP D- KEY 2DROP . ;
( ============================================================ )
( Creating a TARTAN with up to 4 or 8 colors, depending on MODE )
VARIABLE L
: WARP HERE 1 ALLOT 0 L ! ;
: WEFT
CREATE DUP C@ DUP C, HERE SWAP DUP * ALLOT
OVER C@ 0 2DUP
DO 2DUP
DO I J + 4 MOD 2/
IF I ELSE J THEN
4 PICK 1+ + C@
4 + PICK
4 PICK C@ I * J +
4 PICK + C!
LOOP
LOOP
2DROP 2DROP ;
: TARTAN CREATE WARP DOES> WEFT ;
: | SWAP 0 DO DUP C, 1 L +! LOOP DROP ;
: END_TARTAN L @ SWAP C! ;
( WEAVEing it on full 512x256 4 colors screen )
: 4WEAVE
DUP C@ L ! 1+ 256 0
DO I L @ MOD L @ * 512 0
DO 2DUP I L @ MOD + + C@
I J 4DOT
LOOP DROP
LOOP KEY 2DROP ;
( WEAVEing it on full 256x128 8 colors screen )
: 8WEAVE
DUP C@ L ! 1+ 128 0
DO I L @ MOD L @ * 256 0
DO 2DUP I L @ MOD + + C@
I J 2* >R 2DUP R@ 8DOT R> 1+ 8DOT
LOOP DROP
LOOP KEY 2DROP ;
CR CR .( Some tests ! ) CR
TARTAN 4TWARP
8 0 | 8 1 | 8 2 | 8 3 |
END_TARTAN
BLACK RED GREEN WHITE 4TWARP 4TWEFT
.( in MODE 4, type : "4TWEFT 4WEAVE" ) CR
TARTAN 8TWARP
8 0 | 8 1 | 8 2 | 8 3 | 8 4 | 8 5 | 8 6 | 8 7 |
END_TARTAN
BLACK BLUE RED MAGENTA GREEN CYAN YELLOW WHITE 8TWARP 8TWEFT
.( in MODE 8, type : "8TWEFT 8WEAVE" ) CR
.( ... and create your own TARTANs ) CR CR
TARTAN DOG'S 4 0 | 4 1 | END_TARTAN BLACK WHITE DOG'S TOOTH
END_FILE