10
20
30 :
40 ON ERROR REPORT:IF ERR=25:RUN ELSE PRINT:END
50 :
60 bbfw%=FALSE:IF PAGE>&FFFF:bbfw%=(INKEY-256 AND &DB)=&53
70 : :gap$=CHR$3+CHR$6+CHR$7+CHR$11+CHR$14+CHR$17
80 IF bbfw%:gap$=CHR$3+CHR$6+CHR$7+CHR$20+CHR$21+CHR$28+CHR$29
90 FOR M%=0 TO 127
100 MODE M%:PRINT':VDU8:txW%=POS+1
110 REPEAT:txH%=VPOS+1:PRINT:UNTILtxH%=VPOS+1
120 COLOUR &BF:VDU 32:cols%=ABSPOINT(0,0)+1:cols%=cols%-192*(cols%=64)
130 IF cols%<3:IF M%=7:cols%=8
140 COLOUR 128:COLOUR 7:GCOL 0,128:GCOL 0,5
150 VDU 19,5,7,0,0,0, 23,1,0;0;0;0;
160 CLS
170 : :gap%=INSTR(gap$,CHR$M%)<>0 AND (txH%=22 OR txH%=25)
180 IF bbfw%:gap%=INSTR(gap$,CHR$M%)<>0 :
190 :
200
210
220
230 :
240
250 gfH%=txH%*(8-2*gap%) :
260 gfW%=txW%*8
270 gfY%=gfH%:REPEAT:gfY%=gfY%*2:UNTIL gfY%>=&300 :
280 gfX%=gfW%:REPEAT:gfX%=gfX%*2:UNTIL gfX%>=&400
290
300
310 :
320
330 IF bbfw%:gfY%=gfH%*4 :
340 IF bbfw%:gfX%=gfW%:REPEAT:gfX%=gfX%*2:UNTIL gfX%>=gfY% :
350 :
360 PRINTTAB((txW%-LENSTR$M%-5)/2,1);"MODE ";M%
370 PRINTTAB(txW%/2-9,2);txW%;" x ";txH%;" characters"
380 PRINTTAB(txW%/2-6-LENSTR$gfW%-LENSTR$gfH%,3);gfW%;" x ";gfH%;" physical ";LEFT$("pixels",txW%>20)
390 PRINTTAB(txW%/2-5-LENSTR$gfX%-LENSTR$gfY%,4);gfX%;" x ";gfY%;" logical ";LEFT$("pixels",txW%>20)
400 IF cols%>1:PRINTTAB((txW%-LENSTR$cols%-8)/2,5);cols%;" colours"
410 MOVE 0,0:GCOL 0,7:FOR A%=1 TO 7
420 x%=VALMID$("1100101",A%,1)*(gfX%-1)
430 y%=VALMID$("0110110",A%,1)*(gfY%-1)
440 DRAW x%,y%:NEXT A%
450 IF INKEY(500)=8:M%=M%-2
460 NEXT M%
470 RUN