home *** CD-ROM | disk | FTP | other *** search
/ ftp.xmission.com / 2014.06.ftp.xmission.com.tar / ftp.xmission.com / pub / lists / fractdev / archive / v01.n017 < prev    next >
Internet Message Format  |  1999-02-21  |  42KB

  1. From: owner-fractdev-digest@lists.xmission.com (fractdev-digest)
  2. To: fractdev-digest@lists.xmission.com
  3. Subject: fractdev-digest V1 #17
  4. Reply-To: fractdev-digest
  5. Sender: owner-fractdev-digest@lists.xmission.com
  6. Errors-To: owner-fractdev-digest@lists.xmission.com
  7. Precedence: bulk
  8.  
  9.  
  10. fractdev-digest       Monday, February 22 1999       Volume 01 : Number 017
  11.  
  12.  
  13.  
  14.  
  15. ----------------------------------------------------------------------
  16.  
  17. Date: Tue, 8 Dec 1998 17:57:45 -0600
  18. From: "Tim Wegner" <twegner@phoenix.net>
  19. Subject: Re: (fractdev) Worklist and future directions 
  20.  
  21. Humberto asked:
  22.  
  23. >     Is the non-integer source avaliable anywhere? I could try to catch up
  24. > with mu Unix programming skills and make the port to SVGAlib
  25.  
  26. I''ll upload it in a few days. However I should point out that you don't 
  27. need to wait for me - the XFRACT defines effectively eliminate 
  28. integer math anyway.
  29.  
  30. >     Hm I am not sure but I do not know if there is a port of the SVGAlib to
  31. > DOS. Is it?
  32.  
  33. I believe that the SVGALIB for djgpp is essentially the same as the 
  34. UNIX version.
  35.  
  36. Tim
  37.  
  38.  
  39. - --------------------------------------------------------------
  40. Thanks for using Fractdev, The Fractint Developer's Discussion List
  41. Post Message:   fractdev@lists.xmission.com
  42. Get Commands:   majordomo@lists.xmission.com "help"
  43. Administrator:  twegner@phoenix.net
  44. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  45.  
  46. ------------------------------
  47.  
  48. Date: Wed, 9 Dec 1998 16:54:39 -0200 (EDT)
  49. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  50. Subject: (fractdev) SVGALib and BC compiling.
  51.  
  52. On Tue, 8 Dec 1998, Tim Wegner wrote:
  53.  
  54. > I believe that the SVGALIB for djgpp is essentially the same as the 
  55. > UNIX version.
  56.  
  57.     That sounds intresting I'll look into it this weekend (time permitting).
  58.  
  59.     About bugs in BC compiling:
  60.  
  61.     One i've already mention: the macro USE_BIGNUM_C_CODE was commented in
  62. port.h. Uncommenting it avoided an infinite loop (mentioned in the comments). A
  63. bug persisted and digging deeper I found some problems with the overlay options
  64. in BC compile files/project files: FRACTALB.C cannot be overlaid because the
  65. addresses of the routines bn/bfMODbailout are assigned to bignumbailout (I guess
  66. in CMDFILES.C or somethign like it). In the ,LNK (link conf) user in BC the
  67. FRACTALB.C was overlaid as a whole (different than MSC that overlays chunks
  68. acording to directives on the code). Well summing up:
  69.  
  70. #define USE_BIGNUM_C_CODE must be ucomented (this could be problem in MSC as well)
  71.  
  72. FRACTALB.C must not be overlaid in BC (I'll send the new .LNK and .PRJ files to
  73. Tim later today).
  74.  
  75.     []'s
  76.  
  77.     Humberto R. Baptista
  78.     humberto@insite.com.br
  79.  
  80. - ---------------------------------------------------------------------------
  81. Insite - Solucoes Internet                         http://www.insite.com.br
  82.  
  83.  
  84.  
  85. - --------------------------------------------------------------
  86. Thanks for using Fractdev, The Fractint Developer's Discussion List
  87. Post Message:   fractdev@lists.xmission.com
  88. Get Commands:   majordomo@lists.xmission.com "help"
  89. Administrator:  twegner@phoenix.net
  90. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  91.  
  92. ------------------------------
  93.  
  94. Date: Sat, 12 Dec 1998 11:53:04 -0600
  95. From: "Tim Wegner" <twegner@phoenix.net>
  96. Subject: (fractdev) function variable presets
  97.  
  98. I have a question for users about the function variables in Fractint.  
  99. These are the variables fn1, fn2, etc. that are used in some built-in  
  100. fractal types and can also be used in formula types.   
  101.  
  102.  
  103. Currently there are no preset values for these that are fractal-type- 
  104. specific. For example, if fn1 = sin and fn2 = tanh, these values are  
  105. remembered when you change fractal types even though the  
  106. function variables probably have completely different meaning for  
  107. the new type.   
  108.  
  109.  
  110. <color><param>0100,0100,0100</param>I have two related issues, both relating to some code contributed  
  111. by Humberto Baptista. 
  112.  
  113.  
  114. <color><param>0000,0000,0000</param>1. Humberto has added a new type (another from the prolific Cliff  
  115. Pickover) that generates just a naked blue dot with the default  
  116. values of the function variables. This fractal type is begging for  
  117. some different default function variable values, but I'm not sure what 
  118.  the logic would be. Change to the defaults only when the fractal  
  119. type changes? But if you played with this fractal, moved to a  
  120. different type, then came back, would the function variables be  
  121. reset? Or should Fractint remember the function variable values,  
  122. and have separate defaults, for each fractal that uses them?   
  123.  
  124.  
  125. 2. Humberto has also added a generalized popcornjul fractal. I  
  126. dislike adding new types unncessesarily, and would prefer to  
  127. merge the generalized type with the limited one. This, however,  
  128. requires making the function variables default to the values that  
  129. make the generalized popcornjul the same as the ungeneralized  
  130. one, so the issue of preset values for function variables comes up  
  131. again.   
  132.  
  133.  
  134. Does anyone object to giving all fractals that use function variables  
  135. preset values that are reset to the defaults whenever the fractal  
  136. type is changed to that type?   
  137.  
  138.  
  139. <color><param>0100,0100,0100</param>Tim 
  140.  
  141.  
  142.  
  143.  
  144.  
  145. <nofill>
  146.  
  147. - --------------------------------------------------------------
  148. Thanks for using Fractdev, The Fractint Developer's Discussion List
  149. Post Message:   fractdev@lists.xmission.com
  150. Get Commands:   majordomo@lists.xmission.com "help"
  151. Administrator:  twegner@phoenix.net
  152. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  153.  
  154. ------------------------------
  155.  
  156. Date: Sat, 12 Dec 1998 13:37:07 -0700
  157. From: Phil McRevis <legalize@xmission.com>
  158. Subject: Re: (fractdev) function variable presets 
  159.  
  160. In article <199812121753.LAA05705@voyager.c-com.net>,
  161.     "Tim Wegner" <twegner@phoenix.net>  writes:
  162. > <color><param>0100,0100,0100</param>I have two related issues [...]
  163.  
  164. Umm..... Tim, what's that? ^^^^^^^^^^^
  165.  
  166. > Does anyone object to giving all fractals that use function variables  
  167. > preset values that are reset to the defaults whenever the fractal  
  168. > type is changed to that type?   
  169.  
  170. Let me restate it to see if I understand it correctly:
  171.  
  172.     When you switch to a fractal type that uses the fn variables, they will
  173.     be set to default values?
  174.  
  175. Sounds fine.  I would expect all fractal "state" to be initialized
  176. when I switch fractal types.  I think there are some other little bits
  177. of state that I have noticed didn't get reset, but I can't remember
  178. what they are right now.
  179.                     -- Rich
  180.  
  181. - --------------------------------------------------------------
  182. Thanks for using Fractdev, The Fractint Developer's Discussion List
  183. Post Message:   fractdev@lists.xmission.com
  184. Get Commands:   majordomo@lists.xmission.com "help"
  185. Administrator:  twegner@phoenix.net
  186. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  187.  
  188. ------------------------------
  189.  
  190. Date: Sun, 13 Dec 1998 22:23:23 -0200 (EDT)
  191. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  192. Subject: Re: (fractdev) function variable presets
  193.  
  194. On Sat, 12 Dec 1998, Tim Wegner wrote:
  195.  
  196. > Does anyone object to giving all fractals that use function variables  
  197. > preset values that are reset to the defaults whenever the fractal  
  198. > type is changed to that type?   
  199.  
  200.     Since this is the behaviour when it comes to numerica and bailout
  201. options I guess it would beconsistente right now to make the same with preset
  202. funcions. If sometime later fractint remembers all the other parameters then we
  203. can extend (or build for) it to care for the functions.
  204.  
  205.     []'s
  206.  
  207.     Humberto R. Baptista
  208.     humberto@insite.com.br
  209.  
  210. - ---------------------------------------------------------------------------
  211. Insite - Solucoes Internet                         http://www.insite.com.br
  212.  
  213.  
  214. - --------------------------------------------------------------
  215. Thanks for using Fractdev, The Fractint Developer's Discussion List
  216. Post Message:   fractdev@lists.xmission.com
  217. Get Commands:   majordomo@lists.xmission.com "help"
  218. Administrator:  twegner@phoenix.net
  219. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  220.  
  221. ------------------------------
  222.  
  223. Date: Sun, 13 Dec 1998 20:20:48 -0600
  224. From: "Tim Wegner" <twegner@phoenix.net>
  225. Subject: Re: (fractdev) function variable presets
  226.  
  227. Humberto wrote:
  228. >     Since this is the behaviour when it comes to numerica and bailout
  229. > options I guess it would beconsistente right now to make the same with preset
  230. > funcions. If sometime later fractint remembers all the other parameters then we
  231. > can extend (or build for) it to care for the functions.
  232.  
  233. Jonathan Osuch pointed out to me that the generalized bifurcation 
  234. types already have function variable faults, so I'll just follow what he 
  235. did. The defaults get reset whenever you set that fractal type, but 
  236. you can change the settings as long as you don't change to a 
  237. different default. I've already done this for latoocartofian in my 
  238. version.
  239.  
  240. BTW Humberto, what country do you live in? I knew once but I 
  241. have forgotten. Not that it matters :-)
  242.  
  243. Tim
  244.  
  245. >     []'s
  246. >     Humberto R. Baptista
  247. >     humberto@insite.com.br
  248. > ---------------------------------------------------------------------------
  249. > Insite - Solucoes Internet                         http://www.insite.com.br
  250. > --------------------------------------------------------------
  251. > Thanks for using Fractdev, The Fractint Developer's Discussion List
  252. > Post Message:   fractdev@lists.xmission.com
  253. > Get Commands:   majordomo@lists.xmission.com "help"
  254. > Administrator:  twegner@phoenix.net
  255. > Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  256.  
  257.  
  258.  
  259. - --------------------------------------------------------------
  260. Thanks for using Fractdev, The Fractint Developer's Discussion List
  261. Post Message:   fractdev@lists.xmission.com
  262. Get Commands:   majordomo@lists.xmission.com "help"
  263. Administrator:  twegner@phoenix.net
  264. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  265.  
  266. ------------------------------
  267.  
  268. Date: Mon, 14 Dec 1998 01:05:57 -0200 (EDT)
  269. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  270. Subject: Re: (fractdev) function variable presets
  271.  
  272. On Sun, 13 Dec 1998, Tim Wegner wrote:
  273.  
  274. > Jonathan Osuch pointed out to me that the generalized bifurcation 
  275. > types already have function variable faults, so I'll just follow what he 
  276. > did. The defaults get reset whenever you set that fractal type, but 
  277. > you can change the settings as long as you don't change to a 
  278. > different default. I've already done this for latoocartofian in my 
  279. > version.
  280.  
  281.     hmpf. I haven't dug enought :-))))
  282.  
  283.     Since you're in to it what about setting the default in the popcornjulfn
  284. to sin/tan/sin/tan as in the original?
  285.  
  286. > BTW Humberto, what country do you live in? I knew once but I 
  287. > have forgotten. Not that it matters :-)
  288.  
  289.     At least my accent didn't gave me out :-)))) I live in Brasil, and it
  290. matters when we are making fractint development statistics ("Developped in more
  291. than nnn countries ...") and when it's time to return home ;->>> 
  292.  
  293.     []'s
  294.  
  295.     Humberto R. Baptista
  296.     humberto@insite.com.br
  297.  
  298. - ---------------------------------------------------------------------------
  299. Insite - Solucoes Internet                         http://www.insite.com.br
  300.  
  301.  
  302. - --------------------------------------------------------------
  303. Thanks for using Fractdev, The Fractint Developer's Discussion List
  304. Post Message:   fractdev@lists.xmission.com
  305. Get Commands:   majordomo@lists.xmission.com "help"
  306. Administrator:  twegner@phoenix.net
  307. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  308.  
  309. ------------------------------
  310.  
  311. Date: Mon, 21 Dec 1998 18:59:28 -0500
  312. From: Ron Barnett <rbarnett@telenet.net>
  313. Subject: (fractdev) Exponential Smoothing
  314.  
  315. Kerry Mitchell's ghost formulae provide a good platform to illustrate the 
  316. exponential smoothing method to provide smooth 24 bit coloring.  In his 
  317. formulae he applied the Vepstas log method which works well only for power 
  318. functions. With the formulae and pars presented here I apply exponential 
  319. smoothing to the mandelbrot set (to give a result very similar to Kerry's 
  320. application of the Vepstas formula), a more complex function using trig 
  321. functions, and a complex newton.
  322.  
  323. For non-convergent functions (e.g. the Mandelbrot function), use the 
  324. formula
  325.  
  326. iterexp = 0 (initialize)
  327. iterexp = iterexp + exp(-cabs(z))
  328.  
  329. at each iteration. Then use iterexp to color rather than the iteration 
  330. number.
  331.  
  332. For convergent functions (e.g. any of the Newton methods), use the formula
  333.  
  334. iterexp = 0 (initialize)
  335. oldz = 0 (initialize)
  336. iterexp = iterexp + exp(-1/cabs(oldz-z))
  337. oldz = z
  338.  
  339. The following are the formulae to use:
  340. ========================================================================  
  341. ========
  342.  
  343. MandExpGhost = { ; Ron Barnett, 1998  - modified from Kerry Mitchell
  344.         ;
  345.         ; colors Mandelbrot set by combining the smoothed iteration
  346.         ; with a background of rays from the center
  347.         ;
  348.         ; use decomp=256
  349.         ; real(p1) = bailout
  350.         ; imag(p1) = "ghost" adjustment: set to 0 for only
  351.         ;   background rays, try 2
  352.         ; calculation performed on variable zc, z used for coloring
  353.         ;
  354.         maxr = real(p1), scale = imag(p1)*pi/128
  355.         iterexp = 0, iter = 1, zc = 0, c = pixel, background = pixel:
  356.         iterexp = iterexp + exp(-cabs(zc)), iter = iter + 1, zc = sqr(zc)+c
  357.         ;
  358.         ; bailout
  359.         ;   compute smoothed iteration as "angle"
  360.         ;   multiply angle by background to get final z
  361.         ;   set z to background for interior points
  362.         ;   set "iteration done" flag (iter=-1)
  363.         ;
  364.         IF ((|zc| > maxr) || (iter == maxit))
  365.           smooth = iterexp*scale
  366.           ang = cos(smooth)+flip(sin(smooth))
  367.           z = background*ang
  368.           IF (iter == maxit)
  369.             z = background
  370.           ENDIF
  371.           iter = -1
  372.         ENDIF
  373.         iter > 0
  374.         }
  375.  
  376.  
  377. JMaskghost = { ; Ron Barnett, 1998
  378.         ; use decomp=256
  379.         ; real(p1) = bailout
  380.         ; imag(p1) = "ghost" adjustment:
  381.         maxr = real(p1), scale = imag(p1)*pi/128
  382.         iterexp = 0, iter = 1, zc = fn1(pixel), background = pixel:
  383.         iterexp = iterexp + exp(-cabs(zc)), iter = iter + 1
  384.         zc = P2*fn2(zc)^2 + P3
  385.         IF ((cabs(zc) > maxr) || (iter == maxit))
  386.           smooth = iterexp*scale
  387.           ang = cos(smooth)+flip(sin(smooth))
  388.           z = background*ang
  389.           IF (iter == maxit)
  390.             z = background
  391.           ENDIF
  392.           iter = -1
  393.         ENDIF
  394.         iter > 0
  395.         }
  396.  
  397. CmplxNewtghost = { ; Ron Barnett, 1998
  398.         ; use decomp=256
  399.         ; real(p1) = bailout
  400.         ; imag(p1) = "ghost" adjustment:
  401.         ; p2 = complex power
  402.         ; p3 = complex root
  403.         maxr = real(p1), scale = imag(p1)*pi/128
  404.         oldz = 0
  405.         iterexp = 0, iter = 1, zc = pixel, background = pixel:
  406.         iterexp = iterexp + exp(-1/cabs(oldz - zc)), iter = iter + 1
  407.         oldz = zc
  408.         z1 = (p2-1)*zc^p2 + p3
  409.         z2 = p2*zc^(p2-1)
  410.         zc = z1/z2
  411.         IF ((0.000001 > cabs(oldz-zc)) || (iter == maxit))
  412.           smooth = iterexp*scale
  413.           ang = cos(smooth)+flip(sin(smooth))
  414.           z = background*ang
  415.           IF (iter == maxit)
  416.             z = background
  417.           ENDIF
  418.           iter = -1
  419.         ENDIF
  420.         iter > 0
  421.         }
  422.  
  423. ==============================================================
  424.  
  425. Here are the actual pars:
  426.  
  427. MandExpGhost       { ; .                                     t=  0:01:02.12
  428.                      ; Ron Barnett, Dec 1998
  429.                      ; On a Toshiba Pentium II at 800 x 600
  430.   reset=1960 type=formula formulafile=rebexp01.frm
  431.   formulaname=mandexpghost passes=1 corners=-2.5/1.5/-1.5/1.5
  432.   params=1000000/10 float=y maxiter=100 inside=0 decomp=256
  433.   periodicity=0
  434.   colors=e0W<42>10W00W00W00V<65>W0GW0GW1H<63>WxyWyzWzzWzz<50>z1Wz0Wz0W<20>\
  435.   f0W cyclerange=0/255
  436.   }
  437.  
  438. calipers           { ; .                                     t=  0:02:49.38
  439.                      ; Copyright Ron Barnett, Dec 1998
  440.                      ; On a Toshiba Pentium II at 800 x 600
  441.   reset=1960 type=formula formulafile=rebexp01.frm
  442.   formulaname=JMaskghost function=acos/cosh
  443.   center-mag=-2.22045e-016/0/0.6666667/1/-90
  444.   params=100/50/1/0/-0.766/0 float=y maxiter=1000 inside=0 decomp=256
  445.   periodicity=0
  446.   colors=mJ9<32>zVFzVGzWGzWGyVG<32>X1GW0GW0GW0G<80>zy0zz0zy0<48>W10W00W00<\
  447.   47>mI9 cyclerange=0/255
  448.   }
  449.  
  450. dirty_spiral       { ; .                                     t=  0:24:03.94
  451.                      ; Copyright Ron Barnett, Dec 98
  452.                      ; On a Toshiba Pentium II at 800 x 600
  453.   reset=1960 type=formula formulafile=rebexp01.frm
  454.   formulaname=jmaskghost function=atan/sin
  455.   center-mag=-0.138173/0.415693/6.666667
  456.   params=1000/5/1/0/0/0.5932500000000001 float=y maxiter=5000 inside=0
  457.   decomp=256 periodicity=0
  458.   colors=vSG<29>X1GW0GW0GW0G<80>zy0zz0zy0<48>W10W00W00<46>mI9mI9mJ9mJ9nK9<\
  459.   28>yUFzVFzVFzVGzWGzWG<2>wTG cyclerange=0/255
  460.   }
  461.  
  462. Complex Spiral     { ; .                                     t=  0:05:34.61
  463.                      ; Copyright Ron Barnett, Dec 1998
  464.                      ; On a Cyrix 6x86(P200+) at 800 x 600
  465.   reset=1960 type=formula formulafile=rebexp01.frm
  466.   formulaname=CmplxNewtghost passes=1
  467.   center-mag=0.238245/0.19598/1.718213 params=1000000/4/1/4/1/3
  468.   float=y maxiter=256 inside=0 decomp=256 periodicity=0
  469.   colors=WWW<50>lD6lC6lD6<79>zy0zz0zz0zz0<64>XH0WG0WG0WG0<50>WWW
  470.   cyclerange=0/255
  471.   }
  472.  
  473. ========================================================================  
  474. ======
  475.  
  476. Ron Barnett
  477.  
  478. - --------------------------------------------------------------
  479. Thanks for using Fractdev, The Fractint Developer's Discussion List
  480. Post Message:   fractdev@lists.xmission.com
  481. Get Commands:   majordomo@lists.xmission.com "help"
  482. Administrator:  twegner@phoenix.net
  483. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  484.  
  485. ------------------------------
  486.  
  487. Date: Sun, 21 Feb 1999 22:00:14 -0700
  488. From: Phil McRevis <legalize@xmission.com>
  489. Subject: (fractdev) flat-memory model port
  490.  
  491. OK, this last round of discussion about fractint and the limits of the
  492. medium memory model has jostled me out of my sloth :-).
  493.  
  494. I am willing to make a pass through fractint's code to remove all the
  495. overlay and "far ptr"isms of the medium memory model.  I have Borland
  496. C++ Builder (which can compile regular C code just fine from the
  497. command line), and I'm willing to download gcc/djgpp to make sure I'm
  498. using any Borlandisms in the effort.
  499.  
  500. What I would like from Tim and other developers here is what exactly
  501. do I need to do in order to do the port?
  502.  
  503. Here is what I had in mind:
  504.  
  505.     o remove all "near/far" isms with respect to pointers and data --
  506.     as I understand it the "far" isn't needed in a flat memory model,
  507.     because a pointer is a pointer is a pointer.
  508.  
  509.     o remove all overlay mechanisms -- these are just #pragmas in the
  510.     source code, aren't they?
  511.  
  512.     o use C code from xfractint for the assembler portions -- in other
  513.     words, I'm not attempting to rewrite the assembler code.  That may
  514.     come later, but the primary thrust is to get to a flat memory
  515.     model.
  516.  
  517.     o try to group data with its associated functions instead of
  518.     having it lurking as a global.  Its my understanding that the
  519.     reason there is so much of this in the fractint source is because
  520.     of the memory model.
  521.  
  522. Now given that I'm going to remove the assembly and use C instead,
  523. that leaves me with one hole: video I/O.  My inclination is to use the
  524. same solution that XaoS uses -- dgjpp/Allegro.  See
  525. <http://www.talula.demon.co.uk/allegro/readme.html> for information on
  526. Allegro.  What's interesting about that (and I only just learned this
  527. upon reading that URL :-) is that Allegro supports DOS, Win32 via 
  528. DirectX and the X Window System.  Rather than homebrewing our own GUI
  529. layer, perhaps we could just write to Allegro and be done with it?  Of
  530. course, that still leaves the Mac in the lurch, but perhaps someone is
  531. already working on an Allegro port for the Mac.
  532.  
  533. Please respond soon, before I lose my nerve to tackle this project :)
  534. - --
  535. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  536.     ``Ain't it funny that they all fire the pistol, 
  537.       at the wrong end of the race?''--PDBT
  538.           <http://www.eden.com/~thewho>
  539.  
  540. - --------------------------------------------------------------
  541. Thanks for using Fractdev, The Fractint Developer's Discussion List
  542. Post Message:   fractdev@lists.xmission.com
  543. Get Commands:   majordomo@lists.xmission.com "help"
  544. Administrator:  twegner@phoenix.net
  545. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  546.  
  547. ------------------------------
  548.  
  549. Date: Sun, 21 Feb 1999 22:05:13 -0700
  550. From: Phil McRevis <legalize@xmission.com>
  551. Subject: Re: (fractdev) flat-memory model port 
  552.  
  553. In article <E10EnTc-00017v-00@xmission.xmission.com>,
  554.     Phil McRevis <legalize@xmission.com>  writes:
  555. > [...] I'm willing to download gcc/djgpp to make sure I'm
  556. > using any Borlandisms in the effort.
  557.  
  558. That should be "make sure I'm *not* using any Borlandisms"... silly me
  559. :)
  560. - --
  561. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  562.     ``Ain't it funny that they all fire the pistol,     
  563.       at the wrong end of the race?''--PDBT     
  564. legalize@xmission.com    <http://www.eden.com/~thewho>
  565.  
  566. - --------------------------------------------------------------
  567. Thanks for using Fractdev, The Fractint Developer's Discussion List
  568. Post Message:   fractdev@lists.xmission.com
  569. Get Commands:   majordomo@lists.xmission.com "help"
  570. Administrator:  twegner@phoenix.net
  571. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  572.  
  573. ------------------------------
  574.  
  575. Date: Mon, 22 Feb 1999 00:19:23 -0500 (EST)
  576. From: kragen@pobox.com (Kragen Sitaker)
  577. Subject: Re: (fractdev) flat-memory model port
  578.  
  579. On Sun, 21 Feb 1999, Phil McRevis wrote:
  580. > Here is what I had in mind:
  581. >     o remove all "near/far" isms with respect to pointers and data --
  582. >     as I understand it the "far" isn't needed in a flat memory model,
  583. >     because a pointer is a pointer is a pointer.
  584.  
  585. You could perhaps do this with #define.
  586. #define near
  587. #define far
  588.  
  589. >     o remove all overlay mechanisms -- these are just #pragmas in the
  590. >     source code, aren't they?
  591.  
  592. If so, you don't need to remove them.
  593.  
  594. > Now given that I'm going to remove the assembly and use C instead,
  595. > that leaves me with one hole: video I/O.  My inclination is to use the
  596. > same solution that XaoS uses -- dgjpp/Allegro.  See
  597. > <http://www.talula.demon.co.uk/allegro/readme.html> for information on
  598. > Allegro.  What's interesting about that (and I only just learned this
  599. > upon reading that URL :-) is that Allegro supports DOS, Win32 via 
  600. > DirectX and the X Window System.  Rather than homebrewing our own GUI
  601. > layer, perhaps we could just write to Allegro and be done with it?  Of
  602. > course, that still leaves the Mac in the lurch, but perhaps someone is
  603. > already working on an Allegro port for the Mac.
  604.  
  605. I don't think you can use Allegro with C++Builder, but I do not know.
  606.  
  607. I think there are some licensing restrictions having to do with
  608. building with djgpp; in particular, I think the C run-time library is
  609. GPLed.  This is incompatible with Fractint's license, which prohibits
  610. redistribution for profit.
  611.  
  612. I hope you can preserve the original DOS interface to some degree.
  613. It's wonderful in DOS, but terribly painful in xfractint.  (I think
  614. I've never used any program with as good a UI as DOS Fractint.)
  615.  
  616. > Please respond soon, before I lose my nerve to tackle this project :)
  617.  
  618. Thank you for your nerve :)
  619.  
  620. - -- 
  621. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  622. Computers are the tools of the devil. It is as simple as that. There is no
  623. monotheism strong enough that it cannot be shaken by Unix or any Microsoft
  624. product. The devil is real. He lives inside C programs. -- philg@mit.edu
  625.  
  626.  
  627. - --------------------------------------------------------------
  628. Thanks for using Fractdev, The Fractint Developer's Discussion List
  629. Post Message:   fractdev@lists.xmission.com
  630. Get Commands:   majordomo@lists.xmission.com "help"
  631. Administrator:  twegner@phoenix.net
  632. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  633.  
  634. ------------------------------
  635.  
  636. Date: Sun, 21 Feb 1999 22:50:31 -0700
  637. From: Phil McRevis <legalize@xmission.com>
  638. Subject: Re: (fractdev) flat-memory model port 
  639.  
  640. In article <Pine.SUN.3.96.990222001444.11963G-100000@picard.dnaco.net>,
  641.     kragen@pobox.com (Kragen Sitaker)  writes:
  642. > You could perhaps do this with #define.
  643. > #define near
  644. > #define far
  645.  
  646. Yes, the xfractint .h file already does this.  However, with emacs and
  647. grep, its quite simple to remove all "far" and "near" qualifiers on
  648. pointers.  (M-x grep, followed by M-x next-error is a wonderful thing
  649. for large source base modifications.)  If we are giving up the medium
  650. memory model, these qualifiers are just cruft that should be removed.
  651.  
  652. > If so, you don't need to remove them.
  653.  
  654. See above.  When stuff isn't used anymore, its best to remove it
  655. rather than leave it laying around.  For instance, do you delete
  656. unused code from your projects or do you just comment it out?  With
  657. the latter approach, you end up with all this code that isn't relevant
  658. anymore, but a new programmer can't tell that and will wonder why it
  659. is commented out instead of deleted.  On a shared-body project like
  660. fractint, this is even more important since you have no idea who
  661. commented out the code and/or why its commented out.  I've worked on
  662. commercial code where people developed this habit of #ifdef/commenting
  663. out unused code and it quickly led to a maintenance nightmare.
  664. Maintenance issues are even more critical for open-source software.
  665.  
  666. > I don't think you can use Allegro with C++Builder, but I do not know.
  667.  
  668. Me neither.  I just brought it up as a possbility for the video I/O.
  669. Fractint needs _some_ kind of abstraction to remove itself from
  670. platform dependencies with graphics I/O.  Rather than reinvent the
  671. wheel, I figure we could use something like Allegro which handles
  672. those details.  Especially since I don't have any desire to port the
  673. assembly code.  (Although since I upgraded my C++Builder I now have
  674. TASM so I can do assembly code.)
  675.  
  676. > I think there are some licensing restrictions having to do with
  677. > building with djgpp; in particular, I think the C run-time library is
  678. > GPLed.  This is incompatible with Fractint's license, which prohibits
  679. > redistribution for profit.
  680.  
  681. Hmm... as I understand it, the GPL only says that you have to provide
  682. the source code, which is completely compatible with fractint's
  683. open-source model.
  684.  
  685. > I hope you can preserve the original DOS interface to some degree.
  686.  
  687. No changes to the interface are planned; with my C++Builder upgrade, I
  688. did get a coupon to obtain Borland's 4.02 C++ compiler, which can
  689. build 16bit applications.  I may just start seeing if I can build DOS
  690. fractint with that, but then I'd have to obtain that compiler first (I
  691. haven't used the coupon yet), which would mean waiting.
  692. Alternatively, I can eliminate all the medium memory model stuff and
  693. just use xfractint.
  694.  
  695. > It's wonderful in DOS, but terribly painful in xfractint.
  696.  
  697. Yes, well that is one reason why we have been saying fractint needs a
  698. UI layer.  Under X, fractint's UI should be native (as well for the
  699. Mac, Win32, BeOS, etc.).  But, first things first.  Every time we have
  700. this discussion we come around to the conclusion "yes, but we need to
  701. remove the memory model limitations first."
  702.  
  703. > (I think I've never used any program with as good a UI as DOS Fractint.)
  704.  
  705. Ahem.  I've used plenty of programs with a better UI than DOS fractint
  706. :-).  Not to say that fractint's UI is poor; just that I find the video
  707. mode switching very annoying and it suffers from the limitation of
  708. trying to fit everything into 24x80 for some of its dialog screens.
  709.  
  710. Cut & paste into the text boxes is nearly impossible, or if it is
  711. possible it is painful. If you think about it, almost every text screen
  712. in fractint is what they call a "modal dialog" in UI terminology.
  713. Given that fractint's dialogs are all originally implemented in a
  714. text-only world, providing some simple functions to implement them in a
  715. graphically rich environment shouldn't be hard.  Xfractint tries to do
  716. it with curses, which is OK I guess, but you end up having an xterm
  717. window and the graphics window, both of them trying to control the
  718. application somewhat.  I never really liked it that much.
  719. - --
  720. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  721.     ``Ain't it funny that they all fire the pistol,     
  722.       at the wrong end of the race?''--PDBT     
  723. legalize@xmission.com    <http://www.eden.com/~thewho>
  724.  
  725. - --------------------------------------------------------------
  726. Thanks for using Fractdev, The Fractint Developer's Discussion List
  727. Post Message:   fractdev@lists.xmission.com
  728. Get Commands:   majordomo@lists.xmission.com "help"
  729. Administrator:  twegner@phoenix.net
  730. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  731.  
  732. ------------------------------
  733.  
  734. Date: Mon, 22 Feb 1999 08:20:12 -0500 (EST)
  735. From: kragen@pobox.com (Kragen Sitaker)
  736. Subject: Re: (fractdev) flat-memory model port 
  737.  
  738. On Sun, 21 Feb 1999, Phil McRevis wrote:
  739. > In article <Pine.SUN.3.96.990222001444.11963G-100000@picard.dnaco.net>,
  740. >     kragen@pobox.com (Kragen Sitaker)  writes:
  741. > > You could perhaps do this with #define.
  742. > > #define near
  743. > > #define far
  744. > Yes, the xfractint .h file already does this.  However, with emacs and
  745. > grep, its quite simple to remove all "far" and "near" qualifiers on
  746. > pointers.  (M-x grep, followed by M-x next-error is a wonderful thing
  747. > for large source base modifications.)  If we are giving up the medium
  748. > memory model, these qualifiers are just cruft that should be removed.
  749.  
  750. I was just thinking that it might be useful to be able to compile
  751. fractint either way.  Perhaps it's too much to ask.
  752.  
  753. > See above.  When stuff isn't used anymore, its best to remove it
  754. > rather than leave it laying around.
  755.  
  756. Agreed.
  757.  
  758. > Maintenance issues are even more critical for open-source software.
  759.  
  760. Fractint is not open-source software.  Don't go around saying that, or
  761. you'll get sued by the Open Source Initiative.
  762.  
  763. > > I don't think you can use Allegro with C++Builder, but I do not know.
  764. > Me neither.  I just brought it up as a possbility for the video I/O.
  765. > Fractint needs _some_ kind of abstraction to remove itself from
  766. > platform dependencies with graphics I/O.  Rather than reinvent the
  767. > wheel, I figure we could use something like Allegro which handles
  768. > those details.
  769.  
  770. Fractint has such an abstraction already -- it's just that all the
  771. video drivers are included in Fractint.  For PC video cards, the wheel
  772. has already been reinvented.
  773.  
  774. > Especially since I don't have any desire to port the
  775. > assembly code.
  776.  
  777. Heh :)  I don't blame you :)
  778.  
  779. > Hmm... as I understand it, the GPL only says that you have to provide
  780. > the source code, which is completely compatible with fractint's
  781. > open-source model.
  782.  
  783. It also says you can't impose any further restrictions, such as "no
  784. commercial distribution".  Many pieces of open-source software (notably
  785. BSD and Mozilla) are not allowed to use GPLed libraries because their
  786. licenses conflict with the GPL.   Also, the Open Source Definition
  787. requires that users be free to do commercial distribution of the
  788. software; software licenses that do not allow this, such as the
  789. Fractint license, are not in compliance with the OSD.  Open Source is a
  790. registered trademark of the OSD, which was founded by the guy who
  791. invented the term last March.
  792.  
  793. Now, I'm not saying Fractint should change its license; I'm just saying
  794. that presently, it is not open source, and should not be advertised as such.
  795.  
  796. I *would* like to allow Fractint to be commercially distributed -- I
  797. think a lot more people would use it if it came on the Red Hat CD --
  798. but then again, I didn't write it, so who am I to say?  :)
  799.  
  800. > > It's wonderful in DOS, but terribly painful in xfractint.
  801. > Yes, well that is one reason why we have been saying fractint needs a
  802. > UI layer.  Under X, fractint's UI should be native (as well for the
  803. > Mac, Win32, BeOS, etc.).
  804.  
  805. Ohhh, OK.  You weren't talking about an abstraction layer for drawing
  806. graphics -- you were talking about an abstraction layer for the
  807. commands, help, and settings parts of the UI.
  808.  
  809. > Ahem.  I've used plenty of programs with a better UI than DOS fractint
  810. > :-).  Not to say that fractint's UI is poor; just that I find the video
  811. > mode switching very annoying and it suffers from the limitation of
  812. > trying to fit everything into 24x80 for some of its dialog screens.
  813.  
  814. The video mode switching is a little annoying.
  815.  
  816. > Cut & paste into the text boxes is nearly impossible, or if it is
  817. > possible it is painful.
  818.  
  819. In MS-DOS it is simply impossible.  :)
  820.  
  821. > If you think about it, almost every text screen
  822. > in fractint is what they call a "modal dialog" in UI terminology.
  823.  
  824. Modal dialogs are a blight on the world of UIs in a GUI context.  But
  825. in a text context, they aren't nearly as bad.
  826.  
  827. > Given that fractint's dialogs are all originally implemented in a
  828. > text-only world, providing some simple functions to implement them in a
  829. > graphically rich environment shouldn't be hard.  Xfractint tries to do
  830. > it with curses, which is OK I guess, but you end up having an xterm
  831. > window and the graphics window, both of them trying to control the
  832. > application somewhat.  I never really liked it that much.
  833.  
  834. Neither did I.  (But I like it in MS-DOS.)
  835.  
  836. What I like is that (a) it was easy for me to use early on -- unlike
  837. the Unix command line -- and (b) it was fast for me to use later --
  838. unlike most GUI programs.  And I could see what was happening most of
  839. the time.
  840.  
  841. - -- 
  842. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  843. Computers are the tools of the devil. It is as simple as that. There is no
  844. monotheism strong enough that it cannot be shaken by Unix or any Microsoft
  845. product. The devil is real. He lives inside C programs. -- philg@mit.edu
  846.  
  847.  
  848. - --------------------------------------------------------------
  849. Thanks for using Fractdev, The Fractint Developer's Discussion List
  850. Post Message:   fractdev@lists.xmission.com
  851. Get Commands:   majordomo@lists.xmission.com "help"
  852. Administrator:  twegner@phoenix.net
  853. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  854.  
  855. ------------------------------
  856.  
  857. Date: Mon, 22 Feb 1999 09:25:38 -0700
  858. From: Phil McRevis <legalize@xmission.com>
  859. Subject: Re: (fractdev) flat-memory model port 
  860.  
  861. In article <Pine.SUN.3.96.990222080539.11963J-100000@picard.dnaco.net>,
  862.     kragen@pobox.com (Kragen Sitaker)  writes:
  863. > I was just thinking that it might be useful to be able to compile
  864. > fractint either way.  Perhaps it's too much to ask.
  865.  
  866. If you want 16bit code, then you compile older versions of fractint
  867. :-).
  868.  
  869. > Fractint is not open-source software.  Don't go around saying that, or
  870. > you'll get sued by the Open Source Initiative.
  871.  
  872. What?  Of course fractint is open-source software.  What makes you
  873. think otherwise?
  874.  
  875. > Fractint has such an abstraction already -- it's just that all the
  876. > video drivers are included in Fractint.  For PC video cards, the wheel
  877. > has already been reinvented.
  878.  
  879. Right, and those video drivers are coded in assembly.
  880.  
  881. > > Hmm... as I understand it, the GPL only says that you have to provide
  882. > > the source code, which is completely compatible with fractint's
  883. > > open-source model.
  884. > It also says you can't impose any further restrictions, such as "no
  885. > commercial distribution".  [...]
  886.  
  887. Well I'll let Tim call the shot on that one... Tim?
  888.  
  889. > Ohhh, OK.  You weren't talking about an abstraction layer for drawing
  890. > graphics -- you were talking about an abstraction layer for the
  891. > commands, help, and settings parts of the UI.
  892.  
  893. Well there are two issues here.  Handling the low-level graphics
  894. (which is currently done in assembly), and the UI portability (which
  895. currently is kludged :).  The low-level graphics can remain in
  896. assembly for the purposes of a flat-memory model port, but then the
  897. assembly will have to be ported.  Since I'd rather not do any assembly
  898. work, I was hoping to plug something else in there.  I think the
  899. assembly video drivers were coded in order to get the maximum speed
  900. from the video card.  Nowadays, these low-level details are best left
  901. to the OS if possible (i.e. DirectX), but that is a very long-term
  902. wish for fractint.  The question is what to do *now* with respect to
  903. the 16bit assembly code that does video I/O.
  904.  
  905. > Modal dialogs are a blight on the world of UIs in a GUI context.  But
  906. > in a text context, they aren't nearly as bad.
  907.  
  908. Well, like any tool sometimes its misused.  I've seen every UI
  909. component misused at one time or another.  When a GUI application
  910. *must* have more information from the user in order to continue a
  911. requested operation, just what do you propose it should do?  That's
  912. the situation modal dialogs were invented for.
  913. - --
  914. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  915.     ``Ain't it funny that they all fire the pistol,     
  916.       at the wrong end of the race?''--PDBT     
  917. legalize@xmission.com    <http://www.eden.com/~thewho>
  918.  
  919. - --------------------------------------------------------------
  920. Thanks for using Fractdev, The Fractint Developer's Discussion List
  921. Post Message:   fractdev@lists.xmission.com
  922. Get Commands:   majordomo@lists.xmission.com "help"
  923. Administrator:  twegner@phoenix.net
  924. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  925.  
  926. ------------------------------
  927.  
  928. Date: Mon, 22 Feb 1999 13:29:40 -0500 (EST)
  929. From: kragen@pobox.com (Kragen Sitaker)
  930. Subject: Re: (fractdev) flat-memory model port 
  931.  
  932. On Mon, 22 Feb 1999, Phil McRevis wrote:
  933. > In article <Pine.SUN.3.96.990222080539.11963J-100000@picard.dnaco.net>,
  934. >     kragen@pobox.com (Kragen Sitaker)  writes:
  935. > > Fractint is not open-source software.  Don't go around saying that, or
  936. > > you'll get sued by the Open Source Initiative.
  937. > What?  Of course fractint is open-source software.  What makes you
  938. > think otherwise?
  939.  
  940. I answered that down below; I assume you asked the above question
  941. before you read that part of my reply.  Let me know if I was unclear.
  942.  
  943. - -- 
  944. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  945. Computers are the tools of the devil. It is as simple as that. There is no
  946. monotheism strong enough that it cannot be shaken by Unix or any Microsoft
  947. product. The devil is real. He lives inside C programs. -- philg@mit.edu
  948.  
  949.  
  950. - --------------------------------------------------------------
  951. Thanks for using Fractdev, The Fractint Developer's Discussion List
  952. Post Message:   fractdev@lists.xmission.com
  953. Get Commands:   majordomo@lists.xmission.com "help"
  954. Administrator:  twegner@phoenix.net
  955. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  956.  
  957. ------------------------------
  958.  
  959. Date: Mon, 22 Feb 1999 12:50:11 -0600
  960. From: "Damien M. Jones" <dmj@fractalus.com>
  961. Subject: Re: (fractdev) flat-memory model port 
  962.  
  963. Kragen,
  964.  
  965.  - [snippage re: GPL, Open Source (R), BSD, and FractInt]
  966.  
  967. Thanks for the info. It is food for thought.
  968.  
  969.  - I *would* like to allow Fractint to be commercially distributed -- I
  970.  - think a lot more people would use it if it came on the Red Hat CD --
  971.  - but then again, I didn't write it, so who am I to say?  :)
  972.  
  973. Interesting notion.
  974.  
  975.  - > Cut & paste into the text boxes is nearly impossible, or if it is
  976.  - > possible it is painful.
  977.  -
  978.  - In MS-DOS it is simply impossible.  :)
  979.  
  980. In a DOS box running inside Windows, though, it isn't; it's just highly
  981. inconvenient.
  982.  
  983.  - Modal dialogs are a blight on the world of UIs in a GUI context.
  984.  
  985. I have heard this notion advanced from time to time. While it is true that
  986. many programs use modal dialogs excessively, it is ALSO true that in many
  987. cases, designing the software so that modeless dialogs make sense
  988. contradicts the way users are expecting to use the program. And if you
  989. require users to change their work habits to fit the needs of software,
  990. aren't you missing the point? Software is a tool for people, not the other
  991. way around. When confronted with software that doesn't work as they expect,
  992. users either (a) find other software that works like they want, (b) become
  993. unproductive with the software they have, or (c) go postal and waste the
  994. sysadmins that forced such software on them. :-)
  995.  
  996. However, in support of your point, it's certainly possible for fractal
  997. software (such as a future FractInt) to be primarily focused on a modeless
  998. approach. One recent GUI-based fractal program makes extensive use of
  999. modeless property dialogs and shows one way in which modality can be
  1000. reduced substantially. Prior to its release, I also examined another
  1001. fractal program in development which, while oriented towards modeless
  1002. dialogs, was inconvenient to use. Simply making dialogs modeless isn't in
  1003. and of itself enough.
  1004.  
  1005. I'm not sure I would call modal dialogs a "blight". For a lot of users, it
  1006. fits with their "one thing at a time" mentality. Just because you and I are
  1007. able to multitask more effectively doesn't mean everybody else can. :-)
  1008.  
  1009. Damien M. Jones   \\
  1010. dmj@fractalus.com  \\  Fractalus Galleries & Info:
  1011.                     \\  http://www.fractalus.com/
  1012.  
  1013. Please do not post my e-mail address on a web site or
  1014. in a newsgroup.  Thank you.
  1015.  
  1016. - --------------------------------------------------------------
  1017. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1018. Post Message:   fractdev@lists.xmission.com
  1019. Get Commands:   majordomo@lists.xmission.com "help"
  1020. Administrator:  twegner@phoenix.net
  1021. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1022.  
  1023. ------------------------------
  1024.  
  1025. End of fractdev-digest V1 #17
  1026. *****************************
  1027.  
  1028.