Merge branch 'master' of github.com:simh/simh

This commit is contained in:
Mark Pizzolato 2013-05-31 09:41:36 -07:00
commit e2b796273a
3 changed files with 56 additions and 6 deletions

View file

@ -197,6 +197,7 @@ jmp_buf save_env;
int32 hst_p = 0; /* history pointer */
int32 hst_lnt = 0; /* history length */
InstHistory *hst = NULL; /* instruction history */
int32 apr_serial = -1; /* CPU Serial number */
/* Forward and external declarations */
@ -205,6 +206,9 @@ t_stat cpu_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw);
t_stat cpu_reset (DEVICE *dptr);
t_stat cpu_set_hist (UNIT *uptr, int32 val, char *cptr, void *desc);
t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, void *desc);
t_stat cpu_set_serial (UNIT *uptr, int32 val, char *cptr, void *desc);
t_stat cpu_show_serial (FILE *st, UNIT *uptr, int32 val, void *desc);
d10 adjsp (d10 val, a10 ea);
void ibp (a10 ea, int32 pflgs);
d10 ldb (a10 ea, int32 pflgs);
@ -400,6 +404,7 @@ MTAB cpu_mod[] = {
NULL, &show_iospace },
{ MTAB_XTD|MTAB_VDV|MTAB_NMO|MTAB_SHP, 0, "HISTORY", "HISTORY",
&cpu_set_hist, &cpu_show_hist },
{ MTAB_XTD|MTAB_VDV|MTAB_VALR, 0, "SERIAL", "SERIAL", &cpu_set_serial, &cpu_show_serial },
{ 0 }
};
@ -2104,7 +2109,14 @@ return;
t_bool aprid (a10 ea, int32 prv)
{
Write (ea, (Q_ITS)? UC_AIDITS: UC_AIDDEC, prv);
d10 value = (Q_ITS)? UC_AIDITS: UC_AIDDEC;
if( (apr_serial == -1) || (!Q_ITS && apr_serial < 4096) )
value |= (Q_ITS)? UC_SERITS: UC_SERDEC;
else
value |= apr_serial;
Write (ea, value, prv);
return FALSE;
}
@ -2419,3 +2431,34 @@ for (k = 0; k < lnt; k++) { /* print specified */
} /* end for */
return SCPE_OK;
}
/* Set serial */
t_stat cpu_set_serial (UNIT *uptr, int32 val, char *cptr, void *desc)
{
int32 lnt;
t_stat r;
if (cptr == NULL) {
apr_serial = -1;
return SCPE_OK;
}
lnt = (int32) get_uint (cptr, 10, 077777, &r);
if ((r != SCPE_OK) || (lnt <= 0) || (!Q_ITS && lnt < 4096))
return SCPE_ARG;
apr_serial = lnt & 077777;
return SCPE_OK;
}
/* Show serial */
t_stat cpu_show_serial (FILE *st, UNIT *uptr, int32 val, void *desc)
{
fprintf (st, "Serial: " );
if( (apr_serial == -1) || (!Q_ITS && apr_serial < 4096) ) {
fprintf (st, "%d (default)", (Q_ITS)? UC_SERITS: UC_SERDEC);
return SCPE_OK;
}
fprintf (st, "%d", apr_serial);
return SCPE_OK;
}

View file

@ -476,8 +476,9 @@ typedef t_int64 d10; /* PDP-10 data (36b) */
#define UC_SERDEC 4097 /* serial number */
#define UC_SERITS 1729
#define UC_AIDDEC (UC_INHCST | UC_UBABLT | UC_KIPAGE | UC_KLPAGE | \
UC_VERDEC | UC_SERDEC)
#define UC_AIDITS (UC_KIPAGE | UC_VERITS | UC_SERITS)
UC_VERDEC)
#define UC_AIDITS (UC_KIPAGE | UC_VERITS)
#define UC_HSBDEC 0376000 /* DEC initial HSB */
#define UC_HSBITS 0000500 /* ITS initial HSB */

View file

@ -25,6 +25,8 @@
lp20 line printer
29-May-13 TL Force append when an existing file is attached.
Previously over-wrote file from the top.
19-Jan-07 RMS Added UNIT_TEXT flag
04-Sep-05 RMS Fixed missing return (found by Peter Schorn)
07-Jul-05 RMS Removed extraneous externs
@ -374,17 +376,17 @@ return SCPE_OK;
else if (paper)
davfu_action;
else print_xlate;
}
}
else if (paper) {
if (xlate || delim || delim_hold)
davfu_action;
else print_input;
}
}
else {
if (xlate || delim || delim_hold)
print_xlate;
else print_input;
}
}
*/
t_stat lp20_svc (UNIT *uptr)
@ -657,6 +659,10 @@ t_stat lp20_attach (UNIT *uptr, char *cptr)
t_stat reason;
reason = attach_unit (uptr, cptr); /* attach file */
if (reason == SCPE_OK) {
sim_fseek (uptr->fileref, 0, SEEK_END);
uptr->pos = sim_ftell (uptr->fileref);
}
if (lpcsa & CSA_ONL) /* just file chg? */
return reason;
if (sim_is_active (&lp20_unit)) /* busy? no int */