0 VARIABLE M
0 VARIABLE TM

: SQUARE
   DUP 4 PICK + 3 PICK MOVE
   2DUP + 4 PICK SWAP DRAW
   DUP 4 PICK SWAP - 3 PICK DRAW
   2DUP - 4 PICK SWAP DRAW
   SWAP >R + R> DRAW
   ;

R: DIAMOND ( X / Y / S )
   DUP
   M @
   >= IF
      2/
      >R>
      3 PICK + OVER R DIAMOND
      ( X / Y )
      OVER R - OVER R DIAMOND
      2DUP R - R DIAMOND
      2DUP R + R DIAMOND
      R> SQUARE
   ELSE
      2DROP DROP
   THEN
   R;

: MAIN
   NOWIMPS
   ( 0 MODE)
   256 DUP M !
   TIME TM !
   BEGIN
      640 512 512 DIAMOND
      [ HEX ] 30012 VDU3 [ DECIMAL ]
      2/
      DUP DUP M !
      16 <
   UNTIL
   TIME TM @ - TM !
   DROP
   ." Press Any Key"
   KEY DROP WIMPS
   CR ." Time was "
   TM ? ." centiseconds" CR
   ;
