From c1c5535d0b13df4fb470cc108d2929eaf8ddbc28 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 10 Jul 2014 14:57:18 -0700 Subject: [PATCH] sigma: Fix shutdown/detach issue with tape devices. Also add makefile and Visual Studio Project definitions to build the incomplete/unsupported sigma and alpha simulators. --- Visual Studio Projects/Simh.sln | 12 + Visual Studio Projects/alpha.vcproj | 338 ++++++++++++++++++++++++++ Visual Studio Projects/sigma.vcproj | 354 ++++++++++++++++++++++++++++ alpha/alpha_cpu.c | 2 +- alpha/alpha_defs.h | 2 +- sigma/sigma_mt.c | 3 +- 6 files changed, 708 insertions(+), 3 deletions(-) create mode 100644 Visual Studio Projects/alpha.vcproj create mode 100644 Visual Studio Projects/sigma.vcproj diff --git a/Visual Studio Projects/Simh.sln b/Visual Studio Projects/Simh.sln index e5745852..e48fc6bb 100644 --- a/Visual Studio Projects/Simh.sln +++ b/Visual Studio Projects/Simh.sln @@ -105,6 +105,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VAX8600", "VAX8600.vcproj", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSEM", "SSEM.vcproj", "{48DA6BA8-23E1-4F0D-959C-48C8576494DA}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alpha", "alpha.vcproj", "{14C5D369-E4A1-4DA2-B23C-B49367874F7B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sigma", "sigma.vcproj", "{7DDB6DF6-3837-4DE3-80D7-63181195021F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -259,6 +263,14 @@ Global {48DA6BA8-23E1-4F0D-959C-48C8576494DA}.Debug|Win32.Build.0 = Debug|Win32 {48DA6BA8-23E1-4F0D-959C-48C8576494DA}.Release|Win32.ActiveCfg = Release|Win32 {48DA6BA8-23E1-4F0D-959C-48C8576494DA}.Release|Win32.Build.0 = Release|Win32 + {14C5D369-E4A1-4DA2-B23C-B49367874F7B}.Debug|Win32.ActiveCfg = Debug|Win32 + {14C5D369-E4A1-4DA2-B23C-B49367874F7B}.Debug|Win32.Build.0 = Debug|Win32 + {14C5D369-E4A1-4DA2-B23C-B49367874F7B}.Release|Win32.ActiveCfg = Release|Win32 + {14C5D369-E4A1-4DA2-B23C-B49367874F7B}.Release|Win32.Build.0 = Release|Win32 + {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Debug|Win32.ActiveCfg = Debug|Win32 + {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Debug|Win32.Build.0 = Debug|Win32 + {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Release|Win32.ActiveCfg = Release|Win32 + {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Visual Studio Projects/alpha.vcproj b/Visual Studio Projects/alpha.vcproj new file mode 100644 index 00000000..8bde73ea --- /dev/null +++ b/Visual Studio Projects/alpha.vcproj @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Visual Studio Projects/sigma.vcproj b/Visual Studio Projects/sigma.vcproj new file mode 100644 index 00000000..33cb31c4 --- /dev/null +++ b/Visual Studio Projects/sigma.vcproj @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/alpha/alpha_cpu.c b/alpha/alpha_cpu.c index e531bb24..6cc6544b 100644 --- a/alpha/alpha_cpu.c +++ b/alpha/alpha_cpu.c @@ -1785,7 +1785,7 @@ t_stat cpu_fprint_one_inst (FILE *st, uint32 ir, t_uint64 pc, t_uint64 ra, t_uin uint32 op; t_value sim_val; -static const h_fmt[64] = { +static const int h_fmt[64] = { 0, 0, 0, 0, 0, 0, 0, 0, H_MRF, H_MRF, H_MRF, H_MRF, H_MRF, H_MRF, H_MRF, H_MRF, H_IOP, H_IOP, H_IOP, H_IOP, H_FOP, H_FOP, H_FOP, H_FOP, diff --git a/alpha/alpha_defs.h b/alpha/alpha_defs.h index ef21f152..4ea2a7c8 100644 --- a/alpha/alpha_defs.h +++ b/alpha/alpha_defs.h @@ -35,7 +35,7 @@ #include #if defined (__GNUC__) -#define INLINE inline +#define INLINE #else #define INLINE #endif diff --git a/sigma/sigma_mt.c b/sigma/sigma_mt.c index 73ce4be2..bcd419ed 100644 --- a/sigma/sigma_mt.c +++ b/sigma/sigma_mt.c @@ -132,7 +132,7 @@ t_stat mtr_svc (UNIT *uptr); t_stat mt_reset (DEVICE *dptr); t_stat mt_attach (UNIT *uptr, char *cptr); t_stat mt_detach (UNIT *uptr); -t_stat mt_flush_buf (uptr); +t_stat mt_flush_buf (UNIT *uptr); t_stat mt_map_err (UNIT *uptr, t_stat r); int32 mt_clr_int (uint32 dva); void mt_set_rwi (uint32 un); @@ -639,6 +639,7 @@ t_stat mt_detach (UNIT* uptr) { uint32 un = uptr - mt_dev.units; +if (!(uptr->flags & UNIT_ATTABLE)) return SCPE_NOATT; uptr->UST = 0; sim_cancel (uptr + MT_REW); return sim_tape_detach (uptr);