PDP-1: Added register descriptions to all devices.
This commit is contained in:
parent
3fadb7e376
commit
54b3ca04a1
7 changed files with 104 additions and 103 deletions
|
@ -59,7 +59,7 @@ UNIT clk_unit = {
|
|||
};
|
||||
|
||||
REG clk_reg[] = {
|
||||
{ ORDATA (CNTR, clk_cntr, 16) },
|
||||
{ ORDATAD (CNTR, clk_cntr, 16, "clock counter, 0-59999(base 10)") },
|
||||
{ DRDATA (SBS32LVL, clk32ms_sbs, 4), REG_HRO },
|
||||
{ DRDATA (SBS1MLVL, clk1min_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
|
|
|
@ -434,41 +434,41 @@ const int32 byt_shf[4] = { 0, 0, 6, 12 };
|
|||
UNIT cpu_unit = { UDATA (NULL, UNIT_FIX + UNIT_BINK, MAXMEMSIZE) };
|
||||
|
||||
REG cpu_reg[] = {
|
||||
{ ORDATA (PC, PC, ASIZE) },
|
||||
{ ORDATA (AC, AC, 18) },
|
||||
{ ORDATA (IO, IO, 18) },
|
||||
{ ORDATAD (PC, PC, ASIZE, "program counter") },
|
||||
{ ORDATAD (AC, AC, 18, "accumulator") },
|
||||
{ ORDATAD (IO, IO, 18, "I/O register") },
|
||||
{ ORDATA (MA, MA, 16) },
|
||||
{ ORDATA (MB, MB, 18) },
|
||||
{ FLDATA (OV, OV, 0) },
|
||||
{ ORDATA (PF, PF, 8) },
|
||||
{ ORDATA (SS, SS, 6) },
|
||||
{ ORDATA (TA, TA, ASIZE) },
|
||||
{ ORDATA (TW, TW, 18) },
|
||||
{ FLDATA (EXTM, extm, 0) },
|
||||
{ FLDATA (RNGM, PF, PF_V_RNG) },
|
||||
{ FLDATA (L, PF, PF_V_L) },
|
||||
{ FLDATA (RM, rm, 0) },
|
||||
{ ORDATA (RMASK, rmask, 18) },
|
||||
{ ORDATA (RTB, rtb, 18) },
|
||||
{ BRDATA (RNAME, rname, 8, 2, RN45_SIZE) },
|
||||
{ FLDATA (SBON, sbs, SB_V_ON) },
|
||||
{ FLDATA (SBRQ, sbs, SB_V_RQ) },
|
||||
{ FLDATA (SBIP, sbs, SB_V_IP) },
|
||||
{ ORDATA (SBSREQ, sbs_req, 16) },
|
||||
{ ORDATA (SBSENB, sbs_enb, 16) },
|
||||
{ ORDATA (SBSACT, sbs_act, 16) },
|
||||
{ ORDATA (IOSTA, iosta, 18), REG_RO },
|
||||
{ FLDATAD (OV, OV, 0, "overflow flag") },
|
||||
{ ORDATAD (PF, PF, 8, "programs flags <1:6>") },
|
||||
{ ORDATAD (SS, SS, 6, "sense switches <1:6>") },
|
||||
{ ORDATAD (TA, TA, ASIZE, "address switches") },
|
||||
{ ORDATAD (TW, TW, 18, "test word (front panel switches)") },
|
||||
{ FLDATAD (EXTM, extm, 0, "extend mode") },
|
||||
{ FLDATAD (RNGM, PF, PF_V_RNG, "ring mode (PDP-1D only)") },
|
||||
{ FLDATAD (L, PF, PF_V_L, "link (PDP-1D #45 only)") },
|
||||
{ FLDATAD (RM, rm, 0, "restrict mode (PDP-1D)") },
|
||||
{ ORDATAD (RMASK, rmask, 18, "restrict memory mask (PDP-1D)") },
|
||||
{ ORDATAD (RTB, rtb, 18, "restrict trap buffer (PDP-1D #45 only)") },
|
||||
{ BRDATAD (RNAME, rname, 8, 2, RN45_SIZE, "rename map (PDP-1D #45 only)") },
|
||||
{ FLDATAD (SBON, sbs, SB_V_ON, "sequence break enable") },
|
||||
{ FLDATAD (SBRQ, sbs, SB_V_RQ, "sequence break request") },
|
||||
{ FLDATAD (SBIP, sbs, SB_V_IP, "sequence break in progress") },
|
||||
{ ORDATAD (SBSREQ, sbs_req, 16, "pending sequence break requests") },
|
||||
{ ORDATAD (SBSENB, sbs_enb, 16, "enabled sequence break levels") },
|
||||
{ ORDATAD (SBSACT, sbs_act, 16, "active sequence break levels") },
|
||||
{ ORDATAD (IOSTA, iosta, 18, "I/O status register"), REG_RO },
|
||||
{ ORDATA (CPLS, cpls, 6) },
|
||||
{ FLDATA (IOH, ioh, 0) },
|
||||
{ FLDATA (IOS, ios, 0) },
|
||||
{ BRDATA (PCQ, pcq, 8, ASIZE, PCQ_SIZE), REG_RO+REG_CIRC },
|
||||
{ FLDATAD (IOH, ioh, 0, "I/O halt in progress") },
|
||||
{ FLDATAD (IOS, ios, 0, "I/O synchronizer (completion)") },
|
||||
{ BRDATAD (PCQ, pcq, 8, ASIZE, PCQ_SIZE, "PC prior to last jump or interrupt; most recent PC change first"), REG_RO+REG_CIRC },
|
||||
{ ORDATA (PCQP, pcq_p, 6), REG_HRO },
|
||||
{ FLDATA (STOP_INST, stop_inst, 0) },
|
||||
{ FLDATA (SBS_INIT, sbs_init, SB_V_ON) },
|
||||
{ FLDATA (EXTM_INIT, extm_init, 0) },
|
||||
{ DRDATA (XCT_MAX, xct_max, 8), PV_LEFT + REG_NZ },
|
||||
{ DRDATA (IND_MAX, ind_max, 8), PV_LEFT + REG_NZ },
|
||||
{ ORDATA (WRU, sim_int_char, 8) },
|
||||
{ FLDATAD (STOP_INST, stop_inst, 0, "stop on undefined instruction") },
|
||||
{ FLDATAD (SBS_INIT, sbs_init, SB_V_ON, "initial state of sequence break enable") },
|
||||
{ FLDATAD (EXTM_INIT, extm_init, 0, "initial state of extend mode") },
|
||||
{ DRDATAD (XCT_MAX, xct_max, 8, "maximum XCT chain"), PV_LEFT + REG_NZ },
|
||||
{ DRDATAD (IND_MAX, ind_max, 8, "maximum nested indirect addresses"), PV_LEFT + REG_NZ },
|
||||
{ ORDATAD (WRU, sim_int_char, 8, "interrupt character") },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -72,11 +72,11 @@ void dcs_scan_next (t_bool unlk);
|
|||
UNIT dcs_unit = { UDATA (&dcsi_svc, UNIT_ATTABLE, 0) };
|
||||
|
||||
REG dcs_reg[] = {
|
||||
{ BRDATA (BUF, dcs_buf, 8, 8, DCS_LINES) },
|
||||
{ BRDATA (FLAGS, dcs_flg, 8, 1, DCS_LINES) },
|
||||
{ FLDATA (SCNF, iosta, IOS_V_DCS) },
|
||||
{ ORDATA (SCAN, dcs_scan, 5) },
|
||||
{ ORDATA (SEND, dcs_send, 5) },
|
||||
{ BRDATAD (BUF, dcs_buf, 8, 8, DCS_LINES, "input buffer, lines 0 to 31") },
|
||||
{ BRDATAD (FLAGS, dcs_flg, 8, 1, DCS_LINES, "line ready flag, lines 0 to 31") },
|
||||
{ FLDATAD (SCNF, iosta, IOS_V_DCS, "scanner ready flag") },
|
||||
{ ORDATAD (SCAN, dcs_scan, 5, "scanner line number") },
|
||||
{ ORDATAD (SEND, dcs_send, 5, "output line number") },
|
||||
{ DRDATA (SBSLVL, dcs_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
@ -163,8 +163,8 @@ MTAB dcsl_mod[] = {
|
|||
};
|
||||
|
||||
REG dcsl_reg[] = {
|
||||
{ URDATA (TIME, dcsl_unit[0].wait, 10, 24, 0,
|
||||
DCS_LINES, REG_NZ + PV_LEFT) },
|
||||
{ URDATAD (TIME, dcsl_unit[0].wait, 10, 24, 0,
|
||||
DCS_LINES, REG_NZ + PV_LEFT, "time from I/O initiation to interrupt, lines 0 to 31") },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -120,14 +120,14 @@ UNIT drm_unit = {
|
|||
};
|
||||
|
||||
REG drm_reg[] = {
|
||||
{ ORDATA (DA, drm_da, 9) },
|
||||
{ ORDATA (MA, drm_ma, 16) },
|
||||
{ FLDATA (DONE, iosta, IOS_V_DRM) },
|
||||
{ FLDATA (ERR, drm_err, 0) },
|
||||
{ ORDATA (WLK, drm_wlk, 32) },
|
||||
{ DRDATA (TIME, drm_time, 24), REG_NZ + PV_LEFT },
|
||||
{ ORDATAD (DA, drm_da, 9, "drum address (sector number)") },
|
||||
{ ORDATAD (MA, drm_ma, 16, "current memory address") },
|
||||
{ FLDATAD (DONE, iosta, IOS_V_DRM, "device done flag") },
|
||||
{ FLDATAD (ERR, drm_err, 0, "error flag") },
|
||||
{ ORDATAD (WLK, drm_wlk, 32, "write lock switches") },
|
||||
{ DRDATAD (TIME, drm_time, 24, "rotational latency, per word"), REG_NZ + PV_LEFT },
|
||||
{ DRDATA (SBSLVL, drm_sbs, 4), REG_HRO },
|
||||
{ FLDATA (STOP_IOE, drm_stopioe, 0) },
|
||||
{ FLDATAD (STOP_IOE, drm_stopioe, 0, "stop on I/O error") },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
@ -158,17 +158,17 @@ UNIT drp_unit = {
|
|||
};
|
||||
|
||||
REG drp_reg[] = {
|
||||
{ ORDATA (TA, drp_ta, 12) },
|
||||
{ ORDATA (RDF, drp_rdf, 5) },
|
||||
{ FLDATA (RDE, drp_rde, 0) },
|
||||
{ FLDATA (WRF, drp_wrf, 5) },
|
||||
{ FLDATA (WRE, drp_wre, 0) },
|
||||
{ ORDATA (MA, drp_ma, 16) },
|
||||
{ ORDATA (WC, drp_wc, 12) },
|
||||
{ FLDATA (BUSY, iosta, IOS_V_DRP) },
|
||||
{ FLDATA (ERR, drp_err, 0) },
|
||||
{ DRDATA (TIME, drp_time, 24), REG_NZ + PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, drp_stopioe, 0) },
|
||||
{ ORDATAD (TA, drp_ta, 12, "track address") },
|
||||
{ ORDATAD (RDF, drp_rdf, 5, "read field") },
|
||||
{ FLDATAD (RDE, drp_rde, 0, "read enable flag") },
|
||||
{ FLDATAD (WRF, drp_wrf, 5, "write field") },
|
||||
{ FLDATAD (WRE, drp_wre, 0, "write enable flag") },
|
||||
{ ORDATAD (MA, drp_ma, 16, "current memory address") },
|
||||
{ ORDATAD (WC, drp_wc, 12, "word count" ) },
|
||||
{ FLDATAD (BUSY, iosta, IOS_V_DRP, "device busy flag") },
|
||||
{ FLDATAD (ERR, drp_err, 0, "error flag") },
|
||||
{ DRDATAD (TIME, drp_time, 24, "rotational latency, per word"), REG_NZ + PV_LEFT },
|
||||
{ FLDATAD (STOP_IOE, drp_stopioe, 0, "stop on I/O error") },
|
||||
{ DRDATA (SBSLVL, drm_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
@ -370,3 +370,4 @@ sim_cancel (&drp_unit);
|
|||
drp_unit.FUNC = 0;
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -308,23 +308,23 @@ UNIT dt_unit[] = {
|
|||
};
|
||||
|
||||
REG dt_reg[] = {
|
||||
{ ORDATA (DTSA, dtsa, 18) },
|
||||
{ ORDATA (DTSB, dtsb, 18) },
|
||||
{ ORDATA (DTDB, dtdb, 18) },
|
||||
{ FLDATA (DTF, dtsb, DTB_V_DTF) },
|
||||
{ FLDATA (BEF, dtsb, DTB_V_BEF) },
|
||||
{ FLDATA (ERF, dtsb, DTB_V_ERF) },
|
||||
{ DRDATA (LTIME, dt_ltime, 31), REG_NZ },
|
||||
{ DRDATA (DCTIME, dt_dctime, 31), REG_NZ },
|
||||
{ ORDATA (SUBSTATE, dt_substate, 2) },
|
||||
{ ORDATAD (DTSA, dtsa, 18, "status register A") },
|
||||
{ ORDATAD (DTSB, dtsb, 18, "status register B") },
|
||||
{ ORDATAD (DTDB, dtdb, 18, "data buffer") },
|
||||
{ FLDATAD (DTF, dtsb, DTB_V_DTF, "DECtape flag") },
|
||||
{ FLDATAD (BEF, dtsb, DTB_V_BEF, "block end flag") },
|
||||
{ FLDATAD (ERF, dtsb, DTB_V_ERF, "error flag") },
|
||||
{ DRDATAD (LTIME, dt_ltime, 31, "time between lines"), REG_NZ },
|
||||
{ DRDATAD (DCTIME, dt_dctime, 31, "time to declarate to a full stop"), REG_NZ },
|
||||
{ ORDATAD (SUBSTATE, dt_substate, 2, "read/write command substate") },
|
||||
{ DRDATA (LBLK, dt_logblk, 12), REG_HIDDEN },
|
||||
{ URDATA (POS, dt_unit[0].pos, 10, T_ADDR_W, 0,
|
||||
DT_NUMDR, PV_LEFT | REG_RO) },
|
||||
{ URDATA (STATT, dt_unit[0].STATE, 8, 18, 0,
|
||||
DT_NUMDR, REG_RO) },
|
||||
{ URDATAD (POS, dt_unit[0].pos, 10, T_ADDR_W, 0,
|
||||
DT_NUMDR, PV_LEFT | REG_RO, "position, in lines, units 0-7") },
|
||||
{ URDATAD (STATT, dt_unit[0].STATE, 8, 18, 0,
|
||||
DT_NUMDR, REG_RO, "unit state, units 0-7") },
|
||||
{ URDATA (LASTT, dt_unit[0].LASTT, 10, 32, 0,
|
||||
DT_NUMDR, REG_HRO) },
|
||||
{ FLDATA (STOP_OFFR, dt_stopoffr, 0) },
|
||||
{ FLDATAD (STOP_OFFR, dt_stopoffr, 0, "stop on off-reel error") },
|
||||
{ DRDATA (SBSLVL, dt_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
|
|
@ -72,17 +72,17 @@ UNIT lpt_unit = {
|
|||
};
|
||||
|
||||
REG lpt_reg[] = {
|
||||
{ ORDATA (BUF, lpt_unit.buf, 8) },
|
||||
{ FLDATA (PNT, iosta, IOS_V_PNT) },
|
||||
{ FLDATA (SPC, iosta, IOS_V_SPC) },
|
||||
{ FLDATA (RPLS, cpls, CPLS_V_LPT) },
|
||||
{ DRDATA (BPTR, lpt_bptr, 6) },
|
||||
{ ORDATAD (BUF, lpt_unit.buf, 8, "last data item processed") },
|
||||
{ FLDATAD (PNT, iosta, IOS_V_PNT, "printing done flag") },
|
||||
{ FLDATAD (SPC, iosta, IOS_V_SPC, "spacing done flag") },
|
||||
{ FLDATAD (RPLS, cpls, CPLS_V_LPT, "return restart pulse flag") },
|
||||
{ DRDATAD (BPTR, lpt_bptr, 6, "print buffer pointer") },
|
||||
{ ORDATA (LPT_STATE, lpt_spc, 6), REG_HRO },
|
||||
{ FLDATA (LPT_OVRPR, lpt_ovrpr, 0), REG_HRO },
|
||||
{ DRDATA (POS, lpt_unit.pos, T_ADDR_W), PV_LEFT },
|
||||
{ DRDATA (TIME, lpt_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, lpt_stopioe, 0) },
|
||||
{ BRDATA (LBUF, lpt_buf, 8, 8, LPT_BSIZE) },
|
||||
{ DRDATAD (POS, lpt_unit.pos, T_ADDR_W, "position in the output file"), PV_LEFT },
|
||||
{ DRDATAD (TIME, lpt_unit.wait, 24, "time from I/O initiation to interrupt"), PV_LEFT },
|
||||
{ FLDATAD (STOP_IOE, lpt_stopioe, 0, "stop on I/O error") },
|
||||
{ BRDATAD (LBUF, lpt_buf, 8, 8, LPT_BSIZE, "line buffer") },
|
||||
{ DRDATA (SBSLVL, lpt_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
|
|
@ -149,17 +149,17 @@ UNIT ptr_unit = {
|
|||
};
|
||||
|
||||
REG ptr_reg[] = {
|
||||
{ ORDATA (BUF, ptr_unit.buf, 18) },
|
||||
{ ORDATAD (BUF, ptr_unit.buf, 18, "last data item processed") },
|
||||
{ FLDATA (UC, ptr_uc, UC_V) },
|
||||
{ FLDATA (DONE, iosta, IOS_V_PTR) },
|
||||
{ FLDATA (RPLS, cpls, CPLS_V_PTR) },
|
||||
{ FLDATAD (DONE, iosta, IOS_V_PTR, "device done flag") },
|
||||
{ FLDATAD (RPLS, cpls, CPLS_V_PTR, "return restart pulse flag") },
|
||||
{ ORDATA (HOLD, ptr_hold, 9), REG_HRO },
|
||||
{ ORDATA (STATE, ptr_state, 5), REG_HRO },
|
||||
{ FLDATA (WAIT, ptr_wait, 0), REG_HRO },
|
||||
{ DRDATA (POS, ptr_unit.pos, T_ADDR_W), PV_LEFT },
|
||||
{ DRDATA (TIME, ptr_unit.wait, 24), PV_LEFT },
|
||||
{ DRDATAD (POS, ptr_unit.pos, T_ADDR_W, "position in the input file"), PV_LEFT },
|
||||
{ DRDATAD (TIME, ptr_unit.wait, 24, "time from I/O initiation to interrupt"), PV_LEFT },
|
||||
{ DRDATA (LEADER, ptr_leader, 6), REG_HRO },
|
||||
{ FLDATA (STOP_IOE, ptr_stopioe, 0) },
|
||||
{ FLDATAD (STOP_IOE, ptr_stopioe, 0, "stop on I/O error") },
|
||||
{ DRDATA (SBSLVL, ptr_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
@ -192,12 +192,12 @@ UNIT ptp_unit = {
|
|||
};
|
||||
|
||||
REG ptp_reg[] = {
|
||||
{ ORDATA (BUF, ptp_unit.buf, 8) },
|
||||
{ FLDATA (DONE, iosta, IOS_V_PTP) },
|
||||
{ FLDATA (RPLS, cpls, CPLS_V_PTP) },
|
||||
{ DRDATA (POS, ptp_unit.pos, T_ADDR_W), PV_LEFT },
|
||||
{ DRDATA (TIME, ptp_unit.wait, 24), PV_LEFT },
|
||||
{ FLDATA (STOP_IOE, ptp_stopioe, 0) },
|
||||
{ ORDATAD (BUF, ptp_unit.buf, 8, "last data item processed") },
|
||||
{ FLDATAD (DONE, iosta, IOS_V_PTP, "device done flag") },
|
||||
{ FLDATAD (RPLS, cpls, CPLS_V_PTP, "return restart pulse flag") },
|
||||
{ DRDATAD (POS, ptp_unit.pos, T_ADDR_W, "position in the output file"), PV_LEFT },
|
||||
{ DRDATAD (TIME, ptp_unit.wait, 24, "time from I/O initiation to interrupt"), PV_LEFT },
|
||||
{ FLDATAD (STOP_IOE, ptp_stopioe, 0, "stop on I/O error") },
|
||||
{ DRDATA (SBSLVL, ptp_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
@ -226,12 +226,12 @@ DEVICE ptp_dev = {
|
|||
UNIT tti_unit = { UDATA (&tti_svc, 0, 0), KBD_POLL_WAIT };
|
||||
|
||||
REG tti_reg[] = {
|
||||
{ ORDATA (BUF, tty_buf, 6) },
|
||||
{ FLDATA (UC, tty_uc, UC_V) },
|
||||
{ ORDATAD (BUF, tty_buf, 6, "typewriter buffer (shared)") },
|
||||
{ FLDATAD (UC, tty_uc, UC_V, "upper case/lower case state (shared)") },
|
||||
{ ORDATA (HOLD, tti_hold, 9), REG_HRO },
|
||||
{ FLDATA (DONE, iosta, IOS_V_TTI) },
|
||||
{ DRDATA (POS, tti_unit.pos, T_ADDR_W), PV_LEFT },
|
||||
{ DRDATA (TIME, tti_unit.wait, 24), REG_NZ + PV_LEFT },
|
||||
{ FLDATAD (DONE, iosta, IOS_V_TTI, "input ready flag") },
|
||||
{ DRDATAD (POS, tti_unit.pos, T_ADDR_W, "number of characters input"), PV_LEFT },
|
||||
{ DRDATAD (TIME, tti_unit.wait, 24, "keyboard polling interval"), REG_NZ + PV_LEFT },
|
||||
{ DRDATA (SBSLVL, tti_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
@ -260,12 +260,12 @@ DEVICE tti_dev = {
|
|||
UNIT tto_unit = { UDATA (&tto_svc, 0, 0), SERIAL_OUT_WAIT * 10 };
|
||||
|
||||
REG tto_reg[] = {
|
||||
{ ORDATA (BUF, tty_buf, 6) },
|
||||
{ FLDATA (UC, tty_uc, UC_V) },
|
||||
{ FLDATA (RPLS, cpls, CPLS_V_TTO) },
|
||||
{ FLDATA (DONE, iosta, IOS_V_TTO) },
|
||||
{ DRDATA (POS, tto_unit.pos, T_ADDR_W), PV_LEFT },
|
||||
{ DRDATA (TIME, tto_unit.wait, 24), PV_LEFT },
|
||||
{ ORDATAD (BUF, tty_buf, 6, "typewriter buffer (shared)") },
|
||||
{ FLDATAD (UC, tty_uc, UC_V, "upper case/lower case state (shared") },
|
||||
{ FLDATAD (RPLS, cpls, CPLS_V_TTO, "return restart pulse flag") },
|
||||
{ FLDATAD (DONE, iosta, IOS_V_TTO, "output done flag") },
|
||||
{ DRDATAD (POS, tto_unit.pos, T_ADDR_W, "number of characters output"), PV_LEFT },
|
||||
{ DRDATAD (TIME, tto_unit.wait, 24, "time from I/O initiation interrupt"), PV_LEFT },
|
||||
{ DRDATA (SBSLVL, tto_sbs, 4), REG_HRO },
|
||||
{ NULL }
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue