From a91b6db21e0feac96ece6790a8228bd3feb727c5 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 6 Feb 2013 06:34:31 -0800 Subject: [PATCH] Adding help to VAX system devices --- VAX/vax610_stddev.c | 26 +++++++++++++++++-- VAX/vax630_stddev.c | 31 ++++++++++++++++++++-- VAX/vax730_stddev.c | 60 +++++++++++++++++++++++++++++++++++++++--- VAX/vax750_stddev.c | 60 +++++++++++++++++++++++++++++++++++++++--- VAX/vax780_stddev.c | 62 +++++++++++++++++++++++++++++++++++++++++--- VAX/vax860_stddev.c | 60 +++++++++++++++++++++++++++++++++++++++--- VAX/vax_stddev.c | 49 +++++++++++++++++++++++++++------- doc/vax780_doc.doc | Bin 139776 -> 155136 bytes doc/vax_doc.doc | Bin 151552 -> 151552 bytes 9 files changed, 322 insertions(+), 26 deletions(-) diff --git a/VAX/vax610_stddev.c b/VAX/vax610_stddev.c index 59cfe468..afb2e80e 100644 --- a/VAX/vax610_stddev.c +++ b/VAX/vax610_stddev.c @@ -91,6 +91,8 @@ t_stat clk_reset (DEVICE *dptr); char *tti_description (DEVICE *dptr); char *tto_description (DEVICE *dptr); char *clk_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); void txdb_func (int32 data); extern int32 sysd_hlt_enb (void); @@ -131,7 +133,7 @@ DEVICE tti_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - &tti_dib, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + &tti_dib, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -171,7 +173,7 @@ DEVICE tto_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - &tto_dib, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + &tto_dib, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -363,6 +365,16 @@ sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -402,6 +414,16 @@ sim_cancel (&tto_unit); /* deactivate unit */ return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; diff --git a/VAX/vax630_stddev.c b/VAX/vax630_stddev.c index e3b70565..6cda6973 100644 --- a/VAX/vax630_stddev.c +++ b/VAX/vax630_stddev.c @@ -68,6 +68,8 @@ t_stat clk_reset (DEVICE *dptr); char *tti_description (DEVICE *dptr); char *tto_description (DEVICE *dptr); char *clk_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); extern int32 sysd_hlt_enb (void); @@ -106,7 +108,7 @@ DEVICE tti_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - &tti_dib, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + &tti_dib, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -146,7 +148,7 @@ DEVICE tto_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - &tto_dib, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + &tto_dib, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -298,6 +300,21 @@ sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprintf (st, "When the console terminal is attached to a Telnet session or the simulator is\n"); +fprintf (st, "running from a Windows command prompt, it recognizes BREAK. If BREAK is\n"); +fprintf (st, "entered, and BDR<7> is set (also known as SET CPU NOAUTOBOOT), control returns\n"); +fprintf (st, "to the console firmware; otherwise, BREAK is treated as a normal terminal\n"); +fprintf (st, "input condition.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -337,6 +354,16 @@ sim_cancel (&tto_unit); /* deactivate unit */ return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; diff --git a/VAX/vax730_stddev.c b/VAX/vax730_stddev.c index ed53e783..cce81c8a 100644 --- a/VAX/vax730_stddev.c +++ b/VAX/vax730_stddev.c @@ -220,6 +220,9 @@ char *tto_description (DEVICE *dptr); char *clk_description (DEVICE *dptr); char *tmr_description (DEVICE *dptr); char *td_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat clk_attach (UNIT *uptr, char *cptr); t_stat clk_detach (UNIT *uptr); t_stat tmr_reset (DEVICE *dptr); @@ -264,7 +267,7 @@ DEVICE tti_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -300,7 +303,7 @@ DEVICE tto_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -325,7 +328,7 @@ DEVICE clk_dev = { 1, 0, 8, 4, 0, 32, NULL, NULL, &clk_reset, NULL, &clk_attach, &clk_detach, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &clk_help, NULL, NULL, &clk_description }; @@ -691,6 +694,16 @@ sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -729,6 +742,16 @@ sim_cancel (&tto_unit); /* deactivate unit */ return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; @@ -896,6 +919,37 @@ if (clk_unit.filebuf == NULL) { /* make sure the TODR is return SCPE_OK; } +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Real-Time Clock (CLK)\n\n"); +fprintf (st, "The real-time clock autocalibrates; the clock interval is adjusted up or down\n"); +fprintf (st, "so that the clock tracks actual elapsed time.\n\n"); +fprintf (st, "There are two modes of TODR operation:\n\n"); +fprintf (st, " Default VMS mode. Without initializing the TODR it returns the current\n"); +fprintf (st, " time of year offset which VMS would set the clock to\n"); +fprintf (st, " if VMS knew the correct time (i.e. by manual input).\n"); +fprintf (st, " This is correct almost all the time unless a VMS disk\n"); +fprintf (st, " hadn't been booted from in the current year. This mode\n"); +fprintf (st, " produces strange time results for non VMS OSes on each\n"); +fprintf (st, " system boot.\n"); +fprintf (st, " OS Agnostic mode. This mode behaves precisely like the VAX780 TODR and\n"); +fprintf (st, " works correctly for all OSes. This mode is enabled by\n"); +fprintf (st, " attaching the CLK to a battery backup state file for the\n"); +fprintf (st, " TOY clock (i.e. sim> attach CLK TOY_CLOCK). When\n"); +fprintf (st, " operating in OS Agnostic mode, the TODR will initially\n"); +fprintf (st, " start counting from 0 and be adjusted differently when\n"); +fprintf (st, " an OS specifically writes to the TODR. VMS determines\n"); +fprintf (st, " if the TODR currently contains a valid time if the value\n"); +fprintf (st, " it sees is less than about 1 month. If the time isn't\n"); +fprintf (st, " valid VMS will prompt to set the time during the system\n"); +fprintf (st, " boot. While prompting for the time it will wait for an\n"); +fprintf (st, " answer to the prompt for up to the SYSGEN parameter\n"); +fprintf (st, " TIMEPROMPTWAIT seconds. A value of 0 for TIMEPROMPTWAIT\n"); +fprintf (st, " will disable the clock setting prompt.\n"); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *clk_description (DEVICE *dptr) { return "time of year clock"; diff --git a/VAX/vax750_stddev.c b/VAX/vax750_stddev.c index 99683e1d..62eca7ae 100644 --- a/VAX/vax750_stddev.c +++ b/VAX/vax750_stddev.c @@ -216,6 +216,9 @@ t_stat clk_reset (DEVICE *dptr); char *tti_description (DEVICE *dptr); char *tto_description (DEVICE *dptr); char *clk_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat clk_attach (UNIT *uptr, char *cptr); t_stat clk_detach (UNIT *uptr); t_stat tmr_reset (DEVICE *dptr); @@ -264,7 +267,7 @@ DEVICE tti_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -300,7 +303,7 @@ DEVICE tto_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -325,7 +328,7 @@ DEVICE clk_dev = { 1, 0, 8, 4, 0, 32, NULL, NULL, &clk_reset, NULL, &clk_attach, &clk_detach, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &clk_help, NULL, NULL, &clk_description }; @@ -687,6 +690,16 @@ csi_int = 0; return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -726,6 +739,16 @@ sim_cancel (&tto_unit); /* deactivate unit */ return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; @@ -893,6 +916,37 @@ if (clk_unit.filebuf == NULL) { /* make sure the TODR is return SCPE_OK; } +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Real-Time Clock (CLK)\n\n"); +fprintf (st, "The real-time clock autocalibrates; the clock interval is adjusted up or down\n"); +fprintf (st, "so that the clock tracks actual elapsed time.\n\n"); +fprintf (st, "There are two modes of TODR operation:\n\n"); +fprintf (st, " Default VMS mode. Without initializing the TODR it returns the current\n"); +fprintf (st, " time of year offset which VMS would set the clock to\n"); +fprintf (st, " if VMS knew the correct time (i.e. by manual input).\n"); +fprintf (st, " This is correct almost all the time unless a VMS disk\n"); +fprintf (st, " hadn't been booted from in the current year. This mode\n"); +fprintf (st, " produces strange time results for non VMS OSes on each\n"); +fprintf (st, " system boot.\n"); +fprintf (st, " OS Agnostic mode. This mode behaves precisely like the VAX780 TODR and\n"); +fprintf (st, " works correctly for all OSes. This mode is enabled by\n"); +fprintf (st, " attaching the CLK to a battery backup state file for the\n"); +fprintf (st, " TOY clock (i.e. sim> attach CLK TOY_CLOCK). When\n"); +fprintf (st, " operating in OS Agnostic mode, the TODR will initially\n"); +fprintf (st, " start counting from 0 and be adjusted differently when\n"); +fprintf (st, " an OS specifically writes to the TODR. VMS determines\n"); +fprintf (st, " if the TODR currently contains a valid time if the value\n"); +fprintf (st, " it sees is less than about 1 month. If the time isn't\n"); +fprintf (st, " valid VMS will prompt to set the time during the system\n"); +fprintf (st, " boot. While prompting for the time it will wait for an\n"); +fprintf (st, " answer to the prompt for up to the SYSGEN parameter\n"); +fprintf (st, " TIMEPROMPTWAIT seconds. A value of 0 for TIMEPROMPTWAIT\n"); +fprintf (st, " will disable the clock setting prompt.\n"); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *clk_description (DEVICE *dptr) { return "time of year clock"; diff --git a/VAX/vax780_stddev.c b/VAX/vax780_stddev.c index 77324d18..c1c1dc14 100644 --- a/VAX/vax780_stddev.c +++ b/VAX/vax780_stddev.c @@ -234,6 +234,9 @@ char *tto_description (DEVICE *dptr); char *clk_description (DEVICE *dptr); char *tmr_description (DEVICE *dptr); char *fl_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat clk_attach (UNIT *uptr, char *cptr); t_stat clk_detach (UNIT *uptr); t_stat tmr_reset (DEVICE *dptr); @@ -280,7 +283,7 @@ DEVICE tti_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -307,7 +310,7 @@ REG tto_reg[] = { MTAB tto_mod[] = { { TT_MODE, TT_MODE_7B, "7b", "7B", NULL, NULL, NULL, "Set 7 bit mode" }, { TT_MODE, TT_MODE_8B, "8b", "8B", NULL, NULL, NULL, "Set 8 bit mode" }, - { TT_MODE, TT_MODE_7P, "7p", "7P", NULL, NULL, NULL, "Set 7 bit mode (suppress non printing)" }, + { TT_MODE, TT_MODE_7P, "7p", "7P", NULL, NULL, NULL, "Set 7 bit mode (suppress non printing output)" }, { 0 } }; @@ -316,7 +319,7 @@ DEVICE tto_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -341,7 +344,7 @@ DEVICE clk_dev = { 1, 0, 8, 4, 0, 32, NULL, NULL, &clk_reset, NULL, &clk_attach, &clk_detach, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &clk_help, NULL, NULL, &clk_description }; @@ -504,6 +507,16 @@ sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -543,6 +556,16 @@ sim_cancel (&tto_unit); /* deactivate unit */ return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; @@ -710,6 +733,37 @@ if (clk_unit.filebuf == NULL) { /* make sure the TODR is return SCPE_OK; } +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Real-Time Clock (CLK)\n\n"); +fprintf (st, "The real-time clock autocalibrates; the clock interval is adjusted up or down\n"); +fprintf (st, "so that the clock tracks actual elapsed time.\n\n"); +fprintf (st, "There are two modes of TODR operation:\n\n"); +fprintf (st, " Default VMS mode. Without initializing the TODR it returns the current\n"); +fprintf (st, " time of year offset which VMS would set the clock to\n"); +fprintf (st, " if VMS knew the correct time (i.e. by manual input).\n"); +fprintf (st, " This is correct almost all the time unless a VMS disk\n"); +fprintf (st, " hadn't been booted from in the current year. This mode\n"); +fprintf (st, " produces strange time results for non VMS OSes on each\n"); +fprintf (st, " system boot.\n"); +fprintf (st, " OS Agnostic mode. This mode behaves precisely like the VAX780 TODR and\n"); +fprintf (st, " works correctly for all OSes. This mode is enabled by\n"); +fprintf (st, " attaching the CLK to a battery backup state file for the\n"); +fprintf (st, " TOY clock (i.e. sim> attach CLK TOY_CLOCK). When\n"); +fprintf (st, " operating in OS Agnostic mode, the TODR will initially\n"); +fprintf (st, " start counting from 0 and be adjusted differently when\n"); +fprintf (st, " an OS specifically writes to the TODR. VMS determines\n"); +fprintf (st, " if the TODR currently contains a valid time if the value\n"); +fprintf (st, " it sees is less than about 1 month. If the time isn't\n"); +fprintf (st, " valid VMS will prompt to set the time during the system\n"); +fprintf (st, " boot. While prompting for the time it will wait for an\n"); +fprintf (st, " answer to the prompt for up to the SYSGEN parameter\n"); +fprintf (st, " TIMEPROMPTWAIT seconds. A value of 0 for TIMEPROMPTWAIT\n"); +fprintf (st, " will disable the clock setting prompt.\n"); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *clk_description (DEVICE *dptr) { return "time of year clock"; diff --git a/VAX/vax860_stddev.c b/VAX/vax860_stddev.c index 497edda1..00736480 100644 --- a/VAX/vax860_stddev.c +++ b/VAX/vax860_stddev.c @@ -250,6 +250,9 @@ char *tto_description (DEVICE *dptr); char *clk_description (DEVICE *dptr); char *tmr_description (DEVICE *dptr); char *rlcs_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat clk_attach (UNIT *uptr, char *cptr); t_stat clk_detach (UNIT *uptr); t_stat tmr_reset (DEVICE *dptr); @@ -299,7 +302,7 @@ DEVICE tti_dev = { 4, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -340,7 +343,7 @@ DEVICE tto_dev = { 4, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -365,7 +368,7 @@ DEVICE clk_dev = { 1, 0, 8, 4, 0, 32, NULL, NULL, &clk_reset, NULL, &clk_attach, &clk_detach, - NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 0, 0, NULL, NULL, NULL, &clk_help, NULL, NULL, &clk_description }; @@ -622,6 +625,16 @@ sim_activate_abs (&tti_unit[ID_CT], KBD_WAIT (tti_unit[ID_CT].wait, tmr_poll)); return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -674,6 +687,16 @@ sim_cancel (&tto_unit[ID_LC]); return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; @@ -841,6 +864,37 @@ if (clk_unit.filebuf == NULL) { /* make sure the TODR is return SCPE_OK; } +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Real-Time Clock (CLK)\n\n"); +fprintf (st, "The real-time clock autocalibrates; the clock interval is adjusted up or down\n"); +fprintf (st, "so that the clock tracks actual elapsed time.\n\n"); +fprintf (st, "There are two modes of TODR operation:\n\n"); +fprintf (st, " Default VMS mode. Without initializing the TODR it returns the current\n"); +fprintf (st, " time of year offset which VMS would set the clock to\n"); +fprintf (st, " if VMS knew the correct time (i.e. by manual input).\n"); +fprintf (st, " This is correct almost all the time unless a VMS disk\n"); +fprintf (st, " hadn't been booted from in the current year. This mode\n"); +fprintf (st, " produces strange time results for non VMS OSes on each\n"); +fprintf (st, " system boot.\n"); +fprintf (st, " OS Agnostic mode. This mode behaves precisely like the VAX780 TODR and\n"); +fprintf (st, " works correctly for all OSes. This mode is enabled by\n"); +fprintf (st, " attaching the CLK to a battery backup state file for the\n"); +fprintf (st, " TOY clock (i.e. sim> attach CLK TOY_CLOCK). When\n"); +fprintf (st, " operating in OS Agnostic mode, the TODR will initially\n"); +fprintf (st, " start counting from 0 and be adjusted differently when\n"); +fprintf (st, " an OS specifically writes to the TODR. VMS determines\n"); +fprintf (st, " if the TODR currently contains a valid time if the value\n"); +fprintf (st, " it sees is less than about 1 month. If the time isn't\n"); +fprintf (st, " valid VMS will prompt to set the time during the system\n"); +fprintf (st, " boot. While prompting for the time it will wait for an\n"); +fprintf (st, " answer to the prompt for up to the SYSGEN parameter\n"); +fprintf (st, " TIMEPROMPTWAIT seconds. A value of 0 for TIMEPROMPTWAIT\n"); +fprintf (st, " will disable the clock setting prompt.\n"); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *clk_description (DEVICE *dptr) { return "time of year clock"; diff --git a/VAX/vax_stddev.c b/VAX/vax_stddev.c index 284b7f03..771095aa 100644 --- a/VAX/vax_stddev.c +++ b/VAX/vax_stddev.c @@ -122,8 +122,10 @@ t_stat clk_detach (UNIT *uptr); t_stat todr_resync (void); char *tti_description (DEVICE *dptr); char *tto_description (DEVICE *dptr); -t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); char *clk_description (DEVICE *dptr); +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat clk_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); extern int32 sysd_hlt_enb (void); extern int32 fault_PC; @@ -163,7 +165,7 @@ DEVICE tti_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tti_reset, NULL, NULL, NULL, - &tti_dib, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + &tti_dib, 0, 0, NULL, NULL, NULL, &tti_help, NULL, NULL, &tti_description }; @@ -193,7 +195,7 @@ REG tto_reg[] = { MTAB tto_mod[] = { { TT_MODE, TT_MODE_7B, "7b", "7B", NULL, NULL, NULL, "Set 7 bit mode" }, { TT_MODE, TT_MODE_8B, "8b", "8B", NULL, NULL, NULL, "Set 8 bit mode" }, - { TT_MODE, TT_MODE_7P, "7p", "7P", NULL, NULL, NULL, "Set 7 bit mode (suppress non printing)" }, + { TT_MODE, TT_MODE_7P, "7p", "7P", NULL, NULL, NULL, "Set 7 bit mode (suppress non printing output)" }, { MTAB_XTD|MTAB_VDV, 0, "VECTOR", NULL, NULL, &show_vec, NULL, "Display interrupt vector" }, { 0 } }; @@ -203,7 +205,7 @@ DEVICE tto_dev = { 1, 10, 31, 1, 16, 8, NULL, NULL, &tto_reset, NULL, NULL, NULL, - &tto_dib, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + &tto_dib, 0, 0, NULL, NULL, NULL, &tto_help, NULL, NULL, &tto_description }; @@ -361,6 +363,21 @@ sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } +t_stat tti_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Input (TTI)\n\n"); +fprintf (st, "The terminal input (TTI) polls the console keyboard for input.\n\n"); +fprintf (st, "When the console terminal is attached to a Telnet session or the simulator is\n"); +fprintf (st, "running from a Windows command prompt, it recognizes BREAK. If BREAK is\n"); +fprintf (st, "entered, and BDR<7> is set (also known as SET CPU NOAUTOBOOT), control returns\n"); +fprintf (st, "to the console firmware; otherwise, BREAK is treated as a normal terminal\n"); +fprintf (st, "input condition.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tti_description (DEVICE *dptr) { return "console terminal input"; @@ -400,6 +417,16 @@ sim_cancel (&tto_unit); /* deactivate unit */ return SCPE_OK; } +t_stat tto_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +fprintf (st, "Console Terminal Output (TTO)\n\n"); +fprintf (st, "The terminal output (TTO) writes to the simulator console.\n\n"); +fprint_set_help (st, dptr); +fprint_show_help (st, dptr); +fprint_reg_help (st, dptr); +return SCPE_OK; +} + char *tto_description (DEVICE *dptr) { return "console terminal output"; @@ -539,7 +566,7 @@ fprintf (st, " Default VMS mode. Without initializing the TODR it returns the fprintf (st, " time of year offset which VMS would set the clock to\n"); fprintf (st, " if VMS knew the correct time (i.e. by manual input).\n"); fprintf (st, " This is correct almost all the time unless a VMS disk\n"); -fprintf (st, " hadn’t been booted from in the current year. This mode\n"); +fprintf (st, " hadn't been booted from in the current year. This mode\n"); fprintf (st, " produces strange time results for non VMS OSes on each\n"); fprintf (st, " system boot.\n"); fprintf (st, " OS Agnostic mode. This mode behaves precisely like the VAX780 TODR and\n"); @@ -548,10 +575,14 @@ fprintf (st, " attaching the CLK to a battery backup state fprintf (st, " TOY clock (i.e. sim> attach CLK TOY_CLOCK). When\n"); fprintf (st, " operating in OS Agnostic mode, the TODR will initially\n"); fprintf (st, " start counting from 0 and be adjusted differently when\n"); -fprintf (st, " an OS specifically writes to the TODR. VMS will prompt\n"); -fprintf (st, " to set the time on each boot (if the TODR value is less\n"); -fprintf (st, " than about 1 month) unless the SYSGEN parameter\n"); -fprintf (st, " TIMEPROMPTWAIT is set to 0.\n"); +fprintf (st, " an OS specifically writes to the TODR. VMS determines\n"); +fprintf (st, " if the TODR currently contains a valid time if the value\n"); +fprintf (st, " it sees is less than about 1 month. If the time isn't\n"); +fprintf (st, " valid VMS will prompt to set the time during the system\n"); +fprintf (st, " boot. While prompting for the time it will wait for an\n"); +fprintf (st, " answer to the prompt for up to the SYSGEN parameter\n"); +fprintf (st, " TIMEPROMPTWAIT seconds. A value of 0 for TIMEPROMPTWAIT\n"); +fprintf (st, " will disable the clock setting prompt.\n"); fprint_reg_help (st, dptr); return SCPE_OK; } diff --git a/doc/vax780_doc.doc b/doc/vax780_doc.doc index 7b708901764be9068b8aabbd7f6605c26aa3c105..fdc37d9fd42b7205843b2375e5470633e720461e 100644 GIT binary patch delta 39614 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 UPKq?fHcB)aqq4`9H9ThcKV9pHRsaA1 delta 27121 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 diff --git a/doc/vax_doc.doc b/doc/vax_doc.doc index c3e305c91e11170009387303fd2f0b95106bcd59..28f6eaae416e6afb3c3501a18fa1add0c2d40fa9 100644 GIT binary patch delta 19882 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