diff --git a/I1401/i1401_sys.c b/I1401/i1401_sys.c index 3b9dc881..bab227f3 100644 --- a/I1401/i1401_sys.c +++ b/I1401/i1401_sys.c @@ -1,6 +1,6 @@ /* i1401_sys.c: IBM 1401 simulator interface - Copyright (c) 1993-2008, Robert M. Supnik + Copyright (c) 1993-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 25-Mar-12 RMS Fixed && -> & in test (Peter Schorn) 20-Sep-05 RMS Revised for new code tables 04-Jan-05 WVS Added address argument support 14-Nov-04 WVS Added data printout support diff --git a/Interdata/id_defs.h b/Interdata/id_defs.h index 77b643dd..2afd3446 100644 --- a/Interdata/id_defs.h +++ b/Interdata/id_defs.h @@ -1,6 +1,6 @@ /* id_defs.h: Interdata 16b/32b simulator definitions - Copyright (c) 2000-2010, Robert M. Supnik + Copyright (c) 2000-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,7 @@ The author gratefully acknowledges the help of Carl Friend and Al Kossow, who provided key documents about the Interdata product line. + 18-Apr-12 RMS Added clock coschedule prototype 22-May-10 RMS Added check for 64b definitions 09-Mar-06 RMS Increased register sets to architectural limit 25-Jan-04 RMS Removed local logging support @@ -483,4 +484,6 @@ t_stat set_dev (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat show_sch (FILE *st, UNIT *uptr, int32 val, void *desc); t_stat show_dev (FILE *st, UNIT *uptr, int32 val, void *desc); +int32 lfc_cosched (int32 wait); + #endif diff --git a/Interdata/id_pas.c b/Interdata/id_pas.c index 7ce00973..dfc27ccf 100644 --- a/Interdata/id_pas.c +++ b/Interdata/id_pas.c @@ -25,6 +25,7 @@ pas Programmable asynchronous line adapter(s) + 18-Apr-12 RMS Revised to use clock coscheduling 21-Mar-12 RMS Fixed TT_GET_MODE test to use TTUF_MODE_x (Michael Bloom) 19-Nov-08 RMS Revised for common TMXR show routines 18-Jun-07 RMS Added UNIT_IDLE flag @@ -319,7 +320,7 @@ int32 ln, c, out; if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ return SCPE_OK; -sim_activate (uptr, lfc_poll); /* continue poll */ +sim_activate (uptr, lfc_cosched (lfc_poll)); /* continue poll */ ln = tmxr_poll_conn (&pas_desc); /* look for connect */ if (ln >= 0) { /* got one? */ if ((pasl_unit[ln].flags & UNIT_MDM) && /* modem control */ @@ -468,7 +469,7 @@ else { pasl_dev.flags = pasl_dev.flags & ~DEV_DIS; } if (pas_unit.flags & UNIT_ATT) /* master att? */ - sim_activate_abs (&pas_unit, lfc_poll); /* cosched with clock */ + sim_activate (&pas_unit, lfc_poll); else sim_cancel (&pas_unit); /* else stop */ for (i = 0; i < PAS_LINES; i++) pas_reset_ln (i); @@ -484,7 +485,7 @@ t_stat r; r = tmxr_attach (&pas_desc, uptr, cptr); /* attach */ if (r != SCPE_OK) /* error */ return r; -sim_activate_abs (uptr, 100); /* quick poll */ +sim_activate (uptr, 100); /* quick poll */ return SCPE_OK; } diff --git a/Interdata/id_tt.c b/Interdata/id_tt.c index e56f4c7c..64bdc3f3 100644 --- a/Interdata/id_tt.c +++ b/Interdata/id_tt.c @@ -1,6 +1,6 @@ /* id_tt.c: Interdata teletype - Copyright (c) 2000-2008, Robert M. Supnik + Copyright (c) 2000-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ tt console + 18-Apr-12 RMS Revised to use clock coscheduling 18-Jun-07 RMS Added UNIT_IDLE flag to console input 18-Oct-06 RMS Sync keyboard to LFC clock 30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode @@ -183,7 +184,8 @@ t_stat tti_svc (UNIT *uptr) { int32 out, temp; -sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_cosched (lfc_poll))); + /* continue poll */ tt_sta = tt_sta & ~STA_BRK; /* clear break */ if ((temp = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return temp; @@ -239,7 +241,7 @@ t_stat tt_reset (DEVICE *dptr) { if (dptr->flags & DEV_DIS) /* dis? cancel poll */ sim_cancel (&tt_unit[TTI]); -else sim_activate_abs (&tt_unit[TTI], KBD_WAIT (tt_unit[TTI].wait, lfc_poll)); +else sim_activate (&tt_unit[TTI], KBD_WAIT (tt_unit[TTI].wait, lfc_poll)); sim_cancel (&tt_unit[TTO]); /* cancel output */ tt_rd = tt_fdpx = 1; /* read, full duplex */ tt_chp = 0; /* no char */ diff --git a/Interdata/id_ttp.c b/Interdata/id_ttp.c index e580d303..660fd469 100644 --- a/Interdata/id_ttp.c +++ b/Interdata/id_ttp.c @@ -1,6 +1,6 @@ /* id_ttp.c: Interdata PASLA console interface - Copyright (c) 2000-2008, Robert M. Supnik + Copyright (c) 2000-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ ttp console (on PAS) + 18-Apr-12 RMS Revised to use clock coscheduling 18-Jun-07 RMS Added UNIT_IDLE flag to console input 18-Oct-06 RMS Sync keyboard to LFC clock 22-Nov-05 RMS Revised for new terminal processing routines @@ -179,7 +180,8 @@ t_stat ttpi_svc (UNIT *uptr) { int32 c, out; -sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_cosched (lfc_poll))); + /* continue poll */ ttp_sta = ttp_sta & ~STA_FR; /* clear break */ if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return c; @@ -237,7 +239,7 @@ t_stat ttp_reset (DEVICE *dptr) { if (dptr->flags & DEV_DIS) sim_cancel (&ttp_unit[TTI]); -else sim_activate_abs (&ttp_unit[TTI], KBD_WAIT (ttp_unit[TTI].wait, lfc_poll)); +else sim_activate (&ttp_unit[TTI], KBD_WAIT (ttp_unit[TTI].wait, lfc_poll)); sim_cancel (&ttp_unit[TTO]); CLR_INT (v_TTP); /* clear int */ CLR_ENB (v_TTP); diff --git a/Interdata/id_uvc.c b/Interdata/id_uvc.c index d94b2a65..7ccc070a 100644 --- a/Interdata/id_uvc.c +++ b/Interdata/id_uvc.c @@ -1,6 +1,6 @@ /* id_uvc.c: Interdata universal clock - Copyright (c) 2001-2008, Robert M. Supnik + Copyright (c) 2001-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,7 @@ pic precision incremental clock lfc line frequency clock + 18-Apr-12 RMS Added lfc_cosched routine 18-Jun-07 RMS Added UNIT_IDLE flag 18-Oct-06 RMS Changed LFC to be free running, export tmr_poll 23-Jul-05 RMS Fixed {} error in OC @@ -351,12 +352,22 @@ if (lfc_arm) { /* armed? */ return SCPE_OK; } +/* Clock coscheduling routine */ + +int32 lfc_cosched (int32 wait) +{ +int32 t; + +t = sim_is_active (&lfc_unit); +return (t? t - 1: wait); +} + /* Reset routine */ t_stat lfc_reset (DEVICE *dptr) { lfc_poll = sim_rtcn_init (lfc_unit.wait, TMR_LFC); -sim_activate_abs (&lfc_unit, lfc_poll); /* init clock */ +sim_activate (&lfc_unit, lfc_poll); /* init clock */ CLR_INT (v_LFC); /* clear int */ CLR_ENB (v_LFC); /* disable int */ lfc_arm = 0; /* disarm int */ diff --git a/NOVA/eclipse_cpu.c b/NOVA/eclipse_cpu.c index 50f0bfcf..2e9efc42 100644 --- a/NOVA/eclipse_cpu.c +++ b/NOVA/eclipse_cpu.c @@ -2,7 +2,7 @@ Modified from the original NOVA simulator by Robert Supnik. - Copyright (c) 1998-2006, Charles E Owen + Copyright (c) 1998-2012, Charles E Owen Portions Copyright (c) 1993-2002, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a @@ -28,8 +28,9 @@ cpu Eclipse central processor - 07-Jun-06 RMS Fixed bug in DIVS (found by Mark Hittinger) - 22-Sep-05 RMS Fixed declarations (from Sterling Garwood) + 25-Mar-12 RMS Fixed declarations (Mark Pizzolato) + 07-Jun-06 RMS Fixed bug in DIVS (Mark Hittinger) + 22-Sep-05 RMS Fixed declarations (Sterling Garwood) 25-Aug-05 RMS Fixed DIVS overflow cases 29-Nov-03 CEO Corrected POPJ and Bit operations bugs 26-Nov-03 CEO Added FPU and PIT devices diff --git a/NOVA/nova_defs.h b/NOVA/nova_defs.h index 1dabed0e..5f5f6ffa 100644 --- a/NOVA/nova_defs.h +++ b/NOVA/nova_defs.h @@ -1,6 +1,6 @@ /* nova_defs.h: NOVA/Eclipse simulator definitions - Copyright (c) 1993-2010, Robert M. Supnik + Copyright (c) 1993-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 25-Mar-12 RMS Added missing parameters to prototypes (Mark Pizzolato) 22-May-10 RMS Added check for 64b definitions 04-Jul-07 BKR BUSY/DONE/INTR "convenience" macros added, INT_TRAP added for Nova 3, 4 trap instruction handling, diff --git a/NOVA/nova_sys.c b/NOVA/nova_sys.c index 6411e7d5..36a4cf22 100644 --- a/NOVA/nova_sys.c +++ b/NOVA/nova_sys.c @@ -1,6 +1,6 @@ /* nova_sys.c: NOVA simulator interface - Copyright (c) 1993-2008, Robert M. Supnik + Copyright (c) 1993-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 25-Mar-12 RMS Fixed declaration (Mark Pizzolato) 04-Jul-07 BKR DEC's IOF/ION changed to DG's INTDS/INTEN mnemonic, Fixed QTY/ADCV device name, RDSW changed to DDG's READS mnemonic, diff --git a/PDP10/pdp10_cpu.c b/PDP10/pdp10_cpu.c index b73e88c0..d5c9fc10 100644 --- a/PDP10/pdp10_cpu.c +++ b/PDP10/pdp10_cpu.c @@ -1,6 +1,6 @@ /* pdp10_cpu.c: PDP-10 CPU simulator - Copyright (c) 1993-2008, Robert M. Supnik + Copyright (c) 1993-2012, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,9 +25,10 @@ cpu KS10 central processor + 25-Mar-12 RMS Added missing parameters to prototypes (Mark Pizzolato) 17-Jul-07 RMS Fixed non-portable usage in SHOW HISTORY 28-Apr-07 RMS Removed clock initialization - 22-Sep-05 RMS Fixed declarations (from Sterling Garwood) + 22-Sep-05 RMS Fixed declarations (Sterling Garwood) Fixed warning in MOVNI 16-Aug-05 RMS Fixed C++ declaration and cast problems 10-Nov-04 RMS Added instruction history diff --git a/PDP10/pdp10_fe.c b/PDP10/pdp10_fe.c index 43df088c..97cbb20d 100644 --- a/PDP10/pdp10_fe.c +++ b/PDP10/pdp10_fe.c @@ -1,6 +1,6 @@ /* pdp10_fe.c: PDP-10 front end (console terminal) simulator - Copyright (c) 1993-2007, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ fe KS10 console front end + 18-Apr-12 RMS Added clock coscheduling 18-Jun-07 RMS Added UNIT_IDLE flag to console input 17-Oct-06 RMS Synced keyboard to clock for idling 28-May-04 RMS Removed SET FE CTRL-C @@ -142,7 +143,8 @@ t_stat fei_svc (UNIT *uptr) { int32 temp; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmxr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmxr_poll))); + /* continue poll */ if ((temp = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return temp; if (temp & SCPE_BREAK) /* ignore break */ @@ -161,7 +163,7 @@ t_stat fe_reset (DEVICE *dptr) fei_unit.buf = feo_unit.buf = 0; M[FE_CTYIN] = M[FE_CTYOUT] = 0; apr_flg = apr_flg & ~(APRF_ITC | APRF_CON); -sim_activate_abs (&fei_unit, KBD_WAIT (fei_unit.wait, tmxr_poll)); +sim_activate (&fei_unit, KBD_WAIT (fei_unit.wait, tmxr_poll)); return SCPE_OK; } diff --git a/PDP10/pdp10_tim.c b/PDP10/pdp10_tim.c index 726e06f4..c15cd503 100644 --- a/PDP10/pdp10_tim.c +++ b/PDP10/pdp10_tim.c @@ -1,6 +1,6 @@ /* pdp10_tim.c: PDP-10 tim subsystem simulator - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ tim timer subsystem + 18-Apr-12 RMS Removed absolute scheduling on reset 18-Jun-07 RMS Added UNIT_IDLE flag 03-Nov-06 RMS Rewritten to support idling 29-Oct-06 RMS Added clock coscheduling function @@ -239,7 +240,7 @@ tim_period = 0; /* clear timer */ tim_ttg = 0; apr_flg = apr_flg & ~APRF_TIM; /* clear interrupt */ tmr_poll = sim_rtc_init (tim_unit.wait); /* init timer */ -sim_activate_abs (&tim_unit, tmr_poll); /* activate unit */ +sim_activate (&tim_unit, tmr_poll); /* activate unit */ tmxr_poll = tmr_poll * tim_mult; /* set mux poll */ return SCPE_OK; } diff --git a/PDP11/pdp11_cr.c b/PDP11/pdp11_cr.c index d8ee8258..521f3edd 100644 --- a/PDP11/pdp11_cr.c +++ b/PDP11/pdp11_cr.c @@ -589,7 +589,7 @@ static t_bool readCardASCII ( FILE *fp, char *ccard, char *acard ) { - int c, col; + int c = 0, col; assert (colStart < colEnd); assert (colStart >= 1); diff --git a/PDP11/pdp11_dc.c b/PDP11/pdp11_dc.c index b1def4a7..1c653fe8 100644 --- a/PDP11/pdp11_dc.c +++ b/PDP11/pdp11_dc.c @@ -1,6 +1,6 @@ /* pdp11_dc.c: PDP-11 DC11 multiple terminal interface simulator - Copyright (c) 1993-2011, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ dci,dco DC11 terminal input/output + 18-Apr-2012 RMS Modified to use clock coscheduling 17-Aug-2011 RMS Added AUTOCONFIGURE modifier 19-Nov-2008 RMS Revised for common TMXR show routines Revised to autoconfigure vectors @@ -367,7 +368,7 @@ int32 ln, c, temp; if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ return SCPE_OK; -sim_activate (uptr, tmxr_poll); /* continue poll */ +sim_activate (uptr, clk_cosched (tmxr_poll)); /* continue poll */ ln = tmxr_poll_conn (&dcx_desc); /* look for connect */ if (ln >= 0) { /* got one? */ dcx_ldsc[ln].rcve = 1; /* set rcv enb */ diff --git a/PDP11/pdp11_dl.c b/PDP11/pdp11_dl.c index aebd38f4..2caf6832 100644 --- a/PDP11/pdp11_dl.c +++ b/PDP11/pdp11_dl.c @@ -1,6 +1,6 @@ /* pdp11_dl.c: PDP-11 multiple terminal interface simulator - Copyright (c) 1993-2011, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ dli,dlo DL11 terminal input/output + 18-Apr-2012 RMS Modified to use clock coscheduling 17-Aug-2011 RMS Added AUTOCONFIGURE modifier 19-Nov-2008 RMS Revised for common TMXR show routines Revised to autoconfigure vectors @@ -330,7 +331,7 @@ int32 ln, c, temp; if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ return SCPE_OK; -sim_activate (uptr, tmxr_poll); /* continue poll */ +sim_activate (uptr, clk_cosched (tmxr_poll)); /* continue poll */ ln = tmxr_poll_conn (&dlx_desc); /* look for connect */ if (ln >= 0) { /* got one? rcv enb */ dlx_ldsc[ln].rcve = 1; diff --git a/PDP11/pdp11_dz.c b/PDP11/pdp11_dz.c index bb80d7fa..5e96a6de 100644 --- a/PDP11/pdp11_dz.c +++ b/PDP11/pdp11_dz.c @@ -157,7 +157,7 @@ uint32 dz_rxi = 0; /* rcv interrupts */ uint32 dz_txi = 0; /* xmt interrupts */ int32 dz_mctl = 0; /* modem ctrl enabled */ int32 dz_auto = 0; /* autodiscon enabled */ -TMLN dz_ldsc[DZ_MUXES * DZ_LINES] = { 0 }; /* line descriptors */ +TMLN dz_ldsc[DZ_MUXES * DZ_LINES] = { {0} }; /* line descriptors */ TMXR dz_desc = { DZ_MUXES * DZ_LINES, 0, 0, dz_ldsc }; /* mux descriptor */ /* debugging bitmaps */ @@ -435,7 +435,7 @@ if (t) { /* any enabled? */ dz_update_rcvi (); /* upd rcv intr */ tmxr_poll_tx (&dz_desc); /* poll output */ dz_update_xmti (); /* upd xmt intr */ - sim_activate (uptr, tmxr_poll); /* reactivate */ + sim_activate (uptr, clk_cosched (tmxr_poll)); /* reactivate */ } return SCPE_OK; } diff --git a/PDP11/pdp11_io_lib.c b/PDP11/pdp11_io_lib.c index 7ca23fb9..167d5d10 100644 --- a/PDP11/pdp11_io_lib.c +++ b/PDP11/pdp11_io_lib.c @@ -219,7 +219,7 @@ return show_vec (st, uptr, ((mp->lines * 2) / arg), desc); void init_ubus_tab (void) { -int32 i, j; +size_t i, j; for (i = 0; i < IPL_HLVL; i++) { /* clear intr tab */ for (j = 0; j < 32; j++) { diff --git a/PDP11/pdp11_rq.c b/PDP11/pdp11_rq.c index aa6120a1..d1201983 100644 --- a/PDP11/pdp11_rq.c +++ b/PDP11/pdp11_rq.c @@ -2110,6 +2110,7 @@ return rq_putpkt (cp, pkt, TRUE); t_bool rq_deqf (MSC *cp, int32 *pkt) { +*pkt = 0; if (cp->freq == 0) /* no free pkts?? */ return rq_fatal (cp, PE_NSR); cp->pbsy = cp->pbsy + 1; /* cnt busy pkts */ @@ -2160,6 +2161,7 @@ t_bool rq_getpkt (MSC *cp, int32 *pkt) { uint32 addr, desc; +*pkt = 0; if (!rq_getdesc (cp, &cp->cq, &desc)) /* get cmd desc */ return ERR; if ((desc & UQ_DESC_OWN) == 0) { /* none */ @@ -2222,6 +2224,7 @@ t_bool rq_getdesc (MSC *cp, struct uq_ring *ring, uint32 *desc) uint32 addr = ring->ba + ring->idx; uint16 d[2]; +*desc = 0; if (Map_ReadW (addr, 4, d)) /* fetch desc */ return rq_fatal (cp, PE_QRE); /* err? dead */ *desc = ((uint32) d[0]) | (((uint32) d[1]) << 16); diff --git a/PDP11/pdp11_stddev.c b/PDP11/pdp11_stddev.c index d68199b3..c20a0168 100644 --- a/PDP11/pdp11_stddev.c +++ b/PDP11/pdp11_stddev.c @@ -1,6 +1,6 @@ /* pdp11_stddev.c: PDP-11 standard I/O devices simulator - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,7 @@ tti,tto DL11 terminal input/output clk KW11L (and other) line frequency clock + 18-Apr-12 RMS Modified to use clock coscheduling 20-May-08 RMS Standardized clock delay at 1mips 18-Jun-07 RMS Added UNIT_IDLE flag to console input, clock 29-Oct-06 RMS Synced keyboard and clock @@ -287,7 +288,8 @@ t_stat tti_svc (UNIT *uptr) { int32 c; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmr_poll))); + /* continue poll */ if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return c; if (c & SCPE_BREAK) /* break? */ @@ -307,7 +309,7 @@ t_stat tti_reset (DEVICE *dptr) tti_unit.buf = 0; tti_csr = 0; CLR_INT (TTI); -sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); +sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } @@ -475,7 +477,7 @@ clk_tps = clk_default; /* set default tps */ clk_csr = CSR_DONE; /* set done */ CLR_INT (CLK); sim_rtcn_init (clk_unit.wait, TMR_CLK); /* init line clock */ -sim_activate_abs (&clk_unit, clk_unit.wait); /* activate unit */ +sim_activate (&clk_unit, clk_unit.wait); /* activate unit */ tmr_poll = clk_unit.wait; /* set timer poll */ tmxr_poll = clk_unit.wait; /* set mux poll */ return SCPE_OK; diff --git a/PDP11/pdp11_sys.c b/PDP11/pdp11_sys.c index 98ca200b..16ca83b4 100644 --- a/PDP11/pdp11_sys.c +++ b/PDP11/pdp11_sys.c @@ -27,7 +27,7 @@ 15-May-08 RMS Added KE11-A, DC11 support Renamed DL11 04-Feb-08 RMS Modified to allow -A, -B use with 8b devices - 25-Jan-08 RMS Added RC11, KG11A support (John Dundas) + 25-Jan-08 RMS Added RC11, KG11A support from John Dundas 10-Sep-07 RMS Cleaned up binary loader 20-Dec-06 RMS Added TA11 support 12-Nov-06 RMS Fixed operand order in EIS instructions (W.F.J. Mueller) diff --git a/PDP11/pdp11_ts.c b/PDP11/pdp11_ts.c index ccad942a..11ab6f11 100644 --- a/PDP11/pdp11_ts.c +++ b/PDP11/pdp11_ts.c @@ -25,6 +25,7 @@ ts TS11/TSV05 magtape + 19-Mar-12 RMS Fixed declaration of cpu_opt (Mark Pizzolato) 22-May-10 RMS Fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato) 16-Feb-06 RMS Added tape capacity checking diff --git a/PDP11/pdp11_tu.c b/PDP11/pdp11_tu.c index f924ebac..9175b996 100644 --- a/PDP11/pdp11_tu.c +++ b/PDP11/pdp11_tu.c @@ -27,7 +27,7 @@ 18-Apr-11 MP Fixed t_addr printouts for 64b big-endian systems 17-May-07 RMS CS1 DVA resides in device, not MBA - 29-Apr-07 RMS Fixed bug in setting FCE on TMK (Naoki Hamada) + 29-Apr-07 RMS Fixed bug in setting FCE on TMK Naoki Hamada) 16-Feb-06 RMS Added tape capacity checking 12-Nov-05 RMS Changed default formatter to TM03 (for VMS) 31-Oct-05 RMS Fixed address width for large files diff --git a/PDP11/pdp11_xq.c b/PDP11/pdp11_xq.c index 842babce..45884790 100644 --- a/PDP11/pdp11_xq.c +++ b/PDP11/pdp11_xq.c @@ -606,7 +606,7 @@ void xq_make_checksum(CTLR* xq) /* checksum calculation routine detailed in vaxboot.zip/xqbtdrivr.mar */ uint32 checksum = 0; const uint32 wmask = 0xFFFF; - int i; + size_t i; for (i = 0; i < sizeof(ETH_MAC); i += 2) { checksum <<= 1; @@ -685,7 +685,7 @@ t_stat xq_show_filters (FILE* st, UNIT* uptr, int32 val, void* desc) { CTLR* xq = xq_unit2ctlr(uptr); char buffer[20]; - int i; + size_t i; if (xq->var->mode == XQ_T_DELQA_PLUS) { eth_mac_fmt(&xq->var->init.phys, buffer); @@ -2137,12 +2137,12 @@ void xq_start_receiver(CTLR* xq) /* start the read service timer or enable asynch reading as appropriate */ if (xq->var->must_poll) - sim_activate(xq->unit, (sim_idle_enab ? tmxr_poll : (tmr_poll*clk_tps)/xq->var->poll)); + sim_activate(xq->unit, (sim_idle_enab ? clk_cosched(tmxr_poll) : (tmr_poll*clk_tps)/xq->var->poll)); else if ((xq->var->poll == 0) || (xq->var->mode == XQ_T_DELQA_PLUS)) eth_set_async(xq->var->etherface, xq->var->coalesce_latency_ticks); else - sim_activate(xq->unit, (sim_idle_enab ? tmxr_poll : (tmr_poll*clk_tps)/xq->var->poll)); + sim_activate(xq->unit, (sim_idle_enab ? clk_cosched(tmxr_poll) : (tmr_poll*clk_tps)/xq->var->poll)); } void xq_stop_receiver(CTLR* xq) @@ -2517,7 +2517,7 @@ t_stat xq_svc(UNIT* uptr) /* resubmit service timer */ if ((xq->var->must_poll) || (xq->var->poll && (xq->var->mode != XQ_T_DELQA_PLUS))) - sim_activate(uptr, (sim_idle_enab ? tmxr_poll : (tmr_poll*clk_tps)/xq->var->poll)); + sim_activate(uptr, (sim_idle_enab ? clk_cosched(tmxr_poll) : (tmr_poll*clk_tps)/xq->var->poll)); return SCPE_OK; } @@ -2803,7 +2803,7 @@ void xq_debug_setup(CTLR* xq) void xq_debug_turbo_setup(CTLR* xq) { - int i; + size_t i; char buffer[64] = ""; if (!(sim_deb && (xq->dev->dctrl & DBG_SET))) diff --git a/PDP11/pdp11_xu.c b/PDP11/pdp11_xu.c index 83920b7d..bf43cd84 100644 --- a/PDP11/pdp11_xu.c +++ b/PDP11/pdp11_xu.c @@ -105,6 +105,7 @@ extern FILE *sim_log; t_stat xu_rd(int32* data, int32 PA, int32 access); t_stat xu_wr(int32 data, int32 PA, int32 access); t_stat xu_svc(UNIT * uptr); +t_stat xu_tmrsvc(UNIT * uptr); t_stat xu_reset (DEVICE * dptr); t_stat xu_attach (UNIT * uptr, char * cptr); t_stat xu_detach (UNIT * uptr); @@ -132,7 +133,8 @@ DIB xua_dib = { IOBA_XU, IOLN_XU, &xu_rd, &xu_wr, 1, IVCL (XU), VEC_XU, {&xu_int} }; UNIT xua_unit[] = { - { UDATA (&xu_svc, UNIT_IDLE|UNIT_ATTABLE|UNIT_DISABLE, 0) } /* receive timer */ + { UDATA (&xu_svc, UNIT_IDLE|UNIT_ATTABLE|UNIT_DISABLE, 0) }, /* receive timer */ + { UDATA (&xu_tmrsvc, UNIT_IDLE|UNIT_DIS, 0) } }; struct xu_device xua = { @@ -185,7 +187,7 @@ DEBTAB xu_debug[] = { DEVICE xu_dev = { "XU", xua_unit, xua_reg, xu_mod, - 1, XU_RDX, 8, 1, XU_RDX, 8, + 2, XU_RDX, 8, 1, XU_RDX, 8, &xu_ex, &xu_dep, &xu_reset, NULL, &xu_attach, &xu_detach, &xua_dib, DEV_FLTA | DEV_DISABLE | DEV_DIS | DEV_UBUS | DEV_DEBUG, @@ -554,8 +556,6 @@ t_stat xu_svc(UNIT* uptr) { int queue_size; CTLR* xu = xu_unit2ctlr(uptr); - const ETH_MAC mop_multicast = {0xAB, 0x00, 0x00, 0x02, 0x00, 0x00}; - const int one_second = clk_tps * tmr_poll; /* First pump any queued packets into the system */ if ((xu->var->ReadQ.count > 0) && ((xu->var->pcsr1 & PCSR1_STATE) == STATE_RUNNING)) @@ -574,30 +574,39 @@ t_stat xu_svc(UNIT* uptr) if ((xu->var->ReadQ.count > 0) && ((xu->var->pcsr1 & PCSR1_STATE) == STATE_RUNNING)) xu_process_receive(xu); - /* send identity packet when timer expires */ - if (--xu->var->idtmr <= 0) { - if ((xu->var->mode & MODE_DMNT) == 0) /* if maint msg is not disabled */ - xu_system_id(xu, mop_multicast, 0); /* then send ID packet */ - xu->var->idtmr = XU_ID_TIMER_VAL * one_second; /* reset timer */ - } - - /* has one second timer expired? if so, update stats and reset timer */ - if (++xu->var->sectmr >= XU_SERVICE_INTERVAL) { - upd_stat16 (&xu->var->stats.secs, 1); - xu->var->sectmr = 0; - } - /* resubmit service timer if controller not halted */ switch (xu->var->pcsr1 & PCSR1_STATE) { case STATE_READY: case STATE_RUNNING: - sim_activate(&xu->unit[0], tmxr_poll); + sim_activate(&xu->unit[0], clk_cosched(tmxr_poll)); break; }; return SCPE_OK; } +t_stat xu_tmrsvc(UNIT* uptr) +{ + CTLR* xu = xu_unit2ctlr(uptr); + const ETH_MAC mop_multicast = {0xAB, 0x00, 0x00, 0x02, 0x00, 0x00}; + const int one_second = clk_tps * tmr_poll; + + /* send identity packet when timer expires */ + if (--xu->var->idtmr <= 0) { + if ((xu->var->mode & MODE_DMNT) == 0) /* if maint msg is not disabled */ + xu_system_id(xu, mop_multicast, 0); /* then send ID packet */ + xu->var->idtmr = XU_ID_TIMER_VAL; /* reset timer */ + } + + /* update stats */ + upd_stat16 (&xu->var->stats.secs, 1); + + /* resubmit service timer */ + sim_activate(uptr, one_second); + + return SCPE_OK; +} + void xu_write_callback (CTLR* xu, int status) { xu->var->write_buffer.status = status; @@ -673,6 +682,10 @@ t_stat xu_sw_reset (CTLR* xu) /* activate device if not disabled */ if ((xu->dev->flags & DEV_DIS) == 0) { sim_activate_abs(&xu->unit[0], clk_cosched (tmxr_poll)); + + /* start service timer */ + if (xu->var->etherface) + sim_activate_abs(&xu->unit[1], tmr_poll * clk_tps); } /* clear load_server address */ diff --git a/PDP18B/pdp18b_defs.h b/PDP18B/pdp18b_defs.h index eef82cf6..9a997886 100644 --- a/PDP18B/pdp18b_defs.h +++ b/PDP18B/pdp18b_defs.h @@ -1,6 +1,6 @@ /* pdp18b_defs.h: 18b PDP simulator definitions - Copyright (c) 1993-2010, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 18-Apr-12 RMS Added clk_cosched prototype 22-May-10 RMS Added check for 64b definitions 30-Oct-06 RMS Added infinite loop stop 14-Jan-04 RMS Revised IO device call interface @@ -495,4 +496,6 @@ typedef struct { t_stat set_devno (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat show_devno (FILE *st, UNIT *uptr, int32 val, void *desc); +int32 clk_cosched (int32 wait); + #endif diff --git a/PDP18B/pdp18b_stddev.c b/PDP18B/pdp18b_stddev.c index c2e5c827..966b6dd1 100644 --- a/PDP18B/pdp18b_stddev.c +++ b/PDP18B/pdp18b_stddev.c @@ -1,6 +1,6 @@ /* pdp18b_stddev.c: 18b PDP's standard devices - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -29,6 +29,8 @@ tto teleprinter clk clock + 18-Apr-12 RMS Added clk_cosched routine + Revised clk and tti scheduling 18-Jun-07 RMS Added UNIT_IDLE to console input, clock 18-Oct-06 RMS Added PDP-15 programmable duplex control Fixed handling of non-printable characters in KSR mode @@ -477,6 +479,16 @@ int32 clk_iors (void) return (TST_INT (CLK)? IOS_CLK: 0); } +/* Clock coscheduling routine */ + +int32 clk_cosched (int32 wait) +{ +int32 t; + +t = sim_is_active (&clk_unit); +return (t? t - 1: wait); +} + /* Reset routine */ t_stat clk_reset (DEVICE *dptr) @@ -1002,7 +1014,8 @@ t_stat tti_svc (UNIT *uptr) #if defined (KSR28) /* Baudot... */ int32 in, c, out; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmxr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmxr_poll))); + /* continue poll */ if (tti_2nd) { /* char waiting? */ uptr->buf = tti_2nd; /* return char */ tti_2nd = 0; /* not waiting */ @@ -1037,7 +1050,8 @@ else { #else /* ASCII... */ int32 c, out; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmxr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmxr_poll))); + /* continue poll */ if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return c; out = c & 0177; /* mask echo to 7b */ @@ -1068,12 +1082,14 @@ return (TST_INT (TTI)? IOS_TTI: 0); t_stat tti_reset (DEVICE *dptr) { -tti_unit.buf = 0; /* clear buffer */ -tti_2nd = 0; -tty_shift = 0; /* clear state */ -tti_fdpx = 0; /* clear dpx mode */ CLR_INT (TTI); /* clear flag */ -sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmxr_poll)); +if (!sim_is_running) { /* RESET (not CAF)? */ + tti_unit.buf = 0; /* clear buffer */ + tti_2nd = 0; + tty_shift = 0; /* clear state */ + tti_fdpx = 0; /* clear dpx mode */ + } +sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmxr_poll)); return SCPE_OK; } diff --git a/PDP18B/pdp18b_tt1.c b/PDP18B/pdp18b_tt1.c index 300830d5..fdc5ac22 100644 --- a/PDP18B/pdp18b_tt1.c +++ b/PDP18B/pdp18b_tt1.c @@ -1,6 +1,6 @@ /* pdp18b_ttx.c: PDP-9/15 additional terminals simulator - Copyright (c) 1993-2008, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ ttix,ttox LT15/LT19 terminal input/output + 18-Apr-12 RMS Revised to use clock coscheduling 19-Nov-08 RMS Revised for common TMXR show routines 18-Jun-07 RMS Added UNIT_IDLE flag 30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode @@ -214,7 +215,7 @@ int32 ln, c, temp; if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ return SCPE_OK; -sim_activate (uptr, tmxr_poll); /* continue poll */ +sim_activate (uptr, clk_cosched (tmxr_poll)); /* continue poll */ ln = tmxr_poll_conn (&ttx_desc); /* look for connect */ if (ln >= 0) /* got one? rcv enab */ ttx_ldsc[ln].rcve = 1; diff --git a/PDP8/pdp8_clk.c b/PDP8/pdp8_clk.c index f19d982d..968ac229 100644 --- a/PDP8/pdp8_clk.c +++ b/PDP8/pdp8_clk.c @@ -1,6 +1,6 @@ /* pdp8_clk.c: PDP-8 real-time clock simulator - Copyright (c) 1993-2011, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ clk real time clock + 18-Apr-12 RMS Added clock coscheduling 18-Jun-07 RMS Added UNIT_IDLE flag 01-Mar-03 RMS Aded SET/SHOW CLK FREQ support 04-Oct-02 RMS Added DIB, device number support @@ -43,6 +44,8 @@ extern int32 int_req, int_enable, dev_done, stop_inst; int32 clk_tps = 60; /* ticks/second */ int32 tmxr_poll = 16000; /* term mux poll */ +extern int32 sim_is_running; + int32 clk (int32 IR, int32 AC); t_stat clk_svc (UNIT *uptr); t_stat clk_reset (DEVICE *dptr); @@ -150,6 +153,16 @@ tmxr_poll = t; /* set mux poll */ return SCPE_OK; } +/* Clock coscheduling routine */ + +int32 clk_cosched (int32 wait) +{ +int32 t; + +t = sim_is_active (&clk_unit); +return (t? t - 1: wait); +} + /* Reset routine */ t_stat clk_reset (DEVICE *dptr) @@ -159,9 +172,11 @@ int32 t; dev_done = dev_done & ~INT_CLK; /* clear done, int */ int_req = int_req & ~INT_CLK; int_enable = int_enable & ~INT_CLK; /* clear enable */ -t = sim_rtcn_init (clk_unit.wait, TMR_CLK); -sim_activate_abs (&clk_unit, t); /* activate unit */ -tmxr_poll = t; +if (!sim_is_running) { /* RESET (not CAF)? */ + t = sim_rtcn_init (clk_unit.wait, TMR_CLK); + sim_activate (&clk_unit, t); /* activate unit */ + tmxr_poll = t; + } return SCPE_OK; } diff --git a/PDP8/pdp8_defs.h b/PDP8/pdp8_defs.h index 1cebab76..5d2ee547 100644 --- a/PDP8/pdp8_defs.h +++ b/PDP8/pdp8_defs.h @@ -1,6 +1,6 @@ /* pdp8_defs.h: PDP-8 simulator definitions - Copyright (c) 1993-2010, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,8 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 18-Apr-12 RMS Removed separate timer for additional terminals; + added clock_cosched prototype 22-May-10 RMS Added check for 64b definitions 21-Aug-07 RMS Added FPP8 support 13-Dec-06 RMS Added TA8E support @@ -78,7 +80,6 @@ /* Timers */ #define TMR_CLK 0 /* timer 0 = clock */ -#define TMR_TTX 1 /* timer 1 = TTx */ /* Device information block */ @@ -209,4 +210,6 @@ typedef struct { t_stat set_dev (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat show_dev (FILE *st, UNIT *uptr, int32 val, void *desc); +int32 clk_cosched (int32 wait); + #endif diff --git a/PDP8/pdp8_tt.c b/PDP8/pdp8_tt.c index 8ae9b168..9f39b5d1 100644 --- a/PDP8/pdp8_tt.c +++ b/PDP8/pdp8_tt.c @@ -1,6 +1,6 @@ /* pdp8_tt.c: PDP-8 console terminal simulator - Copyright (c) 1993-2011, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ tti,tto KL8E terminal input/output + 18-Apr-12 RMS Revised to use clock coscheduling 18-Jun-07 RMS Added UNIT_IDLE flag to console input 18-Oct-06 RMS Synced keyboard to clock 30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode @@ -44,7 +45,7 @@ #include extern int32 int_req, int_enable, dev_done, stop_inst; -extern int32 tmxr_poll; +extern int32 tmxr_poll, sim_is_running; int32 tti (int32 IR, int32 AC); int32 tto (int32 IR, int32 AC); @@ -175,7 +176,8 @@ t_stat tti_svc (UNIT *uptr) { int32 c; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmxr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmxr_poll))); + /* continue poll */ if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return c; if (c & SCPE_BREAK) /* break? */ @@ -195,7 +197,8 @@ tti_unit.buf = 0; dev_done = dev_done & ~INT_TTI; /* clear done, int */ int_req = int_req & ~INT_TTI; int_enable = int_enable | INT_TTI; /* set enable */ -sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmxr_poll)); +if (!sim_is_running) /* RESET (not CAF)? */ + sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmxr_poll)); return SCPE_OK; } diff --git a/PDP8/pdp8_ttx.c b/PDP8/pdp8_ttx.c index 8c0ca6ed..0956178c 100644 --- a/PDP8/pdp8_ttx.c +++ b/PDP8/pdp8_ttx.c @@ -1,6 +1,6 @@ /* pdp8_ttx.c: PDP-8 additional terminals simulator - Copyright (c) 1993-2011, Robert M Supnik + Copyright (c) 1993-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ ttix,ttox PT08/KL8JA terminal input/output + 18-Apr-12 RMS Revised to use clock coscheduling 19-Nov-08 RMS Revised for common TMXR show routines 07-Jun-06 RMS Added UNIT_IDLE flag 06-Jul-06 RMS Fixed bug in DETACH routine @@ -60,6 +61,7 @@ #define TTX_GETLN(x) (((x) >> 4) & TTX_MASK) extern int32 int_req, int_enable, dev_done, stop_inst; +extern int32 tmxr_poll, sim_is_running; uint8 ttix_buf[TTX_LINES] = { 0 }; /* input buffers */ uint8 ttox_buf[TTX_LINES] = { 0 }; /* output buffers */ @@ -224,8 +226,7 @@ int32 ln, c, temp; if ((uptr->flags & UNIT_ATT) == 0) /* attached? */ return SCPE_OK; -temp = sim_rtcn_calb (ttx_tps, TMR_TTX); /* calibrate */ -sim_activate (uptr, temp); /* continue poll */ +sim_activate (uptr, clk_cosched (tmxr_poll)); /* continue poll */ ln = tmxr_poll_conn (&ttx_desc); /* look for connect */ if (ln >= 0) /* got one? rcv enb*/ ttx_ldsc[ln].rcve = 1; @@ -249,15 +250,11 @@ return SCPE_OK; t_stat ttix_reset (DEVICE *dptr) { -int32 t, ln, itto; +int32 ln, itto; ttx_enbdis (dptr->flags & DEV_DIS); /* sync enables */ -if (ttix_unit.flags & UNIT_ATT) { /* if attached, */ - if (!sim_is_active (&ttix_unit)) { - t = sim_rtcn_init (ttix_unit.wait, TMR_TTX); - sim_activate (&ttix_unit, t); /* activate */ - } - } +if (ttix_unit.flags & UNIT_ATT) /* if attached, */ + sim_activate (&ttix_unit, tmxr_poll); /* activate */ else sim_cancel (&ttix_unit); /* else stop */ for (ln = 0; ln < TTX_LINES; ln++) { /* for all lines */ ttix_buf[ln] = 0; /* clear buf, */ @@ -358,14 +355,12 @@ return SCPE_OK; t_stat ttx_attach (UNIT *uptr, char *cptr) { -int32 t; t_stat r; r = tmxr_attach (&ttx_desc, uptr, cptr); /* attach */ if (r != SCPE_OK) /* error */ return r; -t = sim_rtcn_init (ttix_unit.wait, TMR_TTX); /* init calib */ -sim_activate (uptr, t); /* start poll */ +sim_activate (uptr, tmxr_poll); /* start poll */ return SCPE_OK; } diff --git a/VAX/vax780_stddev.c b/VAX/vax780_stddev.c index 84245806..ec576050 100644 --- a/VAX/vax780_stddev.c +++ b/VAX/vax780_stddev.c @@ -1,6 +1,6 @@ /* vax780_stddev.c: VAX 11/780 standard I/O devices - Copyright (c) 1998-2011, Robert M Supnik + Copyright (c) 1998-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -29,6 +29,7 @@ todr TODR clock tmr interval timer + 18-Apr-12 RMS Revised to use clock coscheduling 28-Sep-11 MP Generalized setting TODR for all OSes. Unbound the TODR value from the 100hz clock tick interrupt. TODR now behaves like the original @@ -461,7 +462,8 @@ t_stat tti_svc (UNIT *uptr) { int32 c; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmr_poll))); + /* continue poll */ if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return c; if (c & SCPE_BREAK) /* break? */ @@ -481,7 +483,7 @@ t_stat tti_reset (DEVICE *dptr) tti_buf = 0; tti_csr = 0; tti_int = 0; -sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); +sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } @@ -679,7 +681,7 @@ return (t? t - 1: wait); t_stat clk_reset (DEVICE *dptr) { tmr_poll = sim_rtcn_init (clk_unit.wait, TMR_CLK); /* init 100Hz timer */ -sim_activate_abs (&clk_unit, tmr_poll); /* activate 100Hz unit */ +sim_activate (&clk_unit, tmr_poll); /* activate 100Hz unit */ tmxr_poll = tmr_poll * TMXR_MULT; /* set mux poll */ if (clk_unit.filebuf == NULL) { /* make sure the TODR is initialized */ clk_unit.filebuf = calloc(sizeof(TOY), 1); diff --git a/VAX/vax780_uba.c b/VAX/vax780_uba.c index 245e8a22..bb6105fe 100644 --- a/VAX/vax780_uba.c +++ b/VAX/vax780_uba.c @@ -1,6 +1,6 @@ /* vax780_uba.c: VAX 11/780 Unibus adapter - Copyright (c) 2004-2008, Robert M Supnik + Copyright (c) 2004-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ uba DW780 Unibus adapter + 25-Mar-12 RMS Added parameter to int_ack prototype (Mark Pizzolata) 19-Nov-08 RMS Moved I/O support routines to I/O library 28-May-08 RMS Inlined physical memory routines 25-Jan-08 RMS Fixed declarations (Mark Pizzolato) diff --git a/VAX/vax_cpu.c b/VAX/vax_cpu.c index dcf712f5..7614cd00 100644 --- a/VAX/vax_cpu.c +++ b/VAX/vax_cpu.c @@ -1,6 +1,6 @@ /* vax_cpu.c: VAX CPU - Copyright (c) 1998-2011, Robert M Supnik + Copyright (c) 1998-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/VAX/vax_cpu1.c b/VAX/vax_cpu1.c index cb91fa54..d4e3ea32 100644 --- a/VAX/vax_cpu1.c +++ b/VAX/vax_cpu1.c @@ -1521,6 +1521,7 @@ switch (prn) { /* case on reg # */ case MT_IPL: /* IPL */ PSL = (PSL & ~PSL_IPL) | ((val & PSL_M_IPL) << PSL_V_IPL); if ((VAX_IDLE_BSDNEW & cpu_idle_mask) && /* New NetBSD and OpenBSD */ + (0 != (PC & 0x80000000)) && /* System Space (Not BOOT ROM) */ (val == 1)) /* IPL 1 */ cpu_idle(); /* idle loop */ break; diff --git a/VAX/vax_fpa.c b/VAX/vax_fpa.c index 7b789cb5..1b15c179 100644 --- a/VAX/vax_fpa.c +++ b/VAX/vax_fpa.c @@ -1,6 +1,6 @@ /* vax_fpa.c - VAX f_, d_, g_floating instructions - Copyright (c) 1998-2011, Robert M Supnik + Copyright (c) 1998-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/VAX/vax_io.c b/VAX/vax_io.c index 48a2da35..8d6baab0 100644 --- a/VAX/vax_io.c +++ b/VAX/vax_io.c @@ -1,6 +1,6 @@ /* vax_io.c: VAX 3900 Qbus IO simulator - Copyright (c) 1998-2008, Robert M Supnik + Copyright (c) 1998-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ qba Qbus adapter + 25-Mar-12 RMS Added parameter to int_ack prototype (Mark Pizzolata) 28-May-08 RMS Inlined physical memory routines 25-Jan-08 RMS Fixed declarations (Mark Pizzolato) 03-Dec-05 RMS Added SHOW QBA VIRT and ex/dep via map diff --git a/VAX/vax_mmu.c b/VAX/vax_mmu.c index 177b61e8..79175c41 100644 --- a/VAX/vax_mmu.c +++ b/VAX/vax_mmu.c @@ -536,7 +536,7 @@ return; void zap_tb (int stb) { -int32 i; +size_t i; for (i = 0; i < VA_TBSIZE; i++) { ptlb[i].tag = ptlb[i].pte = -1; @@ -577,7 +577,7 @@ return FALSE; t_stat tlb_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw) { int32 tlbn = uptr - tlb_unit; -int32 idx = (uint32) addr >> 1; +uint32 idx = (uint32) addr >> 1; if (idx >= VA_TBSIZE) return SCPE_NXM; @@ -592,7 +592,7 @@ return SCPE_OK; t_stat tlb_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw) { int32 tlbn = uptr - tlb_unit; -int32 idx = (uint32) addr >> 1; +uint32 idx = (uint32) addr >> 1; if (idx >= VA_TBSIZE) return SCPE_NXM; @@ -611,7 +611,7 @@ return SCPE_OK; t_stat tlb_reset (DEVICE *dptr) { -int32 i; +size_t i; for (i = 0; i < VA_TBSIZE; i++) stlb[i].tag = ptlb[i].tag = stlb[i].pte = ptlb[i].pte = -1; diff --git a/VAX/vax_stddev.c b/VAX/vax_stddev.c index 204be3fe..2d98e3f7 100644 --- a/VAX/vax_stddev.c +++ b/VAX/vax_stddev.c @@ -1,6 +1,6 @@ /* vax_stddev.c: VAX 3900 standard I/O devices - Copyright (c) 1998-2008, Robert M Supnik + Copyright (c) 1998-2012, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -27,6 +27,8 @@ tto terminal output clk 100Hz and TODR clock + 18-Apr-12 RMS Revised TTI to use clock coscheduling and + remove IORESET bug 13-Jan-12 MP Normalized the saved format of the TODR persistent file so that it may be moved around from one platform to another along with other simulator state files @@ -92,7 +94,7 @@ extern int32 int_req[IPL_HLVL]; extern int32 hlt_pin; -extern int32 sim_switches; +extern int32 sim_switches, sim_is_running; int32 tti_csr = 0; /* control/status */ int32 tto_csr = 0; /* control/status */ @@ -319,7 +321,8 @@ t_stat tti_svc (UNIT *uptr) { int32 c; -sim_activate (uptr, KBD_WAIT (uptr->wait, tmr_poll)); /* continue poll */ +sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmr_poll))); + /* continue poll */ if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */ return c; if (c & SCPE_BREAK) { /* break? */ @@ -340,7 +343,7 @@ t_stat tti_reset (DEVICE *dptr) tti_unit.buf = 0; tti_csr = 0; CLR_INT (TTI); -sim_activate_abs (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); +sim_activate (&tti_unit, KBD_WAIT (tti_unit.wait, tmr_poll)); return SCPE_OK; } @@ -496,10 +499,12 @@ int32 t; clk_csr = 0; CLR_INT (CLK); -t = sim_rtcn_init (clk_unit.wait, TMR_CLK); /* init timer */ -sim_activate_abs (&clk_unit, t); /* activate unit */ -tmr_poll = t; /* set tmr poll */ -tmxr_poll = t * TMXR_MULT; /* set mux poll */ +if (!sim_is_running) { /* RESET (not IORESET)? */ + t = sim_rtcn_init (clk_unit.wait, TMR_CLK); /* init timer */ + sim_activate (&clk_unit, t); /* activate unit */ + tmr_poll = t; /* set tmr poll */ + tmxr_poll = t * TMXR_MULT; /* set mux poll */ + } if (clk_unit.filebuf == NULL) { /* make sure the TODR is initialized */ clk_unit.filebuf = calloc(sizeof(TOY), 1); if (clk_unit.filebuf == NULL) diff --git a/VAX/vax_sys.c b/VAX/vax_sys.c index 149f67d9..f33b2edd 100644 --- a/VAX/vax_sys.c +++ b/VAX/vax_sys.c @@ -115,518 +115,518 @@ const char *sim_stop_messages[] = { */ const uint16 drom[NUM_INST][MAX_SPEC + 1] = { -0, 0, 0, 0, 0, 0, 0, /* HALT */ -0, 0, 0, 0, 0, 0, 0, /* NOP */ -0, 0, 0, 0, 0, 0, 0, /* REI */ -0, 0, 0, 0, 0, 0, 0, /* BPT */ -0, 0, 0, 0, 0, 0, 0, /* RET */ -0, 0, 0, 0, 0, 0, 0, /* RSB */ -0, 0, 0, 0, 0, 0, 0, /* LDPCTX */ -0, 0, 0, 0, 0, 0, 0, /* SVPCTX */ -4+DR_F, RW, AB, RW, AB, 0, 0, /* CVTPS */ -4+DR_F, RW, AB, RW, AB, 0, 0, /* CVTSP */ -6, RL, RL, RL, RL, RL, WL, /* INDEX */ -4+DR_F, AB, RL, RW, AB, 0, 0, /* CRC */ -3, RB, RW, AB, 0, 0, 0, /* PROBER */ -3, RB, RW, AB, 0, 0, 0, /* PROBEW */ -2, AB, AB, 0, 0, 0, 0, /* INSQUE */ -2, AB, WL, 0, 0, 0, 0, /* REMQUE */ -1, BB, 0, 0, 0, 0, 0, /* BSBB */ -1, BB, 0, 0, 0, 0, 0, /* BRB */ -1, BB, 0, 0, 0, 0, 0, /* BNEQ */ -1, BB, 0, 0, 0, 0, 0, /* BEQL */ -1, BB, 0, 0, 0, 0, 0, /* BGTR */ -1, BB, 0, 0, 0, 0, 0, /* BLEQ */ -1, AB, 0, 0, 0, 0, 0, /* JSB */ -1, AB, 0, 0, 0, 0, 0, /* JMP */ -1, BB, 0, 0, 0, 0, 0, /* BGEQ */ -1, BB, 0, 0, 0, 0, 0, /* BLSS */ -1, BB, 0, 0, 0, 0, 0, /* BGTRU */ -1, BB, 0, 0, 0, 0, 0, /* BLEQU */ -1, BB, 0, 0, 0, 0, 0, /* BVC */ -1, BB, 0, 0, 0, 0, 0, /* BVS */ -1, BB, 0, 0, 0, 0, 0, /* BCC */ -1, BB, 0, 0, 0, 0, 0, /* BCS */ -4+DR_F, RW, AB, RW, AB, 0, 0, /* ADDP4 */ -6+DR_F, RW, AB, RW, AB, RW, AB, /* ADDP6 */ -4+DR_F, RW, AB, RW, AB, 0, 0, /* SUBP4 */ -6+DR_F, RW, AB, RW, AB, RW, AB, /* SUBP6 */ -5+DR_F, RW, AB, AB, RW, AB, 0, /* CVTPT */ -6+DR_F, RW, AB, RW, AB, RW, AB, /* MULP6 */ -5+DR_F, RW, AB, AB, RW, AB, 0, /* CVTTP */ -6+DR_F, RW, AB, RW, AB, RW, AB, /* DIVP6 */ -3+DR_F, RW, AB, AB, 0, 0, 0, /* MOVC3 */ -3+DR_F, RW, AB, AB, 0, 0, 0, /* CMPC3 */ -4+DR_F, RW, AB, AB, RB, 0, 0, /* SCANC */ -4+DR_F, RW, AB, AB, RB, 0, 0, /* SPANC */ -5+DR_F, RW, AB, RB, RW, AB, 0, /* MOVC5 */ -5+DR_F, RW, AB, RB, RW, AB, 0, /* CMPC5 */ -6+DR_F, RW, AB, RB, AB, RW, AB, /* MOVTC */ -6+DR_F, RW, AB, RB, AB, RW, AB, /* MOVTUC */ -1, BW, 0, 0, 0, 0, 0, /* BSBW */ -1, BW, 0, 0, 0, 0, 0, /* BRW */ -2, RW, WL, 0, 0, 0, 0, /* CVTWL */ -2, RW, WB, 0, 0, 0, 0, /* CVTWB */ -3+DR_F, RW, AB, AB, 0, 0, 0, /* MOVP */ -3+DR_F, RW, AB, AB, 0, 0, 0, /* CMPP3 */ -3+DR_F, RW, AB, WL, 0, 0, 0, /* CVTPL */ -4+DR_F, RW, AB, RW, AB, 0, 0, /* CMPP4 */ -4+DR_F, RW, AB, AB, AB, 0, 0, /* EDITPC */ -4+DR_F, RW, AB, RW, AB, 0, 0, /* MATCHC */ -3+DR_F, RB, RW, AB, 0, 0, 0, /* LOCC */ -3+DR_F, RB, RW, AB, 0, 0, 0, /* SKPC */ -2, RW, WL, 0, 0, 0, 0, /* MOVZWL */ -4, RW, RW, MW, BW, 0, 0, /* ACBW */ -2, AW, WL, 0, 0, 0, 0, /* MOVAW */ -1, AW, 0, 0, 0, 0, 0, /* PUSHAW */ -2, RF, ML, 0, 0, 0, 0, /* ADDF2 */ -3, RF, RF, WL, 0, 0, 0, /* ADDF3 */ -2, RF, ML, 0, 0, 0, 0, /* SUBF2 */ -3, RF, RF, WL, 0, 0, 0, /* SUBF3 */ -2, RF, ML, 0, 0, 0, 0, /* MULF2 */ -3, RF, RF, WL, 0, 0, 0, /* MULF3 */ -2, RF, ML, 0, 0, 0, 0, /* DIVF2 */ -3, RF, RF, WL, 0, 0, 0, /* DIVF3 */ -2, RF, WB, 0, 0, 0, 0, /* CVTFB */ -2, RF, WW, 0, 0, 0, 0, /* CVTFW */ -2, RF, WL, 0, 0, 0, 0, /* CVTFL */ -2, RF, WL, 0, 0, 0, 0, /* CVTRFL */ -2, RB, WL, 0, 0, 0, 0, /* CVTBF */ -2, RW, WL, 0, 0, 0, 0, /* CVTWF */ -2, RL, WL, 0, 0, 0, 0, /* CVTLF */ -4, RF, RF, ML, BW, 0, 0, /* ACBF */ -2, RF, WL, 0, 0, 0, 0, /* MOVF */ -2, RF, RF, 0, 0, 0, 0, /* CMPF */ -2, RF, WL, 0, 0, 0, 0, /* MNEGF */ -1, RF, 0, 0, 0, 0, 0, /* TSTF */ -5, RF, RB, RF, WL, WL, 0, /* EMODF */ -3, RF, RW, AB, 0, 0, 0, /* POLYF */ -2, RF, WQ, 0, 0, 0, 0, /* CVTFD */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -2, RW, WW, 0, 0, 0, 0, /* ADAWI */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -2, AB, AQ, 0, 0, 0, 0, /* INSQHI */ -2, AB, AQ, 0, 0, 0, 0, /* INSQTI */ -2, AQ, WL, 0, 0, 0, 0, /* REMQHI */ -2, AQ, WL, 0, 0, 0, 0, /* REMQTI */ -2, RD, MQ, 0, 0, 0, 0, /* ADDD2 */ -3, RD, RD, WQ, 0, 0, 0, /* ADDD3 */ -2, RD, MQ, 0, 0, 0, 0, /* SUBD2 */ -3, RD, RD, WQ, 0, 0, 0, /* SUBD3 */ -2, RD, MQ, 0, 0, 0, 0, /* MULD2 */ -3, RD, RD, WQ, 0, 0, 0, /* MULD3 */ -2, RD, MQ, 0, 0, 0, 0, /* DIVD2 */ -3, RD, RD, WQ, 0, 0, 0, /* DIVD3 */ -2, RD, WB, 0, 0, 0, 0, /* CVTDB */ -2, RD, WW, 0, 0, 0, 0, /* CVTDW */ -2, RD, WL, 0, 0, 0, 0, /* CVTDL */ -2, RD, WL, 0, 0, 0, 0, /* CVTRDL */ -2, RB, WQ, 0, 0, 0, 0, /* CVTBD */ -2, RW, WQ, 0, 0, 0, 0, /* CVTWD */ -2, RL, WQ, 0, 0, 0, 0, /* CVTLD */ -4, RD, RD, MQ, BW, 0, 0, /* ACBD */ -2, RD, WQ, 0, 0, 0, 0, /* MOVD */ -2, RD, RD, 0, 0, 0, 0, /* CMPD */ -2, RD, WQ, 0, 0, 0, 0, /* MNEGD */ -1, RD, 0, 0, 0, 0, 0, /* TSTD */ -5, RD, RB, RD, WL, WQ, 0, /* EMODD */ -3, RD, RW, AB, 0, 0, 0, /* POLYD */ -2, RD, WL, 0, 0, 0, 0, /* CVTDF */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -3, RB, RL, WL, 0, 0, 0, /* ASHL */ -3, RB, RQ, WQ, 0, 0, 0, /* ASHQ */ -4, RL, RL, RL, WQ, 0, 0, /* EMUL */ -4, RL, RQ, WL, WL, 0, 0, /* EDIV */ -1, WQ, 0, 0, 0, 0, 0, /* CLRQ */ -2, RQ, WQ, 0, 0, 0, 0, /* MOVQ */ -2, AQ, WL, 0, 0, 0, 0, /* MOVAQ */ -1, AQ, 0, 0, 0, 0, 0, /* PUSHAQ */ -2, RB, MB, 0, 0, 0, 0, /* ADDB2 */ -3, RB, RB, WB, 0, 0, 0, /* ADDB3 */ -2, RB, MB, 0, 0, 0, 0, /* SUBB2 */ -3, RB, RB, WB, 0, 0, 0, /* SUBB3 */ -2, RB, MB, 0, 0, 0, 0, /* MULB2 */ -3, RB, RB, WB, 0, 0, 0, /* MULB3 */ -2, RB, MB, 0, 0, 0, 0, /* DIVB2 */ -3, RB, RB, WB, 0, 0, 0, /* DIVB3 */ -2, RB, MB, 0, 0, 0, 0, /* BISB2 */ -3, RB, RB, WB, 0, 0, 0, /* BISB3 */ -2, RB, MB, 0, 0, 0, 0, /* BICB2 */ -3, RB, RB, WB, 0, 0, 0, /* BICB3 */ -2, RB, MB, 0, 0, 0, 0, /* XORB2 */ -3, RB, RB, WB, 0, 0, 0, /* XORB3 */ -2, RB, WB, 0, 0, 0, 0, /* MNEGB */ -3, RB, RB, RB, 0, 0, 0, /* CASEB */ -2, RB, WB, 0, 0, 0, 0, /* MOVB */ -2, RB, RB, 0, 0, 0, 0, /* CMPB */ -2, RB, WB, 0, 0, 0, 0, /* MCOMB */ -2, RB, RB, 0, 0, 0, 0, /* BITB */ -1, WB, 0, 0, 0, 0, 0, /* CLRB */ -1, RB, 0, 0, 0, 0, 0, /* TSTB */ -1, MB, 0, 0, 0, 0, 0, /* INCB */ -1, MB, 0, 0, 0, 0, 0, /* DECB */ -2, RB, WL, 0, 0, 0, 0, /* CVTBL */ -2, RB, WW, 0, 0, 0, 0, /* CVTBW */ -2, RB, WL, 0, 0, 0, 0, /* MOVZBL */ -2, RB, WW, 0, 0, 0, 0, /* MOVZBW */ -3, RB, RL, WL, 0, 0, 0, /* ROTL */ -4, RB, RB, MB, BW, 0, 0, /* ACBB */ -2, AB, WL, 0, 0, 0, 0, /* MOVAB */ -1, AB, 0, 0, 0, 0, 0, /* PUSHAB */ -2, RW, MW, 0, 0, 0, 0, /* ADDW2 */ -3, RW, RW, WW, 0, 0, 0, /* ADDW3 */ -2, RW, MW, 0, 0, 0, 0, /* SUBW2 */ -3, RW, RW, WW, 0, 0, 0, /* SUBW3 */ -2, RW, MW, 0, 0, 0, 0, /* MULW2 */ -3, RW, RW, WW, 0, 0, 0, /* MULW3 */ -2, RW, MW, 0, 0, 0, 0, /* DIVW2 */ -3, RW, RW, WW, 0, 0, 0, /* DIVW3 */ -2, RW, MW, 0, 0, 0, 0, /* BISW2 */ -3, RW, RW, WW, 0, 0, 0, /* BISW3 */ -2, RW, MW, 0, 0, 0, 0, /* BICW2 */ -3, RW, RW, WW, 0, 0, 0, /* BICW3 */ -2, RW, MW, 0, 0, 0, 0, /* XORW2 */ -3, RW, RW, WW, 0, 0, 0, /* XORW3 */ -2, RW, WW, 0, 0, 0, 0, /* MNEGW */ -3, RW, RW, RW, 0, 0, 0, /* CASEW */ -2, RW, WW, 0, 0, 0, 0, /* MOVW */ -2, RW, RW, 0, 0, 0, 0, /* CMPW */ -2, RW, WW, 0, 0, 0, 0, /* MCOMW */ -2, RW, RW, 0, 0, 0, 0, /* BITW */ -1, WW, 0, 0, 0, 0, 0, /* CLRW */ -1, RW, 0, 0, 0, 0, 0, /* TSTW */ -1, MW, 0, 0, 0, 0, 0, /* INCW */ -1, MW, 0, 0, 0, 0, 0, /* DECW */ -1, RW, 0, 0, 0, 0, 0, /* BISPSW */ -1, RW, 0, 0, 0, 0, 0, /* BICPSW */ -1, RW, 0, 0, 0, 0, 0, /* POPR */ -1, RW, 0, 0, 0, 0, 0, /* PUSHR */ -1, RW, 0, 0, 0, 0, 0, /* CHMK */ -1, RW, 0, 0, 0, 0, 0, /* CHME */ -1, RW, 0, 0, 0, 0, 0, /* CHMS */ -1, RW, 0, 0, 0, 0, 0, /* CHMU */ -2, RL, ML, 0, 0, 0, 0, /* ADDL2 */ -3, RL, RL, WL, 0, 0, 0, /* ADDL3 */ -2, RL, ML, 0, 0, 0, 0, /* SUBL2 */ -3, RL, RL, WL, 0, 0, 0, /* SUBL3 */ -2, RL, ML, 0, 0, 0, 0, /* MULL2 */ -3, RL, RL, WL, 0, 0, 0, /* MULL3 */ -2, RL, ML, 0, 0, 0, 0, /* DIVL2 */ -3, RL, RL, WL, 0, 0, 0, /* DIVL3 */ -2, RL, ML, 0, 0, 0, 0, /* BISL2 */ -3, RL, RL, WL, 0, 0, 0, /* BISL3 */ -2, RL, ML, 0, 0, 0, 0, /* BICL2 */ -3, RL, RL, WL, 0, 0, 0, /* BICL3 */ -2, RL, ML, 0, 0, 0, 0, /* XORL2 */ -3, RL, RL, WL, 0, 0, 0, /* XORL3 */ -2, RL, WL, 0, 0, 0, 0, /* MNEGL */ -3, RL, RL, RL, 0, 0, 0, /* CASEL */ -2, RL, WL, 0, 0, 0, 0, /* MOVL */ -2, RL, RL, 0, 0, 0, 0, /* CMPL */ -2, RL, WL, 0, 0, 0, 0, /* MCOML */ -2, RL, RL, 0, 0, 0, 0, /* BITL */ -1, WL, 0, 0, 0, 0, 0, /* CLRL */ -1, RL, 0, 0, 0, 0, 0, /* TSTL */ -1, ML, 0, 0, 0, 0, 0, /* INCL */ -1, ML, 0, 0, 0, 0, 0, /* DECL */ -2, RL, ML, 0, 0, 0, 0, /* ADWC */ -2, RL, ML, 0, 0, 0, 0, /* SBWC */ -2, RL, RL, 0, 0, 0, 0, /* MTPR */ -2, RL, WL, 0, 0, 0, 0, /* MFPR */ -1, WL, 0, 0, 0, 0, 0, /* MOVPSL */ -1, RL, 0, 0, 0, 0, 0, /* PUSHL */ -2, AL, WL, 0, 0, 0, 0, /* MOVAL */ -1, AL, 0, 0, 0, 0, 0, /* PUSHAL */ -3, RL, VB, BB, 0, 0, 0, /* BBS */ -3, RL, VB, BB, 0, 0, 0, /* BBC */ -3, RL, VB, BB, 0, 0, 0, /* BBSS */ -3, RL, VB, BB, 0, 0, 0, /* BBCS */ -3, RL, VB, BB, 0, 0, 0, /* BBSC */ -3, RL, VB, BB, 0, 0, 0, /* BBCC */ -3, RL, VB, BB, 0, 0, 0, /* BBSSI */ -3, RL, VB, BB, 0, 0, 0, /* BBCCI */ -2, RL, BB, 0, 0, 0, 0, /* BLBS */ -2, RL, BB, 0, 0, 0, 0, /* BLBC */ -4, RL, RB, VB, WL, 0, 0, /* FFS */ -4, RL, RB, VB, WL, 0, 0, /* FFC */ -4, RL, RB, VB, RL, 0, 0, /* CMPV */ -4, RL, RB, VB, RL, 0, 0, /* CMPZV */ -4, RL, RB, VB, WL, 0, 0, /* EXTV */ -4, RL, RB, VB, WL, 0, 0, /* EXTZV */ -4, RL, RL, RB, VB, 0, 0, /* INSV */ -4, RL, RL, ML, BW, 0, 0, /* ACBL */ -3, RL, ML, BB, 0, 0, 0, /* AOBLSS */ -3, RL, ML, BB, 0, 0, 0, /* AOBLEQ */ -2, ML, BB, 0, 0, 0, 0, /* SOBGEQ */ -2, ML, BB, 0, 0, 0, 0, /* SOBGTR */ -2, RL, WB, 0, 0, 0, 0, /* CVTLB */ -2, RL, WW, 0, 0, 0, 0, /* CVTLW */ -6+DR_F, RB, RW, AB, RB, RW, AB, /* ASHP */ -3+DR_F, RL, RW, AB, 0, 0, 0, /* CVTLP */ -2, AB, AB, 0, 0, 0, 0, /* CALLG */ -2, RL, AB, 0, 0, 0, 0, /* CALLS */ -0, 0, 0, 0, 0, 0, 0, /* XFC */ -0, 0, 0, 0, 0, 0, 0, /* 0FD */ -0, 0, 0, 0, 0, 0, 0, /* 0FE */ -0, 0, 0, 0, 0, 0, 0, /* 0FF */ -0, 0, 0, 0, 0, 0, 0, /* 100-10F */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 110-11F */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 120-12F */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 130-13F */ -0, 0, 0, 0, 0, 0, 0, -ODC(2), RD, WO, 0, 0, 0, 0, /* CVTDH */ -2, RG, WL, 0, 0, 0, 0, /* CVTGF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -2, RG, MQ, 0, 0, 0, 0, /* ADDG2 */ -3, RG, RG, WQ, 0, 0, 0, /* ADDG3 */ -2, RG, MQ, 0, 0, 0, 0, /* SUBG2 */ -3, RG, RG, WQ, 0, 0, 0, /* SUBG3 */ -2, RG, MQ, 0, 0, 0, 0, /* MULG2 */ -3, RG, RG, WQ, 0, 0, 0, /* MULG3 */ -2, RG, MQ, 0, 0, 0, 0, /* DIVG2 */ -3, RG, RG, WQ, 0, 0, 0, /* DIVG3 */ -2, RG, WB, 0, 0, 0, 0, /* CVTGB */ -2, RG, WW, 0, 0, 0, 0, /* CVTGW */ -2, RG, WL, 0, 0, 0, 0, /* CVTGL */ -2, RG, WL, 0, 0, 0, 0, /* CVTRGL */ -2, RB, WQ, 0, 0, 0, 0, /* CVTBG */ -2, RW, WQ, 0, 0, 0, 0, /* CVTWG */ -2, RL, WQ, 0, 0, 0, 0, /* CVTLG */ -4, RG, RG, MQ, BW, 0, 0, /* ACBG */ -2, RG, WQ, 0, 0, 0, 0, /* MOVG */ -2, RG, RG, 0, 0, 0, 0, /* CMPG */ -2, RG, WQ, 0, 0, 0, 0, /* MNEGG */ -1, RG, 0, 0, 0, 0, 0, /* TSTG */ -5, RG, RW, RG, WL, WQ, 0, /* EMODG */ -3, RG, RW, AB, 0, 0, 0, /* POLYG */ -ODC(2), RG, WO, 0, 0, 0, 0, /* CVTGH */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -ODC(2), RH, MO, 0, 0, 0, 0, /* ADDH2 */ -ODC(3), RH, RH, WO, 0, 0, 0, /* ADDH3 */ -ODC(2), RH, MO, 0, 0, 0, 0, /* SUBH2 */ -ODC(3), RH, RH, WO, 0, 0, 0, /* SUBH3 */ -ODC(2), RH, MO, 0, 0, 0, 0, /* MULH2 */ -ODC(3), RH, RH, WO, 0, 0, 0, /* MULH3 */ -ODC(2), RH, MO, 0, 0, 0, 0, /* DIVH2 */ -ODC(3), RH, RH, WO, 0, 0, 0, /* DIVH3 */ -ODC(2), RH, WB, 0, 0, 0, 0, /* CVTHB */ -ODC(2), RH, WW, 0, 0, 0, 0, /* CVTHW */ -ODC(2), RH, WL, 0, 0, 0, 0, /* CVTHL */ -ODC(2), RH, WL, 0, 0, 0, 0, /* CVTRHL */ -ODC(2), RB, WO, 0, 0, 0, 0, /* CVTBH */ -ODC(2), RW, WO, 0, 0, 0, 0, /* CVTWH */ -ODC(2), RL, WO, 0, 0, 0, 0, /* CVTLH */ -ODC(4), RH, RH, MO, BW, 0, 0, /* ACBH */ -ODC(2), RH, RO, 0, 0, 0, 0, /* MOVH */ -ODC(2), RH, RH, 0, 0, 0, 0, /* CMPH */ -ODC(2), RH, WO, 0, 0, 0, 0, /* MNEGH */ -ODC(1), RH, 0, 0, 0, 0, 0, /* TSTH */ -ODC(5), RH, RW, RH, WL, WO, 0, /* EMODH */ -ODC(3), RH, RW, AB, 0, 0, 0, /* POLYH */ -ODC(2), RH, WQ, 0, 0, 0, 0, /* CVTHG */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -0, 0, 0, 0, 0, 0, 0, /* reserved */ -ODC(1), WO, 0, 0, 0, 0, 0, /* CLRO */ -ODC(2), RO, RO, 0, 0, 0, 0, /* MOVO */ -ODC(2), AO, WL, 0, 0, 0, 0, /* MOVAO*/ -ODC(1), AO, 0, 0, 0, 0, 0, /* PUSHAO*/ -0, 0, 0, 0, 0, 0, 0, /* 180-18F */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 190-19F */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -ODC(2), RF, WO, 0, 0, 0, 0, /* CVTFH */ -2, RF, WQ, 0, 0, 0, 0, /* CVTFG */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 1A0-1AF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 1B0-1BF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 1C0-1CF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 1D0-1DF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 1E0-1EF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, /* 1F0-1FF */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -ODC(2), RH, WL, 0, 0, 0, 0, /* CVTHF */ -ODC(2), RH, WQ, 0, 0, 0, 0, /* CVTHD */ -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0 +{0, 0, 0, 0, 0, 0, 0}, /* HALT */ +{0, 0, 0, 0, 0, 0, 0}, /* NOP */ +{0, 0, 0, 0, 0, 0, 0}, /* REI */ +{0, 0, 0, 0, 0, 0, 0}, /* BPT */ +{0, 0, 0, 0, 0, 0, 0}, /* RET */ +{0, 0, 0, 0, 0, 0, 0}, /* RSB */ +{0, 0, 0, 0, 0, 0, 0}, /* LDPCTX */ +{0, 0, 0, 0, 0, 0, 0}, /* SVPCTX */ +{4+DR_F, RW, AB, RW, AB, 0, 0}, /* CVTPS */ +{4+DR_F, RW, AB, RW, AB, 0, 0}, /* CVTSP */ +{6, RL, RL, RL, RL, RL, WL}, /* INDEX */ +{4+DR_F, AB, RL, RW, AB, 0, 0}, /* CRC */ +{3, RB, RW, AB, 0, 0, 0}, /* PROBER */ +{3, RB, RW, AB, 0, 0, 0}, /* PROBEW */ +{2, AB, AB, 0, 0, 0, 0}, /* INSQUE */ +{2, AB, WL, 0, 0, 0, 0}, /* REMQUE */ +{1, BB, 0, 0, 0, 0, 0}, /* BSBB */ +{1, BB, 0, 0, 0, 0, 0}, /* BRB */ +{1, BB, 0, 0, 0, 0, 0}, /* BNEQ */ +{1, BB, 0, 0, 0, 0, 0}, /* BEQL */ +{1, BB, 0, 0, 0, 0, 0}, /* BGTR */ +{1, BB, 0, 0, 0, 0, 0}, /* BLEQ */ +{1, AB, 0, 0, 0, 0, 0}, /* JSB */ +{1, AB, 0, 0, 0, 0, 0}, /* JMP */ +{1, BB, 0, 0, 0, 0, 0}, /* BGEQ */ +{1, BB, 0, 0, 0, 0, 0}, /* BLSS */ +{1, BB, 0, 0, 0, 0, 0}, /* BGTRU */ +{1, BB, 0, 0, 0, 0, 0}, /* BLEQU */ +{1, BB, 0, 0, 0, 0, 0}, /* BVC */ +{1, BB, 0, 0, 0, 0, 0}, /* BVS */ +{1, BB, 0, 0, 0, 0, 0}, /* BCC */ +{1, BB, 0, 0, 0, 0, 0}, /* BCS */ +{4+DR_F, RW, AB, RW, AB, 0, 0}, /* ADDP4 */ +{6+DR_F, RW, AB, RW, AB, RW, AB}, /* ADDP6 */ +{4+DR_F, RW, AB, RW, AB, 0, 0}, /* SUBP4 */ +{6+DR_F, RW, AB, RW, AB, RW, AB}, /* SUBP6 */ +{5+DR_F, RW, AB, AB, RW, AB, 0}, /* CVTPT */ +{6+DR_F, RW, AB, RW, AB, RW, AB}, /* MULP6 */ +{5+DR_F, RW, AB, AB, RW, AB, 0}, /* CVTTP */ +{6+DR_F, RW, AB, RW, AB, RW, AB}, /* DIVP6 */ +{3+DR_F, RW, AB, AB, 0, 0, 0}, /* MOVC3 */ +{3+DR_F, RW, AB, AB, 0, 0, 0}, /* CMPC3 */ +{4+DR_F, RW, AB, AB, RB, 0, 0}, /* SCANC */ +{4+DR_F, RW, AB, AB, RB, 0, 0}, /* SPANC */ +{5+DR_F, RW, AB, RB, RW, AB, 0}, /* MOVC5 */ +{5+DR_F, RW, AB, RB, RW, AB, 0}, /* CMPC5 */ +{6+DR_F, RW, AB, RB, AB, RW, AB}, /* MOVTC */ +{6+DR_F, RW, AB, RB, AB, RW, AB}, /* MOVTUC */ +{1, BW, 0, 0, 0, 0, 0}, /* BSBW */ +{1, BW, 0, 0, 0, 0, 0}, /* BRW */ +{2, RW, WL, 0, 0, 0, 0}, /* CVTWL */ +{2, RW, WB, 0, 0, 0, 0}, /* CVTWB */ +{3+DR_F, RW, AB, AB, 0, 0, 0}, /* MOVP */ +{3+DR_F, RW, AB, AB, 0, 0, 0}, /* CMPP3 */ +{3+DR_F, RW, AB, WL, 0, 0, 0}, /* CVTPL */ +{4+DR_F, RW, AB, RW, AB, 0, 0}, /* CMPP4 */ +{4+DR_F, RW, AB, AB, AB, 0, 0}, /* EDITPC */ +{4+DR_F, RW, AB, RW, AB, 0, 0}, /* MATCHC */ +{3+DR_F, RB, RW, AB, 0, 0, 0}, /* LOCC */ +{3+DR_F, RB, RW, AB, 0, 0, 0}, /* SKPC */ +{2, RW, WL, 0, 0, 0, 0}, /* MOVZWL */ +{4, RW, RW, MW, BW, 0, 0}, /* ACBW */ +{2, AW, WL, 0, 0, 0, 0}, /* MOVAW */ +{1, AW, 0, 0, 0, 0, 0}, /* PUSHAW */ +{2, RF, ML, 0, 0, 0, 0}, /* ADDF2 */ +{3, RF, RF, WL, 0, 0, 0}, /* ADDF3 */ +{2, RF, ML, 0, 0, 0, 0}, /* SUBF2 */ +{3, RF, RF, WL, 0, 0, 0}, /* SUBF3 */ +{2, RF, ML, 0, 0, 0, 0}, /* MULF2 */ +{3, RF, RF, WL, 0, 0, 0}, /* MULF3 */ +{2, RF, ML, 0, 0, 0, 0}, /* DIVF2 */ +{3, RF, RF, WL, 0, 0, 0}, /* DIVF3 */ +{2, RF, WB, 0, 0, 0, 0}, /* CVTFB */ +{2, RF, WW, 0, 0, 0, 0}, /* CVTFW */ +{2, RF, WL, 0, 0, 0, 0}, /* CVTFL */ +{2, RF, WL, 0, 0, 0, 0}, /* CVTRFL */ +{2, RB, WL, 0, 0, 0, 0}, /* CVTBF */ +{2, RW, WL, 0, 0, 0, 0}, /* CVTWF */ +{2, RL, WL, 0, 0, 0, 0}, /* CVTLF */ +{4, RF, RF, ML, BW, 0, 0}, /* ACBF */ +{2, RF, WL, 0, 0, 0, 0}, /* MOVF */ +{2, RF, RF, 0, 0, 0, 0}, /* CMPF */ +{2, RF, WL, 0, 0, 0, 0}, /* MNEGF */ +{1, RF, 0, 0, 0, 0, 0}, /* TSTF */ +{5, RF, RB, RF, WL, WL, 0}, /* EMODF */ +{3, RF, RW, AB, 0, 0, 0}, /* POLYF */ +{2, RF, WQ, 0, 0, 0, 0}, /* CVTFD */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{2, RW, WW, 0, 0, 0, 0}, /* ADAWI */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{2, AB, AQ, 0, 0, 0, 0}, /* INSQHI */ +{2, AB, AQ, 0, 0, 0, 0}, /* INSQTI */ +{2, AQ, WL, 0, 0, 0, 0}, /* REMQHI */ +{2, AQ, WL, 0, 0, 0, 0}, /* REMQTI */ +{2, RD, MQ, 0, 0, 0, 0}, /* ADDD2 */ +{3, RD, RD, WQ, 0, 0, 0}, /* ADDD3 */ +{2, RD, MQ, 0, 0, 0, 0}, /* SUBD2 */ +{3, RD, RD, WQ, 0, 0, 0}, /* SUBD3 */ +{2, RD, MQ, 0, 0, 0, 0}, /* MULD2 */ +{3, RD, RD, WQ, 0, 0, 0}, /* MULD3 */ +{2, RD, MQ, 0, 0, 0, 0}, /* DIVD2 */ +{3, RD, RD, WQ, 0, 0, 0}, /* DIVD3 */ +{2, RD, WB, 0, 0, 0, 0}, /* CVTDB */ +{2, RD, WW, 0, 0, 0, 0}, /* CVTDW */ +{2, RD, WL, 0, 0, 0, 0}, /* CVTDL */ +{2, RD, WL, 0, 0, 0, 0}, /* CVTRDL */ +{2, RB, WQ, 0, 0, 0, 0}, /* CVTBD */ +{2, RW, WQ, 0, 0, 0, 0}, /* CVTWD */ +{2, RL, WQ, 0, 0, 0, 0}, /* CVTLD */ +{4, RD, RD, MQ, BW, 0, 0}, /* ACBD */ +{2, RD, WQ, 0, 0, 0, 0}, /* MOVD */ +{2, RD, RD, 0, 0, 0, 0}, /* CMPD */ +{2, RD, WQ, 0, 0, 0, 0}, /* MNEGD */ +{1, RD, 0, 0, 0, 0, 0}, /* TSTD */ +{5, RD, RB, RD, WL, WQ, 0}, /* EMODD */ +{3, RD, RW, AB, 0, 0, 0}, /* POLYD */ +{2, RD, WL, 0, 0, 0, 0}, /* CVTDF */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{3, RB, RL, WL, 0, 0, 0}, /* ASHL */ +{3, RB, RQ, WQ, 0, 0, 0}, /* ASHQ */ +{4, RL, RL, RL, WQ, 0, 0}, /* EMUL */ +{4, RL, RQ, WL, WL, 0, 0}, /* EDIV */ +{1, WQ, 0, 0, 0, 0, 0}, /* CLRQ */ +{2, RQ, WQ, 0, 0, 0, 0}, /* MOVQ */ +{2, AQ, WL, 0, 0, 0, 0}, /* MOVAQ */ +{1, AQ, 0, 0, 0, 0, 0}, /* PUSHAQ */ +{2, RB, MB, 0, 0, 0, 0}, /* ADDB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* ADDB3 */ +{2, RB, MB, 0, 0, 0, 0}, /* SUBB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* SUBB3 */ +{2, RB, MB, 0, 0, 0, 0}, /* MULB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* MULB3 */ +{2, RB, MB, 0, 0, 0, 0}, /* DIVB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* DIVB3 */ +{2, RB, MB, 0, 0, 0, 0}, /* BISB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* BISB3 */ +{2, RB, MB, 0, 0, 0, 0}, /* BICB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* BICB3 */ +{2, RB, MB, 0, 0, 0, 0}, /* XORB2 */ +{3, RB, RB, WB, 0, 0, 0}, /* XORB3 */ +{2, RB, WB, 0, 0, 0, 0}, /* MNEGB */ +{3, RB, RB, RB, 0, 0, 0}, /* CASEB */ +{2, RB, WB, 0, 0, 0, 0}, /* MOVB */ +{2, RB, RB, 0, 0, 0, 0}, /* CMPB */ +{2, RB, WB, 0, 0, 0, 0}, /* MCOMB */ +{2, RB, RB, 0, 0, 0, 0}, /* BITB */ +{1, WB, 0, 0, 0, 0, 0}, /* CLRB */ +{1, RB, 0, 0, 0, 0, 0}, /* TSTB */ +{1, MB, 0, 0, 0, 0, 0}, /* INCB */ +{1, MB, 0, 0, 0, 0, 0}, /* DECB */ +{2, RB, WL, 0, 0, 0, 0}, /* CVTBL */ +{2, RB, WW, 0, 0, 0, 0}, /* CVTBW */ +{2, RB, WL, 0, 0, 0, 0}, /* MOVZBL */ +{2, RB, WW, 0, 0, 0, 0}, /* MOVZBW */ +{3, RB, RL, WL, 0, 0, 0}, /* ROTL */ +{4, RB, RB, MB, BW, 0, 0}, /* ACBB */ +{2, AB, WL, 0, 0, 0, 0}, /* MOVAB */ +{1, AB, 0, 0, 0, 0, 0}, /* PUSHAB */ +{2, RW, MW, 0, 0, 0, 0}, /* ADDW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* ADDW3 */ +{2, RW, MW, 0, 0, 0, 0}, /* SUBW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* SUBW3 */ +{2, RW, MW, 0, 0, 0, 0}, /* MULW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* MULW3 */ +{2, RW, MW, 0, 0, 0, 0}, /* DIVW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* DIVW3 */ +{2, RW, MW, 0, 0, 0, 0}, /* BISW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* BISW3 */ +{2, RW, MW, 0, 0, 0, 0}, /* BICW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* BICW3 */ +{2, RW, MW, 0, 0, 0, 0}, /* XORW2 */ +{3, RW, RW, WW, 0, 0, 0}, /* XORW3 */ +{2, RW, WW, 0, 0, 0, 0}, /* MNEGW */ +{3, RW, RW, RW, 0, 0, 0}, /* CASEW */ +{2, RW, WW, 0, 0, 0, 0}, /* MOVW */ +{2, RW, RW, 0, 0, 0, 0}, /* CMPW */ +{2, RW, WW, 0, 0, 0, 0}, /* MCOMW */ +{2, RW, RW, 0, 0, 0, 0}, /* BITW */ +{1, WW, 0, 0, 0, 0, 0}, /* CLRW */ +{1, RW, 0, 0, 0, 0, 0}, /* TSTW */ +{1, MW, 0, 0, 0, 0, 0}, /* INCW */ +{1, MW, 0, 0, 0, 0, 0}, /* DECW */ +{1, RW, 0, 0, 0, 0, 0}, /* BISPSW */ +{1, RW, 0, 0, 0, 0, 0}, /* BICPSW */ +{1, RW, 0, 0, 0, 0, 0}, /* POPR */ +{1, RW, 0, 0, 0, 0, 0}, /* PUSHR */ +{1, RW, 0, 0, 0, 0, 0}, /* CHMK */ +{1, RW, 0, 0, 0, 0, 0}, /* CHME */ +{1, RW, 0, 0, 0, 0, 0}, /* CHMS */ +{1, RW, 0, 0, 0, 0, 0}, /* CHMU */ +{2, RL, ML, 0, 0, 0, 0}, /* ADDL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* ADDL3 */ +{2, RL, ML, 0, 0, 0, 0}, /* SUBL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* SUBL3 */ +{2, RL, ML, 0, 0, 0, 0}, /* MULL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* MULL3 */ +{2, RL, ML, 0, 0, 0, 0}, /* DIVL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* DIVL3 */ +{2, RL, ML, 0, 0, 0, 0}, /* BISL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* BISL3 */ +{2, RL, ML, 0, 0, 0, 0}, /* BICL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* BICL3 */ +{2, RL, ML, 0, 0, 0, 0}, /* XORL2 */ +{3, RL, RL, WL, 0, 0, 0}, /* XORL3 */ +{2, RL, WL, 0, 0, 0, 0}, /* MNEGL */ +{3, RL, RL, RL, 0, 0, 0}, /* CASEL */ +{2, RL, WL, 0, 0, 0, 0}, /* MOVL */ +{2, RL, RL, 0, 0, 0, 0}, /* CMPL */ +{2, RL, WL, 0, 0, 0, 0}, /* MCOML */ +{2, RL, RL, 0, 0, 0, 0}, /* BITL */ +{1, WL, 0, 0, 0, 0, 0}, /* CLRL */ +{1, RL, 0, 0, 0, 0, 0}, /* TSTL */ +{1, ML, 0, 0, 0, 0, 0}, /* INCL */ +{1, ML, 0, 0, 0, 0, 0}, /* DECL */ +{2, RL, ML, 0, 0, 0, 0}, /* ADWC */ +{2, RL, ML, 0, 0, 0, 0}, /* SBWC */ +{2, RL, RL, 0, 0, 0, 0}, /* MTPR */ +{2, RL, WL, 0, 0, 0, 0}, /* MFPR */ +{1, WL, 0, 0, 0, 0, 0}, /* MOVPSL */ +{1, RL, 0, 0, 0, 0, 0}, /* PUSHL */ +{2, AL, WL, 0, 0, 0, 0}, /* MOVAL */ +{1, AL, 0, 0, 0, 0, 0}, /* PUSHAL */ +{3, RL, VB, BB, 0, 0, 0}, /* BBS */ +{3, RL, VB, BB, 0, 0, 0}, /* BBC */ +{3, RL, VB, BB, 0, 0, 0}, /* BBSS */ +{3, RL, VB, BB, 0, 0, 0}, /* BBCS */ +{3, RL, VB, BB, 0, 0, 0}, /* BBSC */ +{3, RL, VB, BB, 0, 0, 0}, /* BBCC */ +{3, RL, VB, BB, 0, 0, 0}, /* BBSSI */ +{3, RL, VB, BB, 0, 0, 0}, /* BBCCI */ +{2, RL, BB, 0, 0, 0, 0}, /* BLBS */ +{2, RL, BB, 0, 0, 0, 0}, /* BLBC */ +{4, RL, RB, VB, WL, 0, 0}, /* FFS */ +{4, RL, RB, VB, WL, 0, 0}, /* FFC */ +{4, RL, RB, VB, RL, 0, 0}, /* CMPV */ +{4, RL, RB, VB, RL, 0, 0}, /* CMPZV */ +{4, RL, RB, VB, WL, 0, 0}, /* EXTV */ +{4, RL, RB, VB, WL, 0, 0}, /* EXTZV */ +{4, RL, RL, RB, VB, 0, 0}, /* INSV */ +{4, RL, RL, ML, BW, 0, 0}, /* ACBL */ +{3, RL, ML, BB, 0, 0, 0}, /* AOBLSS */ +{3, RL, ML, BB, 0, 0, 0}, /* AOBLEQ */ +{2, ML, BB, 0, 0, 0, 0}, /* SOBGEQ */ +{2, ML, BB, 0, 0, 0, 0}, /* SOBGTR */ +{2, RL, WB, 0, 0, 0, 0}, /* CVTLB */ +{2, RL, WW, 0, 0, 0, 0}, /* CVTLW */ +{6+DR_F, RB, RW, AB, RB, RW, AB}, /* ASHP */ +{3+DR_F, RL, RW, AB, 0, 0, 0}, /* CVTLP */ +{2, AB, AB, 0, 0, 0, 0}, /* CALLG */ +{2, RL, AB, 0, 0, 0, 0}, /* CALLS */ +{0, 0, 0, 0, 0, 0, 0}, /* XFC */ +{0, 0, 0, 0, 0, 0, 0}, /* 0FD */ +{0, 0, 0, 0, 0, 0, 0}, /* 0FE */ +{0, 0, 0, 0, 0, 0, 0}, /* 0FF */ +{0, 0, 0, 0, 0, 0, 0}, /* 100-10F */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 110-11F */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 120-12F */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 130-13F */ +{0, 0, 0, 0, 0, 0, 0}, +{ODC(2), RD, WO, 0, 0, 0, 0}, /* CVTDH */ +{2, RG, WL, 0, 0, 0, 0}, /* CVTGF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{2, RG, MQ, 0, 0, 0, 0}, /* ADDG2 */ +{3, RG, RG, WQ, 0, 0, 0}, /* ADDG3 */ +{2, RG, MQ, 0, 0, 0, 0}, /* SUBG2 */ +{3, RG, RG, WQ, 0, 0, 0}, /* SUBG3 */ +{2, RG, MQ, 0, 0, 0, 0}, /* MULG2 */ +{3, RG, RG, WQ, 0, 0, 0}, /* MULG3 */ +{2, RG, MQ, 0, 0, 0, 0}, /* DIVG2 */ +{3, RG, RG, WQ, 0, 0, 0}, /* DIVG3 */ +{2, RG, WB, 0, 0, 0, 0}, /* CVTGB */ +{2, RG, WW, 0, 0, 0, 0}, /* CVTGW */ +{2, RG, WL, 0, 0, 0, 0}, /* CVTGL */ +{2, RG, WL, 0, 0, 0, 0}, /* CVTRGL */ +{2, RB, WQ, 0, 0, 0, 0}, /* CVTBG */ +{2, RW, WQ, 0, 0, 0, 0}, /* CVTWG */ +{2, RL, WQ, 0, 0, 0, 0}, /* CVTLG */ +{4, RG, RG, MQ, BW, 0, 0}, /* ACBG */ +{2, RG, WQ, 0, 0, 0, 0}, /* MOVG */ +{2, RG, RG, 0, 0, 0, 0}, /* CMPG */ +{2, RG, WQ, 0, 0, 0, 0}, /* MNEGG */ +{1, RG, 0, 0, 0, 0, 0}, /* TSTG */ +{5, RG, RW, RG, WL, WQ, 0}, /* EMODG */ +{3, RG, RW, AB, 0, 0, 0}, /* POLYG */ +{ODC(2), RG, WO, 0, 0, 0, 0}, /* CVTGH */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{ODC(2), RH, MO, 0, 0, 0, 0}, /* ADDH2 */ +{ODC(3), RH, RH, WO, 0, 0, 0}, /* ADDH3 */ +{ODC(2), RH, MO, 0, 0, 0, 0}, /* SUBH2 */ +{ODC(3), RH, RH, WO, 0, 0, 0}, /* SUBH3 */ +{ODC(2), RH, MO, 0, 0, 0, 0}, /* MULH2 */ +{ODC(3), RH, RH, WO, 0, 0, 0}, /* MULH3 */ +{ODC(2), RH, MO, 0, 0, 0, 0}, /* DIVH2 */ +{ODC(3), RH, RH, WO, 0, 0, 0}, /* DIVH3 */ +{ODC(2), RH, WB, 0, 0, 0, 0}, /* CVTHB */ +{ODC(2), RH, WW, 0, 0, 0, 0}, /* CVTHW */ +{ODC(2), RH, WL, 0, 0, 0, 0}, /* CVTHL */ +{ODC(2), RH, WL, 0, 0, 0, 0}, /* CVTRHL */ +{ODC(2), RB, WO, 0, 0, 0, 0}, /* CVTBH */ +{ODC(2), RW, WO, 0, 0, 0, 0}, /* CVTWH */ +{ODC(2), RL, WO, 0, 0, 0, 0}, /* CVTLH */ +{ODC(4), RH, RH, MO, BW, 0, 0}, /* ACBH */ +{ODC(2), RH, RO, 0, 0, 0, 0}, /* MOVH */ +{ODC(2), RH, RH, 0, 0, 0, 0}, /* CMPH */ +{ODC(2), RH, WO, 0, 0, 0, 0}, /* MNEGH */ +{ODC(1), RH, 0, 0, 0, 0, 0}, /* TSTH */ +{ODC(5), RH, RW, RH, WL, WO, 0}, /* EMODH */ +{ODC(3), RH, RW, AB, 0, 0, 0}, /* POLYH */ +{ODC(2), RH, WQ, 0, 0, 0, 0}, /* CVTHG */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{0, 0, 0, 0, 0, 0, 0}, /* reserved */ +{ODC(1), WO, 0, 0, 0, 0, 0}, /* CLRO */ +{ODC(2), RO, RO, 0, 0, 0, 0}, /* MOVO */ +{ODC(2), AO, WL, 0, 0, 0, 0}, /* MOVAO*/ +{ODC(1), AO, 0, 0, 0, 0, 0}, /* PUSHAO*/ +{0, 0, 0, 0, 0, 0, 0}, /* 180-18F */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 190-19F */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{ODC(2), RF, WO, 0, 0, 0, 0}, /* CVTFH */ +{2, RF, WQ, 0, 0, 0, 0}, /* CVTFG */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 1A0-1AF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 1B0-1BF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 1C0-1CF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 1D0-1DF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 1E0-1EF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, /* 1F0-1FF */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{ODC(2), RH, WL, 0, 0, 0, 0}, /* CVTHF */ +{ODC(2), RH, WQ, 0, 0, 0, 0}, /* CVTHD */ +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0}, +{0, 0, 0, 0, 0, 0, 0} }; /* Opcode mnemonics table */ @@ -1425,6 +1425,7 @@ int32 i, lnt; t_value regnum; char *tptr; +*rn = 0; for (i = 15; i >= 0; i--) { /* chk named reg */ lnt = strlen (regname[i]); if (strncmp (cptr, regname[i], lnt) == 0) { diff --git a/VAX/vax_sysdev.c b/VAX/vax_sysdev.c index 27eae37c..885e64b8 100644 --- a/VAX/vax_sysdev.c +++ b/VAX/vax_sysdev.c @@ -409,8 +409,8 @@ DEVICE cso_dev = { */ DIB sysd_dib[] = { - 0, 0, NULL, NULL, - 2, IVCL (TMR0), 0, { &tmr0_inta, &tmr1_inta } + {0, 0, NULL, NULL, + 2, IVCL (TMR0), 0, { &tmr0_inta, &tmr1_inta } } }; UNIT sysd_unit[] = { diff --git a/Visual Studio Projects/Simh.sln b/Visual Studio Projects/Simh.sln index 9eb34c1c..af35fd58 100644 --- a/Visual Studio Projects/Simh.sln +++ b/Visual Studio Projects/Simh.sln @@ -59,7 +59,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lgp", "lgp.vcproj", "{927C3 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "I7094", "I7094.vcproj", "{927C3BD9-BD0C-4A23-99F9-DEAD402BEEF9}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SWTP", "SWTP.vcproj", "{0ABAF350-853E-4A8F-8435-B583E29FB78C}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "swtp6800mp-a", "swtp6800mp-a.vcproj", "{0ABAF350-853E-4A8F-8435-B583E29FB78C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "swtp6800mp-a2", "swtp6800mp-a2.vcproj", "{A0BAF350-853E-4A8F-8435-B583E29FFACE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildROMs", "BuildROMs.vcproj", "{D40F3AF1-EEE7-4432-9807-2AD287B490F8}" EndProject @@ -177,6 +179,10 @@ Global {0ABAF350-853E-4A8F-8435-B583E29FB78C}.Debug|Win32.Build.0 = Debug|Win32 {0ABAF350-853E-4A8F-8435-B583E29FB78C}.Release|Win32.ActiveCfg = Release|Win32 {0ABAF350-853E-4A8F-8435-B583E29FB78C}.Release|Win32.Build.0 = Release|Win32 + {A0BAF350-853E-4A8F-8435-B583E29FFACE}.Debug|Win32.ActiveCfg = Debug|Win32 + {A0BAF350-853E-4A8F-8435-B583E29FFACE}.Debug|Win32.Build.0 = Debug|Win32 + {A0BAF350-853E-4A8F-8435-B583E29FFACE}.Release|Win32.ActiveCfg = Release|Win32 + {A0BAF350-853E-4A8F-8435-B583E29FFACE}.Release|Win32.Build.0 = Release|Win32 {D40F3AF1-EEE7-4432-9807-2AD287B490F8}.Debug|Win32.ActiveCfg = Debug|Win32 {D40F3AF1-EEE7-4432-9807-2AD287B490F8}.Debug|Win32.Build.0 = Debug|Win32 {D40F3AF1-EEE7-4432-9807-2AD287B490F8}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/Visual Studio Projects/SWTP.vcproj b/Visual Studio Projects/swtp6800mp-a.vcproj similarity index 78% rename from Visual Studio Projects/SWTP.vcproj rename to Visual Studio Projects/swtp6800mp-a.vcproj index e573d26e..bf86be0d 100644 --- a/Visual Studio Projects/SWTP.vcproj +++ b/Visual Studio Projects/swtp6800mp-a.vcproj @@ -2,9 +2,9 @@ @@ -19,7 +19,7 @@ + + + + + + + + + + + + + + + + + + @@ -217,22 +253,6 @@ RelativePath="..\sim_tmxr.c" > - - - - - - - - diff --git a/Visual Studio Projects/swtp6800mp-a2.vcproj b/Visual Studio Projects/swtp6800mp-a2.vcproj new file mode 100644 index 00000000..b3230803 --- /dev/null +++ b/Visual Studio Projects/swtp6800mp-a2.vcproj @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/descrip.mms b/descrip.mms index e02bd0e3..9a5414b1 100644 --- a/descrip.mms +++ b/descrip.mms @@ -38,7 +38,8 @@ # PDP15 Just Build The DEC PDP-15. # S3 Just Build The IBM System 3. # SDS Just Build The SDS 940. -# SWTP Just Build The SWTP. +# SWTP6800MP-A Just Build The SWTP6800MP-A. +# SWTP6800MP-A2 Just Build The SWTP6800MP-A2. # VAX Just Build The DEC VAX. # VAX780 Just Build The DEC VAX780. # CLEAN Will Clean Files Back To Base Kit. @@ -573,13 +574,28 @@ SDS_SOURCE = $(SDS_DIR)SDS_CPU.C,$(SDS_DIR)SDS_DRM.C,$(SDS_DIR)SDS_DSK.C,\ SDS_OPTIONS = /INCL=($(SIMH_DIR),$(SDS_DIR))/DEF=($(CC_DEFS)) # -# SWTP 6800 +# SWTP 6800MP A # -SWTP_DIR = SYS$DISK:[.SWTP] -SWTP_LIB = $(LIB_DIR)SWTP-$(ARCH).OLB -SWTP_SOURCE = $(SWTP_DIR)SWTP_CPU.C,$(SWTP_DIR)SWTP_DSK.C,$(SWTP_DIR)SWTP_SIO.C,\ - $(SWTP_DIR)SWTP_SYS.C -SWTP_OPTIONS = /INCL=($(SIMH_DIR),$(SWTP_DIR))/DEF=($(CC_DEFS)) +SWTP6800MP_A_DIR = SYS$DISK:[.SWTP6800.SWTP6800] +SWTP6800MP_A_COMMON = SYS$DISK:[.SWTP6800.COMMON] +SWTP6800MP_A_LIB = $(LIB_DIR)SWTP6800MP-A-$(ARCH).OLB +SWTP6800MP_A_SOURCE = $(SWTP6800MP_A_COMMON)mp-a.c,$(SWTP6800MP_A_COMMON)m6800.c,\ + $(SWTP6800MP_A_COMMON)m6810.c,$(SWTP6800MP_A_COMMON)bootrom.c,$(SWTP6800MP_A_COMMON)dc-4.c,\ + $(SWTP6800MP_A_COMMON)mp-s.c,$(SWTP6800MP_A_DIR)mp-a_sys.c,$(SWTP6800MP_A_COMMON)mp-b2.c,\ + $(SWTP6800MP_A_COMMON)mp-8m.c +SWTP6800MP_A_OPTIONS = /INCL=($(SIMH_DIR),$(SWTP6800MP_A_DIR))/DEF=($(CC_DEFS)) + +# +# SWTP 6800MP A2 +# +SWTP6800MP_A2_DIR = SYS$DISK:[.SWTP6800.SWTP6800] +SWTP6800MP_A2_COMMON = SYS$DISK:[.SWTP6800.COMMON] +SWTP6800MP_A2_LIB = $(LIB_DIR)SWTP6800MP-A2-$(ARCH).OLB +SWTP6800MP_A2_SOURCE = $(SWTP6800MP_A2_COMMON)mp-a2.c,$(SWTP6800MP_A2_COMMON)m6800.c,\ + $(SWTP6800MP_A2_COMMON)m6810.c,$(SWTP6800MP_A2_COMMON)bootrom.c,$(SWTP6800MP_A2_COMMON)dc-4.c,\ + $(SWTP6800MP_A2_COMMON)mp-s.c,$(SWTP6800MP_A2_DIR)mp-a2_sys.c,$(SWTP6800MP_A2_COMMON)mp-b2.c,\ + $(SWTP6800MP_A2_COMMON)mp-8m.c,$(SWTP6800MP_A2_COMMON)i2716.c +SWTP6800MP_A2_OPTIONS = /INCL=($(SIMH_DIR),$(SWTP6800MP_A2_DIR))/DEF=($(CC_DEFS)) # # Digital Equipment VAX Simulator Definitions. @@ -657,14 +673,15 @@ I7094_OPTIONS = /INCL=($(SIMH_DIR),$(I7094_DIR))/DEF=($(CC_DEFS)) .IFDEF ALPHA_OR_IA64 ALL : ALTAIR ALTAIRZ80 ECLIPSE GRI LGP H316 HP2100 I1401 I1620 IBM1130 ID16 \ ID32 NOVA PDP1 PDP4 PDP7 PDP8 PDP9 PDP10 PDP11 PDP15 S3 VAX VAX780 SDS \ - I7094 SWTP + I7094 SWTP6800MP-A SWTP6800MP-A2 $! No further actions necessary .ELSE # # Else We Are On VAX And Build Everything EXCEPT the 64b simulators # ALL : ALTAIR ALTAIRZ80 GRI H316 HP2100 I1401 I1620 IBM1130 ID16 ID32 \ - NOVA PDP1 PDP4 PDP7 PDP8 PDP9 PDP11 PDP15 S3 VAX VAX780 SDS SWTP + NOVA PDP1 PDP4 PDP7 PDP8 PDP9 PDP11 PDP15 S3 VAX VAX780 SDS SWTP6800MP-A \ + SWTP6800MP-A2 $! No further actions necessary .ENDIF @@ -1036,11 +1053,22 @@ $(SDS_LIB) : $(SDS_SOURCE) $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* -$(SWTP_LIB) : $(SWTP_SOURCE) +$(SWTP6800MP_A_LIB) : $(SWTP6800MP_A_SOURCE) $! $! Building The $(SWTP_LIB) Library. $! - $ $(CC)$(SWTP_OPTIONS) - + $ $(CC)$(SWTP6800MP_A_OPTIONS) - + /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) + $ IF (F$SEARCH("$(MMS$TARGET)").EQS."") THEN - + LIBRARY/CREATE $(MMS$TARGET) + $ LIBRARY/REPLACE $(MMS$TARGET) $(BLD_DIR)*.OBJ + $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* + +$(SWTP6800MP_A2_LIB) : $(SWTP6800MP_A2_SOURCE) + $! + $! Building The $(SWTP_LIB) Library. + $! + $ $(CC)$(SWTP6800MP_A2_OPTIONS) - /OBJ=$(BLD_DIR) $(MMS$CHANGED_LIST) $ IF (F$SEARCH("$(MMS$TARGET)").EQS."") THEN - LIBRARY/CREATE $(MMS$TARGET) @@ -1435,16 +1463,28 @@ $(BIN_DIR)SDS-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_LIB) $(SDS_LIB) $(BLD_DIR)SCP.OBJ,$(SDS_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* -SWTP : $(BIN_DIR)SWTP-$(ARCH).EXE - $! SWTP done +SWTP6800MP-A : $(BIN_DIR)SWTP6800MP-A-$(ARCH).EXE + $! SWTP6800MP-A done -$(BIN_DIR)SWTP-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_LIB) $(SWTP_LIB) +$(BIN_DIR)SWTP6800MP-A-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_LIB) $(SWTP6800MP_A_LIB) $! - $! Building The $(BIN_DIR)SWTP-$(ARCH).EXE Simulator. + $! Building The $(BIN_DIR)SWTP6800MP-A-$(ARCH).EXE Simulator. $! $ $(CC)$(SWTP_OPTIONS)/OBJ=$(BLD_DIR) SCP.C - $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)SWTP-$(ARCH).EXE - - $(BLD_DIR)SCP.OBJ,$(SWTP_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY + $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)SWTP6800MP-A-$(ARCH).EXE - + $(BLD_DIR)SCP.OBJ,$(SWTP6800MP_A_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY + $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* + +SWTP6800MP-A2 : $(BIN_DIR)SWTP6800MP-A2-$(ARCH).EXE + $! SWTP6800MP-A2 done + +$(BIN_DIR)SWTP6800MP-A2-$(ARCH).EXE : $(SIMH_MAIN) $(SIMH_LIB) $(SWTP6800MP_A2_LIB) + $! + $! Building The $(BIN_DIR)SWTP6800MP-A2-$(ARCH).EXE Simulator. + $! + $ $(CC)$(SWTP_OPTIONS)/OBJ=$(BLD_DIR) SCP.C + $ LINK $(LINK_DEBUG)/EXE=$(BIN_DIR)SWTP6800MP-A2-$(ARCH).EXE - + $(BLD_DIR)SCP.OBJ,$(SWTP6800MP_A2_LIB)/LIBRARY,$(SIMH_LIB)/LIBRARY $ DELETE/NOLOG/NOCONFIRM $(BLD_DIR)*.OBJ;* VAX : $(BIN_DIR)VAX-$(ARCH).EXE diff --git a/doc/simh_doc.doc b/doc/simh_doc.doc index aaa7d367..2d69a511 100644 Binary files a/doc/simh_doc.doc and b/doc/simh_doc.doc differ diff --git a/doc/simh_faq.doc b/doc/simh_faq.doc index f20deb35..09e08c9f 100644 Binary files a/doc/simh_faq.doc and b/doc/simh_faq.doc differ diff --git a/makefile b/makefile index e10f058a..cd253954 100644 --- a/makefile +++ b/makefile @@ -29,6 +29,10 @@ # Asynchronous I/O support can be disabled if GNU make is invoked with # NOASYNCH=1 on the command line. # +# For linting (or other code analyzers) make may be invoked similar to: +# +# make GCC=cppcheck CC_OUTSPEC= LDFLAGS= CFLAGS_G="--enable=all --template=gcc" CC_STD=--std=c99 +# # CC Command (and platform available options). (Poor man's autoconf) # # building the pdp11, or any vax simulator could use networking support @@ -80,6 +84,10 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) ifeq (Darwin,$(OSTYPE)) OSNAME = OSX LIBEXT = dylib + # OSX's XCode gcc doesn't support LTO, but gcc built to explicitly enable it will work + ifeq (,$(shell $(GCC) -v /dev/null 2>&1 | grep '\-\-enable-lto')) + LTO_EXCLUDE_VERSIONS += $(GCC_VERSION) + endif else ifeq (Linux,$(OSTYPE)) LIBPATH := $(sort $(foreach lib,$(shell /sbin/ldconfig -p | grep ' => /' | sed 's/^.* => //'),$(dir $(lib)))) @@ -361,7 +369,9 @@ ifneq ($(DONT_USE_READER_THREAD),) NETWORK_OPT += -DDONT_USE_READER_THREAD endif -CC = $(GCC) -std=c99 -U__STRICT_ANSI__ $(CFLAGS_G) $(CFLAGS_O) -I . $(OS_CCDEFS) $(ROMS_OPT) +CC_STD = -std=c99 +CC_OUTSPEC = -o $@ +CC = $(GCC) $(CC_STD) -U__STRICT_ANSI__ $(CFLAGS_G) $(CFLAGS_O) -I . $(OS_CCDEFS) $(ROMS_OPT) LDFLAGS = $(OS_LDFLAGS) $(NETWORK_LDFLAGS) $(LDFLAGS_O) # @@ -588,10 +598,15 @@ SDS = ${SDSD}/sds_cpu.c ${SDSD}/sds_drm.c ${SDSD}/sds_dsk.c ${SDSD}/sds_io.c \ ${SDSD}/sds_stddev.c ${SDSD}/sds_sys.c SDS_OPT = -I ${SDSD} -SWTPD = swtp -SWTP = ${SWTPD}/swtp_cpu.c ${SWTPD}/swtp_dsk.c ${SWTPD}/swtp_sio.c \ - ${SWTPD}/swtp_sys.c -SWTP_OPT = -I ${SWTPD} +SWTP6800D = swtp6800/swtp6800 +SWTP6800C = swtp6800/common +SWTP6800MP-A = ${SWTP6800C}/mp-a.c ${SWTP6800C}/m6800.c ${SWTP6800C}/m6810.c \ + ${SWTP6800C}/bootrom.c ${SWTP6800C}/dc-4.c ${SWTP6800C}/mp-s.c ${SWTP6800D}/mp-a_sys.c \ + ${SWTP6800C}/mp-b2.c ${SWTP6800C}/mp-8m.c +SWTP6800MP-A2 = ${SWTP6800C}/mp-a2.c ${SWTP6800C}/m6800.c ${SWTP6800C}/m6810.c \ + ${SWTP6800C}/bootrom.c ${SWTP6800C}/dc-4.c ${SWTP6800C}/mp-s.c ${SWTP6800D}/mp-a2_sys.c \ + ${SWTP6800C}/mp-b2.c ${SWTP6800C}/mp-8m.c ${SWTP6800C}/i2716.c +SWTP6800_OPT = -I ${SWTP6800D} # @@ -600,7 +615,7 @@ SWTP_OPT = -I ${SWTPD} ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \ vax vax780 nova eclipse hp2100 i1401 i1620 s3 \ altair altairz80 gri i7094 ibm1130 id16 \ - id32 sds lgp h316 swtp + id32 sds lgp h316 swtp6800mp-a swtp6800mp-a2 all : ${ALL} @@ -615,9 +630,9 @@ endif ${BIN}BuildROMs${EXE} : ${MKDIRBIN} ifeq (agcc,$(findstring agcc,$(firstword $(CC)))) - gcc $(wordlist 2,1000,${CC}) sim_BuildROMs.c -o $@ + gcc $(wordlist 2,1000,${CC}) sim_BuildROMs.c $(CC_OUTSPEC) else - ${CC} sim_BuildROMs.c -o $@ + ${CC} sim_BuildROMs.c $(CC_OUTSPEC) endif ifeq ($(WIN32),) $@ @@ -637,160 +652,166 @@ pdp1 : ${BIN}pdp1${EXE} ${BIN}pdp1${EXE} : ${PDP1} ${SIM} ${MKDIRBIN} - ${CC} ${PDP1} ${SIM} ${PDP1_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP1} ${SIM} ${PDP1_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp4 : ${BIN}pdp4${EXE} ${BIN}pdp4${EXE} : ${PDP18B} ${SIM} ${MKDIRBIN} - ${CC} ${PDP18B} ${SIM} ${PDP4_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP18B} ${SIM} ${PDP4_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp7 : ${BIN}pdp7${EXE} ${BIN}pdp7${EXE} : ${PDP18B} ${SIM} ${MKDIRBIN} - ${CC} ${PDP18B} ${SIM} ${PDP7_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP18B} ${SIM} ${PDP7_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp8 : ${BIN}pdp8${EXE} ${BIN}pdp8${EXE} : ${PDP8} ${SIM} ${MKDIRBIN} - ${CC} ${PDP8} ${SIM} ${PDP8_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP8} ${SIM} ${PDP8_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp9 : ${BIN}pdp9${EXE} ${BIN}pdp9${EXE} : ${PDP18B} ${SIM} ${MKDIRBIN} - ${CC} ${PDP18B} ${SIM} ${PDP9_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP18B} ${SIM} ${PDP9_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp15 : ${BIN}pdp15${EXE} ${BIN}pdp15${EXE} : ${PDP18B} ${SIM} ${MKDIRBIN} - ${CC} ${PDP18B} ${SIM} ${PDP15_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP18B} ${SIM} ${PDP15_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp10 : ${BIN}pdp10${EXE} ${BIN}pdp10${EXE} : ${PDP10} ${SIM} ${MKDIRBIN} - ${CC} ${PDP10} ${SIM} ${PDP10_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP10} ${SIM} ${PDP10_OPT} $(CC_OUTSPEC) ${LDFLAGS} pdp11 : ${BIN}pdp11${EXE} ${BIN}pdp11${EXE} : ${PDP11} ${SIM} ${MKDIRBIN} - ${CC} ${PDP11} ${SIM} ${PDP11_OPT} -o $@ ${LDFLAGS} + ${CC} ${PDP11} ${SIM} ${PDP11_OPT} $(CC_OUTSPEC) ${LDFLAGS} vax : ${BIN}vax${EXE} ${BIN}vax${EXE} : ${VAX} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} - ${CC} ${VAX} ${SIM} ${VAX_OPT} -o $@ ${LDFLAGS} + ${CC} ${VAX} ${SIM} ${VAX_OPT} $(CC_OUTSPEC) ${LDFLAGS} vax780 : ${BIN}vax780${EXE} ${BIN}vax780${EXE} : ${VAX780} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} - ${CC} ${VAX780} ${SIM} ${VAX780_OPT} -o $@ ${LDFLAGS} + ${CC} ${VAX780} ${SIM} ${VAX780_OPT} $(CC_OUTSPEC) ${LDFLAGS} nova : ${BIN}nova${EXE} ${BIN}nova${EXE} : ${NOVA} ${SIM} ${MKDIRBIN} - ${CC} ${NOVA} ${SIM} ${NOVA_OPT} -o $@ ${LDFLAGS} + ${CC} ${NOVA} ${SIM} ${NOVA_OPT} $(CC_OUTSPEC) ${LDFLAGS} eclipse : ${BIN}eclipse${EXE} ${BIN}eclipse${EXE} : ${ECLIPSE} ${SIM} ${MKDIRBIN} - ${CC} ${ECLIPSE} ${SIM} ${ECLIPSE_OPT} -o $@ ${LDFLAGS} + ${CC} ${ECLIPSE} ${SIM} ${ECLIPSE_OPT} $(CC_OUTSPEC) ${LDFLAGS} h316 : ${BIN}h316${EXE} ${BIN}h316${EXE} : ${H316} ${SIM} ${MKDIRBIN} - ${CC} ${H316} ${SIM} ${H316_OPT} -o $@ ${LDFLAGS} + ${CC} ${H316} ${SIM} ${H316_OPT} $(CC_OUTSPEC) ${LDFLAGS} hp2100 : ${BIN}hp2100${EXE} ${BIN}hp2100${EXE} : ${HP2100} ${SIM} ${MKDIRBIN} - ${CC} ${HP2100} ${SIM} ${HP2100_OPT} -o $@ ${LDFLAGS} + ${CC} ${HP2100} ${SIM} ${HP2100_OPT} $(CC_OUTSPEC) ${LDFLAGS} i1401 : ${BIN}i1401${EXE} ${BIN}i1401${EXE} : ${I1401} ${SIM} ${MKDIRBIN} - ${CC} ${I1401} ${SIM} ${I1401_OPT} -o $@ ${LDFLAGS} + ${CC} ${I1401} ${SIM} ${I1401_OPT} $(CC_OUTSPEC) ${LDFLAGS} i1620 : ${BIN}i1620${EXE} ${BIN}i1620${EXE} : ${I1620} ${SIM} ${MKDIRBIN} - ${CC} ${I1620} ${SIM} ${I1620_OPT} -o $@ ${LDFLAGS} + ${CC} ${I1620} ${SIM} ${I1620_OPT} $(CC_OUTSPEC) ${LDFLAGS} i7094 : ${BIN}i7094${EXE} ${BIN}i7094${EXE} : ${I7094} ${SIM} ${MKDIRBIN} - ${CC} ${I7094} ${SIM} ${I7094_OPT} -o $@ ${LDFLAGS} + ${CC} ${I7094} ${SIM} ${I7094_OPT} $(CC_OUTSPEC) ${LDFLAGS} ibm1130 : ${BIN}ibm1130${EXE} ${BIN}ibm1130${EXE} : ${IBM1130} ${MKDIRBIN} - ${CC} ${IBM1130} ${SIM} ${IBM1130_OPT} -o $@ ${LDFLAGS} + ${CC} ${IBM1130} ${SIM} ${IBM1130_OPT} $(CC_OUTSPEC) ${LDFLAGS} s3 : ${BIN}s3${EXE} ${BIN}s3${EXE} : ${S3} ${SIM} ${MKDIRBIN} - ${CC} ${S3} ${SIM} ${S3_OPT} -o $@ ${LDFLAGS} + ${CC} ${S3} ${SIM} ${S3_OPT} $(CC_OUTSPEC) ${LDFLAGS} altair : ${BIN}altair${EXE} ${BIN}altair${EXE} : ${ALTAIR} ${SIM} ${MKDIRBIN} - ${CC} ${ALTAIR} ${SIM} ${ALTAIR_OPT} -o $@ ${LDFLAGS} + ${CC} ${ALTAIR} ${SIM} ${ALTAIR_OPT} $(CC_OUTSPEC) ${LDFLAGS} altairz80 : ${BIN}altairz80${EXE} ${BIN}altairz80${EXE} : ${ALTAIRZ80} ${SIM} ${MKDIRBIN} - ${CC} ${ALTAIRZ80} ${SIM} ${ALTAIRZ80_OPT} -o $@ ${LDFLAGS} + ${CC} ${ALTAIRZ80} ${SIM} ${ALTAIRZ80_OPT} $(CC_OUTSPEC) ${LDFLAGS} gri : ${BIN}gri${EXE} ${BIN}gri${EXE} : ${GRI} ${SIM} ${MKDIRBIN} - ${CC} ${GRI} ${SIM} ${GRI_OPT} -o $@ ${LDFLAGS} + ${CC} ${GRI} ${SIM} ${GRI_OPT} $(CC_OUTSPEC) ${LDFLAGS} lgp : ${BIN}lgp${EXE} ${BIN}lgp${EXE} : ${LGP} ${SIM} ${MKDIRBIN} - ${CC} ${LGP} ${SIM} ${LGP_OPT} -o $@ ${LDFLAGS} + ${CC} ${LGP} ${SIM} ${LGP_OPT} $(CC_OUTSPEC) ${LDFLAGS} id16 : ${BIN}id16${EXE} ${BIN}id16${EXE} : ${ID16} ${SIM} ${MKDIRBIN} - ${CC} ${ID16} ${SIM} ${ID16_OPT} -o $@ ${LDFLAGS} + ${CC} ${ID16} ${SIM} ${ID16_OPT} $(CC_OUTSPEC) ${LDFLAGS} id32 : ${BIN}id32${EXE} ${BIN}id32${EXE} : ${ID32} ${SIM} ${MKDIRBIN} - ${CC} ${ID32} ${SIM} ${ID32_OPT} -o $@ ${LDFLAGS} + ${CC} ${ID32} ${SIM} ${ID32_OPT} $(CC_OUTSPEC) ${LDFLAGS} sds : ${BIN}sds${EXE} ${BIN}sds${EXE} : ${SDS} ${SIM} ${MKDIRBIN} - ${CC} ${SDS} ${SIM} ${SDS_OPT} -o $@ ${LDFLAGS} + ${CC} ${SDS} ${SIM} ${SDS_OPT} $(CC_OUTSPEC) ${LDFLAGS} -swtp : ${BIN}swtp${EXE} +swtp6800mp-a : ${BIN}swtp6800mp-a${EXE} -${BIN}swtp${EXE} : ${SWTP} ${SIM} +${BIN}swtp6800mp-a${EXE} : ${SWTP6800MP-A} ${SIM} ${MKDIRBIN} - ${CC} ${SWTP} ${SIM} ${SWTP_OPT} -o $@ ${LDFLAGS} + ${CC} ${SWTP6800MP-A} ${SIM} ${SWTP6800_OPT} $(CC_OUTSPEC) ${LDFLAGS} + +swtp6800mp-a2 : ${BIN}swtp6800mp-a2${EXE} + +${BIN}swtp6800mp-a2${EXE} : ${SWTP6800MP-A2} ${SIM} + ${MKDIRBIN} + ${CC} ${SWTP6800MP-A2} ${SIM} ${SWTP6800_OPT} $(CC_OUTSPEC) ${LDFLAGS} diff --git a/scp.c b/scp.c index 37180e5a..d21d188c 100644 --- a/scp.c +++ b/scp.c @@ -415,8 +415,10 @@ t_stat shift_args (char *do_arg[], size_t arg_count); t_stat set_on (int32 flag, char *cptr); t_stat set_verify (int32 flag, char *cptr); t_stat set_message (int32 flag, char *cptr); +t_stat set_quiet (int32 flag, char *cptr); t_stat set_asynch (int32 flag, char *cptr); t_stat do_cmd_label (int32 flag, char *cptr, char *label); +void int_handler (int signal); /* Global data */ @@ -453,7 +455,7 @@ FILEREF *sim_log_ref = NULL; /* log file file referen FILE *sim_deb = NULL; /* debug file */ FILEREF *sim_deb_ref = NULL; /* debug file file reference */ static FILE *sim_gotofile; /* the currently open do file */ -static int32 sim_goto_line; /* the current line number in the currently open do file */ +static int32 sim_goto_line[MAX_DO_NEST_LVL+1]; /* the current line number in the currently open do file */ static int32 sim_do_echo = 0; /* the echo status of the currently open do file */ static int32 sim_show_message = 1; /* the message display status of the currently open do file */ static int32 sim_on_inherit = 0; /* the inherit status of on state and conditions when executing do files */ @@ -462,6 +464,7 @@ int32 sim_do_depth = 0; static int32 sim_on_check[MAX_DO_NEST_LVL+1]; static char *sim_on_actions[MAX_DO_NEST_LVL+1][SCPE_MAX_ERR+1]; static char sim_do_filename[MAX_DO_NEST_LVL+1][CBUFSIZE]; +static char *sim_do_label[MAX_DO_NEST_LVL+1]; static t_stat sim_last_cmd_stat; /* Command Status */ @@ -674,9 +677,13 @@ static CTAB cmd_table[] = { "set on inherit enables inheritance of ON state and actions into do command files\n" "set on noinherit disables inheritance of ON state and actions into do command files\n" "set verify re-enables display of command file processed commands\n" + "set verbose re-enables display of command file processed commands\n" "set noverify disables display of command file processed commands\n" + "set noverbose disables display of command file processed commands\n" "set message re-enables display of command file error messages\n" "set nomessage disables display of command file error messages\n" + "set quiet disables suppression of some output and messages\n" + "set noquiet re-enables suppression of some output and messages\n" "set OCT|DEC|HEX set device display radix\n" "set ENABLED enable device\n" "set DISABLED disable device\n" @@ -709,7 +716,7 @@ static CTAB cmd_table[] = { "sh{ow} {arg,...} show unit parameters\n" "sh{ow} on show on condition actions\n" }, { "DO", &do_cmd, 1, - "do {-V} {-O} {-E} {arg,arg...}\b" + "do {-V} {-O} {-E} {-Q} {arg,arg...}\b" " process command file\n" }, { "GOTO", &goto_cmd, 1, "goto