' Plasmagenerator fr PowerBasic 3.00 ' von Robert Seidel Rauheit! = 2 SHARED Rauheit! DEFINT a-z RANDOMIZE TIMER ! MOV AX, &h0013 ! INT &h10 DEF SEG = &hA000 SUB NewCol(xa, ya, x, y, xb, yb) col = ABS(xa - xb) + ABS(ya - yb) col = RND * Rauheit! * col - col col = col + XPOINT(xa, ya) + XPOINT(xb, yb) SHIFT RIGHT col, 1 IF col < 1 THEN col = 1 IF col > 180 THEN col = 1 IF XPOINT(x, y) = 0 THEN XPSET x, y, col END SUB SUB SubDivide(x1, y1, x2, y2) IF NOT (x2 - x1 < 2 AND y2 - y1 < 2) THEN x = (x1 + x2) SHIFT RIGHT x, 1 y = (y1 + y2) SHIFT RIGHT y, 1 NewCol x1, y1, x, y1, x2, y1 NewCol x2, y1, x2, y, x2, y2 NewCol x1, y2, x, y2, x2, y2 NewCol x1, y1, x1, y, x1, y2 col = XPOINT(x1, y1) + XPOINT(x2, y1) + XPOINT(x2, y2) + XPOINT(x1, y2) SHIFT RIGHT col, 2 XPSET x, y, col SubDivide x1, y1, x, y SubDivide x, y1, x2, y SubDivide x, y, x2, y2 Subdivide x1, y, x, y2 END IF END SUB SUB XPSET(x, y, col) POKE 320 * y + x, col END SUB FUNCTION XPOINT(x, y) AS BYTE XPOINT = PEEK(320 * y + x) END FUNCTION SUB SetRGB(Nr, r, g, b) OUT &h3C8, Nr OUT &h3C9, r OUT &h3C9, g OUT &h3C9, b END SUB SUB SetCol(j) FOR i = 1 TO 63 SetRGB i+j,0,63-i,i SetRGB i+63+j,i,0,63-i SetRGB i+126+j,63-i,i,0 NEXT END SUB SetCol 0 Subdivide 0 , 0 , 320 , 199 WHILE NOT INSTAT SetCol j INCR j DELAY .0275 WEND SCREEN 0