diff --git a/README.md b/README.md index e6c984e1..2556ef33 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ #### Gerardo Ospina has implemented a Manchester University SSEM (Small Scale Experimental Machine) simulator. +#### Richard Cornwell has implemented a Burroughs B5500 simulator. + #### Updated AltairZ80 simulator from Peter Schorn. #### Updated HP2100 simulator from Dave Bryan. diff --git a/Visual Studio Projects/B5500.vcproj b/Visual Studio Projects/B5500.vcproj new file mode 100644 index 00000000..15483ebd --- /dev/null +++ b/Visual Studio Projects/B5500.vcproj @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Visual Studio Projects/Simh.sln b/Visual Studio Projects/Simh.sln index 483d9e33..b886c37c 100644 --- a/Visual Studio Projects/Simh.sln +++ b/Visual Studio Projects/Simh.sln @@ -218,6 +218,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isys8020", "isys8020.vcproj {D40F3AF1-EEE7-4432-9807-2AD287B490F8} = {D40F3AF1-EEE7-4432-9807-2AD287B490F8} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "B5500", "B5500.vcproj", "{BA514FA1-D029-4D25-91CC-255E5953FF6E}" + ProjectSection(ProjectDependencies) = postProject + {D40F3AF1-EEE7-4432-9807-2AD287B490F8} = {D40F3AF1-EEE7-4432-9807-2AD287B490F8} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -400,6 +405,10 @@ Global {9BBA76FE-45DD-4902-9421-BEA3EC2DCDB0}.Debug|Win32.Build.0 = Debug|Win32 {9BBA76FE-45DD-4902-9421-BEA3EC2DCDB0}.Release|Win32.ActiveCfg = Release|Win32 {9BBA76FE-45DD-4902-9421-BEA3EC2DCDB0}.Release|Win32.Build.0 = Release|Win32 + {BA514FA1-D029-4D25-91CC-255E5953FF6E}.Debug|Win32.ActiveCfg = Debug|Win32 + {BA514FA1-D029-4D25-91CC-255E5953FF6E}.Debug|Win32.Build.0 = Debug|Win32 + {BA514FA1-D029-4D25-91CC-255E5953FF6E}.Release|Win32.ActiveCfg = Release|Win32 + {BA514FA1-D029-4D25-91CC-255E5953FF6E}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/descrip.mms b/descrip.mms index 3bf22901..003bc8d5 100644 --- a/descrip.mms +++ b/descrip.mms @@ -19,6 +19,7 @@ # ALTAIR Just Build The MITS Altair. # ALTAIRZ80 Just Build The MITS Altair Z80. # BESM6 Just Build The BESM-6. +# B5500 Just Build The B5500. # ECLIPSE Just Build The Data General Eclipse. # GRI Just Build The GRI Corporation GRI-909. # LGP Just Build The Royal-McBee LGP-30. @@ -630,7 +631,6 @@ SWTP6800MP_A2_SOURCE = $(SWTP6800MP_A2_COMMON)mp-a2.c,$(SWTP6800MP_A2_COMMON)m68 $(SWTP6800MP_A2_COMMON)mp-8m.c,$(SWTP6800MP_A2_COMMON)i2716.c SWTP6800MP_A2_OPTIONS = /INCL=($(SIMH_DIR),$(SWTP6800MP_A2_DIR))/DEF=($(CC_DEFS)) - # # BESM6 # @@ -642,6 +642,16 @@ BESM6_SOURCE = $(BESM6_DIR)BESM6_CPU.C,$(BESM6_DIR)BESM6_SYS.C,$(BESM6_DIR)BESM6 $(BESM6_DIR)BESM6_PUNCH.C BESM6_OPTIONS = /INCL=($(SIMH_DIR),$(BESM6_DIR))/DEF=($(CC_DEFS),"USE_INT64=1") +# +# B5500 +# +B5500_DIR = SYS$DISK:[.B5500] +B5500_LIB = $(LIB_DIR)B5500-$(ARCH).OLB +B5500_SOURCE = $(B5500_DIR)B5500_CPU.C,$(B5500_DIR)B5500_DK.C,$(B5500_DIR)B5500_DR.C,\ + $(B5500_DIR)B5500_DTC.C,$(B5500_DIR)B5500_IO.C,$(B5500_DIR)B5500_MT.C,\ + $(B5500_DIR)B5500_SYS.C,$(B5500_DIR)B5500_UREC.C,$(B5500_DIR)SIM_CARD.C +B5500_OPTIONS = /INCL=($(SIMH_DIR),$(B5500_DIR))/DEF=($(CC_DEFS),"USE_INT64=1") + # # Digital Equipment VAX 3900 Simulator Definitions. # @@ -904,7 +914,7 @@ I7094_OPTIONS = /INCL=($(SIMH_DIR),$(I7094_DIR))/DEF=($(CC_DEFS)) ALL : ALTAIR ALTAIRZ80 ECLIPSE GRI LGP H316 HP2100 I1401 I1620 IBM1130 ID16 \ ID32 NOVA PDP1 PDP4 PDP7 PDP8 PDP9 PDP10 PDP11 PDP15 S3 \ VAX MICROVAX3900 MICROVAX1 RTVAX1000 MICROVAX2 VAX730 VAX750 VAX780 VAX8600 \ - SDS I7094 SWTP6800MP-A SWTP6800MP-A2 SSEM BESM6 + SDS I7094 SWTP6800MP-A SWTP6800MP-A2 SSEM BESM6 B5500 $! No further actions necessary .ELSE # @@ -1329,6 +1339,10 @@ $(SWTP6800MP_A2_LIB) : $(SWTP6800MP_A2_SOURCE) $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* +# +# If Not On VAX, Build The BESM6 Library. +# +.IFDEF ALPHA_OR_IA64 $(BESM6_LIB) : $(BESM6_SOURCE) $! $! Building The $(BESM6_LIB) Library. @@ -1339,6 +1353,37 @@ $(BESM6_LIB) : $(BESM6_SOURCE) LIBRARY/CREATE $(MMS$TARGET) $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* +.ELSE +# +# We Are On VAX And Due To The Use of INT64 We Can't Build It. +# +$(BESM6_LIB) : + $! Due To The Use Of INT64 We Can't Build The + $! $(MMS$TARGET) Library On VAX. +.ENDIF + +# +# If Not On VAX, Build The Burroughs B5500 Library. +# +.IFDEF ALPHA_OR_IA64 +$(B5500_LIB) : $(B5500_SOURCE) + $! + $! Building The $(B5500_LIB) Library. + $! + $ $(CC)$(B5500_OPTIONS) - + /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) + $ IF (F$SEARCH("$(MMS$TARGET)").EQS."") THEN - + LIBRARY/CREATE $(MMS$TARGET) + $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ + $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* +.ELSE +# +# We Are On VAX And Due To The Use of INT64 We Can't Build It. +# +$(B5500_LIB) : + $! Due To The Use Of INT64 We Can't Build The + $! $(MMS$TARGET) Library On VAX. +.ENDIF $(VAX_LIB1) : $(VAX_SOURCE1) $! @@ -1904,6 +1949,10 @@ $(BIN_DIR)SWTP6800MP-A2-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_NONET_LIB) $(SWTP6800M $(BLD_DIR)SCP.OBJ,$(SWTP6800MP_A2_LIB)/LIBRARY,$(SIMH_NONET_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* +# +# If Not On VAX, Build The BESM6 Simulator. +# +.IFDEF ALPHA_OR_IA64 BESM6 : $(BIN_DIR)BESM6-$(ARCH).EXE $! BESM6 done @@ -1915,6 +1964,42 @@ $(BIN_DIR)BESM6-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_NONET_LIB) $(BESM6_LIB) $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)BESM6-$(ARCH).EXE - $(BLD_DIR)SCP.OBJ,$(BESM6_LIB)/LIBRARY,$(SIMH_NONET_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* +.ELSE +# +# Else We Are On VAX And Tell The User We Can't Build On VAX +# Due To The Use Of INT64. +# +BESM6 : + $! Sorry, Can't Build $(BIN_DIR)BESM6-$(ARCH).EXE Simulator + $! Because It Requires The Use Of INT64. +.ENDIF + + +# +# If Not On VAX, Build The Burroughs B5500 Simulator. +# +.IFDEF ALPHA_OR_IA64 +B5500 : $(BIN_DIR)B5500-$(ARCH).EXE + $! B5500 done + +$(BIN_DIR)B5500-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_NONET_LIB) $(B5500_LIB) + $! + $! Building The $(BIN_DIR)B5500-$(ARCH).EXE Simulator. + $! + $ $(CC)$(B5500_OPTIONS)/OBJ=$(BLD_DIR) SCP.C + $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)B5500-$(ARCH).EXE - + $(BLD_DIR)SCP.OBJ,$(B5500_LIB)/LIBRARY,$(SIMH_NONET_LIB)/LIBRARY + $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* +.ELSE +# +# Else We Are On VAX And Tell The User We Can't Build On VAX +# Due To The Use Of INT64. +# +B5500 : + $! Sorry, Can't Build $(BIN_DIR)B5500-$(ARCH).EXE Simulator + $! Because It Requires The Use Of INT64. +.ENDIF + VAX : MICROVAX3900 $! MICROVAX3900 aka VAX done diff --git a/makefile b/makefile index 894fe08a..b2cc8927 100644 --- a/makefile +++ b/makefile @@ -1248,6 +1248,12 @@ SSEMD = SSEM SSEM = ${SSEMD}/ssem_cpu.c ${SSEMD}/ssem_sys.c SSEM_OPT = -I ${SSEMD} +B5500D = B5500 +B5500 = ${B5500D}/b5500_cpu.c ${B5500D}/b5500_io.c ${B5500D}/b5500_sys.c \ + ${B5500D}/b5500_dk.c ${B5500D}/b5500_mt.c ${B5500D}/b5500_urec.c \ + ${B5500D}/b5500_dr.c ${B5500D}/b5500_dtc.c ${B5500D}/sim_card.c +B5500_OPT = -I.. -DUSE_INT64 -DB5500 + ### ### Experimental simulators ### @@ -1336,7 +1342,8 @@ ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \ vax microvax3900 microvax1 rtvax1000 microvax2 vax730 vax750 vax780 vax8600 \ nova eclipse hp2100 i1401 i1620 s3 altair altairz80 gri \ i7094 ibm1130 id16 id32 sds lgp h316 \ - swtp6800mp-a swtp6800mp-a2 tx-0 ssem isys8010 isys8020 + swtp6800mp-a swtp6800mp-a2 tx-0 ssem isys8010 isys8020 \ + b5500 all : ${ALL} @@ -1641,6 +1648,12 @@ ${BIN}pdq3${EXE} : ${PDQ3} ${SIM} ${MKDIRBIN} ${CC} ${PDQ3} ${SIM} ${PDQ3_OPT} $(CC_OUTSPEC) ${LDFLAGS} +b5500 : $(BIN)b5500$(EXE) + +${BIN}b5500${EXE} : ${B5500} ${SIM} + ${MKDIRBIN} + ${CC} ${B5500} ${SIM} ${B5500_OPT} $(CC_OUTSPEC) ${LDFLAGS} + # Front Panel API Demo/Test program frontpaneltest : ${BIN}frontpaneltest${EXE}