riley@mipsdal.mips.com (Riley Rainey) (03/02/91)
Submitted-by: riley@mipsdal.mips.com (Riley Rainey) Posting-number: Volume 12, Issue 12 Archive-name: acm/part07 #! /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 7 (of 9)." # Contents: acm/Makefile acm/V/Makefile acm/fsim/m61a1.c # Wrapped by riley@mipsdal on Thu Feb 14 10:09:20 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'acm/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'acm/Makefile'\" else echo shar: Extracting \"'acm/Makefile'\" \(14158 characters\) sed "s/^X//" >'acm/Makefile' <<'END_OF_FILE' X# Makefile generated by imake - do not edit! X# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $ X X########################################################################### X# Makefile generated from "Imake.tmpl" and <Imakefile> X# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $ X# X# Platform-specific parameters may be set in the appropriate .cf X# configuration files. Site-wide parameters may be set in the file X# site.def. Full rebuilds are recommended if any parameters are changed. X# X# If your C preprocessor doesn't define any unique symbols, you'll need X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing X# "make Makefile", "make Makefiles", or "make World"). X# X# If you absolutely can't get imake to work, you'll need to set the X# variables at the top of each Makefile as well as the dependencies at the X# bottom (makedepend will do this automatically). X# X X########################################################################### X# platform-specific configuration parameters - edit Mips.cf to change X X# platform: $XConsortium: Mips.cf,v 1.2 89/01/11 14:58:19 jim Exp $ X# operating system: RISCOS X X SYSVTYPE = -systype sysv X BSDTYPE = -systype bsd43 X SYSVDEFS = -DMips -DSYSV X BSDDEFS = -DMips -DBSD43 X SYSVINCS = -I$(DESTDIR)/usr/include/bsd X BSDINCS = X SYSVLIBS = -lbsd -lmld X BSDLIBS = -lmld X X SYSTYPE = $(BSDTYPE) X SYSDEFS = $(BSDDEFS) X SYSINCS = $(BSDINCS) X SYSLIBS = $(BSDLIBS) X X OPTIM = -O -Olimit 2000 -Wf,-XNd8400,-XNp12000 X CCOPT = -signed X DEFINES = -D_NO_PROTO XSYSVCFLAGS = $(OPTIM) $(CCOPT) $(SYSVTYPE) $(INCLUDES) $(SYSVDEFS) $(SYSVINCS) $(DEFINES) X BSDCFLAGS = $(OPTIM) $(CCOPT) $(BSDTYPE) $(INCLUDES) $(BSDDEFS) $(BSDINCS) $(DEFINES) X X ETCDIR = /etc X ULIBDIR = /usr/lib X X XINSTALLDIR = RISCwindows4.0 X INSTALLFLAGS = -m 0555 X RS1210DIR = $(DESTDIR)/usr/$(XINSTALLDIR)/RS1210 X CONTRIBBINDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/bin XCONTRIBAPPSDEFDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/lib/app-defaults X CONTRIBMANDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/man X CONTRIBSRCDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/src X RS1210LIBDIR = $(LIBDIR)/ncd X X BINPATH = /usr/bin/X11 X LIBPATH = /usr/lib/X11 X ETCPATH = /usr/etc/X11 X ADMPATH = /usr/adm X NCDPATH = /usr/X11/ncd X NCDLIBPATH = $(LIBPATH)/ncd X XINITPATH = $(LIBPATH)/xinit X XDMPATH = $(ETCPATH)/xdm X UWMPATH = $(LIBPATH)/uwm X AWMPATH = $(LIBPATH)/awm X MWMPATH = $(LIBPATH)/mwm X TWMPATH = $(LIBPATH)/twm X XAPPLOADPATH = $(LIBPATH)/app-defaults X RS1210SRC = $(TOP)/rs1210 X X MOTIFSRC = $(TOP)/motif X MLIBSRC = $(MOTIFSRC)/lib X MCLIENTSRC = $(MOTIFSRC)/clients X MDEMOSRC = $(MOTIFSRC)/demos X MTOOLKITSRC = $(MOTIFSRC)/X11R4/lib/Xt X MWIDGETSRC = $(MLIBSRC)/Xm X INCLUDEXMSRC = $(MLIBSRC)/Xm X MRESOURCESRC = $(MLIBSRC)/Mrm X MWMDIR = $(LIBDIR)/Mwm X DEMOBINDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/demos/bin X DEMOSRCDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/demos/src X MINCLUDE = $(TOP)/include X UILSRC = $(MCLIENTSRC)/uil X UIL = $(UILSRC)/uil X X XMTOOLLIB = $(MTOOLKITSRC)/libXt.a X XMLIB = $(MWIDGETSRC)/libXm.a X MRESOURCELIB = $(MRESOURCESRC)/libMrm.a X UILLIB = $(UILSRC)/libUil.a X X BUILDTOOLSDIR = $(TOP)/buildtools XCROSSENVOVERRIDE= DESTROOT=/ COMP_TARGET_ROOT=/ ETCDIR=/etc ULIBDIR=/usr/lib X X########################################################################### X# site-specific configuration parameters - edit site.def to change X X# site: $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $ X X SHELL = /bin/sh X X TOP = . X CURRENT_DIR = . X X AR = ar clr X BOOTSTRAPCFLAGS = $(SYSDEFS) X CC = cc X X COMPRESS = compress X CPP = /lib/cpp $(STD_CPP_DEFINES) X PREPROCESSCMD = cc -E $(STD_CPP_DEFINES) X INSTALL = $(ETCDIR)/mipsinstall X LD = ld X LINT = lint X LINTLIBFLAG = -C X LINTOPTS = -axz X LN = ln -s X MAKE = make ETCDIR='$(ETCDIR)' ULIBDIR='$(ULIBDIR)' X MV = mv X CP = cp X RANLIB = /bin/true X RANLIBINSTFLAGS = X RM = rm -f X STD_INCLUDES = X STD_CPP_DEFINES = $(SYSDEFS) X STD_DEFINES = $(SYSDEFS) $(SYSINCS) X EXTRA_LOAD_FLAGS = X EXTRA_LIBRARIES = $(SYSLIBS) X TAGS = ctags X X SIGNAL_DEFINES = -DSIGNALRETURNSINT X X PROTO_DEFINES = X X INSTPGMFLAGS = X X INSTBINFLAGS = -m 0755 X INSTUIDFLAGS = -m 4755 X INSTLIBFLAGS = -m 0664 X INSTINCFLAGS = -m 0444 X INSTMANFLAGS = -m 0444 X INSTDATFLAGS = -m 0444 X INSTKMEMFLAGS = -g sys -m 2755 X X DESTDIR = $(DESTROOT) X X TOP_INCLUDES = -I$(INCROOT) X X CDEBUGFLAGS = $(OPTIM) $(CCOPT) $(SYSTYPE) X CCOPTIONS = X COMPATFLAGS = X X ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES) X ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS) $(EXT_DEFINES) X CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES) X LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) X LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) X LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) X LDCOMBINEFLAGS = -X -r X X MACROFILE = Mips.cf X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut *.u *.b X X IMAKE_DEFINES = X X IRULESRC = $(CONFIGDIR) X IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) X X ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \ X $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \ X $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES) X X########################################################################### X# X Window System Build Parameters X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $ X X########################################################################### X# X Window System make variables; this need to be coordinated with rules X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $ X X PATHSEP = / X USRLIBDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/lib X BINDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/bin X INCROOT = $(DESTDIR)/usr/$(XINSTALLDIR)/include X BUILDINCROOT = $(TOP) X BUILDINCDIR = $(BUILDINCROOT)/X11 X BUILDINCTOP = .. X INCDIR = $(INCROOT)/X11 X ADMDIR = $(DESTDIR)/usr/adm X LIBDIR = $(USRLIBDIR)/X11 X CONFIGDIR = $(LIBDIR)/config X LINTLIBDIR = $(USRLIBDIR)/lint X X FONTDIR = $(LIBDIR)/fonts X XINITDIR = $(LIBDIR)/xinit X XDMDIR = $(DESTDIR)/usr/X11/etc/xdm X AWMDIR = $(LIBDIR)/awm X TWMDIR = $(LIBDIR)/twm X GWMDIR = $(LIBDIR)/gwm X MANPATH = $(DESTDIR)/usr/$(XINSTALLDIR)/man/cat X MANSOURCEPATH = $(MANPATH)/man X MANDIR = $(MANSOURCEPATH)1 X LIBMANDIR = $(MANSOURCEPATH)3 X XAPPLOADDIR = $(LIBDIR)/app-defaults X X FONTCFLAGS = -t X X INSTAPPFLAGS = $(INSTDATFLAGS) X X IMAKE = imake X DEPEND = makedepend X RGB = rgb X FONTC = bdftosnf X MKFONTDIR = mkfontdir X MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier.sh X X CONFIGSRC = $(TOP)/config X CLIENTSRC = $(TOP)/clients X DEMOSRC = $(TOP)/demos X LIBSRC = $(TOP)/lib X FONTSRC = $(TOP)/fonts X INCLUDESRC = $(TOP)/X11 X SERVERSRC = $(TOP)/server X UTILSRC = $(TOP)/util X SCRIPTSRC = $(UTILSRC)/scripts X EXAMPLESRC = $(TOP)/examples X CONTRIBSRC = $(TOP)/../contrib X DOCSRC = $(TOP)/doc X RGBSRC = $(TOP)/rgb X DEPENDSRC = $(UTILSRC)/makedepend X IMAKESRC = $(CONFIGSRC) X XAUTHSRC = $(LIBSRC)/Xau X XLIBSRC = $(LIBSRC)/X X XMUSRC = $(LIBSRC)/Xmu X TOOLKITSRC = $(LIBSRC)/Xt X AWIDGETSRC = $(LIBSRC)/Xaw X OLDXLIBSRC = $(LIBSRC)/oldX X XDMCPLIBSRC = $(LIBSRC)/Xdmcp X BDFTOSNFSRC = $(FONTSRC)/bdftosnf X MKFONTDIRSRC = $(FONTSRC)/mkfontdir X EXTENSIONSRC = $(TOP)/extensions X X DEPEXTENSIONLIB = $(USRLIBDIR)/libXext.a X EXTENSIONLIB = -lXext X X DEPXLIB = $(DEPEXTENSIONLIB) $(USRLIBDIR)/libX11.a X XLIB = $(EXTENSIONLIB) -lX11 X X DEPXAUTHLIB = $(USRLIBDIR)/libXau.a X XAUTHLIB = -lXau X X DEPXMULIB = $(USRLIBDIR)/libXmu.a X XMULIB = -lXmu X X DEPOLDXLIB = $(USRLIBDIR)/liboldX.a X OLDXLIB = -loldX X X DEPXTOOLLIB = $(USRLIBDIR)/libXt.a X XTOOLLIB = -lXt X X DEPXAWLIB = $(USRLIBDIR)/libXaw.a X XAWLIB = -lXaw X X LINTEXTENSIONLIB = $(USRLIBDIR)/llib-lXext.ln X LINTXLIB = $(USRLIBDIR)/llib-lX11.ln X LINTXMU = $(USRLIBDIR)/llib-lXmu.ln X LINTXTOOL = $(USRLIBDIR)/llib-lXt.ln X LINTXAW = $(USRLIBDIR)/llib-lXaw.ln X X DEPLIBS = $(LOCAL_LIBRARIES) X X DEPLIBS1 = $(DEPLIBS) X DEPLIBS2 = $(DEPLIBS) X DEPLIBS3 = $(DEPLIBS) X X########################################################################### X# Imake rules for building libraries, programs, scripts, and data files X# rules: $XConsortium: Imake.rules,v 1.70 90/05/04 16:57:30 keith Exp $ X X########################################################################### X# start of Imakefile X XCDEBUGFLAGS = -systype bsd43 -O X XSUBDIRS= V fsim X Xall:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "making" all "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) CDEBUFLAGS='$(CDEBUGFLAGS)' all); \ X done X Xdepend:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "depending" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) depend); \ X done X X########################################################################### X# common rules for all Makefiles - do not edit X Xemptyrule:: X Xclean:: X $(RM_CMD) \#* X XMakefile:: X -@if [ -f Makefile ]; then \ X echo " $(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \ X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ X else exit 0; fi X $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) X Xtags:: X $(TAGS) -w *.[ch] X $(TAGS) -xw *.[ch] > TAGS X X########################################################################### X# rules for building in SUBDIRS - do not edit X Xinstall:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "installing" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) DESTDIR='$(DESTDIR)' install); \ X done X Xinstall.man:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "installing man pages" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) DESTDIR='$(DESTDIR)' install.man); \ X done X Xclean:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "cleaning" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) RM_CMD='$(RM_CMD)' clean); \ X done X Xtags:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "tagging" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) TAGS='$(TAGS)' tags); \ X done X XMakefiles:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X echo "making Makefiles in $(CURRENT_DIR)/$$i..."; \ X case "$$i" in \ X ./?*/?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ X ./?*/?*/?*) newtop=../../../ sub=subsubsub;; \ X ./?*/?*) newtop=../../ sub=subsub;; \ X ./?*) newtop=../ sub=sub;; \ X */?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ X */?*/?*) newtop=../../../ sub=subsubsub;; \ X */?*) newtop=../../ sub=subsub;; \ X *) newtop=../ sub=sub;; \ X esac; \ X case "$(TOP)" in \ X /?*) newtop= upprefix= ;; \ X *) upprefix=../ ;; \ X esac; \ X $(MAKE) $${sub}dirMakefiles UPPREFIX=$$upprefix NEWTOP=$$newtop \ X MAKEFILE_SUBDIR=$$i NEW_CURRENT_DIR=$(CURRENT_DIR)/$$i;\ X done X XsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X Xincludes:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo including "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) includes); \ X done X X########################################################################### X# dependencies generated by makedepend X END_OF_FILE if test 14158 -ne `wc -c <'acm/Makefile'`; then echo shar: \"'acm/Makefile'\" unpacked with wrong size! fi # end of 'acm/Makefile' fi if test -f 'acm/V/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'acm/V/Makefile'\" else echo shar: Extracting \"'acm/V/Makefile'\" \(14160 characters\) sed "s/^X//" >'acm/V/Makefile' <<'END_OF_FILE' X# Makefile generated by imake - do not edit! X# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $ X X########################################################################### X# Makefile generated from "Imake.tmpl" and <Imakefile> X# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $ X# X# Platform-specific parameters may be set in the appropriate .cf X# configuration files. Site-wide parameters may be set in the file X# site.def. Full rebuilds are recommended if any parameters are changed. X# X# If your C preprocessor doesn't define any unique symbols, you'll need X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing X# "make Makefile", "make Makefiles", or "make World"). X# X# If you absolutely can't get imake to work, you'll need to set the X# variables at the top of each Makefile as well as the dependencies at the X# bottom (makedepend will do this automatically). X# X X########################################################################### X# platform-specific configuration parameters - edit Mips.cf to change X X# platform: $XConsortium: Mips.cf,v 1.2 89/01/11 14:58:19 jim Exp $ X# operating system: RISCOS X X SYSVTYPE = -systype sysv X BSDTYPE = -systype bsd43 X SYSVDEFS = -DMips -DSYSV X BSDDEFS = -DMips -DBSD43 X SYSVINCS = -I$(DESTDIR)/usr/include/bsd X BSDINCS = X SYSVLIBS = -lbsd -lmld X BSDLIBS = -lmld X X SYSTYPE = $(BSDTYPE) X SYSDEFS = $(BSDDEFS) X SYSINCS = $(BSDINCS) X SYSLIBS = $(BSDLIBS) X X OPTIM = -O -Olimit 2000 -Wf,-XNd8400,-XNp12000 X CCOPT = -signed X DEFINES = -D_NO_PROTO XSYSVCFLAGS = $(OPTIM) $(CCOPT) $(SYSVTYPE) $(INCLUDES) $(SYSVDEFS) $(SYSVINCS) $(DEFINES) X BSDCFLAGS = $(OPTIM) $(CCOPT) $(BSDTYPE) $(INCLUDES) $(BSDDEFS) $(BSDINCS) $(DEFINES) X X ETCDIR = /etc X ULIBDIR = /usr/lib X X XINSTALLDIR = RISCwindows4.0 X INSTALLFLAGS = -m 0555 X RS1210DIR = $(DESTDIR)/usr/$(XINSTALLDIR)/RS1210 X CONTRIBBINDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/bin XCONTRIBAPPSDEFDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/lib/app-defaults X CONTRIBMANDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/man X CONTRIBSRCDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/contrib/src X RS1210LIBDIR = $(LIBDIR)/ncd X X BINPATH = /usr/bin/X11 X LIBPATH = /usr/lib/X11 X ETCPATH = /usr/etc/X11 X ADMPATH = /usr/adm X NCDPATH = /usr/X11/ncd X NCDLIBPATH = $(LIBPATH)/ncd X XINITPATH = $(LIBPATH)/xinit X XDMPATH = $(ETCPATH)/xdm X UWMPATH = $(LIBPATH)/uwm X AWMPATH = $(LIBPATH)/awm X MWMPATH = $(LIBPATH)/mwm X TWMPATH = $(LIBPATH)/twm X XAPPLOADPATH = $(LIBPATH)/app-defaults X RS1210SRC = $(TOP)/rs1210 X X MOTIFSRC = $(TOP)/motif X MLIBSRC = $(MOTIFSRC)/lib X MCLIENTSRC = $(MOTIFSRC)/clients X MDEMOSRC = $(MOTIFSRC)/demos X MTOOLKITSRC = $(MOTIFSRC)/X11R4/lib/Xt X MWIDGETSRC = $(MLIBSRC)/Xm X INCLUDEXMSRC = $(MLIBSRC)/Xm X MRESOURCESRC = $(MLIBSRC)/Mrm X MWMDIR = $(LIBDIR)/Mwm X DEMOBINDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/demos/bin X DEMOSRCDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/demos/src X MINCLUDE = $(TOP)/include X UILSRC = $(MCLIENTSRC)/uil X UIL = $(UILSRC)/uil X X XMTOOLLIB = $(MTOOLKITSRC)/libXt.a X XMLIB = $(MWIDGETSRC)/libXm.a X MRESOURCELIB = $(MRESOURCESRC)/libMrm.a X UILLIB = $(UILSRC)/libUil.a X X BUILDTOOLSDIR = $(TOP)/buildtools XCROSSENVOVERRIDE= DESTROOT=/ COMP_TARGET_ROOT=/ ETCDIR=/etc ULIBDIR=/usr/lib X X########################################################################### X# site-specific configuration parameters - edit site.def to change X X# site: $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $ X X SHELL = /bin/sh X X TOP = ../. X CURRENT_DIR = ./V X X AR = ar clr X BOOTSTRAPCFLAGS = $(SYSDEFS) X CC = cc X X COMPRESS = compress X CPP = /lib/cpp $(STD_CPP_DEFINES) X PREPROCESSCMD = cc -E $(STD_CPP_DEFINES) X INSTALL = $(ETCDIR)/mipsinstall X LD = ld X LINT = lint X LINTLIBFLAG = -C X LINTOPTS = -axz X LN = ln -s X MAKE = make ETCDIR='$(ETCDIR)' ULIBDIR='$(ULIBDIR)' X MV = mv X CP = cp X RANLIB = /bin/true X RANLIBINSTFLAGS = X RM = rm -f X STD_INCLUDES = X STD_CPP_DEFINES = $(SYSDEFS) X STD_DEFINES = $(SYSDEFS) $(SYSINCS) X EXTRA_LOAD_FLAGS = X EXTRA_LIBRARIES = $(SYSLIBS) X TAGS = ctags X X SIGNAL_DEFINES = -DSIGNALRETURNSINT X X PROTO_DEFINES = X X INSTPGMFLAGS = X X INSTBINFLAGS = -m 0755 X INSTUIDFLAGS = -m 4755 X INSTLIBFLAGS = -m 0664 X INSTINCFLAGS = -m 0444 X INSTMANFLAGS = -m 0444 X INSTDATFLAGS = -m 0444 X INSTKMEMFLAGS = -g sys -m 2755 X X DESTDIR = $(DESTROOT) X X TOP_INCLUDES = -I$(INCROOT) X X CDEBUGFLAGS = $(OPTIM) $(CCOPT) $(SYSTYPE) X CCOPTIONS = X COMPATFLAGS = X X ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES) X ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS) $(EXT_DEFINES) X CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES) X LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) X LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) X LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) X LDCOMBINEFLAGS = -X -r X X MACROFILE = Mips.cf X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut *.u *.b X X IMAKE_DEFINES = X X IRULESRC = $(CONFIGDIR) X IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) X X ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \ X $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \ X $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES) X X########################################################################### X# X Window System Build Parameters X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $ X X########################################################################### X# X Window System make variables; this need to be coordinated with rules X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $ X X PATHSEP = / X USRLIBDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/lib X BINDIR = $(DESTDIR)/usr/$(XINSTALLDIR)/bin X INCROOT = $(DESTDIR)/usr/$(XINSTALLDIR)/include X BUILDINCROOT = $(TOP) X BUILDINCDIR = $(BUILDINCROOT)/X11 X BUILDINCTOP = .. X INCDIR = $(INCROOT)/X11 X ADMDIR = $(DESTDIR)/usr/adm X LIBDIR = $(USRLIBDIR)/X11 X CONFIGDIR = $(LIBDIR)/config X LINTLIBDIR = $(USRLIBDIR)/lint X X FONTDIR = $(LIBDIR)/fonts X XINITDIR = $(LIBDIR)/xinit X XDMDIR = $(DESTDIR)/usr/X11/etc/xdm X AWMDIR = $(LIBDIR)/awm X TWMDIR = $(LIBDIR)/twm X GWMDIR = $(LIBDIR)/gwm X MANPATH = $(DESTDIR)/usr/$(XINSTALLDIR)/man/cat X MANSOURCEPATH = $(MANPATH)/man X MANDIR = $(MANSOURCEPATH)1 X LIBMANDIR = $(MANSOURCEPATH)3 X XAPPLOADDIR = $(LIBDIR)/app-defaults X X FONTCFLAGS = -t X X INSTAPPFLAGS = $(INSTDATFLAGS) X X IMAKE = imake X DEPEND = makedepend X RGB = rgb X FONTC = bdftosnf X MKFONTDIR = mkfontdir X MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier.sh X X CONFIGSRC = $(TOP)/config X CLIENTSRC = $(TOP)/clients X DEMOSRC = $(TOP)/demos X LIBSRC = $(TOP)/lib X FONTSRC = $(TOP)/fonts X INCLUDESRC = $(TOP)/X11 X SERVERSRC = $(TOP)/server X UTILSRC = $(TOP)/util X SCRIPTSRC = $(UTILSRC)/scripts X EXAMPLESRC = $(TOP)/examples X CONTRIBSRC = $(TOP)/../contrib X DOCSRC = $(TOP)/doc X RGBSRC = $(TOP)/rgb X DEPENDSRC = $(UTILSRC)/makedepend X IMAKESRC = $(CONFIGSRC) X XAUTHSRC = $(LIBSRC)/Xau X XLIBSRC = $(LIBSRC)/X X XMUSRC = $(LIBSRC)/Xmu X TOOLKITSRC = $(LIBSRC)/Xt X AWIDGETSRC = $(LIBSRC)/Xaw X OLDXLIBSRC = $(LIBSRC)/oldX X XDMCPLIBSRC = $(LIBSRC)/Xdmcp X BDFTOSNFSRC = $(FONTSRC)/bdftosnf X MKFONTDIRSRC = $(FONTSRC)/mkfontdir X EXTENSIONSRC = $(TOP)/extensions X X DEPEXTENSIONLIB = $(USRLIBDIR)/libXext.a X EXTENSIONLIB = -lXext X X DEPXLIB = $(DEPEXTENSIONLIB) $(USRLIBDIR)/libX11.a X XLIB = $(EXTENSIONLIB) -lX11 X X DEPXAUTHLIB = $(USRLIBDIR)/libXau.a X XAUTHLIB = -lXau X X DEPXMULIB = $(USRLIBDIR)/libXmu.a X XMULIB = -lXmu X X DEPOLDXLIB = $(USRLIBDIR)/liboldX.a X OLDXLIB = -loldX X X DEPXTOOLLIB = $(USRLIBDIR)/libXt.a X XTOOLLIB = -lXt X X DEPXAWLIB = $(USRLIBDIR)/libXaw.a X XAWLIB = -lXaw X X LINTEXTENSIONLIB = $(USRLIBDIR)/llib-lXext.ln X LINTXLIB = $(USRLIBDIR)/llib-lX11.ln X LINTXMU = $(USRLIBDIR)/llib-lXmu.ln X LINTXTOOL = $(USRLIBDIR)/llib-lXt.ln X LINTXAW = $(USRLIBDIR)/llib-lXaw.ln X X DEPLIBS = $(LOCAL_LIBRARIES) X X DEPLIBS1 = $(DEPLIBS) X DEPLIBS2 = $(DEPLIBS) X DEPLIBS3 = $(DEPLIBS) X X########################################################################### X# Imake rules for building libraries, programs, scripts, and data files X# rules: $XConsortium: Imake.rules,v 1.70 90/05/04 16:57:30 keith Exp $ X X########################################################################### X# start of Imakefile X XCDEBUGFLAGS = -systype bsd43 -O X XSUBDIRS= lib X Xall:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "making" all "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) CDEBUFLAGS='$(CDEBUGFLAGS)' all); \ X done X Xdepend:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "depending" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) depend); \ X done X X########################################################################### X# common rules for all Makefiles - do not edit X Xemptyrule:: X Xclean:: X $(RM_CMD) \#* X XMakefile:: X -@if [ -f Makefile ]; then \ X echo " $(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \ X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ X else exit 0; fi X $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) X Xtags:: X $(TAGS) -w *.[ch] X $(TAGS) -xw *.[ch] > TAGS X X########################################################################### X# rules for building in SUBDIRS - do not edit X Xinstall:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "installing" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) DESTDIR='$(DESTDIR)' install); \ X done X Xinstall.man:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "installing man pages" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) DESTDIR='$(DESTDIR)' install.man); \ X done X Xclean:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "cleaning" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) RM_CMD='$(RM_CMD)' clean); \ X done X Xtags:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "tagging" "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) TAGS='$(TAGS)' tags); \ X done X XMakefiles:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X echo "making Makefiles in $(CURRENT_DIR)/$$i..."; \ X case "$$i" in \ X ./?*/?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ X ./?*/?*/?*) newtop=../../../ sub=subsubsub;; \ X ./?*/?*) newtop=../../ sub=subsub;; \ X ./?*) newtop=../ sub=sub;; \ X */?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ X */?*/?*) newtop=../../../ sub=subsubsub;; \ X */?*) newtop=../../ sub=subsub;; \ X *) newtop=../ sub=sub;; \ X esac; \ X case "$(TOP)" in \ X /?*) newtop= upprefix= ;; \ X *) upprefix=../ ;; \ X esac; \ X $(MAKE) $${sub}dirMakefiles UPPREFIX=$$upprefix NEWTOP=$$newtop \ X MAKEFILE_SUBDIR=$$i NEW_CURRENT_DIR=$(CURRENT_DIR)/$$i;\ X done X XsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo " $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ X $(MAKE) $(MFLAGS) Makefiles X Xincludes:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo including "in $(CURRENT_DIR)/$$i..."; \ X $(MAKE) $(MFLAGS) includes); \ X done X X########################################################################### X# dependencies generated by makedepend X END_OF_FILE if test 14160 -ne `wc -c <'acm/V/Makefile'`; then echo shar: \"'acm/V/Makefile'\" unpacked with wrong size! fi # end of 'acm/V/Makefile' fi if test -f 'acm/fsim/m61a1.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'acm/fsim/m61a1.c'\" else echo shar: Extracting \"'acm/fsim/m61a1.c'\" \(14922 characters\) sed "s/^X//" >'acm/fsim/m61a1.c' <<'END_OF_FILE' X/* X * xflight : an aerial combat simulator for X X * X * Written by Riley Rainey, riley@mips.com X * X * Permission to use, copy, modify and distribute (without charge) this X * software, documentation, images, etc. is granted, provided that this X * comment and the author's name is retained. X * X */ X X#include "pm.h" X#include <stdio.h> X#include <string.h> X#include <math.h> X X#define BORE_CROSS_SIZE 7 X#define MUZZLE_VELOCITY (3.2808 * 1036.0) X#define TRACER_MOD 10 X#define OFFSET_ANGLE (DEGtoRAD(3.0)) /* the gun points up at this angle */ X#define RATE_OF_FIRE (3000.0 / 60.0) /* rounds per second */ X#define FUZZ (DEGtoRAD(1.0)) /* distribution due to vibration */ X Xint select_m61a1(); Xint display_m61a1(); Xint update_m61a1(); Xint press_m61a1(); Xint release_m61a1(); Xextern craftType * lookupCraft(); Xextern FILE * acm_fopen(); Xvoid lcos(); X Xint cdebug = 0; /* set to 1 to debug cannon fire */ X XweaponDesc m61a1Desc = { X WK_M61A1, X select_m61a1, /* select */ X update_m61a1, /* update */ X display_m61a1, /* display procedure */ X press_m61a1, /* fire */ X release_m61a1, /* fire button release */ X }; X X/* X * We'll take a running average of our pitch and yaw rates to keep the X * aiming reticle from jumping all over the screen. X */ X X#define HIST 4 X Xtypedef struct { X double pitch_hist[HIST]; X double yaw_hist[HIST]; X int cur; /* current entry in the histories */ X int count; /* number of valid entries */ X double pitch_total; X double yaw_total; X } hist_t; X Xstatic hist_t history[MAXPLAYERS]; X X/* X * m61a1 selection function X * X * A selection function normally determines whether there are any weapons X * of this type on-board. If so, and the weapon system is functional X * (in other words, undamaged) then return 1; otherwise return 0. X */ X Xint select_m61a1 (c) Xcraft *c; { X X hist_t *p; X X p = &history[c->index]; X p->count = p->cur = 0; X p->pitch_total = p->yaw_total = 0.0; X X if (c->station[0].type == WK_M61A1 && c->station[0].info > 0) X return 1; X else X return 0; X X} X X/* X * m61a1 display function X * X * Update the HUD display strings associated with this weapon system. X */ X X/*ARGSUSED*/ Xint display_m61a1 (c, w, u) Xcraft *c; XcraftType *w; Xviewer *u; { X X char s[16]; X register int tx, ty, m; X XSegment seg[2]; X Drawable d; X hist_t *p; X X p = &history[c->index]; X if ((m = p->cur = p->cur + 1) >= HIST) X m = p->cur = 0; X if (p->count != HIST) X (p->count) ++; X else { X p->pitch_total -= p->pitch_hist[m]; X p->yaw_total -= p->yaw_hist[m]; X } X p->pitch_hist[m] = c->q; X p->yaw_hist[m] = c->r; X p->pitch_total += c->q; X p->yaw_total += c->r; X X d = (u->v->flags & VPMono) ? (Drawable) u->v->monoPixmap : X (Drawable) u->win; X X strcpy (c->leftHUD[0], "LCOS"); X sprintf (s, "%.3d M-61A1", c->station[0].info); X strcpy (c->leftHUD[1], s); X if (c->station[0].info3) X strcpy (c->leftHUD[2], "FIRING"); X else X strcpy (c->leftHUD[2], ""); X X/* X * Draw the boresight cross X */ X X m = (double) BORE_CROSS_SIZE * (double) u->width / X (double) VIEW_WINDOW_WIDTH + 0.5; X X tx = u->xCenter; X ty = u->yCenter - 3 * 9; /* kludged, for now */ X seg[0].x1 = tx - m; X seg[0].x2 = tx + m; X seg[0].y1 = seg[0].y2 = ty; X seg[1].x1 = seg[1].x2 = tx; X seg[1].y1 = ty - m; X seg[1].y2 = ty + m; X XDrawSegments (u->dpy, d, u->gc, seg, 2); X X/* X * Plot the reticle. X */ X X lcos (c, u); X X} X Xint press_m61a1 (c) Xcraft *c; { X c->station[0].info3 |= 1; X return 0; X} X Xint release_m61a1 (c) Xcraft *c; { X c->station[0].info3 &= ~1; X return 0; X} X Xextern long random (); X Xint update_m61a1 (c) Xcraft *c; { X X craft *m; X int i; X VPoint tmp, mvel; X double fuzz, fuzzAngle, phiY, phiZ, tm, mv = MUZZLE_VELOCITY; X X if (c->station[0].info3 == 0) X return 0; X X/* X * Got any ammunition ? X */ X X if (c->station[0].info <= 0) X return -1; X X/* X * Allocate a projectile record X */ X X for ((i=0, m= &mtbl[0]); i<MAXPROJECTILES; (++i, ++m)) X if (m->type == CT_FREE) { X m->type = CT_CANNON; X break; X } X X if (i == MAXPROJECTILES) X return -1; X X/* X * Determine how far we're fuzzed off the ideal boresight. X */ X X fuzz = ((double)(random() & 32767) + X (double)(random() & 32767)) / 32768.0 - 1.0; X fuzz = fuzz * FUZZ; X fuzzAngle = 2.0 * pi * (double)(random() & 511) / 512.0; X X/* X * Determine the initial velocity of the projectile stream. X */ X X phiZ = fuzz * sin (fuzzAngle); X phiY = fuzz * cos (fuzzAngle); X tm = mv * cos (OFFSET_ANGLE + phiZ); X X tmp.x = tm * cos (phiY); X tmp.y = tm * sin (phiY); X tmp.z = mv * sin (-OFFSET_ANGLE + phiZ); X VTransform (&tmp, &(c->trihedral), &mvel); X X m->owner = c->index; X m->createTime = curTime; X m->Cg = c->Cg; X m->curRoll = c->curRoll; X m->curPitch = c->curPitch; X m->curHeading = c->curHeading; X m->Cg.x += mvel.x; X m->Cg.y += mvel.y; X m->Cg.z += mvel.z; X X/* X * Determine the initial position. X */ X X VTransform (&(c->cinfo->wStation[0]), &(c->trihedral), &tmp); X m->Sg.x = c->Sg.x + tmp.x; X m->Sg.y = c->Sg.y + tmp.y; X m->Sg.z = c->Sg.z + tmp.z; X m->prevSg = m->Sg; X X/* X * Subtract the number of rounds fired. X */ X X m->rounds = RATE_OF_FIRE * deltaT; X m->rounds = (m->rounds > c->station[0].info) ? c->station[0].info : m->rounds; X m->tracerMod = TRACER_MOD; X m->tracerVal = c->station[0].info2 % m->tracerMod; X c->station[0].info -= m->rounds; X c->station[0].info2 += m->rounds; X X m->cinfo = lookupCraft ("m61a1 cannon"); X X return 0; X X} X Xextern craftType * newCraft (); X Xint placeCannon(c, m, poly, cnt) Xcraft *c; XVMatrix *m; XVPolygon **poly; Xint *cnt; { X X double t, intervalT; X VPoint v, s; X int i, j, k, n; X VPoint *q, tmp; X VPolygon **p; X X/* X * Reduce the shell path to a set of parametric equations. X */ X X v.x = c->Sg.x - c->prevSg.x; X v.y = c->Sg.y - c->prevSg.y; X v.z = c->Sg.z - c->prevSg.z; X X/* X * Now add each tracer shell to the view. X */ X X intervalT = 1.0 / c->rounds; X for (t=intervalT*c->tracerVal; t <= 1.0; t += intervalT * TRACER_MOD) { X s.x = -v.x * t; X s.y = -v.y * t; X s.z = -v.z * t; X if (c->Sg.z + s.z > 0.0) /* underground? don't plot it */ X continue; X n = c->cinfo->object->numPolys; X p = c->cinfo->object->polygon; X j = *cnt; X for (i=0; i<n; ++i) { X poly[j] = VCopyPolygon(p[i]); X for ((k=0, q=poly[j]->vertex); k<poly[j]->numVtces; (++k, ++q)) { X VTransform(q, m, &tmp); X tmp.x += s.x; X tmp.y += s.y; X tmp.z += s.z; X *q = tmp; X } X ++j; X } X *cnt = j; X } X X return(0); X} X Xvoid initm61a1() X{ X X craftType *c; X FILE *f; X X wtbl[1] = m61a1Desc; X X c = newCraft(); X c->name = strdup("m61a1 cannon"); X X c->placeProc = placeCannon; X X f = acm_fopen ("bullet", "r"); X c->object = VReadObject(f); X fclose (f); X X} X Xint cannonCalculations (c) Xcraft *c; { X X X/* X * Kill projectile streams after 10.0 seconds of flight or when X * they strike the ground. X */ X X if (curTime - c->createTime > 10.0) X return 1; X X if (c->Sg.z > 0.0) X return 1; X X c->prevSg = c->Sg; X X c->Sg.x += c->Cg.x * deltaT; X c->Sg.y += c->Cg.y * deltaT; X c->Sg.z += c->Cg.z * deltaT + a * halfDeltaTSquared; X X c->Cg.z += a * deltaT; X return 0; X X} X X/* X * plotReticle : draws the aiming reticle onto the HUD. X * X * An aiming reticle is a circle with an inner arc that clues the X * pilot as to the range of the target. Twelve tic marks are used X * to demarcate the range -- each tic represents 1000 feet of X * distance. X */ X Xstatic struct { X double x, y; X } ticTable[12] = { X { 0.0, -1.0 }, X { 0.5, -0.866 }, X { 0.866, -0.5 }, X { 1.0, 0.0 }, X { 0.866, 0.5 }, X { 0.5, 0.866 }, X { 0.0, 1.0 }, X { -0.5, 0.866 }, X { -0.866, 0.5 }, X { -1.0, 0.0 }, X { -0.866, -0.5 }, X { -0.5, -0.866 } }; X Xvoid plotReticle (c, u, x, y, range) Xcraft *c; Xviewer *u; Xint x; Xint y; Xint range; { X X#define RETICLE_SIZE 65 X#define RANGE_SIZE 59 X#define TICK_SIZE (RETICLE_SIZE + 12) X X register int i, size, xt, yt, size1, xt1, yt1, nseg, arc; X XSegment seg[16]; X register double rs, rt; X Drawable d; X X d = (u->v->flags & VPMono) ? (Drawable) u->v->monoPixmap : X (Drawable) u->win; X X size = RETICLE_SIZE * u->scaleFactor + 0.5; X if ((size & 1) == 0) X ++size; /* insure it is an odd value */ X xt = x - size / 2; X yt = y - size / 2; X rs = size / 2; X rt = ((TICK_SIZE + 1) / 2) * u->scaleFactor; X X for (i=0; i < 12; i++) { X seg[i].x1 = x + X (int) (rs * ticTable[i].x + 0.5); X seg[i].y1 = y + X (int) (rs * ticTable[i].y + 0.5); X seg[i].x2 = x + X (int) (rt * ticTable[i].x + 0.5); X seg[i].y2 = y + X (int) (rt * ticTable[i].y + 0.5); X } X X nseg = 12; X XDrawArc (u->dpy, d, u->gc, xt, yt, size, size, 0, X 360 * 64); X X if (range != -1) { X if (range > 12000) X range = 12000; X arc = - range * 23040 / 12000; X size1 = RANGE_SIZE * u->scaleFactor + 0.5; X if ((size1 & 1) == 0) X ++ size1; X if (size == size1) X -- size1; X xt1 = x - size1 / 2; X yt1 = y - size1 / 2; X XDrawArc (u->dpy, d, u->gc, xt1, yt1, size1, size1, X 90 * 64, arc); X } X X XDrawSegments (u->dpy, d, u->gc, seg, nseg); X X} X Xvoid lcos (c, u) Xcraft *c; Xviewer *u; { X X X/* X * How does this LCOS thing work, anyway? X * X * First, let me say that this may or, more probably, may not look X * anything like the technique used in a real fighter's gun sighting X * system. Having said that, here's the basic assumptions and steps X * used to generate the reticle on the HUD: X * X * 1) Using radar, we know the distance to the target. Assuming that the X * radar is in working order and is locked onto something. X * X * 2) We know the muzzle velocity of the shells we're firing and can X * use that value to closely estimate the flight time of the shells X * to a target that's a certain distance away (the target). Call X * this value "fTime". X * X * 3) Use the muzzle velocity vector to determine the X * relative position (w.r.t. out craft) of a shell "fTime" seconds into X * its flight. Call this vector "pos". X * X * 4) Gravity will accelerate the shells. Use d = 0.5 * g * t ^ 2 X * to add a distance (along the Z axis that will approximate the X * effect of gravity. Add that to "pos". X * X * 5) We know our pitch and yaw rates. These rotations will have the X * effect of visually "bending" the cannon stream, from the pilot's X * perspective. Use the values to generate a matrix to transform X * "pos" by an amount proportional to our "fTime" value. X * X * 6) Convert our "pos" vector to screen x,y coordinates and call X * plotReticle. X */ X X double fTime, range, gm, pitch_rate, yaw_rate; X VPoint pos, tmp, tmp1; X VPoint zg, z; X VMatrix rotation; X register int x, y, clue; X hist_t *hist; X X hist = &history[c->index]; X X/* Step 1 */ X X if (c->curRadarTarget >= 0) X range = c->targetDistance; X else X range = 2500.0; X X/* Step 2 */ X X fTime = range / MUZZLE_VELOCITY; X X/* Step 3 */ X X pos.x = fTime * MUZZLE_VELOCITY * cos (OFFSET_ANGLE); X pos.y = 0.0; X pos.z = - fTime * MUZZLE_VELOCITY * sin (OFFSET_ANGLE); X X/* Step 4 */ X X zg.x = zg.y = 0.0; X zg.z = 1.0; X X VTransform (&zg, &(c->Itrihedral), &z); X X gm = 0.5 * a * fTime * fTime; X pos.x += z.x * gm; X pos.y += z.y * gm; X pos.z += z.z * gm; X X/* Step 5 */ X X VIdentMatrix (&rotation); X X pitch_rate = hist->pitch_total / (double) hist->count; X yaw_rate = hist->yaw_total / (double) hist->count; X X if (pitch_rate != 0.0) X VRotate (&rotation, YRotation, pitch_rate * fTime); X if (yaw_rate != 0.0) X VRotate (&rotation, ZRotation, yaw_rate * fTime); X X VTransform (&pos, &rotation, &tmp); X X/* Step 6 */ X X tmp1 = tmp; X x = u->v->Middl.x + tmp1.y * u->v->Scale.x / tmp1.x + 0.5; X y = u->v->Middl.y + tmp1.z * u->v->Scale.y / tmp1.x + 0.5; X X if (c->curRadarTarget >= 0) X clue = c->targetDistance + 0.5; X else X clue = -1; X X plotReticle (c, u, x, y, clue); X} X X/* X * lookForCannonImpacts : Track cannon shells and look for impacts with X * aircraft. This algorithm tracks each shell's X * flight. X */ X Xtypedef struct _entry { X double time; X double min; X craft *c; X struct _entry *next; X } entry; X X Xextern int cdebug; X Xvoid lookForCannonImpacts (m) Xcraft *m; { X X craft *c; X entry p[MAXPLAYERS], *list, *q, *r, *rprev; X VPoint v, s0, prevSg, Vm; X double t, d, roundT, intervalT; X int j; X X intervalT = 1.0 / m->rounds; X for (roundT=0.0; roundT < 1.0; roundT += intervalT) { X X Vm.x = m->Sg.x - m->prevSg.x; X Vm.y = m->Sg.y - m->prevSg.y; X Vm.z = m->Sg.z - m->prevSg.z; X X prevSg.x = m->prevSg.x - Vm.x * (1.0 - roundT); X prevSg.y = m->prevSg.y - Vm.y * (1.0 - roundT); X prevSg.z = m->prevSg.z - Vm.z * (1.0 - roundT); X X list = (entry *) NULL; X for (c=ptbl, j=0; j<MAXPLAYERS; ++j, ++c) { X X if (c->type == CT_FREE || m->owner == c->index) X continue; X X/* X * Reduce the relative motion of this object to a the parametric system X * of equations: X * x(t) = vx * t + s0x X * y(t) = vy * t + s0y X * z(t) = vz * t + s0z X * X * We can then compute the time of perigee (closest pass) along with X * the associated minimum distance. X */ X X v.x = c->Sg.x - c->prevSg.x - Vm.x; X v.y = c->Sg.y - c->prevSg.y - Vm.y; X v.z = c->Sg.z - c->prevSg.z - Vm.z; X s0.x = c->prevSg.x - prevSg.x; X s0.y = c->prevSg.y - prevSg.y; X s0.z = c->prevSg.z - prevSg.z; X X/* X * Compute time of minimum distance between the two objects (note that units X * here are UPDATE_INTERVAL seconds). X */ X X t = - (v.x * s0.x + v.y * s0.y + v.z * s0.z) / X (v.x * v.x + v.y * v.y + v.z * v.z); X X if (cdebug) X printf ("perigee in %g seconds with player %d\n", X t*deltaT, j); X X/* X * If the closest pass occurs during this update interval, check for a hit. X * We'll build a linked list of all craft that this projectile may strike X * during this period, arranged in ascending order by time of "perigee" X * (closest pass). We'll then test for strikes. If a projectile misses X * the first object, then it may have struck subsequent objects in the X * list ... X */ X X/* X * One special case occurs when a target or missile's turn suddenly X * changes the perigee time from positive to negative. If the missile X * is within hitting range at t=0 and the time of perigee is negative, X * then zap 'em. X */ X X if (t < 0.0) { X d = sqrt (s0.x *s0.x + s0.y * s0.y + X s0.z * s0.z); X if (isCannonHit (d, c)) { X printf ("detected a \"curve hit\"\n"); X t = 0.0; X } X } X X if (t >= 0.0 && t <= 1.0) { X q = &p[j]; X if (list == (entry *) NULL) { X q->next = list; X list = q; X } X else if (list->time > t) { X q->next = list; X list = q; X } X else { X for (rprev=list, r=list->next; r != (entry *) NULL;) { X if (r->time > t) break; X rprev = r; X r = r->next; X } X if (rprev != list) X rprev->next = q; X q->next = r; X } X q->time = t; X q->c = c; X q->min = sqrt (pow(v.x * t + s0.x, 2.0) + X pow (v.y * t + s0.y, 2.0) + X pow (v.z * t + s0.z, 2.0) ); X if (cdebug) X printf ("perigee %g feet; craft %d.\n", X q->min, j); X } X } X X/* X * Now look for cannon hits in the list of perigees. X */ X X for (r=list; r != (entry *) NULL; r=r->next) X if (isCannonHit (r->min, r->c)) { X /* killMissile (m); */ X if (absorbDamage (r->c, 3) == 0) X killPlayer (r->c); X break; X } X } X} X X/*ARGSUSED*/ Xint isCannonHit (min, c) Xdouble min; Xcraft *c; { X X return (min < 50.0) ? 1 : 0; X} END_OF_FILE if test 14922 -ne `wc -c <'acm/fsim/m61a1.c'`; then echo shar: \"'acm/fsim/m61a1.c'\" unpacked with wrong size! fi # end of 'acm/fsim/m61a1.c' fi echo shar: End of archive 7 \(of 9\). cp /dev/null ark7isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 9 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 -- Riley Rainey Internet: riley@mips.com MIPS Computer Systems Phone: +1 214 770-7979 Dallas, Texas