home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-05-18 | 60.5 KB | 1,418 lines |
- Newsgroups: comp.sources.misc
- From: astrolog@u.washington.edu (Astrolog)
- Subject: v37i070: astrolog - Generation of astrology charts v3.05, Part01/12
- Message-ID: <1993May19.061309.11039@sparky.imd.sterling.com>
- X-Md4-Signature: 14b2d788fc5c1f68d733deb85252760a
- Date: Wed, 19 May 1993 06:13:09 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: astrolog@u.washington.edu (Astrolog)
- Posting-number: Volume 37, Issue 70
- Archive-name: astrolog/part01
- Environment: UNIX, DOS, VMS
- Supersedes: astrolog: Volume 30, Issue 62-69
-
- Astrolog (pronounced astro-log; astro as in astronomy, log as is
- logarithm) is an astrology calculation program written in C. Its main
- function is to calculate birthcharts and give accurate positions of
- planets, various asteroids, stars, and house positions at particular
- times. It supports different display formats, forms of chart
- comparisons, some interpretations, and other astrology related
- functions. It creates bitmap charts and has animation for X11 and PC's.
-
- Astrolog works best when run on a Unix system with X windows, or on a
- 386 or better PC with VGA. However, neither X11 nor VGA, or even Unix
- or a PC, are needed in order to be able to run the program. The added
- graphics features can easily be compiled out for those who don't have
- them, and various users have gotten this and previous versions of the
- program compiled properly on VMS and other systems with hardly any
- modifications necessary.
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 12)."
- # Contents: README Makefile makefile.pc astrolog.dat astrolog.h
- # Update.300 MANIFEST
- # Wrapped by pul@hardy on Sun May 16 22:23:14 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README'\"
- else
- echo shar: Extracting \"'README'\" \(4263 characters\)
- sed "s/^X//" >'README' <<'END_OF_FILE'
- X************************************************************************
- X
- XAstrolog version 3.05 (May 1993)
- X
- XAstrolog (pronounced astro-log; astro as in astronomy, log as is
- Xlogarithm) is an astrology calculation program written in C. Its main
- Xfunction is to calculate birthcharts and give accurate positions of
- Xplanets, various asteroids, stars, and house positions at particular
- Xtimes. It supports different display formats, forms of chart
- Xcomparisons, some interpretations, and other astrology related
- Xfunctions. It creates bitmap charts and has animation for X11 and PC's.
- X
- XAstrolog works best when run on a Unix system with X windows, or on an
- X386 or better PC with VGA. However, neither X11 nor VGA, or even Unix
- Xor a PC, are needed in order to be able to run the program. The added
- Xgraphics features can easily be compiled out for those who don't have
- Xthem, and various users have gotten this and previous versions of the
- Xprogram compiled properly on VMS and other systems with hardly any
- Xmodifications necessary.
- X
- XIMPORTANT: The planetary calculation routines used in this program
- Xhave been Copyrighted and the core of this program is basically a
- Xconversion to C of the routines created by James Neely as listed in
- XMichael Erlewine's 'Manual of Computer Programming for Astrologers',
- Xavailable from Matrix Software. The copyright gives us permission to
- Xuse the routines for our own purposes but not to sell them or profit
- Xfrom them in any way.
- X
- XIN ADDITION: the graphics database and chart display routines used in
- Xthis program are Copyright (C) 1991-1993 by Walter D. Pullen. Permission
- Xis granted to freely use and distribute these routines provided one
- Xdoesn't sell, restrict, or profit from them in any way. Modification
- Xis allowed provided these notices remain with any altered or edited
- Xversions of the program.
- X
- XTo compile this version of the program, first edit the top of the file
- Xastrolog.h, putting in your own appropriate values for the default
- Xlongitude, latitude, time zone, and default chart input file search
- Xdirectory. (In the same manner, also edit the default parameter values
- Xin the file astrolog.dat.) Also comment out any of the #defines which
- Xset various features that aren't valid on your system, such as the
- XX11, TIME, and SWITCHES variables, and you may want to edit other
- X#defines variables such as DEFAULT_SYSTEM to your tastes. Then, for
- XUnix systems, run the command 'make' on the Makefile, or on some PC's,
- X"nmake" will compile it assuming the "makefile.pc" file is renamed to
- Xbe "makefile". If these don't work, you can always compile by hand:
- X"cc -O -c *.c; cc -o astrolog *.o -lm -lX11" will do it on Unix; just
- Xmake sure to compile each source file and link them together at the
- Xend with the math and if applicable, the X11 or graphics libraries.
- X
- XNote: The file 'Helpfile' that comes with this distribution is a 150K
- Xfile that lists lots of information about the program and how to use
- Xthe different features and options, which one will want to read. Due
- Xto its length, this file had to be split into three parts:
- XHelpfile.p1, Helpfile.p2, and Helpfile.p3 - You will want to
- Xconcatenate these parts back together again. Use a favorite editor to
- Xdo this, or if you are on a Unix system, do the command: cat
- XHelpfile.p1 Helpfile.p2 Helpfile.p3 > Helpfile. The file 'History' is
- Xalso a lengthy file split into three parts which should be recombined
- Xin the same manner. The History file describes previous versions of
- Xthe program and is mostly for those with previous releases who have
- Xupgraded and want to see what new features have been added lately.
- X
- XEnjoy the program! May you have as much fun with it as I have. Send
- Xany comments to my e-mail address below.
- X
- X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
- X+ Walter D. "Cruiser1" Pullen | astrolog@byron.u.washington.edu +
- X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
- X+ "Who am I, What am I? As I am, I am not. But as we are, I AM. And to +
- X# you my creation, My Perfect Love is your Perfect Freedom. And I will be #
- X+ with you forever and ever, until the End, and then forever more." - GOD +
- X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
- END_OF_FILE
- if test 4263 -ne `wc -c <'README'`; then
- echo shar: \"'README'\" unpacked with wrong size!
- fi
- # end of 'README'
- fi
- if test -f 'Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile'\"
- else
- echo shar: Extracting \"'Makefile'\" \(775 characters\)
- sed "s/^X//" >'Makefile' <<'END_OF_FILE'
- X# Makefile for Unix Astrolog version 3.05 (astrolog@byron.u.washington.edu)
- X# First created 11/21/1991
- X#
- X# This Makefile is included only for convenience. One could easily compile
- X# Astrolog on a Unix system by hand with the command:
- X# % cc -c *.c; cc -o astrolog *.o -lm -lX11
- X#
- X# Generally, all that needs to be done to compile once astrolog.h has been
- X# edited, is compile each source file, and link them together with the math
- X# library, and if applicable, the main X library.
- X#
- XNAME = astrolog
- XOBJ = data.o general.o formulas.o charts.o options.o driver.o \
- X xdata.o xgeneral.o xcharts.o xdriver.o
- X# If you don't have X windows, delete the "-lX11" part from the line below:
- XLIBS = -lm -lX11
- XCFLAGS = -O
- X
- Xastrolog:: $(OBJ)
- X cc -o $(NAME) $(OBJ) $(LIBS)
- X strip $(NAME)
- X#
- END_OF_FILE
- if test 775 -ne `wc -c <'Makefile'`; then
- echo shar: \"'Makefile'\" unpacked with wrong size!
- fi
- # end of 'Makefile'
- fi
- if test -f 'makefile.pc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.pc'\"
- else
- echo shar: Extracting \"'makefile.pc'\" \(821 characters\)
- sed "s/^X//" >'makefile.pc' <<'END_OF_FILE'
- X# Makefile for PC Astrolog version 3.05 (astrolog@byron.u.washington.edu)
- X# Created for Microsoft nmake utility.
- X# First created 2/9/1993
- X#
- X# Generally, all that needs to be done to compile once astrolog.h has been
- X# edited, is compile each source file, and link them together with the math
- X# library, and if applicable, the Microsoft C graphics library.
- X#
- X#CC = cl /AL /f
- XCC = cl /AL /Ot /Oe /Ol /Op /Gs /Gr
- X
- Xastrolog.exe : \
- X data.obj general.obj formulas.obj charts.obj options.obj driver.obj \
- X xdata.obj xgeneral.obj xcharts.obj xdriver.obj
- X# We are compiling in Large memory model with 16,384 bytes for stack storage.
- X# Delete graphics.lib from line below if MSC not defined.
- X link /E /ST:0x4000 data general formulas charts options driver \
- X xdata xgeneral xcharts xdriver, astrolog.exe, NUL, graphics.lib;
- X#
- X
- END_OF_FILE
- if test 821 -ne `wc -c <'makefile.pc'`; then
- echo shar: \"'makefile.pc'\" unpacked with wrong size!
- fi
- # end of 'makefile.pc'
- fi
- if test -f 'astrolog.dat' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'astrolog.dat'\"
- else
- echo shar: Extracting \"'astrolog.dat'\" \(1261 characters\)
- sed "s/^X//" >'astrolog.dat' <<'END_OF_FILE'
- XAstrolog 3.05 default parameter file astrolog.dat:
- X
- XDEFAULT TIME AND PLACE:
- XTime zone = 8
- XLongitude = 122.20
- XLatitude = 47.36
- X
- XDEFAULT VALUES:
- XNo. Aspects = 5
- XHouse system = 0
- XAnsi text = 0
- XDivisions = 24
- XWheel rows = 4
- XSmart cusps = 0
- X80 columns = 0
- X
- XDEFAULT RESTRICTIONS:
- XRow 1: Planets; Row 2: Minor planets. =
- X0 0 0 0 0 0 0 0 0 0
- X0 0 0 0 0 0 0 0 0 0
- X
- XDEFAULT TRANSIT RESTRICTIONS:
- XRow 1: Planets; Row 2: Minor planets. =
- X0 1 0 0 0 0 0 0 0 0
- X0 0 0 0 0 0 0 0 0 0
- X
- XDEFAULT ASPECT ORBS:
- XRow 1: Majors; Row 2: Minors; Row 3; Obscure. =
- X7 7 7 7 6
- X3 3 3 3 2 2
- X1 1 1 1 1 1 1
- X
- XDEFAULT MAX PLANET ASPECT ORBS:
- XRow 1: Planets; Row 2: Minor planets. =
- X360 360 360 360 360 360 360 360 360 360
- X360 360 360 360 360 2 2 360 360 2
- X
- XDEFAULT PLANET ASPECT ORB ADDITIONS:
- XRow 1: Planets; Row 2: Minor planets. =
- X1 1 0 0 0 0 0 0 0 0
- X0 0 0 0 0 0 0 0 0 0
- X
- XDEFAULT INFLUENCES:
- XIn ruling sign = 20
- XExalted in sign = 10
- XIn ruling house = 15
- XExalted in house = 5
- XRow 1: Planets; Row 2: Minor planets; Row 3: Houses;
- XRow 4: Major aspects; Row 5: Minor aspects; Row 6; Obscure aspects. =
- X30 25 10 10 10 10 10 10 10 10
- X 5 5 5 5 5 5 5 15 20 5
- X20 0 0 10 0 0 5 0 0 15 0 0
- X1.0 0.8 0.8 0.6 0.6
- X 0.4 0.4 0.2 0.2 0.2 0.2
- X 0.1 0.1 0.1 0.1 0.1 0.1 0.1
- X
- X/* astrolog.dat */
- END_OF_FILE
- if test 1261 -ne `wc -c <'astrolog.dat'`; then
- echo shar: \"'astrolog.dat'\" unpacked with wrong size!
- fi
- # end of 'astrolog.dat'
- fi
- if test -f 'astrolog.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'astrolog.h'\"
- else
- echo shar: Extracting \"'astrolog.h'\" \(15122 characters\)
- sed "s/^X//" >'astrolog.h' <<'END_OF_FILE'
- X/*
- X** Astrolog (Version 3.05) File: astrolog.h
- X**
- X** By Walter D. Pullen (astrolog@byron.u.washington.edu)
- X** Initially programmed 8/28,30, 9/10,13,16,20,23, 10/3,6,7, 11/7,10,21/1991.
- X** Last change made 5/9/1993.
- X**
- X** IMPORTANT: The planetary calculation routines used in this program
- X** have been Copyrighted and the core of this program is basically a
- X** conversion to C of the routines created by James Neely as listed in
- X** Michael Erlewine's 'Manual of Computer Programming for Astrologers',
- X** available from Matrix Software. The copyright gives us permission to
- X** use the routines for our own purposes but not to sell them or profit
- X** from them in any way.
- X**
- X** IN ADDITION: the graphics database and chart display routines used in
- X** this program are Copyright (C) 1991-1993 by Walter D. Pullen. Permission
- X** is granted to freely use and distribute these routines provided one
- X** doesn't sell, restrict, or profit from them in any way. Modification
- X** is allowed provided these notices remain with any altered or edited
- X** versions of the program.
- X*/
- X
- X/*
- X** To compile: For most systems, especially Unix based ones, the only changes
- X** that should need to be made to the code are to edit or comment out the 11
- X** #define's below to equal the particulars of your own locale and system:
- X*/
- X
- X#define DEFAULT_LONG 122.20 /* Change these values to the longitude W and */
- X#define DEFAULT_LAT 47.36 /* latitude N of your current location. */
- X /* Use negative values for east/south areas. */
- X#define DEFAULT_ZONE 8.00 /* Change to default time zone of current */
- X /* location in hours before (west of) GMT. */
- X
- X#define DEFAULT_DIR "~/astrolog/"
- X /* Change this string to directory path program */
- X /* should look in for chart files if not in current. */
- X /* For PC users, use two backslashes instead of one */
- X /* forward slash to divide subdirectories. */
- X /* (The above string must end with a slash!) */
- X
- X#define SWITCHES /* Comment out this #define if your system can not handle */
- X /* parameters on the command line (like Mac's, etc.) */
- X#define TIME /* Comment out this #define if your compiler can't take */
- X /* the calls to 'time' or 'localtime' as in time.h */
- X#define GRAPH /* Commant out this #define if you don't want graphics. */
- X#define X11 /* Comment out this #define if you don't have X windows. */
- X/*#define MSC /* Comment out this #define if you don't have access */
- X /* to the Microsoft C PC graphics library as in graph.h. */
- X#define NOPC /* Comment out this #define if you have a PC system. */
- X#define ATOF /* Comment out this #define if you have a system in which */
- X /* atof() isn't defined in stdio.h, such as VMS and NeXT. */
- X
- X/*
- X** Although not necessary, one may like to change some of the values below:
- X** These constants affect some of the default parameters, etc.
- X*/
- X
- X#define DEFAULT_INFOFILE "astrolog.dat" /* Name of file to look in for */
- X /* default parameters (which will */
- X /* override the values here.) */
- X#define DEFAULT_SYSTEM 0 /* Normally, Placidus houses are used (unless */
- X /* user specifies otherwise). If you want a */
- X /* different default system, change this numb */
- X /* to value from 0..9 (values same as in -c). */
- X#define DEFAULT_ASPECTS 5 /* Default number of aspects to consider. */
- X
- X#define WHEELCOLS 15 /* Affects the width of each house in wheel display */
- X#define WHEELROWS 11 /* Max no. of objects that can be in a wheel house. */
- X#define MAXINDAY 100 /* Max number of aspects or transits displayable. */
- X#define MAXCROSS 500 /* Max number of latitude crossings displayable. */
- X#define DIVISIONS 24 /* Greater numbers == more accuracy but slower */
- X /* calculation, of exact aspect and transit times. */
- X
- X#ifdef GRAPH
- X#define BITMAPMODE 'C' /* For graphics, this char affects how bitmaps are */
- X /* written. 'N' is written like with the 'bitmap' */
- X /* program, 'C' is compacted somewhat (files have */
- X /* less spaces), and 'V' is compacted even more. */
- X /* 'A' means write as rectangular Ascii text file. */
- X /* 'B' means write as Windows bitmap (.bmp) file. */
- X#ifdef NOPC
- X#define BITMAPX 1168 /* Maximum window size allowed (standard) */
- X#define BITMAPY 1024
- X#else
- X#define BITMAPX 728 /* Maximum window size allowed (for PC's) */
- X#define BITMAPY 720
- X#endif
- X#define BITMAPX1 180 /* Minimum window size allowed */
- X#define BITMAPY1 180
- X#ifdef NOPC
- X#define DEFAULTX 600 /* Default window size (standard) */
- X#define DEFAULTY 600
- X#else
- X#define DEFAULTX 480 /* Default window size (for PC's) */
- X#define DEFAULTY 480
- X#endif
- X#define CELLSIZE 14 /* Size for each cell in the aspect grid */
- X#define DEFORB 7.0 /* Min distance glyphs can be from each other */
- X#endif
- X
- X#define BOXH (ansi ? 196 : '-') /* Ansi and Ascii characters used to */
- X#define BOXV (ansi ? 179 : '|') /* print text charts. */
- X#define BOXC (ansi ? 197 : '|')
- X#define BOXNW (ansi ? 218 : '+')
- X#define BOXNE (ansi ? 191 : '+')
- X#define BOXSW (ansi ? 192 : '+')
- X#define BOXSE (ansi ? 217 : '+')
- X#define BOXJN (ansi ? 193 : '-')
- X#define BOXJS (ansi ? 194 : '-')
- X#define BOXJW (ansi ? 180 : '|')
- X#define BOXJE (ansi ? 195 : '|')
- X#define DEGR1 (ansi ? 248 : ',')
- X#define DEGR2 (ansi ? 248 : ' ')
- X
- X
- X/*
- X** One shouldn't need to change anything below this line to compile.
- X*/
- X
- X#include <stdio.h>
- X#ifndef ATOF
- X#include <stdlib.h>
- X#endif
- X#include <math.h>
- X#ifndef NOPC
- X#include <malloc.h>
- X#endif
- X#ifdef TIME
- X#include <time.h>
- X#endif
- X#ifdef X11
- X#include <X11/Xlib.h>
- X#include <X11/Xutil.h>
- X#endif
- X#ifdef MSC
- X#include <graph.h>
- X#include <conio.h>
- X#endif
- X
- X/*
- X** Make sure only legal combinations of the graphics options are active.
- X*/
- X
- X#ifdef X11
- X#define WIN
- X#ifndef GRAPH
- X"X11 implies GRAPH"
- X#endif
- X#ifdef MSC
- X"X11 implies not MSC"
- X#endif
- X#ifndef NOPC
- X"X11 implies NOPC"
- X#endif
- X#endif
- X#ifdef MSC
- X#define WIN
- X#ifndef GRAPH
- X"MSC implies GRAPH"
- X#endif
- X#ifdef X11
- X"MSC imples not X11"
- X#endif
- X#ifdef NOPC
- X"MSC imples not NOPC"
- X#endif
- X#endif
- X
- X
- X/*
- X*******************************************************************************
- X** Constants
- X*******************************************************************************
- X*/
- X
- X#ifndef FALSE
- X#define FALSE 0
- X#endif
- X#ifndef TRUE
- X#define TRUE 1
- X#endif
- X#define APPNAME "Astrolog"
- X#define VERSION "3.05"
- X#define DATE "April 1993"
- X#define ADDRESS "astrolog@byron.u.washington.edu"
- X#define OFF 0
- X#define ON 1
- X#define STRING 80
- X#define PI 3.14159265358979323846
- X#define DEGREES 360.0
- X#define DEGTORAD (180.0/PI)
- X#define SD2000 -24.736467
- X#define SCALE (scale/100)
- X#define ESCAPE '\33'
- X#define SIGNS 12
- X#define SYSTEMS 10
- X#define ASPECTS 18
- X#define ASPECTI 11
- X#define FONTX 6
- X#define FONTY 10
- X
- X/* Object array index values */
- X
- X#define PLANETS 14
- X#define THINGS 16
- X#define OBJECTS 20
- X#define URANIANS 8
- X#define STARS 47
- X#define BASE 32
- X#define TOTAL 79
- X#define C_LO 21
- X#define C_HI 24
- X#define U_LO 25
- X#define U_HI 32
- X#define S_LO 33
- X#define S_HI 79
- X
- X/* Bit mask values for chart specification */
- X
- X#define DASHv 0x1
- X#define DASHw 0x2
- X#define DASHg 0x4
- X#define DASHm 0x8
- X#define DASHZ 0x10
- X#define DASHS 0x20
- X#define DASHj 0x40
- X#define DASHL 0x80
- X#define DASHd 0x100
- X#define DASHE 0x200
- X#define DASHT 0x400
- X#define DASHe 0x3FF
- X
- X/* Bit mask values for subchart specification */
- X
- X#define DASHv0 0x1
- X#define DASHw0 0x2
- X#define DASHg0 0x4
- X#define DASHga 0x8
- X#define DASHm0 0x10
- X#define DASHZ0 0x20
- X#define DASHj0 0x40
- X#define DASHL0 0x80
- X#define DASHdm 0x100
- X#define DASHEy 0x200
- X#define DASHXW0 0x400
- X#define DASHXP0 0x800
- X
- X/* Bit mask values for option specification */
- X
- X#define DASHs 0x1
- X#define DASHC 0x2
- X#define DASHu 0x4
- X#define DASHf 0x8
- X#define DASH3 0x10
- X#define DASHG 0x20
- X#define DASHo 0x40
- X#define DASHX 0x80
- X#define DASHs0 0x100
- X#define DASHp0 0x200
- X#define DASHo0 0x400
- X
- X/* Relationship chart modes */
- X
- X#define DASHr 1
- X#define DASHrc 2
- X#define DASHrm 3
- X#define DASHrd 4
- X#define DASHrb 5
- X#define DASHr0 -1
- X
- X/* Ansi colors */
- X
- X#define BLACK 0
- X#define MAROON 1
- X#define DKGREEN 2
- X#define ORANGE 3
- X#define DKBLUE 4
- X#define PURPLE 5
- X#define DKCYAN 6
- X#define LTGRAY 7
- X#define DKGRAY 8
- X#define RED 9
- X#define GREEN 10
- X#define YELLOW 11
- X#define BLUE 12
- X#define MAGENTA 13
- X#define CYAN 14
- X#define WHITE 15
- X
- X
- X/*
- X*******************************************************************************
- X** Macro functions
- X*******************************************************************************
- X*/
- X
- X#define LOBYTE(A) ((byte) (A))
- X#define HIBYTE(A) ((byte) ((word)(A) >> 8 & 0xFF))
- X#define LOWORD(A) ((word) (A))
- X#define HIWORD(A) ((word) ((dword)(A) >> 16 & 0xFFFF))
- X#define MAKEWORD(L, H) ((word)LOBYTE(L) | (byte)(H) << 8)
- X#define MAKELONG(L, H) ((dword)LOWORD(L) | (word)(H) << 16)
- X#define RGB(R, G, B) ((dword)((byte)(R) | (word)(G)<<8 | (dword)(byte)(B)<<16))
- X#define RGBR(R) LOBYTE(R)
- X#define RGBG(G) HIBYTE(G)
- X#define RGBB(B) ((byte) ((dword)(B) >> 16 & 0xFF))
- X
- X#define MAX(A, B) ((A) > (B) ? (A) : (B))
- X#define MIN(A, B) ((A) < (B) ? (A) : (B))
- X#define FRACT(A) ((A) - floor(A))
- X#define CAP(B) ((B) >= 'a' && (B) <= 'z' ? (B) - 'a' + 'A' : (B))
- X#define DTOR(A) ((A)/DEGTORAD)
- X#define RTOD(A) ((A)*DEGTORAD)
- X#define ASIN(A) ((A)*(A) == 1.0 ? (A)*PI/2.0 : atan((A)/sqrt(1.0-(A)*(A))))
- X#define ACOS(A) ((A) == 0.0 ? 0.0 : atan(sqrt(1.0-(A)*(A))/(A)))
- X#define SIND(A) sin((A)/DEGTORAD)
- X#define COSD(A) cos((A)/DEGTORAD)
- X#define SWAP(A, B) (A)^=(B)^=(A)^=(B)
- X#define SORT(A, B) if ((A) > (B)) SWAP(A, B)
- X
- X#define SIGNAM(A) signname[A][0], signname[A][1], signname[A][2]
- X#define OBJNAM(A) objectname[A][0], objectname[A][1], objectname[A][2]
- X#define dabs(A) fabs(A)
- X#define ecltoequ(Z, L) CoorXform(Z, L, DTOR( 23.44578889))
- X#define equtoecl(Z, L) CoorXform(Z, L, DTOR(-23.44578889))
- X#define equtolocal(Z, L, T) CoorXform(Z, L, T)
- X
- X#ifdef NOPC
- X#define DASH '-'
- X#define PTR *
- X#define Allocate(P, B, T) (P) = (T) malloc(B)
- X#define Deallocate(P) free(P)
- X#else
- X#define DASH '/'
- X#define PTR huge *
- X#define Allocate(P, B, T) (P) = (T) halloc((long)(B), sizeof(byte))
- X#define Deallocate(P) hfree(P)
- X#endif
- X
- X
- X/*
- X*******************************************************************************
- X** Type definitions
- X*******************************************************************************
- X*/
- X
- X#define byte unsigned char
- X#define word unsigned short
- X#define dword unsigned long
- X#define real double
- X
- Xtypedef struct _gridstruct {
- X byte n[TOTAL+1][TOTAL+1];
- X short v[TOTAL+1][TOTAL+1];
- X} gridstruct;
- X
- X#ifdef GRAPH
- X#define color unsigned long
- X#define bit color
- X
- Xtypedef struct _circlestruct {
- X real x[360+1];
- X real y[360+1];
- X} circlestruct;
- X
- X#ifdef NOPC
- Xtypedef struct _bitmapstruct {
- X byte m[BITMAPX >> 1][BITMAPY];
- X} bitmapstruct;
- Xtypedef bitmapstruct *bitmap;
- X#else
- Xtypedef byte huge *bitmap;
- X#endif
- X
- X#ifdef X11
- X#define Xcolor(A) XSetForeground(disp, gc, rgbind[(A)])
- X#endif
- X#ifdef MSC
- X#define Xcolor(A) _setcolor((short)(A))
- X#endif
- X#endif
- X
- X
- X/*
- X*******************************************************************************
- X** External declarations
- X*******************************************************************************
- X*/
- X
- X/* From data.c */
- X
- Xextern int total, aspects, universe, centerplanet,
- X housesystem, ansi, divisions, smartcusp, column80,
- X todisplay, exdisplay, operation, relation,
- X interpret, progress, multiplyfactor, onasc,
- X wheelrows, graphstep, autom;
- Xextern char *filename, *filename2, *appname, string[];
- Xextern real progday, defzone, deflong, deflat, modulus;
- Xextern real Mon, Day, Yea, Tim, Zon, Lon, Lat,
- X M, D, Y, F, X, L5, LA,
- X SD, Mon2, Yea2, Delta, T, JD, Jdp,
- X MC, Asc, Vtx;
- X
- Xextern real planet[], planetalt[], house[], ret[],
- X spacex[], spacey[], spacez[], force[],
- X planet1[], planet2[], planetalt1[], planetalt2[],
- X house1[], house2[], ret1[], ret2[];
- Xextern gridstruct PTR grid;
- Xextern byte inhouse[], inhouse1[], inhouse2[];
- Xextern int starname[], objectansi[];
- X
- Xextern byte ignore[], ignore2[], errorcount[];
- Xextern char *signname[], *signabbrev[], *signenglish[], *housetradition[],
- X *objectname[], *systemname[], *aspectname[], *aspectabbrev[], *aspectglyph[],
- X *element[], *mode[], *post[], *monthname[], *dayname[];
- Xextern real aspectangle[], aspectorb[], planetorb[], planetadd[],
- X starbright[], planetdata[], stardata[];
- Xextern int ruler1[], ruler2[], exalt[], rules[],
- X mainansi[], rainbowansi[], elemansi[], aspectansi[];
- Xextern real objectinf[], houseinf[], aspectinf[];
- Xextern char *mindpart[], *description[], *desire[], *lifearea[],
- X *interact[], *therefore[], *modifier[3][11];
- X
- X/* From general.c */
- X
- Xextern void SwapReal(), Terminate(), TooFew(), BadVal(), BadVal2(), PrintTab(),
- X AnsiColor(), PrintMinute(), PrintAltitude(), InputData();
- Xextern int StringLen(), Mod12(), DayInMonth(), ReadWorldData();
- Xextern real Sgn(), DecToDeg(), Mod(), MinDistance(), Midpoint(),
- X Orb(), ReadPlanetData(), ReadStarData();
- Xextern char Dignify(), *StringLocation();
- X
- X/* From formulas.c */
- X
- Xextern real MdyToJulian(), ProcessInput(), CastChart();
- Xextern void JulianToMdy(), CoorXform(), HousePlace(), CastStar();
- X
- X/* From charts.c */
- X
- Xextern void ChartLocation(), ChartGrid(), DisplayGrands(), ChartWheel(),
- X ChartMidpoint(), ChartHorizon(), ChartSpace(), ChartInfluence(),
- X ChartAstroGraph();
- X
- X/* From options.c */
- X
- Xextern void CreateGrid(), CreateGridRelation(), CastRelation(),
- X DisplayTransit(), DisplayEphemeris(), PrintChart();
- X
- X#ifdef GRAPH
- X/* From xdata.c */
- X
- X#ifdef X11
- Xextern Colormap cmap;
- Xextern Display *disp;
- Xextern GC gc, pmgc;
- Xextern KeySym key;
- Xextern Pixmap pixmap, icon;
- Xextern Window window, root;
- Xextern XEvent event;
- Xextern XSizeHints hint;
- Xextern int screen, depth;
- Xextern char xkey[];
- Xextern char icon_bits[];
- Xextern char *rgbname[];
- Xextern color rgbind[];
- X#endif
- Xextern bitmap bm;
- Xextern color fg, bg, rgb[], rgbbmp[], maincolor[], rainbowcolor[],
- X elemcolor[], aspectcolor[], objectcolor[], hilite, gray, on, off;
- Xextern char modex, bitmapmode, *dispname, outputfile[];
- Xextern int xmono, xcolor, xroot, xreverse, xbitmap, xtext, bonus, label, xeast,
- X turtlex, turtley, scale, chartx, charty, degree, xnow;
- Xextern real tilt;
- X
- Xextern char *signdraw[], *objectdraw[], *housedraw[], *aspectdraw[],
- X *asciidraw[], *worlddata[];
- X
- X/* From xcharts.c */
- X
- Xextern void XChart();
- X
- X/* From xgeneral.c */
- X
- Xextern void DrawPoint(), DrawSpot(), DrawBlock(), DrawBox(),
- X DrawLine(), DrawWrap(), DrawClip(), DrawTurtle();
- X
- X/* From xdriver.c */
- X
- Xextern void XDisplaySwitches(), XAction();
- Xextern int XProcess();
- X#endif
- X
- X/* From driver.c */
- X
- Xextern void Prints();
- X
- X/* astrolog.h */
- END_OF_FILE
- if test 15122 -ne `wc -c <'astrolog.h'`; then
- echo shar: \"'astrolog.h'\" unpacked with wrong size!
- fi
- # end of 'astrolog.h'
- fi
- if test -f 'Update.300' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Update.300'\"
- else
- echo shar: Extracting \"'Update.300'\" \(31731 characters\)
- sed "s/^X//" >'Update.300' <<'END_OF_FILE'
- X--
- X
- X This file describes version 3.00 of the Astrolog computer
- Xprogram for astrology. Described are new features added on to the
- Xprevious release, version 2.40, posted January, 1993, and bug fixes
- Xand other changes made. Versions 1.00 through 1.40 were the first
- Xones, and established Astrolog as a calculation and text chart
- Xgenerator. Versions 2.00 through 2.40 saw graphics for X windows and
- Xmore advanced capabilities. Now, with version 3.00, we take another
- Xstep, including our long awaited graphics for PC systems as well.
- X
- X If you have used or are familiar with previous versions of
- XAstrolog, to avoid confusion you may want to read the section on
- Xchanges to old features made in this release, probably before looking
- Xat the new features section. In addition, if you aren't familiar with
- Xprevious versions of the program, you will want to read the
- Xcomprehensive Helpfile for version 2.40, so you know what the 3.00
- Xfeature enhancements are referring to.
- X
- X
- X#################### PC GRAPHICS ####################
- X
- X The main things added to version 3.00 are our long awaited
- Xgraphics for PC's! PC graphics now look and feel and are displayed
- Xjust like the X window graphics already in place. When compiling, one
- Xhas a choice between four options: (1) choose no graphics abilities
- Xat all, (2) compile so that graphic chart bitmaps can be generated
- Xand output to a file, (3) compile allowing file graphics in addition
- Xto direct screen graphics in X windows, and now (4) compile with file
- Xgraphics and direct graphics on the screen of a PC. The addition of
- XPC graphics in no way inhibit or affect the X window graphics already
- Xin place; it's merely a matter of which compile time options are set.
- XUnix users don't need to look at this section.
- X
- X Astrolog uses the Microsoft PC graphics library as defined in
- Xthe file graph.h included with their C7 "C" language compiler. This
- Xfile and the graphics.lib library is needed in order to be able to
- Xcompile with these graphics options set, just as the X window
- Xlibraries are needed to compile with those graphics included. If
- Xunavailable, one can still access these PC graphics with the library
- Xlinked in, in the already compiled executable posted.
- X
- X PC Astrolog is a DOS program and should be run from a DOS
- Xprompt, outside of any Windows system. To generate a graphics chart
- Xinstead of a text one, include the -X switch just as one would do to
- Xbring up an X window. The expected graphic chart will be displayed on
- Xthe screen unless the -Xb write bitmap to file switch is in effect.
- XThe colors chosen for the graphics are basically identical to those
- Xchosen in X window charts, and both of these in turn are now based on
- Xthe Ansi colors used in the Ansi text charts.
- X
- X Now, there are many various types of PC monitors and
- Xresolutions. Astrolog will automatically try to determine and pick
- Xthe highest resolution mode available on your system, so this need
- Xnot be worried about.
- X
- X The PC Astrolog charts may be animated in all the various ways,
- Xand the animation will usually be flicker free! Now, PC's do have
- Xlimited memory, therefore there might not be room for more than one
- Xpage of graphics at the highest resolution. Hence, animation at the
- Xhighest (default) mode, may flicker; however, graphics at a slightly
- Xlower resolution may take enough less memory to allow enough to do
- Xflicker free animation. A special PC only feature for this has been
- Xadded: Pressing the 'tab' key while the PC graphics are up will try
- Xto pick a lower resolution, where flicker free animation can be done.
- XSpecifically, we'll toggle to a 640x350 EGA mode. On my own system,
- Xthe highest resolution I get is a 640x480 16 color VGA mode, however
- Xthe charts can't be animated without flicker. When I hit 'tab', I
- Xdrop from 480 lines of graphics to 350, but now the animation will be
- Xperfectly smooth. The results with whatever graphics system you have
- Xmay be different.
- X
- X The chart that comes up will use as many pixels as is defined by
- Xthe chart's size as specified with the -Xw and -Xs switches. The 'Q'
- Xchange chart size to square key works just as before. However, on PC
- Xscreens we will try to take in account the pixel size ratio. On EGA
- Xscreens where the pixels are long and narrow, meaning a true "square"
- Xchart looks tall and thin, we compensate by increasing the horizontal
- Xsize of the chart. The 'B' key, which on X window graphics will blast
- Xthe current window contents to the root background, is a meaningless
- Xfeature for a PC. This key, for PC graphics systems, will instead
- Xresize the chart to be the full size of the screen. When the graphics
- Xmode is changed through 'tab', the chart size will be modified to be
- Xthe largest "square" that will fit on the screen (as if the computer
- Xpresses 'B' followed by 'Q' for you.)
- X
- X If the size of the chart is less than the size of the screen, it
- Xwill be displayed centered in the middle of the screen. If however
- Xthe chart size is greater than the screen size, then the chart will
- Xtake up the whole screen, and part of it will be clipped. By default
- Xwe show the upper left corner of the chart if this is the case. Now,
- Xone can define and change which part of the chart gets shown. On PC's
- Xthe meaning of pressing the number keys have been enhanced. Normally,
- Xnumber keys set the animation speed; they still do, but now only when
- Xanimation is actually being done. If not in animation, the number
- Xkeys from 1..9 will define which "quadrant" or area of the chart gets
- Xshown. It's best to think of and use the number pad for this feature
- X(make sure num lock is on!) Pressing the '7' key, i.e. the upper left
- Xnumber on the number pad, will set it so the default upper left part
- Xof the chart is seen. Pressing the '3' key, on the lower right corner
- Xof the pad, will show the lower right corner of charts larger than
- Xthe screen size. Pressing '5' will show the middle area of the chart,
- Xwith equal amounts of the chart clipped from left and right, and top
- Xand bottom. Pressing '6' will show the right end of the chart,
- Xvertically centered on the screen, and so on. Basically, we have a
- Xsimple implementation of something like scroll bars, allowing viewing
- Xof all parts of the "window"! One can generate and display on the
- Xscreen even the largest charts producible with Astrolog. (Bitmap
- Xfiles are still limited to, i.e. will be clipped to, a maximum size
- Xof 728x720 pixels, however). Even on an 640x350 EGA, one can use this
- Xto generate and view all parts of a 300% scaled relationship aspect
- Xgrid (883x883), or even a 300% scaled world map display (1082x545)!
- X
- X
- X#################### NEW FEATURES ####################
- X
- XHere are a list of other features added to this version of the
- Xprogram:
- X
- X1. -I expansion: The -I display an interpretation option has been
- X expanded to allow interpretations of many more kinds of charts to be
- X done. Simply include the -I switch to get an interpretation of any
- X particular type of chart. If Astrolog doesn't support interpretations
- X for it, the normal chart will be shown instead. Before, the only
- X interpretations that could be done were for the standard position
- X listing ("-v -I", formerly -vI) and the standard aspect grid ("-g
- X -I", formerly -gI). Five more interpretations can now be done:
- X
- X "-r0 person1 person2 -g -I" is a legal combination, and will display
- X meanings of aspects between planets in two charts in a relationship
- X aspect grid. "-i person -m0 -I" is legal, and will display the
- X meanings of aspects in a chart; this is like -g -I, but the aspect
- X meanings are printed in sorted order based on how powerful Astrolog
- X thinks each aspect is, so this is probably preferred. "-r0 person1
- X person2 -m0 -I" is legal, and will display the meanings of aspects in
- X a relationship aspect list, like -r0 -g -I, but in the improved
- X sorted order. "-d -I" is legal, and will display the meanings of
- X aspects among transiting planets occurring during a day, as well as
- X of sign and direction changes. "-T -I" is legal, and will display the
- X meanings of aspects from transiting planets to natal ones.
- X
- X2. -Xb expansion: Color bitmap files can now be generated. Before,
- X only black and white charts could be output to a file. By default,
- X all graphic charts will be in color, unless specified otherwise.
- X Color is most useful for the PC bitmaps (-Xbb), although a color
- X bitmap will take up more disk space. X11 bitmap files will be output
- X in monochrome format, since color .xbm files don't exist. A color
- X ascii file (-Xba) will have the color value of each pixel converted
- X to a hexadecimal number, instead of being in the format generated by
- X the Unix bmtoa utility in the case of monochrome charts.
- X
- X3. -j0 option: The -j planet influences in a chart feature has been
- X expanded to include signs as well. Invoke it as -j0 instead of just
- X -j, and in addition to getting the influence of each planet in a
- X chart, one will get the influence of each sign in the chart as well.
- X To determine sign influence, we use the planet powers already
- X determined; a sign gets influence if: (1) There is a planet in it,
- X (2) there is a planet in the house it corresponds to, and (3) if any
- X planet that rules or co-rules it is in the chart. For example, with
- X my 11th house Venus in Sagittarius, for me: (1) Sagittarius gets more
- X power because Venus is in it, (2) Aquarius gets more power because
- X Venus is in the 11th, and (3) Libra and Taurus get power because
- X Venus itself rules these signs. The exact power given is based on the
- X total influence of Venus already determined. Any sign that has over
- X about 175 points or 20% of the total is a really powerful and
- X fundamental part of the psyche. We also sum up the influences of all
- X the signs, displaying the influence of each element as well.
- X
- X4. -RT option: Transiting planets may now be restricted from charts
- X independently of those planets being transited to. In -T charts, the
- X -R option now only affects the natal planets. To restrict transiting
- X planets, one must use the -RT option. The -RT option is exactly like
- X -R, and any subswitches of -R can be used with -RT as long as the 'T'
- X immediately follows the 'R'. For example, -RT by itself restricts
- X transiting asteroids from appearing in -T charts, -RT0 restricts all
- X transiting bodies, -RTu restricts the Uranians, and so on. This is a
- X really useful feature, and allows one to pretty much be able to
- X generate exactly and only those transits one is interested in. For
- X example, if you want to see if anything is transiting your natal
- X Jupiter or natal Saturn this month, do: "astrolog -i yourchart -T 3
- X 1993 -R0 6 7". If you want to see if Chiron is transiting anything
- X this year (excluding asteroids), do: "astrolog -i yourchart -Ty 1993
- X -RT0 11 -R". If you are only interested in transits of outer planets
- X to your Sun or Moon, do: "astrolog -i yourchart -T 3 1993 -RT0 6 7 8
- X 9 10 -R0 1 2", and so on. No more awk scripts or grepping anymore! :)
- X By default, as before, only the transiting Moon is restricted. The
- X default transit restrictions have been added to the astrolog.dat
- X file, and are right after the standard restriction table, both of
- X which may be modified however you please.
- X
- X5. -Tn option: This feature is a quick shorthand way to generate
- X transits for the current month. For example, instead of "astrolog -i
- X chartfile -T 3 1993", one can do "astrolog -i chartfile -Tn". To do
- X transits for the entire current year, invoke it as "-Tny".
- X
- X6. -p0 option: Solar arc progressions are now supported. Before, the
- X only progressions available were secondary progressed charts. Invoke
- X the -p <month> <day> <year> switch as -p0 instead, and a chart will
- X be generated with all planets and house cusps progressed forward an
- X amount equal in degrees to the number of years that have passed
- X between the specified date and the chart in question. The -pd option
- X here specifies the number of days that have to pass per zodiac degree
- X to progress forward; by default this is 365.25. To generate a solar
- X arc chart for the current moment now, invoke the -pn switch as -p0n.
- X
- X7. -r0 -m[0] option: Comparison relationship charts may now be
- X generated for the -m midpoint and -m0 aspect list options. Combining
- X -m with -r0 will yield an ordered list of all midpoints between all
- X combinations of one planet from chart1 and another planet from
- X chart2. Combining -m0 with -r0 will yield a list of all aspects
- X between planets in the two charts, in order based on what Astrolog
- X think their influences are. So, if you really want to know if your
- X Sun widely trining your SO's Moon, will override the effect of your
- X Saturn closely squaring their Mars, do "astrolog -r0 yourchart
- X sochart -m0" and see the influence given to each aspect.
- X
- X8. -qm, -qy options: A quick chart cast for midnight on the first of
- X a month can be generated with the two parameter -qm <month> <year>
- X switch. A chart cast for midnight on the first of January of a year
- X can be generated with the one parameter -qy <year> switch. Both of
- X these use the default time zone and location. These switches are most
- X useful for charts that don't require all the standard information.
- X For example, to get an ephemeris for December, 2000, do "astrolog -qm
- X 12 2000" and avoid having to enter in a day, hour, or location that
- X wouldn't have any effect. These options are in similar to the old -qd
- X <month> <day> <year> switch that will do a chart for noon on the
- X given date, and the -q <month> <day> <year> <time> switch that takes
- X a time as well.
- X
- X9. "Smart cusps" feature: This is a simple yes/no option that will
- X only affect the way -T transit lists are displayed. It can only be
- X set in the astrolog.dat file. If the value there is non-zero, then
- X transits to minor house cusps will be processed in a more intuitive
- X manner. First of all, aspects other than conjunctions or oppositions
- X to minor cusps will be ignored, e.g. a trine to the 11th house is
- X redundant and isn't really useful; we are more interested in the
- X conjunction to the 3rd house cusp. Minor aspects to the Ascendant and
- X Midheaven, and all other objects, are left alone. In addition, with
- X smart cusps active, oppositions to minor house cusps will be printed
- X as conjunctions to the opposing cusp, e.g. instead of "Jupiter Opp
- X 3rd Cusp", we have the more logical "Jupiter Con 9th Cusp". This is
- X just another way to make transits charts clearer and less confusing.
- X
- X10. "80 column clip" feature: This is another yes/no option that can
- X only be set in the astrolog.dat file. If set to non-zero, then we
- X guarantee that no text chart when displayed will overflow 80 columns.
- X By default, with all objects unrestricted, certain charts will have
- X rows more than 80 columns long, breaking up the chart making it very
- X difficult to read. The -r0 -g relationship aspect grid, and the -E
- X ephemeris listing, will normally go beyond the 80th column. With this
- X feature however, these and other charts that can go beyond column 80,
- X such as -L when uranians are unrestricted, will always be displayed
- X on one line, with columns that would go beyond the 80th not getting
- X printed.
- X
- X11. -Xd, -di options: For X windows only, the -Xd <display> switch
- X can be used to change the display to bring the window up on. Before,
- X the X window would always come up on the current display, but now we
- X can do things like "astrolog -Xd machine:0.0" and have the window
- X appear there. In addition, the program will accept this string
- X through the standard "-display" (which can be abbreviated as "-disp"
- X or anything starting with "-di") switch common to most X11
- X applications.
- X
- X12. '0' key: When graphics are up on the screen, pressing this key
- X acts similar to the mode changing keys that switch between the
- X different graphic chart types. When pressed, the state of the program
- X being invoked with -Z vs. -Z0, as well as the state of -XW vs. -XW0,
- X will be reversed. In other words, if I am viewing the -Z -X horizon
- X chart, and I want to see the -Z0 -X sky graphic, then I press '0' to
- X go to it. Similarly, this key will flip me back and forth between the
- X -XW simple rectangular world map display and the -XW0 Mollewide
- X projection graphic. A bit of a hack, but very useful, and the only
- X way to change these suboptions while the program is running.
- X
- X13. -nd, -nm, -ny options: These switches are like the -n generate
- X chart for current moment now feature, except that they will
- X respectively generate charts for the midnight on the current day,
- X midnight on the first of the current month, and midnight on the first
- X day of the current year.
- X
- X14. command line improvement: The way command line parameters are
- X processed has been slightly changed. Many switches are now
- X technically a "toggle" instead of a "set" for the particular feature
- X in question. For example, "astrolog -v -g -g" will now only result in
- X the -v chart being printed; an aspect grid won't because the first -g
- X turned it on while the second -g turned it off again. This can be
- X useful, in say the -e everything switch. If you want all of
- X Astrolog's charts except the astro-graph, you can now do "astrolog -e
- X -L", where the -e turns everything on and the -L turns the
- X astro-graph chart, already on because of -e, off. In another example,
- X to get a chart with only the stars in it, one can do "astrolog -R0
- X -RU", where the -R0 restricts everything, and the -RU unrestricts all
- X the stars. Before, -RU would restrict all of the stars again,
- X resulting in everything remaining restricted.
- X
- X15. -H improvement: PC users are accustomed to seeing command
- X switches with a leading slash "/" instead of a dash "-". To
- X accommodate this, the -H list of options available switch has been
- X modified to, if the program has been compiled for a PC, display all
- X the switches with a leading "/" instead of a "-". (On Unix and other
- X systems they will still be displayed with the standard leading "-".)
- X
- X16. -L -X improvement: The graphic astro-graph chart will now display
- X a small purple dot at the precise point on the world map for which
- X the chart in question is being generated. This is useful to help see
- X how close the various planetary lines are to you, if you live in the
- X middle of the continent or someplace not easily determinable on the
- X compact map of the world.
- X
- X
- X#################### PROGRAM CHANGES ####################
- X
- XQuite a few changes have been made to version 3.00. Some command
- Xswitches have been renamed, and other assumptions valid in version
- X2.40 are no longer so. This section isn't useful unless you are
- Xalready familiar with earlier versions of the program. A list of
- Xchanges follows:
- X
- X1. -T changes: The -T transit switch has been edited. It no longer
- X takes a file as a parameter - only the month and year. Now, the chart
- X to do transits to is taken from the standard interface. For example,
- X instead of "astrolog -T chartfile 3 1993" we now do "astrolog -i
- X chartfile -T 3 1993". This new interface is more flexible, and can be
- X combined with other chart type options (-v, -g, etc.)
- X
- X In addition, to display transits for an entire year, one no longer
- X does the hack of specifying zero for the month. This has been
- X replaced with the new -Ty switch (-Tpy for progressions), which only
- X takes one parameter, the year. For example, instead of "-T chartfile
- X 0 1993" we now do "-i chartfile -Ty 1993".
- X
- X2. -T0 removed: The -T0 switch, used to include the transiting Moon
- X in charts, is gone. It is replaced with the general ability to
- X restrict transiting planets separately. Include "-RT 2" on the
- X command line to obtain the same result as -T0 (see new -RT option).
- X
- X3. -E changes: The -E ephemeris switch has been edited in a similar
- X way as -T, in that it also takes its date to do the ephemeris for
- X from the standard interface. It no longer takes a month and year for
- X parameters. Now, instead of "astrolog -E 3 1993" we do "astrolog -qm
- X 3 1993 -E". To see the ephemeris for someone's birth month, one can
- X do the convenient "-i chartfile -E", or to see the ephemeris for this
- X month, do "-n -E". The -E switch can now be combined with the other
- X chart type options, and is included with the -e everything switch.
- X
- X In addition, to display an ephemeris for an entire year, one no
- X longer specifies zero for the month, as with -T. We use the -Ey
- X switch now. For example, instead of "-E 0 1993" we now do "-qy 1993
- X -Ey" (see new -qy and -qm options).
- X
- X4. -E0 removed: The -E0 switch, used to allow an ephemeris for
- X objects other than Sun..Pluto, is gone. The standard -E switch has
- X this functionality now, which before would only allow Sun..Pluto.
- X Removal of the switch makes things less complicated, but will result
- X in lines longer than 80 columns whenever more than 10 bodies are
- X unrestricted. (If this is annoying, see the new 80 column clip
- X feature).
- X
- X5. -q renamed: The -q switch, used to quickly cast a chart at noon
- X given a date (using default location and time zone) has been renamed
- X to be "-qd". (See new features section for newly added related
- X switches "-qm" and "-qy".)
- X
- X6. -q0 renamed: The -q0 switch, used to quickly cast a chart given a
- X date as well as time has been renamed to be just "-q". (Don't confuse
- X this with the -q in version 2.40 and before, which did not take a
- X time parameter.)
- X
- X7. -I renamed: The -I display influences chart switch has been
- X renamed to "-j". (-I now refers to a general interpretation switch;
- X don't get them confused.) Mnemonically, one might want to think of -j
- X as referring to "j"oining the influences in the chart together and
- X displaying stats on them. (Hey, so I'm running out of letters for
- X switches! ;)
- X
- X8. -vI, -gI removed: The -vI and -gI switches to display
- X interpretations for position (-v), and aspect grid (-g) charts, are
- X gone. Use the -I general interpretation switch now. For example,
- X instead of "astrolog -i chartfile -gI", do "astrolog -i chartfile -g -I".
- X
- X9. -v changed: The -v and -v0 switches have been swapped as to their
- X meanings of the "velocity" column in the standard chart listing.
- X Before, -v (the default) would display current planetary velocity in
- X degrees per day through the zodiac. The -v0 switch would display
- X this velocity as a percentage, where 1.00 means it is moving at its
- X average speed, 2.00 means moving twice as fast as normal, -0.01 means
- X is retrograde and about to turn direct, and so on. Now, these
- X meanings have been exchanged, as the old -v0 display tends to be more
- X useful, so it is the default now.
- X
- X10. -d0 renamed: The -d0 switch, used to print all aspects among
- X transiting planets in an entire month (as opposed to just a day with
- X -d) has been renamed to be "-dm".
- X
- X11. -p0 renamed: The -p0 switch, used to specify the number of days
- X to progress per day in a -p progressed chart, has been renamed to be
- X "-pd". (-p0 now means do a solar arc chart.)
- X
- X12. Astrolog.dat changed: As usual, astrolog.dat files from version
- X 2.40 and before are incompatible with version 3.00. A transit
- X restriction array and two extra new options (see later) have been
- X added.
- X
- X13. Finally, concerning the source code itself, three new files have
- X been added to version 3.00! The old file graphics.c is gone and has
- X been split into "xgeneral.c" and "xdriver.c". Also, some of the
- X contents in data.c have been moved into new files "general.c" and
- X "xdata.c". This of course means that old Astrolog makefiles won't
- X work to compile version 3.00.
- X
- X
- X#################### BUG FIXES ####################
- X
- XHere is a list of bugs in version 2.40 that have been fixed in this
- Xrelease:
- X
- X1. All object restriction values in the astrolog.dat file were
- X ignored. In the last release I may have fixed the crashing problems
- X people were having, but I inadvertently introduced this bug in the
- X process. Now, trust me, that once and for all astrolog.dat
- X restrictions work perfectly!
- X
- X2. The -gI switch would often crash on many systems. This was due to
- X some long interpretation strings extending past array bounds. No
- X crashes now. (I got quite a few e-mail reports on this one.)
- X
- X3. The meanings of the Midheaven and Ascendant were reversed in the
- X interpretation database, giving bogus interpretations when these
- X objects were involved. They are in the right order now. (Surprised
- X nobody ever emailed me about this!)
- X
- X4. Doing -Xs 300 -g would crash PC's. The bitmap screen was cleared
- X before a check was made as to whether the requested scale size would
- X overflow the bitmap. Now, very large scale sizes are allowed for
- X bitmaps. If the size of the graphic exceeds the array limits, then
- X the bitmap size will be clipped to it (e.g. "-Xs 300 -g -Xb" is
- X allowed, but bottom and right rows of the aspect grid will be clipped
- X off the bitmap file.)
- X
- X5. Trying to include stars in a -S graphic chart (-S -X -U) could
- X cause a crash. The stars are properly ignored in all -S charts
- X without problem now. In addition, yet another PC 16 bit int overflow
- X could cause the zodiac boundaries in a -S -X chart to be displayed
- X erroneously, which has been corrected, too.
- X
- X6. The Placidus house cusp routine would generate garbage results
- X for all non-angular cusps when for any chart cast at latitude 0. We
- X have correct results now.
- X
- X7. When animating graphics charts backward in time, passing to a
- X previous month didn't set the day of the new month correctly.
- X Instead of setting the day to the last day of the new month, it would
- X go to the last day of the month just left, e.g. from March 1st to
- X February 31st, yielding a bogus chart. These values are updated
- X properly now.
- X
- X8. The Midheaven and Ascendant, being cusp objects, should logically
- X always be mapped to being in the 10th and 1st houses, respectively.
- X Round off error would occasionally put them in the previous house,
- X resulting in output like Midheaven in 9th house in a -v chart, for
- X example. This will no longer occur.
- X
- X9. More checking for out of range command line parameters is done
- X now, specifically for the -a, -q, and -l switches. Although checking
- X was always done when prompting the user for info, not as much was
- X done when accepting data from the command line, resulting in one
- X being able to get away with things like "Feb 50th" or "200 degrees
- X north latitude".
- X
- X10. The -H list had some non-existent command switches in it!
- X Specifically there were switches called "-gl" and "-gm". When I was
- X creating the -m and -m0 switches for version 2.40, they were
- X originally going to be extra letters tacked onto -g. However,
- X although I did finally add -m to the -H list, I foolishly forgot to
- X remove -gl and -gm (which don't do anything more than -g). Anyway,
- X these are removed from the list (as well as some spelling errors).
- X
- X11. The -v chart was never able to respond to -R restrictions on the
- X first 20 objects in any place other than the element table. This was
- X because the display of the 12 house cusps and the element table here
- X require 20 lines of text, so we can't just leave lines out. Now, we
- X do leave lines out, but will print enough blank lines at the end of
- X the first 20 objects so that the element table can be printed, so -v
- X now responds to -R completely.
- X
- X12. The -g0 switch when combined with -r0 will generate a
- X relationship midpoint (as opposed to aspect with just -g) grid.
- X However, -g0 would be the same as -g when doing a graphic -r0 chart.
- X Now, -r0 -g0 -X will generate the expected graphic relationship
- X midpoint grid. (Note that -r0 -g -Xi, i.e. the slightly modified
- X chart mode, was what one had to do to generate a graphic relationship
- X midpoint chart before. This still works, but will now revert back to
- X an aspect grid if both -Xi and -g0 are in effect with -r0.)
- X
- X13. It seems some compilers, specifically some on VMS systems, would
- X compile the complicated planet calculation routine incorrectly,
- X specifically in the planet index loop, resulting in bad data.
- X Although it doesn't affect the program any, I simplified the loop, so
- X this shouldn't be a problem anymore.
- X
- X14. Version 2.40 was rather memory inefficient on PC platforms. The
- X executable was a large 320K, and lots of data was allocated even when
- X not used. The PC executable for version 3.00, in spite of all 3.00's
- X new features, and in spite of the 98K Microsoft C graphics library
- X module being linked in, is under 270K and runs faster! :)
- X
- X
- X#################### COMPILING INSTRUCTIONS ####################
- X
- X Compiling Astrolog version 3.00 is virtually identical to
- Xcompiling previous versions: first edit the top of the file
- Xastrolog.h, putting in your own appropriate values for the default
- Xlongitude, latitude, time zone, and default file search directory.
- X(In the same manner, also edit these default parameter values in the
- Xfile astrolog.dat to your liking, at least the location and time zone
- Xvalues.) Also, comment out any of the #defines which set various
- Xfeatures that aren't valid on your system, such as the GRAPH, X11,
- XMSC, NOPC, TIME, and SWITCHES variables. Then, for Unix systems, just
- Xrun the command 'make' on the Makefile.
- X
- X Compiling Astrolog on a PC is pretty easy too. One can usually
- Xdo it by simply compiling each file in turn and then linking them all
- Xtogether. You don't have to worry about explicitly mentioning stuff
- Xlike the math library if your paths are set up properly. I used the
- XMicrosoft C7 compiler to generate the ready to run PC executable. If
- Xyou have the nmake utility, the makefile included in the zip archive
- Xwill compile and link astrolog 2.40 on a PC, with flags set properly
- Xand all. I compiled under the Large memory model, with hex 4000 bytes
- Xof stack space. The default directory in the ready to run PC
- Xexecutable is set to C:\ASTROLOG. The other compile time defaults are
- Xset to my own location, but you can easily override them with your
- Xown values using the astrolog.dat file.
- X
- X It is possible to easily compile Astrolog on a VMS system, even
- Xwith X windows. Max Calvani was kind enough to give me the following
- Xcom file to automatically compile and link Astrolog for VMS. This
- Xshould work with version 3.00, but since I don't have access to a VMS
- Xsystem I can't try it out myself. Here it is anyway:
- X
- X---- BEGIN INCLUDED FILE COMPILE.COM CUT HERE ----
- X$ set ver
- X$ define X11 decw$include
- X$ CC CHARTS
- X$ CC DATA
- X$ CC DRIVER
- X$ CC FORMULAS
- X$ CC GENERAL
- X$ CC OPTIONS
- X$ CC XCHARTS
- X$ CC XDATA
- X$ CC XDRIVER
- X$ CC XGENERAL
- X$ link/exe=astrolog.exe -
- X CHARTS.obj, -
- X DATA.obj, -
- X DRIVER.obj, -
- X FORMULAS.obj, -
- X GENERAL.obj, -
- X OPTIONS.obj, -
- X XCHARTS.obj, -
- X XDATA.obj, -
- X XDRIVER.obj, -
- X XGENERAL.obj, -
- X sys$input/opt
- Xsys$share:decw$xlibshr/share
- X$ set nover
- X$ exit
- X---- END INCLUDED FILE COMPILE.COM CUT HERE ----
- X
- X--
- X
- X The astrological "chart" for this version 3.00 of the program
- Xitself (and hence the "default" chart in memory one gets if they
- Xstart up with a non informational chart and then revert to one
- Xrequiring information, e.g. -XW followed by pressing 'V') is set for
- Xthe Vernal Equinox at 6:43am PST (8 hr before GMT) on March 20, 1993
- Xin Seattle, WA (122W20 47N36).
- X
- X--
- X
- X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
- X+ Walter D. "Cruiser1" Pullen | astrolog@byron.u.washington.edu +
- X#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#
- END_OF_FILE
- if test 31731 -ne `wc -c <'Update.300'`; then
- echo shar: \"'Update.300'\" unpacked with wrong size!
- fi
- # end of 'Update.300'
- fi
- if test -f 'MANIFEST' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MANIFEST'\"
- else
- echo shar: Extracting \"'MANIFEST'\" \(1780 characters\)
- sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
- X File Name Archive # Description
- X-----------------------------------------------------------
- X README 1 Astrolog and instructions on how to compile it.
- X Makefile 1 Unix Makefile to easily compile program.
- X makefile.pc 1 Makefile for PC's with nmake utility.
- X astrolog.dat 1 Data file with default program parameters.
- X astrolog.h 1 Compile time options and program definitions.
- X Update.300 1 New features and bug fixes in version 3.00.
- X data.c 2 Table information and variable definitions.
- X driver.c 2 Main program to connect all the other parts.
- X charts.c 3 Routines to display charts on text screen.
- X xdata.c 3 Graphic table information and variables.
- X general.c 4 Simple program functions and generic routines.
- X options.c 4 Main display and search routines in program.
- X xgeneral.c 5 Graphic and bitmap drawing primitives.
- X xdriver.c 5 High level graphics dispatch and interaction.
- X xcharts.c 6 Routines to draw graphic charts in X windows.
- X formulas.c 7 Planetary and house position calculations.
- X Helpfile.p3 7 Part 3/3 of the file below. (See the README).
- X Helpfile.p1 8 List of Astrolog features and how to use them.
- X Helpfile.p2 9 Part 2/3 of the above file. (See the README).
- X History.p1 10 Features and bug fixes in previous versions.
- X History.p2 11 Part 2/3 of the above file. (See the README).
- X History.p3 12 Part 3/3 of the above file. (See the README).
- X MANIFEST 1 This shipping list
- END_OF_FILE
- if test 1780 -ne `wc -c <'MANIFEST'`; then
- echo shar: \"'MANIFEST'\" unpacked with wrong size!
- fi
- # end of 'MANIFEST'
- fi
- echo shar: End of archive 1 \(of 12\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 12 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
- exit 0 # Just in case...
-