1
0
mirror of https://github.com/simh/simh.git synced 2026-01-14 15:45:18 +00:00

PDP11: Added help to RK device

This commit is contained in:
Mark Pizzolato 2013-09-05 12:10:09 -07:00
parent 1141339e5b
commit b1b9aa3510
2 changed files with 51 additions and 23 deletions

View File

@ -203,6 +203,8 @@ void rk_go (void);
void rk_set_done (int32 error);
void rk_clr_done (void);
t_stat rk_boot (int32 unitno, DEVICE *dptr);
t_stat rk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr);
char *rk_description (DEVICE *dptr);
/* RK11 data structures
@ -239,33 +241,35 @@ UNIT rk_unit[] = {
};
REG rk_reg[] = {
{ ORDATA (RKCS, rkcs, 16) },
{ ORDATA (RKDA, rkda, 16) },
{ ORDATA (RKBA, rkba, 16) },
{ ORDATA (RKWC, rkwc, 16) },
{ ORDATA (RKDS, rkds, 16) },
{ ORDATA (RKER, rker, 16) },
{ ORDATA (INTQ, rkintq, 9) },
{ ORDATA (DRVN, last_drv, 3) },
{ FLDATA (INT, IREQ (RK), INT_V_RK) },
{ FLDATA (ERR, rkcs, CSR_V_ERR) },
{ FLDATA (DONE, rkcs, CSR_V_DONE) },
{ FLDATA (IE, rkcs, CSR_V_IE) },
{ DRDATA (STIME, rk_swait, 24), PV_LEFT },
{ DRDATA (RTIME, rk_rwait, 24), PV_LEFT },
{ FLDATA (STOP_IOE, rk_stopioe, 0) },
{ ORDATAD (RKCS, rkcs, 16, "control/status") },
{ ORDATAD (RKDA, rkda, 16, "disk address") },
{ ORDATAD (RKBA, rkba, 16, "memory address") },
{ ORDATAD (RKWC, rkwc, 16, "word count") },
{ ORDATAD (RKDS, rkds, 16, "drive status") },
{ ORDATAD (RKER, rker, 16, "error status") },
{ ORDATAD (INTQ, rkintq, 9, "interrupt queue") },
{ ORDATAD (DRVN, last_drv, 3, "last r/w drive") },
{ FLDATAD (INT, IREQ (RK), INT_V_RK, "interrupt pending flag") },
{ FLDATAD (ERR, rkcs, CSR_V_ERR, "error flag (CSR<15>)") },
{ FLDATAD (DONE, rkcs, CSR_V_DONE, "device done flag (CSR<7>)") },
{ FLDATAD (IE, rkcs, CSR_V_IE, "interrupt enable flag (CSR<6>)") },
{ DRDATAD (STIME, rk_swait, 24, "seek time, per cylinder"), PV_LEFT },
{ DRDATAD (RTIME, rk_rwait, 24, "rotational delay"), PV_LEFT },
{ FLDATAD (STOP_IOE, rk_stopioe, 0, "stop on I/O error flag") },
{ ORDATA (DEVADDR, rk_dib.ba, 32), REG_HRO },
{ ORDATA (DEVVEC, rk_dib.vec, 16), REG_HRO },
{ NULL }
};
MTAB rk_mod[] = {
{ UNIT_HWLK, 0, "write enabled", "WRITEENABLED", NULL },
{ UNIT_HWLK, UNIT_HWLK, "write locked", "LOCKED", NULL },
{ MTAB_XTD|MTAB_VDV, 020, "ADDRESS", "ADDRESS",
&set_addr, &show_addr, NULL },
{ MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR",
&set_vec, &show_vec, NULL },
{ UNIT_HWLK, 0, "write enabled", "WRITEENABLED",
NULL, NULL, NULL, "Write enable disk drive" },
{ UNIT_HWLK, UNIT_HWLK, "write locked", "LOCKED",
NULL, NULL, NULL, "Write lock disk drive" },
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 010, "ADDRESS", "ADDRESS",
&set_addr, &show_addr, NULL, "Bus address" },
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "VECTOR", "VECTOR",
&set_vec, &show_vec, NULL, "Interrupt vector" },
{ 0 }
};
@ -274,7 +278,9 @@ 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
&rk_dib, DEV_DISABLE | DEV_UBUS | DEV_Q18, 0,
NULL, NULL, NULL, &rk_help, NULL, NULL,
&rk_description
};
/* I/O dispatch routine, I/O addresses 17777400 - 17777416
@ -758,3 +764,26 @@ M[BOOT_CSR >> 1] = (rk_dib.ba & DMASK) + 012;
saved_PC = BOOT_ENTRY;
return SCPE_OK;
}
t_stat rk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr)
{
fprintf (st, "RK11/RKV11 cartridge disk (RK05) controller (RK)\n\n");
fprintf (st, "Options include the ability to set units write enabled or write locked,\n");
fprint_set_help (st, dptr);
fprint_show_help (st, dptr);
fprintf (st, "\nThe RK11 supports the BOOT command. The RK11 is disabled in a Qbus\n");
fprintf (st, "system with more than 256KB of memory.\n");
fprint_reg_help (st, dptr);
fprintf (st, "\nError handling is as follows:\n\n");
fprintf (st, " error STOP_IOE processed as\n");
fprintf (st, " not attached 1 report error and stop\n");
fprintf (st, " 0 disk not ready\n\n");
fprintf (st, " end of file x assume rest of disk is zero\n");
fprintf (st, " OS I/O error x report error and stop\n");
return SCPE_OK;
}
char *rk_description (DEVICE *dptr)
{
return "RK11/RKV11 cartridge disk controller";
}

View File

@ -336,7 +336,6 @@ static const MTAB rl_mod[] = {
&rl_set_load, NULL, NULL, "Unload drive" },
{ MTAB_XTD|MTAB_VUN|MTAB_NMO, 0, "DSTATE", NULL,
NULL, &rl_show_dstate, NULL, "Display drive state" },
{ UNIT_WLK, 0, "write enabled", "WRITEENABLED",
NULL, NULL, NULL, "Write enable disk drive" },
{ UNIT_WLK, UNIT_WLK, "write locked", "LOCKED",