DECLARE SUB SetRGB (Nr%, r%, g%, b%)
DECLARE SUB RenderCircle (x%, y%, r%, colstart%, a!)
DEFINT A-Z
DIM melt(2400)

SCREEN 13
RANDOMIZE TIMER

FOR i = 0 TO 63 'Palette
  SetRGB i, 64 - i, 64 - i, 64 - i
  SetRGB i + 64, i, 0, 0
  SetRGB i + 128, 63, i, 0
NEXT

FOR i = 1 TO 50
  LINE (0, i + 150)-(320, i + 150), i
NEXT

RenderCircle 160, 158, 50, 1, .8
RenderCircle 160, 95, 35, 1, .8
RenderCircle 160, 50, 25, 1, .8
RenderCircle 149, 45, 3, 58, 1.2
RenderCircle 169, 46, 3, 58, 1.2
FOR i = 85 TO 205 STEP 25
  RenderCircle 155 + RND * 2, i, 2, 50 + RND * 4, 1
NEXT
CIRCLE (160, 93), 40, 0, 1.2, 1.8
CIRCLE (160, 94), 40, 0, 1.2, 1.8
FOR i = 147 TO 177
  LINE (i, 9)-(i - 2, 32), i - 130
NEXT
LINE (135, 32)-(184, 34), 30
FOR x = 16 TO 1 STEP -1
  RenderCircle 142 + x, 59 - x / 2.5, x \ 4, 128 - x * 2, 1
NEXT

SLEEP 'Pause

FOR i = 1 TO 4000
  x = RND * 271
  y = RND * 150
  GET (x, y)-(x + 48, y + 48), melt
  PUT (x, y + 1), melt, PSET
NEXT i

RenderCircle 160, 100, 60, 128, 1
RenderCircle 140, 80, 7, 55, 1
RenderCircle 180, 80, 7, 55, 1
CIRCLE (160, 80), 50, 60, 4, 5.5
CIRCLE (160, 88), 50, 60, 3.6, 5.8, 1.3

SLEEP 'Pause

SUB RenderCircle (x, y, r, colstart, a!)
  FOR i = r TO 0 STEP -1
    CIRCLE (x, y), i, (colstart + i), , , a!
    PAINT (x, y), (colstart + i)
  NEXT
END SUB

SUB SetRGB (Nr, r, g, b)
  OUT &H3C8, Nr
  OUT &H3C9, r
  OUT &H3C9, g
  OUT &H3C9, b
END SUB

