'plasma generator for qbx DECLARE SUB setpal (j%) DECLARE SUB subdivide (x1%, y1%, x2%, y2%) DECLARE SUB newcol (xa%, ya%, x%, y%, xb%, yb%) DECLARE SUB setrgb (nr%, r%, g%, b%) DEFINT A-Z CONST shape! = .1 RANDOMIZE TIMER SCREEN 13 setpal 0 CALL subdivide(0, 0, 100, 100) WHILE INKEY$ = "" setpal (j) j = j + 1 FOR tmp = 0 TO 100 NEXT WEND SCREEN 0 SUB newcol (xa, ya, x, y, xb, yb) col = ABS(xa - xb) + ABS(ya - yb) col = RND * shape * col - col col = (col + POINT(xa, ya) + POINT(xb, yb)) / 2 IF col < 1 THEN col = 1 IF col > 180 THEN col = 1 IF POINT(x, y) = 0 THEN PSET (x, y), col END SUB SUB setpal (j) FOR i = 1 TO 63 CALL setrgb(i + j, 0, 63 - i, i) CALL setrgb(i + j + 63, i, 0, 63 - i) CALL setrgb(i + j + 126, 63 - i, i, 0) NEXT END SUB SUB setrgb (nr, r, g, b) OUT &H3C8, nr OUT &H3C9, r OUT &H3C9, g OUT &H3C9, b END SUB SUB subdivide (x1, y1, x2, y2) IF NOT (x2 - x1 < 2 AND y2 - y1 < 2) THEN x = (x1 + x2) / 2 y = (y1 + y2) / 2 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 = POINT(x1, y1) + POINT(x2, y1) + POINT(x2, y2) + POINT(x1, y2) col = col / 4 PSET (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