From 54b3ca04a1fc91f0ec800017aca21c51b75f4a59 Mon Sep 17 00:00:00 2001 From: Ray Jewhurst Date: Thu, 7 Apr 2016 11:16:51 -0400 Subject: [PATCH] PDP-1: Added register descriptions to all devices. --- PDP1/pdp1_clk.c | 2 +- PDP1/pdp1_cpu.c | 62 +++++++++++++++++++++++----------------------- PDP1/pdp1_dcs.c | 14 +++++------ PDP1/pdp1_drm.c | 37 +++++++++++++-------------- PDP1/pdp1_dt.c | 28 ++++++++++----------- PDP1/pdp1_lp.c | 18 +++++++------- PDP1/pdp1_stddev.c | 46 +++++++++++++++++----------------- 7 files changed, 104 insertions(+), 103 deletions(-) diff --git a/PDP1/pdp1_clk.c b/PDP1/pdp1_clk.c index 94d4124a..93fbd473 100644 --- a/PDP1/pdp1_clk.c +++ b/PDP1/pdp1_clk.c @@ -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 } diff --git a/PDP1/pdp1_cpu.c b/PDP1/pdp1_cpu.c index 2a9953bb..38ff0fca 100644 --- a/PDP1/pdp1_cpu.c +++ b/PDP1/pdp1_cpu.c @@ -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 } }; diff --git a/PDP1/pdp1_dcs.c b/PDP1/pdp1_dcs.c index 190477fb..d133f984 100644 --- a/PDP1/pdp1_dcs.c +++ b/PDP1/pdp1_dcs.c @@ -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 } }; diff --git a/PDP1/pdp1_drm.c b/PDP1/pdp1_drm.c index 1b9104ac..415e27e6 100644 --- a/PDP1/pdp1_drm.c +++ b/PDP1/pdp1_drm.c @@ -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; } + diff --git a/PDP1/pdp1_dt.c b/PDP1/pdp1_dt.c index a2ecc79e..2ed66893 100644 --- a/PDP1/pdp1_dt.c +++ b/PDP1/pdp1_dt.c @@ -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 } }; diff --git a/PDP1/pdp1_lp.c b/PDP1/pdp1_lp.c index c3ec4aae..7e887fb4 100644 --- a/PDP1/pdp1_lp.c +++ b/PDP1/pdp1_lp.c @@ -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 } }; diff --git a/PDP1/pdp1_stddev.c b/PDP1/pdp1_stddev.c index 1537c196..52728657 100644 --- a/PDP1/pdp1_stddev.c +++ b/PDP1/pdp1_stddev.c @@ -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 } };