📄 10.5 fractint 19.5+
字号:
<P>JIIM.C=A1=AA=A1=AAInverse julia and orbits window code </P>
<P>LSYS.C=A1=AA=A1=AALsystems code</P>
<P>LSYS.H </P>
<P>LSYSA.ASM </P>
<P>LSYSAF.ASM </P>
<P>LSYSF.C </P>
<P>LYAPUNOV.ASM=A1=AA=A1=AALyapunov speedup code </P>
<P>MPMATH_C.C=A1=AA=A1=AAMark Peterson=AC=F0s =A1=B0fast-math=A1=B1 =
support routines</P>
<P>MPMATH_A.ASM=A1=AA=A1=AA(this stuff puts some of the routines =
supplied by your fav=20
orite =A1=B0C=A1=B1 compiler to shame!)</P>
<P>FPU387.ASM</P>
<P>FPU087.ASM</P>
<P>FMATH.H</P>
<P>MPMATH.H</P>
<P>CMPLX.H=A1=AA=A1=AAComplex math defines</P>
<P>HCMPLX.C=A1=AA=A1=AA4D Hypercomplex math</P>
<P>PARSER.C=A1=AA=A1=AAThe =A1=B0type=3Dformula=A1=B1 formula parser =
routines</P>
<P>BIGFLT.C=A1=AA=A1=AAWes Loewer=AC=F0s arbitrary precision library. =
All ASM code exists as C=20
also for portability.</P>
<P>BIG.H </P>
<P>BIGINIT.H </P>
<P>BIGPORT.H </P>
<P>BIGFLT.C </P>
<P>BIGINIT.C </P>
<P>BIGNUM.C </P>
<P>BIGNUMC.C </P>
<P>BIGNUMA.ASM </P>
<P>BIG.INC </P>
<P>BIGPORT.INC </P>
<P>VIDEO.ASM=A1=AA=A1=AAAssembler code containing all of the video =
routines (setting up t=20
he video, reading/writing pixels, zoom-box code, color-cycling, =
graphics-to=20
-text =A1=B0help=A1=B1 switch, ... with help from the routines below for =
special adapte=20
rs:</P>
<P>LOADMAP.C=A1=AA=A1=AALoad *.map files</P>
<P>TARGA.C=A1=AA=A1=AATARGA Video Routines</P>
<P>TARGA.H</P>
<P>FR8514A.ASM=A1=AA=A1=AA8514/A Routines</P>
<P>TPLUS.C=A1=AA=A1=AATarga+ video routines</P>
<P>TPLUS.H </P>
<P>TPLUS_A.ASM </P>
<P>HGCFRA.ASM=A1=AA=A1=AAHercules Video Routines</P>
<P>DISKVID.C=A1=AA=A1=AA=A1=B0DISK/RAM=A1=B1 video routines</P>
<P>YOURVID.C=A1=AA=A1=AA=A1=B0Roll-your-own=A1=B1 video routines</P>
<P>GENERAL.ASM=A1=AA=A1=AAGeneral assembler code having nothing to do =
with fractals. Lo ts=20
of the tricky stuff is in here, and many of the =A1=B0C=A1=B1 routines =
that perform t=20
ricky functions rely on support code buried in here. In particular, this =
routin=20
e has the:</P>
<P>CPU, FPU Detectors</P>
<P>Keyboard routines</P>
<P>Mouse routines</P>
<P>Expanded memory routines</P>
<P>32-bit scaled integer multiply and divide routines</P>
<P>ENCODER.C=A1=AA=A1=AAGIF Encoder routines</P>
<P>GIFVIEW.C=A1=AA=A1=AAGIF Decoder routines</P>
<P>DECODER.C</P>
<P>TGAVIEW.C=A1=AA=A1=AA(including a TARGA-format decoder currently used =
only for loadin=20
gobsolete .tga format =A1=B0Continuous Potential=A1=B1 files)</P>
<P>F16.C, </P>
<P>TARGA_LC.H</P>
<P>LOADFILE.C=A1=AA=A1=AALoads the Fractint parameter info from a GIF =
file.subroutines for=20
DOS Fractint only</P>
<P>LOADFDOS.C</P>
<P>LINE3D.C=A1=AA=A1=AA3D manipulation routines</P>
<P>3D.C</P>
<P>PLOT3D=A1=AA=A1=AA3D subroutines for LINE3D.C and LORENZ.C</P>
<P>STEREO.C=A1=AA=A1=AARDS stereo module</P>
<P>ROTATE.C=A1=AA=A1=AAroutines which =A1=B0spin=A1=B1 the VGA =
video-DAC.</P>
<P>EDITPAL.C=A1=AA=A1=AApalette-editing mode</P>
<P>HELP.C=A1=AA=A1=AAHELP support title screen</P>
<P>INTRO.C</P>
<P>ZOOM.C=A1=AA=A1=AAZoombox manipulation</P>
<P>PRINTER.C=A1=AA=A1=AAThe Printer Routines.Data used by PRINTER.C</P>
<P>PRINTERA.ASM</P>
<P>MISCRES.C=A1=AA=A1=AAMiscellaneous resident subroutines; nothing =
special.</P>
<P>MISCOVL.C=A1=AA=A1=AAMiscellaneous overlayed subroutines; includes =
=A1=B4B=A1=B5atch command=20
.</P>
<P>REALDOS.C=A1=AA=A1=AASome subroutines isolated from Windows =
development work;nothi ng=20
special in here.</P>
<P>SLIDESHW.C=A1=AA=A1=AAAutokey interpreter</P>
<P>PORT.H=A1=AA=A1=AASome portability stuff, nothing special here.</P>
<P>EXTERNS.H=A1=AA=A1=AAAll external variable declarations</P>
<P>PROTOTYP.H=A1=AA=A1=AAAll function prototypes</P>
<P>
<H3>7.=C8=E7=BA=CE=D7=E9=D6=AF=C6=F0=C0=B4=B5=C4(How things are set =
up)?</H3>
<P></P>
<P>I've had to go through a lot of the code to figure out how things are =
setup.=20
T hese are my rough notes, which I=AC=F0m including in case they can =
help someone=20
else .<BR>
<UL>----Ken Shirriff</UL>
<P></P>
<P>The control flow is very confusing. Here are some details:</P>
<P>Each fractal type has an entry in the fractal specific table in =
fractalp.c.=20
Entr ies that are not displayed are marked with an asterisk. Each entry =
ismarked=20
as int or not int, and either has a pointer to another entry(tofloat) or =
NOFRACTAL. If you select float and the type is int or vice versa, you =
will end=20
up with th e tofloat type. (e.g. If you select entry MANDEL, and select =
floating=20
point, yo u will get entry MANDELFP). There are also pointers tojulia =
and=20
tomandel, which allow you to switch between mandel and julia. The four =
functions=20
listed are cu =
rfractalspecific=A1=FAorbitcalc,curfractalspecific=A1=FAper_pixel,=20
curfractalspecific=A1=FAp er_image, and =
curfractalspecific=A1=FAcalctype.</P>
<P>main calls calcfracinit.</P>
<P>calcfractint: this sets up curfractalspecific, which is the =
appropriate entry=20
fr om the fractalspecific table. This routine does the int/float =
conversion.=20
</P>
<P>main calls calcfract, which calls timer, which calls perform_worklist =
perform_wo rklist calls curfractalspecific=A1=FAper_image, which is eg. =
MandelSetup=20
MandelS etup: sets calctype to curfractalspecific=A1=FAcalctype, or for =
special cases=20
(eg. decomposition) to StandardFractal perform_worklist calls solidguess =
(or=20
whateve r drawing system) solidguess calls *calctype for each pixel; =
calctype is=20
eg. Sta ndardFractal StandardFractal calls =
curfractalspecific=A1=FAper_pixel once,=20
and then loops over each iteration calling =
curfractalspecific=A1=FAorbitcalc. These=20
routines are eg. mandel_per_pixel and JuliaFractal.</P>
<P>Here is the structure of the main routine. For overlay reasons a lot =
of this=20
log ic is now in FRAMAIN2.C.</P>
<P>
<UL><PRE>main()
{
initialize things
restorestart:
if loading, look after specifying image
imagestart:
while (adapter<0) {
process keys from short main menu
}
while (1) {
if (calc_status !=3D 2 || showfile=3D=3D0) {
initialize videoentry from videotable=A3=DBadapter=A3=DD
initialize size, color, etc. from videoentry
setvideomode()
}
if (showfile=3D=3D0) {
load file
}
calcfracinit();
save corners, zoom data
if (showfile !=3D 0) {
calcfract(); /* calculates the fractal until interrupted */
}
resumeloop:
if (no key pressed) {
set keypress =3D 13 to continue
} else if (key pressed) {
check input key
} else if (batch mode) {
look after batch key
}
process key from long menu
}
}</PRE></UL><PRE></PRE>
<H3>8.=CF=D4=CA=BE=B7=BD=CA=BD=C8=E7=BA=CE=B9=DC=C0=ED(How the video =
entries are managed)?</H3>
<P>get_video_mode(fractal_info): This routine is used to select a video =
mode to=20
mat ch a picture we're loading. It loads vidtbl and then tries to find a =
video m=20
ode that matches that in fractal_info. Asks the user to select one if =
there's no=20
good match. Figures out how to reduce the image to fit the screen.</P>
<P>select_video_mode(curmode): This is the main-menu routine for the =
user to=20
pick a video mode. picks default video mode, lets user select mode from =
menu,=20
copies entry to videoentry, puts entry in videotable if not there, calls =
update_fracti nt_cfg if key reassigned, returns key corresponding to =
mode.</P>
<P>check_vidmode_key(option, keypress): if keypress corresponds to a =
videomode=20
in videotable (for option 0) or vidtbl (for option 1) return the =
videomode=20
index, else -1.</P>
<P>check_vidmode_keyname: converts ascii key name into key number.</P>
<P>adapter_detect: checks for type of video (ega, cga, etc) and set=20
video_type,mode 7text, textsafe.</P>
<P>load_videotable:reads the entries in fractint.cfg into vidtbl copies =
entries=20
wit h an associatedfunction key into videotable.</P>
<P>load_fractint_cfg:reads video modes in fractint.cfg into vidtbl (or =
copies=20
from videotable) if fractint.cfg missing or bad.</P>
<P>update_fractint_cfg:writes the entry in videoentry into the =
fractint.cfg=20
file. vidtbl:contains the video modes from fractint.cfg</P>
<P>videotable: contains video modes with function keys; initialized in =
video.asm=20
</P>
<P>video_type: contains type: hgc, egc, cga, mcga</P>
<P>Here is how the floating point modes are set up. parser.c uses the=20
MathTypes:</P>
<P>D_MATH: uses double precision routines, such as dStkMul, and =
FPUsincos. This=20
is used if we have a fpu.</P>
<P>M_MATH: uses MP type (mantissa, exponent). These routines such as =
mStkAdd=20
call MPCadd, which call pMPadd, which calls MPadd086 or MPadd386.</P>
<P>The MP routines work on multiple precision, MPC works on complex =
pairs of mu=20
ltiple precision.</P>
<P>L_MATH: uses integer math. Routines such as lStkAdd.</P>
<P></P>
<P>=CE=DE=D2=C9=A3=ACFRACTINT =
19.5=B5=C4=D4=B4=B4=FA=C2=EB=CA=C7=B7=C7=B3=A3=D3=D0=BC=DB=D6=B5=B5=C4=A3=
=AC=CE=D2=C3=C7=B4=D3=D6=D0=BF=C9=D2=D4=D1=A7=B5=BD=D0=ED=B6=E0=B1=E0=B3=CC=
=BC=BC=C7=C9=A1=A3Fractin t=20
19.5=C8=ED=BC=FE=CA=C7=C3=E2=B7=D1=B5=C4=B2=A2=C7=D2=B9=AB=BF=AA=C8=AB=B2=
=BF=D4=B4=B4=FA=C2=EB=A3=AC=CB=F9=D2=D4=CE=D2=C3=C7=D2=B2=C4=E2=CA=D5=C8=EB=
=A3=AC=B5=AB=BF=BC=C2=C7=B5=BD=C4=DA=C8=DD=CC=AB=B6=E0(=D4=BC80=CD=F2=20
=D7=D6)=A3=AC=D6=BB=BA=C3=B7=C5=D4=DA=D3=EB=B1=BE=CA=E9=C5=E4=CC=D7=B5=C4=
=B9=E2=C5=CC=C9=CF=A1=A3=B9=BA=C2=F2=C1=CB=B8=C3=B9=E2=C5=CC=B5=C4=B6=C1=D5=
=DF=A3=AC=BF=C9=B4=D3=D6=D0=D5=D2=B5=BD=CB=F9=D3=D0=D4=B4=B4=FA=C2=EB=A1=A3=
=B5=B1 =
=C8=BB=A3=AC=C8=E7=B9=FB=D3=D0=CC=F5=BC=FE=A3=AC=C4=E3=D2=B2=BF=C9=D2=D4=B4=
=D3=CD=F8=C9=CF=D4=D9=D5=D2=A1=A3=D3=A6=B5=B1=CB=B5=C3=F7=B5=C4=CA=C7=A3=AC=
=D5=E2=D0=A9=D4=B4=B4=FA=C2=EB=BC=AB=C6=E4=B8=B4=D4=D3=A3=AC=C6=E4=B1=E0=D0=
=B4=D5=DF=B6=BC=20
=CA=C7=B8=DF=CA=D6=A3=AC=CB=F9=D2=D4=D2=BB=B0=E3=B6=C1=D5=DF=B1=F0=D6=B8=CD=
=FB=B6=BC=C4=DC=B6=C1=B6=AE=CB=FC=C3=C7=A1=A3=C8=E7=B9=FB=C4=E3=C7=A1=BA=C3=
=B6=D4C=D3=EF=D1=D4=CA=AE=B7=D6=CA=EC=CF=A4=A3=AC=D5=E2=D0=A9=D4=B4=B3=CC=
=D0=F2=BB=B9 =
=CA=C7=BA=DC=D6=B5=B5=C3=C4=E3=B2=CE=BF=BC=B5=C4=A1=A3=D3=C9=D3=DA=D5=E2=D0=
=A9=D4=B4=B4=FA=C2=EB=BC=B8=BA=F5=C9=E6=BC=B0=C1=CBIBM=20
PC=CB=F9=D3=D0=D3=B2=BC=FE=BA=CD=C8=ED=BC=FE=B1=E0=B3=CC=BC=BC=C7=C9=A3=AC=
=C1=CB=BD=E2=D5=E2=D0=A9 =
=D4=B4=B4=FA=C2=EB=B5=C4=BA=C3=B4=A6=CA=C7=B7=C7=B3=A3=C3=F7=CF=D4=B5=C4=A3=
=AC=C4=E3=BF=C9=D2=D4=BD=AB=C6=E4=D6=D0=B5=C4=CB=BC=CF=EB=CE=FC=CA=D5=B9=FD=
=C0=B4=A3=AC=D3=C3=B5=BD=D7=D4=BC=BA=B5=C4=B3=CC=D0=F2=D6=D0=C8=A5=A1=A3=BC=
=B4=CA=B9=C4=E3=20
=B6=D4=B7=D6=D0=CE=CB=BF=BA=C1=B2=BB=B9=D8=D0=C4=A3=AC=D5=E2=D0=A9=D4=B4=B4=
=FA=C2=EB=D2=B2=D3=D0=B2=CE=BF=BC=BC=DB=D6=B5=A1=A3</P>
<P>=D4=D9=CC=E1=D0=D1=C4=E3=D2=BB=BE=E4=A3=AC=D4=DAInternet=C9=CF=A3=AC=D3=
=C3<A href=3D"http://www.yahoo.com/">Yahoo!=D2=FD=C7=E6</A>=CA=E4=C8=EB=20
=B9=D8=BC=FC=B4=CA=A1=B0fractal=A1=B1=A1=A2=A1=B0graphics=A1=B1=A1=A2=A1=B0=
FRACTINT=A1=B1=D2=BB=B6=A8=C4=DC=D5=D2=B5=BD=C4=E3=B8=D0=D0=CB=C8=A4=B5=C4=
=CE=DE=CA=FD=B6=AB=CE=F7=A1=A3 <A=20
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/netfra=
c.htm">=C4=FA=BF=C9=D2=D4=CF=C8=BF=B4=D2=BB=CF=C2=D5=E2=C0=EF!</A></P>
<P>
<HR width=3D"100%">
<CENTER><FONT color=3D#008040>
<TABLE border=3D1>
<TBODY>
<TR>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/notice=
.htm">=D4=C4=B6=C1=CB=B5=C3=F7</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/pref1.=
htm">=D0=F2=D1=D4=D2=BB</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/pref2.=
htm">=D0=F2=D1=D4=B6=FE</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/conten=
t.htm">=C4=BF=C2=BC</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/101.ht=
m">1</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/201.ht=
m">2</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/301.ht=
m">3</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/401.ht=
m">4</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/501.ht=
m">5</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/601.ht=
m">6</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/701.ht=
m">7</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/801.ht=
m">8</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/901.ht=
m">9</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/1001.h=
tm">10</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/EP.htm=
">=CE=B2=C9=F9</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/REF.ht=
m">=B2=CE=BF=BC=CE=C4=CF=D7</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/EE.htm=
">=BA=F3=BC=C7</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/DDEX.h=
tm">=CB=F7=D2=FD</A></TD></TR></TBODY></TABLE></FONT>
<TABLE border=3D1>
<TBODY>
<TR>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/1001.h=
tm">10.1</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/1002.h=
tm">10.2</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/1003.h=
tm">10.3</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/1004.h=
tm">10.4</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/1005.h=
tm">10.5</A></TD>
<TD><A=20
=
href=3D"http://www.phil.pku.edu.cn/personal/huajie/fractalart/html/ep.htm=
">=CE=B2=C9=F9</A></TD></TR></TBODY></TABLE></FONT></CENTER>
<HR width=3D"100%">
=1A</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -