1
0
mirror of https://github.com/simh/simh.git synced 2026-01-25 19:56:25 +00:00

VAX780, VAX750, VAX730, VAX8600: Add TC11/TU56 (DECtape) device to Unibus VAX simulators

VMS Driver and support files for the TC11 should be available at
http://bitsavers.org/bits/DEC/vax/vms/dkdriver_vms.zip
This commit is contained in:
Mark Pizzolato
2016-03-27 12:28:02 -07:00
parent 72c328e771
commit 2b155ba29d
15 changed files with 72 additions and 13 deletions

View File

@@ -66,7 +66,17 @@
non-seeking drive is recorded in last_drv.
*/
#if defined (VM_VAX) /* VAX version */
#include "vax_defs.h"
extern int32 int_req[IPL_HLVL];
#define DMASK 0xFFFF
#define RK_DIS DEV_DIS
#else /* PDP-11 version */
#include "pdp11_defs.h"
extern int32 int_req[IPL_HLVL];
#define RK_DIS 0
#endif
/* Constants */
@@ -266,9 +276,6 @@ BITFIELD *rk_reg_bits[] = {
#define RK_MIN 10
#define MAX(x,y) (((x) > (y))? (x): (y))
extern uint16 *M; /* memory */
extern int32 int_req[IPL_HLVL];
uint16 *rkxb = NULL; /* xfer buffer */
int32 rkcs = 0; /* control/status */
int32 rkds = 0; /* drive status */
@@ -395,7 +402,7 @@ DEVICE rk_dev = {
RK_NUMDR, 8, 24, 1, 8, 16,
NULL, NULL, &rk_reset,
&rk_boot, NULL, NULL,
&rk_dib, DEV_DISABLE | DEV_UBUS | DEV_Q18 | DEV_DEBUG, 0,
&rk_dib, DEV_DISABLE | DEV_UBUS | DEV_Q18 | DEV_DEBUG | RK_DIS, 0,
rk_deb, NULL, NULL, &rk_help, NULL, NULL,
&rk_description
};
@@ -660,7 +667,7 @@ ma = ((rkcs & RKCS_MEX) << (16 - RKCS_V_MEX)) | rkba; /* get mem addr */
da = GET_DA (rkda) * RK_NUMWD; /* get disk addr */
wc = 0200000 - rkwc; /* get wd cnt */
if ((da + wc) > (int32) uptr->capac) { /* overrun? */
wc = uptr->capac - da; /* trim transfer */
wc = (int32)uptr->capac - da; /* trim transfer */
rker = rker | RKER_OVR; /* set overrun err */
}
@@ -861,6 +868,8 @@ return auto_config (0, 0);
/* Device bootstrap */
#if defined (VM_PDP11)
#define BOOT_START 02000 /* start */
#define BOOT_ENTRY (BOOT_START + 002) /* entry */
#define BOOT_UNIT (BOOT_START + 010) /* unit number */
@@ -896,6 +905,7 @@ static const uint16 boot_rom[] = {
t_stat rk_boot (int32 unitno, DEVICE *dptr)
{
size_t i;
extern uint16 *M; /* memory */
for (i = 0; i < BOOT_LEN; i++)
M[(BOOT_START >> 1) + i] = boot_rom[i];
@@ -905,6 +915,15 @@ cpu_set_boot (BOOT_ENTRY);
return SCPE_OK;
}
#else
t_stat rk_boot (int32 unitno, DEVICE *dptr)
{
return SCPE_NOFNC;
}
#endif
t_stat rk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr)
{
const char *const text =