REM +-------------------------------------+
      REM |                                     |
      REM |  "Imaginary Dots" optical illusion  |
      REM |                                     |
      REM +-------------------------------------+
      REM Disable the Escape key
      REM (or rather, prevent it from causing a trappable error if pressed)
      *ESC OFF
      ON ERROR PROCError : QUIT
      REM Setup a full screen display
      GWL_STYLE = -16
      HWND_TOPMOST = -1
      WS_VISIBLE = &10000000
      WS_CLIPCHILDREN = &2000000
      WS_CLIPSIBLINGS = &4000000
      SYS "GetSystemMetrics", 0 TO xscreen%
      SYS "GetSystemMetrics", 1 TO yscreen%
      SYS "SetWindowLong", @hwnd%, GWL_STYLE, WS_VISIBLE + \
      \                    WS_CLIPCHILDREN + WS_CLIPSIBLINGS
      SYS "SetWindowPos", @hwnd%, HWND_TOPMOST, 0, 0, xscreen%, yscreen%, 0
      VDU 26 : COLOUR 15,0,0,0 : CLS : OFF
      REM Get the window width and height
      REM (in this case, the variables xscreen% and yscreen% contain
      REM the width and height, respectively, of the full screen)
      WinW% = xscreen%
      WinH% = yscreen%
      REM Calculate some values
      k% = 12
      p = k%*PI
      q = p/(WinW%-1)
      REM Calculate the grid cell width and height
      CellW% = WinW%/k%
      CellH% = WinH%/k%
      REM Draw a single grid cell
      GCOL 1
      *REFRESH OFF
      FOR Y% = 0 TO CellH%-1
        u = p*Y%/(WinH%-1)
        FOR X% = 0 TO CellW%-1
          REM Calculate the greyscale intensity (in the range 0 to 255)
          I% = INT(255 * ABS(SINu * SIN(X%*q)))
          COLOUR 1, I%, I%, I%
          PLOT 2*X%, 2*Y%
        NEXT
      NEXT
      REM Copy the grid cell to fill the entire program window/screen
      FOR Y%=0 TO WinH% DIV CellH%
        FOR X%=0 TO WinW% DIV CellW%
          RECTANGLE 0, 0, 2*WinW%, 2*CellH% TO 2*X%*CellW%, 2*Y%*CellH%
        NEXT
      NEXT
      *REFRESH
      REM Exit when user presses Escape or some other key,
      REM or clicks a mouse button
      MOUSE OFF
      *REFRESH ON
      PROCWait
      QUIT
      DEF PROCWait
      LOCAL B%, X%, Y%, quit%
      REM Flush the keyboard buffer
      *FX 21,0
      quit% = FALSE
      REPEAT
        MOUSE X%, Y%, B%
        IF INKEY(0)<>-1 OR B%<>0 THEN quit% = TRUE
        WAIT 1 : REM A delay necessary to prevent 100% CPU usage :-)
      UNTIL quit%
      ENDPROC
      DEF PROCError
      *REFRESH ON
      MOUSE ON : CLS : ON : VDU 7 : COLOUR 7 : PRINT '" ";
      REPORT : PRINT " at line "; ERL
      PRINT ''" Press a key or click a mouse button to exit";
      PROCWait
      ENDPROC
 
      *ESC OFF
      MODE 10 : OFF
      COLOUR 7,148,148,148
      ScrW%=@vdu%!208
      ScrH%=@vdu%!212
      S%=80 : REM grid spacing
      T%=18 : REM grid line thickness
      O%=S%DIV2 : REM grid origin offset
      *REFRESH OFF
      GCOL 7
      FOR Y%=0 TO ScrH% STEP S%
        FOR X%=0 TO ScrW% STEP S%
          RECTANGLE FILL 2*(X%-O%), 0, 2*T%, 2*ScrH%
          RECTANGLE FILL 0, 2*(Y%-O%), 2*ScrW%, 2*T%
        NEXT
      NEXT
      GCOL 15
      FOR Y%=0 TO ScrH% STEP S%
        FOR X%=0 TO ScrW% STEP S%
          K% = O% - T%DIV2
          CIRCLE FILL 2*(X%-K%), 2*(Y%-K%), 2*0.8*T%
        NEXT
      NEXT
      *REFRESH
      *REFRESH ON
      REPEAT UNTIL INKEY(1)=0