mirror of
https://github.com/simh/simh.git
synced 2026-01-11 23:52:58 +00:00
PDP11: Add extra RPB device as an additional Massbus device
Note: To avoid potential breakage of existing PDP11 configurations in
the wild, which may expect RP on RHA, TU on RHB and RS on RHC,
RPB is connected to RHD Massbus adapter.
- More robust recovery when Massbus configuration errors occur
- More complete RH{A,B,C,D} help
This commit is contained in:
parent
6e7cf79eb3
commit
972cd95914
@ -642,6 +642,7 @@ typedef struct pdp_dib DIB;
|
||||
#define INT_V_NG 27
|
||||
#define INT_V_DHRX 28
|
||||
#define INT_V_DHTX 29
|
||||
#define INT_V_RHD 30
|
||||
|
||||
#define INT_V_PIR4 0 /* BR4 */
|
||||
#define INT_V_TTI 1
|
||||
@ -735,6 +736,7 @@ typedef struct pdp_dib DIB;
|
||||
#define INT_DLCJO (1u << INT_V_DLCJO)
|
||||
#define INT_DHRX (1u << INT_V_DHRX)
|
||||
#define INT_DHTX (1u << INT_V_DHTX)
|
||||
#define INT_RHD (1u << INT_V_RHD)
|
||||
|
||||
#define INT_INTERNAL7 (INT_PIR7)
|
||||
#define INT_INTERNAL6 (INT_PIR6 | INT_CLK)
|
||||
@ -770,6 +772,7 @@ typedef struct pdp_dib DIB;
|
||||
#define IPL_RF 5
|
||||
#define IPL_RC 5
|
||||
#define IPL_RHC 5
|
||||
#define IPL_RHD 5
|
||||
#define IPL_DMCRX 5
|
||||
#define IPL_DMCTX 5
|
||||
#define IPL_KMCA 5
|
||||
@ -832,7 +835,7 @@ typedef struct pdp_dib DIB;
|
||||
|
||||
/* Massbus definitions */
|
||||
|
||||
#define MBA_NUM 3 /* number of MBA's */
|
||||
#define MBA_NUM 4 /* number of MBA's */
|
||||
#define MBA_AUTO (uint32)0xFFFFFFFF /* Unassigned MBA */
|
||||
#define MBA_RMASK 037 /* max 32 reg */
|
||||
#define MBE_NXD 1 /* nx drive */
|
||||
|
||||
@ -698,6 +698,8 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */
|
||||
{012440}, {0224} }, /* RH11/RH70 - fx CSR, fx VEC */
|
||||
{ { "RHC" }, 1, 1, 0, 0,
|
||||
{012040}, {0204} }, /* RH11/RH70 - fx CSR, fx VEC */
|
||||
{ { "RHD" }, 1, 1, 0, 0,
|
||||
{016300}, {0150} }, /* RH11/RH70 - fx CSR, fx VEC */
|
||||
{ { "CLK" }, 1, 1, 0, 0,
|
||||
{017546}, {0100} }, /* KW11L - fx CSR, fx VEC */
|
||||
{ { "PCLK" }, 1, 1, 0, 0,
|
||||
|
||||
@ -168,6 +168,7 @@ t_stat mba_show_type (FILE *st, UNIT *uptr, int32 val, CONST void *desc);
|
||||
int32 mba0_inta (void);
|
||||
int32 mba1_inta (void);
|
||||
int32 mba2_inta (void);
|
||||
int32 mba3_inta (void);
|
||||
void mba_set_int (uint32 mb);
|
||||
void mba_clr_int (uint32 mb);
|
||||
void mba_upd_cs1 (uint32 set, uint32 clr, uint32 mb);
|
||||
@ -834,6 +835,14 @@ massbus[2].iff = 0; /* clear CSTB INTR */
|
||||
return mba2_dib.vec; /* acknowledge */
|
||||
}
|
||||
|
||||
int32 mba3_inta (void)
|
||||
{
|
||||
massbus[3].cs1 &= ~CS1_IE; /* clear int enable */
|
||||
massbus[3].cs3 &= ~CS1_IE; /* in both registers */
|
||||
massbus[3].iff = 0; /* clear CSTB INTR */
|
||||
return mba3_dib.vec; /* acknowledge */
|
||||
}
|
||||
|
||||
/* Map physical address to Massbus number, offset */
|
||||
|
||||
int32 mba_map_pa (int32 pa, int32 *ofs)
|
||||
@ -897,13 +906,14 @@ if (((dptr->flags & DEV_DIS) && /* Already Disabled */
|
||||
(!(dptr->flags & DEV_DIS) && /* Already Enabled */
|
||||
(dibp->ba != MBA_AUTO)))
|
||||
return;
|
||||
if (dptr->flags & DEV_DIS) { /* Disabling? */
|
||||
if ((dptr->flags & DEV_DIS) || /* Disabling OR */
|
||||
(build_dib_tab() != SCPE_OK)) { /* somehow invalid? */
|
||||
uint32 mb = dibp->ba;
|
||||
|
||||
dptr->flags |= DEV_DIS; /* assure disabled */
|
||||
dibp->ba = MBA_AUTO; /* Flag unassigned */
|
||||
mba_reset (&mba_dev[mb]); /* reset prior MBA */
|
||||
}
|
||||
build_dib_tab();
|
||||
if (!(dptr->flags & DEV_DIS)) /* Enabling? */
|
||||
mba_reset (&mba_dev[dibp->ba]); /* reset new MBA */
|
||||
}
|
||||
@ -963,7 +973,7 @@ for (i = mba_devs = 0; sim_devices[i] != NULL; i++) {
|
||||
t_stat build_mbus_tab (DEVICE *dptr, DIB *dibp)
|
||||
{
|
||||
uint32 idx;
|
||||
static const char *mbus_devs[] = {"RP", "TU", "RS", NULL};
|
||||
static const char *mbus_devs[] = {"RP", "TU", "RS", "RPB", NULL};
|
||||
|
||||
if ((dptr == NULL) || (dibp == NULL)) /* validate args */
|
||||
return SCPE_IERR;
|
||||
@ -997,7 +1007,7 @@ const char *const text =
|
||||
#if MBA_NUM == 3
|
||||
" RH11/RH70/RH70-emulating Massbus adapters (RHA, RHB, RHC)\n"
|
||||
#else
|
||||
"1RH11/RH70/RH70-emulating Massbus adapters (RHA, RHB, RHC, RHD)\n"
|
||||
" RH11/RH70/RH70-emulating Massbus adapters (RHA, RHB, RHC, RHD)\n"
|
||||
#endif
|
||||
"\n"
|
||||
" The RH70/RH11/RH70-emulating Massbus adapters interface Massbus\n"
|
||||
|
||||
@ -101,6 +101,7 @@ extern DEVICE rx_dev;
|
||||
extern DEVICE ry_dev;
|
||||
extern DEVICE mba_dev[];
|
||||
extern DEVICE rp_dev;
|
||||
extern DEVICE rpb_dev;
|
||||
extern DEVICE rs_dev;
|
||||
extern DEVICE rq_dev, rqb_dev, rqc_dev, rqd_dev;
|
||||
extern DEVICE tm_dev;
|
||||
@ -158,6 +159,7 @@ DEVICE *sim_devices[] = {
|
||||
&mba_dev[0],
|
||||
&mba_dev[1],
|
||||
&mba_dev[2],
|
||||
&mba_dev[3],
|
||||
&clk_dev,
|
||||
&pclk_dev,
|
||||
&ptr_dev,
|
||||
@ -184,6 +186,7 @@ DEVICE *sim_devices[] = {
|
||||
&rx_dev,
|
||||
&ry_dev,
|
||||
&rp_dev,
|
||||
&rpb_dev,
|
||||
&rs_dev,
|
||||
&rq_dev,
|
||||
&rqb_dev,
|
||||
|
||||
@ -67,7 +67,7 @@ All Simulator updates on Open SIMH will be present in this repository, and any c
|
||||
- Simulators with video devices that may be enabled, no longer disable the screen saver until the video display is presented. Optionally enabling or disabling the OS screen saver by an environment variable.
|
||||
- More readable output of SHOW <dev>|<unit> with variable sized DEVICE and UNIT names.
|
||||
- Automatic Cryllic Font detection in BESM6 simulator at runtime rather than build time. More relevant for distribution binaries.
|
||||
- Build-in command history and tab file name completion previously done by GPL readline now done by BSD licensed library available on all platforms (expecially Windows).
|
||||
- Built-in command history and tab file name completion previously done by GPL readline now done by BSD licensed library available on all platforms (especially Windows).
|
||||
- Robust register sanity checking for all register definition macros.
|
||||
- When building on windows, the windows-build dependency libraries are automatically downloaded even if git is not available.
|
||||
- Extended video component version information displayed in SHOW VERSION output.
|
||||
@ -86,9 +86,9 @@ All Simulator updates on Open SIMH will be present in this repository, and any c
|
||||
- Support for building on systems with the gameoftrees.org (got) source control system.
|
||||
- Frontpanel API improvements, document clarifications and bug fixes.
|
||||
- Added a SET CLOCK NOCALIBRATE mode.
|
||||
NOCALIBRATE mode allows all activity of a simulator run to occur with precisely consistent event timing. In this mode, every clock tick takes precisely the same number of instructions/cycles. Likewise, the polling activities for MUX or other poll oriented devices occurs after precisely the same number of instructions/cycles executed. As a consequence of this mode, no effort to align simulated clock ticks (and simulated access to wall clock time) is made.
|
||||
NOCALIBRATE mode allows all activity of a simulator run to occur with precisely consistent event timing. In this mode, every clock tick takes precisely the same number of instructions/cycles. Likewise, the polling activities for MUX or other poll oriented devices occurs after precisely the same number of instructions/cycles executed. As a consequence of this mode, no effort to align simulated clock ticks (and simulated access to wall clock time) is made.
|
||||
|
||||
This mode will often be useful for running diagnostics which expect a particular relationship between perceived wall clock and instruction times. It might also be useful for running test scripts which may want to compare output of previous executions to to current execution or to compare execution on arbitrarily different host computers.
|
||||
This mode will often be useful for running diagnostics which expect a particular relationship between perceived wall clock and instruction times. It might also be useful for running test scripts which may want to compare output of previous executions to to current execution or to compare execution on arbitrarily different host computers. It will also be useful when running under a host system debugger which might produce confusing results when various wall clock pause times when stopping at breakpoints.
|
||||
|
||||
In NOCALIBRATE mode, the operator gets to specify the pseudo execution rate along with the base wall clock time that access to pseudo wall clock accesses returns.
|
||||
- All removable devices get detached on a media unload without regard to data access format (SIMH, VHD or RAW).
|
||||
@ -110,6 +110,7 @@ All Simulator updates on Open SIMH will be present in this repository, and any c
|
||||
- Add device support for DL11-C/DL11-D/DL11-E/DLV11-J in addition to the original KL11/DL11-A/DL11-B/DL11-E/DL11-F support. These new devices have different bus address ranges and can coexist with the original DL devices. The new devices are DLCJI and DLCJO and are managed identically to the original DLI and DLO devices.
|
||||
- All improvements and fixes to the PDP11 simulator from simh Version 3.12-3 release and beyond.
|
||||
- MicroVAX I has unsupported devices (TQ, TS, and VH) removed.
|
||||
- VAX750, VAX780, VAX8600 and PDP11 support additional Massbus disks on DEVICE RPB.
|
||||
|
||||
### All relevant changes in the simh v3.12-3 release have been merged into this repo
|
||||
|
||||
|
||||
@ -333,6 +333,10 @@
|
||||
RelativePath="..\PDP11\pdp11_rp.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\PDP11\pdp11_rpb.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\PDP11\pdp11_rq.c"
|
||||
>
|
||||
|
||||
30
makefile
30
makefile
@ -1616,21 +1616,21 @@ PDP15_OPT = -DPDP15 -I ${PDP18BD}
|
||||
PDP11D = ${SIMHD}/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 ${PDP11D}/pdp11_rc.c ${PDP11D}/pdp11_kg.c \
|
||||
${PDP11D}/pdp11_ke.c ${PDP11D}/pdp11_dc.c ${PDP11D}/pdp11_dmc.c \
|
||||
${PDP11D}/pdp11_kmc.c ${PDP11D}/pdp11_dup.c ${PDP11D}/pdp11_rs.c \
|
||||
${PDP11D}/pdp11_vt.c ${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c \
|
||||
${PDP11D}/pdp11_rom.c ${PDP11D}/pdp11_ch.c ${PDP11D}/pdp11_dh.c \
|
||||
${PDP11D}/pdp11_ng.c ${PDP11D}/pdp11_daz.c ${PDP11D}/pdp11_tv.c \
|
||||
${PDP11D}/pdp11_mb.c \
|
||||
${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rp.c ${PDP11D}/pdp11_rpb.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 ${PDP11D}/pdp11_rc.c \
|
||||
${PDP11D}/pdp11_kg.c ${PDP11D}/pdp11_ke.c ${PDP11D}/pdp11_dc.c \
|
||||
${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_kmc.c ${PDP11D}/pdp11_dup.c \
|
||||
${PDP11D}/pdp11_rs.c ${PDP11D}/pdp11_vt.c ${PDP11D}/pdp11_td.c \
|
||||
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_rom.c ${PDP11D}/pdp11_ch.c \
|
||||
${PDP11D}/pdp11_dh.c ${PDP11D}/pdp11_ng.c ${PDP11D}/pdp11_daz.c \
|
||||
${PDP11D}/pdp11_tv.c ${PDP11D}/pdp11_mb.c \
|
||||
${DISPLAYL} ${DISPLAYNG} ${DISPLAYVT} $(NETWORK_DEPS)
|
||||
PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT} ${DISPLAY_OPT}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user