100 DEF FN GE(B) = ((V - ( INT (V / (2 ^ (B+1)))) * (2 ^ (B+1))) >= (2 ^ B))
110 DEF FN SE(B) = V + ( NOT FN GE(B)) * (2 ^ B)
120 DEF FN CL(B) = V - ( FN GE(B)) * (2 ^ B)
130 DEF FN XR(B) = V + (2 ^ B) - ( FN GE(B)) * (2 ^ (B+1))
1000 PRINT  CHR$ (4)"PR#3"
1010 TEXT : HOME : VTAB 20: HGR
1020 
1030 REM ****** COLOR BANDS PURPLE BLUE GREEN ORANGE (ORDERED
1040 REM        BY HALF DOT POSITIONS FROM LEFT SIDE OF SCREEN).
1050 HCOLOR= 2: HPLOT 0,0 TO 139,0
1060 HCOLOR= 6: HPLOT 0,1 TO 139,1
1070 HCOLOR= 1: HPLOT 0,2 TO 139,2
1080 HCOLOR= 5: HPLOT 0,3 TO 139,3
1090 HCOLOR= 3: HPLOT 0,4 TO 139,4
1100 HCOLOR= 7: HPLOT 0,5 TO 139,5
1110 HCOLOR= 2: HPLOT 147,0 TO 279,0
1120 HCOLOR= 6: HPLOT 147,1 TO 279,1
1130 HCOLOR= 1: HPLOT 147,2 TO 279,2
1140 HCOLOR= 5: HPLOT 147,3 TO 279,3
1150 HCOLOR= 3: HPLOT 147,4 TO 279,4
1160 HCOLOR= 7: HPLOT 147,5 TO 279,5
1170 REM ****** LABEL THE COLOR LINES WITH THE COLORS USED ON THE LEFT AND
1180 REM        RIGHT SIDE OF THE BYTE BOUNDARY. ALSO LABEL OTHER COLORS.
1190 C$(0) = "P":C$(1) = "B":C$(2) = "G":C$(3) = "O"
1200 VTAB 21
1210 FOR CL = 0 TO 3: FOR CR = 0 TO 3: PRINT "  "C$(CL)C$(CR);: NEXT : NEXT
1220 PRINT " BcOcPsGsOBcBOc"
1230 PRINT "TOP ROW: EVEN BYTE/ODD BYTE"
1240 PRINT "  BOTTOM ROW: ODD BYTE/EVEN BYTE"
1245 PRINT " ";:INVERSE:PRINT "           (PRESS RETURN TO CONTINUE, ANY OTHER KEY TO TOGGLE B&W)           ";:NORMAL
1250 
1260 C(0) = 2:C(1) = 6:C(2) = 1:C(3) = 5
1270 
1280 REM ****** DRAW 2 COLORS SIDE BY SIDE.
1290 REM        LEFT COLOR ON EVEN BYTE, RIGHT ON ODD.
1300 XL(0) = 6:XL(1) = 6:XL(2) = 5:XL(3) = 5
1310 XR(0) = 8:XR(1) = 8:XR(2) = 7:XR(3) = 7
1320 FOR CL = 0 TO 3: FOR CR = 0 TO 3:X = (CL * 4 + CR) * 14
1330 HCOLOR= C(CL): HPLOT X + XL(CL),80 TO X + XL(CL),119
1340 REM GET A$
1350 HCOLOR= C(CR): HPLOT X + XR(CR),80 TO X + XR(CR),119
1360 REM GET A$
1370 NEXT : NEXT
1380 
1390 REM ****** DRAW 2 COLORS SIDE BY SIDE.
1400 REM        LEFT COLOR ON ODD BYTE, RIGHT ON EVEN.
1410 XL(0) = 12:XL(1) = 12:XL(2) = 13:XL(3) = 13
1420 XR(0) = 14:XR(1) = 14:XR(2) = 15:XR(3) = 15
1430 FOR CL = 0 TO 3: FOR CR = 0 TO 3:X = (CL * 4 + CR) * 14
1440 HCOLOR= C(CL): HPLOT X + XL(CL),120 TO X + XL(CL),159
1450 REM GET A$
1460 HCOLOR= C(CR): HPLOT X + XR(CR),120 TO X + XR(CR),159
1470 REM GET A$
1480 NEXT : NEXT
1490 
1500 REM ****** DRAW DARK BLUE, BROWN LINES
1510 REM        ONE COLOR BEFORE NEXT BYTE HAVING CLEARED HI-BIT
1520 HCOLOR= 7: HPLOT 230,80 TO 230,119: HPLOT 237,120 TO 237,159
1530 
1540 REM ****** DRAW LIGHT BLUE, YELLOW LINES (ONE COLOR)
1550 REM        ONE COLOR BEFORE NEXT BYTE HAVING SET HI-BIT
1560 HCOLOR= 3: HPLOT 244,80 TO 244,119: HPLOT 251,120 TO 251,159
1570 REM GET A$
1580 HCOLOR= 4: HPLOT 245,80 TO 245,119: HPLOT 252,120 TO 252,159
1590 REM GET A$
1600 
1610 REM ****** DRAW PINK, AQUA LINES
1620 REM        TWO COLORS BEFORE NEXT BYTE HAVING CLEARED HI-BIT
1630 HCOLOR= 7: HPLOT 257,80 TO 257,119: HPLOT 258,80 TO 258,119
1640 REM GET A$
1650 HCOLOR= 7: HPLOT 264,120 TO 264,159: HPLOT 265,120 TO 265,159
1660 REM GET A$
1670 REM ****** CLEAR AND SET HIGH BITS OF SOME ROWS OF EVEN/ODD COLOR LINES.
1680 FOR I = 0 TO 279 STEP 14
1690 HCOLOR= 0: HPLOT I,90 TO I,94: HPLOT I + 13,95 TO I + 13,99
1700 HCOLOR= 4: HPLOT I,100 TO I,104: HPLOT I + 13,105 TO I + 13,109: NEXT
1710 
1720 REM ****** CLEAR AND SET HIGH BITS OF SOME ROWS OF ODD/EVEN COLOR LINES.
1730 FOR I = 7 TO 266 STEP 14
1740 HCOLOR= 0: HPLOT I,130 TO I,134: HPLOT I + 13,135 TO I + 13,139
1750 HCOLOR= 4: HPLOT I,140 TO I,144: HPLOT I + 13,145 TO I + 13,149: NEXT
1760 GET A$: IF A$ = CHR$(13) THEN GOTO 1770
1765 V=PEEK(49193):V=FN XR(5):POKE 49193,V:GOTO 1760
1770 HGR
1780 REM ****** DRAW 2 PIXELS ON EITHER SIDE OF BYTE BOUNDARIES ON
1790 REM        WHITE AND BLACK BACKGROUNDS
1800 H=4:O=8
1810 H=10:O=0
1820 HCOLOR= 3
1830 FOR I = 0 TO 7: FOR J=0 TO H-1:Y=I*(H+H)+J+O:HPLOT 0,Y TO 279,Y: NEXT: NEXT
1840 
1850 HOME:VTAB 20
1860 C$="0PG34BO70GP34OB7"
1870 FOR GN= 0 TO 3
1875 G1=INT(GN / 2):G2=GN-G1*2
1880 PRINT:PRINT " ";
1890 FOR CN=0 TO 15
1895 C1=INT(CN / 8):C4=CN-C1*8:C2=INT(C4 / 4):C4=C4-C2*4:C3=INT(C4 / 2):C4=C4-C3*2
1900 FOR EO=0 TO 1
1910 X = (C1*8+C2*4+C3*2+C4) * 14 + EO * 7
1920 Y = (G1 * 4 + G2 * 2 + EO)*(H+H) + O
1930 HCOLOR=G1*4+C1*3:HPLOT X+5,Y TO X+5,Y+H+H-1
1940 HCOLOR=G1*4+C2*3:HPLOT X+6,Y TO X+6,Y+H+H-1
1950 HCOLOR=G2*4+C3*3:HPLOT X+7,Y TO X+7,Y+H+H-1
1960 HCOLOR=G2*4+C4*3:HPLOT X+8,Y TO X+8,Y+H+H-1
1970 INVERSE:PRINT MID$(C$,EO*8+G1*4+C1*2+C2+1,1);:NORMAL:PRINT MID$(C$,EO*8+G2*4+C3*2+C4+1,1);
1980 NEXT
1990 NEXT
2000 NEXT
2010 GET A$: IF A$ = CHR$(13) THEN GOTO 2030
2020 V=PEEK(49193):V=FN XR(5):POKE 49193,V:GOTO 2010
2030 END
