[Simh] [RFC, PATCH] Linux Installer for VAX emulator (resend part 2/2)

Peter Lund firefly at vax64.dk
Fri Sep 14 12:07:46 EDT 2007


And here's the rest of the patch.

-Peter

diff -r 76cb8a5e0cbd -r b0a8c6ad8866 autopackage/default.apspec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/autopackage/default.apspec	Thu Sep 13 06:27:10 2007 +0200
@@ -0,0 +1,90 @@
+# -*-shell-script-*- (A vain attempt to get decent syntax highlighting.
+#                     Doesn't work in gedit -- you'll have to select it
+#                     manually)
+#
+#
+# This is a very rough Autopackage for the VAX emulator from simh
+#
+# Major scores:
+#  o easy to install
+#  o networking is enabled (unlike the debian/ubuntu packages)
+#  o the VAX firmware ("BIOS") is included (unlike the debian/ubuntu packages)
+#  o much reduced need to fiddle with tun/tap for networking
+#  o contains internal dhcp/bootp for automatic IP-address assignment
+#  o contains internal NFS server to get you up and running quickly
+# 
+# Minor scores:
+#  o the other, distracting, machines are not included
+#
+# Major nits:
+#  o doesn't emulate any VAX graphics
+#  o doesn't contain VNC server
+#  o command language (for configuration) is hard to remember
+#  o not integrated with a systems debugger
+#  o can't run stand-alone VAX/PDP-11 user-level binaries
+#
+
+[Meta]
+RootName: @vax64.dk/vaxemu:$SOFTWAREVERSION
+DisplayName: VAX emulator
+ShortName: vaxemu
+Maintainer: Bob Supnik <simh at trailing-edge.com>
+Packager: Peter Lund <firefly at vax64.dk>
+Summary: VAX whole-system emulator
+URL: http://www.vax64.dk/vaxemu/
+License: Unknown
+SoftwareVersion: 3.7.3
+PackageVersion: 1
+AutopackageTarget: 1.0
+
+
+[Description]
+SIMH is a collection of emulators of old computer systems.  This package
+contains just the emulator for one of those, namely the VAX from Digital
+Equipment Corporation (DEC).
+ 
+[BuildPrepare]
+mkdir -p BIN
+make clean
+
+export CC=apgcc
+export APBUILD_CC='ccache gcc'
+export CCACHE=
+
+make USE_NETWORK=1 vax
+mv BIN/vax BIN/vaxemu
+
+[BuildUnprepare]
+#
+
+[Imports]
+import <<EOF
+$source_dir/BIN/vaxemu
+$source_dir/VAX/ka655x.bin
+$source_dir/man
+EOF
+
+
+[Prepare]
+# this just kills a warning from makepackage
+
+
+[Install]
+# Program
+installExe vaxemu
+copyFiles ka655x.bin "$PREFIX/share/vaxemu/"
+
+#
+# Man pages
+#
+installMan 1 man/man1/vaxemu.1
+
+# workaround distro bug (the ':' is crucial)
+updateEnv MANPATH "$PREFIX/share/man:"
+
+
+
+[Uninstall]
+# Usually just the following line is enough to uninstall everything
+uninstallFromLog
+
diff -r 76cb8a5e0cbd -r b0a8c6ad8866 makefile
--- a/makefile	Tue Sep 11 12:25:43 2007 +0200
+++ b/makefile	Thu Sep 13 06:27:10 2007 +0200
@@ -1,388 +1,162 @@
-# CC Command
-#
-# Note: -O2 is sometimes broken in GCC when setjump/longjump is being
-# used. Try -O2 only with released simulators.
-#
+#
+# This is a first cut at a better makefile than the one SimH currently has.
+# All other targets than the VAX have been cut out for simplicity.  They will
+# be reinstated once I'm satisfied with the structure of the makefile.
+# -- Peter Lund <firefly at vax64.dk>
+#
+
+
+# Decent values for toolchain program
+#
+# These gymnastics mean the user can override CC, LD, and CCACHE when invoking
+# the makefile.
+ifneq ("$(origin CC)", "command line")
+ ifneq ("$(origin CC)", "environment")
+  CC=gcc
+ endif
+endif
+ifneq ("$(origin LD)", "command line")
+ ifneq ("$(origin LD)", "environment")
+  # gcc acts as a wrapper around ld and passes it some Seekret Parameters that
+  # make things work.  Using gcc instead of ld is standard practice.
+  LD=gcc
+ endif
+endif
+ifneq ("$(origin CCACHE)", "command line")
+ ifneq ("$(origin CCACHE)", "environment")
+  CCACHE:=$(shell which ccache)
+ endif
+endif
+
+# Use ccache to speed things up
+CC:=$(CCACHE) $(CC)
+LD:=$(CCACHE) $(LD)
+
+# nice and simple flags, can be overridden from the command line
+# FIXME doesn't work yet.  The += used below in the file get inactivated when
+#       CFLAGS is set from the command line
+CFLAGS  ?= -O2 -g
+LDFLAGS :=
+
+# Default for network
+USE_NETWORK=1
+
+
+# FIXME this macro needs a better name
+XCFLAGS = $(CFLAGS)
+
 ifeq ($(WIN32),)
-#Unix Environments
-ifeq ($(OSTYPE),solaris)
-OS_CCDEFS = -lsocket -lnsl -lpthread -D_GNU_SOURCE
+ #Unix Environments
+ ifeq ($(OSTYPE),solaris)
+  OS_CCDEFS = -D_GNU_SOURCE
+  LDFLAGS  += -lsocket -lnsl -lpthread
+ else
+  OS_CCDEFS = -D_GNU_SOURCE -DHAVE_READLINE
+  LDFLAGS  += -lrt -lreadline
+ endif
+
+ ifeq ($(OSTYPE),macos)
+  XCFLAGS += -std=c99 -U__STRICT_ANSI__ $(OS_CCDEFS) -I .
+  LDFLAGS += -lm -lrt
+ else
+  XCFLAGS += -std=c99 -U__STRICT_ANSI__  $(OS_CCDEFS) -I .
+  LDFLAGS += -lm
+ endif
+
+ ifneq ($(USE_NETWORK),)
+  NETWORK_OPT = -DUSE_NETWORK
+  XCFLAGS += -DUSE_NETWORK
+  LDFLAGS += -lpcap
+ endif
 else
-OS_CCDEFS = -D_GNU_SOURCE
+ #Win32 Environments
+ LDFLAGS = -lm -lwsock32 -lwinmm
+ XCFLAGS += -std=c99 -U__STRICT_ANSI__ -O0 -I.
+ EXE = .exe
+
+ ifneq ($(USE_NETWORK),)
+  NETWORK_OPT = -DUSE_NETWORK -lwpcap -lpacket
+  XCFLAGS  += -DUSE_NETWORK
+  LDFLAGS += -lwpcap -lpacket
+ endif
 endif
-ifeq ($(OSTYPE),macos)
-CC = gcc -std=c99 -O2 -U__STRICT_ANSI__ -g -lm -lrt $(OS_CCDEFS) -I .
-else
-CC = gcc -std=c99 -O2 -U__STRICT_ANSI__ -g -lm $(OS_CCDEFS) -I .
-endif
-ifeq ($(USE_NETWORK),)
-else
-NETWORK_OPT = -DUSE_NETWORK -isystem /usr/local/include /usr/local/lib/libpcap.a
-endif
-else
-#Win32 Environments
-LDFLAGS = -lm -lwsock32 -lwinmm
-CC = gcc -std=c99 -U__STRICT_ANSI__ -O0 -I.
-EXE = .exe
-ifeq ($(USE_NETWORK),)
-else
-NETWORK_OPT = -DUSE_NETWORK -lwpcap -lpacket
-endif
-endif
+
+#
+# switch off GNU Make "features"
+#
+.SUFFIXES:	# delete all default suffixes
+
 
 #
 # Common Libraries
 #
 BIN = BIN/
-SIM = scp.c sim_console.c sim_fio.c sim_timer.c sim_sock.c \
-	sim_tmxr.c sim_ether.c sim_tape.c
 
-
-#
-# Emulator source files and compile time options
-#
-PDP1D = PDP1
-PDP1 = ${PDP1D}/pdp1_lp.c ${PDP1D}/pdp1_cpu.c ${PDP1D}/pdp1_stddev.c \
-	${PDP1D}/pdp1_sys.c ${PDP1D}/pdp1_dt.c ${PDP1D}/pdp1_drm.c \
-	${PDP1D}/pdp1_clk.c ${PDP1D}/pdp1_dcs.c
-PDP1_OPT = -I ${PDP1D}
-
-
-NOVAD = NOVA
-NOVA = ${NOVAD}/nova_sys.c ${NOVAD}/nova_cpu.c ${NOVAD}/nova_dkp.c \
-	${NOVAD}/nova_dsk.c ${NOVAD}/nova_lp.c ${NOVAD}/nova_mta.c \
-	${NOVAD}/nova_plt.c ${NOVAD}/nova_pt.c ${NOVAD}/nova_clk.c \
-	${NOVAD}/nova_tt.c ${NOVAD}/nova_tt1.c ${NOVAD}/nova_qty.c
-NOVA_OPT = -I ${NOVAD}
-
-
-ECLIPSE = ${NOVAD}/eclipse_cpu.c ${NOVAD}/eclipse_tt.c ${NOVAD}/nova_sys.c \
-	${NOVAD}/nova_dkp.c ${NOVAD}/nova_dsk.c ${NOVAD}/nova_lp.c \
-	${NOVAD}/nova_mta.c ${NOVAD}/nova_plt.c ${NOVAD}/nova_pt.c \
-	${NOVAD}/nova_clk.c ${NOVAD}/nova_tt1.c ${NOVAD}/nova_qty.c
-ECLIPSE_OPT = -I ${NOVAD} -DECLIPSE -DUSE_INT64 
-
-
-PDP18BD = PDP18B
-PDP18B = ${PDP18BD}/pdp18b_dt.c ${PDP18BD}/pdp18b_drm.c ${PDP18BD}/pdp18b_cpu.c \
-	${PDP18BD}/pdp18b_lp.c ${PDP18BD}/pdp18b_mt.c ${PDP18BD}/pdp18b_rf.c \
-	${PDP18BD}/pdp18b_rp.c ${PDP18BD}/pdp18b_stddev.c ${PDP18BD}/pdp18b_sys.c \
-	${PDP18BD}/pdp18b_rb.c ${PDP18BD}/pdp18b_tt1.c ${PDP18BD}/pdp18b_fpp.c
-PDP4_OPT = -DPDP4 -I ${PDP18BD}
-PDP7_OPT = -DPDP7 -I ${PDP18BD}
-PDP9_OPT = -DPDP9 -I ${PDP18BD}
-PDP15_OPT = -DPDP15 -I ${PDP18BD}
-
-
-PDP11D = PDP11
-PDP11 = ${PDP11D}/pdp11_fp.c ${PDP11D}/pdp11_cpu.c ${PDP11D}/pdp11_dz.c \
-	${PDP11D}/pdp11_cis.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_rk.c \
-	${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rp.c ${PDP11D}/pdp11_rx.c \
-	${PDP11D}/pdp11_stddev.c ${PDP11D}/pdp11_sys.c ${PDP11D}/pdp11_tc.c \
-	${PDP11D}/pdp11_tm.c ${PDP11D}/pdp11_ts.c ${PDP11D}/pdp11_io.c \
-	${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_tq.c ${PDP11D}/pdp11_pclk.c \
-	${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_pt.c ${PDP11D}/pdp11_hk.c \
-	${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_xu.c ${PDP11D}/pdp11_vh.c \
-	${PDP11D}/pdp11_rh.c ${PDP11D}/pdp11_tu.c ${PDP11D}/pdp11_cpumod.c \
-	${PDP11D}/pdp11_cr.c ${PDP11D}/pdp11_rf.c ${PDP11D}/pdp11_dl.c \
-	${PDP11D}/pdp11_ta.c
-PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT}
-
-
-VAXD = VAX
-VAX = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c ${VAXD}/vax_io.c \
-	${VAXD}/vax_cis.c ${VAXD}/vax_octa.c  ${VAXD}/vax_cmode.c \
-	${VAXD}/vax_mmu.c ${VAXD}/vax_stddev.c ${VAXD}/vax_sysdev.c \
-	${VAXD}/vax_sys.c  ${VAXD}/vax_syscm.c ${VAXD}/vax_syslist.c \
-	${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_ts.c \
-	${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
-	${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_ry.c \
-	${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c
-VAX_OPT = -DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
-
-
-VAX780 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
-	${VAXD}/vax_cis.c ${VAXD}/vax_octa.c  ${VAXD}/vax_cmode.c \
-	${VAXD}/vax_mmu.c ${VAXD}/vax_sys.c  ${VAXD}/vax_syscm.c \
-	${VAXD}/vax780_stddev.c ${VAXD}/vax780_sbi.c \
-	${VAXD}/vax780_mem.c ${VAXD}/vax780_uba.c ${VAXD}/vax780_mba.c \
-	${VAXD}/vax780_fload.c ${VAXD}/vax780_syslist.c \
-	${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_ts.c \
-	${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
-	${PDP11D}/pdp11_xu.c ${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_cr.c \
-	${PDP11D}/pdp11_rp.c ${PDP11D}/pdp11_tu.c ${PDP11D}/pdp11_hk.c
-VAX780_OPT = -DVM_VAX -DVAX_780 -DUSE_INT64 -DUSE_ADDR64 -I VAX -I ${PDP11D} ${NETWORK_OPT}
-
-
-PDP10D = PDP10
-PDP10 = ${PDP10D}/pdp10_fe.c ${PDP11D}/pdp11_dz.c ${PDP10D}/pdp10_cpu.c \
-	${PDP10D}/pdp10_ksio.c ${PDP10D}/pdp10_lp20.c ${PDP10D}/pdp10_mdfp.c \
-	${PDP10D}/pdp10_pag.c ${PDP10D}/pdp10_rp.c ${PDP10D}/pdp10_sys.c \
-	${PDP10D}/pdp10_tim.c ${PDP10D}/pdp10_tu.c ${PDP10D}/pdp10_xtnd.c \
-	${PDP11D}/pdp11_pt.c ${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_xu.c \
-	${PDP11D}/pdp11_cr.c
-PDP10_OPT = -DVM_PDP10 -DUSE_INT64 -I ${PDP10D} -I ${PDP11D} ${NETWORK_OPT}
-
-
-
-PDP8D = PDP8/
-PDP8 = ${PDP8D}/pdp8_cpu.c ${PDP8D}/pdp8_clk.c ${PDP8D}/pdp8_df.c \
-	${PDP8D}/pdp8_dt.c ${PDP8D}/pdp8_lp.c ${PDP8D}/pdp8_mt.c \
-	${PDP8D}/pdp8_pt.c ${PDP8D}/pdp8_rf.c ${PDP8D}/pdp8_rk.c \
-	${PDP8D}/pdp8_rx.c ${PDP8D}/pdp8_sys.c ${PDP8D}/pdp8_tt.c \
-	${PDP8D}/pdp8_ttx.c ${PDP8D}/pdp8_rl.c ${PDP8D}/pdp8_tsc.c \
-	${PDP8D}/pdp8_td.c ${PDP8D}/pdp8_ct.c
-PDP8_OPT = -I ${PDP8D}
-
-
-H316D = H316
-H316 = ${H316D}/h316_stddev.c ${H316D}/h316_lp.c ${H316D}/h316_cpu.c \
-	${H316D}/h316_sys.c ${H316D}/h316_mt.c ${H316D}/h316_fhd.c \
-	${H316D}/h316_dp.c
-H316_OPT = -I ${H316D}
-
-
-HP2100D = HP2100
-HP2100 = ${HP2100D}/hp2100_stddev.c ${HP2100D}/hp2100_dp.c ${HP2100D}/hp2100_dq.c \
-	${HP2100D}/hp2100_dr.c ${HP2100D}/hp2100_lps.c ${HP2100D}/hp2100_ms.c \
-	${HP2100D}/hp2100_mt.c ${HP2100D}/hp2100_mux.c ${HP2100D}/hp2100_cpu.c \
-	${HP2100D}/hp2100_fp.c ${HP2100D}/hp2100_sys.c ${HP2100D}/hp2100_lpt.c \
-	${HP2100D}/hp2100_ipl.c ${HP2100D}/hp2100_ds.c ${HP2100D}/hp2100_cpu0.c \
-	${HP2100D}/hp2100_cpu1.c ${HP2100D}/hp2100_cpu2.c ${HP2100D}/hp2100_cpu3.c \
-	${HP2100D}/hp2100_cpu4.c ${HP2100D}/hp2100_fp1.c
-HP2100_OPT = -DHAVE_INT64 -I ${HP2100D}
-
-
-I1401D = I1401
-I1401 = ${I1401D}/i1401_lp.c ${I1401D}/i1401_cpu.c ${I1401D}/i1401_iq.c \
-	${I1401D}/i1401_cd.c ${I1401D}/i1401_mt.c ${I1401D}/i1401_dp.c \
-	${I1401D}/i1401_sys.c
-I1401_OPT = -I ${I1401D}
-
-
-I1620D = I1620
-I1620 = ${I1620D}/i1620_cd.c ${I1620D}/i1620_dp.c ${I1620D}/i1620_pt.c \
-	${I1620D}/i1620_tty.c ${I1620D}/i1620_cpu.c ${I1620D}/i1620_lp.c \
-	${I1620D}/i1620_fp.c ${I1620D}/i1620_sys.c
-I1620_OPT = -I ${I1620D}
-
-
-I7094D = I7094
-I7094 = ${I7094D}/i7094_cpu.c ${I7094D}/i7094_cpu1.c ${I7094D}/i7094_io.c \
-	${I7094D}/i7094_cd.c ${I7094D}/i7094_clk.c ${I7094D}/i7094_com.c \
-	${I7094D}/i7094_drm.c ${I7094D}/i7094_dsk.c ${I7094D}/i7094_sys.c \
-	${I7094D}/i7094_lp.c ${I7094D}/i7094_mt.c ${I7094D}/i7094_binloader.c
-I7094_OPT = -DUSE_INT64 -I ${I7094D}
-
-
-IBM1130D = Ibm1130
-IBM1130 = ${IBM1130D}/ibm1130_cpu.c ${IBM1130D}/ibm1130_cr.c \
-	${IBM1130D}/ibm1130_disk.c ${IBM1130D}/ibm1130_stddev.c \
-	${IBM1130D}/ibm1130_sys.c ${IBM1130D}/ibm1130_gdu.c \
-	${IBM1130D}/ibm1130_gui.c ${IBM1130D}/ibm1130_prt.c \
-	${IBM1130D}/ibm1130_fmt.c ${IBM1130D}/ibm1130_ptrp.c \
-	${IBM1130D}/ibm1130_plot.c ${IBM1130D}/ibm1130_sca.c \
-	${IBM1130D}/ibm1130_t2741.c
-IBM1130_OPT = -I ${IBM1130D}
-
-
-ID16D = Interdata
-ID16 = ${ID16D}/id16_cpu.c ${ID16D}/id16_sys.c ${ID16D}/id_dp.c \
-	${ID16D}/id_fd.c ${ID16D}/id_fp.c ${ID16D}/id_idc.c ${ID16D}/id_io.c \
-	${ID16D}/id_lp.c ${ID16D}/id_mt.c ${ID16D}/id_pas.c ${ID16D}/id_pt.c \
-	${ID16D}/id_tt.c ${ID16D}/id_uvc.c ${ID16D}/id16_dboot.c ${ID16D}/id_ttp.c
-ID16_OPT = -I ${ID16D}
-
-
-ID32D = Interdata
-ID32 = ${ID32D}/id32_cpu.c ${ID32D}/id32_sys.c ${ID32D}/id_dp.c \
-	${ID32D}/id_fd.c ${ID32D}/id_fp.c ${ID32D}/id_idc.c ${ID32D}/id_io.c \
-	${ID32D}/id_lp.c ${ID32D}/id_mt.c ${ID32D}/id_pas.c ${ID32D}/id_pt.c \
-	${ID32D}/id_tt.c ${ID32D}/id_uvc.c ${ID32D}/id32_dboot.c ${ID32D}/id_ttp.c
-ID32_OPT = -I ${ID32D}
-
-
-S3D = S3
-S3 = ${S3D}/s3_cd.c ${S3D}/s3_cpu.c ${S3D}/s3_disk.c ${S3D}/s3_lp.c \
-	${S3D}/s3_pkb.c ${S3D}/s3_sys.c
-S3_OPT = -I ${S3D}
-
-
-ALTAIRD = ALTAIR
-ALTAIR = ${ALTAIRD}/altair_sio.c ${ALTAIRD}/altair_cpu.c ${ALTAIRD}/altair_dsk.c \
-	${ALTAIRD}/altair_sys.c
-ALTAIR_OPT = -I ${ALTAIRD}
-
-
-ALTAIRZ80D = AltairZ80
-ALTAIRZ80 = ${ALTAIRZ80D}/altairz80_cpu.c ${ALTAIRZ80D}/altairz80_dsk.c \
-	${ALTAIRZ80D}/altairz80_sio.c ${ALTAIRZ80D}/altairz80_sys.c \
-	${ALTAIRZ80D}/altairz80_hdsk.c ${ALTAIRZ80D}/altairz80_net.c
-ALTAIRZ80_OPT = -I ${ALTAIRZ80D}
-
-
-GRID = GRI
-GRI = ${GRID}/gri_cpu.c ${GRID}/gri_stddev.c ${GRID}/gri_sys.c
-GRI_OPT = -I ${GRID}
-
-
-LGPD = LGP
-LGP = ${LGPD}/lgp_cpu.c ${LGPD}/lgp_stddev.c ${LGPD}/lgp_sys.c
-LGP_OPT = -I ${LGPD}
-
-
-SDSD = SDS
-SDS = ${SDSD}/sds_cpu.c ${SDSD}/sds_drm.c ${SDSD}/sds_dsk.c ${SDSD}/sds_io.c \
-	${SDSD}/sds_lp.c ${SDSD}/sds_mt.c ${SDSD}/sds_mux.c ${SDSD}/sds_rad.c \
-	${SDSD}/sds_stddev.c ${SDSD}/sds_sys.c
-SDS_OPT = -I ${SDSD}
 
 #
 # Build everything
 #
-ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \
-	vax vax780 nova eclipse hp2100 i1401 i1620 s3 \
-	altair altairz80 gri i1620 i7094 ibm1130 id16 \
-	id32 sds lgp h316 
+ALL = vax
 
 all : ${ALL}
 
+
+SIM =	scp.c      sim_console.c sim_fio.c  sim_timer.c sim_sock.c	\
+	sim_tmxr.c sim_ether.c   sim_tape.c
+
+VAX=	VAX/vax_cpu.c    VAX/vax_cpu1.c   VAX/vax_fpa.c    VAX/vax_io.c	\
+	VAX/vax_cis.c    VAX/vax_octa.c   VAX/vax_cmode.c		\
+	VAX/vax_mmu.c    VAX/vax_stddev.c VAX/vax_sysdev.c		\
+	VAX/vax_sys.c    VAX/vax_syscm.c  VAX/vax_syslist.c		\
+	PDP11/pdp11_rl.c PDP11/pdp11_rq.c PDP11/pdp11_ts.c		\
+	PDP11/pdp11_dz.c PDP11/pdp11_lp.c PDP11/pdp11_tq.c		\
+	PDP11/pdp11_xq.c PDP11/pdp11_ry.c				\
+	PDP11/pdp11_vh.c PDP11/pdp11_cr.c
+
+VAXOBJS = $(patsubst %.c,%.o,$(VAX))
+SIMOBJS = $(patsubst %.c,%.o,$(SIM))
+
+# Temporarily removed until we have squeaky clean, open source firmware
+#
+#VAX/ka655x.h:	VAX/ka655x.bin
+#	./wrapblob.pl 'firmware_ka655x' < $< > $@
+
+vax: $(BIN) $(BIN)vax$(EXE)
+
+BIN:
+	mkdir -p BIN
+
+$(BIN)vax$(EXE): $(VAXOBJS) $(SIMOBJS) autopackage/binreloc.o
+	$(LD) $(LDFLAGS) $^ -o $@
+
+define VAX_template
+ $(1): $(2) *.h VAX/*.h PDP11/*.h # VAX/ka655x.h
+	$$(CC) $$(XCFLAGS) -I VAX -I PDP11 -DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -c $$< -o $$@
+endef
+
+$(foreach file,$(VAX) $(SIM),$(eval $(call VAX_template,$(patsubst %.c,%.o,$(file)),$(file))))
+
+autopackage/binreloc.o:	autopackage/binreloc.c
+	$(CC) $(XCFLAGS) -DENABLE_BINRELOC -c $< -o $@
+
+
 clean :
 ifeq ($(WIN32),)
-	${RM} ${BIN}*
+	${RM} ${BIN}* *.o */*.o *.package *.meta *.xml
 else
-	if exist BIN\*.exe del /q BIN\*.exe
+	if exist BIN\*.exe del /q BIN\*.exe *.package *.meta *.xml
 endif
-
-#
-# Individual builds
-#
-pdp1 : ${BIN}pdp1${EXE}
-
-${BIN}pdp1${EXE} : ${PDP1} ${SIM}
-	${CC} ${PDP1} ${SIM} ${PDP1_OPT} -o $@ ${LDFLAGS}
-
-pdp4 : ${BIN}pdp4${EXE}
-
-${BIN}pdp4${EXE} : ${PDP18B} ${SIM}
-	${CC} ${PDP18B} ${SIM} ${PDP4_OPT} -o $@ ${LDFLAGS}
-
-pdp7 : ${BIN}pdp7${EXE}
-
-${BIN}pdp7${EXE} : ${PDP18B} ${SIM}
-	${CC} ${PDP18B} ${SIM} ${PDP7_OPT} -o $@ ${LDFLAGS}
-
-pdp8 : ${BIN}pdp8${EXE}
-
-${BIN}pdp8${EXE} : ${PDP8} ${SIM}
-	${CC} ${PDP8} ${SIM} ${PDP8_OPT} -o $@ ${LDFLAGS}
-
-pdp9 : ${BIN}pdp9${EXE}
-
-${BIN}pdp9${EXE} : ${PDP18B} ${SIM}
-	${CC} ${PDP18B} ${SIM} ${PDP9_OPT} -o $@ ${LDFLAGS}
-
-pdp15 : ${BIN}pdp15${EXE}
-
-${BIN}pdp15${EXE} : ${PDP18B} ${SIM}
-	${CC} ${PDP18B} ${SIM} ${PDP15_OPT} -o $@ ${LDFLAGS}
-
-pdp10 : ${BIN}pdp10${EXE}
-
-${BIN}pdp10${EXE} : ${PDP10} ${SIM}
-	${CC} ${PDP10} ${SIM} ${PDP10_OPT} -o $@ ${LDFLAGS}
-
-pdp11 : ${BIN}pdp11${EXE}
-
-${BIN}pdp11${EXE} : ${PDP11} ${SIM}
-	${CC} ${PDP11} ${SIM} ${PDP11_OPT} -o $@ ${LDFLAGS}
-
-vax : ${BIN}vax${EXE}
-
-${BIN}vax${EXE} : ${VAX} ${SIM}
-	${CC} ${VAX} ${SIM} ${VAX_OPT} -o $@ ${LDFLAGS}
-
-vax780 : ${BIN}vax780${EXE}
-
-${BIN}vax780${EXE} : ${VAX780} ${SIM}
-	${CC} ${VAX780} ${SIM} ${VAX780_OPT} -o $@ ${LDFLAGS}
-
-nova : ${BIN}nova${EXE}
-
-${BIN}nova${EXE} : ${NOVA} ${SIM}
-	${CC} ${NOVA} ${SIM} ${NOVA_OPT} -o $@ ${LDFLAGS}
-
-eclipse : ${BIN}eclipse${EXE}
-
-${BIN}eclipse${EXE} : ${ECLIPSE} ${SIM}
-	${CC} ${ECLIPSE} ${SIM} ${ECLIPSE_OPT} -o $@ ${LDFLAGS}
-
-h316 : ${BIN}h316${EXE}
-
-${BIN}h316${EXE} : ${H316} ${SIM}
-	${CC} ${H316} ${SIM} ${H316_OPT} -o $@ ${LDFLAGS}
-
-hp2100 : ${BIN}hp2100${EXE}
-
-${BIN}hp2100${EXE} : ${HP2100} ${SIM}
-	${CC} ${HP2100} ${SIM} ${HP2100_OPT} -o $@ ${LDFLAGS}
-
-i1401 : ${BIN}i1401${EXE}
-
-${BIN}i1401${EXE} : ${I1401} ${SIM}
-	${CC} ${I1401} ${SIM} ${I1401_OPT} -o $@ ${LDFLAGS}
-
-i1620 : ${BIN}i1620${EXE}
-
-${BIN}i1620${EXE} : ${I1620} ${SIM}
-	${CC} ${I1620} ${SIM} ${I1620_OPT} -o $@ ${LDFLAGS}
-
-i7094 : ${BIN}i7094${EXE}
-
-${BIN}i7094${EXE} : ${I7094} ${SIM}
-	${CC} ${I7094} ${SIM} ${I7094_OPT} -o $@ ${LDFLAGS}
-
-ibm1130 : ${BIN}ibm1130${EXE}
-
-${BIN}ibm1130${EXE} : ${IBM1130}
-	${CC} ${IBM1130} ${SIM} ${IBM1130_OPT} -o $@ ${LDFLAGS}
-
-s3 : ${BIN}s3${EXE}
-
-${BIN}s3${EXE} : ${S3} ${SIM}
-	${CC} ${S3} ${SIM} ${S3_OPT} -o $@ ${LDFLAGS}
-
-altair : ${BIN}altair${EXE}
-
-${BIN}altair${EXE} : ${ALTAIR} ${SIM}
-	${CC} ${ALTAIR} ${SIM} ${ALTAIR_OPT} -o $@ ${LDFLAGS}
-
-altairz80 : ${BIN}altairz80${EXE}
-
-${BIN}altairz80${EXE} : ${ALTAIRZ80} ${SIM} 
-	${CC} ${ALTAIRZ80} ${SIM} ${ALTAIRZ80_OPT} -o $@ ${LDFLAGS}
-
-gri : ${BIN}gri${EXE}
-
-${BIN}gri${EXE} : ${GRI} ${SIM}
-	${CC} ${GRI} ${SIM} ${GRI_OPT} -o $@ ${LDFLAGS}
-
-lgp : ${BIN}lgp${EXE}
-
-${BIN}lgp${EXE} : ${LGP} ${SIM}
-	${CC} ${LGP} ${SIM} ${LGP_OPT} -o $@ ${LDFLAGS}
-
-id16 : ${BIN}id16${EXE}
-
-${BIN}id16${EXE} : ${ID16} ${SIM}
-	${CC} ${ID16} ${SIM} ${ID16_OPT} -o $@ ${LDFLAGS}
-
-id32 : ${BIN}id32${EXE}
-
-${BIN}id32${EXE} : ${ID32} ${SIM}
-	${CC} ${ID32} ${SIM} ${ID32_OPT} -o $@ ${LDFLAGS}
-
-sds : ${BIN}sds${EXE}
-
-${BIN}sds${EXE} : ${SDS} ${SIM}
-	${CC} ${SDS} ${SIM} ${SDS_OPT} -o $@ ${LDFLAGS}
+
+distclean:	clean
+	rm -f *~ */*~ */*/*~ xx.ps xxx.ps *.package *.meta *.xml *.xml.old
+
+help:
+	@echo 'make {vax|pdp11|nova|eclipse|...}		builds specific emulators'
+	@echo 'make [all]					builds all emulators'
+	@echo ''
+	@echo 'make clean					delete compiled programs'
+	@echo 'make distclean					delete everything but source'
+	@echo 'make USE_NETWORK=1 <target>			enable network emulation'
+	@echo 'make CC=... <target>				override default C compiler'
+
+
diff -r 76cb8a5e0cbd -r b0a8c6ad8866 man/man1/vaxemu.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/man1/vaxemu.1	Thu Sep 13 06:27:10 2007 +0200
@@ -0,0 +1,21 @@
+.\" comments
+.TH vaxemu 1 "2007-08-29" "3.7.2" "VAX Emulator (from SIMH)"
+.SH NAME
+vaxemu - emulates a VAX computer system
+SH SYNOPSIS
+\fBvaxemu\fR [ options ] \fI<script to run>\fR
+
+.SH DESCRIPTION
+blahblahblah
+.SH OPTIONS
+blahblah
+.SH AUTHOR
+Bob Supnik et al, packaged by Peter Lund
+.SH REPORTING BUGS
+Peter Lund <firefly at vax64.dk>
+.SH HOMEPAGE
+http://www.vax64.dk/vaxemu/
+.SH DIAGNOSTICS
+.SH FILES
+.SH SEE ALSO
+
diff -r 76cb8a5e0cbd -r b0a8c6ad8866 scp.c
--- a/scp.c	Tue Sep 11 12:25:43 2007 +0200
+++ b/scp.c	Thu Sep 13 06:27:10 2007 +0200
@@ -177,6 +177,10 @@
 #include <readline/readline.h>
 #include <readline/history.h>
 #endif
+
+#ifdef __linux__
+# include "autopackage/binreloc.h"
+#endif
 
 #define EX_D            0                               /* deposit */
 #define EX_E            1                               /* examine */
@@ -582,6 +586,10 @@ CTAB *cmdp;
 #if defined (__MWERKS__) && defined (macintosh)
 argc = ccommand (&argv);
 #endif
+
+#ifdef __linux__
+br_init(NULL);	/* allow finding out where in the file system we live */
+#endif
 
 *cbuf = 0;                                              /* init arg buffer */
 sim_switches = 0;                                       /* init switches */




More information about the Simh mailing list