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:
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user