KA10: Regular update to sync to development source.

Removed DEV_NET and fixed DEV_type on various devices.
   Support for 64 lines on KL10 FE by default.
   Fixed support for 32 lines on DC10.
   Support for TYPE 340 Display undocumented functions.
This commit is contained in:
Richard Cornwell 2020-04-17 18:19:54 -07:00 committed by Mark Pizzolato
parent e872682d3c
commit 3f55005d21
11 changed files with 50 additions and 18 deletions

View file

@ -112,7 +112,7 @@ DEVICE dpk_dev = {
DPK_NAME, dpk_unit, NULL, dpk_mod, DPK_NAME, dpk_unit, NULL, dpk_mod,
2, 8, 0, 1, 8, 36, 2, 8, 0, 1, 8, 36,
NULL, NULL, dpk_reset, NULL, dpk_attach, dpk_detach, NULL, NULL, dpk_reset, NULL, dpk_attach, dpk_detach,
&dpk_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, dev_debug, &dpk_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX, 0, dev_debug,
NULL, NULL, dpk_help, NULL, NULL, dpk_description NULL, NULL, dpk_help, NULL, NULL, dpk_description
}; };

View file

@ -320,7 +320,7 @@ DEVICE iii_dev = {
"III", iii_unit, NULL, iii_mod, "III", iii_unit, NULL, iii_mod,
2, 10, 31, 1, 8, 8, 2, 10, 31, 1, 8, 8,
NULL, NULL, iii_reset, NULL, NULL, iii_reset,
NULL, NULL, NULL, &iii_dib, DEV_DEBUG | DEV_DISABLE | DEV_DIS, 0, dev_debug, NULL, NULL, NULL, &iii_dib, DEV_DEBUG | DEV_DISABLE | DEV_DIS | DEV_DISPLAY, 0, dev_debug,
NULL, NULL, &iii_help, NULL, NULL, &iii_description NULL, NULL, &iii_help, NULL, NULL, &iii_description
}; };

View file

@ -94,7 +94,7 @@ DEVICE mty_dev = {
MTY_NAME, mty_unit, NULL, mty_mod, MTY_NAME, mty_unit, NULL, mty_mod,
2, 8, 0, 1, 8, 36, 2, 8, 0, 1, 8, 36,
NULL, NULL, mty_reset, NULL, mty_attach, mty_detach, NULL, NULL, mty_reset, NULL, mty_attach, mty_detach,
&mty_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, dev_debug, &mty_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX, 0, dev_debug,
NULL, NULL, mty_help, NULL, NULL, mty_description NULL, NULL, mty_help, NULL, NULL, mty_description
}; };

View file

@ -92,7 +92,7 @@ DEVICE tk10_dev = {
TK10_NAME, tk10_unit, NULL, tk10_mod, TK10_NAME, tk10_unit, NULL, tk10_mod,
1, 8, 0, 1, 8, 36, 1, 8, 0, 1, 8, 36,
NULL, NULL, tk10_reset, NULL, tk10_attach, tk10_detach, NULL, NULL, tk10_reset, NULL, tk10_attach, tk10_detach,
&tk10_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, dev_debug, &tk10_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_MUX, 0, dev_debug,
NULL, NULL, tk10_help, NULL, NULL, tk10_description NULL, NULL, tk10_help, NULL, NULL, tk10_description
}; };

View file

@ -554,7 +554,7 @@ DEVICE tty_dev = {
2, 10, 31, 1, 8, 8, 2, 10, 31, 1, 8, 8,
&tmxr_ex, &tmxr_dep, &tty_reset, &tmxr_ex, &tmxr_dep, &tty_reset,
NULL, &tty_attach, &tty_detach, NULL, &tty_attach, &tty_detach,
NULL, DEV_NET | DEV_DISABLE | DEV_DEBUG, 0, dev_debug, NULL, DEV_MUX | DEV_DISABLE | DEV_DEBUG, 0, dev_debug,
NULL, NULL, &tty_help, NULL, NULL, &tty_description NULL, NULL, &tty_help, NULL, NULL, &tty_description
}; };
#endif #endif

View file

@ -419,7 +419,7 @@ DEVICE nia_dev = {
"NI", nia_unit, nia_reg, nia_mod, "NI", nia_unit, nia_reg, nia_mod,
3, 8, 0, 1, 8, 36, 3, 8, 0, 1, 8, 36,
NULL, NULL, &nia_reset, NULL, &nia_attach, &nia_detach, NULL, NULL, &nia_reset, NULL, &nia_attach, &nia_detach,
&nia_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, nia_debug, &nia_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_ETHER, 0, nia_debug,
NULL, NULL, &nia_help, NULL, NULL, &nia_description NULL, NULL, &nia_help, NULL, NULL, &nia_description
}; };

View file

@ -147,7 +147,7 @@ DEVICE dc_dev = {
1, 10, 31, 1, 8, 8, 1, 10, 31, 1, 8, 8,
&tmxr_ex, &tmxr_dep, &dc_reset, &tmxr_ex, &tmxr_dep, &dc_reset,
NULL, &dc_attach, &dc_detach, NULL, &dc_attach, &dc_detach,
&dc_dib, DEV_NET | DEV_DISABLE | DEV_DEBUG, 0, dev_debug, &dc_dib, DEV_MUX | DEV_DISABLE | DEV_DEBUG, 0, dev_debug,
NULL, NULL, &dc_help, NULL, NULL, &dc_description NULL, NULL, &dc_help, NULL, NULL, &dc_description
}; };
@ -433,18 +433,18 @@ t_stat dc_setnl (UNIT *uptr, int32 val, CONST char *cptr, void *desc)
return r; return r;
if (newln > dc_modem) if (newln > dc_modem)
return SCPE_ARG; return SCPE_ARG;
if ((newln == 0) || (newln >= DC10_MLINES) || (newln % 8) != 0) if ((newln == 0) || (newln > DC10_MLINES) || (newln % 8) != 0)
return SCPE_ARG; return SCPE_ARG;
if (newln < dc_desc.lines) { if (newln < dc_desc.lines) {
for (i = newln, t = 0; i < dc_desc.lines; i++) for (i = newln - 1, t = 0; i < dc_desc.lines; i++)
t = t | dc_ldsc[i].conn; t = t | dc_ldsc[i].conn;
if (t && !get_yn ("This will disconnect users; proceed [N]?", FALSE)) if (t && !get_yn ("This will disconnect users; proceed [N]?", FALSE))
return SCPE_OK; return SCPE_OK;
for (i = newln; i < dc_desc.lines; i++) { for (i = newln - 1; i < dc_desc.lines; i++) {
if (dc_ldsc[i].conn) { if (dc_ldsc[i].conn) {
tmxr_linemsg (&dc_ldsc[i], "\r\nOperator disconnected line\r\n"); tmxr_linemsg (&dc_ldsc[i], "\r\nOperator disconnected line\r\n");
tmxr_send_buffered_data (&dc_ldsc[i]); tmxr_send_buffered_data (&dc_ldsc[i]);
} }
tmxr_detach_ln (&dc_ldsc[i]); /* completely reset line */ tmxr_detach_ln (&dc_ldsc[i]); /* completely reset line */
} }
} }
@ -468,7 +468,7 @@ t_stat dc_set_log (UNIT *uptr, int32 val, CONST char *cptr, void *desc)
if ((cptr == NULL) || (*cptr == 0) || (gbuf[0] == 0)) if ((cptr == NULL) || (*cptr == 0) || (gbuf[0] == 0))
return SCPE_ARG; return SCPE_ARG;
ln = (int32) get_uint (gbuf, 10, dc_desc.lines, &r); ln = (int32) get_uint (gbuf, 10, dc_desc.lines, &r);
if ((r != SCPE_OK) || (ln >= dc_desc.lines)) if ((r != SCPE_OK) || (ln > dc_desc.lines))
return SCPE_ARG; return SCPE_ARG;
return tmxr_set_log (NULL, ln, cptr, desc); return tmxr_set_log (NULL, ln, cptr, desc);
} }
@ -483,7 +483,7 @@ t_stat dc_set_nolog (UNIT *uptr, int32 val, CONST char *cptr, void *desc)
if (cptr == NULL) if (cptr == NULL)
return SCPE_ARG; return SCPE_ARG;
ln = (int32) get_uint (cptr, 10, dc_desc.lines, &r); ln = (int32) get_uint (cptr, 10, dc_desc.lines, &r);
if ((r != SCPE_OK) || (ln >= dc_desc.lines)) if ((r != SCPE_OK) || (ln > dc_desc.lines))
return SCPE_ARG; return SCPE_ARG;
return tmxr_set_nolog (NULL, ln, NULL, desc); return tmxr_set_nolog (NULL, ln, NULL, desc);
} }

View file

@ -606,7 +606,7 @@ extern void ka10_lights_clear_aux (int);
#define NUM_DEVS_DP 0 #define NUM_DEVS_DP 0
#define NUM_DEVS_LP20 1 #define NUM_DEVS_LP20 1
#define NUM_DEVS_TTY 1 #define NUM_DEVS_TTY 1
#define NUM_LINES_TTY 40 #define NUM_LINES_TTY 64
#define NUM_DEVS_NIA 1 #define NUM_DEVS_NIA 1
#else #else
#define NUM_DEVS_RC 1 #define NUM_DEVS_RC 1

View file

@ -423,6 +423,7 @@ t_stat dp_devio(uint32 dev, uint64 *data) {
/* Stop controller */ /* Stop controller */
sim_cancel(uptr); sim_cancel(uptr);
df10_finish_op(df10, 0); df10_finish_op(df10, 0);
uptr->STATUS &= ~(BUSY);
} }
/* Clear flags */ /* Clear flags */
uptr->STATUS &= ~(*data & CLRMSK); uptr->STATUS &= ~(*data & CLRMSK);

View file

@ -30,6 +30,29 @@
* for PDP-6 described in * for PDP-6 described in
* http://www.bitsavers.org/pdf/dec/graphics/H-340_Type_340_Precision_Incremental_CRT_System_Nov64.pdf * http://www.bitsavers.org/pdf/dec/graphics/H-340_Type_340_Precision_Incremental_CRT_System_Nov64.pdf
* *
* The MIT file .INFO.;340 INFO says:
* ;CONI BITS OF THE 340 ARE:
* ;2.9-2.7 MODE
* ;2.4 VECT CONT LP(????)
* ;2.3 VERTICAL EDGE HIT
* ;2.2 LIGHT PEN HIT
* ;2.1 HORIZONTAL EDGE HIT
* ;1.9 STOP
* ;1.8 DONE (CAUSES DATA INTERUPT)
* ;1.6-1.4 SPECIAL PIA
* ;1.3-1.1 DATA PIA
* ;340 CONO BITS ARE:
* ;2.3 CLEAR NO INK MODE
* ;2.2 SET NO INK MODE (IN NO INK MODE, NO INTENSIFICATION CAN \
* OCCUR)
* ;2.1 CLEAR HALF WORD MODE
* ;1.9 SET HALF WORD MODE
* ;1.8 RESUME DISPLAY (TO CONTINUE AFTER A SPECIAL INTERUPT)
* ;1.7 INTIALIZE
* ;1.6-1.4 SPECIAL PIA
* ;1.3-1.1 DATA PIA
* ITS uses the "resume display" bit, so it has been implemented here.
*
* 340C was used in the PDP-10 VB10C display system * 340C was used in the PDP-10 VB10C display system
* http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp10/periph/VB10C_Interactive_Graphics_Terminal_Jul70.pdf * http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp10/periph/VB10C_Interactive_Graphics_Terminal_Jul70.pdf
* "The basic hardware system consists of a 340/C display connected * "The basic hardware system consists of a 340/C display connected
@ -138,6 +161,7 @@ extern uint64 SW; /* switch register */
#define CONI_INT_HE 0001000 /* I- b26: HOR EDGE */ #define CONI_INT_HE 0001000 /* I- b26: HOR EDGE */
#define CONI_INT_SI 0000400 /* I- b27: STOP INT */ #define CONI_INT_SI 0000400 /* I- b27: STOP INT */
#define CONI_INT_DONE 0000200 /* I- b28: done with second half */ #define CONI_INT_DONE 0000200 /* I- b28: done with second half */
#define CONO_RESUME 0000200 /* -O b28: resume after special int */
#define CONO_INIT 0000100 /* -O b29: init display */ #define CONO_INIT 0000100 /* -O b29: init display */
#define CONX_SC 0000070 /* IO special channel */ #define CONX_SC 0000070 /* IO special channel */
#define CONX_DC 0000007 /* IO data channel */ #define CONX_DC 0000007 /* IO data channel */
@ -169,7 +193,7 @@ DEVICE dpy_dev = {
NUM_DEVS_DPY, 0, 0, 0, 0, 0, NUM_DEVS_DPY, 0, 0, 0, 0, 0,
NULL, NULL, dpy_reset, NULL, NULL, dpy_reset,
NULL, NULL, NULL, NULL, NULL, NULL,
&dpy_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, NULL, &dpy_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_DISPLAY, 0, NULL,
NULL, NULL, NULL, NULL, NULL, &dpy_description NULL, NULL, NULL, NULL, NULL, &dpy_description
}; };
@ -253,6 +277,13 @@ t_stat dpy_devio(uint32 dev, uint64 *data) {
uptr->STAT_REG |= *data & CONO_MASK; uptr->STAT_REG |= *data & CONO_MASK;
if (*data & CONO_INIT) if (*data & CONO_INIT)
dpy_update_status( uptr, ty340_reset(&dpy_dev), 1); dpy_update_status( uptr, ty340_reset(&dpy_dev), 1);
if (*data & CONO_RESUME) {
/* This bit is not documented in "H-340 Type 340 Precision
Incremental CRT System". It is in the MIT file .INFO.;
340 INFO, and ITS does depend on it. */
ty340_clear(CONI_INT_VE | CONI_INT_LP | CONI_INT_HE);
dpy_update_status( uptr, ty340_status(), 0);
}
sim_debug(DEBUG_CONO, &dpy_dev, "DPY %03o CONO %06o PC=%06o %06o\n", sim_debug(DEBUG_CONO, &dpy_dev, "DPY %03o CONO %06o PC=%06o %06o\n",
dev, (uint32)*data, PC, uptr->STAT_REG & ~STAT_VALID); dev, (uint32)*data, PC, uptr->STAT_REG & ~STAT_VALID);
if (!sim_is_active(uptr)) if (!sim_is_active(uptr))

View file

@ -563,7 +563,7 @@ DEVICE imp_dev = {
"IMP", imp_unit, imp_reg, imp_mod, "IMP", imp_unit, imp_reg, imp_mod,
3, 8, 0, 1, 8, 36, 3, 8, 0, 1, 8, 36,
NULL, NULL, &imp_reset, NULL, &imp_attach, &imp_detach, NULL, NULL, &imp_reset, NULL, &imp_attach, &imp_detach,
&imp_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG, 0, imp_debug, &imp_dib, DEV_DISABLE | DEV_DIS | DEV_DEBUG | DEV_ETHER, 0, imp_debug,
NULL, NULL, &imp_help, NULL, NULL, &imp_description NULL, NULL, &imp_help, NULL, NULL, &imp_description
}; };
#define IMP_OCHN 0000007 #define IMP_OCHN 0000007