порт с PowerBasic

Код:

If OpenWindow(0, 0, 0, 640, 400, "stars", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 640, 400)
  Dim pal.l(63)
  For m=1 To 21
    pal(m)=RGB(m*12,m*12,m*8)
    pal(m+21)=RGB(252,252,(m+21)*8)
    pal(m+31)=$FFFFFF
  Next m
  
  zz=128
  Dim zx.f(320)
  Dim zy.f(320)
  For m=0 To 319
    zx(m)=160+100*Sin(m/160*#PI)
    zy(m)=100+100*Cos(m/160*#PI)
  Next m
  
  RandomSeed(12345)
  
  dn=300
  Dim x.l(dn)
  Dim y.l(dn)
  Dim z.l(dn)
  Dim aa.l(dn)
  Dim ab.l(dn)
  For m=1 To dn
    x(m)=Random(320)
    y(m)=Random(20)+110
    z(m)=Random(128)
    aa(m)=0
    ab(m)=0
  Next m
  
  v=0
  Repeat
    Event = WindowEvent()
    Sleep_(10)
    If StartDrawing(CanvasOutput(0))
      Box(0,0,640,480,0)
      
      For m=1 To dn
        z(m)+1
        If z(m)>127
          x(m)=Random(280)+20
          y(m)=Sin(v/7)*7+Sin((x(m)-v)/10)*7+120
          z(m)=0
        EndIf
        a.l=(zx(v)*z(m)-zz*x(m))/(z(m)-zz)
        b.l=(zy(v)*z(m)-zz*y(m))/(z(m)-zz)
        If a>-1 And a<320 And b>-1 And b<200
          Box(a*2,b*2,2,2,pal(Int(z(m)/2)))
          aa(m)=a
          ab(m)=b
        EndIf
      Next m
      v=(v+1)%320
      
      StopDrawing()
    EndIf
    If GetAsyncKeyState_(#VK_ESCAPE)&$8000
      Break
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf