home *** CD-ROM | disk | FTP | other *** search
/ ftp.xmission.com / 2014.06.ftp.xmission.com.tar / ftp.xmission.com / pub / lists / fractdev / archive / fractdev.199904 < prev    next >
Internet Message Format  |  1999-04-30  |  110KB

  1. From: Phil McRevis <legalize@xmission.com>
  2. Subject: (fractdev) xfractint 19.61 pl66 fixes
  3. Date: 28 Apr 1999 14:12:52 -0600
  4.  
  5. OK, I compiled the 19.61pl66 version of xfractint and found some minor
  6. bugs which I worked around.
  7.  
  8. I also added support for default visuals that aren't pseudocolor (i.e.
  9. truecolor, directcolor etc.) to xfractint.  One step closer to
  10. rendering in any visual.
  11.  
  12. Also, I've been looking at xfractint's guts to determine how one could
  13. separate out the O/S & graphics dependencies.  It doesn't look too bad
  14. actually.  More on that later.
  15.  
  16. Tim, do I send diffs to you?  I tried sending to fractdev, but I guess
  17. it was bounced because the diffs made the message too large.
  18. --
  19. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  20.     ``Ain't it funny that they all fire the pistol, 
  21.       at the wrong end of the race?''--PDBT
  22.           <http://www.eden.com/~thewho>
  23.  
  24. Thanks for using Fractdev, The Fractint Developer's Discussion List
  25. Post Message:   fractdev@lists.xmission.com
  26. Get Commands:   majordomo@lists.xmission.com "help"
  27. Administrator:  twegner@phoenix.net
  28. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  29.  
  30.  
  31. -------------------------------------------------------------------------------
  32.  
  33. From: "Tim Wegner" <twegner@phoenix.net>
  34. Subject: Re: (fractdev) xfractint 19.61 pl66 fixes
  35. Date: 28 Apr 1999 17:16:26 -0600
  36.  
  37. "Phil" wrote:
  38.  
  39. > Tim, do I send diffs to you?  I tried sending to fractdev, but I guess
  40. > it was bounced because the diffs made the message too large.
  41.  
  42. Yes send them to me, but since I administrate the list, I already 
  43. have them because your too-large message bounced to me <g!>
  44.  
  45. I'll look at it right away. Thanks very much. Interest on our end in 
  46. Xfractint has increased a lot. Jonathan and I both have Linux.
  47.  
  48. I'll merge your changes along with some of our own and re-upload 
  49. the Xfractint source file.
  50.  
  51. Tim
  52.  
  53.  
  54. Thanks for using Fractdev, The Fractint Developer's Discussion List
  55. Post Message:   fractdev@lists.xmission.com
  56. Get Commands:   majordomo@lists.xmission.com "help"
  57. Administrator:  twegner@phoenix.net
  58. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  59.  
  60.  
  61. -------------------------------------------------------------------------------
  62.  
  63. From: Phil McRevis <legalize@xmission.com>
  64. Subject: Re: (fractdev) xfractint 19.61 pl66 fixes 
  65. Date: 28 Apr 1999 16:25:13 -0600
  66.  
  67.  
  68. In article <199904282216.RAA06509@voyager.c-com.net>,
  69.     "Tim Wegner" <twegner@phoenix.net>  writes:
  70.  
  71. > Yes send them to me, but since I administrate the list, I already 
  72. > have them because your too-large message bounced to me <g!>
  73.  
  74. OK, inspect that diff carefully.  I think some stuff that was supplied
  75. in the patch ended up in my diff because of my poor attempt at
  76. branching the source in my VCS.  (I'm trying to maintina a "pristine"
  77. branch of blessed code as the trunk with my changes on a concurrent
  78. branch.  Somehow I've got the two mixed up and things aren't working
  79. right for me yet.)
  80.  
  81. > I'll look at it right away. Thanks very much. Interest on our end in 
  82. > Xfractint has increased a lot. Jonathan and I both have Linux.
  83.  
  84. If you get my diffs in there and it compiled OK for you, I'd really
  85. like to know how well fractint behaves when the default visual is
  86. truecolor or directcolor.  (Or StaticGray, StaticColor, and GrayScale
  87. for that matter.)
  88.  
  89. I'm finally digging into the entire fractint source base and getting
  90. up to speed in how the routines interact.  The bad news is that there's
  91. a LOT of code and a fairly good amount of programming crumbs have been
  92. left laying around as each coder does battle with the program!  The
  93. good news is that I'm finally starting to see how everything is linked
  94. together in fractint and I feel much more optimistic about the
  95. flat-model port and a move to a GUI environment.
  96. --
  97. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  98.     ``Ain't it funny that they all fire the pistol,     
  99.       at the wrong end of the race?''--PDBT     
  100. legalize@xmission.com    <http://www.eden.com/~thewho>
  101.  
  102. Thanks for using Fractdev, The Fractint Developer's Discussion List
  103. Post Message:   fractdev@lists.xmission.com
  104. Get Commands:   majordomo@lists.xmission.com "help"
  105. Administrator:  twegner@phoenix.net
  106. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  107.  
  108.  
  109. -------------------------------------------------------------------------------
  110.  
  111. From: Phil McRevis <legalize@xmission.com>
  112. Subject: (fractdev) DOS support via allegro?
  113. Date: 28 Apr 1999 16:45:31 -0600
  114.  
  115. I know we've talked about this before, but now I'm digging into the
  116. code and looking to get really specific about stuff.  Taking Tim's
  117. suggestion of using the xfractint code base as a start, the question
  118. becomes "how to provide a DOS driver through that code base?".
  119.  
  120. In the past, we've talked about fancy GUI toolkits (i.e. gimp toolkit)
  121. and so-on.  But what I'm faced with right now is this question: "What's
  122. the smallest code delta that makes the xfractint code compile and work
  123. under a DOS protected-mode extender environment like djgpp?".  In
  124. other words: first get it right, then get it tight.  Assembly is the
  125. tool you use for getting it "tight" after you've gotten it right.
  126. Fractint currently interacts with the keyboard, mouse and display
  127. through 16-bit assembly routines:
  128.  
  129.     general.asm
  130.     handles keyboard, audio and mouse support
  131.         keypressed(), getakey(),
  132.         buzzer(), delay(), tone(), snd(), nosnd()
  133.     video.asm
  134.     video display support
  135.         setvideomode(), setvideotext(), getcolor(), putcolor()
  136.         out_line(), drawbox(), home(), movecursor(), keycursor()
  137.         putstring(), setattr(), scrollup(), scrolldown()
  138.         putstr(), loaddac(), spindac(), adapter_init, adapter_detect
  139.         setnullvideo
  140.             setfortext(), setforgraphics(), setclear(), findfont()
  141.  
  142. Allegro, the gaming library for DJGPP, lists the kinds of monitors it
  143. supports.  I'm not up to speed on all the specifics of these monitors
  144. and so-on.  Can someone out there provide guidance to say "yes,
  145. Allegro covers a suficient portion of the existing fractint users, so
  146. you can provide DOS driver support through allegro" or
  147. "no, fractint provides much more extensive video support with its
  148. assembly, so you should port the assembly"
  149.  
  150. Thanks in advance.
  151.  
  152. from the readme.txt in the allegro distribution:
  153.  
  154.    Supports VGA mode 13h, mode-X (twenty three tweaked VGA resolutions plus 
  155.    unchained 640x400 Xtended mode), and SVGA modes with 8, 15, 16, 24, and 
  156.    32 bit color depths, taking full advantage of VBE 2.0 linear framebuffers 
  157.    and the VBE/AF hardware accelerator API if they are available. Additional 
  158.    video hardware support is available from the FreeBE/AF project 
  159.    (http://www.talula.demon.co.uk/freebe/).
  160.  
  161.    Drawing functions including putpixel, getpixel, lines, rectangles, flat 
  162.    shaded, gouraud shaded, and texture mapped polygons, circles, floodfill, 
  163.    bezier splines, patterned fills, masked, run length encoded, and compiled 
  164.    sprites, blitting, bitmap scaling and rotation, translucency/lighting, 
  165.    and text output with proportional fonts. Supports clipping, and can draw 
  166.    directly to the screen or to memory bitmaps of any size.
  167.  
  168.    Hardware scrolling, mode-X split screens, and palette manipulation.
  169.  
  170.     [...]
  171.  
  172.    Plays background MIDI music and up to 64 simultaneous sound effects, and 
  173.    can record sample waveforms and MIDI input. Samples can be looped 
  174.    (forwards, backwards, or bidirectionally), and the volume, pan, pitch, 
  175.    etc, can be adjusted while they are playing. The MIDI player responds to 
  176.    note on, note off, main volume, pan, pitch bend, and program change 
  177.    messages, using the General MIDI patch set and drum mappings. Currently 
  178.    supports Adlib, SB, SB Pro, SB16, AWE32, MPU-401, ESS AudioDrive, Ensoniq 
  179.    Soundscape, and software wavetable MIDI.
  180.  
  181.    Easy access to the mouse, keyboard, joystick, and high resolution timer 
  182.    interrupts, including a vertical retrace interrupt simulator.
  183.  
  184.     [...]
  185.  
  186.    Math functions including fixed point arithmetic, lookup table trig, and 
  187.    3d vector/matrix manipulation.
  188. --
  189. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  190.     ``Ain't it funny that they all fire the pistol, 
  191.       at the wrong end of the race?''--PDBT
  192.           <http://www.eden.com/~thewho>
  193.  
  194. Thanks for using Fractdev, The Fractint Developer's Discussion List
  195. Post Message:   fractdev@lists.xmission.com
  196. Get Commands:   majordomo@lists.xmission.com "help"
  197. Administrator:  twegner@phoenix.net
  198. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  199.  
  200.  
  201. -------------------------------------------------------------------------------
  202.  
  203. From: Phil McRevis <legalize@xmission.com>
  204. Subject: (fractdev) FCODE
  205. Date: 28 Apr 1999 16:48:56 -0600
  206.  
  207. Am I correct in assuming all this FCODE business is to exploit the
  208. code segment for string storage to avoid memory-model ceilings?
  209. --
  210. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  211.     ``Ain't it funny that they all fire the pistol, 
  212.       at the wrong end of the race?''--PDBT
  213.           <http://www.eden.com/~thewho>
  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.  
  224. From: "Tim Wegner" <twegner@phoenix.net>
  225. Subject: Re: (fractdev) DOS support via allegro?
  226. Date: 28 Apr 1999 22:44:50 -0600
  227.  
  228. Rich wrote:
  229.  
  230. > In the past, we've talked about fancy GUI toolkits (i.e. gimp toolkit)
  231. > and so-on.  But what I'm faced with right now is this question: "What's
  232. > the smallest code delta that makes the xfractint code compile and work
  233. > under a DOS protected-mode extender environment like djgpp?". 
  234.  
  235. 1. You have to undo any specifically X code and
  236. 2. You have to implement video modes and graphics read write.
  237.  
  238. Also note that the text writing in Xfractint uses curses. However I 
  239. believe there are djgpp versions of curses if we want to go that 
  240. route.
  241.  
  242. While #2 is easily done with SVGA lib, it isn't worth the effort. You 
  243. have to solve all over again the problems with DOS video modes we 
  244. have long since solved.
  245.  
  246. I suggest the following. In Xfractint's -disk mode, no screen 
  247. graphics is done. In this mode Xfractint doesn't do any X stuff and 
  248. is probably close to being portable to djgpp. The one warning is 
  249. that Xfractint doesn't use Fractint's diskvideo code which has it's 
  250. own cache. I don't know if diskvideo should use the DOS code or 
  251. the XFractrint code. Apparently the caching isn't needed in Linux. 
  252. In DOS it is essential since some of the passes options cause 
  253. writing all over the file, and it is horribly slow. That's the reason for 
  254. the cache.
  255.  
  256. Try building a video-less version first.
  257.  
  258. Tim
  259.  
  260.  
  261. Thanks for using Fractdev, The Fractint Developer's Discussion List
  262. Post Message:   fractdev@lists.xmission.com
  263. Get Commands:   majordomo@lists.xmission.com "help"
  264. Administrator:  twegner@phoenix.net
  265. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  266.  
  267.  
  268. -------------------------------------------------------------------------------
  269.  
  270. From: "Tim Wegner" <twegner@phoenix.net>
  271. Subject: Re: (fractdev) FCODE
  272. Date: 28 Apr 1999 22:44:50 -0600
  273.  
  274.  
  275. > Am I correct in assuming all this FCODE business is to exploit the
  276. > code segment for string storage to avoid memory-model ceilings?
  277.  
  278. The FCODE typedef allows data to be placed in overlays. This 
  279. means that data does not eat into Fractint's limited supply of near 
  280. memory, since in the medium memory model the is a total of 64K 
  281. of near memory, and data not explicitly declared far is in the near 
  282. data segment.
  283.  
  284. Since the FCODE data is in an overlay, it can't be changed, and 
  285. least not for long. Once that overlay is reloaded, the data reverts to 
  286. its permananent value. This is ideal for things like menu prompts.
  287.  
  288. It is the use of tricks like this that has allowed Fractint to survive so 
  289. long and well with a really restrictive memory model.
  290.  
  291. For Xfractint or any other 32 bit memory model purpose, FCODE is 
  292. just a normal type. There are versions of it for char, int, etc.
  293.  
  294. Tim
  295.  
  296.  
  297.  
  298. Thanks for using Fractdev, The Fractint Developer's Discussion List
  299. Post Message:   fractdev@lists.xmission.com
  300. Get Commands:   majordomo@lists.xmission.com "help"
  301. Administrator:  twegner@phoenix.net
  302. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  303.  
  304.  
  305. -------------------------------------------------------------------------------
  306.  
  307. From: "Tim Wegner" <twegner@phoenix.net>
  308. Subject: Re: (fractdev) xfractint 19.61 pl66 fixes 
  309. Date: 28 Apr 1999 22:44:50 -0600
  310.  
  311.  
  312. > OK, inspect that diff carefully.  I think some stuff that was supplied
  313. > in the patch ended up in my diff because of my poor attempt at
  314. > branching the source in my VCS. 
  315.  
  316. I have no way of dealing with the diff you sent except to implement 
  317. it by hand (which I could do). It is nearly a context diff, but "nearly" 
  318. scores only in horseshoes :-) I need either a true context diff (diff -c 
  319. old new > changes.dif) or just sent a zipped version of the 
  320. complete changed files. I like emails to be encapsulated in zips; 
  321. I'm never sure when my mailer is going to wrap lines and mess 
  322. things up.
  323.  
  324. Tim
  325.  
  326.  
  327. Thanks for using Fractdev, The Fractint Developer's Discussion List
  328. Post Message:   fractdev@lists.xmission.com
  329. Get Commands:   majordomo@lists.xmission.com "help"
  330. Administrator:  twegner@phoenix.net
  331. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  332.  
  333.  
  334. -------------------------------------------------------------------------------
  335.  
  336. From: Phil McRevis <legalize@xmission.com>
  337. Subject: Re: (fractdev) DOS support via allegro? 
  338. Date: 29 Apr 1999 01:54:21 -0600
  339.  
  340.  
  341. In article <199904290430.XAA26718@voyager.c-com.net>,
  342.     "Tim Wegner" <twegner@phoenix.net>  writes:
  343.  
  344. > 1. You have to undo any specifically X code and
  345. > 2. You have to implement video modes and graphics read write.
  346.  
  347. These are actually one and the same.  As I say, going through the code
  348. has reduced a job of Everest proportions to one of less than Whitney
  349. proportions.  (Mt. Whitney is the highest point in the continental 48
  350. states, its in California.)
  351.  
  352. > Also note that the text writing in Xfractint uses curses. However I 
  353. > believe there are djgpp versions of curses if we want to go that 
  354. > route.
  355.  
  356. Yeah, personally I consider the curses thing a bug.  It should just
  357. open up a separate X window and do X text in that window, or it should
  358. do X text in the graphic window, similar to XaoS' "ugly interface".
  359. And yes, there are oodles of open source curses implementations.  GNU
  360. has one, in fact (ncurses-4.2).
  361.  
  362. However, replacing the text interface (which currently calls curses
  363. functions) with a function that does X11 text instead of curses
  364. shouldn't be very hard.  Fractint calls only a handful of curses
  365. functions.  Some of the existing text mode support that could be
  366. handled by curses is #ifdef'd out in the patch 66 snapshot.  You still
  367. need an ability to run "text only" when doing disk video, so you'll
  368. still want the curses support, I believe.  Just that you won't be
  369. putting the main menu up with curses unless you're using disk video or
  370. "curses video" if we implement a XaoS-style text-only mode.  (I don't
  371. see why not.)
  372.  
  373. In this respect, XaoS and fractint actually have that in common: the
  374. number of functions you must change in order to add a new driver is
  375. not that many.  Reading/writing a pixel, switching to "text" mode and
  376. back, reading the keyboard/mouse, getting an 8x8 font bitmap,
  377. positioning the text cursor and drawing characters with text
  378. attributes.  That's about all you need to do.
  379.  
  380. I've been studying the XaoS source code since they have dealth with
  381. the same problem.  They did what I was thinking fractint should do:
  382. they built a structure with attributes of the driver (data members)
  383. and function pointers to the driver's functions that implement the
  384. interface (member functions).  Fractint just needs the structure that
  385. groups the related information about a driver together along with a
  386. slight adjustment to its control logic.  At that point, every "#ifdef
  387. XFRACT" that is there for reasons of X11 and not unix-vs-dos will
  388. disappear.  Only one "#ifdef XFRACT" will remain which is wrapped
  389. around the X11 initializer in the list of drivers (which is static
  390. at compile time).
  391.  
  392. When I looked at the places where "unix" code was substituted for
  393. "dos" code, what I found was that some of the "unix" code was really
  394. just X11 code, not specific to unix.  (You can compile X11 clients for
  395. DOS and Win32, X11 is just a protocol built on TCP/IP, so anything
  396. that can talk TCP/IP can talk X11.)  Other times the XFRACT was
  397. isolating some difference between unix and dos.
  398.  
  399. Tim, I think we talked earlier about autoconf; I've successfully
  400. switched over one open-source program to autoconf and I think I've got
  401. a handle on it.  We could do xfractint over to autoconf, but I'd
  402. definately need to consult with some other fractint code gurus to
  403. understand how the different #define's interact.  There's no reason
  404. why a good configure script couldn't enable/disable long double
  405. support when a long double is distinct from a double.  This isn't so
  406. much an x86 vs. other CPU argument either, xmission's sparc solaris
  407. reports sizeof(long double) as 16 and sizeof(double) as 8.
  408.  
  409. However, autoconf is a bit ahead of my current position on things, but
  410. with a little more practice on autoconf for my other projects, that
  411. will carry over to xfractint.  And also I believe that autoconf is
  412. getting improved DOS support to support building code on DOS as well
  413. as unix portably.  The makefile templates now include the ability to
  414. specify an alternate to the usual unix executable, object and library
  415. filename extensions (i.e. use 'exe', 'obj', 'lib' instead of '', '.o',
  416. '.a').
  417.  
  418. > While #2 is easily done with SVGA lib, it isn't worth the effort. You 
  419. > have to solve all over again the problems with DOS video modes we 
  420. > have long since solved.
  421.  
  422. Right, but I have to get something up on the screen.  Yes, I could
  423. start with a "videoless" fractint.  But here's what I'm seeing now
  424. that I look into the code: changing the X-specific code once to
  425. support a "videoless" fractint is epsilon easier than changing the
  426. X-specific code to support a driver harness.  With the driver harness
  427. I'm thinking of, disk "video" is always present regardless of anything
  428. else with the code.
  429.  
  430. Next is to add a driver instance that encapsulates the existing X11
  431. interface.  This is like a 15 minute job, once the harness is in
  432. place.  Next is what's needed for some minimal DOS display support,
  433. which is nothing harder than a handful of functions now that I'm
  434. seeing it more clearly.
  435.  
  436. > I suggest the following. In Xfractint's -disk mode, no screen 
  437. > graphics is done. In this mode Xfractint doesn't do any X stuff and 
  438. > is probably close to being portable to djgpp.
  439.  
  440. Actually where I'm starting is to get a working harness + X11 driver
  441. instance going on the X side and then take it over to a disk video
  442. only version with djgpp.
  443.  
  444. > own cache. I don't know if diskvideo should use the DOS code or 
  445. > the XFractrint code.
  446.  
  447. The disk video caching is an O/S issue, not a graphics issue.  There
  448. are a few little things that need to be factored out because of O/S
  449. platform differences, not because of differences in the graphics
  450. environment.  Memory management, timers, date and time manipulation,
  451. file system I/O are some examples, there are probaly some more.  These
  452. also need to be factored out into an "OS" module, with the configure
  453. (manual or otherwise) picking one of them to compile.
  454.  
  455. > Apparently the caching isn't needed in Linux. 
  456.  
  457. In linux, you have the virtual memory system of the O/S to deal with
  458. it, so you don't need to write it yourself.  You can just mmap() the
  459. file and use it like a char *.
  460.  
  461. > In DOS it is essential since some of the passes options cause 
  462. > writing all over the file, and it is horribly slow. That's the reason for 
  463. > the cache.
  464.  
  465. The code could still be retained.  You'd just be managing the cache in
  466. a flat memory model rather than in a segmented straightjacket.
  467. --
  468. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  469.     ``Ain't it funny that they all fire the pistol,     
  470.       at the wrong end of the race?''--PDBT     
  471. legalize@xmission.com    <http://www.eden.com/~thewho>
  472.  
  473. Thanks for using Fractdev, The Fractint Developer's Discussion List
  474. Post Message:   fractdev@lists.xmission.com
  475. Get Commands:   majordomo@lists.xmission.com "help"
  476. Administrator:  twegner@phoenix.net
  477. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  478.  
  479.  
  480. -------------------------------------------------------------------------------
  481.  
  482. From: Phil McRevis <legalize@xmission.com>
  483. Subject: Re: (fractdev) FCODE 
  484. Date: 29 Apr 1999 01:55:29 -0600
  485.  
  486.  
  487. Err... I'll take that as a yes. :)
  488. --
  489. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  490.     ``Ain't it funny that they all fire the pistol,     
  491.       at the wrong end of the race?''--PDBT     
  492. legalize@xmission.com    <http://www.eden.com/~thewho>
  493.  
  494. Thanks for using Fractdev, The Fractint Developer's Discussion List
  495. Post Message:   fractdev@lists.xmission.com
  496. Get Commands:   majordomo@lists.xmission.com "help"
  497. Administrator:  twegner@phoenix.net
  498. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  499.  
  500.  
  501. -------------------------------------------------------------------------------
  502.  
  503. From: Phil McRevis <legalize@xmission.com>
  504. Subject: Re: (fractdev) xfractint 19.61 pl66 fixes 
  505. Date: 29 Apr 1999 02:00:25 -0600
  506.  
  507.  
  508. In article <199904290430.XAA26730@voyager.c-com.net>,
  509.     "Tim Wegner" <twegner@phoenix.net>  writes:
  510.  
  511. > I have no way of dealing with the diff you sent except to implement 
  512. > it by hand (which I could do).
  513.  
  514. Really?  Did your patch utility give you an error or what?  If you're
  515. using an old version of patch that doesn't ignore leading/trailing
  516. garbage outside of a context diff, you should get a newer version.
  517. GNU patch doesn't suffer from any such deficiencies.
  518.  
  519. > I need either a true context diff (diff -c 
  520. > old new > changes.dif) or just sent a zipped version of the 
  521.  
  522. What problem exactly are you having?  The problem with zipping up
  523. source code is the end-of-line convention gets stored binary in the
  524. file and you end up having to constantly convert back and forth
  525. between unix and DOS line conventions.
  526.  
  527. We could setup a CVS server here on xmission and people could just
  528. update/checkin/checkout to that directly without you having to process
  529. the diffs manually.  Just a thought.
  530. --
  531. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  532.     ``Ain't it funny that they all fire the pistol,     
  533.       at the wrong end of the race?''--PDBT     
  534. legalize@xmission.com    <http://www.eden.com/~thewho>
  535.  
  536. Thanks for using Fractdev, The Fractint Developer's Discussion List
  537. Post Message:   fractdev@lists.xmission.com
  538. Get Commands:   majordomo@lists.xmission.com "help"
  539. Administrator:  twegner@phoenix.net
  540. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  541.  
  542.  
  543. -------------------------------------------------------------------------------
  544.  
  545. From: Phil McRevis <legalize@xmission.com>
  546. Subject: (fractdev) portability thoughts
  547. Date: 29 Apr 1999 16:41:31 -0600
  548.  
  549. Lets separate graphic driver (anything to do with mouse/display) issues
  550. from operating system issues.  Here are the operating system issues as
  551. I see them at my current level of understanding of the source:
  552.  
  553.     file system I/O
  554.     max. filename path len
  555.     path element separator
  556.     directory reading/scanning
  557.  
  558. The path separator thing becomes painful under unix.  Fractint uses
  559. '/' to separate the parameter name from a parameter file, for
  560. isntance.  It happens to look for a '/', and if it sees one, it
  561. assumes that the argument is ``@parfile/entry'', but if one naively
  562. specified a full-path of a parfile under xfractint, you'd have a '/'
  563. as part of the parfile name and xfractint will become confused.  A
  564. workaround is to always have parfiles specified in this manner in the
  565. current directory.  Either fractint's syntax will have to be adjusted
  566. slightly, or some quoting mechanism must be installed to allow a full
  567. pathname for a unix file to be specified in these instances.
  568.  
  569. The filename length is rather standard; stdio.h defines FILENAME_MAX.
  570.  
  571. The directory scanning/reading issue is one of differences between
  572. unices.  Some use readdir that returns a DIRENT, some return a DIR.
  573. Autoconf has all the ability to isolate the differences and provide a
  574. snippet of code that always works.
  575.  
  576.     memory allocation
  577.     memory "models"
  578.     virtual memory: mmap vs. home-brew file I/O cache
  579.  
  580. Memory models disappear completely when dealing with a DPMI extender
  581. port.
  582.  
  583. Fractint has elaborate strategies for coping with limited amounts of
  584. memory for various situations.  Would a flat-model port eliminate the
  585. need for this parsimony?  Do the DPMI's provide virtual memory?  If
  586. so, then I'd suggest ditching the parsimonious behavior in favor of
  587. the VM from the DPMI.  If the flat-model only eliminates near/far/huge
  588. business but still leaves the need for being parsimonious, then the
  589. disk caching logic and so-on should remain.
  590.  
  591.     time and date / timers
  592.  
  593. Fractint uses the PC's timer -- I believe it only uses it in a
  594. stopwatch manner, not to control I/O polling.  (Keyboard polling is
  595. controlled by an internal counter which is adjusted by various
  596. computation routines.  When the counter reaches zero, the keyboard is
  597. checked for input.)  Providing an interface to a system stopwatch is
  598. relatively straightforward.  This would be needed even under a Win32
  599. port since fractint's idea of accessing the timer relies on a DOS
  600. model, which accesses the timer directly (or does it use BIOS?).
  601.  
  602.     signals
  603.  
  604. There are differences between unices.  Some signal handlers return
  605. void, some return int.  Autoconf can handle this.
  606.  
  607.     compilation issues / portability / assembler
  608.     autoconf
  609.         probably lots of include files to sort out.
  610.         driver options
  611.         autodiscover drivers?
  612.         libraries: math library, gmp?
  613.         building help compiler to build help file
  614.         building help file with help compiler
  615.         data files: frmfiles, ifsfiles, lfiles, mapfiles, parfiles
  616.         wipe out default .l.o rule;
  617.         .l files here aren't lex files, they're lsys files
  618.         documentation rule: fractint.doc
  619.  
  620. The stuff under autoconf -- if you're not familiar with autoconf, see
  621. bwlo(*) -- is a list of things that need to be done to use autoconf
  622. for fractint.
  623.  
  624.     trig constants
  625.         why use homebrew PI, etc.?  use M_PI, M_PI_2, etc. instead
  626.  
  627. I'm not sure why fractint defines its own value for PI.  Maybe because
  628. when fractint was first compiled, there weren't any good math.h's for
  629. the PC?  At any rate, I think M_PI and friends from math.h should be
  630. preferred unless there is a significant reason not to.  Again, autconf
  631. can detect the absence of a defined M_PI and define one for that case.
  632.  
  633.     void * != int
  634.  
  635. Lots of places in the code there are implicit assumptions about
  636. sizeof(int) == sizeof(void *).  This isn't good for portability in
  637. general, and in the L-system code I think it actually causes a crash
  638. in xfractint that shouldn't be there.
  639.  
  640.     data type support: int, long, long long, float, double, long double
  641.  
  642. Autoconf can detect the sizes of all these data types and distinguish
  643. which ones embody more precision.  Conditional compilation of long
  644. double support could be added through the code as a function of the
  645. compiler rather than a "DOS/XFRACT" switch as is currently done.
  646.  
  647.     arbitrary precision arithmetic
  648.     gmp only provides integers, rationals, fixed.  Doesn't provide
  649.     trig functions.  Contribute complex, trig implementations back
  650.     to FSF.
  651.  
  652. The arbitrary precision arithmetic routines used by fractint aren't
  653. portable to non-x86 platforms.  However, the gmp (GNU multiple
  654. precision) library *is* portable to a large number of platforms -- it
  655. has assembly for the inner loops for a variety of CPUs:  a29k, alpha,
  656. arm, clipper, cray, hppa, i960, m68k, m88k, mips2, mips3, ns32k,
  657. powerpc32, powerpc64, pyr, sh, sparc32, sparc64, vax, x86 (includes
  658. pentium support), z8000, and z8000x.  I think fractint should adopt
  659. gmp, but this will mean a fair bit of work.
  660.  
  661. gmp provides arbitrary precision integer, rational and floating point
  662. representations.  It does not provide a complex representation
  663. (although making one is straightforward), nor does it provide
  664. trigonometric functions for any of the data types.  Fractint's bignum
  665. implementation provides both of these.  If it were up to me, I'd take
  666. the complex and trig support impemented in fractint, port that onto
  667. the gmp library and contribute it back as GPL'ed source to the gmp
  668. maintainers.  Then I'd move fractint to using gmp completely.
  669.  
  670. Given the other items on the portability menu, I'd rank this as a
  671. rather low-priority item.  (On the other hand, if you deseperately
  672. want xfractint calculating arbitrary precision M-sets on a cray, you
  673. might prioritize it higher. :-)
  674.  
  675. (*) ==== About autoconf
  676.  
  677. There are lots of minor nagging differences between unix
  678. implementations.  This was what vendors did to "add value" during the
  679. pre-POSIX days.  Now people realize that consistency of an interface is
  680. more valuable than any value "added" by deviating in a non-portable
  681. manner.  At any rate, we're now stuck with how to resolve all these
  682. niggling little differences between unix boxes.  Autoconf was invented
  683. to solve this problem as open source software evolved and was ported to
  684. more and more platforms.
  685.  
  686. Rather than try and identify the feature sets provided by all possible
  687. OS and hardware combinations ahead of time, autoconf builds a
  688. configuration script based on knowledge of the source code's
  689. requirements.  The configure script knows what the source code needs
  690. (or what alternatives the source code implements) and probes the
  691. system at compile time to see if the system provides facilities
  692. sufficient for the compilation of the package.  It identifies
  693. alternatives available in the system and marks them in a configuration
  694. header file.  The header file is included by the source code to select
  695. between alternatives or conditionally compile snippets of code based
  696. on the configuration.
  697.  
  698. Mechanically, it works like this:
  699.  
  700.     configure.in is a file you edit that specifies your software's
  701.     feature requirements (include files, typedefs, functions,
  702.     libraries, etc.)
  703.  
  704.     Makefile.in, config.h.in, etc.
  705.     Remaining *.in files are templates containing autoconf
  706.     variables.  When the source code is configured, the configure
  707.     script will process the template files and expand the autoconf
  708.     macros to the appropriate values for the system.
  709.  
  710.     autoconf generates a configure script from configure.in, since
  711.     a configure script is a big hairy /bin/sh script that is too
  712.     cumbersome to write by hand.  Configure.in serves as a
  713.     template that is macro expanded through m4 to obtain
  714.     configure.
  715.  
  716.     configure is run on the target system, identifying available
  717.     features for the software. *.in template files are processed
  718.     and autoconf variables are substituted by their appropriate
  719.     values in the templates.  This step usually creates your
  720.     Makefile and config.h
  721.  
  722.     now you're ready to run make and install the target.
  723.  
  724. The end user (the person compiling your source distribution) isn't
  725. required to have "autoconf" installed unless they want to change the
  726. source code's configuration process.  One generally distributes source
  727. after you've run autoconf so that a configure script comes with the
  728. source code.  An end-user obtains the source, runs configure, types
  729. "make" and then "make install" to install the software.  No more
  730. editing of include files and/or Makefiles to configure your package!
  731.  
  732. There is an additional GNU tool called "automake" that simplifies the
  733. details of writing a makefile compliant with the GNU coding standards.
  734. (This provides standard targets for actions like "install",
  735. "uninstall", conventions for locations of binary files, installed
  736. header files, installed libraries, and so-on.) Automake works in
  737. conjuction with autoconf, but autoconf doesn't require automake.
  738.  
  739. Thanks for using Fractdev, The Fractint Developer's Discussion List
  740. Post Message:   fractdev@lists.xmission.com
  741. Get Commands:   majordomo@lists.xmission.com "help"
  742. Administrator:  twegner@phoenix.net
  743. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  744.  
  745.  
  746. -------------------------------------------------------------------------------
  747.  
  748. From: Phil McRevis <legalize@xmission.com>
  749. Subject: (fractdev) C++ templates and generic programming and fractint! :)
  750. Date: 29 Apr 1999 17:00:17 -0600
  751.  
  752. Just an observation... fractint already embodies the concept of
  753. "generic programming with template classes" as closely as C can deal
  754. with it.
  755.  
  756. Think about it... fractint has different code blocks implementing the
  757. mathematics of long (integer), double, long double, bignum and bigfloat
  758. number representations.  Fractint evolved in C what one would do in
  759. C++ with a template class: provide different implementations of the
  760. same set of operations for different underlying representations.o
  761.  
  762. As I'm scanning through the fractint source code, I'm looking at
  763. things that go like this alot:
  764.  
  765.     if (integer math)
  766.     do some setup calculation using an integer representation
  767.     else if (floating point math)
  768.     do some setup calculation using a double representation
  769. #ifndef XFRACT
  770.     else if (extended precision fp math)
  771.     do some setup calculation using a long double representation
  772. #endif
  773.     else if (bignum math)
  774.     do some setup calculation using a bignum representation
  775.     else if (bigfloat math)
  776.     do some setup calculation using a bigfloat representation
  777.  
  778. Variables also exist in multiple representations like the complex-plane
  779. coordinates identifying the current zoom box.  What fractint is really
  780. doing is using an arbitrary precision datatype that adapts its
  781. computation based on the amount of precision required.  Based on the
  782. zoom box, fractint decides how many decimals of precision it needs and
  783. swaps the representation as needed while zooming if the pixel's inner
  784. loop can handle it.
  785.  
  786. If at some point fractint evolves into using C++, I think this would be
  787. the strongest argument for such a move.  The template classes of C++
  788. allow for a much cleaner representation of this idea.  It would also be
  789. much less error-prone when making modifications to the code.  Consider
  790. the setup calculation example above.  With a template implementation,
  791. we would have a single expression for the setup calculation.  If this
  792. calculation needed to change, only one expression would need to be
  793. edited and tested.  With the existing method, all the expressions have
  794. to be edited and tested separately.
  795.  
  796. Adding a new fractal type would imply that the formula would be
  797. implemented for *all* supported representations with a single template
  798. function.  (This is the power of generic programming using templates.)
  799. Each new fractal type would get arbitrary precision arithmetic "for
  800. free".
  801.  
  802. --
  803. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  804.     ``Ain't it funny that they all fire the pistol, 
  805.       at the wrong end of the race?''--PDBT
  806.           <http://www.eden.com/~thewho>
  807.  
  808. Thanks for using Fractdev, The Fractint Developer's Discussion List
  809. Post Message:   fractdev@lists.xmission.com
  810. Get Commands:   majordomo@lists.xmission.com "help"
  811. Administrator:  twegner@phoenix.net
  812. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  813.  
  814.  
  815. -------------------------------------------------------------------------------
  816.  
  817. From: "Damien M. Jones" <dmj@fractalus.com>
  818. Subject: Re: (fractdev) C++ templates and generic programming and
  819. Date: 29 Apr 1999 18:01:30 -0500
  820.  
  821. Rich,
  822.  
  823.  - If at some point fractint evolves into using C++, I think this would
  824.  - be the strongest argument for such a move.  The template classes of
  825.  - C++ allow for a much cleaner representation of this idea.
  826.  
  827. (laughing) I seem to recall this topic being brought up some time ago. I'm
  828. glad to see it raised again. It's also the model I used for JuliaSaver,
  829. which implements a base class with all the guessing logic and a good chunk
  830. of the setup code, and the individual fractal type classes just override
  831. the actual iteration routines and any other setup routines they need to
  832. modify. (In case there was any question about the efficiency of C++.)
  833.  
  834. Damien M. Jones   \\
  835. dmj@fractalus.com  \\  Fractalus Galleries & Info:
  836.                     \\  http://www.fractalus.com/
  837.  
  838. Please do not post my e-mail address on a web site or
  839. in a newsgroup.  Thank you.
  840.  
  841. Thanks for using Fractdev, The Fractint Developer's Discussion List
  842. Post Message:   fractdev@lists.xmission.com
  843. Get Commands:   majordomo@lists.xmission.com "help"
  844. Administrator:  twegner@phoenix.net
  845. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  846.  
  847.  
  848. -------------------------------------------------------------------------------
  849.  
  850. From: Phil McRevis <legalize@xmission.com>
  851. Subject: Re: (fractdev) C++ templates and generic programming and fractint! :) 
  852. Date: 29 Apr 1999 17:17:00 -0600
  853.  
  854.  
  855. In article <3.0.5.32.19990429180130.0093c530@mail.icd.com>,
  856.     "Damien M. Jones" <dmj@fractalus.com>  writes:
  857. > (laughing) I seem to recall this topic being brought up some time ago.
  858.  
  859. I must have missed that, or perhaps it appeared on another list.  I
  860. rank contributions to fractdev of higher importance than the other
  861. fractal lists :-).
  862.  
  863. But its nice to see someone's reading all this stuff I've been sending
  864. out.  Sometimes its nice to hear back an "echo". :-)
  865.  
  866. > I'm
  867. > glad to see it raised again. It's also the model I used for JuliaSaver,
  868. > which implements a base class with all the guessing logic and a good chunk
  869. > of the setup code, and the individual fractal type classes just override
  870. > the actual iteration routines and any other setup routines they need to
  871. > modify. (In case there was any question about the efficiency of C++.)
  872.  
  873. Ah, but here you're using the inheritence/OOness of C++ to exploit
  874. reuse.  The generic programming/template model, as embodied by the STL
  875. for example, is really quite a different kind of reuse than that
  876. provided by class hierarchies.  If anyone out there reading this
  877. hasn't read Stroustrop's "C++ Programming Language", 3rd ed., section
  878. on the STL, go out and get it and read it!  After you've read it the
  879. first time and thought about it for a few months, go back and read it
  880. again!
  881.  
  882. Despite all the different programming languages and circumstances in
  883. which I've exercised my skill, the concepts embodied by the STL really
  884. changed the way I looked at certain programming problems.  STL is
  885. written in C++, but it isn't "object oriented".  There is a minor use
  886. of class inheritance to exhibit some reuse, but this is rare and only
  887. in places where it makes sense for the problem.  STL has some aspects
  888. of "functional" programming languages, especially adaptors, binders,
  889. unary_function, binary_function, and so-on.
  890.  
  891. The model of the STL is powerful, richly expressive, composable and
  892. adaptable all while being efficient!  Provided of course you have a
  893. decent STL implementation, but the open source SGI implementation is
  894. pretty good at this point if you happen to be stuck with a sucky STL.
  895. You will need a good template-aware C++ compiler or you'll be hosed.
  896.  
  897. Somewhere buzzing around my brain is the zygotal code of a
  898. template-based library that exploits generic programming techniques to
  899. deal with the explosion of concrete types (bitmap, grayscale,
  900. luminance + alpha, rgb, rgb15, rgb16, rgb24, rgba, abgr, bgr,
  901. rrr....bbb...ggg..., etc., images) in imaging and graphics.
  902. --
  903. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  904.     ``Ain't it funny that they all fire the pistol,     
  905.       at the wrong end of the race?''--PDBT     
  906. legalize@xmission.com    <http://www.eden.com/~thewho>
  907.  
  908. Thanks for using Fractdev, The Fractint Developer's Discussion List
  909. Post Message:   fractdev@lists.xmission.com
  910. Get Commands:   majordomo@lists.xmission.com "help"
  911. Administrator:  twegner@phoenix.net
  912. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  913.  
  914.  
  915. -------------------------------------------------------------------------------
  916.  
  917. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  918. Subject: Porting Fractint (was Re: (fractdev) DOS support via allegro?)
  919. Date: 29 Apr 1999 21:16:20 -0300 (EST)
  920.  
  921.  
  922.     Hi All,
  923.  
  924.     Good to the the list moving :-)
  925.  
  926.     "Phil" I've browsed in to the XaoS code (alnd I wrote the author for
  927. more info but haven't got an answer yet). It uses a nice approach to isolate
  928. OS-specifica prats from the main program, what makes porting easy if the C style
  929. isn't plataform specific or makes assumptions on sizeof things etc.
  930.  
  931.     I have managed to compile hc (and it works) and fractint (it does not
  932. work yet) qith DJGPP and I was writing a small quick intro to those that want to
  933. experiment with DJGPP. I'll post it to the list as it is fairly small.
  934.  
  935.     If we can use a similar approach: an API to handel OS-specific stuff I
  936. guess the rest of the problem would be clean the code from plataform assumtions
  937. and we could have Fractint running in several platforms (like XaoS for
  938. instance).
  939.  
  940.     []'s
  941.  
  942.     Humberto R. Baptista
  943.     humberto@insite.com.br
  944.  
  945. Insite - Solucoes Internet                         http://www.insite.com.br
  946.  
  947. -----BEGIN GEEK CODE BLOCK-----
  948. Version: 3.1
  949. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  950. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  951. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  952. y+++*
  953. ------END GEEK CODE BLOCK------
  954.  
  955.  
  956.  
  957. Thanks for using Fractdev, The Fractint Developer's Discussion List
  958. Post Message:   fractdev@lists.xmission.com
  959. Get Commands:   majordomo@lists.xmission.com "help"
  960. Administrator:  twegner@phoenix.net
  961. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  962.  
  963.  
  964. -------------------------------------------------------------------------------
  965.  
  966. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  967. Subject: (fractdev) Preliminar DJGPP howto :-))
  968. Date: 29 Apr 1999 21:18:52 -0300 (EST)
  969.  
  970. HOWTO work with GCC in DOS - for the Fractint Devel Team
  971.  
  972. 1. Getting the Tools
  973.  
  974.     Go to DJGPP (Delorie's GCC port to DOS)
  975.  
  976.     http://www.delorie.com/djgpp/ 
  977.  
  978.     And select the /Zip Picker/ there choose your preferred SimTel
  979. mirror and pick (at least) the options:
  980.  
  981.     -Build and run programs with DJGPP
  982.     -<your operating system>
  983.     -<documentation if you do not use emacs/rhide>
  984.     -C
  985.     -RHide <recommended> or Emacs <for those used to it>
  986.     -<gdb if not using RHide>
  987.     -Allegro Toolkit
  988.     -GRX
  989.  
  990.     And download the files.
  991.  
  992. 2. Install
  993.  
  994.     From the result of /Zip Picker/:
  995. "
  996. You need to update your C:\AUTOEXEC.BAT to include the following lines: 
  997.  
  998. set PATH=C:\DJGPP\BIN;%PATH%
  999. set DJGPP=C:\DJGPP\DJGPP.ENV
  1000.  
  1001. Note that the PATH statement should follow any other PATH statements, or you may
  1002. edit an existing PATH
  1003. statement.
  1004.  
  1005. You'll need to restart your computer for these changes to take effect.
  1006. "
  1007.     
  1008. 3. Build and test Allegro & GRX
  1009.  
  1010.     Go to the allegro directory:
  1011.  
  1012.     c:
  1013.         cd \DJGPP\ALLEGRO
  1014.  
  1015.     and make all files:
  1016.  
  1017.     make
  1018.  
  1019.     This should produce all binaries using your newlyn installed
  1020. DJGPP and all the examples too, do a CD EXAMPLES and experiment with all
  1021. the examples: ex*.exe Some of them will give good implementations ideas
  1022. besides showing what allegro can do.
  1023.  
  1024.     []'s
  1025.  
  1026.     HB
  1027.  
  1028.  
  1029. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1030. Post Message:   fractdev@lists.xmission.com
  1031. Get Commands:   majordomo@lists.xmission.com "help"
  1032. Administrator:  twegner@phoenix.net
  1033. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1034.  
  1035.  
  1036. -------------------------------------------------------------------------------
  1037.  
  1038. From: Phil McRevis <legalize@xmission.com>
  1039. Subject: Re: Porting Fractint (was Re: (fractdev) DOS support via allegro?) 
  1040. Date: 29 Apr 1999 18:19:38 -0600
  1041.  
  1042.  
  1043. Humberto, if you're also working on DJGPP issues, that would be great
  1044. to coordinate.  My primary development platform is Borland C++ tools
  1045. on the PC.  I have downloaded djgpp but haven't installed it from the
  1046. zips yet.
  1047.  
  1048. In article <Pine.LNX.4.02.9904292110030.9207-100000@tatui.insite.com.br>,
  1049.     Humberto Rossetti Baptista <humberto@insite.com.br>  writes:
  1050. > If we can use a similar approach: an API to handel OS-specific stuff I
  1051. > guess the rest of the problem would be clean the code from plataform
  1052. > assumtions
  1053. > and we could have Fractint running in several platforms (like XaoS for
  1054. > instance).
  1055.  
  1056. That's the idea exactly.  I've outlined what I see (so far) as the OS
  1057. specific issues in another message.
  1058. --
  1059. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1060.     ``Ain't it funny that they all fire the pistol,     
  1061.       at the wrong end of the race?''--PDBT     
  1062. legalize@xmission.com    <http://www.eden.com/~thewho>
  1063.  
  1064. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1065. Post Message:   fractdev@lists.xmission.com
  1066. Get Commands:   majordomo@lists.xmission.com "help"
  1067. Administrator:  twegner@phoenix.net
  1068. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1069.  
  1070.  
  1071. -------------------------------------------------------------------------------
  1072.  
  1073. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  1074. Subject: Re: (fractdev) portability thoughts
  1075. Date: 29 Apr 1999 21:29:55 -0300 (EST)
  1076.  
  1077. On Thu, 29 Apr 1999, Phil McRevis wrote:
  1078.  
  1079. >     memory allocation
  1080. >     memory "models"
  1081. >     virtual memory: mmap vs. home-brew file I/O cache
  1082. > Memory models disappear completely when dealing with a DPMI extender
  1083. > port.
  1084.  
  1085.     Yep.
  1086.  
  1087. > Fractint has elaborate strategies for coping with limited amounts of
  1088. > memory for various situations.  Would a flat-model port eliminate the
  1089. > need for this parsimony?  Do the DPMI's provide virtual memory?  If
  1090. > so, then I'd suggest ditching the parsimonious behavior in favor of
  1091. > the VM from the DPMI.  If the flat-model only eliminates near/far/huge
  1092. > business but still leaves the need for being parsimonious, then the
  1093. > disk caching logic and so-on should remain.
  1094.  
  1095.     The "extender" used to put a app in flat mode (32 bit) in DOS and the
  1096. DPMI server should handle ALL memory stuff. Other platforms do this nicely
  1097. (linux for instance) so we shoud invest as little as possible in this. As the
  1098. DPMI + extender do this for uss let's not mess more with overlays, memory
  1099. models and disk caching strats.
  1100.  
  1101. >     signals
  1102. > There are differences between unices.  Some signal handlers return
  1103. > void, some return int.  Autoconf can handle this.
  1104.  
  1105.     As of now fractint does not need to handle them except in specific
  1106. platforms (unix) so we could leave them to be dealt with later.
  1107.  
  1108. >     compilation issues / portability / assembler
  1109.  
  1110.     I was converned w/ the assembly part of fractint, but is easy to avoid
  1111. it completly as the Xfractint code already does. As tim pointed out this is the
  1112. way we should go: Make Xfractint more portable, maybe running in DOS and Linux
  1113. and then clean things up.
  1114.  
  1115. >     autoconf
  1116.  
  1117.     I've never dealt w/ autoconf in the developpers role, but I  am seing a
  1118. lot of stuff here that isn't essential to put things up and running in a
  1119. portable manner.
  1120.  
  1121. > The arbitrary precision arithmetic routines used by fractint aren't
  1122. > portable to non-x86 platforms.  However, the gmp (GNU multiple
  1123.  
  1124.     Why not? I havent checked this myself but if I recall right it has a
  1125. nice C version of everything that is MP related. Tim?
  1126.  
  1127. > Given the other items on the portability menu, I'd rank this as a
  1128. > rather low-priority item.  (On the other hand, if you deseperately
  1129. > want xfractint calculating arbitrary precision M-sets on a cray, you
  1130. > might prioritize it higher. :-)
  1131.  
  1132.     Yesssss. And also I think gmp is C++ isnt' it?
  1133.  
  1134.     Humberto R. Baptista
  1135.     humberto@insite.com.br
  1136.  
  1137. Insite - Solucoes Internet                         http://www.insite.com.br
  1138.  
  1139. -----BEGIN GEEK CODE BLOCK-----
  1140. Version: 3.1
  1141. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  1142. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  1143. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  1144. y+++*
  1145. ------END GEEK CODE BLOCK------
  1146.  
  1147.  
  1148.  
  1149. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1150. Post Message:   fractdev@lists.xmission.com
  1151. Get Commands:   majordomo@lists.xmission.com "help"
  1152. Administrator:  twegner@phoenix.net
  1153. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1154.  
  1155.  
  1156. -------------------------------------------------------------------------------
  1157.  
  1158. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  1159. Subject: (fractdev) Porting fractint strategies (32bit flat mem. model etc.)
  1160. Date: 29 Apr 1999 21:37:20 -0300 (EST)
  1161.  
  1162.  
  1163.     List,
  1164.  
  1165.     I wish to help a little with some simple suggestions to all that are
  1166. thinking/working with the portability issue:
  1167.  
  1168.     a) let's release a "last" 16 bit versino ASAP (Tim?) and feature freeze
  1169. it (just correct bugs).
  1170.  
  1171.     b) Let's concentrate in put up a version running in DJGPP/DOS (or
  1172. gcc/Linux, wichever has the larger number of developpers willing to help) with
  1173. the LEAST modiffications needed. I think this should be done in the api manner
  1174. XaoS does as "Phil" pointed, but without adding to much fuzz to the process and
  1175. then
  1176.     c) Hunt down all others platform-centric issues and remove historic code
  1177. (that wont'be used any more) together with:
  1178.  
  1179.     d) work on the low level drivers to several platforms (using the API) to
  1180. spread the Fractint development further more.
  1181.  
  1182.     The b) item seems like a bottleneck point to me, that's why i'm
  1183. insisting in the simplicity approach :-)
  1184.  
  1185.     After it is done we can work in paralell, cleaning code, porting, and
  1186. (of COURSE) coding new stuff for Fractint :->>> 
  1187.  
  1188.     []'s
  1189.  
  1190.     Humberto R. Baptista
  1191.     humberto@insite.com.br
  1192.  
  1193. Insite - Solucoes Internet                         http://www.insite.com.br
  1194.  
  1195. -----BEGIN GEEK CODE BLOCK-----
  1196. Version: 3.1
  1197. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  1198. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  1199. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  1200. y+++*
  1201. ------END GEEK CODE BLOCK------
  1202.  
  1203.  
  1204.  
  1205. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1206. Post Message:   fractdev@lists.xmission.com
  1207. Get Commands:   majordomo@lists.xmission.com "help"
  1208. Administrator:  twegner@phoenix.net
  1209. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1210.  
  1211.  
  1212. -------------------------------------------------------------------------------
  1213.  
  1214. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  1215. Subject: Re: Porting Fractint (was Re: (fractdev) DOS support via allegro?)
  1216. Date: 29 Apr 1999 21:46:19 -0300 (EST)
  1217.  
  1218. On Thu, 29 Apr 1999, Phil McRevis wrote:
  1219.  
  1220. > Humberto, if you're also working on DJGPP issues, that would be great
  1221. > to coordinate.  My primary development platform is Borland C++ tools
  1222. > on the PC.  I have downloaded djgpp but haven't installed it from the
  1223. > zips yet.
  1224.  
  1225.     Frankly I've been using Borland tools anlo and just recently downloaded
  1226. the djgpp (and Allegro and rhide a nice IDE for DJGPP, very similar to
  1227. borland's) and it is GREAT. Works very well.
  1228.  
  1229.     See if my draft of DJGPP howto helps! :-))))) (it's already posted).
  1230.  
  1231. > That's the idea exactly.  I've outlined what I see (so far) as the OS
  1232. > specific issues in another message.
  1233.  
  1234.     Speaking of "echo" :-)
  1235.  
  1236.     Right I've read it and I think I've being doing it wrong in not sharing
  1237. the experiences with the list, so all of you jus cope w/ me while I compensate
  1238. for that :-)
  1239.  
  1240.     XaoS approach to the platform-api is to put all variables and function
  1241. adresess specifict to that platform in a big struct and go for it. I am thinking
  1242. if we should do the same or if there would be any gain to slpit the api in
  1243. several areas (for instance graphics, sound, mice/keyboard, disk related etc.)
  1244. What do you think??
  1245.  
  1246.     []'s
  1247.  
  1248.     Humberto R. Baptista
  1249.     humberto@insite.com.br
  1250.  
  1251. Insite - Solucoes Internet                         http://www.insite.com.br
  1252.  
  1253. -----BEGIN GEEK CODE BLOCK-----
  1254. Version: 3.1
  1255. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  1256. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  1257. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  1258. y+++*
  1259. ------END GEEK CODE BLOCK------
  1260.  
  1261.  
  1262.  
  1263. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1264. Post Message:   fractdev@lists.xmission.com
  1265. Get Commands:   majordomo@lists.xmission.com "help"
  1266. Administrator:  twegner@phoenix.net
  1267. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1268.  
  1269.  
  1270. -------------------------------------------------------------------------------
  1271.  
  1272. From: Phil McRevis <legalize@xmission.com>
  1273. Subject: Re: (fractdev) portability thoughts 
  1274. Date: 29 Apr 1999 18:50:31 -0600
  1275.  
  1276.  
  1277. In article <Pine.LNX.4.02.9904292120570.9207-100000@tatui.insite.com.br>,
  1278.     Humberto Rossetti Baptista <humberto@insite.com.br>  writes:
  1279. >     I've never dealt w/ autoconf in the developpers role, but I  am seing a
  1280. > lot of stuff here that isn't essential to put things up and running in a
  1281. > portable manner.
  1282.  
  1283. What things are you seeing that aren't essential?  All the things I
  1284. listed are portability issues.
  1285.  
  1286. > > The arbitrary precision arithmetic routines used by fractint aren't
  1287. > > portable to non-x86 platforms.  However, the gmp (GNU multiple
  1288. >     Why not? I havent checked this myself but if I recall right it has a
  1289. > nice C version of everything that is MP related. Tim?
  1290.  
  1291. Some low-level stuff is written in assembly, see bigflta.asm and
  1292. bignuma.asm.  Poking around a little more, it looks like bigfltc.c
  1293. implements C versions of the assembly routines.  As I say, I consider
  1294. switching to gmp to be a very low-priority item, i.e. one of
  1295. optimization not one of correctness.  You want to do it eventually to
  1296. get fast MP support on more than just x86 DOS platforms.  (Even x86
  1297. linux can't take advantage of the x86 assembly for fractint's MP math
  1298. since the assembly is 16-bit!)
  1299.  
  1300. >     Yesssss. And also I think gmp is C++ isnt' it?
  1301.  
  1302. gmp is ANSI C.
  1303. --
  1304. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1305.     ``Ain't it funny that they all fire the pistol,     
  1306.       at the wrong end of the race?''--PDBT     
  1307. legalize@xmission.com    <http://www.eden.com/~thewho>
  1308.  
  1309. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1310. Post Message:   fractdev@lists.xmission.com
  1311. Get Commands:   majordomo@lists.xmission.com "help"
  1312. Administrator:  twegner@phoenix.net
  1313. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1314.  
  1315.  
  1316. -------------------------------------------------------------------------------
  1317.  
  1318. From: Phil McRevis <legalize@xmission.com>
  1319. Subject: Re: (fractdev) Porting fractint strategies (32bit flat mem. model etc.) 
  1320. Date: 29 Apr 1999 18:53:51 -0600
  1321.  
  1322.  
  1323. Humberto, what you propose is exactly inline with my thinking.  I'm
  1324. already signed up for the "driver harness" a la XaoS and adjusting the
  1325. existing xfract code to use the harness.  Then I'll remove all memory
  1326. model stuff.  That should serve as the starting point for whoever adds
  1327. display driver support back in for the DOS DJGPP side of things.
  1328. There are places where parallel developers can work without bumping
  1329. into each other (different display driver implementations), but its
  1330. probably best to have just one person overhaul the central control
  1331. logic and associated glue to the driver.  We've kinda talked about
  1332. this forever so I just got sick of talking about it and I'm doing it.
  1333. :-)
  1334. --
  1335. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1336.     ``Ain't it funny that they all fire the pistol,     
  1337.       at the wrong end of the race?''--PDBT     
  1338. legalize@xmission.com    <http://www.eden.com/~thewho>
  1339.  
  1340. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1341. Post Message:   fractdev@lists.xmission.com
  1342. Get Commands:   majordomo@lists.xmission.com "help"
  1343. Administrator:  twegner@phoenix.net
  1344. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1345.  
  1346.  
  1347. -------------------------------------------------------------------------------
  1348.  
  1349. From: Phil McRevis <legalize@xmission.com>
  1350. Subject: Re: Porting Fractint (was Re: (fractdev) DOS support via allegro?) 
  1351. Date: 29 Apr 1999 19:03:41 -0600
  1352.  
  1353.  
  1354. In article <Pine.LNX.4.02.9904292140580.9207-100000@tatui.insite.com.br>,
  1355.     Humberto Rossetti Baptista <humberto@insite.com.br>  writes:
  1356. >     XaoS approach to the platform-api is to put all variables and function
  1357. > adresess specifict to that platform in a big struct and go for it. I am think
  1358. ing
  1359. > if we should do the same or if there would be any gain to slpit the api in
  1360. > several areas (for instance graphics, sound, mice/keyboard, disk related etc.
  1361. )
  1362. > What do you think??
  1363.  
  1364. I'm thinking that the driver keeps private any data that it needs only
  1365. to get its job done.  Under X11, that means things like pixel lookup
  1366. tables, dynamically allocated X resources (windows, pixmaps,
  1367. colormaps, GCs, etc.) and so-on.  These are visible only to the
  1368. driver.
  1369.  
  1370. Then there is a collection of stuff that is supplied to fractint for
  1371. handling the video driver support.  This is basically an array of
  1372. structures that define video mode characteristics.  Currently this
  1373. collection of settings is couched in very PC-centric terms, right down
  1374. to the interrupt call arguments!
  1375.  
  1376. That basic idea would remain the same with display drivers, however.
  1377. What changes is the control logic that initializes the table at
  1378. program startup-time (and possibly updating it during runtime).  Right
  1379. now the table is created from fractint.cfg as a fixed list.  Some of
  1380. the data currently stored in the table (like PC interrupt arguments)
  1381. becomes private data of the driver.  The rest remains relevant as a
  1382. result from a driver when its queried from fractint.
  1383. --
  1384. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1385.     ``Ain't it funny that they all fire the pistol,     
  1386.       at the wrong end of the race?''--PDBT     
  1387. legalize@xmission.com    <http://www.eden.com/~thewho>
  1388.  
  1389. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1390. Post Message:   fractdev@lists.xmission.com
  1391. Get Commands:   majordomo@lists.xmission.com "help"
  1392. Administrator:  twegner@phoenix.net
  1393. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1394.  
  1395.  
  1396. -------------------------------------------------------------------------------
  1397.  
  1398. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  1399. Subject: Re: (fractdev) Porting fractint strategies (32bit flat mem. model
  1400. Date: 29 Apr 1999 22:06:12 -0300 (EST)
  1401.  
  1402. On Thu, 29 Apr 1999, Phil McRevis wrote:
  1403.  
  1404. > Humberto, what you propose is exactly inline with my thinking.  I'm
  1405.  
  1406.     excelent.
  1407.  
  1408. > probably best to have just one person overhaul the central control
  1409. > logic and associated glue to the driver.  We've kinda talked about
  1410.  
  1411.     This is exatcly why i called this a bottleneck.
  1412.  
  1413. > this forever so I just got sick of talking about it and I'm doing it.
  1414. > :-)
  1415.  
  1416.     Cool. I do not have a lot of time spare right now, but if you need any
  1417. help just say so. PS: got the DJGPP howto?
  1418.  
  1419.     []'s
  1420.  
  1421.     Humberto R. Baptista
  1422.     humberto@insite.com.br
  1423.  
  1424. Insite - Solucoes Internet                         http://www.insite.com.br
  1425.  
  1426. -----BEGIN GEEK CODE BLOCK-----
  1427. Version: 3.1
  1428. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  1429. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  1430. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  1431. y+++*
  1432. ------END GEEK CODE BLOCK------
  1433.  
  1434.  
  1435.  
  1436. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1437. Post Message:   fractdev@lists.xmission.com
  1438. Get Commands:   majordomo@lists.xmission.com "help"
  1439. Administrator:  twegner@phoenix.net
  1440. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1441.  
  1442.  
  1443. -------------------------------------------------------------------------------
  1444.  
  1445. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  1446. Subject: Re: (fractdev) portability thoughts 
  1447. Date: 29 Apr 1999 22:18:19 -0300 (EST)
  1448.  
  1449. On Thu, 29 Apr 1999, Phil McRevis wrote:
  1450.  
  1451. > What things are you seeing that aren't essential?  All the things I
  1452. > listed are portability issues.
  1453.  
  1454.     Yes, but you have already pointed that some are less priority than
  1455. others :-)
  1456.  
  1457.     Also some things are not done properly but are done like the handling of
  1458. \ and / (i guess it is in port.h as several other stuff like data types are also
  1459. defined).
  1460.  
  1461.     []'s
  1462.  
  1463.     Humberto R. Baptista
  1464.     humberto@insite.com.br
  1465.  
  1466. Insite - Solucoes Internet                         http://www.insite.com.br
  1467.  
  1468. -----BEGIN GEEK CODE BLOCK-----
  1469. Version: 3.1
  1470. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  1471. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  1472. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  1473. y+++*
  1474. ------END GEEK CODE BLOCK------
  1475.  
  1476.  
  1477.  
  1478. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1479. Post Message:   fractdev@lists.xmission.com
  1480. Get Commands:   majordomo@lists.xmission.com "help"
  1481. Administrator:  twegner@phoenix.net
  1482. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1483.  
  1484.  
  1485. -------------------------------------------------------------------------------
  1486.  
  1487. From: "Damien M. Jones" <dmj@fractalus.com>
  1488. Subject: Re: (fractdev) C++ templates and generic programming and
  1489. Date: 29 Apr 1999 20:27:53 -0500
  1490.  
  1491. Rich,
  1492.  
  1493.  - Ah, but here you're using the inheritence/OOness of C++ to exploit
  1494.  - reuse.  The generic programming/template model, as embodied by the STL
  1495.  - for example, is really quite a different kind of reuse than that
  1496.  - provided by class hierarchies.
  1497.  
  1498. My mistake, I thought you were referring to inheritance with different
  1499. terminology, and not the STL. You're right, that IS different. And yes, I
  1500. was using inheritance to exploit reuse.
  1501.  
  1502. Damien M. Jones   \\
  1503. dmj@fractalus.com  \\  Fractalus Galleries & Info:
  1504.                     \\  http://www.fractalus.com/
  1505.  
  1506. Please do not post my e-mail address on a web site or
  1507. in a newsgroup.  Thank you.
  1508.  
  1509. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1510. Post Message:   fractdev@lists.xmission.com
  1511. Get Commands:   majordomo@lists.xmission.com "help"
  1512. Administrator:  twegner@phoenix.net
  1513. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1514.  
  1515.  
  1516. -------------------------------------------------------------------------------
  1517.  
  1518. From: Phil McRevis <legalize@xmission.com>
  1519. Subject: (fractdev) driver characteristics
  1520. Date: 29 Apr 1999 19:55:01 -0600
  1521.  
  1522. Since Humberto brought up some specifics of drivers, I'll say a little
  1523. about how I'm implementing the driver harness.  Naturally we'll be
  1524. able to change the harness later.  The point is not to design some
  1525. end-all be-all graphics API.  The idea is just to get things going
  1526. incrementally.  Feel free to kibitz, if its a big issue, something can
  1527. be done now, but please consider this more of a 'status report' for
  1528. your information on what I'm doing, more than a design review where
  1529. I'm proposing the idea. :-)
  1530.  
  1531. Existing video mode glue logic in fractint is currently implemented in
  1532. select_video_mode().  It walks through the table stored in memory and
  1533. creates the scrollable display of available video modes.  When you
  1534. select a mode from the list (or by some other means like video=), then
  1535. the proper parameters are snatched out of the table and sent to the
  1536. assembly routine setvideomode (video.asm), which issues the
  1537. appropriate commands to the video card.
  1538.  
  1539. With the harness, select_video_mode() instead walks a list of drivers
  1540. and queries each driver about the modes supported by the driver.  It
  1541. then displays a scrolling list created from the driver responses.
  1542. When the user selects an item on the list, select_video_mode() calls
  1543. through the driver harness to set the video mode.
  1544.  
  1545. This means that when we get to the point of having all (or several) or
  1546. the drivers I list below, under win98 you could have the choice of
  1547. the same video modes supported by multiple drivers.  The video display
  1548. list might look like this:
  1549.  
  1550. key...driver...name.................xdot.ydot.color.comment.............
  1551. SF1   win32    GDI Surface          1024x768  5:6:5
  1552. SF2   directx  Windowed             1024x768  5:6:5
  1553. SF3   directx  Full Screen          1024x768  8     256 colors
  1554. SF4   directx  Full Screen          1024x768  5:6:5 16-bit RGB
  1555. SF5   directx  Full Screen          1024x768  5:5:5 15-bit RGB
  1556. SF6   opengl   Full Screen          1024x768  8     256 color indexed
  1557. SF7   opengl   Full Screen          1024x768  8:8:8 24-bit RGB
  1558.  
  1559. (This is an ASCII graphic mockup; not a screen dump.)
  1560.  
  1561. Xdot and ydot take on a subtle meaning in a windowed environment, but
  1562. window systemless drivers still need to be able to report device
  1563. dimensions.
  1564.  
  1565. The video parameter ('video=<key>') currently only specifies a function
  1566. key which is bound to a video mode.  It doesn't force a particular
  1567. video mode, just selects one from the key list.  If you want to write a
  1568. script or parameter file that uses a particular video mode, you have to
  1569. ensure the proper key assignment is setup first.  To set the function
  1570. key assignment you have to get into the fractint.cfg file.  Icky!
  1571.  
  1572. With the harness, the video parameter is updated to specify both the
  1573. driver and the desires video mode provided by the driver.  So you'd
  1574. say something like "video=directx/1024x768/8".  A new method for
  1575. binding the keys to video modes will have to be provided, as the old
  1576. method depended on fractint.cfg which is now specific to the fractint
  1577. driver.
  1578.  
  1579. But what about the stuff the fractint.cfg file did?  That's used by the
  1580. "fractint" driver (see blow) as input to decide what video modes it
  1581. lists when queried.
  1582.  
  1583. Some really random ideas:
  1584.  
  1585. should image and model formats (3D raytracing files, etc) be
  1586.     supported as compile-time modules like drivers?
  1587.  
  1588. should drivers be allowed to invoke the engine distinct from
  1589.     fractint's gui?  Is the engine a client of the driver, or is the
  1590.     driver a client of the engine?  Fractint is currently architected
  1591.     towards the latter.  Reversing the assumption would be difficult.
  1592.  
  1593. should 3D drivers subsume 2D functionality?
  1594.     Is there any reason you'd want to use ogl for 3D, but x11 for 2D?
  1595.     If not, then "x11" and "opengl" drivers will provide everything
  1596.     you need.  Select an "x11' driver video mode for 2D stuff and an
  1597.     "opengl" driver video mode for 3D stuff.  Fractint doesn't (yet)
  1598.     mix 2D and 3D rendering together.
  1599.  
  1600. Drivers
  1601. -------
  1602. display drivers I think should be done, in no particular order:
  1603.     "curses"
  1604.     possibly uses curses, but only has character I/O.
  1605.     Displays "pixels" using characters as similar to XaoS.
  1606.     Enumerate text vide modes (DOS) or screen sizes (curses?) to
  1607.         form "video modes" table.
  1608.     Works in DOS (pd curses) and unix (native curses).
  1609.  
  1610.     "fractint"
  1611.     port existing fractint assembly code to 32-bit flat model.
  1612.     Included is the native video and mouse support coded in
  1613.     assembly.
  1614.  
  1615.     "allegro"
  1616.     Uses Allegro library under DJGPP to enumerate video formats
  1617.     and provide video/mouse/sound support.
  1618.  
  1619.     "disk"
  1620.     Video modes contain list of standard image sizes and "custom",
  1621.     letting you set the size.
  1622.  
  1623.     "win32"
  1624.     text menus are displayed graphically somehow.
  1625.     graphics display native to GDI presented as video mode.
  1626.     Emulate other modes?  Only if someone desperate for it --
  1627.     directx would be the preferred solution!
  1628.  
  1629.     "directx"
  1630.     text menus are displayed using a regular win32 window on GDI
  1631.         surface, or as graphic text on graphics screen (driver
  1632.         option).
  1633.     graphics display is done through full-screen with DirectDraw.
  1634.     DirectDrawDevices enumerated by DDraw are the video modes.
  1635.  
  1636.     "direct3d"
  1637.     Same as directx, but uses D3D for 3D effects.
  1638.  
  1639.     "x11"
  1640.     Text menus are displayed graphically using X11.
  1641.     Available visuals on the screen are the video modes.
  1642.     
  1643.     "opengl"
  1644.     Same as X11, only OGL-capable visuals are video modes.
  1645.     Uses OGL for all pixel I/O and 3D.
  1646.  
  1647. like XaoS, more that one driver can be available, but only one driver
  1648. can be active at once in any given graphic window.
  1649.  
  1650. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1651. Post Message:   fractdev@lists.xmission.com
  1652. Get Commands:   majordomo@lists.xmission.com "help"
  1653. Administrator:  twegner@phoenix.net
  1654. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1655.  
  1656.  
  1657. -------------------------------------------------------------------------------
  1658.  
  1659. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  1660. Subject: Re: (fractdev) driver characteristics
  1661. Date: 29 Apr 1999 23:44:47 -0300 (EST)
  1662.  
  1663. On Thu, 29 Apr 1999, Phil McRevis wrote:
  1664.  
  1665. [... description of select_video_mode]
  1666.  
  1667.     Just to clear things for me: are you taking for a staring point the
  1668. fractint or the xfractint code (the 2 are the same, but w/ different #defines )
  1669.  
  1670. [... harnessing the video mode]
  1671. > With the harness, the video parameter is updated to specify both the
  1672. > driver and the desires video mode provided by the driver.  So you'd
  1673. > say something like "video=directx/1024x768/8".  A new method for
  1674. > binding the keys to video modes will have to be provided, as the old
  1675. > method depended on fractint.cfg which is now specific to the fractint
  1676. > driver.
  1677.  
  1678.     That is very nice. Seems ok, but in one given platform there will be all
  1679. the drivers to all the platforms or just the ones concerning that one platform?
  1680.  
  1681. > should image and model formats (3D raytracing files, etc) be
  1682. >     supported as compile-time modules like drivers?
  1683.  
  1684.     That is also a nice idea.
  1685. [...]
  1686.  
  1687. > Drivers
  1688. > -------
  1689. > display drivers I think should be done, in no particular order:
  1690. >     "curses"
  1691. >     possibly uses curses, but only has character I/O.
  1692. >     Displays "pixels" using characters as similar to XaoS.
  1693.  
  1694.     I guess this is aalib ?? It is not curses but i guess if could be seen
  1695. as though it is.
  1696.  
  1697.     Wouldn't it be interesting to abandon the text mode completly and user
  1698. the graphic mode for messages also? This could lead with work and time to an
  1699. uniform fractint gui look all across different platforms.
  1700.  
  1701.     []'s
  1702.  
  1703.     Humberto R. Baptista
  1704.     humberto@insite.com.br
  1705.  
  1706. Insite - Solucoes Internet                         http://www.insite.com.br
  1707.  
  1708. -----BEGIN GEEK CODE BLOCK-----
  1709. Version: 3.1
  1710. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  1711. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  1712. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  1713. y+++*
  1714. ------END GEEK CODE BLOCK------
  1715.  
  1716.  
  1717.  
  1718. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1719. Post Message:   fractdev@lists.xmission.com
  1720. Get Commands:   majordomo@lists.xmission.com "help"
  1721. Administrator:  twegner@phoenix.net
  1722. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1723.  
  1724.  
  1725. -------------------------------------------------------------------------------
  1726.  
  1727. From: Phil McRevis <legalize@xmission.com>
  1728. Subject: Re: (fractdev) driver characteristics 
  1729. Date: 29 Apr 1999 21:15:56 -0600
  1730.  
  1731.  
  1732. In article <Pine.LNX.4.02.9904292335410.15005-100000@tatui.insite.com.br>,
  1733.     Humberto Rossetti Baptista <humberto@insite.com.br>  writes:
  1734. >     Just to clear things for me: are you taking for a staring point the
  1735. > fractint or the xfractint code (the 2 are the same, but w/ different #defines
  1736.  )
  1737.  
  1738. The answer to your question is yes and no. :-)
  1739.  
  1740. I'm using xfractint 19.61 pl66 code.  The differences between xfractint
  1741. 19.61 pl66 and fractint 19.61 pl66 are the inclusion of assembly files
  1742. on the fractint side, with corresponding .c files on the xfractint
  1743. side.  For instance, here's the source in my xfractint directory
  1744. (datafiles removed for clarity):
  1745.  
  1746.     3d.c          end1.c        hc*           lsys.h        rotate.c
  1747.                   evolve.c      hc.c          lsysf.c       slideshw.c
  1748.                   externs.h     hcmplx.c      makefile      soi.c
  1749.     ant.c         f16.c         help.c        memory.c      soi1.c
  1750.     big.h         file_id.diz   help.src      miscfrac.c    stereo.c
  1751.     bigflt.c      fpu087.c      help2.src     miscovl.c     targa.c
  1752.     biginit.c     frachelp.mak  help3.src     miscres.c     targa.h
  1753.     biginit.h     fracsuba.c    help4.src     mpmath.h      targa_lc.h
  1754.     bignum.c      fracsubr.c    help5.src     mpmath_c.c    testpt.c
  1755.     bignumc.c     fractalb.c    helpcom.h     parser.c      tgaview.c
  1756.     bigport.h     fractalp.c    helpdefs.h    parserfp.c    tplus.c
  1757.     calcfrac.c    fractals.c    intro.c       plot3d.c      tplus.h
  1758.     calcmand.c    fractint.c    jb.c          port.h        tplus_a.c
  1759.     calmanfp.c    fractint.h    jiim.c        port.new      tru.c
  1760.     cmdfiles.c    fractint.ifs  line3d.c      printer.c     unix.c
  1761.     cmplx.h       fractype.h    loadfdos.c    prompts1.c    unix.h
  1762.     decoder.c     framain2.c    loadfile.c    prompts2.c    unixscr.c
  1763.     diskvid.c     frasetup.c    loadmap.c     prototyp.h    video.c
  1764.     diskvidu.c                  lorenz.c      read.me       yourvid.c
  1765.     editpal.c     general.c     lsys.c        realdos.c     zoom.c
  1766.     encoder.c     gifview.c
  1767.  
  1768. And here's fractint 19.61 source:
  1769.  
  1770.     3d.c          calmanfp.asm  fractint.h    loadfile.c    port.h
  1771.                   cmdfiles.c    fractint.mak  loadmap.c     printer.c
  1772.     ant.c         cmplx.h       fractype.h    lorenz.c      prompts1.c
  1773.     bcauto.bat    decoder.c     framain2.c    lsys.c        prompts2.c
  1774.     bcfract.bat   diskvid.c     frasetup.c    lsys.h        prototyp.h
  1775.     bcfract.cfg   editpal.c     general.asm   lsysa.asm     realdos.c
  1776.     bcfract.mak   encoder.c     gifview.c     lsysaf.asm    rotate.c
  1777.     bcfract2.cfg  externs.h     hc.c          lsysf.c       slideshw.c
  1778.     bclinkf.bat   f16.c         hcmplx.c      lyapunov.asm  stereo.c
  1779.     bcmakall.bat  fmath.h       help.c        makefrac.bat  targa.c
  1780.     bigflt.c      fpu087.asm    help.src      miscfrac.c    targa.h
  1781.     bigflt.h      fpu387.asm    help2.src     miscovl.c     targa_lc.h
  1782.     bigflta.asm   fr8514a.asm   help3.src     miscres.c     testpt.c
  1783.     bigfltc.c     frachelp.mak  help4.src     mpmath.h      tgaview.c
  1784.     biginit.c     fracsuba.asm  help5.src     mpmath_a.asm  tplus.c
  1785.     biginit.h     fracsubr.c    helpcom.h     mpmath_c.c    tplus.dat
  1786.     bignum.c      fractalb.c    hgcfra.asm    newton.asm    tplus.h
  1787.     bignum.h      fractalp.c    intro.c       parser.c      tplus_a.asm
  1788.     bignuma.asm   fractals.c    jb.c          parsera.asm   video.asm
  1789.     bignumc.c     fractint.c    jiim.c        parserfp.c    yourvid.c
  1790.     calcfrac.c    fractint.cfg  line3d.c      plot3d.c      zoom.c
  1791.     calcmand.asm  fractint.def  loadfdos.c
  1792.  
  1793. I think the makefiles are also different; otherwise they share
  1794. all the same .h and .c source with #ifdef XFRACT in the few places
  1795. where it matters.
  1796.  
  1797. The driver harness goes in some of the places where XFRACT is
  1798. currently used.  Then fractint and xfractint will be using the same
  1799. source with even fewer #ifdef XFRACT's sprinkled around the code.
  1800.  
  1801. >That is very nice. Seems ok, but in one given platform there will be all
  1802. > the drivers to all the platforms or just the ones concerning that one
  1803. >platform?
  1804.  
  1805. Its identical to what XaoS does.  (XaoS uses autoconf)  The configure
  1806. script probes the compilation system to determine what features are
  1807. available.  configure determines what drivers will be available at
  1808. runtime.  Alternatively, you can set #defines in your build process to
  1809. attempt to compile support for a particular driver.  Of course,
  1810. someone will have to implement the driver before it can be compiled
  1811. :-).
  1812.  
  1813. > > Drivers
  1814. > > -------
  1815. > > display drivers I think should be done, in no particular order:
  1816. > >     "curses"
  1817. > >     possibly uses curses, but only has character I/O.
  1818. > >     Displays "pixels" using characters as similar to XaoS.
  1819. >     I guess this is aalib ?? It is not curses but i guess if could be seen
  1820. > as though it is.
  1821.  
  1822. Umm... oh yeah, I think I looked at aalib, which is a full-blown 2D
  1823. graphics package that renders to text.  Kinda cool, but no its not
  1824. necessarily to use something that fancy for a curses driver.  Fractint
  1825. really doesn't need anything more fancy than getpixel and putpixel for
  1826. graphics it turns out.
  1827.  
  1828. Amazingly modular... I'm surprised more people didn't just assume they
  1829. could bcopy() indices straight onto the display.
  1830.  
  1831. >     Wouldn't it be interesting to abandon the text mode completly and user
  1832. > the graphic mode for messages also? This could lead with work and time to an
  1833. > uniform fractint gui look all across different platforms.
  1834.  
  1835. What I suggested for the window system drivers is that they do exactly
  1836. that.  Curses may or may not be available on the system (system
  1837. dependency).  But a window system driver has the capacity to draw text
  1838. into its window directly.  It doesn't need curses to draw text.  In
  1839. fake, it gets more complicated (to me anyway) to have curses doing
  1840. text and X11 doing graphics.
  1841. --
  1842. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1843.     ``Ain't it funny that they all fire the pistol,     
  1844.       at the wrong end of the race?''--PDBT     
  1845. legalize@xmission.com    <http://www.eden.com/~thewho>
  1846.  
  1847. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1848. Post Message:   fractdev@lists.xmission.com
  1849. Get Commands:   majordomo@lists.xmission.com "help"
  1850. Administrator:  twegner@phoenix.net
  1851. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1852.  
  1853.  
  1854. -------------------------------------------------------------------------------
  1855.  
  1856. From: Phil McRevis <legalize@xmission.com>
  1857. Subject: (fractdev) the credits screen
  1858. Date: 29 Apr 1999 21:21:21 -0600
  1859.  
  1860. Tim, the credits screen just smacked me in the face like a conceptual
  1861. ton of bricks.  The stone soup tradition of fractint is more than just
  1862. a concept of open source software, its the cumulative non-violent
  1863. cooperative effort of all those *people* in the credits screen.
  1864.  
  1865. I know on some of the other fractal lists there's been heated debate
  1866. about fractint's open source tradition vs. the new kids on the block.
  1867. :-).  But I couldn't think of another program that starts up with a
  1868. credits screen, the way a good action movie blasts the credits up
  1869. quick in the beginning so that you can be on the edge of your seat for
  1870. the entire ride.  Sure, lots of programs have about boxes and thanks
  1871. lists and so on.  But of all the open source software I use, I
  1872. couldn't think of one that embodies the stone soup tradition of mutual
  1873. cooperation more than fractint.
  1874. --
  1875. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1876.     ``Ain't it funny that they all fire the pistol, 
  1877.       at the wrong end of the race?''--PDBT
  1878.           <http://www.eden.com/~thewho>
  1879.  
  1880. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1881. Post Message:   fractdev@lists.xmission.com
  1882. Get Commands:   majordomo@lists.xmission.com "help"
  1883. Administrator:  twegner@phoenix.net
  1884. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1885.  
  1886.  
  1887. -------------------------------------------------------------------------------
  1888.  
  1889. From: Phil McRevis <legalize@xmission.com>
  1890. Subject: (fractdev) 'xfractint makedoc' segfaults around page 220
  1891. Date: 29 Apr 1999 23:32:15 -0600
  1892.  
  1893. Has anyone else seen this?  It chunks away seemingly normally for about
  1894. 222 pages in Appendix H when it crashes with a seg fault.
  1895.  
  1896. Program received signal SIGSEGV, Segmentation fault.
  1897. 0x98294 in printerc (info=0xeffff0d8, c=12, n=0) at help.c:1113
  1898. (gdb) where
  1899. #0  0x98294 in printerc (info=0xeffff0d8, c=12, n=0) at help.c:1113
  1900. #1  0x98acc in print_doc_output (cmd=1, pd=0xeffff008, info=0xeffff0d8)
  1901.     at help.c:1254
  1902. #2  0x944c4 in process_document (get_info=0x9848c <print_doc_get_info>, 
  1903.     output=0x98808 <print_doc_output>, info=0xeffff0d8) at helpcom.h:459
  1904. #3  0x99100 in print_document (
  1905.     outfname=0x756d6d61 <Address 0x756d6d61 out of bounds>, 
  1906.     msg_func=0x7279206f <_end+42538935>, save_extraseg=1713391218)
  1907.     at help.c:1403
  1908. #4  0x52498 in cmdarg (curarg=Cannot access memory at address 0x230044.
  1909. ) at cmdfiles.c:1158
  1910. Cannot access memory at address 0x230038.
  1911. (gdb) l help.c 1110
  1912. Junk at end of line specification.
  1913. (gdb) l "help.c":1110
  1914. No source file named "help.c".
  1915. (gdb) l help.c:1110
  1916. 1105          {
  1917. 1106          if (c==' ')
  1918. 1107             ++info->spaces;
  1919. 1108    
  1920. 1109          else if (c=='\n' || c=='\f')
  1921. 1110             {
  1922. 1111             info->start_of_line = 1;
  1923. 1112             info->spaces = 0;   /* strip spaces before a new-line */
  1924. 1113             putc(c, info->file);
  1925. 1114             }
  1926. #1  0x98acc in print_doc_output (cmd=1, pd=0xeffff008, info=0xeffff0d8)
  1927.     at help.c:1254
  1928. (gdb) l
  1929. 1249             return ( keep_going );
  1930. 1250             }
  1931. 1251    
  1932. 1252          case PD_FOOTING:
  1933. 1253             info->margin = 0;
  1934. 1254             printerc(info, '\f', 1);
  1935. 1255             info->margin = PAGE_INDENT;
  1936. 1256             return (1);
  1937. 1257    
  1938. 1258          case PD_PRINT:
  1939. #2  0x944c4 in process_document (get_info=0x9848c <print_doc_get_info>, 
  1940.     output=0x98808 <print_doc_output>, info=0xeffff0d8) at helpcom.h:459
  1941. (gdb) l
  1942. 454          if ( !output(PD_START_SECTION, &pd, info) )
  1943. 455             return (0);
  1944. 456    
  1945. 457          if ( pd.new_page && pd.lnum != 0 )
  1946. 458             {
  1947. 459             if ( !output(PD_FOOTING, &pd, info) )
  1948. 460                return (0);
  1949. 461             ++pd.pnum;
  1950. 462             pd.lnum = 0;
  1951. 463             if ( !output(PD_HEADING, &pd, info) )
  1952. #3  0x99100 in print_document (
  1953.     outfname=0x756d6d61 <Address 0x756d6d61 out of bounds>, 
  1954.     msg_func=0x7279206f <_end+42538935>, save_extraseg=1713391218)
  1955.     at help.c:1403
  1956. (gdb) l
  1957. 1398    
  1958. 1399       info.margin = PAGE_INDENT;
  1959. 1400       info.start_of_line = 1;
  1960. 1401       info.spaces = 0;
  1961. 1402    
  1962. 1403       success = process_document((PD_FUNC)print_doc_get_info,
  1963. 1404                                  (PD_FUNC)print_doc_output,   &info);
  1964. 1405       fclose(info.file);
  1965. 1406    
  1966. 1407       if ( save_extraseg )
  1967. #4  0x52498 in cmdarg (curarg=Cannot access memory at address 0x230044.
  1968. ) at cmdfiles.c:1158
  1969. (gdb) l
  1970. 1153             escape_exit = yesnoval[0];
  1971. 1154             return 3;
  1972. 1155             }
  1973. 1156    
  1974. 1157          if (far_strcmp(variable,s_makedoc) == 0) {
  1975. 1158             print_document(*value ? value : "fractint.doc", makedoc_msg_func, 0);
  1976. 1159    #ifndef WINFRACT
  1977. 1160             goodbye();
  1978. 1161    #endif
  1979. 1162             }
  1980. (gdb) q
  1981. The program is running.  Quit anyway (and kill it)? (y or n) y
  1982.  
  1983. Debugger finished
  1984. --
  1985. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  1986.     ``Ain't it funny that they all fire the pistol, 
  1987.       at the wrong end of the race?''--PDBT
  1988.           <http://www.eden.com/~thewho>
  1989.  
  1990. Thanks for using Fractdev, The Fractint Developer's Discussion List
  1991. Post Message:   fractdev@lists.xmission.com
  1992. Get Commands:   majordomo@lists.xmission.com "help"
  1993. Administrator:  twegner@phoenix.net
  1994. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  1995.  
  1996.  
  1997. -------------------------------------------------------------------------------
  1998.  
  1999. From: kragen@pobox.com (Kragen Sitaker)
  2000. Subject: Re: (fractdev) everything
  2001. Date: 30 Apr 1999 12:35:54 -0400 (EDT)
  2002.  
  2003. Fill wrote:
  2004. > The path separator thing becomes painful under unix.  Fractint uses
  2005. > '/' to separate the parameter name from a parameter file, for
  2006. > isntance.  It happens to look for a '/', and if it sees one, it
  2007. > assumes that the argument is ``@parfile/entry'', but if one naively
  2008. > specified a full-path of a parfile under xfractint, you'd have a '/'
  2009. > as part of the parfile name and xfractint will become confused.  A
  2010. > workaround is to always have parfiles specified in this manner in the
  2011. > current directory.  Either fractint's syntax will have to be adjusted
  2012. > slightly, or some quoting mechanism must be installed to allow a full
  2013. > pathname for a unix file to be specified in these instances.
  2014.  
  2015. Everything can work with no user-visible changes.
  2016.  
  2017. In the general case @a/b/c/d/e, a/b/c/d must be either be a file or a
  2018. directory -- it can't be both, right?  (No "parfile paths", right?  I
  2019. haven't used fractint in a while.)  If it's a file, @a/b/c/d/e means
  2020. the entry e in the file a/b/c/d; if it's a directory, @a/b/c/d/e means
  2021. the file a/b/c/d/e.
  2022.  
  2023. >         void * != int
  2024. > Lots of places in the code there are implicit assumptions about
  2025. > sizeof(int) == sizeof(void *).  This isn't good for portability in
  2026. > general, and in the L-system code I think it actually causes a crash
  2027. > in xfractint that shouldn't be there.
  2028.  
  2029. It's true that it's not good for portability in general, but it's true
  2030. afaik on all 32-bit Intel platforms, the Sparc, and 32-bit MIPS
  2031. machines.  I don't know if it's true on various Alpha platforms,
  2032. various UltraSparc platforms, various 64-bit MIPS platforms (OK I mean
  2033. IRIX) etc.  I know it's not true on some memory models of 16-bit Intel
  2034. chips and the AS/400.
  2035.  
  2036. What I wanted to know is, what platform are you running xfractint on
  2037. that this crash occurs?
  2038.  
  2039. > I think fractint should adopt gmp, but this will mean a fair bit of work.
  2040.  
  2041. I think everyone doing arbitrary-precision math should adopt GMP.
  2042. However, you should be aware that adopting GMP will mean that Fractint
  2043. has to be released under the GNU General Public License, which allows
  2044. anyone to sell copies of Fractint.  IMHO this would be a good thing
  2045. (e.g. it could be included with Red Hat Linux and Debian GNU/Linux).
  2046. Some other people may not think so, and Fractint's current license
  2047. forbids this.
  2048.  
  2049. Also, who holds the copyright on Fractint?  Remember that copyright
  2050. inheres in a copyrightable work as soon as it is created, and cannot be
  2051. transferred implicitly.  (You can give an implicit license, but you
  2052. can't implicitly give away your copyright rights.)  For the Stone Soup
  2053. Group to legitimately hold copyright to all of Fractint, everyone who
  2054. has contributed a chunk of code big enough to be copyrightable needs to
  2055. have signed legal papers to transfer their copyright ownership to the
  2056. Stone Soup Group.  That probably doesn't mean everybody in the credits,
  2057. but certainly a significant number of them.
  2058.  
  2059. The reason I ask is that only the holder of a copyright can license the
  2060. copyrighted work.  If Jonathan decides he wants to license the Fractint
  2061. code he wrote under the GPL, that's fine, but if Tim doesn't like it,
  2062. Jonathan can't license Tim's code under the GPL.  If it turns out that
  2063. 50 different people own the copyrights to various parts of Fractint,
  2064. you'll need all 50 of their signatures or the signatures of their heirs
  2065. (or you'll need to discard the code they wrote) in order to release
  2066. Fractint under the GPL.
  2067.  
  2068. Linux uses the same technique to make it impossible to release Linux
  2069. under a non-GPL license.  I understand environmental activists have
  2070. used a similar technique -- selling individual square feet of land to
  2071. many different people -- to slow down condemnation proceedings.
  2072.  
  2073. These same problems do not attend releasing a fractint including
  2074. autoconf scripts for building or built with gcc and GNU libc, because
  2075. of licensing or linking differences.  They *may* attend releasing a
  2076. fractint linked against the DJGPP libraries or Allegro -- are these
  2077. licensed under the GPL?
  2078.  
  2079. Summary: using gmp (and possibly djgpp or allegro) may be extremely
  2080. difficult for legal reasons.  I am not a lawyer, and this is not legal
  2081. advice.  Hit the books and make your own decisions.
  2082.  
  2083. > If it were up to me, I'd take
  2084. > the complex and trig support impemented in fractint, port that onto
  2085. > the gmp library and contribute it back as GPL'ed source to the gmp
  2086. > maintainers.
  2087.  
  2088. Bruno Haible's CLN (see clisp.cons.org) is a GPLed library built on gmp
  2089. that provides (among other things) complex support, and I think trig
  2090. too.  It's written in C++ though.
  2091.  
  2092. > Just an observation... fractint already embodies the concept of
  2093. > "generic programming with template classes" as closely as C can deal
  2094. > with it.
  2095.  
  2096. Generally this is done in C with #define macros or m4.  (The latter can
  2097. produce code that works better with most debuggers.)
  2098.  
  2099. > Ah, but here you're using the inheritence/OOness of C++ to exploit
  2100. > reuse.  The generic programming/template model, as embodied by the STL
  2101. > for example, is really quite a different kind of reuse than that
  2102. > provided by class hierarchies.
  2103.  
  2104. Mechanically it's implemented differently.  Conceptually it's the same
  2105. thing.  More advanced OO environments (like Self, notably) dynamically
  2106. pick and mix specialization (generating multiple copies of the same
  2107. code to deal with different data types) and dynamic dispatch
  2108. (generating a single copy of the code which calls different code
  2109. depending on the types of the data it's handling) to dynamically
  2110. balance speed and code size/compile time.
  2111.  
  2112. > Despite all the different programming languages and circumstances in
  2113. > which I've exercised my skill, the concepts embodied by the STL really
  2114. > changed the way I looked at certain programming problems.
  2115.  
  2116. Me too.  (Although I can't really talk much about exercising my skill.  ;)
  2117.  
  2118. >  STL is written in C++, but it isn't "object oriented".  There is a
  2119. > minor use of class inheritance to exhibit some reuse, but this is rare
  2120. > and only in places where it makes sense for the problem.  STL has some
  2121. > aspects of "functional" programming languages, especially adaptors,
  2122. > binders, unary_function, binary_function, and so-on.
  2123.  
  2124. Well, like I said, it's a different way to implement the same thing.
  2125. (STL implements several things that would be extremely slow if they
  2126. were implemented with dynamic dispatch instead of specialization, and
  2127. since "int" is not a class in C++, also very inconvenient to use.)
  2128.  
  2129. It's not very functional; the whole programming model is deeply based
  2130. on mutation.
  2131.  
  2132. Looks like, by "binder", STL means something like "a curried function".
  2133.  
  2134. Humberto Rossetti Baptista wrote:
  2135. >         Yesssss. And also I think gmp is C++ isnt' it?
  2136.  
  2137. No, C.
  2138.  
  2139. Fill wrote:
  2140. >     "allegro"
  2141. >         Uses Allegro library under DJGPP to enumerate video formats
  2142. >         and provide video/mouse/sound support.
  2143.  
  2144. Could also work under X.
  2145.  
  2146. > But of all the open source software I use, I
  2147. > couldn't think of one that embodies the stone soup tradition of mutual
  2148. > cooperation more than fractint.
  2149.  
  2150. I think I agree.  But be careful -- Fractint is not now, and never has
  2151. been, Open Source (tm) software, because people are not free to sell
  2152. it.
  2153.  
  2154. -- 
  2155. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  2156. TurboLinux is outselling NT in Japan's retail software market 10 to 1,
  2157. so I hear. 
  2158. -- http://www.performancecomputing.com/opinions/unixriot/981218.shtml
  2159.  
  2160.  
  2161. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2162. Post Message:   fractdev@lists.xmission.com
  2163. Get Commands:   majordomo@lists.xmission.com "help"
  2164. Administrator:  twegner@phoenix.net
  2165. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2166.  
  2167.  
  2168. -------------------------------------------------------------------------------
  2169.  
  2170. From: Phil McRevis <legalize@xmission.com>
  2171. Subject: Re: (fractdev) everything 
  2172. Date: 30 Apr 1999 12:55:28 -0600
  2173.  
  2174.  
  2175. In article <Pine.GSU.4.10.9904301128390.8775-100000@picard.dnaco.net>,
  2176.     kragen@pobox.com (Kragen Sitaker)  writes:
  2177.  
  2178. > Everything can work with no user-visible changes.
  2179.  
  2180. Yeah, but the code has to change, which was my real point.
  2181.  
  2182. > >         void * != int
  2183. > > 
  2184. > > Lots of places in the code there are implicit assumptions about
  2185. > > sizeof(int) == sizeof(void *).  This isn't good for portability in
  2186. > > general, and in the L-system code I think it actually causes a crash
  2187. > > in xfractint that shouldn't be there.
  2188. > It's true that it's not good for portability in general, but it's true
  2189. > afaik on all 32-bit Intel platforms, the Sparc, and 32-bit MIPS
  2190. > machines.
  2191.  
  2192. Nope, its not true on sparc, or MIPS.  Why?  Because a pointer has
  2193. alignment restrictions that constrain its valid value and an integer
  2194. does not.  In other words, the following is most certainly going to
  2195. cause a crash on a sparc or mips platform:
  2196.  
  2197.     int i = 3;
  2198.     void *p = (void *) i;
  2199.     *p = 1;
  2200.  
  2201. On the x86, you can address 16/32/etc. sized quantities at any memory
  2202. location.  The CPU does the necessary word twiddling to get the
  2203. operand of the appropriate type.  Misaligning data on an x86 affects
  2204. performance but doesn't crash.  On a non-x86 it almost certainly
  2205. causes a crash or exception.
  2206.  
  2207. > What I wanted to know is, what platform are you running xfractint on
  2208. > that this crash occurs?
  2209.  
  2210. I found a crash in L-systems on a sparc running solaris 2.7.  When I
  2211. looked at it in the debugger, a quick 6-minute analysis figured the
  2212. problem to be related to pointer casting due to the attempt to
  2213. conserve memory in the medium model.  If the memory had just simply
  2214. been malloc'ed instead, then it works fine.
  2215.  
  2216. > [long worry about the GPL and its implications]
  2217.  
  2218. This sounds like the typical misunderstanding of what the GPL really
  2219. says.  I'd get a clarification from the FSF on that before I worried
  2220. about it, but I personally believe it to be a non-issue.
  2221.  
  2222. > Bruno Haible's CLN (see clisp.cons.org) is a GPLed library built on gmp
  2223. > that provides (among other things) complex support, and I think trig
  2224. > too.  It's written in C++ though.
  2225.  
  2226. That URL just talks about a common lisp implementation, no mention of
  2227. CLN or anything for C++.
  2228.  
  2229. > Mechanically it's implemented differently.  Conceptually it's the same
  2230. > thing.
  2231.  
  2232. I disagree.  Generic programming is conceptually and syntactically
  2233. different from OO programming in C++.  The only thing they have in
  2234. common is a desire for reuse.
  2235.  
  2236. > It's not very functional; the whole programming model is deeply based
  2237. > on mutation.
  2238.  
  2239. Adaptors, binders, etc., are all very much in the style of functional
  2240. programming.  Its where they get their inspiration from.
  2241.  
  2242. > Looks like, by "binder", STL means something like "a curried function".
  2243.  
  2244. Yes.
  2245.  
  2246. > [Allegro]
  2247. >
  2248. > Could also work under X.
  2249.  
  2250. Yeah, but using allegro for fractint's X interface wouldn't be the
  2251. right way to do it, I think.  Seriously folks, fracint's existing UI
  2252. needs are not elaborate!  That's because fractint built everything
  2253. itself on top of the basic functionality of being able to read/write
  2254. single pixels into a memory-mapped VGA display.  The whole idea of
  2255. modern UI needs is foreign to fractint.
  2256.  
  2257. > I think I agree.  But be careful -- Fractint is not now, and never has
  2258. > been, Open Source (tm) software, because people are not free to sell
  2259. > it.
  2260.  
  2261. We already went through this once before.  If someone is going to sue
  2262. my ass becuase I consider fractint to be "open source", I wish they'd
  2263. just get off their lazy butts and do it.  Otherwise, if you care to
  2264. have a debate about the meaning of the GPL or the legal phrase "open
  2265. source", then it'll be a one-sided debate since I consider engaging in
  2266. such a debate to be a waste of time that only distracts me from the
  2267. real issues facing fractint right now.
  2268. --
  2269. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  2270.     ``Ain't it funny that they all fire the pistol,     
  2271.       at the wrong end of the race?''--PDBT     
  2272. legalize@xmission.com    <http://www.eden.com/~thewho>
  2273.  
  2274. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2275. Post Message:   fractdev@lists.xmission.com
  2276. Get Commands:   majordomo@lists.xmission.com "help"
  2277. Administrator:  twegner@phoenix.net
  2278. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2279.  
  2280.  
  2281. -------------------------------------------------------------------------------
  2282.  
  2283. From: kragen@pobox.com (Kragen Sitaker)
  2284. Subject: Re: (fractdev) everything
  2285. Date: 30 Apr 1999 16:51:16 -0400 (EDT)
  2286.  
  2287. Legalize Adulthood writes:
  2288. > > Everything can work with no user-visible changes.
  2289. > Yeah, but the code has to change, which was my real point.
  2290.  
  2291. Of course you are correct.
  2292.  
  2293. > > > Lots of places in the code there are implicit assumptions about
  2294. > > > sizeof(int) == sizeof(void *).  This isn't good for portability in
  2295. > > > general, and in the L-system code I think it actually causes a crash
  2296. > > > in xfractint that shouldn't be there.
  2297. > >
  2298. > > It's true that it's not good for portability in general, but it's true
  2299. > > afaik on all 32-bit Intel platforms, the Sparc, and 32-bit MIPS
  2300. > > machines.
  2301. > Nope, its not true on sparc, or MIPS. [because of alignment]
  2302.  
  2303. When I said "it's true", I just meant the sizes were the same, not the
  2304. alignment constraints, because that's what you said in the text I
  2305. responded to.  Of course you are correct that arbitrary integers can't
  2306. be used as pointers on most machines.  Often, however, this is a
  2307. dangerous practice even on Intel hardware, because arbitrary integers
  2308. are not likely to point at anything useful.  ;)
  2309.  
  2310. > > [long worry about the GPL and its implications]
  2311. > This sounds like the typical misunderstanding of what the GPL really
  2312. > says.
  2313.  
  2314. It's not.
  2315.  
  2316. > I'd get a clarification from the FSF on that before I worried
  2317. > about it, but I personally believe it to be a non-issue.
  2318.  
  2319. I've sent them an email, saying,
  2320.     Someone's proposing replacing Fractint's arbitrary-precision
  2321.     math routines with routines from the GMP library.  My
  2322.     understanding is that this would require Fractint to be
  2323.     licensed under the GPL, which would lift the restriction
  2324.     against commercial sale of Fractint in Fractint's current
  2325.     license.  Is this correct?  Is it possible to link Fractint
  2326.     with GMP and continue to distribute Fractint executables under
  2327.     the current Fractint license?
  2328.  
  2329. I will forward the response to this list.
  2330.  
  2331. > > Bruno Haible's CLN (see clisp.cons.org) is a GPLed library built on gmp
  2332. > > that provides (among other things) complex support, and I think trig
  2333. > > too.  It's written in C++ though.
  2334. > That URL just talks about a common lisp implementation, no mention of
  2335. > CLN or anything for C++.
  2336.  
  2337. The Common Lisp implementation in question is implemented in C++ and
  2338. uses CLN for its numeric processing.  I can't seem to find links to CLN
  2339. from the home page, but CLN's home page is at
  2340. http://clisp.cons.org/~haible/packages-cln.html.
  2341.  
  2342. > > Mechanically it's implemented differently.  Conceptually it's the same
  2343. > > thing.
  2344. > I disagree.  Generic programming is conceptually and syntactically
  2345. > different from OO programming in C++.  The only thing they have in
  2346. > common is a desire for reuse.
  2347.  
  2348. Unarguably, C++ syntax for template-based polymorphism is different
  2349. from C++ syntax for dynamic-method-dispatch-based polymorphism.  And
  2350. underneath the hood, they are unarguably different things.  But they
  2351. are two ways of doing the same thing: specifying what you want to do
  2352. to an object and letting the object decide what the most appropriate
  2353. way of doing that thing is, and allowing different objects to do the
  2354. same thing differently without any change in the calling code.
  2355.  
  2356. > We already went through this once before.  If someone is going to sue
  2357. > my ass becuase I consider fractint to be "open source",
  2358.  
  2359. I thought I forwarded you the response I got from OSI.  They said they
  2360. couldn't do anything about posts on private mailing lists.  So noone
  2361. will sue your ass.  :)
  2362.  
  2363. > I consider engaging in such a debate to be a waste of time that only
  2364. > distracts me from the real issues facing fractint right now.
  2365.  
  2366. Bravo, concentrate on the real issues, then.  The work you're doing is
  2367. certainly important.  Have fun.
  2368.  
  2369. -- 
  2370. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  2371. TurboLinux is outselling NT in Japan's retail software market 10 to 1,
  2372. so I hear. 
  2373. -- http://www.performancecomputing.com/opinions/unixriot/981218.shtml
  2374.  
  2375.  
  2376. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2377. Post Message:   fractdev@lists.xmission.com
  2378. Get Commands:   majordomo@lists.xmission.com "help"
  2379. Administrator:  twegner@phoenix.net
  2380. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2381.  
  2382.  
  2383. -------------------------------------------------------------------------------
  2384.  
  2385. From: kragen@pobox.com (Kragen Sitaker)
  2386. Subject: (fractdev) GPL clarification
  2387. Date: 30 Apr 1999 18:01:55 -0400 (EDT)
  2388.  
  2389. The response to my email to gnu@gnu.org:
  2390.  
  2391. If GMP is under the GPL, then Fractint would have to be
  2392. GPLed to use GMP code.  Under the GPL you can have
  2393. commercial sale, although license fees are illegal of
  2394. course.
  2395.  
  2396. --
  2397.                                    Brian Youmans
  2398.                                    FSF Office Staff
  2399.  
  2400. -- 
  2401. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  2402. TurboLinux is outselling NT in Japan's retail software market 10 to 1,
  2403. so I hear. 
  2404. -- http://www.performancecomputing.com/opinions/unixriot/981218.shtml
  2405.  
  2406.  
  2407. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2408. Post Message:   fractdev@lists.xmission.com
  2409. Get Commands:   majordomo@lists.xmission.com "help"
  2410. Administrator:  twegner@phoenix.net
  2411. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2412.  
  2413.  
  2414. -------------------------------------------------------------------------------
  2415.  
  2416. From: "Tim Wegner" <twegner@phoenix.net>
  2417. Subject: Re: (fractdev) portability thoughts 
  2418. Date: 30 Apr 1999 17:15:46 -0600
  2419.  
  2420. Phil said:
  2421.  
  2422. > Some low-level stuff is written in assembly, see bigflta.asm and
  2423. > bignuma.asm.  Poking around a little more, it looks like bigfltc.c
  2424. > implements C versions of the assembly routines.
  2425.  
  2426. Fractint's arbitrary precision is already portable, as far as we know. 
  2427. I will say that it is optimized for little endian and probably is less 
  2428. efficient on big endian.
  2429.  
  2430. The main reason for not going to another arbitrary precision library 
  2431. is that Wes has implemented a slew of transcendental functions.
  2432.  
  2433. Tim
  2434.  
  2435.  
  2436. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2437. Post Message:   fractdev@lists.xmission.com
  2438. Get Commands:   majordomo@lists.xmission.com "help"
  2439. Administrator:  twegner@phoenix.net
  2440. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2441.  
  2442.  
  2443. -------------------------------------------------------------------------------
  2444.  
  2445. From: Humberto Rossetti Baptista <humberto@insite.com.br>
  2446. Subject: Re: (fractdev) GPL clarification
  2447. Date: 30 Apr 1999 22:25:55 -0300 (EST)
  2448.  
  2449. On Fri, 30 Apr 1999, Kragen Sitaker wrote:
  2450. [Brian quote:]
  2451. > If GMP is under the GPL, then Fractint would have to be
  2452. > GPLed to use GMP code.  Under the GPL you can have
  2453. > commercial sale, although license fees are illegal of
  2454. > course.
  2455.  
  2456.     Brian is being lazy in his response since gmp is a "recommended"free
  2457. program on the fsf site.
  2458.  
  2459.     It is not on GPL (what would indeed require fractint to become GPL), but
  2460. it is LGPL (http://www.fsf.org/manual/gmp/html_chapter/gmp_1.html#SEC1 and the
  2461. definition of LGPL is in http://www.fsf.org/copyleft/lgpl.html).
  2462.  
  2463.     The LGPL is the Library Gnu Policy License and it provide mechanisms to
  2464. link agains a free library a non-GPL program, such as Fractint.
  2465.  
  2466.     In the spirit of freedom I agree with "Phil" when he says that fractint
  2467. is free software, bu I guess our licence is more radical than GNU :-))))
  2468.  
  2469.     In short: we an link agains GMP w/ no problems.
  2470.  
  2471.     []'s
  2472.  
  2473.     Humberto R. Baptista
  2474.     humberto@insite.com.br
  2475.  
  2476. Insite - Solucoes Internet                         http://www.insite.com.br
  2477.  
  2478. -----BEGIN GEEK CODE BLOCK-----
  2479. Version: 3.1
  2480. GB/C/CA/CM/CS/CC/ED/FA/H/IT/L/M/MU/P/S d?>dpu s:- a->!@ C++++$ USL+++$ P+++@ 
  2481. L+++@ !E W++@ N++(+)@ o+>++++$ K? w>---$ O-@$ M--@ V-- PS@ PE@ Y+>+++$ PGP+@ 
  2482. t+++ 5+@ X+ R>+++$ tv@ b+>++++$ DI++$ D++>++++$ G e+++>++++ h(---)>*$ r+++ 
  2483. y+++*
  2484. ------END GEEK CODE BLOCK------
  2485.  
  2486.  
  2487.  
  2488. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2489. Post Message:   fractdev@lists.xmission.com
  2490. Get Commands:   majordomo@lists.xmission.com "help"
  2491. Administrator:  twegner@phoenix.net
  2492. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2493.  
  2494.  
  2495. -------------------------------------------------------------------------------
  2496.  
  2497. From: Phil McRevis <legalize@xmission.com>
  2498. Subject: Re: (fractdev) everything 
  2499. Date: 30 Apr 1999 20:16:56 -0600
  2500.  
  2501.  
  2502. In article <Pine.GSU.4.10.9904301510500.15300-100000@picard.dnaco.net>,
  2503.     kragen@pobox.com (Kragen Sitaker)  writes:
  2504.  
  2505. > > I'd get a clarification from the FSF on that before I worried
  2506. > > about it, but I personally believe it to be a non-issue.
  2507. > I've sent them an email, saying [...]
  2508.  
  2509. Actually you needn't even bother.  All you have to do is read the
  2510. license in the gmp-2.0.2 distribution.  It says quite clearly that
  2511. linking against the library doesn't mean your program is bound by the
  2512. GPL.  Like I said, it sounds like you have a misconception about the
  2513. GPL covering gmp-2.0.2.
  2514.  
  2515. > [generic programming and oo programming]
  2516. > are two ways of doing the same thing: specifying what you want to do
  2517. > to an object and letting the object decide what the most appropriate
  2518. > way of doing that thing is, and allowing different objects to do the
  2519. > same thing differently without any change in the calling code.
  2520.  
  2521. It sounds like we don't have a common accepted definition of "generic
  2522. programming".  At any rate, its not relevant to anything
  2523. fractdev-related.
  2524.  
  2525. > > We already went through this once before.  If someone is going to sue
  2526. > > my ass becuase I consider fractint to be "open source",
  2527. > I thought I forwarded you the response I got from OSI. [...]
  2528.  
  2529. Yes, so why did you bring it up again?  There's no point in rehashing
  2530. this stuff every time I happen to type the phrase "open source".
  2531.  
  2532. You know, the kind of feedback I wanted was about specific things in
  2533. the fractint code that I should be paying attention to now, so as not
  2534. to avoid some problem that occurs to another mind familiar with the
  2535. source.  I'm afraid your response just wasn't helpful, only time
  2536. consuming.
  2537. --
  2538. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  2539.     ``Ain't it funny that they all fire the pistol,     
  2540.       at the wrong end of the race?''--PDBT     
  2541. legalize@xmission.com    <http://www.eden.com/~thewho>
  2542.  
  2543. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2544. Post Message:   fractdev@lists.xmission.com
  2545. Get Commands:   majordomo@lists.xmission.com "help"
  2546. Administrator:  twegner@phoenix.net
  2547. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2548.  
  2549.  
  2550. -------------------------------------------------------------------------------
  2551.  
  2552. From: Phil McRevis <legalize@xmission.com>
  2553. Subject: Re: (fractdev) GPL clarification 
  2554. Date: 30 Apr 1999 20:19:00 -0600
  2555.  
  2556. Like I said, please read the COPYING file in the gmp-2.0.2
  2557. distribution.  It states quite clearly that you can link against the
  2558. library without having to adopt the GPL in your code.
  2559.  
  2560. Thanks for reporting me to the FSF police.
  2561. --
  2562. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  2563.     ``Ain't it funny that they all fire the pistol,     
  2564.       at the wrong end of the race?''--PDBT     
  2565. legalize@xmission.com    <http://www.eden.com/~thewho>
  2566.  
  2567. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2568. Post Message:   fractdev@lists.xmission.com
  2569. Get Commands:   majordomo@lists.xmission.com "help"
  2570. Administrator:  twegner@phoenix.net
  2571. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2572.  
  2573.  
  2574. -------------------------------------------------------------------------------
  2575.  
  2576. From: Phil McRevis <legalize@xmission.com>
  2577. Subject: Re: (fractdev) portability thoughts 
  2578. Date: 30 Apr 1999 20:24:01 -0600
  2579.  
  2580.  
  2581. In article <199904302215.RAA12205@voyager.c-com.net>,
  2582.     "Tim Wegner" <twegner@phoenix.net>  writes:
  2583.  
  2584. > Fractint's arbitrary precision is already portable, as far as we know. 
  2585.  
  2586. As I guessed after a little browsing.
  2587.  
  2588. > I will say that it is optimized for little endian and probably is less 
  2589. > efficient on big endian.
  2590.  
  2591. And no assembly support is provided for anything other than 16bit x86.
  2592. GMP's main advantage is its wide support for assembly on different
  2593. CPUs.
  2594.  
  2595. > The main reason for not going to another arbitrary precision library 
  2596. > is that Wes has implemented a slew of transcendental functions.
  2597.  
  2598. Yep, which is why my note in my "thoughts" file also contained wording
  2599. to the effect that in the true stone soup tradition, fractint's
  2600. contribution to gmp could be adding the complex and transcendental
  2601. function support back to gmp.  Then fractint would just link against
  2602. gmp like any other gmp client.
  2603.  
  2604. Naturally the authors of that code would have to agree to this before
  2605. their code could be used directly in such an effort.  However, I don't
  2606. see the "stone soup tradition" and the FSF's goals to be at
  2607. cross-purposes, more like cousins in the same family.  At any rate, I
  2608. have no idea why this has become the hot potato issue from all the stuff
  2609. I wrote when its like item #682 on the agenda.
  2610. --
  2611. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  2612.     ``Ain't it funny that they all fire the pistol,     
  2613.       at the wrong end of the race?''--PDBT     
  2614. legalize@xmission.com    <http://www.eden.com/~thewho>
  2615.  
  2616. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2617. Post Message:   fractdev@lists.xmission.com
  2618. Get Commands:   majordomo@lists.xmission.com "help"
  2619. Administrator:  twegner@phoenix.net
  2620. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2621.  
  2622.  
  2623. -------------------------------------------------------------------------------
  2624.  
  2625. From: kragen@pobox.com (Kragen Sitaker)
  2626. Subject: Re: (fractdev) everything
  2627. Date: 30 Apr 1999 22:36:27 -0400 (EDT)
  2628.  
  2629. You wrote:
  2630. > At any rate, I have no idea why this has become the hot potato issue
  2631. > from all the stuff I wrote when its like item #682 on the agenda.
  2632.  
  2633. Yeah, it puzzled me a bit, too.  I didn't mean for it to be, and I
  2634. certainly didn't mean to waste your time.
  2635.  
  2636. I'm not sure why I thought gmp was GPLed -- I think it might have been
  2637. several years ago.  I'll let you know (in private so as not to use up
  2638. more list bits) when I find out.
  2639.  
  2640. -- 
  2641. <kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
  2642. TurboLinux is outselling NT in Japan's retail software market 10 to 1,
  2643. so I hear. 
  2644. -- http://www.performancecomputing.com/opinions/unixriot/981218.shtml
  2645.  
  2646.  
  2647. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2648. Post Message:   fractdev@lists.xmission.com
  2649. Get Commands:   majordomo@lists.xmission.com "help"
  2650. Administrator:  twegner@phoenix.net
  2651. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2652.  
  2653.  
  2654. -------------------------------------------------------------------------------
  2655.  
  2656. From: Phil McRevis <legalize@xmission.com>
  2657. Subject: Re: (fractdev) everything 
  2658. Date: 30 Apr 1999 20:39:13 -0600
  2659.  
  2660.  
  2661. In article <Pine.GSU.4.10.9904302234010.29558-100000@kirk.dnaco.net>,
  2662.     kragen@pobox.com (Kragen Sitaker)  writes:
  2663. > I'm not sure why I thought gmp was GPLed -- I think it might have been
  2664. > several years ago.  I'll let you know (in private so as not to use up
  2665. > more list bits) when I find out.
  2666.  
  2667. Please don't bother.  I'm not really interested.
  2668. --
  2669. <http://www.xmission.com/~legalize/>    Legalize Adulthood!
  2670.     ``Ain't it funny that they all fire the pistol,     
  2671.       at the wrong end of the race?''--PDBT     
  2672. legalize@xmission.com    <http://www.eden.com/~thewho>
  2673.  
  2674. Thanks for using Fractdev, The Fractint Developer's Discussion List
  2675. Post Message:   fractdev@lists.xmission.com
  2676. Get Commands:   majordomo@lists.xmission.com "help"
  2677. Administrator:  twegner@phoenix.net
  2678. Unsubscribe:    majordomo@lists.xmission.com "unsubscribe fractdev"
  2679.  
  2680.