10
20
30 :
40 FOR mode%=0 TO 15
50 RESTORE
60 MODE mode%
70 VDU 23,23,2;0;0;0; 23,1,0;0;0;0;
80 REPEAT:txH%=VPOS+1:PRINT:UNTILtxH%=VPOS+1:PRINTCHR$8;:txW%=POS+1:CLS
90 gfW%=txW%*8:gfH%=txH%*(8-2*(mode%=3 OR mode%=6))
100 REPEAT:gfW%=gfW%*2:UNTIL gfW%>=&400
110 REPEAT:gfH%=gfH%*2:UNTIL gfH%>=&300
120 wid%=gfW%DIV4:hgh%=gfH%DIV4
130 col%=txW%DIV4:row%=txH%DIV4
140 FOR gcol%=0 TO 15
150 GCOL 0,gcol%
160 FOR pix%=hgh%-4 TO 0 STEP -4
170 MOVE ((gcol% AND 3)+0)*wid%+0,((gcol% EOR 12) DIV 4)*hgh%+pix%
180 DRAW ((gcol% AND 3)+1)*wid%-1,((gcol% EOR 12) DIV 4)*hgh%+pix%
190 PLOT 69,((gcol% AND 3)+0)*wid%+0,((gcol% EOR 12) DIV 4)*hgh%+pix%+2
200 NEXT
210 NEXT
220 FOR logc%=0 TO 15
230 RESTORE
240 FOR num%=0 TO 15
250 phyc%=(logc%-num%)AND15
260 VDU 19,num%,phyc% AND 7,0,0,0
270 COLOUR 128+phyc%
280 COLOUR 15-phyc%
290 READ C$
300 PRINT TAB((phyc% AND 3)*col%+(col%-1)DIV2-1,(phyc% DIV 4)*row%+row%DIV4+1);" ";~phyc%;" ";
310 PRINT TAB((phyc% AND 3)*col%+(col%-1)DIV2-1,(phyc% DIV 4)*row%+row%DIV4+2);C$;
320 NEXT
330 PRINTTAB(col%*2-3,0);"MODE ";mode%
340 IF INKEY(200)>-1:logc%=16
350 NEXT
360 NEXT
370 DATA BLK,RED,GRN,YEL,BLU,MAG,CYN,WHT
380 DATA BLK,RED,GRN,YEL,BLU,MAG,CYN,WHT