home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
451-475
/
apd453
/
mandelbrot.amos
/
mandelbrot.amosSourceCode
Wrap
AMOS Source Code
|
1993-01-08
|
6KB
|
269 lines
R1#=-2.0
R2#=0.6
I1#=-1.0
I2#=1.0
ITER#=60
FX#=0 : FY#=0
F$=""
CHOSEN=0
Screen Open 0,354,256,16,Lowres
Cls 0
Screen Open 1,354,256,32,Lowres
Screen Display 1,112,33,,
Screen 1
Palette ,,,,,,,,,,,,,,,,$0,$CC4,$F00,$C0,$C0C,$CC0,$F,$404,$C0,$FF,$FF0,$F44,$44F,$C40,$F44,$F00
Limit Mouse 112,10 To 464,335
Curs Off
Flash Off
Paper 0 : Ink 1 : Cls 0
Gosub ABOUT
Gosub SETMEN
Do
Do
If F$=""
Menu Inactive(1,3)
Else
Menu Active(1,3)
End If
QUIT=0 : CHOSEN=0
Gosub SLCTMENU
Exit If CHOSEN>0 or QUIT>0
Loop
If QUIT=1 Then Menu Off : Default : Edit
Menu Off
Menu Active(1,6)
Hide On
RSTEP#=(R2#-R1#)/354
ISTEP#=(I2#-I1#)/256
For Y#=FY# To 256
RE#=R1#
IM#=I1#+Y#*ISTEP#
For X#=FX# To 354
If Mouse Key=2 Then Menu On : Show On : Exit 2
RE#=R1#+X#*RSTEP#
IC#=0
RC#=0
For IN#=1 To ITER#
RI#=RC#*RC#-IC#*IC#+RE#
IC#=RC#*IC#*2+IM#
RC#=RI#
If RC#>2 or RC#<-2 or IC#>2 or IC#<-2 Then Goto LAB
Next IN#
C=0 : Goto LABTWO
LAB:
C=Int(Sqr(255/ITER#*IN#))
LABTWO:
Plot X#,(255-Y#),C+16
Next X#
FX#=0
Next Y#
FX#=X# : FY#=Y#
Menu On : Show On
Loop
SETMEN:
Menu$(1)=" Project "
Menu$(2)=" Set "
Menu$(3)=" Mandelbrot "
Menu$(1,1)=" Clear "
Menu$(1,2)=" Load "
Menu$(1,3)=" Save " : Menu Inactive(1,3)
Menu$(1,4)=" Save As"
Menu$(1,5)=" Plot "
Menu$(1,6)=" Expand " : Menu Inactive(1,6)
Menu$(1,7)=" About "
Menu$(1,8)=" Quit "
Menu$(2,1)=" Real Min "
Menu$(2,2)=" Real Max "
Menu$(2,3)=" Imag Min "
Menu$(2,4)=" Imag Max "
Menu$(2,5)="Iterations"
Menu$(2,6)=" Default "
Menu$(3,1)="(SS 4)by Bob Devries(SS 0)" : Menu Inactive(3,1)
Menu On
Return
SLCTMENU:
If Choice
If Choice(1)=1
If Choice(2)=1
Cls 0 : FX#=0 : FY=0
Menu Inactive(1,6)
End If
If Choice(2)=2
Gosub PICLOAD
End If
If Choice(2)=3
Gosub PICSAVE
End If
If Choice(2)=4
Gosub NEWNAME : Gosub PICSAVE
End If
If Choice(2)=5
CHOSEN=1
End If
If Choice(2)=6
Gosub ENLARGE
End If
If Choice(2)=7
Gosub ABOUT
End If
If Choice(2)=8
QUIT=1
End If
End If
If Choice(1)=2
If Choice(2)=1
Wind Save
Wind Open 1,60,50,30,7,1
Centre "Current value : "+Str$(R1#)
Print : Centre "Input Real Axis" : Print
Centre "minimum value " : Print
Clear Key
Input " => ? ";R1#;
Wind Close
End If
If Choice(2)=2
Wind Save
Wind Open 1,64,50,30,7,1
Centre "Current value : "+Str$(R2#)
Print : Centre "Input Real Axis" : Print
Centre "maximum value " : Print
Clear Key
Input " => ? ";R2#;
Wind Close
End If
If Choice(2)=3
Wind Save
Wind Open 1,60,50,30,7,1
Centre "Current value : "+Str$(I1#)
Print : Centre "Input Imaginary Axis" : Print
Centre "minimum value " : Print
Clear Key
Input " => ? ";I1#;
Wind Close
End If
If Choice(2)=4
Wind Save
Wind Open 1,60,50,30,7,1
Centre "Current value : "+Str$(I2#)
Print : Centre "Input Imaginary Axis" : Print
Centre "maximum value " : Print
Clear Key
Input " => ? ";I2#;
Wind Close
End If
If Choice(2)=5
Wind Save
Wind Open 1,60,50,30,7,1
Centre "Current value : "+Str$(ITER#)
Print : Centre "Input Number of" : Print
Centre "iterations" : Print
Input " => ?";ITER#
Wind Close
End If
If Choice(2)=6
R1#=-2.0
R2#=0.6
I1#=-1.0
I2#=1.0
ITER#=60
FX#=0
FY#=0
End If
End If
End If
Return
PICLOAD:
F$=Fsel$("*.iff")
If F$<>""
Load Iff F$
Gosub VARLOD
Gosub STATUS
Menu Active(1,6)
End If
Return
PICSAVE:
Save Iff F$
Gosub VARSAV
Return
NEWNAME:
F$=Fsel$("*.iff")
Return
VARLOD:
V$=Left$(F$,Len(F$)-4)+".var"
If Exist(V$)
Open In 1,V$
Input #1,T$ : R1#=Val(T$)
Input #1,T$ : R2#=Val(T$)
Input #1,T$ : I1#=Val(T$)
Input #1,T$ : I2#=Val(T$)
Input #1,T$ : ITER#=Val(T$)
Input #1,T$ : FX#=Val(T$)
Input #1,T$ : FY#=Val(T$)
RSTEP#=(R2#-R1#)/320
ISTEP#=(I2#-I1#)/200
Close 1
End If
Return
VARSAV:
V$=Left$(F$,Len(F$)-4)+".var"
Open Out 1,V$
Print #1,Str$(R1#)
Print #1,Str$(R2#)
Print #1,Str$(I1#)
Print #1,Str$(I2#)
Print #1,Str$(ITER#)
Print #1,Str$(X#)
Print #1,Str$(Y#)
Close 1
Return
ABOUT:
Wind Save
Wind Open 1,40,20,32,10,2
Border 1,17,
Centre "Mandelbrot Generator" : Print
Centre "from a programme" : Print
Centre "by Jeremy and Marty Spiller " : Print
Centre "AMOS conversion " : Print
Centre "by Bob Devries" : Print
Centre "28th April, 1991" : Print : Print
Centre "press either button"
Repeat
Until Mouse Key
Wind Close
Return
ENLARGE:
F$=""
Change Mouse 2
Limit Mouse 124,22 To 464,335
Repeat
Until Mouse Key
XC#=X Mouse : YC#=Y Mouse
XC#=XC#-112 : YC#=YC#-45
XL#=XC#-20 : XH#=XC#+20
YH#=YC#-12 : YL#=YC#+12
XLOW#=R1#+XL#*RSTEP#
XHIGH#=R1#+XH#*RSTEP#
YLOW#=I1#+(289-YL#)*ISTEP#
YHIGH#=I1#+(289-YH#)*ISTEP#
R1#=XLOW# : R2#=XHIGH#
I1#=YLOW# : I2#=YHIGH#
FX#=0 : FY#=0 : Cls 0
Menu Inactive(1,6)
Menu Inactive(1,3)
Change Mouse 1
Limit Mouse 112,10 To 464,335
Gosub STATUS
Return
STATUS:
Wind Save
Wind Open 1,64,50,25,7,2
Fix(6)
Print "Real min = ";R1#
Print "Real max = ";R2#
Print "Imag min = ";I1#
Print "imag max = ";I2#
Fix(16)
Print "Iterations ";ITER#;
Wait 150
Wind Close
Return