' *************************************************
' *       Farb-Paletten-Demo (Meditation)         *
' *                                               *
' * Autor der MAXOM PASCAL-Routine: Christen Fihl *
' *    GFA-BASIC-Konvertierung: Thomas Werner     *
' *         (c) 1992 MAXON Computer GmbH          *
' *************************************************
'
meditation
'
PROCEDURE meditation
  LOCAL n%,key,zw%
  HIDEM
  farb_init
  setpalette
  draw_lines
  REPEAT
    zw%=p%(1)
    FOR n%=1 TO 14
      p%(n%)=p%(n%+1)
    NEXT n%
    p%(15)=p%(1)
    setpalette
    PAUSE 4
    KEYTEST key
  UNTIL key<>0
  SHOWM
RETURN
'
PROCEDURE farb_init
  LOCAL n%
  DIM p%(16)
  '
  p%(0)=0
  FOR n%=1 TO 15
    p%(n%)=256*RANDOM(8)+16*(1+RANDOM(7))+RANDOM(8)
  NEXT n%
RETURN
PROCEDURE draw_lines
  LOCAL hx%,hy%,maxx%,maxy%,x%,y%,x2%,y2%
  LOCAL a%,rad,p%
  maxx%=WORK_OUT(0)
  maxy%=WORK_OUT(1)
  CLIP 0,0,maxx%,maxy%
  CLS
  hx%=maxx%/2
  hy%=maxy%/2
  FOR a%=1 TO 360
    x%=hx%
    y%=hy%
    FOR p%=1 TO 4
      m%=20+40*p%
      x2%=hx%+FIX(m%*SIN(RAD(a%)))
      y2%=hy%+FIX(m%*COS(RAD(a%)))
      COLOR (1+RANDOM(15))
      DRAW x%,y% TO x2%,y2%
      x%=x2%
      y%=y2%
    NEXT p%
  NEXT a%
  CLIP OFF
RETURN
PROCEDURE setpalette
  LOCAL n%
  FOR n%=0 TO 15
    VSETCOLOR n%,p%(n%)
  NEXT n%
RETURN
