10 REM > VDUVars
   20 REM Test reading VDU variables with =VDU()
   30 :
   40 PRINT "Screen mode:                 ";MODE
   50 PRINT "Number of colours:           ";VDU(96)+1
   60 PRINT "Text window width:           ";VDU(10)-VDU(8)+1
   70 PRINT "Text window height:          ";VDU(9)-VDU(11)+1
   80 PRINT "Text foreground colour:      ";(VDU(87)DIV8)ANDVDU(96)
   90 PRINT "Text background colour:      ";(VDU(88)DIV8)ANDVDU(96)
  100 PRINT "Left colour mask:            &";~VDU(98)
  110 PRINT "Right colour mask:           &";~VDU(99)
  120 PRINT "Graphics window width:       ";VDU(4)+256*VDU(5)-VDU(0)-256*VDU(1)+1
  130 PRINT "Graphics window height:      ";VDU(6)+256*VDU(7)-VDU(2)-256*VDU(3)+1
  140 PRINT "Graphics X origin:           ";VDU(12)+256*VDU(13)
  150 PRINT "Graphics Y origin:           ";VDU(14)+256*VDU(15)
  160 PRINT "Graphics foreground (BBC):   ";(VDU(89)DIV8)ANDVDU(96)
  170 PRINT "Graphics background (BBC):   ";(VDU(90)DIV8)ANDVDU(96)
  180 PRINT "Graphics foreground (Other): ";VDU(109)
  190 PRINT "Graphics background (Other): ";VDU(110)
  200 PRINT "Foreground GCOL mode:        ";VDU(91)
  210 PRINT "Background GCOL mode:        ";VDU(92)
  220 PRINT "Cursor address:              &";~VDU(74)+256*VDU(75)
  230 PRINT "Screen start address:        &";~256*VDU(78)
  240 PRINT "Screen display address:      &";~VDU(80)+256*VDU(81)
  250 PRINT "Screen size:                 &";~256*VDU(84)
  260 PRINT "Press SPACE";:A%=GET
  270 :
  280 REM Full colour reading test
  290 A%=0:X%=1:os%=((USR&FFF4)AND&FF00)DIV256
  300 FOR mode%=0 TO 7
  310   MODE mode%
  320   FOR colour%=0 TO 15
  330     COLOUR colour%:PRINT "COLOUR ";
  340     value%=FNcolour
  350     COLOUR 7:PRINT;colour%;" ";value%
  360   NEXT colour%
  370   PRINT "Press SPACE";:A%=GET
  380 NEXT mode%:PRINT
  390 END
  400 :
  410 DEFFNcolour
  420 IFos%>31:=(VDU(87)DIV8)ANDVDU(96)
  430 col%=VDU(87)
  440 FOR loop%=1 TO 3-INTSQR((VDU(96)+1)/4)
  450   col%=4*INTSQR((col%DIV16)+1)+SQR((col%AND15)+1)-5
  460 NEXT loop%
  470 =col%