> Pixels ; Test correct number of logical pixels for screen size : (, 10+13,?(P-3)=0);:: =25: 2: < test%= F-bbfw%=: >&FFFF:bbfw%=(-256 &DB)=&53 P&: :gap$=3+6+7+11+14+17 Z) bbfw%:gap$=3+6+7+20+21+28+29 d M%=0 127 n M% x(:txH%=+1::txH%=+1:8;:txW%=+1 5: :gap%=gap$,M%)<>0 (txH%=22 txH%=25) < bbfw%:gap%=gap$,M%)<>0: Slightly different for BBFW : test: A test%: M%=3: 0: 28,0,31,79,7:txW%=80:txH%=25:gap%=0: US A test%: M%=6: 1: 28,0,31,39,7:txW%=40:txH%=25:gap%=0: US G test%: M%=7: 1: 28,0,31,31,8:txW%=32:txH%=24:gap%=0: Spectrum : ; &BF:'1;:cols%=0,0)+1: cols%=cols%-192*(cols%=64)  cols%<3: M%=7:cols%=8 ! &C1: &84: 7: 0,&84: 0,7 % 19,-1,0,255,0,0,19,24,0,255,0,0 8 19,4,4,0,0,255, 19,7,7,255,255,255, 19,0,4,0,0,255 2:t$="":g$="": M%=7: &87,0,0:t$=&87:g$=&97  23,1,0;0;0;0; : "CgfH%=txH%*(8-2*gap%) : Physical pixels ,gfW%=txW%*8 69gfY%=gfH%::gfY%=gfY%*2: gfY%>=&300: Logical pixels @(gfX%=gfW%::gfX%=gfX%*2: gfX%>=&400 J Doesn't work for MODE 22 T% Doesn't work for some DOS MODEs ^: h Subtly different for BBFW rH bbfw%:gfY%=gfH%*4 : Fixed EigenY |H bbfw%:gfX%=gfW%::gfX%=gfX%*2: gfX%>=gfY%: width always > height :  title  0,0: 0,7: A%=1 7 !x%="1100101",A%,1)*(gfX%-1) !y%="0110110",A%,1)*(gfY%-1)  x%,y%: A%  M%=7:title T% A%>-1: A%=8 A%=127:M%=M%-2  M%  :  title )(txW%-M%-5)/2,1);t$;"MODE ";M%;g$ ;pos(txW%/2-9),2);t$;txW%;" x ";txH%;" characters";g$ [pos(txW%/2-6-gfW%-gfH%),3);t$;gfW%;" x ";gfH%;" physical ";"pixels",txW%>20);g$ Zpos(txW%/2-5-gfX%-gfY%),4);t$;gfX%;" x ";gfY%;" logical ";"pixels",txW%>20);g$ &;cols%>1:(txW%-cols%-8)/2,5);t$;cols%;" colours";g$ 0: :40,txH%-4+2*(txW%<80)+2*(txW%<40)+8*(txW%<20)); D(c(t$+"In graphics modes"+g$,txW%): NRc(t$+"there should be a diagonal crossing "+t$+"from each corner."+g$,txW%): XYc(t$+"If they do not the logical-to-physical "+t$+"pixel mapping is wrong."+g$,txW%) b l: vݤpos(A%)=A%(A%>0) c(A$,W%):A$=A$+" ": ;A%=W%+1::A%=A%-1: A$,A%,1)=" " A%<0: A%<0:A%=W%+1 2W%2-A%2,9);A$,A%-1);: A%>W%: 8:A%=A%-1 A$=A$,A%+1): A$<>"":  A$="":