From 01b3179d93eb1de60d8f5f5f090549d52b067780 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 9 Sep 2013 05:36:17 -0700 Subject: [PATCH] PDP11: Added help to KE, KG, RF, TA, TC and TM devices. Fixed DECtape documentation. --- PDP11/pdp11_ke.c | 47 ++++++++-- PDP11/pdp11_kg.c | 87 ++++++++++-------- PDP11/pdp11_rf.c | 126 ++++++++++++++++++++------ PDP11/pdp11_ta.c | 88 +++++++++++++------ PDP11/pdp11_tc.c | 214 +++++++++++++++++++++++++++++++++++++++------ PDP11/pdp11_tm.c | 116 ++++++++++++++++++------ doc/pdp11_doc.doc | Bin 185856 -> 184320 bytes doc/pdp18b_doc.doc | Bin 118784 -> 103424 bytes doc/pdp8_doc.doc | Bin 109056 -> 94720 bytes 9 files changed, 527 insertions(+), 151 deletions(-) diff --git a/PDP11/pdp11_ke.c b/PDP11/pdp11_ke.c index 6a302381..ae916d99 100644 --- a/PDP11/pdp11_ke.c +++ b/PDP11/pdp11_ke.c @@ -70,6 +70,8 @@ t_stat ke_rd (int32 *data, int32 PA, int32 access); t_stat ke_wr (int32 data, int32 PA, int32 access); t_stat ke_reset (DEVICE *dptr); uint32 ke_set_SR (void); +t_stat ke_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +char *ke_description (DEVICE *dptr); #define IOLN_KE 020 @@ -80,16 +82,16 @@ UNIT ke_unit = { }; REG ke_reg[] = { - { ORDATA (AC, ke_AC, 16) }, - { ORDATA (MQ, ke_MQ, 16) }, - { ORDATA (SC, ke_SC, 6) }, - { ORDATA (SR, ke_SR, 8) }, + { ORDATAD (AC, ke_AC, 16, "accumulator") }, + { ORDATAD (MQ, ke_MQ, 16, "multiplier-quotient") }, + { ORDATAD (SC, ke_SC, 6, "shift count") }, + { ORDATAD (SR, ke_SR, 8, "status register") }, { NULL } }; MTAB ke_mod[] = { - { MTAB_XTD|MTAB_VDV, 0, "ADDRESS", NULL, - NULL, &show_addr, NULL }, + { MTAB_XTD|MTAB_VDV|MTAB_VALR, 010, "ADDRESS", NULL, + NULL, &show_addr, NULL, "Bus address" }, { 0 } }; @@ -98,7 +100,9 @@ DEVICE ke_dev = { 1, 10, 31, 1, 8, 8, NULL, NULL, &ke_reset, NULL, NULL, NULL, - &ke_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS + &ke_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS, 0, + NULL, NULL, NULL, &ke_help, NULL, NULL, + &ke_description }; /* KE read - reads are always 16b, to even addresses */ @@ -348,3 +352,32 @@ ke_AC = 0; ke_MQ = 0; return auto_config(0, 0); } + +t_stat ke_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +const char *const text = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"KE11A Extended Arithmetic Option (KE)\n" +"\n" +" The KE11A extended arithmetic option (KE) provides multiply, divide,\n" +" normalization, and multi-bit shift capability on Unibus PDP-11’s that\n" +" lack the EIS instruction set.\n" +"\n" +" The KE11-A performs five arithmetic operations.\n" +" a. Multiplication\n" +" b. Division\n" +" c. Three different shift operations on data operands of up to 32 bits.\n" +"\n" +" In practice, it was only sold with the PDP-11/20.\n" +" The KE is disabled by default.\n"; +fprintf (st, "%s", text); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + +char *ke_description (DEVICE *dptr) +{ +return "KE11-A extended arithmetic element"; +} diff --git a/PDP11/pdp11_kg.c b/PDP11/pdp11_kg.c index 0a16800e..96b56705 100644 --- a/PDP11/pdp11_kg.c +++ b/PDP11/pdp11_kg.c @@ -175,6 +175,8 @@ static t_stat kg_wr (int32, int32, int32); static t_stat kg_reset (DEVICE *); static void do_poly (int, t_bool); static t_stat set_units (UNIT *, int32, char *, void *); +t_stat kg_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +char *kg_description (DEVICE *dptr); /* 16-bit rotate right */ @@ -216,45 +218,19 @@ static UNIT kg_unit[] = { }; static const REG kg_reg[] = { - { ORDATA (SR0, kg_unit[0].SR, 16) }, - { ORDATA (SR1, kg_unit[1].SR, 16) }, - { ORDATA (SR2, kg_unit[2].SR, 16) }, - { ORDATA (SR3, kg_unit[3].SR, 16) }, - { ORDATA (SR4, kg_unit[4].SR, 16) }, - { ORDATA (SR5, kg_unit[5].SR, 16) }, - { ORDATA (SR6, kg_unit[6].SR, 16) }, - { ORDATA (SR7, kg_unit[7].SR, 16) }, - { ORDATA (BCC0, kg_unit[0].BCC, 16) }, - { ORDATA (BCC1, kg_unit[1].BCC, 16) }, - { ORDATA (BCC2, kg_unit[2].BCC, 16) }, - { ORDATA (BCC3, kg_unit[3].BCC, 16) }, - { ORDATA (BCC4, kg_unit[4].BCC, 16) }, - { ORDATA (BCC5, kg_unit[5].BCC, 16) }, - { ORDATA (BCC6, kg_unit[6].BCC, 16) }, - { ORDATA (BCC7, kg_unit[7].BCC, 16) }, - { ORDATA (DR0, kg_unit[0].DR, 16) }, - { ORDATA (DR1, kg_unit[1].DR, 16) }, - { ORDATA (DR2, kg_unit[2].DR, 16) }, - { ORDATA (DR3, kg_unit[3].DR, 16) }, - { ORDATA (DR4, kg_unit[4].DR, 16) }, - { ORDATA (DR5, kg_unit[5].DR, 16) }, - { ORDATA (DR6, kg_unit[6].DR, 16) }, - { ORDATA (DR7, kg_unit[7].DR, 16) }, - { ORDATA (PULSCNT0, kg_unit[0].PULSCNT, 16) }, - { ORDATA (PULSCNT1, kg_unit[1].PULSCNT, 16) }, - { ORDATA (PULSCNT2, kg_unit[2].PULSCNT, 16) }, - { ORDATA (PULSCNT3, kg_unit[3].PULSCNT, 16) }, - { ORDATA (PULSCNT4, kg_unit[4].PULSCNT, 16) }, - { ORDATA (PULSCNT5, kg_unit[5].PULSCNT, 16) }, - { ORDATA (PULSCNT6, kg_unit[6].PULSCNT, 16) }, - { ORDATA (PULSCNT7, kg_unit[7].PULSCNT, 16) }, + { URDATAD (SR, kg_unit[0].SR, DEV_RDX, 16, 0, KG_UNITS, 0, "control and status register; R/W") }, + { URDATAD (BCC, kg_unit[0].BCC, DEV_RDX, 16, 0, KG_UNITS, 0, "result block check character; R/O") }, + { URDATAD (DR, kg_unit[0].DR, DEV_RDX, 16, 0, KG_UNITS, 0, "input data register; W/O") }, + { URDATAD (PULSCNT, kg_unit[0].PULSCNT, DEV_RDX, 16, 0, KG_UNITS, 0, "polynomial cycle stage") }, { ORDATA (DEVADDR, kg_dib.ba, 32), REG_HRO }, { NULL } }; static const MTAB kg_mod[] = { - { MTAB_XTD|MTAB_VDV, 0, "ADDRESS", NULL, NULL, &show_addr, NULL }, - { MTAB_XTD|MTAB_VDV, 0, NULL, "UNITS=0..8", &set_units, NULL, NULL }, + { MTAB_XTD|MTAB_VDV|MTAB_VALR, 020, "ADDRESS", NULL, + NULL, &show_addr, NULL, "Bus address" }, + { MTAB_XTD|MTAB_VDV, 0, NULL, "UNITS=1..8", + &set_units, NULL, NULL, "Specify number of KG devices" }, { 0 } }; @@ -283,7 +259,11 @@ DEVICE kg_dev = { 0, /* debug control */ (DEBTAB *) &kg_debug, /* debug flags */ NULL, /* memory size chage */ - NULL /* logical name */ + NULL, /* logical name */ + &kg_help, /* help */ + NULL, /* attach help */ + NULL, /* help context */ + &kg_description, /* description */ }; /* KG I/O address routines */ @@ -407,7 +387,7 @@ static t_stat kg_reset (DEVICE *dptr) kg_unit[i].BCC = 0; kg_unit[i].PULSCNT = 0; } - return auto_config(0, 0); + return auto_config(dptr->name, (dptr->flags & DEV_DIS) ? 0 : kg_dev.numunits); } static void cycleOneBit (int unit) @@ -468,6 +448,10 @@ static t_stat set_units (UNIT *u, int32 val, char *s, void *desc) units = get_uint (s, 10, KG_UNITS, &stat); if (stat != SCPE_OK) return (stat); + if (units == 0) + return SCPE_ARG; + if (units == kg_dev.numunits) + return SCPE_OK; for (i = 0; i < KG_UNITS; i++) { if (i < units) kg_unit[i].flags &= ~UNIT_DIS; @@ -475,5 +459,36 @@ static t_stat set_units (UNIT *u, int32 val, char *s, void *desc) kg_unit[i].flags |= UNIT_DIS; } kg_dev.numunits = units; + kg_reset (&kg_dev); return (SCPE_OK); } + +t_stat kg_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +const char *const text = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" KG11-A Communications Arithmetic Option (KG)\n" +"\n" +" The KG11-A is a programmed I/O, non-interrupting, dedicated arithmetic\n" +" processor for the Unibus. The device is used to compute the block check\n" +" character (BCC) over a block of data, typically in data communication\n" +" applications. The KG11 can compute three different Cyclic Redundancy\n" +" Check (CRC) polynomials (CRC-16, CRC-12, CRC-CCITT) and two Longitudinal\n" +" Redundancy Checks (LRC, Exclusive-OR; LRC-8, LRC-16). Up to eight units\n" +" may be contiguously present in a single machine and are all located at\n" +" fixed addresses. This simulation implements all functionality of the\n" +" device including the ability to single step computation of the BCC.\n" +" The KG is disabled by default.\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n"; +fprintf (st, "%s", text); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + +char *kg_description (DEVICE *dptr) +{ +return "KG11-A Communications Arithmetic Option"; +} diff --git a/PDP11/pdp11_rf.c b/PDP11/pdp11_rf.c index 5343491e..d14f73f5 100644 --- a/PDP11/pdp11_rf.c +++ b/PDP11/pdp11_rf.c @@ -134,6 +134,8 @@ t_stat rf_boot (int32 unitno, DEVICE *dptr); t_stat rf_attach (UNIT *uptr, char *cptr); t_stat rf_set_size (UNIT *uptr, int32 val, char *cptr, void *desc); uint32 update_rfcs (uint32 newcs, uint32 newdae); +t_stat rf_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +char *rf_description (DEVICE *dptr); /* RF11 data structures @@ -156,40 +158,40 @@ UNIT rf_unit = { }; REG rf_reg[] = { - { ORDATA (RFCS, rf_cs, 16) }, - { ORDATA (RFWC, rf_wc, 16) }, - { ORDATA (RFCMA, rf_cma, 16) }, - { ORDATA (RFDA, rf_da, 16) }, - { ORDATA (RFDAE, rf_dae, 16) }, - { ORDATA (RFDBR, rf_dbr, 16) }, - { ORDATA (RFMR, rf_maint, 16) }, - { ORDATA (RFWLK, rf_wlk, 32) }, - { FLDATA (INT, IREQ (RF), INT_V_RF) }, - { FLDATA (ERR, rf_cs, CSR_V_ERR) }, - { FLDATA (DONE, rf_cs, CSR_V_DONE) }, - { FLDATA (IE, rf_cs, CSR_V_IE) }, - { DRDATA (TIME, rf_time, 24), REG_NZ + PV_LEFT }, - { FLDATA (BURST, rf_burst, 0) }, - { FLDATA (STOP_IOE, rf_stopioe, 0) }, + { ORDATAD (RFCS, rf_cs, 16, "control/status") }, + { ORDATAD (RFWC, rf_wc, 16, "word count") }, + { ORDATAD (RFCMA, rf_cma, 16, "current memory address") }, + { ORDATAD (RFDA, rf_da, 16, "current disk address") }, + { ORDATAD (RFDAE, rf_dae, 16, "disk address extension") }, + { ORDATAD (RFDBR, rf_dbr, 16, "data buffer") }, + { ORDATAD (RFMR, rf_maint, 16, "maintenance register") }, + { ORDATAD (RFWLK, rf_wlk, 32, "write lock switches") }, + { FLDATAD (INT, IREQ (RF), INT_V_RF, "interrupt pending flag") }, + { FLDATAD (ERR, rf_cs, CSR_V_ERR, "device error flag") }, + { FLDATAD (DONE, rf_cs, CSR_V_DONE, "device done flag") }, + { FLDATAD (IE, rf_cs, CSR_V_IE, "interrupt enable flag") }, + { DRDATAD (TIME, rf_time, 24, "rotational delay, per word"), REG_NZ + PV_LEFT }, + { FLDATAD (BURST, rf_burst, 0, "burst flag") }, + { FLDATAD (STOP_IOE, rf_stopioe, 0, "stop on I/O error") }, { ORDATA (DEVADDR, rf_dib.ba, 32), REG_HRO }, { ORDATA (DEVVEC, rf_dib.vec, 16), REG_HRO }, { NULL } }; MTAB rf_mod[] = { - { UNIT_PLAT, (0 << UNIT_V_PLAT), NULL, "1P", &rf_set_size }, - { UNIT_PLAT, (1 << UNIT_V_PLAT), NULL, "2P", &rf_set_size }, - { UNIT_PLAT, (2 << UNIT_V_PLAT), NULL, "3P", &rf_set_size }, - { UNIT_PLAT, (3 << UNIT_V_PLAT), NULL, "4P", &rf_set_size }, - { UNIT_PLAT, (4 << UNIT_V_PLAT), NULL, "5P", &rf_set_size }, - { UNIT_PLAT, (5 << UNIT_V_PLAT), NULL, "6P", &rf_set_size }, - { UNIT_PLAT, (6 << UNIT_V_PLAT), NULL, "7P", &rf_set_size }, - { UNIT_PLAT, (7 << UNIT_V_PLAT), NULL, "8P", &rf_set_size }, - { UNIT_AUTO, UNIT_AUTO, "autosize", "AUTOSIZE", 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_PLAT, (0 << UNIT_V_PLAT), NULL, "1P", &rf_set_size, NULL, NULL, "set drive to one platter (256K)" }, + { UNIT_PLAT, (1 << UNIT_V_PLAT), NULL, "2P", &rf_set_size, NULL, NULL, "set drive to two platters (512K)" }, + { UNIT_PLAT, (2 << UNIT_V_PLAT), NULL, "3P", &rf_set_size, NULL, NULL, "set drive to three platters (768K)" }, + { UNIT_PLAT, (3 << UNIT_V_PLAT), NULL, "4P", &rf_set_size, NULL, NULL, "set drive to four platters (1024K)" }, + { UNIT_PLAT, (4 << UNIT_V_PLAT), NULL, "5P", &rf_set_size, NULL, NULL, "set drive to five platters (1280K)" }, + { UNIT_PLAT, (5 << UNIT_V_PLAT), NULL, "6P", &rf_set_size, NULL, NULL, "set drive to six platters (1536K)" }, + { UNIT_PLAT, (6 << UNIT_V_PLAT), NULL, "7P", &rf_set_size, NULL, NULL, "set drive to seven platters (1792K)" }, + { UNIT_PLAT, (7 << UNIT_V_PLAT), NULL, "8P", &rf_set_size, NULL, NULL, "set drive to eight platters (2048K)" }, + { UNIT_AUTO, UNIT_AUTO, "autosize", "AUTOSIZE", NULL, NULL, NULL, "set drive to autosize platters" }, + { 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 } }; @@ -198,7 +200,9 @@ DEVICE rf_dev = { 1, 8, 21, 1, 8, 16, NULL, NULL, &rf_reset, &rf_boot, &rf_attach, NULL, - &rf_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG + &rf_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG, 0, + NULL, NULL, NULL, &rf_help, NULL, NULL, + &rf_description }; /* I/O dispatch routine, I/O addresses 17777460 - 17777476 */ @@ -503,3 +507,67 @@ uptr->capac = UNIT_GETP (val) * RF_DKSIZE; uptr->flags = uptr->flags & ~UNIT_AUTO; return SCPE_OK; } + +t_stat rf_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +const char *text2, *text3; +const char *const text = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"RF11/RS11 Fixed Head Disk Controller (RF)\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" The RFll-A is a fast, low-cost, random·access bulk-storage system. An\n" +" RFll-A provides 262,144 17-bit words (16 data bits and 1 parity bit)\n" +" of storage. Up to eight RSll disk platters can be controlled by one RFll\n" +" Controller for a total of 2,047,152 words of storage. An RFll-A includes\n" +" a Control Unit and the first Disk Drive.\n" +"\n" +" The RF11-A is unique in fixed head disks because each word is address-\n" +" able. Data transfers may be as small as one word or as large as 65,536\n" +" words. Individual words or groups of words may be read or rewritten\n" +" without any limits of fixed blocks or sectors, providing optimum use of\n" +" both disk storage and main memory in the PDP-11 system.\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n" +" The RSll disk contains a nickel·cobalt·plated disk driven by a hysterisis\n" +" synchronous motor. Data is recorded on a single disk surface by 128\n" +" fixed read/write heads.\n" +" Operation\n" +" Fast track switching time permits spiral read or write. Data may be\n" +" written in blocks from 1 to 65,536 words. The RFll Control automatic-\n" +" ally continues on the next track, or on the next disk surface, when the\n" +" last address on a track or surface has been used.\n"; +fprintf (st, "%s", text); +fprint_set_help (st, dptr); +text2 = +"\n" +" The default is one platter. The RF11 supports the BOOT command. The\n" +" RF11 is disabled at startup and is automatically disabled in a Qbus\n" +" system.\n"; +fprintf (st, "%s", text2); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +text3 = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n" +" The RF11 is a DMA device. If BURST = 0, word transfers are scheduled\n" +" individually; if BURST = 1, the entire transfer occurs in a single DMA\n" +" transfer.\n" +"\n" +" Error handling is as follows:\n" +"\n" +" error STOP_IOE processed as\n" +"\n" +" not attached 1 report error and stop\n" +" 0 non-existent disk\n" +"\n" +" RF11 data files are buffered in memory; therefore, end of file and OS\n" +" I/O errors cannot occur.\n"; +fprintf (st, "%s", text2); +return SCPE_OK; +} + +char *rf_description (DEVICE *dptr) +{ +return "RF11-A Fixed Head Disk controller"; +} diff --git a/PDP11/pdp11_ta.c b/PDP11/pdp11_ta.c index a9c2c438..17e0e3a6 100644 --- a/PDP11/pdp11_ta.c +++ b/PDP11/pdp11_ta.c @@ -138,6 +138,8 @@ UNIT *ta_busy (void); void ta_set_tr (void); uint32 ta_updsta (UNIT *uptr); uint32 ta_crc (uint8 *buf, uint32 cnt); +t_stat ta_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +char *ta_description (DEVICE *dptr); /* TA data structures @@ -159,39 +161,41 @@ UNIT ta_unit[] = { }; REG ta_reg[] = { - { ORDATA (TACS, ta_cs, 16) }, - { ORDATA (TAIDB, ta_idb, 8) }, - { ORDATA (TAODB, ta_odb, 8) }, - { FLDATA (WRITE, ta_write, 0) }, - { FLDATA (INT, IREQ (TA), INT_V_TA) }, - { FLDATA (ERR, ta_cs, CSR_V_ERR) }, - { FLDATA (TR, ta_cs, CSR_V_DONE) }, - { FLDATA (IE, ta_cs, CSR_V_IE) }, - { DRDATA (BPTR, ta_bptr, 17) }, - { DRDATA (BLNT, ta_blnt, 17) }, - { DRDATA (STIME, ta_stime, 24), PV_LEFT + REG_NZ }, - { DRDATA (CTIME, ta_ctime, 24), PV_LEFT + REG_NZ }, - { FLDATA (STOP_IOE, ta_stopioe, 0) }, - { URDATA (UFNC, ta_unit[0].FNC, 8, 5, 0, TA_NUMDR, 0), REG_HRO }, - { URDATA (UST, ta_unit[0].UST, 8, 2, 0, TA_NUMDR, 0), REG_HRO }, - { URDATA (POS, ta_unit[0].pos, 10, T_ADDR_W, 0, - TA_NUMDR, PV_LEFT | REG_RO) }, + { ORDATAD (TACS, ta_cs, 16, "control/status register") }, + { ORDATAD (TAIDB, ta_idb, 8, "input data buffer") }, + { ORDATAD (TAODB, ta_odb, 8, "output data buffer") }, + { FLDATAD (WRITE, ta_write, 0, "TA60 write operation flag") }, + { FLDATAD (INT, IREQ (TA), INT_V_TA, "interrupt request") }, + { FLDATAD (ERR, ta_cs, CSR_V_ERR, "error flag") }, + { FLDATAD (TR, ta_cs, CSR_V_DONE, "transfer request flag") }, + { FLDATAD (IE, ta_cs, CSR_V_IE, "interrupt enable flag") }, + { DRDATAD (BPTR, ta_bptr, 17, "buffer pointer") }, + { DRDATAD (BLNT, ta_blnt, 17, "buffer length") }, + { DRDATAD (STIME, ta_stime, 24, "operation start time"), PV_LEFT + REG_NZ }, + { DRDATAD (CTIME, ta_ctime, 24, "character latency"), PV_LEFT + REG_NZ }, + { FLDATAD (STOP_IOE, ta_stopioe, 0, "stop on I/O errors flag") }, + { URDATA (UFNC, ta_unit[0].FNC, 8, 5, 0, TA_NUMDR, REG_HRO), }, + { URDATA (UST, ta_unit[0].UST, 8, 2, 0, TA_NUMDR, REG_HRO), }, + { URDATAD (POS, ta_unit[0].pos, 10, T_ADDR_W, 0, + TA_NUMDR, PV_LEFT | REG_RO, "position") }, { ORDATA (DEVADDR, ta_dib.ba, 32), REG_HRO }, { ORDATA (DEVVEC, ta_dib.vec, 16), REG_HRO }, { NULL } }; MTAB ta_mod[] = { - { MTUF_WLK, 0, "write enabled", "WRITEENABLED", NULL }, - { MTUF_WLK, MTUF_WLK, "write locked", "LOCKED", NULL }, + { MTUF_WLK, 0, "write enabled", "WRITEENABLED", + NULL, NULL, NULL, "Write enable tape drive" }, + { MTUF_WLK, MTUF_WLK, "write locked", "LOCKED", + NULL, NULL, NULL, "Write lock tape drive" }, // { MTAB_XTD|MTAB_VUN, 0, "FORMAT", "FORMAT", // &sim_tape_set_fmt, &sim_tape_show_fmt, NULL }, { MTAB_XTD|MTAB_VUN, 0, "CAPACITY", NULL, - NULL, &sim_tape_show_capac, NULL }, - { MTAB_XTD|MTAB_VDV|MTAB_VALR, IOLN_TA, "ADDRESS", "ADDRESS", - &set_addr, &show_addr, NULL }, - { MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "VECTOR", "VECTOR", - &set_vec, &show_vec, NULL }, + NULL, &sim_tape_show_capac, NULL, "Display tape capacity" }, + { MTAB_XTD|MTAB_VDV|MTAB_VALR, 020, "ADDRESS", "ADDRESS", + &set_addr, &show_addr, NULL, "Bus address" }, + { MTAB_XTD|MTAB_VDV|MTAB_VALR, 1, "VECTOR", "VECTOR", + &set_vec, &show_vec, NULL, "Interrupt vector" }, { 0 } }; @@ -200,7 +204,9 @@ DEVICE ta_dev = { TA_NUMDR, 10, 31, 1, 8, 8, NULL, NULL, &ta_reset, &ta_boot, &ta_attach, &ta_detach, - &ta_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_UBUS | DEV_TAPE + &ta_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_UBUS | DEV_TAPE, 0, + NULL, NULL, NULL, &ta_help, NULL, NULL, + &ta_description }; /* I/O dispatch routines, I/O addresses 17777500 - 17777503 @@ -664,3 +670,35 @@ M[BOOT_CSR >> 1] = ta_dib.ba & DMASK; saved_PC = BOOT_ENTRY; return SCPE_OK; } + +t_stat ta_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +const char *const text = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" TA11/TA60 Cassette Tape (CT)\n" +"\n" +" The TA11 is a programmed I/O controller supporting two cassette drives\n" +" (0 and 1). The TA11 can be used like a small magtape under RT11 and\n" +" RSX-11M, and with the CAPS-11 operating system. Cassettes are simulated\n" +" as magnetic tapes with a fixed capacity (93,000 characters). The tape\n" +" format is always SimH standard.\n" +" The TA11 is disabled by default.\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n"; +fprintf (st, "%s", text); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +fprintf (st, "\nError handling is as follows:\n\n"); +fprintf (st, " error processed as\n"); +fprintf (st, " not attached tape not ready\n\n"); +fprintf (st, " end of file end of medium\n"); +fprintf (st, " OS I/O error fatal tape error\n\n"); +sim_tape_attach_help (st, dptr, uptr, flag, cptr); +return SCPE_OK; +} + +char *ta_description (DEVICE *dptr) +{ +return "TA11/TA60 Cassette Tape"; +} diff --git a/PDP11/pdp11_tc.c b/PDP11/pdp11_tc.c index 4ac9d998..1a568948 100644 --- a/PDP11/pdp11_tc.c +++ b/PDP11/pdp11_tc.c @@ -306,6 +306,8 @@ void dt_stopunit (UNIT *uptr); int32 dt_comobv (int32 val); int32 dt_csum (UNIT *uptr, int32 blk); int32 dt_gethdr (UNIT *uptr, int32 blk, int32 relpos); +t_stat dt_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +char *dt_description (DEVICE *dptr); /* DT data structures @@ -345,42 +347,44 @@ UNIT dt_unit[] = { #define DT_TIMER (DT_NUMDR) REG dt_reg[] = { - { ORDATA (TCST, tcst, 16) }, - { ORDATA (TCCM, tccm, 16) }, - { ORDATA (TCWC, tcwc, 16) }, - { ORDATA (TCBA, tcba, 16) }, - { ORDATA (TCDT, tcdt, 16) }, - { FLDATA (INT, IREQ (DTA), INT_V_DTA) }, - { FLDATA (ERR, tccm, CSR_V_ERR) }, - { FLDATA (DONE, tccm, CSR_V_DONE) }, - { FLDATA (IE, tccm, CSR_V_DONE) }, - { DRDATA (CTIME, dt_ctime, 31), REG_NZ }, - { DRDATA (LTIME, dt_ltime, 31), REG_NZ }, - { DRDATA (DCTIME, dt_dctime, 31), REG_NZ }, - { ORDATA (SUBSTATE, dt_substate, 1) }, + { ORDATAD (TCST, tcst, 16, "status register") }, + { ORDATAD (TCCM, tccm, 16, "command register") }, + { ORDATAD (TCWC, tcwc, 16, "word count register") }, + { ORDATAD (TCBA, tcba, 16, "bus address register") }, + { ORDATAD (TCDT, tcdt, 16, "data register") }, + { FLDATAD (INT, IREQ (DTA), INT_V_DTA, "interrupt pending flag") }, + { FLDATAD (ERR, tccm, CSR_V_ERR, "error flag") }, + { FLDATAD (DONE, tccm, CSR_V_DONE, "done flag") }, + { FLDATAD (IE, tccm, CSR_V_DONE, "interrupt enable flag") }, + { DRDATAD (CTIME, dt_ctime, 31, "time to complete transport stop"), REG_NZ }, + { DRDATAD (LTIME, dt_ltime, 31, "time between lines"), REG_NZ }, + { DRDATAD (DCTIME, dt_dctime, 31, "time to decelerate to a full stop"), REG_NZ }, + { ORDATAD (SUBSTATE, dt_substate, 1, "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 to 7") }, + { URDATAD (STATT, dt_unit[0].STATE, 8, 18, 0, + DT_NUMDR, REG_RO, "unit state, units 0 to 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") }, { ORDATA (DEVADDR, dt_dib.ba, 32), REG_HRO }, { ORDATA (DEVVEC, dt_dib.vec, 16), REG_HRO }, { NULL } }; MTAB dt_mod[] = { - { UNIT_WLK, 0, "write enabled", "WRITEENABLED", NULL }, - { UNIT_WLK, UNIT_WLK, "write locked", "LOCKED", NULL }, - { UNIT_8FMT + UNIT_11FMT, 0, "18b", NULL, NULL }, - { UNIT_8FMT + UNIT_11FMT, UNIT_8FMT, "12b", NULL, NULL }, - { UNIT_8FMT + UNIT_11FMT, UNIT_11FMT, "16b", NULL, NULL }, - { MTAB_XTD|MTAB_VDV, 004, "ADDRESS", "ADDRESS", - &set_addr, &show_addr, NULL }, - { MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR", - &set_vec, &show_vec, NULL }, + { UNIT_WLK, 0, "write enabled", "WRITEENABLED", + NULL, NULL, NULL, "Write enable tape drive" }, + { UNIT_WLK, UNIT_WLK, "write locked", "LOCKED", + NULL, NULL, NULL, "Write lock tape drive" }, + { UNIT_8FMT + UNIT_11FMT, 0, "18b", NULL }, + { UNIT_8FMT + UNIT_11FMT, UNIT_8FMT, "12b", NULL }, + { UNIT_8FMT + UNIT_11FMT, UNIT_11FMT, "16b", NULL }, + { 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 } }; @@ -397,7 +401,8 @@ DEVICE dt_dev = { NULL, NULL, &dt_reset, &dt_boot, &dt_attach, &dt_detach, &dt_dib, DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG, 0, - dt_deb, NULL, NULL + dt_deb, NULL, NULL, &dt_help, NULL, NULL, + &dt_description }; /* IO dispatch routines, I/O addresses 17777340 - 17777350 */ @@ -1344,3 +1349,156 @@ uptr->flags = (uptr->flags | UNIT_11FMT) & ~UNIT_8FMT; /* default fmt */ uptr->capac = DT_CAPAC; /* default size */ return detach_unit (uptr); } + +t_stat dt_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +const char *text2; +const char *const text = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"TC11/TU56 DECtape Controller (DT)\n" +"\n" +" The TCll is a DECtape system consists a Controller and up to 4 dual-unit\n" +" bidirectional magnetic-tape transports, and DECtape 3/4-inch magnetic\n" +" tape on 3.9-inch reels. Low cost, low maintenance and high reliability\n" +" are assured by:\n" +"\n" +" - Simply designed transport mechanisms which have no capstans and\n" +" no pinch rollers.\n" +" - Hydrodynamically lubricated tape guiding (the tape floats on air\n" +" over the tape guides while in motion)\n" +" - Redundant recording\n" +" - Manchester phase recording techniques (virtually eliminate drop outs)\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" Each transport has a read/write head for information recording and\n" +" playback on five channels of tape. The system stores information at\n" +" fixed positions on magnetic tape as in magnetic disk or drum storage\n" +" devices, rather than at unknown or variable positions as in conventional\n" +" magnetic tape systems. This feature allows replacement of blocks of\n" +" data on tape in a random fashion without disturbing other previously\n" +" recorded information. In particular, during the writing of information\n" +" on tape, the system reads format (mark) and timing information from the\n" +" tape and uses this information to determine the exact position at which\n" +" to record the information to be written. Similarly, in reading, the\n" +" same mark and timing information is used to locate data to be played\n" +" back from the tape.\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" The system utilizes a lO-track read/write head. The first five tracks\n" +" on the tape include a timing track, a mark track, and three data tracks.\n" +" The other five tracks are identical counterparts and are used for\n" +" redundant recording to increase system reliability. The redundant\n" +" recording of each character bit on non-adjacent tracks materially\n" +" reduces bit dropouts and minimizes the effect of skew. The use of\n" +" Manchester phase recording, rather than amplitude sensing techniques,\n" +" virtually eliminates dropouts.\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" The timing and mark channels control the timing of operations within\n" +" the Controller and establish the format of data contained on the \n" +" information channels. The timing and mark channels are recorded prior\n" +" to all normal data reading and writing on the information channels. The\n" +" timing of operations performed by the tape drive and some control\n" +" functions are determined by the information on the timing channel.\n" +" Therefore, wide variations in the speed of tape motion do not affect\n" +" system performance.\n" +"\n" +" The standard format tape is divided into 578 blocks. The structure of\n" +" each block is symmetric: block numbers and checksums are recorded at\n" +" both ends of a block and thus searching, reading, or writing can occur\n" +" in either direction. However, a block read in the opposite direction\n" +" than it was written will have the order of the data words reversed.\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n" +" Information read from the mark channel is used during reading and\n" +" writing data to indicate the beginning and end of data blocks and to\n" +" determine the functions performed by the system in each control mode.\n" +" The data tracks ara located in the middle of the tape where the effect\n" +" of skew is minimum. The data in one bit position of each track is\n" +" referred to as a line or as a character. Since. six lines make up a\n" +" word, the tape can record, 18-bit data words. During normal data\n" +" writing, the Controller disassembles the 18-bit word and distributes\n" +" the bits so they are recorded as six 3·bit characters. Since PDP-11\n" +" words are l6·bits long, the Controller writes the extra two bits as 0's\n" +" and ignores them when reading. However, during special modes, the\n" +" extra two bits can be written and recovered.\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" A 260 foot reel of DECtape is divided into three major areas: end zones\n" +" (forward and reverse), extension zones (forward and reverse), and the\n" +" information zone. The two end zones (each approximately 10 feet) mark\n" +" the end of the physical tape and are used for winding the tape around\n" +" the heads and onto the take·up reel. These zones never contain data.\n" +" The forward and reverse extension areas mark the end of the information\n" +" region of the tape. Their length is sufficient to ensure that once the\n" +" end zone is entered and tape motion is reversed; there is adequate\n" +" distance for the transport to come up to proper tape speed before\n" +" entering the information area.\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n" +" The information area, consists of blocks of data. The standard is a\n" +" nominal 578 blocks, each containing 256 data words (nominally). In \n" +" addition each block contains 10 control words.\n" +"\n" +" The blocks permit digital data to be partitioned into groups of words\n" +" which are interrelated while at the same time reducing the amount of\n" +" storage area that would be needed for addressing individual words. A\n" +" simple example of such a group of words is a program. A program can\n" +" be stored and retrieved from magnetic tape in a single block format\n" +" because it is not necessary to be able to retrieve only a single word\n" +" from the program. It is necessary; however, to be able to retrieve\n" +" different programs which may not be related in any way. Thus, each\n" +" program can be stored in a different block on the tape.\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" Since DECtape is a fixed address system, the programmer need not know\n" +" accurately where the tape has stopped. To locate a specific point on\n" +" tape he must only start the tape motion in the search mode. The address\n" +" of the block currently passing over the head is read into the DECtape\n" +" Control and loaded into an interface register. Simultaneously, a flag\n" +" is set and a program interrupt can occur. The program can then compare\n" +" the block number found with the desired block address and tape motion\n" +" continued or reversed accordingly.\n" +"\n" +" DECtape options include the ability to make units write enabled or write\n" +" locked.\n" +" The TC11 supports the BOOT command. The TC11 is automatically disabled\n" +" in a Qbus system.\n" +"\n" +" The TC11 supports supports PDP-8 format, PDP-11 format, and 18b format\n" +" DECtape images. ATTACH assumes the image is in PDP-11 format; the user\n" +" can force other choices with switches:\n" +"\n" +" -t PDP-8 format\n" +" -f 18b format\n" +" -a autoselect based on file size\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" The DECtape controller is a data-only simulator; the timing and mark\n" +" track, and block header and trailer, are not stored. Thus, the WRITE\n" +" TIMING AND MARK TRACK function is not supported; the READ ALL function\n" +" always returns the hardware standard block header and trailer; and the\n" +" WRITE ALL function dumps non-data words into the bit bucket.\n"; +fprintf (st, "%s", text); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +text2 = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n" +" It is critically important to maintain certain timing relationships\n" +" among the DECtape parameters, or the DECtape simulator will fail to\n" +" operate correctly.\n" +"\n" +" - LTIME must be at least 6\n" +" - DCTIME needs to be at least 100 times LTIME\n" +"\n" +" Acceleration time is set to 75% of deceleration time.\n"; +fprintf (st, "%s", text2); +return SCPE_OK; +} + +char *dt_description (DEVICE *dptr) +{ +return "TC11/TU56 DECtape controller"; +} diff --git a/PDP11/pdp11_tm.c b/PDP11/pdp11_tm.c index 1bccae54..c8d3bbc9 100644 --- a/PDP11/pdp11_tm.c +++ b/PDP11/pdp11_tm.c @@ -178,6 +178,8 @@ int32 tm_updcsta (UNIT *uptr); void tm_set_done (void); t_stat tm_map_err (UNIT *uptr, t_stat st); t_stat tm_vlock (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat tm_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +char *tm_description (DEVICE *dptr); /* MT data structures @@ -206,37 +208,39 @@ UNIT tm_unit[] = { }; REG tm_reg[] = { - { ORDATA (MTS, tm_sta, 16) }, - { ORDATA (MTC, tm_cmd, 16) }, - { ORDATA (MTBRC, tm_bc, 16) }, - { ORDATA (MTCMA, tm_ca, 16) }, - { ORDATA (MTD, tm_db, 8) }, - { ORDATA (MTRD, tm_rdl, 16) }, - { FLDATA (INT, IREQ (TM), INT_V_TM) }, - { FLDATA (ERR, tm_cmd, CSR_V_ERR) }, - { FLDATA (DONE, tm_cmd, CSR_V_DONE) }, - { FLDATA (IE, tm_cmd, CSR_V_IE) }, - { FLDATA (STOP_IOE, tm_stopioe, 0) }, - { DRDATA (TIME, tm_time, 24), PV_LEFT }, - { URDATA (UST, tm_unit[0].USTAT, 8, 16, 0, TM_NUMDR, 0) }, - { URDATA (POS, tm_unit[0].pos, 10, T_ADDR_W, 0, - TM_NUMDR, PV_LEFT | REG_RO) }, + { ORDATAD (MTS, tm_sta, 16, "status") }, + { ORDATAD (MTC, tm_cmd, 16, "command") }, + { ORDATAD (MTCMA, tm_ca, 16, "memory address") }, + { ORDATAD (MTBRC, tm_bc, 16, "byte/record count") }, + { ORDATAD (MTD, tm_db, 8, "data buffer") }, + { ORDATAD (MTRD, tm_rdl, 16, "read lines") }, + { FLDATAD (INT, IREQ (TM), INT_V_TM, "interrupt pending flag") }, + { FLDATAD (ERR, tm_cmd, CSR_V_ERR, "error flag") }, + { FLDATAD (DONE, tm_cmd, CSR_V_DONE, "device done flag") }, + { FLDATAD (IE, tm_cmd, CSR_V_IE, "interrupt enable flag") }, + { FLDATAD (STOP_IOE, tm_stopioe, 0, "stop on I/O error") }, + { DRDATAD (TIME, tm_time, 24, "delay"), PV_LEFT }, + { URDATAD (UST, tm_unit[0].USTAT, 8, 16, 0, TM_NUMDR, 0, "unit status, units 0 to 7") }, + { URDATAD (POS, tm_unit[0].pos, 10, T_ADDR_W, 0, + TM_NUMDR, PV_LEFT | REG_RO, "position, units 0 to 7") }, { ORDATA (DEVADDR, tm_dib.ba, 32), REG_HRO }, { ORDATA (DEVVEC, tm_dib.vec, 16), REG_HRO }, { NULL } }; MTAB tm_mod[] = { - { MTUF_WLK, 0, "write enabled", "WRITEENABLED", &tm_vlock }, - { MTUF_WLK, MTUF_WLK, "write locked", "LOCKED", &tm_vlock }, - { MTAB_XTD|MTAB_VUN, 0, "FORMAT", "FORMAT", - &sim_tape_set_fmt, &sim_tape_show_fmt, NULL }, - { MTAB_XTD|MTAB_VUN, 0, "CAPACITY", "CAPACITY", - &sim_tape_set_capac, &sim_tape_show_capac, 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 }, + { MTUF_WLK, 0, "write enabled", "WRITEENABLED", + &tm_vlock, NULL, NULL, "Write enable tape drive" }, + { MTUF_WLK, MTUF_WLK, "write locked", "LOCKED", + &tm_vlock, NULL, NULL, "Write lock tape drive" }, + { MTAB_XTD|MTAB_VUN|MTAB_VALR, 0, "FORMAT", "FORMAT", + &sim_tape_set_fmt, &sim_tape_show_fmt, NULL, "Set/Display tape format (SIMH, E11, TPC, P7B)" }, + { MTAB_XTD|MTAB_VUN|MTAB_VALR, 0, "CAPACITY", "CAPACITY", + &sim_tape_set_capac, &sim_tape_show_capac, NULL, "Set/Display capacity" }, + { 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 } }; @@ -245,7 +249,9 @@ DEVICE tm_dev = { TM_NUMDR, 10, T_ADDR_W, 1, 8, 8, NULL, NULL, &tm_reset, &tm_boot, &tm_attach, &tm_detach, - &tm_dib, DEV_DISABLE | DEV_UBUS | DEV_Q18 | DEV_DEBUG | DEV_TAPE + &tm_dib, DEV_DISABLE | DEV_UBUS | DEV_Q18 | DEV_DEBUG | DEV_TAPE, 0, + NULL, NULL, NULL, &tm_help, NULL, NULL, + &tm_description }; /* I/O dispatch routines, I/O addresses 17772520 - 17772532 @@ -729,3 +735,61 @@ M[BOOT_CSR >> 1] = (tm_dib.ba & DMASK) + 06; saved_PC = BOOT_ENTRY; return SCPE_OK; } + +t_stat tm_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +const char *text2; +const char *const text = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"TM11 Magnetic Tape Controller (TM)\n" +"\n" +" The TM11 is a high-performance, low-cost magnetic tape system ideally\n" +" suited for writing, reading, and storing large volumes of data and\n" +" programs in a serial manner. Because the system reads and writes in\n" +" industry-compatible format, information can be transferred between a\n" +" PDP11 and other computers.\n" +" The 10 1/2-inch tape reels contain up to 2400 feet of tape upon which\n" +" over 180 million bits of data can be stored on hight density 9-track\n" +" tape or over 140 million bits can be stored on high density 7-track tape.\n" +"\n" +" A Magtape System consists of up to 8 tape transports and a Control Unit.\n" +" Transports are capable of operation with seven or nine-track tape and a\n" +" system can contain any combination of 7-track and 9-track units.\n" +"\n" +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +" The TM11 supports the BOOT command. The bootstrap supports both\n" +" original and DEC standard boot formats. Originally, a tape bootstrap\n" +" read and executed the first record on tape. To allow for ANSI labels,\n" +" the DEC standard bootstrap skipped the first record and read and executed\n" +" the second. The DEC standard is the default; to bootstrap an original\n" +" format tape, use the command BOOT –O MTn. The TM11 is automatically\n" +" disabled in a Qbus system with more than 256KB of memory.\n"; +fprintf (st, "%s", text); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +text2 = +/*567901234567890123456789012345678901234567890123456789012345678901234567890*/ +"\n" +" It is critically important to maintain certain timing relationships\n" +" among the DECtape parameters, or the DECtape simulator will fail to\n" +" operate correctly.\n" +"\n" +" - LTIME must be at least 6\n" +" - DCTIME needs to be at least 100 times LTIME\n" +"\n" +" Acceleration time is set to 75% of deceleration time.\n"; +fprintf (st, "%s", text2); +fprintf (st, "\nError handling is as follows:\n\n"); +fprintf (st, " error processed as\n"); +fprintf (st, " not attached tape not ready\n\n"); +fprintf (st, " end of file bad tape\n"); +fprintf (st, " OS I/O error fatal tape error\n\n"); +sim_tape_attach_help (st, dptr, uptr, flag, cptr); +return SCPE_OK; +} + +char *tm_description (DEVICE *dptr) +{ +return "TM11 Magnet Tape controller"; +} diff --git a/doc/pdp11_doc.doc b/doc/pdp11_doc.doc index 2b2df13627bb84be7d21c6df8ff85387044031d3..655efae4fdc1b0e0b3bed2d4b832be81561856bf 100644 GIT binary patch delta 18179 zcmchf2Y3}#+Q-kC5C|m@Qm7%7W)MhjO9CPZO0m#EL6oi_BE_~M;00Z9DUoF-Fp8_d zVp-dQuyBP{ilQh*z%CY=ihO2`2r7cg_d9p)+&dF*LZ0vWo?M<^=G1r2dEfszGj}Fo z&I|SDtg8Rl-1cLnFh2=Gj3=$KzhAg;K^2Z9GYUpSAn$lHoQ{jMokuOXkPED*xDYS$DNn2 z*Ggz-CG!$8&18W-ETLU|ut7n_jT19uvR6Nv(88=N)L%$wZzT_fy0~(6**HB|N-|uU zr}u5_4H|OgnT86(hFmUvZR0j(7nj~WF)Klx(B;nJbgoXWPI-0phJ#w_?Gh8sHg46% zOnUSQiFsD?iNvgi!Jb~Tr@OAcV|0^9Kd(*;v$0Qaom5~Y!=?H9!lZn&G+)n24z(@N z%agojX+fm4P#=`+GfNBg@=#lMuD&VR9V{goF3r=MrkH1Q=jq#0OuKHEK0Def%B6a=T?cAJjMi@4nF(fc;J)a>KY{Y^ray!tau%(1w=ky4*tzo|JJw=YtfuTN{* z*|dPfu=sX|RhY6m^$=v~j45OP|ubms#mD?FB1?r}l(`?^CDFd(5S$wJ=ZZ z2|2}P$D@yI(Z@WsM}MJ(Id)G-1HMk4x_bFDE%bdYP4#%ZdO}Nc)*hc;(6YbT)2EkM zrTO~CmN~%)c=AKz@`SbODbV9ny=HA_MYwFWh5EGAE~dpoeO;<~9&fJxacXX`lw`wJ zq0&6v*UDp-=IPU{QkVXSRqBeAy7hCdOuJsU-X$%ovC_HMW5y>hw-Ztyb0|YENlOe4 z&FcvbJhI5VUVUGhxl~BbN)HXfr(c?WwK)i1q%>cDGQEE=G~SR4+f%o|)0r zJWa?0Zgt0hN)_jdo!{csge3}Ln9@cr!tfEVXe$y_;U5+UhI(99bF-mKUzio@?$-NfnXA<2j+A=z^;sRwwjO;?cBrja zkI(L5mU<(lK7Dq!sUx2+Qkt)y&UTq?^EY&8J$3blV{fF-*QdqxG32%KFWuI}?-#fC z5w)hk-Ep#I%0%t9&qb4osyz4V=JvYQF_YA`Y-?d`A1ITJL)Xf$VrXxy>MPR&NBhbh zT8`>IG)~$q=V)jJ<!LnI!jC+R4OqB?f50x7#7t3d{QAc=Du?(wOu?%;LWq1^^+)xd%jBuE#A+e08 zrdW2zMGZxbh~*|zEJpcFazmvX%hq~P2Y6AfjI3F$jB*6IY*ZAjjIM@O#yHH>kXFW2 zQ!6jTM-4@dXl0zGm2p*QWmTi71H7nK#@DP?ZgvE@?B*z1xuqIfncy%}Lt2?oO|3kf z7&R0%qLo`Mt=w9LRvzGsaFna$MYS@iX0>vgBgkd9MbXOSYG~zlhnX7E%I($E%Cx3Y zLs27InQCceY86@;-#qF7FRGPkHLI2Bjv$v!kD`@3s-cxT9cF4sD|c2?D}z#_hN4Ea za<`?GyQ|Pjue7KGyr@?0sadW3$r0qTKSj~Xz17gl42PK-(MsU-4Ec#xt#3k}%&4)b z5wXm+#4@`Iv9#xb?*HW?bbrl?#qWr6nLmnH=2Sy0a~)=CL@dVXxz*fQn($ydN+@bX zD-T*)d9Vtt)N3DgfEV3Z{#>(Kndb;{*}N!PnO_a9JmfG_Lt1&Lnp!!V6EzeyqLl@f zRu)vDl`>v2MG^BwwX(2gwX(<&N1z^#=mO(G zIb{*F#VPHe2qwerpq%w8{H7l02S0(&OJ%Y&5_B1Fto&Av@vCa(&krFBKPtcW1Km<7tOrLYX1fi3VM{0L3<3(*03!!0l$LPIj1+boj;N6KVl zY4Ee3-yEiF#9RLuAzG=XkH8KfY~mZJP1IEMT0t80gZ^*}On_yeBKvQMA)+e69l(n6 zzeuY{pMYSriTHi*2{99DKg*Bj-U}RjUuH0(QaK_RJHHx?8dR%>G;R&;;W^rtd?dt+ z(B)$xet}C4F+Vs0*M3SUU>Y?2jF3V*=>NG8epr1J866YCeO!p6UkdRhd=H(zq6`XQ zER=kOTV{MM#OV_V`Wswyl16YjjDx?!YFG=W{)btAD?}o+f+9Eq&B}y$6Mlss|H~r# z4i7=^?}fM;t^*w&fhS-WoPy6!332`C(?XQNgfqAoo`T&F^CQ2w08L=nPeM$B8So%H z1HFG{rZDNO5Ub$PUxaAG%b_dbAp8uo&I>Wf7(=d;2bn3>MHtO;VdW>WPc*WVDQ89@DaoxGS!j8aV(63!=RLsjzW}L z`oeMe5`Ghb54OluYdq{A5f!TXwjniL%W*b51qb0YWTGymvH@^ED77sI12)5F5c37j zf-B)RSPU<~0XPdS4hvBLLtr{AI2>R@3$Kc>e-=>pEW8D0AngcohdW>uyaMG=7qwpo zlRzo|A21B{4~IX2S_wLo!b`9o-hut_9mKLq)JpNdcdQcSpHk(Yb$g`8cy*g>=QlSE zsfE_6YE>RuPn}suW5Vl+(35V@lDY)$1+~1^z>{zk8nD#*z)W}wJ_5D;&cL5pf@&GQ z7FvpuWj7XTn`<$;o75V89LnK)Xv>;x2i-xf(P{7^9E0P~ly$1sY-h-Y$?yoMHM|SX zgIdc;tmR}F05joPI0|Zw|0dMO_@q=0H4>zDz*x6ZUZZ|J$|zqg8~at0pTOD*HnJTI zVaX2#wH1`Yn_z7PKagI`c2EMJf!Z4C{J;(XJz*NW0EeOOX;uVW55wSFP&>#aXRKif zqn@tz{xiY7zf|_Cu+yrRYQLEXZ-cep)cTRl3a*EepNJ$p4Qjvn2$Fvm;wrcr?gzF1 zEC&PLgA3q2Ywk(6aa;*%ZwkO~V&gs9Lg`oOm*EVg|H8V2d7$>M6=3aQJ8YIIaP|7R#J?BKSNHs6#Fxz z_%Kt7xGX7_!8%ycR*LVyn0`vOGKR)#&-*P0Zo`T7aGd4HbkZ}ya_B4E%K;viU#Qw>-T%E8AV4F`_^es@jG1?6x|Sf7Buwl-J#Rq3O!0uI3M;E9o98axS~ zKz+iL5947zsIWZ;R_LxFe9yvjFffi0L4QK2Lb@mv)?FNj6IK=8`4Ae3@o1@hMctil zs<7@<8zqA+Fw`c4`J_EW-3zyZrG%xV_k&VIIf_uK$U+rL86)8zs9_Ck4JqS0jyWh} z0!)Meu$SLcFSzi?DA^o?kibe1*P@+Eo zmhkIlNl^;c0(gmZht^VD3SC(Um%*c;7RF9ci=!Oov_q|M0=|Kt!5onBNU0oatlP|G zHleZhyKAB*=k2FcB7lnw$Z%FOlMYC}xssvXkLaP?O#R zu8vZ;A&bddP8dqslZ#rRBMwncxdBE1R}bqG@Fy#^snTVz95%ux_y$gba%DD@;!5Sx zr$TOhnd3{i)pGCqq`$?zmYdI$j>WZ>yOT-31nc1lD7ROsHr3!P`~vL@a1GoAtKbdz z4jL3nkq0-x3|Il1;V9H4jw-Hsuo+Z*_klger-*YhakXM?4k&P6Gi|=~tKfHpD_{)V z19makV_rhc&xK;2O5CpkrGY813zQa)K^$7h0i}x`um+Sq_P|~Uc|^s>c>FbalahP9 zvHu8Pmbt%-HxgQM55_vh7aH|so-iEl03Ei%7f`2{~g(N6|o-hgSg@>V%z0Ga^pUT+!6&E@BRmhfSJ8D%nY;|gZ&8o_Tr{xk}=RB# zIxMSf*z%DsHp?nw>*w%~E9kCpzk%Is{ZuC0&+YV&nGKJZ$T-Jq6@)E!FS1!y8JlH? zkK9Iu?DPWLJl%%MhOMsaVY8|-HmeT*xDAJYGJD$ksf?|k!$0nze{AzCtT<1zAUvW* zeQcIhCfwIk(MMK6_}m`DAs#auwmj!*n`M=;^>g^h_Hp>-3qoqR*^?aDSiEXJ$4$eqTk6Sp~NK4&V8l zzVkVK_lK;*cRr`@d=-6X71+-0@SV@;J6}cLQNSPJcsC8v7B-75;jXHgv1GFLSiE}L zslIZmJHC=Y{_WZ|a*TR_t)3dIN3-gIoq9f|o=2(YKU*^Mwxz!7 zsP7f(USHi@t9w~>^QCTm)SZU9*sH6lx_FfYj!)5!$I6nxuDi66F(bm48<8*K#V9dE zOcmp}K>30fD(hlZP(@u~Wpzf;eOgNR1TL<5m7TyPTvgP$E2}fsIZxoNtRd!oRn%2F zb0cG>mNLq6kxNuMRUDRE=?T=;zOtFSh0Az36dX?C~ zdgZg7<~%{=v-MOlTP_Bbo!mIW3EEjRRkuNvjnX4LM$t^Iqpfk})5V}sO5?E9*x#$L zT)CFn*DLF1Y@e;A_^qLPE1x4_sa(t6DyHn^zOXWPuz9OGf7I3Kts>g&+Eo~>+!O59 zQTqAK?Z8(>^x3APbhP?a?ipVdo>9Gnp6M55Z(?t*;)Ip21GP#2I$K-Td(CTXxUlRk zUN#(HljVg$EF11z9#gmBQELw02i|3KJpms!=X+uc?*94CxDS@_y>L2TyOtD7s!sOK9Lfk{*UYH37GI?+e4YGKe4qLJr41C&} zN7)eHMu^6c58dE4m=1&6GiylbKwF+hC?7vOSDRowK37Zi$A~&X{~W5tn?|twq|Q1Q z&ZqH~BAs`5&;!Q9MEC`MgPaWB@j*jImIQNP9&Cio(1wwAfQ5|kuh8vM-Xp+xm~bgR zKG~5M4UpIgKfz^rG=P3E7>2+w7!EhVNEi#_U;@knKb(f2AjO3p$cHX)Ba8w+JOHa; z4ZHzwx%>o=#7U^<#)r@WIze9;08`-(SPG@E0XD&h@ClrS^YE%qh`rFafMCL0co0fp z3A_vM!(liIXW^WmAF+kJpMaKKc+&;{gmthR_CwpQyaNIs6u>|j3}av%TymM<&V(`; z2K(SRoP*yXwVMzbFbn3u7jOdhT#jcB^5Zm|gYCt~>X`6TznH zPLOj2)9UAiA~{Ej=A;zrBl%~gt)rG;)(O>pd*Ir~wC=KAUolu@i0=FgEc?5bAle<}gP*N#|N3CZV@hv9x#K zN^PE|ABauZ^bc*glwRY8HCnq`&2AgD!I-y3%Se5C(k}I9@i7?A0d-WTQ^zHN9c#4u zjS|(#R9>B29WnpKdTnb=u4rnk+@N($v97CZ%AqEzs@z$HMuWXoRrh~8dUwHQjA8gI1Gk;AQFvH_9}P83skLjR)zgQ)dgo& z*b`Lsf7Ny_bVQ81Y7;vBX&w@kXL?*jW|vMxxPq zo5Ntl8%c)WUZuWSS%Xh9_B*R0-bgaix7!T5Y`aC0G1XZW@kWxd%~=)kMv~EJhr?jR z8%f3}XH~=-Nyb`dRm2-f#sz0p#2ZOQ|JNMnig+WzSZS}yvw0)ID0fyxypdpZe_iVu zeqzECW&YognVWWMxv{zG|8wcbHKjicfPpXw2E!0g_1AH{9)^K2`fV*aQ5=jaoXb!SdbOHSXT4`T3oQANOig zd*|-_Hu&GBRQ&H#h_~n~J`!(%k4_P^aP<+}g? delta 19374 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 J_iD4X{{hWvHo*V@ diff --git a/doc/pdp18b_doc.doc b/doc/pdp18b_doc.doc index 1fb4b54c0953cd3e5e1a6c496fc57be924086273..4ebc50135cf0250394442bc28a8d6aa2ee068bf6 100644 GIT binary patch delta 21849 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 KfqPZw!2bZi-g1xt diff --git a/doc/pdp8_doc.doc b/doc/pdp8_doc.doc index 2a5cb19ef18a4a2dc965c3dc659e5ce25813afa8..4b131a2ac06a7f9e043fac76008fb48157f63a45 100644 GIT binary patch delta 22313 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 literal 109056 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