DECLARE SUB GENERATE () DECLARE SUB EXPGENERATE () DECLARE SUB PALETTES () DECLARE SUB DISPLAY () DECLARE SUB SHOWLOC () COMMON SHARED P() AS SINGLE DIM P(256) AS SINGLE OPEN "JULIAC00.BIN" FOR BINARY AS #1 DO GET #1, , P(I) IF EOF(1) THEN CLOSE : EXIT DO I = I + 1 LOOP DO SCREEN 0 WIDTH 80 COLOR 15, 0, 0 CLS COLOR 7, 0, 0 A$ = STRING$(22, 205): L$ = STRING$(8, 219): Z$ = CHR$(0) PRINT TAB(29); CHR$(201); A$; CHR$(187) PRINT TAB(29); CHR$(186); " JULIA SET GENERATOR "; CHR$(186) PRINT TAB(29); CHR$(186); " PACKAGE V1.5H/120190 "; CHR$(186) PRINT TAB(29); CHR$(204); A$; CHR$(185) PRINT TAB(29); CHR$(186); " BY THE HACKER "; CHR$(186) PRINT TAB(29); CHR$(200); A$; CHR$(188) PRINT COLOR 15, 0, 0: DEFSNG A-Z PRINT "WHAT TO YOU WANT TO DO?" PRINT " (1) GENERATE A JULIA SET" PRINT " (2) GENERATE AN EXPANSION OF A JULIA SET" PRINT " (3) DISPLAY A JULIA" PRINT " (4) VIEW COLOR PALETTES" PRINT " (5) SHOW LOCATION OF JULIA SETS / GET COORDINATES" PRINT " (6) QUIT" PRINT DO INPUT A IF A >= 1 AND A <= 6 THEN EXIT DO LOOP PRINT : PRINT IF A = 1 THEN CALL GENERATE IF A = 2 THEN CALL EXPGENERATE IF A = 3 THEN CALL DISPLAY IF A = 4 THEN CALL PALETTES IF A = 5 THEN CALL SHOWLOC IF A = 6 THEN EXIT DO LOOP SUB DISPLAY SHARED P() AS SINGLE DEFINT L-M INPUT "ENTER JULIA SET NUMBER:"; F F$ = RIGHT$("00" + MID$(STR$(F), 2), 3) OPEN "JULIA" + F$ + ".BIN" FOR BINARY AS #1 Z = 0: IF MID$(F$, 6, 1) = "Z" THEN Z = 1 DIM L(96) A1 = -1.5 B1 = 1.5 SCREEN 12 FOR I = 1 TO 15 GET #1, , C IF EOF(1) THEN CLOSE : KILL "JULIA" + F$ + ".BIN": BEEP: SCREEN 0: GOTO 3 PALETTE I, C NEXT I GET #1, , C1 GET #1, , C2 IF Z = 1 THEN GET #1, , A1 IF Z = 1 THEN GET #1, , B1 GET #1, , TP GET #1, , IG SC = 160 IF Z = 1 THEN GET #1, , SC LOCATE 1, 1: PRINT "COORDINATES:" LOCATE 2, 2: PRINT C1: LOCATE 3, 2: PRINT C2 IF Z = 1 THEN LOCATE 5, 1: PRINT "ZOOM OFFSETS:" IF Z = 1 THEN LOCATE 6, 2: PRINT A1: LOCATE 7, 2: PRINT B1 IF Z = 1 THEN LOCATE 9, 1: PRINT "SCALE = "; : PRINT USING "####.##"; SC / 160 LOCATE 10, 1: PRINT "ITTERATIONS:"; TP LOCATE 11, 1: PRINT "IGNORE <"; IG LOCATE 13, 1: PRINT "FILENAME: JULIA"; F$ LINE (159, 0)-(159, 479) FOR I = 1 TO 15 LINE (I * 6 + 20, 460)-((I + 1) * 6 + 20, 475), I, BF NEXT I LINE (24, 458)-(118, 477), 15, B LINE (22, 456)-(120, 479), 15, B IF Z = 1 THEN ED = 479 ELSE ED = 240 FOR Y = 0 TO ED XS = 160 DO GET #1, , L GET #1, , M XE = XS + L LINE (XS, Y)-(XE, Y), M IF Z = 0 THEN LINE (801 - XS, 479 - Y)-(801 - XE, 479 - Y), M IF Z = 1 THEN XS = XE ELSE XS = XE + 1 LOOP WHILE XE < 640 NEXT Y CLOSE LOCATE 16, 1: PRINT "JULIA COMPLETE." DO K$ = INKEY$ IF K$ = CHR$(27) THEN GOTO 3 IF K$ = "P" THEN FOR I = 0 TO 14 PALETTE I + 1, P(I + T) NEXT I LOCATE 26, 1: PRINT "PALETTE: ": LOCATE 26, 1: PRINT "PALETTE:"; (T / 15) + 1 T = T + 15 IF T = 255 THEN T = 0 END IF IF K$ = "C" THEN EXIT DO LOOP LOCATE 18, 1: PRINT "CALCULATE..." LOCATE 20, 1: PRINT "COORDINATES:" X = 0: X0 = A1 Y = 0: Y0 = B1 DEFSNG M DO M = X0 + X / SC N = Y0 - Y / SC FOR I = 0 TO 47 L(I) = POINT(X + 160 + I, Y) NEXT I FOR I = 1 TO 47 L(I + 47) = POINT(X + 160, Y + I) NEXT I LINE (X + 160, Y)-(X + 160 + 47, Y), 15 LINE (X + 160, Y)-(X + 160, Y + 47), 15 LOCATE 21, 2: PRINT " ": LOCATE 21, 2: PRINT M LOCATE 22, 2: PRINT " ": LOCATE 22, 2: PRINT N DO K$ = INKEY$ IF LEN(K$) = 2 THEN EXIT DO IF K$ = CHR$(27) THEN GOTO 3 LOOP D$ = RIGHT$(K$, 1) OX = X: OY = Y IF D$ = CHR$(72) THEN Y = Y - 1 IF D$ = CHR$(75) THEN X = X - 1 IF D$ = CHR$(77) THEN X = X + 1 IF D$ = CHR$(80) THEN Y = Y + 1 IF Y < 0 THEN Y = 0 IF Y > 479 THEN Y = 479 IF X < 0 THEN X = 0 IF X > 479 THEN X = 479 FOR I = 0 TO 47 PSET (OX + 160 + I, OY), L(I) NEXT I FOR I = 1 TO 47 PSET (OX + 160, OY + I), L(I + 47) NEXT I LOOP 3 END SUB DEFSNG L SUB EXPGENERATE SHARED P() AS SINGLE INPUT "ENTER C1 VALUE:"; C1 INPUT "ENTER C2 VALUE:"; C2 INPUT "ENTER X-OFFSET:"; A1 INPUT "ENTER Y-OFFSET:"; B1 INPUT "ENTER SCALE:"; SC INPUT "ENTER MAX. ITTERATIONS:"; MI INPUT "ENTER COLOR IGNORE:"; IG INPUT "ENTER PALETTE NUMBER:"; PN INPUT "ENTER JULIA SET NUMBER FOR FILENAME:"; F SCREEN 12 DIM C(15) S = (PN - 1) * 15 N = 1 FOR I = S TO S + 14 PALETTE N, P(I) C(N) = P(I) LINE (N * 6 + 20, 460)-((N + 1) * 6 + 20, 475), N, BF N = N + 1 NEXT I D = -1 LINE (159, 0)-(159, 479), 15 LINE (0, 278)-(159, 278), 15 LINE (24, 458)-(118, 477), 15, B LINE (22, 456)-(120, 479), 15, B LOCATE 1, 1: PRINT "COORDINATES:" LOCATE 2, 2: PRINT C1: LOCATE 3, 2: PRINT C2 LOCATE 5, 1: PRINT "ZOOM OFFSETS:" LOCATE 6, 2: PRINT A1: LOCATE 7, 2: PRINT B1 LOCATE 9, 1: PRINT "SCALE x "; : PRINT USING "####.##"; SC / 160 LOCATE 10, 1: PRINT "ITTERATIONS:"; MI LOCATE 11, 1: PRINT "IGNORE <"; IG LOCATE 13, 1: PRINT "CURRENT POSITION:" LOCATE 16, 1: PRINT "ITTERATIONS:" FOR M = 0 TO 479 X0 = A1 + M / SC FOR N = 0 TO 479 Y0 = B1 - N / SC X = X0 Y = Y0 FOR I = 1 TO MI X1 = X * X - Y * Y + C1 Y1 = 2 * X * Y + C2 X = X1 Y = Y1 Z = X * X + Y * Y IF Z > 4 THEN EXIT FOR NEXT I K = 15 / (MI - IG) L = ((I - IG) * K) IF I < IG THEN L = 0 PSET (M + 160, N), L IF D = 1 THEN LOCATE 14, 2: PRINT " ": LOCATE 14, 2: PRINT M; N LOCATE 17, 2: PRINT " ": LOCATE 17, 2: PRINT I END IF K$ = INKEY$ IF K$ = "I" THEN D = -D: LOCATE 14, 2: PRINT " ": LOCATE 17, 2: PRINT " " IF K$ = CHR$(27) THEN GOTO 2 NEXT N NEXT M LOCATE 20, 1: PRINT "JULIA COMPLETE." DO K$ = INKEY$ IF K$ = "S" THEN EXIT DO IF K$ = CHR$(27) THEN GOTO 2 LOOP LOCATE 22, 1: PRINT "SAVING..." F$ = RIGHT$("00" + MID$(STR$(F), 2), 3) OPEN "JULIA" + F$ + ".BIN" FOR BINARY AS #1 FOR I = 1 TO 15 PUT #1, , C(I) NEXT I PUT #1, , C1 PUT #1, , C2 PUT #1, , A1 PUT #1, , B1 PUT #1, , MI PUT #1, , IG PUT #1, , SC DEFINT C, L FOR Y = 0 TO 479 LOCATE 23, 2: PRINT "Y ="; Y C = -1 FOR X = 160 TO 639 IF C >= 0 THEN IF POINT(X, Y) <> C THEN PUT #1, , L PUT #1, , C C = POINT(X, Y) L = 0 END IF L = L + 1 END IF IF C = -1 THEN C = POINT(X, Y): L = 1 NEXT X PUT #1, , L PUT #1, , C NEXT Y CLOSE LOCATE 22, 1: PRINT "SAVE COMPLETE. " LOCATE 23, 1: PRINT " " DO LOOP UNTIL INKEY$ = CHR$(27) 2 END SUB DEFSNG C, L SUB GENERATE SHARED P() AS SINGLE INPUT "ENTER C1 VALUE:"; C1 INPUT "ENTER C2 VALUE:"; C2 INPUT "ENTER MAX. ITTERATIONS:"; MI INPUT "ENTER COLOR IGNORE:"; IG INPUT "ENTER PALETTE NUMBER:"; PN INPUT "ENTER JULIA SET NUMBER FOR FILENAME:"; F SCREEN 12 DIM C(15) S = (PN - 1) * 15 N = 1 FOR I = S TO S + 14 PALETTE N, P(I) C(N) = P(I) LINE (N * 6 + 20, 460)-((N + 1) * 6 + 20, 475), N, BF N = N + 1 NEXT I D = -1 LINE (159, 0)-(159, 479), 15 LINE (0, 260)-(159, 260), 15 LINE (24, 458)-(118, 477), 15, B LINE (22, 456)-(120, 479), 15, B LOCATE 2, 1: PRINT "COORDINATES:" LOCATE 3, 2: PRINT C1: LOCATE 4, 2: PRINT C2 LOCATE 6, 1: PRINT "ITTERATIONS:"; MI LOCATE 8, 1: PRINT "IGNORE <"; IG LOCATE 11, 1: PRINT "CURRENT POSITION:" LOCATE 14, 1: PRINT "ITTERATIONS:" FOR M = 0 TO 239 X0 = -1.5 + M / 160 FOR N = 0 TO 479 Y0 = 1.5 - N / 160 X = X0 Y = Y0 FOR I = 1 TO MI X1 = X * X - Y * Y + C1 Y1 = 2 * X * Y + C2 X = X1 Y = Y1 Z = X * X + Y * Y IF Z > 4 THEN EXIT FOR NEXT I K = 15 / (MI - IG) L = ((I - IG) * K) IF I < IG THEN L = 0 PSET (M + 160, N), L PSET (639 - M, 479 - N), L IF D = 1 THEN LOCATE 12, 2: PRINT " ": LOCATE 12, 2: PRINT M; N LOCATE 15, 2: PRINT " ": LOCATE 15, 2: PRINT I END IF K$ = INKEY$ IF K$ = "I" THEN D = -D: LOCATE 12, 2: PRINT " ": LOCATE 15, 2: PRINT " " IF K$ = CHR$(27) THEN GOTO 1 NEXT N NEXT M LOCATE 18, 1: PRINT "JULIA COMPLETE." DO K$ = INKEY$ IF K$ = "S" THEN EXIT DO IF K$ = CHR$(27) THEN GOTO 1 LOOP LOCATE 20, 1: PRINT "SAVING..." F$ = RIGHT$("00" + MID$(STR$(F), 2), 3) OPEN "JULIA" + F$ + ".BIN" FOR BINARY AS #1 FOR I = 1 TO 15 PUT #1, , C(I) NEXT I PUT #1, , C1 PUT #1, , C2 PUT #1, , MI PUT #1, , IG DEFINT L-M FOR Y = 0 TO 240 LOCATE 21, 2: PRINT "Y ="; Y M = 0 L = 0 FOR X = 160 TO 639 IF POINT(X, Y) = L THEN M = M + 1 ELSE PUT #1, , M: PUT #1, , L: L = POINT(X, Y): M = 0 NEXT X PUT #1, , M PUT #1, , L NEXT Y CLOSE LOCATE 20, 1: PRINT "SAVE COMPLETE. " LOCATE 21, 1: PRINT " " DO LOOP UNTIL INKEY$ = CHR$(27) 1 END SUB DEFSNG L-M SUB PALETTES SHARED P() AS SINGLE SCREEN 13 FOR I = 0 TO 255 PALETTE I + 1, P(I) NEXT I A = 1 C = 1 FOR I = 0 TO 1 FOR N = 0 TO 8 IF A < 18 THEN LOCATE (N + 1) * 2, (I * 20) + 1: PRINT A FOR X = 0 TO 14 S = (I * 168) + 32 LINE (S + X * 5, 4 + (N * 16))-(S + (X + 1) * 5, 16 + (N * 16)), C, BF C = C + 1 NEXT X END IF A = A + 1 NEXT N NEXT I DO LOOP UNTIL INKEY$ = CHR$(27) END SUB SUB SHOWLOC SHARED P() AS SINGLE DEFINT L-M DIM C(60) SCREEN 12 WIDTH 80, 60 FOR I = 1 TO 14 PALETTE I, P(195 + I) NEXT I PALETTE 15, (65536 * 63) + (256 * 63) + 63 LINE (159, 0)-(159, 479), 15 LOCATE 1, 1: COLOR 15 PRINT "LOADING MANDELBROT" PRINT "SET...." OPEN "JULIAM00.BIN" FOR BINARY AS #1 FOR Y = 0 TO 240 XS = 159 XL = 0 DO GET #1, , L GET #1, , M XE = XS + L M = M - 1: IF M < 0 THEN M = 0 IF XS > 159 THEN LINE (XS, Y)-(XE, Y), M LINE (XS, 479 - Y)-(XE, 479 - Y), M END IF XS = XE + 1 IF XE = 639 THEN EXIT DO LOOP NEXT Y CLOSE LOCATE 1, 1 PRINT "LOADINT COMPLETE. " PRINT " " LOCATE 5, 1: PRINT "TO GET TO MENU" LOCATE 6, 1: PRINT "TYPE *." LOCATE 12, 1: PRINT "ENTER JULIA NUMBER" PRINT "TO LOCATE, OR '0' TO" PRINT "TO LOCATE YOUR OWN." DO FOR I = 18 TO 30 LOCATE I, 1: PRINT " " NEXT I LOCATE 18, 1 INPUT N$ IF N$ = "*" THEN GOTO 4 N = VAL(MID$(N$, 1, 3)) IF N = 0 THEN LOCATE 18, 1: PRINT "USE ARROW KEYS" PRINT "TO MOVE POINTER." X = 175: Y = 15 INC = 2.5 / 480 XS = -2 YS = -1.25 DO LOCATE 22, 1: PRINT " " PRINT " " LOCATE 22, 1: PRINT XX: PRINT YY C(0) = POINT(X, Y) N = 1 FOR I = X - 7 TO X + 7 C(N) = POINT(I, Y - 7) C(N + 1) = POINT(I, Y + 7) N = N + 2 NEXT I FOR I = Y - 7 TO Y + 7 C(N) = POINT(X - 7, I) C(N + 1) = POINT(X + 7, I) N = N + 2 NEXT I LINE (X - 7, Y - 7)-(X + 7, Y + 7), 15, B PSET (X, Y), 15 DO K$ = INKEY$ IF K$ > "" THEN EXIT DO LOOP OX = X: OY = Y IF LEN(K$) = 2 THEN K = ASC(RIGHT$(K$, 1)) IF K = 72 THEN Y = Y - 1 IF K = 75 THEN X = X - 1 IF K = 77 THEN X = X + 1 IF K = 80 THEN Y = Y + 1 IF X > 625 THEN X = 625 IF X < 175 THEN X = 175 IF Y > 465 THEN Y = 465 IF Y < 15 THEN Y = 15 END IF XX = XS + ((X - 160) * INC) YY = YS + (Y * INC) IF K$ = CHR$(56) THEN GOTO 4 PSET (OX, OY), C(0) N = 1 FOR I = OX - 7 TO OX + 7 PSET (I, OY - 7), C(N) PSET (I, OY + 7), C(N + 1) N = N + 2 NEXT I FOR I = OY - 7 TO OY + 7 PSET (OX - 7, I), C(N) PSET (OX + 7, I), C(N + 1) N = N + 2 NEXT I LOOP END IF IF N > 0 THEN F$ = "JULIA" + RIGHT$("00" + MID$(STR$(N), 2), 3) LOCATE 20, 1: PRINT "SEARCHING FOR FILE" LOCATE 21, 1: PRINT F$ + "..." OPEN F$ + ".BIN" FOR BINARY AS #1 GET #1, , A IF EOF(1) THEN CLOSE BEEP LOCATE 23, 1: COLOR 14: PRINT "ERROR!!! NO FILE" COLOR 15 DO LOOP UNTIL INKEY$ = CHR$(27) LOCATE 20, 1: PRINT " " LOCATE 21, 1: PRINT " " LOCATE 22, 1: PRINT " " SHELL "DEL " + F$ + ".BIN" GOTO 10 END IF FOR I = 1 TO 14 GET #1, , A NEXT I GET #1, , C1 GET #1, , C2 CLOSE LOCATE 24, 1: PRINT "COORDINATES:" PRINT " "; C1 PRINT " "; C2 HS = -2 VS = 1.25 ST = 2.5 / 480 FOR X = 0 TO 480 HS = HS + ST IF HS >= C1 THEN EXIT FOR NEXT X FOR Y = 0 TO 480 VS = VS - ST IF VS <= C2 THEN EXIT FOR NEXT Y X = X + 161 Y = Y + 1 LINE (X, Y)-(X, Y + 6), 15 LINE -(X + 6, Y), 15 LINE -(X, Y), 15 LINE (X + 3, Y + 4)-(X + 8, Y + 9), 15 LINE (X + 4, Y + 3)-(X + 9, Y + 8), 15 LINE (X + 4, Y + 4)-(X + 9, Y + 9), 15 PAINT (X + 1, Y + 1), 15, 15 H = (X / 8) + 2 V = (Y / 8) + 3 COLOR 15 LOCATE INT(V), INT(H): PRINT N$; : LOCATE 1, 1 DO LOOP UNTIL INKEY$ = CHR$(27) END IF 10 LOOP 4 SCREEN 0 WIDTH 80, 25 END SUB