

Code:
#COMPILE EXE
#DIM ALL
#CONSOLE ON
REM for PowerBASIC Console Compiler, or kill off the console directive and
REM that print statement lower down, and it should Just Work[tm]
FUNCTION PBMAIN () AS LONG
DIM X AS LONG
DIM Y AS LONG
DIM Rx AS DOUBLE
DIM ry AS DOUBLE
DIM hWin AS LONG
DIM I AS LONG
DIM FAWNT AS LONG
DIM Dumb AS STRING
DIM z AS DOUBLE
FONT NEW "PragmataPro", 32, 0 TO FAWNT
GRAPHIC WINDOW "", -1, -1, 1920, 1080 TO hWin
GRAPHIC COLOR RGB(192,192,192), %BLACK
GRAPHIC CLEAR
GRAPHIC ATTACH hWin, 0
GRAPHIC SET FONT FAWNT
DIM colour AS LONG
FOR Y = 0 TO 1080
FOR X = 0 TO 1920
REM x -2.0,0.47 y -1.12,1.12
rx = SCALE(x, 1920, -1.25,-1.23)
ry = SCALE(y, 1080, -0.125,-0.112)
colour = colorizer(mand(rx,ry,1024))
GRAPHIC SET PIXEL (x,y), colour
NEXT
PRINT "LINE",y,rx,ry,colour
NEXT
GRAPHIC SAVE "MANDY.BMP"
END FUNCTION
FUNCTION SCALE (n AS LONG, mv AS LONG, low AS DOUBLE, high AS DOUBLE) AS DOUBLE
DIM rng AS DOUBLE
DIM div AS DOUBLE
rng = high - low
div = rng / mv
SCALE = n * div + low
END FUNCTION
FUNCTION mand (x0 AS DOUBLE, y0 AS DOUBLE, max_iter AS LONG) AS LONG
DIM i AS LONG
DIM x AS DOUBLE
DIM y AS DOUBLE
i = 0
x = 0
y = 0
WHILE (x*x + y*y <= 2*2 AND i < max_iter)
DIM tmp AS DOUBLE
tmp = x*x - y*y + x0
y = 2*x*y + y0
x = tmp
i = i + 1
WEND
mand = i
END FUNCTION
FUNCTION colorizer (ival AS LONG) AS LONG
REM max ival is 1024
DIM RED AS LONG
DIM BLUE AS LONG
DIM GREEN AS LONG
IF IVAL = 1024 THEN
COLORIZER = 0
ELSE
BLUE = ival AND &H00000007
GREEN = ival AND &H00000038
RED = ival AND &H000001c0
ROTATE RIGHT GREEN, 3
ROTATE RIGHT RED, 6
colorizer = RGB(red*16, green*16, blue*16)
END IF
END FUNCTION