home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume37 / astrolog / part01 < prev    next >
Encoding:
Text File  |  1993-05-18  |  60.5 KB  |  1,418 lines

  1. Newsgroups: comp.sources.misc
  2. From: astrolog@u.washington.edu (Astrolog)
  3. Subject: v37i070:  astrolog - Generation of astrology charts v3.05, Part01/12
  4. Message-ID: <1993May19.061309.11039@sparky.imd.sterling.com>
  5. X-Md4-Signature: 14b2d788fc5c1f68d733deb85252760a
  6. Date: Wed, 19 May 1993 06:13:09 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: astrolog@u.washington.edu (Astrolog)
  10. Posting-number: Volume 37, Issue 70
  11. Archive-name: astrolog/part01
  12. Environment: UNIX, DOS, VMS
  13. Supersedes: astrolog: Volume 30, Issue 62-69
  14.  
  15. Astrolog (pronounced astro-log; astro as in astronomy, log as is
  16. logarithm) is an astrology calculation program written in C. Its main
  17. function is to calculate birthcharts and give accurate positions of
  18. planets, various asteroids, stars, and house positions at particular
  19. times. It supports different display formats, forms of chart
  20. comparisons, some interpretations, and other astrology related
  21. functions. It creates bitmap charts and has animation for X11 and PC's.
  22.  
  23. Astrolog works best when run on a Unix system with X windows, or on a
  24. 386 or better PC with VGA. However, neither X11 nor VGA, or even Unix
  25. or a PC, are needed in order to be able to run the program. The added
  26. graphics features can easily be compiled out for those who don't have
  27. them, and various users have gotten this and previous versions of the
  28. program compiled properly on VMS and other systems with hardly any
  29. modifications necessary.
  30.  
  31. #! /bin/sh
  32. # This is a shell archive.  Remove anything before this line, then unpack
  33. # it by saving it into a file and typing "sh file".  To overwrite existing
  34. # files, type "sh file -c".  You can also feed this as standard input via
  35. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  36. # will see the following message at the end:
  37. #        "End of archive 1 (of 12)."
  38. # Contents:  README Makefile makefile.pc astrolog.dat astrolog.h
  39. #   Update.300 MANIFEST
  40. # Wrapped by pul@hardy on Sun May 16 22:23:14 1993
  41. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  42. if test -f 'README' -a "${1}" != "-c" ; then 
  43.   echo shar: Will not clobber existing file \"'README'\"
  44. else
  45. echo shar: Extracting \"'README'\" \(4263 characters\)
  46. sed "s/^X//" >'README' <<'END_OF_FILE'
  47. X************************************************************************
  48. X
  49. XAstrolog version 3.05 (May 1993)
  50. X
  51. XAstrolog (pronounced astro-log; astro as in astronomy, log as is
  52. Xlogarithm) is an astrology calculation program written in C. Its main
  53. Xfunction is to calculate birthcharts and give accurate positions of
  54. Xplanets, various asteroids, stars, and house positions at particular
  55. Xtimes. It supports different display formats, forms of chart
  56. Xcomparisons, some interpretations, and other astrology related
  57. Xfunctions. It creates bitmap charts and has animation for X11 and PC's.
  58. X
  59. XAstrolog works best when run on a Unix system with X windows, or on an
  60. X386 or better PC with VGA. However, neither X11 nor VGA, or even Unix
  61. Xor a PC, are needed in order to be able to run the program. The added
  62. Xgraphics features can easily be compiled out for those who don't have
  63. Xthem, and various users have gotten this and previous versions of the
  64. Xprogram compiled properly on VMS and other systems with hardly any
  65. Xmodifications necessary.
  66. X
  67. XIMPORTANT: The planetary calculation routines used in this program
  68. Xhave been Copyrighted and the core of this program is basically a
  69. Xconversion to C of the routines created by James Neely as listed in
  70. XMichael Erlewine's 'Manual of Computer Programming for Astrologers',
  71. Xavailable from Matrix Software. The copyright gives us permission to
  72. Xuse the routines for our own purposes but not to sell them or profit
  73. Xfrom them in any way.
  74. X
  75. XIN ADDITION: the graphics database and chart display routines used in
  76. Xthis program are Copyright (C) 1991-1993 by Walter D. Pullen. Permission
  77. Xis granted to freely use and distribute these routines provided one
  78. Xdoesn't sell, restrict, or profit from them in any way. Modification
  79. Xis allowed provided these notices remain with any altered or edited
  80. Xversions of the program.
  81. X
  82. XTo compile this version of the program, first edit the top of the file
  83. Xastrolog.h, putting in your own appropriate values for the default
  84. Xlongitude, latitude, time zone, and default chart input file search
  85. Xdirectory. (In the same manner, also edit the default parameter values
  86. Xin the file astrolog.dat.) Also comment out any of the #defines which
  87. Xset various features that aren't valid on your system, such as the
  88. XX11, TIME, and SWITCHES variables, and you may want to edit other
  89. X#defines variables such as DEFAULT_SYSTEM to your tastes. Then, for
  90. XUnix systems, run the command 'make' on the Makefile, or on some PC's,
  91. X"nmake" will compile it assuming the "makefile.pc" file is renamed to
  92. Xbe "makefile". If these don't work, you can always compile by hand:
  93. X"cc -O -c *.c; cc -o astrolog *.o -lm -lX11" will do it on Unix; just
  94. Xmake sure to compile each source file and link them together at the
  95. Xend with the math and if applicable, the X11 or graphics libraries.
  96. X
  97. XNote: The file 'Helpfile' that comes with this distribution is a 150K
  98. Xfile that lists lots of information about the program and how to use
  99. Xthe different features and options, which one will want to read. Due
  100. Xto its length, this file had to be split into three parts:
  101. XHelpfile.p1, Helpfile.p2, and Helpfile.p3 - You will want to
  102. Xconcatenate these parts back together again. Use a favorite editor to
  103. Xdo this, or if you are on a Unix system, do the command: cat
  104. XHelpfile.p1 Helpfile.p2 Helpfile.p3 > Helpfile. The file 'History' is
  105. Xalso a lengthy file split into three parts which should be recombined
  106. Xin the same manner. The History file describes previous versions of
  107. Xthe program and is mostly for those with previous releases who have
  108. Xupgraded and want to see what new features have been added lately.
  109. X
  110. XEnjoy the program! May you have as much fun with it as I have. Send
  111. Xany comments to my e-mail address below.
  112. X
  113. X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
  114. X+     Walter D. "Cruiser1" Pullen    |    astrolog@byron.u.washington.edu     +
  115. X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
  116. X+   "Who am I, What am I?  As I am, I am not.  But as we are, I AM.  And to   +
  117. X#   you my creation, My Perfect Love is your Perfect Freedom. And I will be   #
  118. X+   with you forever and ever, until the End, and then forever more." - GOD   +
  119. X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
  120. END_OF_FILE
  121. if test 4263 -ne `wc -c <'README'`; then
  122.     echo shar: \"'README'\" unpacked with wrong size!
  123. fi
  124. # end of 'README'
  125. fi
  126. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  127.   echo shar: Will not clobber existing file \"'Makefile'\"
  128. else
  129. echo shar: Extracting \"'Makefile'\" \(775 characters\)
  130. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  131. X# Makefile for Unix Astrolog version 3.05 (astrolog@byron.u.washington.edu)
  132. X# First created 11/21/1991
  133. X#
  134. X# This Makefile is included only for convenience. One could easily compile
  135. X# Astrolog on a Unix system by hand with the command:
  136. X# % cc -c *.c; cc -o astrolog *.o -lm -lX11
  137. X#
  138. X# Generally, all that needs to be done to compile once astrolog.h has been
  139. X# edited, is compile each source file, and link them together with the math
  140. X# library, and if applicable, the main X library.
  141. X#
  142. XNAME = astrolog
  143. XOBJ = data.o general.o formulas.o charts.o options.o driver.o \
  144. X  xdata.o xgeneral.o xcharts.o xdriver.o
  145. X# If you don't have X windows, delete the "-lX11" part from the line below:
  146. XLIBS = -lm -lX11
  147. XCFLAGS = -O
  148. X
  149. Xastrolog:: $(OBJ)
  150. X    cc -o $(NAME) $(OBJ) $(LIBS)
  151. X    strip $(NAME)
  152. X#
  153. END_OF_FILE
  154. if test 775 -ne `wc -c <'Makefile'`; then
  155.     echo shar: \"'Makefile'\" unpacked with wrong size!
  156. fi
  157. # end of 'Makefile'
  158. fi
  159. if test -f 'makefile.pc' -a "${1}" != "-c" ; then 
  160.   echo shar: Will not clobber existing file \"'makefile.pc'\"
  161. else
  162. echo shar: Extracting \"'makefile.pc'\" \(821 characters\)
  163. sed "s/^X//" >'makefile.pc' <<'END_OF_FILE'
  164. X# Makefile for PC Astrolog version 3.05 (astrolog@byron.u.washington.edu)
  165. X# Created for Microsoft nmake utility.
  166. X# First created 2/9/1993
  167. X#
  168. X# Generally, all that needs to be done to compile once astrolog.h has been
  169. X# edited, is compile each source file, and link them together with the math
  170. X# library, and if applicable, the Microsoft C graphics library.
  171. X#
  172. X#CC = cl /AL /f
  173. XCC = cl /AL /Ot /Oe /Ol /Op /Gs /Gr
  174. X
  175. Xastrolog.exe : \
  176. X  data.obj general.obj formulas.obj charts.obj options.obj driver.obj \
  177. X  xdata.obj xgeneral.obj xcharts.obj xdriver.obj
  178. X# We are compiling in Large memory model with 16,384 bytes for stack storage.
  179. X# Delete graphics.lib from line below if MSC not defined.
  180. X  link /E /ST:0x4000 data general formulas charts options driver \
  181. X  xdata xgeneral xcharts xdriver, astrolog.exe, NUL, graphics.lib;
  182. X#
  183. X
  184. END_OF_FILE
  185. if test 821 -ne `wc -c <'makefile.pc'`; then
  186.     echo shar: \"'makefile.pc'\" unpacked with wrong size!
  187. fi
  188. # end of 'makefile.pc'
  189. fi
  190. if test -f 'astrolog.dat' -a "${1}" != "-c" ; then 
  191.   echo shar: Will not clobber existing file \"'astrolog.dat'\"
  192. else
  193. echo shar: Extracting \"'astrolog.dat'\" \(1261 characters\)
  194. sed "s/^X//" >'astrolog.dat' <<'END_OF_FILE'
  195. XAstrolog 3.05 default parameter file astrolog.dat:
  196. X
  197. XDEFAULT TIME AND PLACE:
  198. XTime zone = 8
  199. XLongitude = 122.20
  200. XLatitude  = 47.36
  201. X
  202. XDEFAULT VALUES:
  203. XNo. Aspects  = 5
  204. XHouse system = 0
  205. XAnsi text    = 0
  206. XDivisions    = 24
  207. XWheel rows   = 4
  208. XSmart cusps  = 0
  209. X80 columns   = 0
  210. X
  211. XDEFAULT RESTRICTIONS:
  212. XRow 1: Planets; Row 2: Minor planets. =
  213. X0 0 0 0 0 0 0 0 0 0
  214. X0 0 0 0 0 0 0 0 0 0
  215. X
  216. XDEFAULT TRANSIT RESTRICTIONS:
  217. XRow 1: Planets; Row 2: Minor planets. =
  218. X0 1 0 0 0 0 0 0 0 0
  219. X0 0 0 0 0 0 0 0 0 0
  220. X
  221. XDEFAULT ASPECT ORBS:
  222. XRow 1: Majors; Row 2: Minors; Row 3; Obscure. =
  223. X7 7 7 7 6
  224. X3 3 3 3 2 2
  225. X1 1 1 1 1 1 1
  226. X
  227. XDEFAULT MAX PLANET ASPECT ORBS:
  228. XRow 1: Planets; Row 2: Minor planets. =
  229. X360 360 360 360 360 360 360 360 360 360
  230. X360 360 360 360 360 2   2   360 360 2
  231. X
  232. XDEFAULT PLANET ASPECT ORB ADDITIONS:
  233. XRow 1: Planets; Row 2: Minor planets. =
  234. X1 1 0 0 0 0 0 0 0 0
  235. X0 0 0 0 0 0 0 0 0 0
  236. X
  237. XDEFAULT INFLUENCES:
  238. XIn ruling sign   = 20
  239. XExalted in sign  = 10
  240. XIn ruling house  = 15
  241. XExalted in house = 5
  242. XRow 1: Planets; Row 2: Minor planets; Row 3: Houses;
  243. XRow 4: Major aspects; Row 5: Minor aspects; Row 6; Obscure aspects. =
  244. X30 25 10 10 10 10 10 10 10 10
  245. X  5 5 5 5 5 5 5 15 20 5
  246. X20 0 0 10 0 0 5 0 0 15 0 0
  247. X1.0 0.8 0.8 0.6 0.6
  248. X  0.4 0.4 0.2 0.2 0.2 0.2
  249. X  0.1 0.1 0.1 0.1 0.1 0.1 0.1
  250. X
  251. X/* astrolog.dat */
  252. END_OF_FILE
  253. if test 1261 -ne `wc -c <'astrolog.dat'`; then
  254.     echo shar: \"'astrolog.dat'\" unpacked with wrong size!
  255. fi
  256. # end of 'astrolog.dat'
  257. fi
  258. if test -f 'astrolog.h' -a "${1}" != "-c" ; then 
  259.   echo shar: Will not clobber existing file \"'astrolog.h'\"
  260. else
  261. echo shar: Extracting \"'astrolog.h'\" \(15122 characters\)
  262. sed "s/^X//" >'astrolog.h' <<'END_OF_FILE'
  263. X/*
  264. X** Astrolog (Version 3.05) File: astrolog.h
  265. X**
  266. X** By Walter D. Pullen (astrolog@byron.u.washington.edu)
  267. X** Initially programmed 8/28,30, 9/10,13,16,20,23, 10/3,6,7, 11/7,10,21/1991.
  268. X** Last change made 5/9/1993.
  269. X**
  270. X** IMPORTANT: The planetary calculation routines used in this program
  271. X** have been Copyrighted and the core of this program is basically a
  272. X** conversion to C of the routines created by James Neely as listed in
  273. X** Michael Erlewine's 'Manual of Computer Programming for Astrologers',
  274. X** available from Matrix Software. The copyright gives us permission to
  275. X** use the routines for our own purposes but not to sell them or profit
  276. X** from them in any way.
  277. X**
  278. X** IN ADDITION: the graphics database and chart display routines used in
  279. X** this program are Copyright (C) 1991-1993 by Walter D. Pullen. Permission
  280. X** is granted to freely use and distribute these routines provided one
  281. X** doesn't sell, restrict, or profit from them in any way. Modification
  282. X** is allowed provided these notices remain with any altered or edited
  283. X** versions of the program.
  284. X*/
  285. X
  286. X/*
  287. X** To compile: For most systems, especially Unix based ones, the only changes
  288. X** that should need to be made to the code are to edit or comment out the 11
  289. X** #define's below to equal the particulars of your own locale and system:
  290. X*/
  291. X
  292. X#define DEFAULT_LONG 122.20  /* Change these values to the longitude W and */
  293. X#define DEFAULT_LAT   47.36  /* latitude N of your current location.       */
  294. X                             /* Use negative values for east/south areas.  */
  295. X#define DEFAULT_ZONE   8.00  /* Change to default time zone of current     */
  296. X                             /* location in hours before (west of) GMT.    */
  297. X
  298. X#define DEFAULT_DIR "~/astrolog/"
  299. X                     /* Change this string to directory path program       */
  300. X                     /* should look in for chart files if not in current.  */
  301. X                     /* For PC users, use two backslashes instead of one   */
  302. X                     /* forward slash to divide subdirectories.            */
  303. X                     /* (The above string must end with a slash!)          */
  304. X
  305. X#define SWITCHES /* Comment out this #define if your system can not handle */
  306. X                 /* parameters on the command line (like Mac's, etc.)      */
  307. X#define TIME     /* Comment out this #define if your compiler can't take   */
  308. X                 /* the calls to 'time' or 'localtime' as in time.h        */
  309. X#define GRAPH    /* Commant out this #define if you don't want graphics.   */
  310. X#define X11      /* Comment out this #define if you don't have X windows.  */
  311. X/*#define MSC      /* Comment out this #define if you don't have access      */
  312. X                 /* to the Microsoft C PC graphics library as in graph.h.  */
  313. X#define NOPC     /* Comment out this #define if you have a PC system.      */
  314. X#define ATOF     /* Comment out this #define if you have a system in which */
  315. X                 /* atof() isn't defined in stdio.h, such as VMS and NeXT. */
  316. X
  317. X/*
  318. X** Although not necessary, one may like to change some of the values below:
  319. X** These constants affect some of the default parameters, etc.
  320. X*/
  321. X
  322. X#define DEFAULT_INFOFILE "astrolog.dat" /* Name of file to look in for     */
  323. X                                        /* default parameters (which will  */
  324. X                                        /* override the values here.)      */
  325. X#define DEFAULT_SYSTEM 0     /* Normally, Placidus houses are used (unless */
  326. X                             /* user specifies otherwise). If you want a   */
  327. X                             /* different default system, change this numb */
  328. X                             /* to value from 0..9 (values same as in -c). */
  329. X#define DEFAULT_ASPECTS 5    /* Default number of aspects to consider.     */
  330. X
  331. X#define WHEELCOLS 15    /* Affects the width of each house in wheel display */
  332. X#define WHEELROWS 11    /* Max no. of objects that can be in a wheel house. */
  333. X#define MAXINDAY 100    /* Max number of aspects or transits displayable.   */
  334. X#define MAXCROSS 500    /* Max number of latitude crossings displayable.    */
  335. X#define DIVISIONS 24    /* Greater numbers == more accuracy but slower      */
  336. X                        /* calculation, of exact aspect and transit times.  */
  337. X
  338. X#ifdef GRAPH
  339. X#define BITMAPMODE 'C'  /* For graphics, this char affects how bitmaps are */
  340. X                        /* written. 'N' is written like with the 'bitmap'  */
  341. X                        /* program, 'C' is compacted somewhat (files have  */
  342. X                        /* less spaces), and 'V' is compacted even more.   */
  343. X                        /* 'A' means write as rectangular Ascii text file. */
  344. X                        /* 'B' means write as Windows bitmap (.bmp) file.  */
  345. X#ifdef NOPC
  346. X#define BITMAPX  1168   /* Maximum window size allowed (standard) */
  347. X#define BITMAPY  1024
  348. X#else
  349. X#define BITMAPX  728    /* Maximum window size allowed (for PC's) */
  350. X#define BITMAPY  720
  351. X#endif
  352. X#define BITMAPX1 180    /* Minimum window size allowed */
  353. X#define BITMAPY1 180
  354. X#ifdef NOPC
  355. X#define DEFAULTX 600    /* Default window size (standard) */
  356. X#define DEFAULTY 600
  357. X#else
  358. X#define DEFAULTX 480    /* Default window size (for PC's) */
  359. X#define DEFAULTY 480
  360. X#endif
  361. X#define CELLSIZE  14    /* Size for each cell in the aspect grid      */
  362. X#define DEFORB   7.0    /* Min distance glyphs can be from each other */
  363. X#endif
  364. X
  365. X#define BOXH  (ansi ? 196 : '-')    /* Ansi and Ascii characters used to */
  366. X#define BOXV  (ansi ? 179 : '|')    /* print text charts.                */
  367. X#define BOXC  (ansi ? 197 : '|')
  368. X#define BOXNW (ansi ? 218 : '+')
  369. X#define BOXNE (ansi ? 191 : '+')
  370. X#define BOXSW (ansi ? 192 : '+')
  371. X#define BOXSE (ansi ? 217 : '+')
  372. X#define BOXJN (ansi ? 193 : '-')
  373. X#define BOXJS (ansi ? 194 : '-')
  374. X#define BOXJW (ansi ? 180 : '|')
  375. X#define BOXJE (ansi ? 195 : '|')
  376. X#define DEGR1 (ansi ? 248 : ',')
  377. X#define DEGR2 (ansi ? 248 : ' ')
  378. X
  379. X
  380. X/*
  381. X** One shouldn't need to change anything below this line to compile.
  382. X*/
  383. X
  384. X#include <stdio.h>
  385. X#ifndef ATOF
  386. X#include <stdlib.h>
  387. X#endif
  388. X#include <math.h>
  389. X#ifndef NOPC
  390. X#include <malloc.h>
  391. X#endif
  392. X#ifdef TIME
  393. X#include <time.h>
  394. X#endif
  395. X#ifdef X11
  396. X#include <X11/Xlib.h>
  397. X#include <X11/Xutil.h>
  398. X#endif
  399. X#ifdef MSC
  400. X#include <graph.h>
  401. X#include <conio.h>
  402. X#endif
  403. X
  404. X/*
  405. X** Make sure only legal combinations of the graphics options are active.
  406. X*/
  407. X
  408. X#ifdef X11
  409. X#define WIN
  410. X#ifndef GRAPH
  411. X"X11 implies GRAPH"
  412. X#endif
  413. X#ifdef MSC
  414. X"X11 implies not MSC"
  415. X#endif
  416. X#ifndef NOPC
  417. X"X11 implies NOPC"
  418. X#endif
  419. X#endif
  420. X#ifdef MSC
  421. X#define WIN
  422. X#ifndef GRAPH
  423. X"MSC implies GRAPH"
  424. X#endif
  425. X#ifdef X11
  426. X"MSC imples not X11"
  427. X#endif
  428. X#ifdef NOPC
  429. X"MSC imples not NOPC"
  430. X#endif
  431. X#endif
  432. X
  433. X
  434. X/*
  435. X*******************************************************************************
  436. X** Constants
  437. X*******************************************************************************
  438. X*/
  439. X
  440. X#ifndef FALSE
  441. X#define FALSE 0
  442. X#endif
  443. X#ifndef TRUE
  444. X#define TRUE  1
  445. X#endif
  446. X#define APPNAME  "Astrolog"
  447. X#define VERSION  "3.05"
  448. X#define DATE     "April 1993"
  449. X#define ADDRESS  "astrolog@byron.u.washington.edu"
  450. X#define OFF      0
  451. X#define ON       1
  452. X#define STRING   80
  453. X#define PI       3.14159265358979323846
  454. X#define DEGREES  360.0
  455. X#define DEGTORAD (180.0/PI)
  456. X#define SD2000   -24.736467
  457. X#define SCALE    (scale/100)
  458. X#define ESCAPE   '\33'
  459. X#define SIGNS    12
  460. X#define SYSTEMS  10
  461. X#define ASPECTS  18
  462. X#define ASPECTI  11
  463. X#define FONTX    6
  464. X#define FONTY    10
  465. X
  466. X/* Object array index values */
  467. X
  468. X#define PLANETS 14
  469. X#define THINGS  16
  470. X#define OBJECTS 20
  471. X#define URANIANS 8
  472. X#define STARS   47
  473. X#define BASE    32
  474. X#define TOTAL   79
  475. X#define C_LO    21
  476. X#define C_HI    24
  477. X#define U_LO    25
  478. X#define U_HI    32
  479. X#define S_LO    33
  480. X#define S_HI    79
  481. X
  482. X/* Bit mask values for chart specification */
  483. X
  484. X#define DASHv 0x1
  485. X#define DASHw 0x2
  486. X#define DASHg 0x4
  487. X#define DASHm 0x8
  488. X#define DASHZ 0x10
  489. X#define DASHS 0x20
  490. X#define DASHj 0x40
  491. X#define DASHL 0x80
  492. X#define DASHd 0x100
  493. X#define DASHE 0x200
  494. X#define DASHT 0x400
  495. X#define DASHe 0x3FF
  496. X
  497. X/* Bit mask values for subchart specification */
  498. X
  499. X#define DASHv0 0x1
  500. X#define DASHw0 0x2
  501. X#define DASHg0 0x4
  502. X#define DASHga 0x8
  503. X#define DASHm0 0x10
  504. X#define DASHZ0 0x20
  505. X#define DASHj0 0x40
  506. X#define DASHL0 0x80
  507. X#define DASHdm 0x100
  508. X#define DASHEy 0x200
  509. X#define DASHXW0 0x400
  510. X#define DASHXP0 0x800
  511. X
  512. X/* Bit mask values for option specification */
  513. X
  514. X#define DASHs 0x1
  515. X#define DASHC 0x2
  516. X#define DASHu 0x4
  517. X#define DASHf 0x8
  518. X#define DASH3 0x10
  519. X#define DASHG 0x20
  520. X#define DASHo 0x40
  521. X#define DASHX 0x80
  522. X#define DASHs0 0x100
  523. X#define DASHp0 0x200
  524. X#define DASHo0 0x400
  525. X
  526. X/* Relationship chart modes */
  527. X
  528. X#define DASHr  1
  529. X#define DASHrc 2
  530. X#define DASHrm 3
  531. X#define DASHrd 4
  532. X#define DASHrb 5
  533. X#define DASHr0 -1
  534. X
  535. X/* Ansi colors */
  536. X
  537. X#define BLACK   0
  538. X#define MAROON  1
  539. X#define DKGREEN 2
  540. X#define ORANGE  3
  541. X#define DKBLUE  4
  542. X#define PURPLE  5
  543. X#define DKCYAN  6
  544. X#define LTGRAY  7
  545. X#define DKGRAY  8
  546. X#define RED     9
  547. X#define GREEN   10
  548. X#define YELLOW  11
  549. X#define BLUE    12
  550. X#define MAGENTA 13
  551. X#define CYAN    14
  552. X#define WHITE   15
  553. X
  554. X
  555. X/*
  556. X*******************************************************************************
  557. X** Macro functions
  558. X*******************************************************************************
  559. X*/
  560. X
  561. X#define LOBYTE(A) ((byte) (A))
  562. X#define HIBYTE(A) ((byte) ((word)(A) >> 8 & 0xFF))
  563. X#define LOWORD(A) ((word) (A))
  564. X#define HIWORD(A) ((word) ((dword)(A) >> 16 & 0xFFFF))
  565. X#define MAKEWORD(L, H) ((word)LOBYTE(L) | (byte)(H) << 8)
  566. X#define MAKELONG(L, H) ((dword)LOWORD(L) | (word)(H) << 16)
  567. X#define RGB(R, G, B) ((dword)((byte)(R) | (word)(G)<<8 | (dword)(byte)(B)<<16))
  568. X#define RGBR(R) LOBYTE(R)
  569. X#define RGBG(G) HIBYTE(G)
  570. X#define RGBB(B) ((byte) ((dword)(B) >> 16 & 0xFF))
  571. X
  572. X#define MAX(A, B) ((A) > (B) ? (A) : (B))
  573. X#define MIN(A, B) ((A) < (B) ? (A) : (B))
  574. X#define FRACT(A) ((A) - floor(A))
  575. X#define CAP(B) ((B) >= 'a' && (B) <= 'z' ? (B) - 'a' + 'A' : (B))
  576. X#define DTOR(A) ((A)/DEGTORAD)
  577. X#define RTOD(A) ((A)*DEGTORAD)
  578. X#define ASIN(A) ((A)*(A) == 1.0 ? (A)*PI/2.0 : atan((A)/sqrt(1.0-(A)*(A))))
  579. X#define ACOS(A) ((A) == 0.0 ? 0.0 : atan(sqrt(1.0-(A)*(A))/(A)))
  580. X#define SIND(A) sin((A)/DEGTORAD)
  581. X#define COSD(A) cos((A)/DEGTORAD)
  582. X#define SWAP(A, B) (A)^=(B)^=(A)^=(B)
  583. X#define SORT(A, B) if ((A) > (B)) SWAP(A, B)
  584. X
  585. X#define SIGNAM(A) signname[A][0], signname[A][1], signname[A][2]
  586. X#define OBJNAM(A) objectname[A][0], objectname[A][1], objectname[A][2]
  587. X#define dabs(A) fabs(A)
  588. X#define ecltoequ(Z, L) CoorXform(Z, L, DTOR( 23.44578889))
  589. X#define equtoecl(Z, L) CoorXform(Z, L, DTOR(-23.44578889))
  590. X#define equtolocal(Z, L, T) CoorXform(Z, L, T)
  591. X
  592. X#ifdef NOPC
  593. X#define DASH '-'
  594. X#define PTR *
  595. X#define Allocate(P, B, T) (P) = (T) malloc(B)
  596. X#define Deallocate(P) free(P)
  597. X#else
  598. X#define DASH '/'
  599. X#define PTR huge *
  600. X#define Allocate(P, B, T) (P) = (T) halloc((long)(B), sizeof(byte))
  601. X#define Deallocate(P) hfree(P)
  602. X#endif
  603. X
  604. X
  605. X/*
  606. X*******************************************************************************
  607. X** Type definitions
  608. X*******************************************************************************
  609. X*/
  610. X
  611. X#define byte  unsigned char
  612. X#define word  unsigned short
  613. X#define dword unsigned long
  614. X#define real  double
  615. X
  616. Xtypedef struct _gridstruct {
  617. X  byte  n[TOTAL+1][TOTAL+1];
  618. X  short v[TOTAL+1][TOTAL+1];
  619. X} gridstruct;
  620. X
  621. X#ifdef GRAPH
  622. X#define color unsigned long
  623. X#define bit color
  624. X
  625. Xtypedef struct _circlestruct {
  626. X  real x[360+1];
  627. X  real y[360+1];
  628. X} circlestruct;
  629. X
  630. X#ifdef NOPC
  631. Xtypedef struct _bitmapstruct {
  632. X  byte m[BITMAPX >> 1][BITMAPY];
  633. X} bitmapstruct;
  634. Xtypedef bitmapstruct *bitmap;
  635. X#else
  636. Xtypedef byte huge *bitmap;
  637. X#endif
  638. X
  639. X#ifdef X11
  640. X#define Xcolor(A) XSetForeground(disp, gc, rgbind[(A)])
  641. X#endif
  642. X#ifdef MSC
  643. X#define Xcolor(A) _setcolor((short)(A))
  644. X#endif
  645. X#endif
  646. X
  647. X
  648. X/*
  649. X*******************************************************************************
  650. X** External declarations
  651. X*******************************************************************************
  652. X*/
  653. X
  654. X/* From data.c */
  655. X
  656. Xextern int total, aspects, universe, centerplanet,
  657. X  housesystem, ansi, divisions, smartcusp, column80,
  658. X  todisplay, exdisplay, operation, relation,
  659. X  interpret, progress, multiplyfactor, onasc,
  660. X  wheelrows, graphstep, autom;
  661. Xextern char *filename, *filename2, *appname, string[];
  662. Xextern real progday, defzone, deflong, deflat, modulus;
  663. Xextern real Mon, Day, Yea, Tim, Zon, Lon, Lat,
  664. X  M, D, Y, F, X, L5, LA,
  665. X  SD, Mon2, Yea2, Delta, T, JD, Jdp,
  666. X  MC, Asc, Vtx;
  667. X
  668. Xextern real planet[], planetalt[], house[], ret[],
  669. X  spacex[], spacey[], spacez[], force[],
  670. X  planet1[], planet2[], planetalt1[], planetalt2[],
  671. X  house1[], house2[], ret1[], ret2[];
  672. Xextern gridstruct PTR grid;
  673. Xextern byte inhouse[], inhouse1[], inhouse2[];
  674. Xextern int starname[], objectansi[];
  675. X
  676. Xextern byte ignore[], ignore2[], errorcount[];
  677. Xextern char *signname[], *signabbrev[], *signenglish[], *housetradition[],
  678. X  *objectname[], *systemname[], *aspectname[], *aspectabbrev[], *aspectglyph[],
  679. X  *element[], *mode[], *post[], *monthname[], *dayname[];
  680. Xextern real aspectangle[], aspectorb[], planetorb[], planetadd[],
  681. X  starbright[], planetdata[], stardata[];
  682. Xextern int ruler1[], ruler2[], exalt[], rules[],
  683. X  mainansi[], rainbowansi[], elemansi[], aspectansi[];
  684. Xextern real objectinf[], houseinf[], aspectinf[];
  685. Xextern char *mindpart[], *description[], *desire[], *lifearea[],
  686. X  *interact[], *therefore[], *modifier[3][11];
  687. X
  688. X/* From general.c */
  689. X
  690. Xextern void SwapReal(), Terminate(), TooFew(), BadVal(), BadVal2(), PrintTab(),
  691. X  AnsiColor(), PrintMinute(), PrintAltitude(), InputData();
  692. Xextern int StringLen(), Mod12(), DayInMonth(), ReadWorldData();
  693. Xextern real Sgn(), DecToDeg(), Mod(), MinDistance(), Midpoint(),
  694. X  Orb(), ReadPlanetData(), ReadStarData();
  695. Xextern char Dignify(), *StringLocation();
  696. X
  697. X/* From formulas.c */
  698. X
  699. Xextern real MdyToJulian(), ProcessInput(), CastChart();
  700. Xextern void JulianToMdy(), CoorXform(), HousePlace(), CastStar();
  701. X
  702. X/* From charts.c */
  703. X
  704. Xextern void ChartLocation(), ChartGrid(), DisplayGrands(), ChartWheel(),
  705. X  ChartMidpoint(), ChartHorizon(), ChartSpace(), ChartInfluence(),
  706. X  ChartAstroGraph();
  707. X
  708. X/* From options.c */
  709. X
  710. Xextern void CreateGrid(), CreateGridRelation(), CastRelation(),
  711. X  DisplayTransit(), DisplayEphemeris(), PrintChart();
  712. X
  713. X#ifdef GRAPH
  714. X/* From xdata.c */
  715. X
  716. X#ifdef X11
  717. Xextern Colormap cmap;
  718. Xextern Display *disp;
  719. Xextern GC gc, pmgc;
  720. Xextern KeySym key;
  721. Xextern Pixmap pixmap, icon;
  722. Xextern Window window, root;
  723. Xextern XEvent event;
  724. Xextern XSizeHints hint;
  725. Xextern int screen, depth;
  726. Xextern char xkey[];
  727. Xextern char icon_bits[];
  728. Xextern char *rgbname[];
  729. Xextern color rgbind[];
  730. X#endif
  731. Xextern bitmap bm;
  732. Xextern color fg, bg, rgb[], rgbbmp[], maincolor[], rainbowcolor[],
  733. X  elemcolor[], aspectcolor[], objectcolor[], hilite, gray, on, off;
  734. Xextern char modex, bitmapmode, *dispname, outputfile[];
  735. Xextern int xmono, xcolor, xroot, xreverse, xbitmap, xtext, bonus, label, xeast,
  736. X  turtlex, turtley, scale, chartx, charty, degree, xnow;
  737. Xextern real tilt;
  738. X
  739. Xextern char *signdraw[], *objectdraw[], *housedraw[], *aspectdraw[],
  740. X  *asciidraw[], *worlddata[];
  741. X
  742. X/* From xcharts.c */
  743. X
  744. Xextern void XChart();
  745. X
  746. X/* From xgeneral.c */
  747. X
  748. Xextern void DrawPoint(), DrawSpot(), DrawBlock(), DrawBox(),
  749. X  DrawLine(), DrawWrap(), DrawClip(), DrawTurtle();
  750. X
  751. X/* From xdriver.c */
  752. X
  753. Xextern void XDisplaySwitches(), XAction();
  754. Xextern int XProcess();
  755. X#endif
  756. X
  757. X/* From driver.c */
  758. X
  759. Xextern void Prints();
  760. X
  761. X/* astrolog.h */
  762. END_OF_FILE
  763. if test 15122 -ne `wc -c <'astrolog.h'`; then
  764.     echo shar: \"'astrolog.h'\" unpacked with wrong size!
  765. fi
  766. # end of 'astrolog.h'
  767. fi
  768. if test -f 'Update.300' -a "${1}" != "-c" ; then 
  769.   echo shar: Will not clobber existing file \"'Update.300'\"
  770. else
  771. echo shar: Extracting \"'Update.300'\" \(31731 characters\)
  772. sed "s/^X//" >'Update.300' <<'END_OF_FILE'
  773. X--
  774. X
  775. X     This file describes version 3.00 of the Astrolog computer
  776. Xprogram for astrology. Described are new features added on to the
  777. Xprevious release, version 2.40, posted January, 1993, and bug fixes
  778. Xand other changes made. Versions 1.00 through 1.40 were the first
  779. Xones, and established Astrolog as a calculation and text chart
  780. Xgenerator. Versions 2.00 through 2.40 saw graphics for X windows and
  781. Xmore advanced capabilities. Now, with version 3.00, we take another
  782. Xstep, including our long awaited graphics for PC systems as well.
  783. X
  784. X     If you have used or are familiar with previous versions of
  785. XAstrolog, to avoid confusion you may want to read the section on
  786. Xchanges to old features made in this release, probably before looking
  787. Xat the new features section. In addition, if you aren't familiar with
  788. Xprevious versions of the program, you will want to read the
  789. Xcomprehensive Helpfile for version 2.40, so you know what the 3.00
  790. Xfeature enhancements are referring to.
  791. X
  792. X
  793. X####################  PC GRAPHICS  ####################
  794. X
  795. X     The main things added to version 3.00 are our long awaited
  796. Xgraphics for PC's! PC graphics now look and feel and are displayed
  797. Xjust like the X window graphics already in place. When compiling, one
  798. Xhas a choice between four options: (1) choose no graphics abilities
  799. Xat all, (2) compile so that graphic chart bitmaps can be generated
  800. Xand output to a file, (3) compile allowing file graphics in addition
  801. Xto direct screen graphics in X windows, and now (4) compile with file
  802. Xgraphics and direct graphics on the screen of a PC. The addition of
  803. XPC graphics in no way inhibit or affect the X window graphics already
  804. Xin place; it's merely a matter of which compile time options are set.
  805. XUnix users don't need to look at this section.
  806. X
  807. X     Astrolog uses the Microsoft PC graphics library as defined in
  808. Xthe file graph.h included with their C7 "C" language compiler. This
  809. Xfile and the graphics.lib library is needed in order to be able to
  810. Xcompile with these graphics options set, just as the X window
  811. Xlibraries are needed to compile with those graphics included. If
  812. Xunavailable, one can still access these PC graphics with the library
  813. Xlinked in, in the already compiled executable posted.
  814. X
  815. X     PC Astrolog is a DOS program and should be run from a DOS
  816. Xprompt, outside of any Windows system. To generate a graphics chart
  817. Xinstead of a text one, include the -X switch just as one would do to
  818. Xbring up an X window. The expected graphic chart will be displayed on
  819. Xthe screen unless the -Xb write bitmap to file switch is in effect.
  820. XThe colors chosen for the graphics are basically identical to those
  821. Xchosen in X window charts, and both of these in turn are now based on
  822. Xthe Ansi colors used in the Ansi text charts.
  823. X
  824. X     Now, there are many various types of PC monitors and
  825. Xresolutions. Astrolog will automatically try to determine and pick
  826. Xthe highest resolution mode available on your system, so this need
  827. Xnot be worried about.
  828. X
  829. X     The PC Astrolog charts may be animated in all the various ways,
  830. Xand the animation will usually be flicker free! Now, PC's do have
  831. Xlimited memory, therefore there might not be room for more than one
  832. Xpage of graphics at the highest resolution. Hence, animation at the
  833. Xhighest (default) mode, may flicker; however, graphics at a slightly
  834. Xlower resolution may take enough less memory to allow enough to do
  835. Xflicker free animation. A special PC only feature for this has been
  836. Xadded: Pressing the 'tab' key while the PC graphics are up will try
  837. Xto pick a lower resolution, where flicker free animation can be done.
  838. XSpecifically, we'll toggle to a 640x350 EGA mode. On my own system,
  839. Xthe highest resolution I get is a 640x480 16 color VGA mode, however
  840. Xthe charts can't be animated without flicker. When I hit 'tab', I
  841. Xdrop from 480 lines of graphics to 350, but now the animation will be
  842. Xperfectly smooth. The results with whatever graphics system you have
  843. Xmay be different.
  844. X
  845. X     The chart that comes up will use as many pixels as is defined by
  846. Xthe chart's size as specified with the -Xw and -Xs switches. The 'Q'
  847. Xchange chart size to square key works just as before. However, on PC
  848. Xscreens we will try to take in account the pixel size ratio. On EGA
  849. Xscreens where the pixels are long and narrow, meaning a true "square"
  850. Xchart looks tall and thin, we compensate by increasing the horizontal
  851. Xsize of the chart. The 'B' key, which on X window graphics will blast
  852. Xthe current window contents to the root background, is a meaningless
  853. Xfeature for a PC. This key, for PC graphics systems, will instead
  854. Xresize the chart to be the full size of the screen. When the graphics
  855. Xmode is changed through 'tab', the chart size will be modified to be
  856. Xthe largest "square" that will fit on the screen (as if the computer
  857. Xpresses 'B' followed by 'Q' for you.)
  858. X
  859. X     If the size of the chart is less than the size of the screen, it
  860. Xwill be displayed centered in the middle of the screen. If however
  861. Xthe chart size is greater than the screen size, then the chart will
  862. Xtake up the whole screen, and part of it will be clipped. By default
  863. Xwe show the upper left corner of the chart if this is the case. Now,
  864. Xone can define and change which part of the chart gets shown. On PC's
  865. Xthe meaning of pressing the number keys have been enhanced. Normally,
  866. Xnumber keys set the animation speed; they still do, but now only when
  867. Xanimation is actually being done. If not in animation, the number
  868. Xkeys from 1..9 will define which "quadrant" or area of the chart gets
  869. Xshown. It's best to think of and use the number pad for this feature
  870. X(make sure num lock is on!) Pressing the '7' key, i.e. the upper left
  871. Xnumber on the number pad, will set it so the default upper left part
  872. Xof the chart is seen. Pressing the '3' key, on the lower right corner
  873. Xof the pad, will show the lower right corner of charts larger than
  874. Xthe screen size. Pressing '5' will show the middle area of the chart,
  875. Xwith equal amounts of the chart clipped from left and right, and top
  876. Xand bottom. Pressing '6' will show the right end of the chart,
  877. Xvertically centered on the screen, and so on. Basically, we have a
  878. Xsimple implementation of something like scroll bars, allowing viewing
  879. Xof all parts of the "window"! One can generate and display on the
  880. Xscreen even the largest charts producible with Astrolog. (Bitmap
  881. Xfiles are still limited to, i.e. will be clipped to, a maximum size
  882. Xof 728x720 pixels, however). Even on an 640x350 EGA, one can use this
  883. Xto generate and view all parts of a 300% scaled relationship aspect
  884. Xgrid (883x883), or even a 300% scaled world map display (1082x545)!
  885. X
  886. X
  887. X####################  NEW FEATURES  ####################
  888. X
  889. XHere are a list of other features added to this version of the
  890. Xprogram:
  891. X
  892. X1. -I expansion: The -I display an interpretation option has been
  893. X   expanded to allow interpretations of many more kinds of charts to be
  894. X   done. Simply include the -I switch to get an interpretation of any
  895. X   particular type of chart. If Astrolog doesn't support interpretations
  896. X   for it, the normal chart will be shown instead. Before, the only
  897. X   interpretations that could be done were for the standard position
  898. X   listing ("-v -I", formerly -vI) and the standard aspect grid ("-g
  899. X   -I", formerly -gI). Five more interpretations can now be done:
  900. X
  901. X   "-r0 person1 person2 -g -I" is a legal combination, and will display
  902. X   meanings of aspects between planets in two charts in a relationship
  903. X   aspect grid. "-i person -m0 -I" is legal, and will display the
  904. X   meanings of aspects in a chart; this is like -g -I, but the aspect
  905. X   meanings are printed in sorted order based on how powerful Astrolog
  906. X   thinks each aspect is, so this is probably preferred. "-r0 person1
  907. X   person2 -m0 -I" is legal, and will display the meanings of aspects in
  908. X   a relationship aspect list, like -r0 -g -I, but in the improved
  909. X   sorted order. "-d -I" is legal, and will display the meanings of
  910. X   aspects among transiting planets occurring during a day, as well as
  911. X   of sign and direction changes. "-T -I" is legal, and will display the
  912. X   meanings of aspects from transiting planets to natal ones.
  913. X
  914. X2. -Xb expansion: Color bitmap files can now be generated. Before,
  915. X   only black and white charts could be output to a file. By default,
  916. X   all graphic charts will be in color, unless specified otherwise.
  917. X   Color is most useful for the PC bitmaps (-Xbb), although a color
  918. X   bitmap will take up more disk space. X11 bitmap files will be output
  919. X   in monochrome format, since color .xbm files don't exist. A color
  920. X   ascii file (-Xba) will have the color value of each pixel converted
  921. X   to a hexadecimal number, instead of being in the format generated by
  922. X   the Unix bmtoa utility in the case of monochrome charts.
  923. X
  924. X3. -j0 option: The -j planet influences in a chart feature has been
  925. X   expanded to include signs as well. Invoke it as -j0 instead of just
  926. X   -j, and in addition to getting the influence of each planet in a
  927. X   chart, one will get the influence of each sign in the chart as well.
  928. X   To determine sign influence, we use the planet powers already
  929. X   determined; a sign gets influence if: (1) There is a planet in it,
  930. X   (2) there is a planet in the house it corresponds to, and (3) if any
  931. X   planet that rules or co-rules it is in the chart. For example, with
  932. X   my 11th house Venus in Sagittarius, for me: (1) Sagittarius gets more
  933. X   power because Venus is in it, (2) Aquarius gets more power because
  934. X   Venus is in the 11th, and (3) Libra and Taurus get power because
  935. X   Venus itself rules these signs. The exact power given is based on the
  936. X   total influence of Venus already determined. Any sign that has over
  937. X   about 175 points or 20% of the total is a really powerful and
  938. X   fundamental part of the psyche. We also sum up the influences of all
  939. X   the signs, displaying the influence of each element as well.
  940. X
  941. X4. -RT option: Transiting planets may now be restricted from charts
  942. X   independently of those planets being transited to. In -T charts, the
  943. X   -R option now only affects the natal planets. To restrict transiting
  944. X   planets, one must use the -RT option. The -RT option is exactly like
  945. X   -R, and any subswitches of -R can be used with -RT as long as the 'T'
  946. X   immediately follows the 'R'. For example, -RT by itself restricts
  947. X   transiting asteroids from appearing in -T charts, -RT0 restricts all
  948. X   transiting bodies, -RTu restricts the Uranians, and so on. This is a
  949. X   really useful feature, and allows one to pretty much be able to
  950. X   generate exactly and only those transits one is interested in. For
  951. X   example, if you want to see if anything is transiting your natal
  952. X   Jupiter or natal Saturn this month, do: "astrolog -i yourchart -T 3
  953. X   1993 -R0 6 7". If you want to see if Chiron is transiting anything
  954. X   this year (excluding asteroids), do: "astrolog -i yourchart -Ty 1993
  955. X   -RT0 11 -R". If you are only interested in transits of outer planets
  956. X   to your Sun or Moon, do: "astrolog -i yourchart -T 3 1993 -RT0 6 7 8
  957. X   9 10 -R0 1 2", and so on. No more awk scripts or grepping anymore! :)
  958. X   By default, as before, only the transiting Moon is restricted. The
  959. X   default transit restrictions have been added to the astrolog.dat
  960. X   file, and are right after the standard restriction table, both of
  961. X   which may be modified however you please.
  962. X
  963. X5. -Tn option: This feature is a quick shorthand way to generate
  964. X   transits for the current month. For example, instead of "astrolog -i
  965. X   chartfile -T 3 1993", one can do "astrolog -i chartfile -Tn". To do
  966. X   transits for the entire current year, invoke it as "-Tny".
  967. X
  968. X6. -p0 option: Solar arc progressions are now supported. Before, the
  969. X   only progressions available were secondary progressed charts. Invoke
  970. X   the -p <month> <day> <year> switch as -p0 instead, and a chart will
  971. X   be generated with all planets and house cusps progressed forward an
  972. X   amount equal in degrees to the number of years that have passed
  973. X   between the specified date and the chart in question. The -pd option
  974. X   here specifies the number of days that have to pass per zodiac degree
  975. X   to progress forward; by default this is 365.25. To generate a solar
  976. X   arc chart for the current moment now, invoke the -pn switch as -p0n.
  977. X
  978. X7. -r0 -m[0] option: Comparison relationship charts may now be
  979. X   generated for the -m midpoint and -m0 aspect list options. Combining
  980. X   -m with -r0 will yield an ordered list of all midpoints between all
  981. X   combinations of one planet from chart1 and another planet from
  982. X   chart2. Combining -m0 with -r0 will yield a list of all aspects
  983. X   between planets in the two charts, in order based on what Astrolog
  984. X   think their influences are. So, if you really want to know if your
  985. X   Sun widely trining your SO's Moon, will override the effect of your
  986. X   Saturn closely squaring their Mars, do "astrolog -r0 yourchart
  987. X   sochart -m0" and see the influence given to each aspect.
  988. X
  989. X8. -qm, -qy options: A quick chart cast for midnight on the first of
  990. X   a month can be generated with the two parameter -qm <month> <year>
  991. X   switch. A chart cast for midnight on the first of January of a year
  992. X   can be generated with the one parameter -qy <year> switch. Both of
  993. X   these use the default time zone and location. These switches are most
  994. X   useful for charts that don't require all the standard information.
  995. X   For example, to get an ephemeris for December, 2000, do "astrolog -qm
  996. X   12 2000" and avoid having to enter in a day, hour, or location that
  997. X   wouldn't have any effect. These options are in similar to the old -qd
  998. X   <month> <day> <year> switch that will do a chart for noon on the
  999. X   given date, and the -q <month> <day> <year> <time> switch that takes
  1000. X   a time as well.
  1001. X
  1002. X9. "Smart cusps" feature: This is a simple yes/no option that will
  1003. X   only affect the way -T transit lists are displayed. It can only be
  1004. X   set in the astrolog.dat file. If the value there is non-zero, then
  1005. X   transits to minor house cusps will be processed in a more intuitive
  1006. X   manner. First of all, aspects other than conjunctions or oppositions
  1007. X   to minor cusps will be ignored, e.g. a trine to the 11th house is
  1008. X   redundant and isn't really useful; we are more interested in the
  1009. X   conjunction to the 3rd house cusp. Minor aspects to the Ascendant and
  1010. X   Midheaven, and all other objects, are left alone. In addition, with
  1011. X   smart cusps active, oppositions to minor house cusps will be printed
  1012. X   as conjunctions to the opposing cusp, e.g. instead of "Jupiter Opp
  1013. X   3rd Cusp", we have the more logical "Jupiter Con 9th Cusp". This is
  1014. X   just another way to make transits charts clearer and less confusing.
  1015. X
  1016. X10. "80 column clip" feature: This is another yes/no option that can
  1017. X   only be set in the astrolog.dat file. If set to non-zero, then we
  1018. X   guarantee that no text chart when displayed will overflow 80 columns.
  1019. X   By default, with all objects unrestricted, certain charts will have
  1020. X   rows more than 80 columns long, breaking up the chart making it very
  1021. X   difficult to read. The -r0 -g relationship aspect grid, and the -E
  1022. X   ephemeris listing, will normally go beyond the 80th column. With this
  1023. X   feature however, these and other charts that can go beyond column 80,
  1024. X   such as -L when uranians are unrestricted, will always be displayed
  1025. X   on one line, with columns that would go beyond the 80th not getting
  1026. X   printed.
  1027. X
  1028. X11. -Xd, -di options: For X windows only, the -Xd <display> switch
  1029. X   can be used to change the display to bring the window up on. Before,
  1030. X   the X window would always come up on the current display, but now we
  1031. X   can do things like "astrolog -Xd machine:0.0" and have the window
  1032. X   appear there. In addition, the program will accept this string
  1033. X   through the standard "-display" (which can be abbreviated as "-disp"
  1034. X   or anything starting with "-di") switch common to most X11
  1035. X   applications.
  1036. X
  1037. X12. '0' key: When graphics are up on the screen, pressing this key
  1038. X   acts similar to the mode changing keys that switch between the
  1039. X   different graphic chart types. When pressed, the state of the program
  1040. X   being invoked with -Z vs. -Z0, as well as the state of -XW vs. -XW0,
  1041. X   will be reversed. In other words, if I am viewing the -Z -X horizon
  1042. X   chart, and I want to see the -Z0 -X sky graphic, then I press '0' to
  1043. X   go to it. Similarly, this key will flip me back and forth between the
  1044. X   -XW simple rectangular world map display and the -XW0 Mollewide
  1045. X   projection graphic. A bit of a hack, but very useful, and the only
  1046. X   way to change these suboptions while the program is running.
  1047. X
  1048. X13. -nd, -nm, -ny options: These switches are like the -n generate
  1049. X   chart for current moment now feature, except that they will
  1050. X   respectively generate charts for the midnight on the current day,
  1051. X   midnight on the first of the current month, and midnight on the first
  1052. X   day of the current year. 
  1053. X
  1054. X14. command line improvement: The way command line parameters are
  1055. X   processed has been slightly changed. Many switches are now
  1056. X   technically a "toggle" instead of a "set" for the particular feature
  1057. X   in question. For example, "astrolog -v -g -g" will now only result in
  1058. X   the -v chart being printed; an aspect grid won't because the first -g
  1059. X   turned it on while the second -g turned it off again. This can be
  1060. X   useful, in say the -e everything switch. If you want all of
  1061. X   Astrolog's charts except the astro-graph, you can now do "astrolog -e
  1062. X   -L", where the -e turns everything on and the -L turns the
  1063. X   astro-graph chart, already on because of -e, off. In another example,
  1064. X   to get a chart with only the stars in it, one can do "astrolog -R0
  1065. X   -RU", where the -R0 restricts everything, and the -RU unrestricts all
  1066. X   the stars. Before, -RU would restrict all of the stars again,
  1067. X   resulting in everything remaining restricted.
  1068. X
  1069. X15. -H improvement: PC users are accustomed to seeing command
  1070. X   switches with a leading slash "/" instead of a dash "-". To
  1071. X   accommodate this, the -H list of options available switch has been
  1072. X   modified to, if the program has been compiled for a PC, display all
  1073. X   the switches with a leading "/" instead of a "-". (On Unix and other
  1074. X   systems they will still be displayed with the standard leading "-".)
  1075. X
  1076. X16. -L -X improvement: The graphic astro-graph chart will now display
  1077. X   a small purple dot at the precise point on the world map for which
  1078. X   the chart in question is being generated. This is useful to help see
  1079. X   how close the various planetary lines are to you, if you live in the
  1080. X   middle of the continent or someplace not easily determinable on the
  1081. X   compact map of the world.
  1082. X
  1083. X
  1084. X####################  PROGRAM CHANGES  ####################
  1085. X
  1086. XQuite a few changes have been made to version 3.00. Some command
  1087. Xswitches have been renamed, and other assumptions valid in version
  1088. X2.40 are no longer so. This section isn't useful unless you are
  1089. Xalready familiar with earlier versions of the program. A list of
  1090. Xchanges follows:
  1091. X
  1092. X1. -T changes: The -T transit switch has been edited. It no longer
  1093. X   takes a file as a parameter - only the month and year. Now, the chart
  1094. X   to do transits to is taken from the standard interface. For example,
  1095. X   instead of "astrolog -T chartfile 3 1993" we now do "astrolog -i
  1096. X   chartfile -T 3 1993". This new interface is more flexible, and can be
  1097. X   combined with other chart type options (-v, -g, etc.) 
  1098. X
  1099. X   In addition, to display transits for an entire year, one no longer
  1100. X   does the hack of specifying zero for the month. This has been
  1101. X   replaced with the new -Ty switch (-Tpy for progressions), which only
  1102. X   takes one parameter, the year. For example, instead of "-T chartfile
  1103. X   0 1993" we now do "-i chartfile -Ty 1993".
  1104. X
  1105. X2. -T0 removed: The -T0 switch, used to include the transiting Moon
  1106. X   in charts, is gone. It is replaced with the general ability to
  1107. X   restrict transiting planets separately. Include "-RT 2" on the
  1108. X   command line to obtain the same result as -T0 (see new -RT option).
  1109. X
  1110. X3. -E changes: The -E ephemeris switch has been edited in a similar
  1111. X   way as -T, in that it also takes its date to do the ephemeris for
  1112. X   from the standard interface. It no longer takes a month and year for
  1113. X   parameters. Now, instead of "astrolog -E 3 1993" we do "astrolog -qm
  1114. X   3 1993 -E". To see the ephemeris for someone's birth month, one can
  1115. X   do the convenient "-i chartfile -E", or to see the ephemeris for this
  1116. X   month, do "-n -E". The -E switch can now be combined with the other
  1117. X   chart type options, and is included with the -e everything switch.
  1118. X
  1119. X   In addition, to display an ephemeris for an entire year, one no
  1120. X   longer specifies zero for the month, as with -T. We use the -Ey
  1121. X   switch now. For example, instead of "-E 0 1993" we now do "-qy 1993
  1122. X   -Ey" (see new -qy and -qm options).
  1123. X
  1124. X4. -E0 removed: The -E0 switch, used to allow an ephemeris for
  1125. X   objects other than Sun..Pluto, is gone. The standard -E switch has
  1126. X   this functionality now, which before would only allow Sun..Pluto.
  1127. X   Removal of the switch makes things less complicated, but will result
  1128. X   in lines longer than 80 columns whenever more than 10 bodies are
  1129. X   unrestricted. (If this is annoying, see the new 80 column clip
  1130. X   feature).
  1131. X
  1132. X5. -q renamed: The -q switch, used to quickly cast a chart at noon
  1133. X   given a date (using default location and time zone) has been renamed
  1134. X   to be "-qd". (See new features section for newly added related
  1135. X   switches "-qm" and "-qy".)
  1136. X
  1137. X6. -q0 renamed: The -q0 switch, used to quickly cast a chart given a
  1138. X   date as well as time has been renamed to be just "-q". (Don't confuse
  1139. X   this with the -q in version 2.40 and before, which did not take a
  1140. X   time parameter.)
  1141. X
  1142. X7. -I renamed: The -I display influences chart switch has been
  1143. X   renamed to "-j". (-I now refers to a general interpretation switch;
  1144. X   don't get them confused.) Mnemonically, one might want to think of -j
  1145. X   as referring to "j"oining the influences in the chart together and
  1146. X   displaying stats on them. (Hey, so I'm running out of letters for
  1147. X   switches! ;)
  1148. X
  1149. X8. -vI, -gI removed: The -vI and -gI switches to display
  1150. X   interpretations for position (-v), and aspect grid (-g) charts, are
  1151. X   gone. Use the -I general interpretation switch now. For example,
  1152. X   instead of "astrolog -i chartfile -gI", do "astrolog -i chartfile -g -I".
  1153. X
  1154. X9. -v changed: The -v and -v0 switches have been swapped as to their
  1155. X   meanings of the "velocity" column in the standard chart listing.
  1156. X   Before, -v (the default) would display current planetary velocity in
  1157. X   degrees per day through the zodiac. The -v0 switch would display
  1158. X   this velocity as a percentage, where 1.00 means it is moving at its
  1159. X   average speed, 2.00 means moving twice as fast as normal, -0.01 means
  1160. X   is retrograde and about to turn direct, and so on. Now, these
  1161. X   meanings have been exchanged, as the old -v0 display tends to be more
  1162. X   useful, so it is the default now.
  1163. X
  1164. X10. -d0 renamed: The -d0 switch, used to print all aspects among
  1165. X   transiting planets in an entire month (as opposed to just a day with
  1166. X   -d) has been renamed to be "-dm".
  1167. X
  1168. X11. -p0 renamed: The -p0 switch, used to specify the number of days
  1169. X   to progress per day in a -p progressed chart, has been renamed to be
  1170. X   "-pd". (-p0 now means do a solar arc chart.)
  1171. X
  1172. X12. Astrolog.dat changed: As usual, astrolog.dat files from version
  1173. X   2.40 and before are incompatible with version 3.00. A transit
  1174. X   restriction array and two extra new options (see later) have been
  1175. X   added.
  1176. X
  1177. X13. Finally, concerning the source code itself, three new files have
  1178. X   been added to version 3.00! The old file graphics.c is gone and has
  1179. X   been split into "xgeneral.c" and "xdriver.c". Also, some of the
  1180. X   contents in data.c have been moved into new files "general.c" and
  1181. X   "xdata.c". This of course means that old Astrolog makefiles won't
  1182. X   work to compile version 3.00.
  1183. X
  1184. X
  1185. X####################  BUG FIXES  ####################
  1186. X
  1187. XHere is a list of bugs in version 2.40 that have been fixed in this
  1188. Xrelease:
  1189. X
  1190. X1. All object restriction values in the astrolog.dat file were
  1191. X   ignored. In the last release I may have fixed the crashing problems
  1192. X   people were having, but I inadvertently introduced this bug in the
  1193. X   process. Now, trust me, that once and for all astrolog.dat
  1194. X   restrictions work perfectly!
  1195. X
  1196. X2. The -gI switch would often crash on many systems. This was due to
  1197. X   some long interpretation strings extending past array bounds. No
  1198. X   crashes now. (I got quite a few e-mail reports on this one.)
  1199. X
  1200. X3. The meanings of the Midheaven and Ascendant were reversed in the
  1201. X   interpretation database, giving bogus interpretations when these
  1202. X   objects were involved. They are in the right order now. (Surprised
  1203. X   nobody ever emailed me about this!)
  1204. X
  1205. X4. Doing -Xs 300 -g would crash PC's. The bitmap screen was cleared
  1206. X   before a check was made as to whether the requested scale size would
  1207. X   overflow the bitmap. Now, very large scale sizes are allowed for
  1208. X   bitmaps. If the size of the graphic exceeds the array limits, then
  1209. X   the bitmap size will be clipped to it (e.g. "-Xs 300 -g -Xb" is
  1210. X   allowed, but bottom and right rows of the aspect grid will be clipped
  1211. X   off the bitmap file.)
  1212. X
  1213. X5. Trying to include stars in a -S graphic chart (-S -X -U) could
  1214. X   cause a crash. The stars are properly ignored in all -S charts
  1215. X   without problem now. In addition, yet another PC 16 bit int overflow
  1216. X   could cause the zodiac boundaries in a -S -X chart to be displayed
  1217. X   erroneously, which has been corrected, too.
  1218. X
  1219. X6. The Placidus house cusp routine would generate garbage results
  1220. X   for all non-angular cusps when for any chart cast at latitude 0. We
  1221. X   have correct results now.
  1222. X
  1223. X7. When animating graphics charts backward in time, passing to a
  1224. X   previous month didn't set the day of the new month correctly.
  1225. X   Instead of setting the day to the last day of the new month, it would
  1226. X   go to the last day of the month just left, e.g. from March 1st to
  1227. X   February 31st, yielding a bogus chart. These values are updated
  1228. X   properly now.
  1229. X
  1230. X8. The Midheaven and Ascendant, being cusp objects, should logically
  1231. X   always be mapped to being in the 10th and 1st houses, respectively.
  1232. X   Round off error would occasionally put them in the previous house,
  1233. X   resulting in output like Midheaven in 9th house in a -v chart, for
  1234. X   example. This will no longer occur.
  1235. X
  1236. X9. More checking for out of range command line parameters is done
  1237. X   now, specifically for the -a, -q, and -l switches. Although checking
  1238. X   was always done when prompting the user for info, not as much was
  1239. X   done when accepting data from the command line, resulting in one
  1240. X   being able to get away with things like "Feb 50th" or "200 degrees
  1241. X   north latitude". 
  1242. X
  1243. X10. The -H list had some non-existent command switches in it!
  1244. X   Specifically there were switches called "-gl" and "-gm". When I was
  1245. X   creating the -m and -m0 switches for version 2.40, they were
  1246. X   originally going to be extra letters tacked onto -g. However,
  1247. X   although I did finally add -m to the -H list, I foolishly forgot to
  1248. X   remove -gl and -gm (which don't do anything more than -g). Anyway,
  1249. X   these are removed from the list (as well as some spelling errors).
  1250. X
  1251. X11. The -v chart was never able to respond to -R restrictions on the
  1252. X   first 20 objects in any place other than the element table. This was
  1253. X   because the display of the 12 house cusps and the element table here
  1254. X   require 20 lines of text, so we can't just leave lines out. Now, we
  1255. X   do leave lines out, but will print enough blank lines at the end of
  1256. X   the first 20 objects so that the element table can be printed, so -v
  1257. X   now responds to -R completely.
  1258. X
  1259. X12. The -g0 switch when combined with -r0 will generate a
  1260. X   relationship midpoint (as opposed to aspect with just -g) grid.
  1261. X   However, -g0 would be the same as -g when doing a graphic -r0 chart.
  1262. X   Now, -r0 -g0 -X will generate the expected graphic relationship
  1263. X   midpoint grid. (Note that -r0 -g -Xi, i.e. the slightly modified
  1264. X   chart mode, was what one had to do to generate a graphic relationship
  1265. X   midpoint chart before. This still works, but will now revert back to
  1266. X   an aspect grid if both -Xi and -g0 are in effect with -r0.) 
  1267. X
  1268. X13. It seems some compilers, specifically some on VMS systems, would
  1269. X   compile the complicated planet calculation routine incorrectly,
  1270. X   specifically in the planet index loop, resulting in bad data.
  1271. X   Although it doesn't affect the program any, I simplified the loop, so
  1272. X   this shouldn't be a problem anymore.
  1273. X
  1274. X14. Version 2.40 was rather memory inefficient on PC platforms. The
  1275. X   executable was a large 320K, and lots of data was allocated even when
  1276. X   not used. The PC executable for version 3.00, in spite of all 3.00's
  1277. X   new features, and in spite of the 98K Microsoft C graphics library
  1278. X   module being linked in, is under 270K and runs faster! :)
  1279. X
  1280. X
  1281. X####################  COMPILING INSTRUCTIONS  ####################
  1282. X
  1283. X     Compiling Astrolog version 3.00 is virtually identical to
  1284. Xcompiling previous versions: first edit the top of the file
  1285. Xastrolog.h, putting in your own appropriate values for the default
  1286. Xlongitude, latitude, time zone, and default file search directory.
  1287. X(In the same manner, also edit these default parameter values in the
  1288. Xfile astrolog.dat to your liking, at least the location and time zone
  1289. Xvalues.) Also, comment out any of the #defines which set various
  1290. Xfeatures that aren't valid on your system, such as the GRAPH, X11,
  1291. XMSC, NOPC, TIME, and SWITCHES variables. Then, for Unix systems, just
  1292. Xrun the command 'make' on the Makefile.
  1293. X
  1294. X     Compiling Astrolog on a PC is pretty easy too. One can usually
  1295. Xdo it by simply compiling each file in turn and then linking them all
  1296. Xtogether. You don't have to worry about explicitly mentioning stuff
  1297. Xlike the math library if your paths are set up properly. I used the
  1298. XMicrosoft C7 compiler to generate the ready to run PC executable. If
  1299. Xyou have the nmake utility, the makefile included in the zip archive
  1300. Xwill compile and link astrolog 2.40 on a PC, with flags set properly
  1301. Xand all. I compiled under the Large memory model, with hex 4000 bytes
  1302. Xof stack space. The default directory in the ready to run PC
  1303. Xexecutable is set to C:\ASTROLOG. The other compile time defaults are
  1304. Xset to my own location, but you can easily override them with your
  1305. Xown values using the astrolog.dat file.
  1306. X
  1307. X     It is possible to easily compile Astrolog on a VMS system, even
  1308. Xwith X windows. Max Calvani was kind enough to give me the following
  1309. Xcom file to automatically compile and link Astrolog for VMS. This
  1310. Xshould work with version 3.00, but since I don't have access to a VMS
  1311. Xsystem I can't try it out myself. Here it is anyway:
  1312. X
  1313. X---- BEGIN INCLUDED FILE COMPILE.COM CUT HERE ----
  1314. X$ set ver
  1315. X$ define X11 decw$include
  1316. X$ CC CHARTS
  1317. X$ CC DATA
  1318. X$ CC DRIVER
  1319. X$ CC FORMULAS
  1320. X$ CC GENERAL
  1321. X$ CC OPTIONS
  1322. X$ CC XCHARTS
  1323. X$ CC XDATA
  1324. X$ CC XDRIVER
  1325. X$ CC XGENERAL
  1326. X$ link/exe=astrolog.exe -
  1327. X    CHARTS.obj, -
  1328. X    DATA.obj, -
  1329. X    DRIVER.obj, -
  1330. X    FORMULAS.obj, -
  1331. X    GENERAL.obj, -
  1332. X    OPTIONS.obj, -
  1333. X    XCHARTS.obj, -
  1334. X    XDATA.obj, -
  1335. X    XDRIVER.obj, -
  1336. X    XGENERAL.obj, -
  1337. X    sys$input/opt
  1338. Xsys$share:decw$xlibshr/share
  1339. X$ set nover
  1340. X$ exit
  1341. X---- END INCLUDED FILE COMPILE.COM CUT HERE ----
  1342. X
  1343. X--
  1344. X
  1345. X     The astrological "chart" for this version 3.00 of the program
  1346. Xitself (and hence the "default" chart in memory one gets if they
  1347. Xstart up with a non informational chart and then revert to one
  1348. Xrequiring information, e.g. -XW followed by pressing 'V') is set for
  1349. Xthe Vernal Equinox at 6:43am PST (8 hr before GMT) on March 20, 1993
  1350. Xin Seattle, WA (122W20 47N36).
  1351. X
  1352. X--
  1353. X
  1354. X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
  1355. X+     Walter D. "Cruiser1" Pullen    |    astrolog@byron.u.washington.edu     +
  1356. X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
  1357. END_OF_FILE
  1358. if test 31731 -ne `wc -c <'Update.300'`; then
  1359.     echo shar: \"'Update.300'\" unpacked with wrong size!
  1360. fi
  1361. # end of 'Update.300'
  1362. fi
  1363. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  1364.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  1365. else
  1366. echo shar: Extracting \"'MANIFEST'\" \(1780 characters\)
  1367. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  1368. X   File Name        Archive #    Description
  1369. X-----------------------------------------------------------
  1370. X README                     1    Astrolog and instructions on how to compile it.
  1371. X Makefile                   1    Unix Makefile to easily compile program.
  1372. X makefile.pc                1    Makefile for PC's with nmake utility.
  1373. X astrolog.dat               1    Data file with default program parameters.
  1374. X astrolog.h                 1    Compile time options and program definitions.
  1375. X Update.300                 1    New features and bug fixes in version 3.00.
  1376. X data.c                     2    Table information and variable definitions.
  1377. X driver.c                   2    Main program to connect all the other parts.
  1378. X charts.c                   3    Routines to display charts on text screen.
  1379. X xdata.c                    3    Graphic table information and variables.
  1380. X general.c                  4    Simple program functions and generic routines.
  1381. X options.c                  4    Main display and search routines in program.
  1382. X xgeneral.c                 5    Graphic and bitmap drawing primitives.
  1383. X xdriver.c                  5    High level graphics dispatch and interaction.
  1384. X xcharts.c                  6    Routines to draw graphic charts in X windows.
  1385. X formulas.c                 7    Planetary and house position calculations.
  1386. X Helpfile.p3                7    Part 3/3 of the file below. (See the README).
  1387. X Helpfile.p1                8    List of Astrolog features and how to use them.
  1388. X Helpfile.p2                9    Part 2/3 of the above file. (See the README).
  1389. X History.p1                10    Features and bug fixes in previous versions.
  1390. X History.p2                11    Part 2/3 of the above file. (See the README).
  1391. X History.p3                12    Part 3/3 of the above file. (See the README).
  1392. X MANIFEST                   1    This shipping list
  1393. END_OF_FILE
  1394. if test 1780 -ne `wc -c <'MANIFEST'`; then
  1395.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  1396. fi
  1397. # end of 'MANIFEST'
  1398. fi
  1399. echo shar: End of archive 1 \(of 12\).
  1400. cp /dev/null ark1isdone
  1401. MISSING=""
  1402. for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
  1403.     if test ! -f ark${I}isdone ; then
  1404.     MISSING="${MISSING} ${I}"
  1405.     fi
  1406. done
  1407. if test "${MISSING}" = "" ; then
  1408.     echo You have unpacked all 12 archives.
  1409.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1410. else
  1411.     echo You still need to unpack the following archives:
  1412.     echo "        " ${MISSING}
  1413. fi
  1414. ##  End of shell archive.
  1415. exit 0
  1416.  
  1417. exit 0 # Just in case...
  1418.