From 6b361a9fafd52e197bccc64b6b96b81e3050ea10 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 4 Jun 2018 10:43:00 -0700 Subject: [PATCH] PDP11, PDP15, UC15: Merge simh v3.10 functionality from Supnik-Current branch --- PDP11/pdp11_cpu.c | 4 - PDP11/pdp11_sys.c | 7 +- PDP11/pdp11_uc15.c | 542 +++++++++++++++++++++++++++ PDP18B/pdp18b_rf.c | 6 +- PDP18B/pdp18b_sys.c | 3 + PDP18B/uc15_defs.h | 59 +++ README.md | 4 +- Visual Studio Projects/H316.vcproj | 6 + Visual Studio Projects/HP2100.vcproj | 6 + Visual Studio Projects/Simh.sln | 9 + Visual Studio Projects/UC15.vcproj | 370 ++++++++++++++++++ Visual Studio Projects/VAX.vcproj | 6 + descrip.mms | 6 +- doc/h316_doc.doc | Bin 74752 -> 77312 bytes doc/i1620_doc.doc | Bin 161280 -> 166912 bytes doc/pdp11_doc.doc | Bin 189952 -> 198144 bytes doc/pdp18b_doc.doc | Bin 111104 -> 112128 bytes doc/simh_doc.doc | Bin 322560 -> 323072 bytes doc/simh_faq.doc | Bin 100352 -> 100864 bytes makefile | 42 ++- 20 files changed, 1048 insertions(+), 22 deletions(-) create mode 100644 PDP11/pdp11_uc15.c create mode 100644 PDP18B/uc15_defs.h create mode 100644 Visual Studio Projects/UC15.vcproj diff --git a/PDP11/pdp11_cpu.c b/PDP11/pdp11_cpu.c index ec32c415..08de0f5e 100644 --- a/PDP11/pdp11_cpu.c +++ b/PDP11/pdp11_cpu.c @@ -650,12 +650,8 @@ MTAB cpu_mod[] = { { MTAB_XTD|MTAB_VDV, 0, NULL, "NOAUTOCONFIG", &set_autocon, NULL }, #else - { MTAB_XTD|MTAB_VDV, MOD_1104, NULL, "11/04", &cpu_set_model }, - { MTAB_XTD|MTAB_VDV, MOD_1105, NULL, "11/05", &cpu_set_model }, - { MTAB_XTD|MTAB_VDV, MOD_1120, NULL, "11/20", &cpu_set_model }, { UNIT_MSIZE, 16384, NULL, "16K", &cpu_set_size}, { UNIT_MSIZE, 24576, NULL, "24K", &cpu_set_size}, - { UNIT_MSIZE, 32768, NULL, "32K", &cpu_set_size}, #endif { MTAB_XTD|MTAB_VDV|MTAB_NMO, 0, "IOSPACE", NULL, NULL, &show_iospace }, diff --git a/PDP11/pdp11_sys.c b/PDP11/pdp11_sys.c index 36ec9abb..66c31b05 100644 --- a/PDP11/pdp11_sys.c +++ b/PDP11/pdp11_sys.c @@ -1,6 +1,6 @@ /* pdp11_sys.c: PDP-11 simulator interface - Copyright (c) 1993-2016, Robert M Supnik + Copyright (c) 1993-2018, 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. + 23-May-18 RMS Changed UC15 simulator name 14-Mar-16 RMS Added UC15 support 02-Sep-13 RMS Added third Massbus, RS03/RS04 29-Apr-12 RMS Fixed compiler warning (Mark Pizzolato) @@ -128,7 +129,11 @@ extern int32 saved_PC; sim_load binary loader */ +#if !defined (UC15) char sim_name[] = "PDP-11"; +#else +char sim_name[] = "UC-15"; +#endif REG *sim_PC = &cpu_reg[0]; diff --git a/PDP11/pdp11_uc15.c b/PDP11/pdp11_uc15.c new file mode 100644 index 00000000..725bc072 --- /dev/null +++ b/PDP11/pdp11_uc15.c @@ -0,0 +1,542 @@ +/* pdp11_uc15.c: UC15 interface simulator + + Copyright (c) 2016, 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"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert M Supnik shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik. + + uca DR11 #1 + ucb DR11 #2 + + The DR11Cs provide control communications with the DR15C in the PDP15. + + The PDP15 and UC15 use a master/slave communications protocol. + - The PDP15 initiates a request to the PDP11 by writing TCBP and + clearing TCBP acknowledge. This alerts/interrupts the PDP11. + - The PDP11 reads TCBP. This sets TCBP acknowledge, which is + not wired to interrupt on the PDP15. Note that TCBP has been + converted from a word address to a byte address by the way + the two systems are wired together. + - The PDP11 processes the request. + - The PDP11 signals completion by writing a vector into one of + four API request levels. + - The PDP15 is interrupted, and the request is considered complete. + + The UC15 must "call out" to the PDP15 to signal two conditions: + - the TCB pointer has been read + - an API interrupt is requested + + The DR15 must "call in" to the UC15 for two reasons: + - the TCBP has been written + - API interrupt status has changed + + The DR15 and UC15 use a shared memory section and ATOMIC operations + to communicate. Shared state is maintained in shared memory, with one + side having read/write access, the other read-only. Actions are + implemented by setting signals with an atomic compare-and-swap. + The signals may be polled with non-atomic operations but must be + verified with an atomic compare-and-swap. +*/ + +#include "pdp11_defs.h" + +#include "sim_fio.h" +#include "uc15_defs.h" + +/* Constants */ + +/* DR11 #1 */ + +#define UCAC_APID (CSR_DONE) +#define UCAB_V_TCBHI 0 +#define UCAB_M_TCBHI 03 +#define UCAB_API2 0000100 +#define UCAB_API0 0000200 +#define UCAB_V_LOCAL 8 +#define UCAB_M_LOCAL 07 +#define UCAB_API3 0040000 +#define UCAB_API1 0100000 + +/* DR11 #2 */ + +#define UCBC_NTCB (CSR_DONE) + +/* Declarations */ + +extern int32 int_req[IPL_HLVL]; +extern UNIT cpu_unit; +extern uint16 *M; + +int32 uca_csr = 0; /* DR11C #1 CSR */ +int32 uca_buf = 0; /* DR11C #1 input buffer */ +int32 ucb_csr = 0; +int32 ucb_buf = 0; +int32 uc15_poll = 3; /* polling interval */ +SHMEM *uc15_shmem = NULL; /* shared state identifier */ +int32 *uc15_shstate = NULL; /* shared state base */ +SHMEM *pdp15_shmem = NULL; /* PDP15 mem identifier */ +int32 *pdp15_mem = NULL; +uint32 uc15_memsize = 0; + +t_stat uca_rd (int32 *data, int32 PA, int32 access); +t_stat uca_wr (int32 data, int32 PA, int32 access); +t_stat ucb_rd (int32 *data, int32 PA, int32 access); +t_stat ucb_wr (int32 data, int32 PA, int32 access); +t_stat uc15_reset (DEVICE *dptr); +t_stat uc15_svc (UNIT *uptr); +t_stat uc15_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw); +t_stat uc15_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw); +t_stat uc15_attach (UNIT *uptr, CONST char *cptr); +t_stat uc15_detach (UNIT *uptr); + +void uc15_set_memsize (void); +int32 uc15_get_uca_buf (void); +t_stat uc15_api_req (int32 lvl, int32 vec); + +/* UC15 data structures + + uca_dev, ucb_dev UC15 device descriptor + uca_unit, ucb_unit UC15 unit descriptor + uca_reg, ucb reg UC15 register list + + The two DR11Cs must be separate devices because they interrupt at + different IPLs and must have different DIBs! +*/ + +DIB uca_dib = { + IOBA_UCA, IOLN_UCA, &uca_rd, &uca_wr, + 1, IVCL (UCA), VEC_UCA, { NULL } + }; + +UNIT uca_unit = { UDATA (&uc15_svc, 0, UNIT_ATTABLE) }; + +REG uca_reg[] = { + { ORDATA (CSR, uca_csr, 16) }, + { ORDATA (BUF, uca_buf, 16) }, + { FLDATA (APID, uca_csr, CSR_V_DONE) }, + { FLDATA (IE, uca_csr, CSR_V_IE) }, + { DRDATA (POLL, uc15_poll, 10), REG_NZ }, + { DRDATA (UCMEMSIZE, uc15_memsize, 18), REG_HRO }, + { NULL } + }; + +MTAB uc15_mod[] = { + { MTAB_XTD|MTAB_VDV, 006, "ADDRESS", "ADDRESS", + NULL, &show_addr, NULL }, + { MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR", + NULL, &show_vec, NULL }, + { 0 } + }; + +DEVICE uca_dev = { + "UCA", &uca_unit, uca_reg, uc15_mod, + 1, 8, 10, 1, 8, 32, + &uc15_ex, &uc15_dep, &uc15_reset, + NULL, &uc15_attach, &uc15_detach, + &uca_dib, DEV_DISABLE | DEV_DEBUG + }; + +DIB ucb_dib = { + IOBA_UCB, IOLN_UCB, &ucb_rd, &ucb_wr, + 1, IVCL (UCB), VEC_UCB, { NULL } + }; + +UNIT ucb_unit = { UDATA (NULL, 0, 0) }; + +REG ucb_reg[] = { + { ORDATA (CSR, ucb_csr, 16) }, + { ORDATA (BUF, ucb_buf, 16) }, + { FLDATA (NTCB, ucb_csr, CSR_V_DONE) }, + { FLDATA (IE, ucb_csr, CSR_V_IE) }, + { NULL } + }; + +DEVICE ucb_dev = { + "UCB", &ucb_unit, ucb_reg, uc15_mod, + 1, 8, 18, 1, 8, 18, + NULL, NULL, NULL, + NULL, NULL, NULL, + &ucb_dib, DEV_DISABLE + }; + +/* IO routines */ + +/* DR11 #1 */ + +t_stat uca_rd (int32 *data, int32 PA, int32 access) +{ +switch ((PA >> 1) & 03) { /* case on PA<2:1> */ + +case 0: /* CSR */ + *data = uca_csr; + return SCPE_OK; + +case 1: /* output buffers */ + return SCPE_OK; + +case 2: /* input buffer */ + *data = uc15_get_uca_buf (); /* assemble buffer */ + return SCPE_OK; + } + +return SCPE_NXM; +} + +t_stat uca_wr (int32 data, int32 PA, int32 access) +{ +switch ((PA >> 1) & 03) { /* case on PA<2:1> */ + +case 0: /* CSR */ + if (PA & 1) + return SCPE_OK; + if ((data & CSR_IE) == 0) + CLR_INT (UCA); + else if ((uca_csr & (UCAC_APID + CSR_IE)) == UCAC_APID) + SET_INT (UCA); + uca_csr = (uca_csr & ~CSR_IE) | (data & CSR_IE); + return SCPE_OK; + +case 1: /* output buffer */ + if (PA & 1) /* odd byte? API 1 */ + uc15_api_req (1, data & 0377); + else { + if (access == WRITE) /* full word? API 1 */ + uc15_api_req (1, (data >> 8) & 0377); + uc15_api_req (0, data & 0377); /* API 0 */ + } + return SCPE_OK; + +case 2: + return SCPE_OK; + } + +return SCPE_NXM; +} + +t_stat ucb_rd (int32 *data, int32 PA, int32 access) +{ +switch ((PA >> 1) & 03) { /* case on PA<2:1> */ + +case 0: /* CSR */ + *data = ucb_csr; + return SCPE_OK; + +case 1: /* output buffers */ + return SCPE_OK; + +case 2: /* input buffer */ + *data = ucb_buf = (UC15_SHARED_RD (UC15_TCBP) << 1) & 0177777; + ucb_csr &= ~UCBC_NTCB; /* clear TCBP rdy */ + CLR_INT (UCB); /* clear int */ + UC15_ATOMIC_CAS (UC15_TCBP_RD, 0, 1); /* send ACK */ + if (DEBUG_PRS (uca_dev)) { + uint32 apiv, apil, fnc, tsk, pa; + t_bool spl; + + pa = ucb_buf + MEMSIZE; + apiv = RdMemB (pa); + apil = RdMemB (pa + 1); + fnc = RdMemB (pa + 2); + spl = (RdMemB (pa + 3) & 0200) != 0; + tsk = RdMemB (pa + 3) & 0177; + fprintf (sim_deb, ">> UC15: TCB rcvd, API = %o/%d, fnc = %o, %s task = %o, eventvar = %o\n", + apiv, apil, fnc, spl? "Spooled": "Unspooled", tsk, RdMemW (pa + 4)); + fprintf (sim_deb, "Additional parameters = %o %o %o %o %o\n", + RdMemW (pa + 6), RdMemW (pa + 8), RdMemW (pa + 10), RdMemW (pa + 12), RdMemW (pa + 14)); + } + return SCPE_OK; + } + +return SCPE_NXM; +} + +t_stat ucb_wr (int32 data, int32 PA, int32 access) +{ +switch ((PA >> 1) & 03) { /* case on PA<2:1> */ + +case 0: /* CSR */ + if (PA & 1) + return SCPE_OK; + if ((data & CSR_IE) == 0) /* IE = 0? */ + CLR_INT (UCB); + else if ((ucb_csr & (UCBC_NTCB + CSR_IE)) == UCBC_NTCB) + SET_INT (UCB); + ucb_csr = (ucb_csr & ~CSR_IE) | (data & CSR_IE); + return SCPE_OK; + +case 1: /* output buffer */ + if (PA & 1) /* odd byte? API 3*/ + uc15_api_req (3, data & 0377); + else { + if (access == WRITE) /* full word? API 3 */ + uc15_api_req (3, (data >> 8) & 0377); + uc15_api_req (2, data & 0377); /* API 2 */ + } + return SCPE_OK; + +case 2: + return SCPE_OK; + } + +return SCPE_NXM; +} + +/* Request PDP15 to take an API interrupt */ + +t_stat uc15_api_req (int32 lvl, int32 vec) +{ +UC15_SHARED_WR (UC15_API_VEC + (lvl * UC15_API_VEC_MUL), vec); +UC15_ATOMIC_CAS (UC15_API_REQ + (lvl * UC15_API_VEC_MUL), 0, 1); +if (DEBUG_PRS (uca_dev)) + fprintf (sim_deb, ">>UC15: API request sent, API = %o/%d\n", + vec, lvl); +return SCPE_OK; +} + +/* Routine to poll for state changes from PDP15 */ + +t_stat uc15_svc (UNIT *uptr) +{ +uint32 t; + +t = UC15_SHARED_RD (UC15_TCBP_WR); /* TCBP written? */ +if ((t != 0) && UC15_ATOMIC_CAS (UC15_TCBP_WR, 1, 0)) { /* for real? */ + ucb_csr |= UCBC_NTCB; /* set new TCB flag */ + if (ucb_csr & CSR_IE) + SET_INT (UCB); + uc15_set_memsize (); /* update mem size */ + } +t = UC15_SHARED_RD (UC15_API_UPD); /* API update? */ +if ((t != 0) && UC15_ATOMIC_CAS (UC15_API_UPD, 1, 0)) { /* for real? */ + uc15_get_uca_buf (); /* update UCA buf */ + } +sim_activate (uptr, uc15_poll); /* next poll */ +return SCPE_OK; +} + +/* Routine to assemble/update uca_buf + + Note that the PDP-15 and PDP-11 have opposite interpretations of + API requests. On the PDP-15, a "1" indicates an active request. + On the PDP-11, a "1" indicates request done (API inactive). +*/ + +int32 uc15_get_uca_buf (void) +{ +int32 i, t; +static int32 ucab_api[4] = + { UCAB_API0, UCAB_API1, UCAB_API2, UCAB_API3 }; + +t = UC15_SHARED_RD (UC15_TCBP); /* get TCB ptr */ +uca_buf = (t >> 15) & UCAB_M_TCBHI; /* PDP15 bits<1:2> */ +t = cpu_unit.capac >> 13; /* local mem in 4KW */ +uca_buf |= ((t & UCAB_M_LOCAL) << UCAB_V_LOCAL); +t = UC15_SHARED_RD (UC15_API_SUMM); /* get API summary */ +for (i = 0; i < 4; i++) { /* check 0..3 */ + if (((t >> i) & 1) == 0) /* level inactive? */ + uca_buf |= ucab_api[i]; /* set status bit */ + } +if ((t == 0) && ((uca_csr & UCAC_APID) == 0)) { /* API req now 0? */ + uca_csr |= UCAC_APID; /* set flag */ + if ((uca_csr & CSR_IE) != 0) /* if ie, req int */ + SET_INT (UCA); + } +return uca_buf; +} + +/* Routine to set overall memory limit for UC15 checking */ + +void uc15_set_memsize (void) +{ +uint32 t = UC15_SHARED_RD (UC15_PDP15MEM); /* get PDP15 memory size */ +if (t == 0) /* PDP15 not running? */ + t = PDP15_MAXMEM * 2; /* max mem in bytes */ +uc15_memsize = t + MEMSIZE; /* shared + local mem */ +if (uc15_memsize > (UNIMEMSIZE - IOPAGESIZE)) /* more than 18b? */ + uc15_memsize = UNIMEMSIZE - IOPAGESIZE; /* limit */ +return; +} + +/* Reset routine + + Aside from performing a device reset, this routine sets up shared + UC15 state and shared PDP15 main memory. It also reads the size + of PDP15 main memory (in PDP11 bytes) from the shared state region. +*/ + +t_stat uc15_reset (DEVICE *dptr) +{ +t_stat r; +void *basead; + +uca_csr = 0; +uca_buf = 0; +ucb_csr = 0; +ucb_buf = 0; +CLR_INT (UCA); +CLR_INT (UCB); +if (uc15_shmem == NULL) { /* allocate shared state */ + r = sim_shmem_open ("UC15SharedState", UC15_STATE_SIZE, &uc15_shmem, &basead); + if (r != SCPE_OK) + return r; + uc15_shstate = (int32 *) basead; + } +if (pdp15_shmem == NULL) { /* allocate shared memory */ + r = sim_shmem_open ("PDP15MainMemory", PDP15_MAXMEM * sizeof (int32), &pdp15_shmem, &basead); + if (r != SCPE_OK) + return r; + pdp15_mem = (int32 *) basead; + } +uc15_set_memsize (); +sim_activate (dptr->units, uc15_poll); /* start polling */ +return SCPE_OK; +} + +/* Shared state ex/mod routines for debug */ + +t_stat uc15_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw) +{ +if (addr >= UC15_STATE_SIZE) + return SCPE_NXM; +if (vptr != NULL) + *vptr = UC15_SHARED_RD ((int32) addr); +return SCPE_OK; +} + +t_stat uc15_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw) +{ +if (addr >= UC15_STATE_SIZE) + return SCPE_NXM; +UC15_SHARED_WR ((int32) addr, (int32) val); +return SCPE_OK; +} + +/* Fake attach routine to kill attach attempts */ + +t_stat uc15_attach (UNIT *uptr, CONST char *cptr) +{ +return SCPE_NOFNC; +} + +/* Shutdown detach routine to release shared memories */ + +t_stat uc15_detach (UNIT *uptr) +{ +if ((sim_switches & SIM_SW_SHUT) == 0) /* only if shutdown */ + return SCPE_NOFNC; +sim_shmem_close (uc15_shmem); /* release shared state */ +sim_shmem_close (pdp15_shmem); /* release shared mem */ +return SCPE_OK; +} + +/* Physical read/write memory routines + Used by CPU and IO devices + Physical address is known to be legal + We can use MEMSIZE rather than cpu_memsize because configurations + were limited to 16KW of local memory + 8b and 16b writes clear the upper 2b of PDP-15 memory +*/ + +int32 uc15_RdMemW (int32 pa) +{ +if (((uint32) pa) < MEMSIZE) + return M[pa >> 1]; +else { + pa = pa - MEMSIZE; + return (pdp15_mem[pa >> 1] & DMASK); + } +} + +int32 uc15_RdMemB (int32 pa) +{ +if (((uint32) pa) < MEMSIZE) + return ((pa & 1)? (M[pa >> 1] >> 8): (M[pa >> 1] & 0377)); +else { + pa = pa - MEMSIZE; + return ((pa & 1)? (pdp15_mem[pa >> 1] >> 8): (pdp15_mem[pa >> 1] & 0377)); + } +} + +void uc15_WrMemW (int32 pa, int32 d) +{ +if (((uint32) pa) < MEMSIZE) + M[pa >> 1] = d; +else { + pa = pa - MEMSIZE; + pdp15_mem[pa >> 1] = d & DMASK; + } +return; +} + +void uc15_WrMemB (int32 pa, int32 d) +{ +if (((uint32) pa) < MEMSIZE) + M[pa >> 1] = (pa & 1)? + ((M[pa >> 1] & 0377) | ((d & 0377) << 8)): \ + ((M[pa >> 1] & ~0377) | (d & 0377)); +else { + pa = pa - MEMSIZE; + pdp15_mem[pa >> 1] = (pa & 1)? + ((pdp15_mem[pa >> 1] & 0377) | ((d & 0377) << 8)): \ + ((pdp15_mem[pa >> 1] & ~0377) | (d & 0377)); + } +return; +} + +/* 18b DMA routines - physical only */ + +int32 Map_Read18 (uint32 ba, int32 bc, uint32 *buf) +{ +uint32 alim, lim; + +ba = (ba & UNIMASK) & ~01; /* trim, align addr */ +lim = ba + (bc & ~01); +if (lim < uc15_memsize) /* end ok? */ + alim = lim; +else if (ba < uc15_memsize) /* no, strt ok? */ + alim = uc15_memsize; +else return bc; /* no, err */ +for ( ; ba < alim; ba = ba + 2) { /* by 18b words */ + if (ba < MEMSIZE) + *buf++ = M[ba >> 1]; + else *buf++ = pdp15_mem[(ba - MEMSIZE) >> 1] & 0777777; + } +return (lim - alim); +} + +int32 Map_Write18 (uint32 ba, int32 bc, uint32 *buf) +{ +uint32 alim, lim; + +ba = (ba & UNIMASK) & ~01; /* trim, align addr */ +lim = ba + (bc & ~01); +if (lim < uc15_memsize) /* end ok? */ + alim = lim; +else if (ba < uc15_memsize) /* no, strt ok? */ + alim = uc15_memsize; +else return bc; /* no, err */ +for ( ; ba < alim; ba = ba + 2) { /* by 18 bit words */ + if (ba < MEMSIZE) + M[ba >> 1] = *buf++ & DMASK; + else pdp15_mem[(ba - MEMSIZE) >> 1] = *buf++ & 0777777; + } +return (lim - alim); +} diff --git a/PDP18B/pdp18b_rf.c b/PDP18B/pdp18b_rf.c index 448ddc3f..33ece3d7 100644 --- a/PDP18B/pdp18b_rf.c +++ b/PDP18B/pdp18b_rf.c @@ -129,7 +129,7 @@ int32 rf72 (int32 dev, int32 pulse, int32 dat); int32 rf_iors (void); t_stat rf_svc (UNIT *uptr); t_stat rf_reset (DEVICE *dptr); -int32 rf_updsta (int32 news); +int32 rf_updsta (int32 newst); t_stat rf_attach (UNIT *uptr, CONST char *cptr); t_stat rf_set_size (UNIT *uptr, int32 val, CONST char *cptr, void *desc); @@ -315,9 +315,9 @@ return SCPE_OK; /* Update status */ -int32 rf_updsta (int32 news) +int32 rf_updsta (int32 newst) { -rf_sta = (rf_sta | news) & ~(RFS_ERR | RFS_CLR); +rf_sta = (rf_sta | newst) & ~(RFS_ERR | RFS_CLR); if (rf_sta & RFS_EFLGS) rf_sta = rf_sta | RFS_ERR; if ((rf_sta & (RFS_ERR | RFS_DON)) && (rf_sta & RFS_IE)) diff --git a/PDP18B/pdp18b_sys.c b/PDP18B/pdp18b_sys.c index 535681b5..b611843d 100644 --- a/PDP18B/pdp18b_sys.c +++ b/PDP18B/pdp18b_sys.c @@ -99,6 +99,9 @@ extern DEVICE mt_dev; extern DEVICE tti1_dev, tto1_dev; extern UNIT tti1_unit, tto1_unit; #endif +#if defined (GRAPHICS2) +extern DEVICE g2out_dev, g2in_dev; +#endif #if defined (UC15) extern DEVICE dr15_dev; #endif diff --git a/PDP18B/uc15_defs.h b/PDP18B/uc15_defs.h new file mode 100644 index 00000000..090077e4 --- /dev/null +++ b/PDP18B/uc15_defs.h @@ -0,0 +1,59 @@ +/* uc15_defs.h: PDP15/UC15 shared state definitions + + Copyright (c) 2016, 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"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert M Supnik shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik. +*/ + +#ifndef UC15_DEFS_H_ +#define UC15_DEFS_H_ 0 + +#define UC15_STATE_SIZE 1024 /* size (int32's) */ + +/* The shared state region is divided into four quadrants + + 000-255 PDP-15 read/write, PDP-11 read only, data + 255-511 PDP-11 read/write, PDP-15 read only, data + 768-1023 Event signals (locks), read/write +*/ + +#define PDP15_MAXMEM 0400000 /* PDP15 max mem, words */ + +#define UC15_PDP15MEM 0040 /* PDP15 mem size, bytes */ +#define UC15_TCBP 0100 /* TCB pointer */ +#define UC15_API_SUMM 0140 /* API summary */ + +#define UC15_API_VEC 0600 /* vectors[4] */ +#define UC15_API_VEC_MUL 010 /* vector spread factor */ + +#define UC15_TCBP_WR 01000 /* TCBP write signal */ +#define UC15_TCBP_RD 01040 /* TCBP read signal */ +#define UC15_API_UPD 01100 /* API summ update */ +#define UC15_API_REQ 01200 /* +1 for API req[4] */ + +#define UC15_SHARED_RD(p) (*(uc15_shstate + (p))) +#define UC15_SHARED_WR(p,d) *(uc15_shstate + (p)) = (d) + +#define UC15_ATOMIC_CAS(p,o,n) sim_shmem_atomic_cas ((uc15_shstate + (p)), o, n) +#define UC15_ATOMIC_ADD(p,a) sim_shmem_atomic_add ((uc15_shstate + (p)), (a)) + +#endif diff --git a/README.md b/README.md index 0f3d5286..d36f3037 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ #### Updated HP2100 simulator from Dave Bryan. -#### Beta Sigma 5, 6 & 7 simulator from Bob Supnik +#### Sigma 5, 6 & 7 simulator from Bob Supnik #### Beta SAGE-II and PDQ-3 simulators from Holger Veit @@ -540,7 +540,7 @@ package must be available while building your simulator. The simh-vms-pcap.zip file can be downloaded from https://github.com/simh/simh/archive/vms-pcap.zip This link will return a file called simh-vms-pcap.zip which should be unpacked as follows: - $ unzip -aa simh-vms-pcap.zip + $ unzip -a simh-vms-pcap.zip $ rename [.simh-vms-pcap]pcap-vms.dir [] The PCAP-VMS components are presumed (by the descript.mms file) to be diff --git a/Visual Studio Projects/H316.vcproj b/Visual Studio Projects/H316.vcproj index 300bf8eb..a2e448e1 100644 --- a/Visual Studio Projects/H316.vcproj +++ b/Visual Studio Projects/H316.vcproj @@ -35,6 +35,9 @@ + @@ -116,6 +119,9 @@ + diff --git a/Visual Studio Projects/HP2100.vcproj b/Visual Studio Projects/HP2100.vcproj index a21e1cf6..f511b34e 100644 --- a/Visual Studio Projects/HP2100.vcproj +++ b/Visual Studio Projects/HP2100.vcproj @@ -35,6 +35,9 @@ + @@ -116,6 +119,9 @@ + diff --git a/Visual Studio Projects/Simh.sln b/Visual Studio Projects/Simh.sln index 69f7b2ec..4ff9b618 100644 --- a/Visual Studio Projects/Simh.sln +++ b/Visual Studio Projects/Simh.sln @@ -300,6 +300,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "I650", "I650.vcproj", "{95B {D40F3AF1-EEE7-4432-9807-2AD287B490F8} = {D40F3AF1-EEE7-4432-9807-2AD287B490F8} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UC15", "UC15.vcproj", "{B5E9D32E-53F9-4C9B-B037-5A2D34E370CF}" + ProjectSection(ProjectDependencies) = postProject + {D40F3AF1-EEE7-4432-9807-2AD287B490F8} = {D40F3AF1-EEE7-4432-9807-2AD287B490F8} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -550,6 +555,10 @@ Global {95B64699-4B93-4BFE-9024-0A2302D9B71A}.Debug|Win32.Build.0 = Debug|Win32 {95B64699-4B93-4BFE-9024-0A2302D9B71A}.Release|Win32.ActiveCfg = Release|Win32 {95B64699-4B93-4BFE-9024-0A2302D9B71A}.Release|Win32.Build.0 = Release|Win32 + {B5E9D32E-53F9-4C9B-B037-5A2D34E370CF}.Debug|Win32.ActiveCfg = Debug|Win32 + {B5E9D32E-53F9-4C9B-B037-5A2D34E370CF}.Debug|Win32.Build.0 = Debug|Win32 + {B5E9D32E-53F9-4C9B-B037-5A2D34E370CF}.Release|Win32.ActiveCfg = Release|Win32 + {B5E9D32E-53F9-4C9B-B037-5A2D34E370CF}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Visual Studio Projects/UC15.vcproj b/Visual Studio Projects/UC15.vcproj new file mode 100644 index 00000000..93dbaee4 --- /dev/null +++ b/Visual Studio Projects/UC15.vcproj @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Visual Studio Projects/VAX.vcproj b/Visual Studio Projects/VAX.vcproj index 3f6504dd..4356c38d 100644 --- a/Visual Studio Projects/VAX.vcproj +++ b/Visual Studio Projects/VAX.vcproj @@ -35,6 +35,9 @@ + @@ -119,6 +122,9 @@ + diff --git a/descrip.mms b/descrip.mms index 03fa74f1..8446b57c 100644 --- a/descrip.mms +++ b/descrip.mms @@ -275,11 +275,11 @@ PCAP_SIMH_INC = /INCL=($(PCAP_DIR)) @ 'MISS_SAY' "*** Error *** Attempting a Network Build but the VMS-PCAP components are not" @ 'MISS_SAY' "*** Error *** available" @ 'MISS_SAY' "*** Error *** " - @ 'MISS_SAY' "*** Error *** The vms-pcap.zip file can be downloaded from:" + @ 'MISS_SAY' "*** Error *** The simh-vms-pcap.zip file can be downloaded from:" @ 'MISS_SAY' "*** Error *** " @ 'MISS_SAY' "*** Error *** https://github.com/simh/simh/archive/vms-pcap.zip" @ 'MISS_SAY' "*** Error *** " - @ 'MISS_SAY' "*** Error *** Be sure to ""unzip -aa simh-vms-pcap.zip"" to properly set the file attributes" + @ 'MISS_SAY' "*** Error *** Be sure to ""unzip -a simh-vms-pcap.zip"" to properly set the file attributes" @ 'MISS_SAY' "*** Error *** " @ 'MISS_SAY' "*** Error *** The PCAP-VMS components are presumed (by this procedure) to be" @ 'MISS_SAY' "*** Error *** located in a directory at the same level as the directory" @@ -562,7 +562,7 @@ PDP18B_SOURCE = $(PDP18B_DIR)PDP18B_DT.C,$(PDP18B_DIR)PDP18B_DRM.C,\ $(PDP18B_DIR)PDP18B_RP.C,$(PDP18B_DIR)PDP18B_STDDEV.C,\ $(PDP18B_DIR)PDP18B_SYS.C,$(PDP18B_DIR)PDP18B_TT1.C,\ $(PDP18B_DIR)PDP18B_RB.C,$(PDP18B_DIR)PDP18B_FPP.C,\ - $(PDP18B_DIR)PDP18B_G2TTY.C + $(PDP18B_DIR)PDP18B_G2TTY.C,$(PDP18B_DIR)PDP18B_DR15.C PDP4_OPTIONS = /INCL=($(SIMH_DIR),$(PDP18B_DIR))/DEF=($(CC_DEFS),"PDP4=1") PDP7_OPTIONS = /INCL=($(SIMH_DIR),$(PDP18B_DIR))/DEF=($(CC_DEFS),"PDP7=1") PDP9_OPTIONS = /INCL=($(SIMH_DIR),$(PDP18B_DIR))/DEF=($(CC_DEFS),"PDP9=1") diff --git a/doc/h316_doc.doc b/doc/h316_doc.doc index 177278595073bc8c725d946d4196ab3764ba021c..ed84865689bf19968dc71cdea130dbc5d201b1af 100644 GIT binary patch delta 12060 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 diff --git a/doc/i1620_doc.doc b/doc/i1620_doc.doc index d1fc66a256b4278cc7b2bad79595f4423f5b0d68..28c978d461bcc74fd2cd2b16f2c7ef3a7f01a8c5 100644 GIT binary patch delta 17375 zcmcJX2V4}#+s9`YR8UZif&!vvMHG&v7{Njj6jVUPg8hI44v)L@4g`$mVoU5sPhB-e zQDcv>pki#X_ugwnj42kPQU9p1yuWAnR!;Ng|Ihn*-}m@@Z+2&QXP$Y=%-+oCXAc}d zn^*PAfaVb#lRhqtMd6rE-@JYMmNGlwq$3Ci#WjumDsC2UAEz#Hv}f%3M?buK4hIg5 zd6+m>ouy=@WQA@H-7HW6FGv_4_enATj=sC7w?-mpV%~QQF^=v8p&tL+XUo zfRsMAX>BP>{Dz#OpyRFg*`^=kj-ANQf$#xdj2*zaeEnq%t|9-a7c(6rIi_L(2}uNc+k@i_ai+U%@~iv^GNCQPf`@cwsrw{P}{W{q(VkH3fN_tX`eey4l6 zpbrZs71(~-gjiG#Axc@kzh17WZ#oVOA{kR~cqGmo+ex}4*Cbo_(LvJ@pO@#MZs{ZE z{}8~~C_BdHM==KPefQY~iO5Tip^3PKk+tcw8ut|;8daQ11}EW4ha^d)Xm{V6FxD@(#6luF1BZ& zCC~2*uCL{-UtN#BL5_}&fsT$Qwa%ngnDR6^shNr(XUATBErH6qxG7HA$3CG?jH4yo z->qn;(t+dBEC>8s;JeH}oXQLgNa8d_69T4jyhdlK9i;GTrBLf~j2g8mOp%kRR%EO4 zHQBk@3awg~k&{{EALPYXS1D{OwDfP4>O!~LW)>Z9)w;5!YFN{vwqZy3+6g*^N}KZ<-h?&ZvZAwdC(G)vJ@^3`M$8pN*0YDuddn$icT#(M_*Pv$;f>VvV>VPi0c5 zQd9NW2Cc@FsZLX*6eu*%oRP|kKwWf}W6Vv>(dg+|q1C6V#N&}_qh66~qH?LFsd}AB zuT?8z<9kK-Oi~O}7vSMEOUX8O|0GfbG^SPM=#9RLOnshugc=8?T!TSx%rU($dX8mC zgsVO5mT6fV<8JYasNt5aH|3y$>}-fo(Jo6#Og*!&LZ`}BYYP;?Apz1SI3U2<0<=bz zQz3AGuOcr~18*Q@n?#}0HAa+d)kmt{n5M|l+dM!mpoT#gxoVR_ov%*K728hIi3ON# zwUd>L!nDveD%R+1O9~89Dk9aXs$94vlm)wy-gSC~K0RHNs!?ebrX17-ql&tK+YHZD z>r&OCVJlkfi-$EP_+NqO5GiU!T?lPdr{;(^sN9kj zkx+MX6crA(_-JF zwN+nQ%b6av>pQ~{MyRxiU~(g)Uh9}oT~m%Cv1e45u9l6Fu0=ofXvLYSa5303RTS(M z@ht|uiDD1_L?JH6cbdjD3?ZZ!-SAy>Dbn<6lg>LwjxF(OWI{rc7(Q?@rL%KyomMjp zJqHDq^}(W+y$bmjj#0_o1_Xo#4{~(;*wHaH7oMd<+!dhJX%w%yIt_v~K&cG2TuN+T z^k?t*N)86SNka}$lrX@BbIH_XWWs#78@*PBCdZO8a6pyj=~`8W$){-NKvk&ammMB1 zC>8cps}PDgnryYQC~4k0t`}1>XV#O&V+71$dVEK*PB?eQUj)u{ESF_7H8U~|OU1bn z$103`^4&Qs6FCZ8Q{fur8(C3{1(!T628R}#w!ZN+Cn=hHwNhjW2fV&fM zWDv_&uq5lT5AyZaTot5Ji{;W&3f!T9JSrUPtWTLxUN+Do*NCf9E8fZJCf-bf<=F_K zvYg%10OKH4nu$AdaHL@-<|`JE$Mk}8Kh8UfN~G51Af-A@EM2UXa;eC4$VqjQPEt`2 z=|K-kNM|Iip6M)u4tX|65YJ?ps3jR- zg+fR;19C|TIRF*nI83Tq{LV$b0RmAAE5sCE2=LDC4m?2v2Ub+$Tx_5CPI$pB0B^us z;Ofg*U7!SkpfiXAgzri0~kGw0_cgt+jYm@L+JeimFFvp2YI2s*CCR;igvaEL%~?E1e^zNfFIi37mO6z2XHMb ziA^pZ9>DeHgu-T=vsiISOU}j2?0HmpcW@Uq5nv+w#TpKOb=&f9ar?c!b(4v+ccwq}E)lu&Xr}sUU-{X;Ca1nT|AlEoRP8Mw zSDRw3a*Vaw`A8RlUEnTw4VtuPtQ+VK8g@XlKu1ueBYv}k#Sw^Qa1NXY_rU!K;jEHd zB-pj(a=C}XZ6()Tj*}{8F-{PE@Ja-kLk(7Q{26{I$Vh|8k~4df0!V^4;4P?%+G_!l z#us!2BvlD`24u-dqM&fbLO=wF1tcL!b{|xZG@}6gVoU&fP!z@3di+#73`&6`ewMWa zUBPgm#!o+0XU1-V*WeOHY<7+3^WfF@lT>jYMTBfz;EV{Ji5ca#BI$3u-~ zeBA?Oz%v0AflY}Bw;rerr1eB4;4*j)&iBH-pfHKCJ>V|5(;L6{!ON%OU)jsjOQlas zkCoxCl(KLlC1ty}?cVmZl)iUUX6d%lNSsT5Vji7sd&=-ZM0l%?N)Z94qT|1GiB@NO z(28qeQJk-9#xrC|F^X_}zv0t&$7D;&?;@$aLhFgpy3VTo*+}PrQ{XgkfHfRJB!~i| zfB?u!o9P@D8V$Y!u$m`3go6)F=L@sNMUw}f6O>`xYSHz~qPJ1c>=kDV6|FI%RNb&&Y%kz1IB_K zz}BgU!;y{PCioFFh9i?>M*(u~0bn5b1dyYz?phBfzyW#uEl>i;^Q(i8y9qOcxDXm4 zJj9X9E0%_e9@3!UE#P#kP=Y)&S%&%pQDSNftM{=rd^pg^m=4-N0+1W=n3mu&x}zoq+a4|K}%Xi#H(I6oL6cnVp-gZe{~ zMwWzw6b`@%)CM^qA9y7*)(eF6XDk~`1HYQ_6*mA)2A4qZfsFM5_d(1c$Tpaiy@4JWz^5t{2&MzGnz7Ho7%&!$1100(hQRL&bTeg7OK*sOPs@mEx`c!IRmvt&q;G*G~NzvTIkN(6QKAQtM8Rh5q8i&mAn zKvgf9{1Ltm;#!dHbA@&Eb|@Z+p>*1pYbBKUan;S7G}c$xu^yGt0t^9jz*#^hcmSed z1~SD&uoc_`WELLu1%GFrXqbgeqyn;;M#DUxR>Idb6-Ci4F?J9{1IQPph?hDgh*%+> z80fNfo24@54Q8i7R6tfH3+HAqHUf0iW7PxfFk+zqv>Ack5O@@z!vT9f!Rs#g_*1+i zfPam}kPgU0O2Hja$ro-Sc1WiM7gA++cbgvo!kw;Myrb-rfc9_z*$I}z3D#SkA!s)|1dvmd z0ogGw**M1^RtIsgI>~xC$v+VOuL8f*%-^;5FOP8L7;HR*6WzJG6)ny5APHnwy!oiD!Hx$AlI#K;)I6XIZvr)LHE*%1`iLx z&ToB`tI_0N4(8ZYnEKN)n${%wY-NyU7^xhZWt3<7 zVrjo@wEFJfFy5@;8)1+cFOJLokGKAsDoU7&0A$v2;;yPmq zQ-PUW5=zZNaZGcqR1D2Z>dIcm7AjaE{sI6sgcK;{P@Y0m1Sy9^)^!HoDFr*&oP7Nk$^W zdbczePZCNtruLAXv&B}(rXtl3M|-GUES_;2^t7DW$^2sfD&-FgS1-S|nD!|f+WypL_OX8lYmMbUfnWaX*?{ZRKWxy=F ztmukh#|3iqSof9S6+mmd&xyexnvw#c<~{3j)zDJthU6957;hv z{EcpLA3ZMlb6;`Ar#V_qt33!c%a9Xw9Bu93SxXL73Pfrc)CG^tf@j*LcU5ZknKepAjzaMr6rOy zQCitcsUAI^Be`U$(6zJf;*(?~=}JW$!rubKCS<|&sBpO(p#F;7ltv8_h6f(9kY zou&@Q)Wb`?wygXdi+PuOw$vdepjOEp16c?QLbvEAc8iiWsJ#`YmRv;|B}iZ7I5hr~ z1*BNZ70;;Ck+o^2e*QoraLY*f`ZL49jVPBL^ofdtQ1MAIVA}d`IgPKFmAoX&Ra^*YZaZHCbTynF& zDlQ25AC3$a{V?@{6)Ul+ES8pHRpJ0dgFNYwyo)-0S$h;DU2)zV;bI%KQv17$b{-~n z*`8{f*8@B+br)n==^a4sf+fGHs6*;HD5TY5&Hv7xR=aTo^6BuFL#l`Xe}Bi{z4QF{ zFLBgVv3s+u-BZm|4qh@8?Ff(pP7EJQ`xEY*FTHEjdcP-^-Vkc+^0e&RTUYbH_t<~v zuoyo)TiUuKg(7L!i0B}>C4;}G}{P19buI7=CRTUV=|(kgHN;aQK1~9>#K28{x;g_&X4@h4}GUiAwm$=IQb$4~w}Z?l9NPcKu44 z?fB~~2(#Oo$ptj$JGvJKeaUU}qJszPxKM98Xnv8q(%kV)B?bEkb(xAC-*92}<}Z27 zxPuK~4>$up10~=QV0M`C2MQ1X!omOHHS_;Rq5p$2&HwK${P)5%{EsRXB6_sM!b}<(4NOkhTv3*?`(Tx@rX+NE}jb) zS~>6;oWHQpfj@~P%aI=&oW$Pv|MB)QmxP_^JQLUFu-&~20>ifVqY*bs?5&NMW{S1r z8y7!triD(=6YaSPEa`UwatOb{A}%m(%a&55D?0pj5b0 z`>-MV#4HELkGnT}(PQlNz4}g1mPam`HN$1nAn%x(+ja%kw=^8_^4#(rJ92(pV(_S@ ztnzuQ-(oLc*^qeUtg1(&=L@T}8a~}6dt1QiiC*Q8N8b*uJ)Em!_RvMV{{F?y;{}_G z0+yysS(kpfx4GJm344Ft@XgQNnvK);JpE)>T=0|iEJ<4$dNF=^ucNPgm`8Qha-TXk zSKeAveC-XtcFeh`DZh`{GDzu>f6`nq&U9YrXtzFmwOMa>>tSV=XdL_ecx%rmgSXVq zuRM56&rxc-A%3l{55BmkWum!D?5J&Hl+WiFHw?_K>>j*5W5VUp>j(JxEnJ_N=$xE; z)aQ_|+x0BJ$nt*YDt%_(vq_f+6JOMxan@zc$KkV`J}P}+iFKIJCOYs=z`*9N+b0CQ z5;`V$t)5uuHMP~Sqt)g;n%3~>;oJMicZ=Tty6(>H9zUHt-r&~GQDqC;jU4{RuY%>U zc}7D0*9${~zWrBXyR+*Co8KP1mC!Nw&B!-5?|Toq`gq{sw{Om8{P6naaxaILgC>+* zynOmi{^JK1+bn+jVt=h_JLeaUss6jg!SqXLhY`As4sI(VhXx%U_tQh)mkk?jj}BgB zsNJ~jl!NBZ<14>>S+7Uh-Ypy4_l7xknd+RMJL0tBMm39hzQS$B<$Xt3{eYMOz8hn1 zFId>Mn#t^z@WA37?3Gt-N#pA`xXIIAjY#ixrca8=ef*We0?X2Vg^trV8h&a$V&X=1 zZk}Uc>B#WU9q(v;7w$NqX_(?1yVz-JR)6=0Gadd2Dy}(xl;_5_+wN?xyJg+>X*0St zx#2po|B>>**8B2ZPuiO&Yn6XCUpjJ6`AmoGCZ9Y>TXiRNVE78}c|j|K_bt4x)iv2L z*zdQ?;e#J&Iu<@T(y7_lde=skH9nM+_LW!VhLcx>XlEQ)GX3?$29c8*{nD&f$a60E zcb9_d1>uh`<=kp`rAzs5Sq9J9y;p8-;ZmTU+s|0w8ocb&PfVdP{bHRRepvF0x#pw< z*YeiM^RhC1e@J`aAM@?B2Q?P`~6m34FfBKrrA ztuN>1hfb+}rTOTAer|V{X>x|0tC35$*P9*Dv&PRZt*SY0*_5|$sZQ0yQYNgvHk7-t>DxV*j*fBeyZ;$Bq&3c8 z8d-Zr+M;tw{zYrevtB5JclphWskEm$+vTR0*B!U4?b`LB)BKPwnRnA?CC=>8 ze(D#Q3ll!PPS>#kmVN&y`z@=Jnmfov#Tz>nRc+i@ z^@~~VOEvqw_NR8N7t?E%m$G>0#Q2h%R}-83=4`I7p5JWX=9)Fmf7bGBtofp%5$|2S zX^;JLj-Ngkp1Qo@lODi$;N6ClU`h0>Qpk(kpE||Zp+#>dK4O5Yg6yn>sqgv@ZjF> zwR$@*zcVpDYV)tnx6fN?XnNP(D|ha}@UQ{jn%(&|6VlE)RH=1!=(9qPo2~A9_b+t_Z1<#Ip2D5nK0@}4JczudHV_l50SMn_(1 zswhc*o)XAT| zJh{Bu`lY{)dVDu}nts&iNptnrmCnhtGw$7w8(g#RkRg+oKO8co9>4TS&%&PfE**c? zr)gjRHaps`zq#h_y@=&=hV>nrwc~pASN(VWc_w#y?JL9P+O0pg`fiJZiX#Pc#(pzo z?JsKvufFhf&B^|UhjkdJO&xl7^(fyI?so5;Bi?ew^J?)IxvCXoosj3sCvj(l6RvzH zcf7cY8{d&@WFCZd=u^@g9ae*@F!nv559QXyLcfq%hcEG>{fD%Dk9L#M{s3ACq!&PX zZPW@IHGCamd|iH^&^(KG5!z+(b=?J&fmJ}Z2o!>q0P9a|hv4YWH!#ztPTFTlo9Sp@ z6Ky4;O*OPtg|>ju77JQqNAILhrCtc{YkPff-;fz?v(Y53uIS zz5)vY9%DS-hjyDx9naSR-R=!8-6Az`7XQUcAelUu?(6o+=*f#m{#% zr!~j2q93;WK;8PhC(5< zRkl48vIz<)4~O6}ScvbAb#N$TYO|QMWlRJiP)0kj7D^!2gDs#O%6JVfK_NFl2oynt zf^d)yWoW^4C}bvhy9*89jSbXL2oZP64yq6y`S4TBWr0u@m=TXgfjwY9c!37nCBaib zG#Jnu9s*_o+Ww>JgL*(F7zT_W4-|k=VCfJT4>+aa-4xsb4}o7g3$_<}T=cLC07q4!np%D?v?c19T(0VbcrP3l4#w!F^B-aaJ8<03Fx_z6VJ?5Eh_K zPZ$PF2NqBSwt~)Z$F634O#;(EG1v?4gFiqr{BZzi+YeR*(I5d-*D|a^!?lb!22*oU zILI3ZuK=&UMC^dtGtq|w-h$0Pz;!du0eOt*cnHb>xlsTZ4<-O-bY7`I*8;8rMq9as^bUArg?f8n zW=#TNdJt~Z7t!@1_KWKZ#Z1%65QhjXc7e_c0y+p4Ic)rV-RDo@Z~u8 zBrID7X!y7TtKE;s4znJ(7Z%C}pThtx`{8C9S3XUy7+2)+L+E zL0fD5y$R$S2+lzmr~mC&F|OWlvX8~+R{XF7-;FcZU?&R4 zgMVqT0c-?Yz*fd~V;tE1J=g(u0`%{@_k#V{-gN-J4wu=3cQ6)?6m6%MDavTaQ3l?T za7t;u^&E%d`FQI&iV)Agw4NWcp3k$Mqj>T9D(m?r>-kWzjc@6@3hRwIP+DFQc1G}B z?Uk%#fKV-xA1NJ8isTiFnqP9CRpt50j`n;d2RnOu3=cZEh$+5=qmlf_oKoPU_)n@; zW+iW%V95mCk}xrf@6a*XIejJF>B>gqdx;mqa21`Yac0l#TryGK`?-`upU0KhBbOqT zLt9Sh5Y2m3Zg2?ydg~CTSUU&{qj|MGTq6iufLsNS7(RyMgh4TUZ?EcDwxI=(VT}I8 zoraCXAN@NuT2s&$?~TD*IsU!g&vU!*_I6bvk=8((gOpS;3Mo14cwtu;{*(HY)m>#ArbyI`9I2;&n9Nvx z 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 QpSGX1Gf6M^tJcN;2RnCKo&W#< diff --git a/doc/simh_doc.doc b/doc/simh_doc.doc index 7c1261772414ca71f786237d9d08fddc1c3e56e1..80d7290e81f5b3b1ddda7f50552e050451867e87 100644 GIT binary patch delta 33075 zcmd7b2Y3`!+wk$3$x?zOWJ8Alp$kY%FMvpqssaI|DZLn4=qNQbDT)d#Fo1|OK`GK1 zR0Kp36_h3*NL4@{q=X^}QojGaGqbx%7WDd_SKl{WKXUe*Gc)Jh=gjQP>@1A>G4H5j zd8b51_SF>gCqz*OkXCth|G|R?lG&5jz0ez}=mR6_oMXN^O$$?3x{7H}2CVF>>Qk4g z#az9#C0eU_u6zM?pI`Z|qEJ;?#c%ofJHN|NZ}WUb*~o(Z7b(g}ULRoj{H|mzuj`Y5 z8rp$(U3UZG%bh1PmcrK6_{-1lBMD@xu2zmxq0$cDpVrm%&wo?nBivOe$XagJmQ@Ek z6eV!BqMXuRoQ*&F4OSjx|VcV)QBX~aT)yDH`^B*S($`xY&I(Ynn!Zfa_RYhA7w zHDTSaxe8{>5f>ku6crQi$`(@6ldc>RZlx1k%|jABX>Wd_>ywabR(_)EUPyRub3I9= z!qt3HuB*LgR)r+ji_UPTyFzTFyFx^CL{y-wef1KqhPUS?MU(1!tTm z?ahyNJs%or(mWz-@H%fxG1ZZ>$!aPw&Go@^Tt|ji1*1)aE0cJvGNmq z@)KPH@>R6*6J2@o+v`bk?aKF*m7gT}dEDEIb4Ms9A}-L?p+}gjO@61HAO2E`1UJ%k zx=dknxwt6TocvZiNbk#U4Pjig>vn#tjikN#F|L;iRI!$galKo>t{>~#QQ%1{Kh`Hd z&Q-dg)yB9upZs{&+Xa)X`thzk1?}}DxNa3JXXPjOHX<<=jKIyB) z?EEO#wJ>We64>)R`O&U6#jKboMEm5&xHc5C_N{~%pZr)?;o@=TxFp0{?Q)$iUBudC zoNGk!7^^rgYjM2mWbryyu@wzAn%7=B!PTrpWwX->3D(j+!AeMUttwH;+ESwHbP2n2 zNv^ zEotoli7`I;v92FWmNC1PXayz4wJ*%-R$`p1QmII**b0hoalGsGQdX!F<6RMD?A9l^ zE|;>mmf(}mZc^H=pXifM&r6p!qm!8A%}Kl?DizZxYV*%+emx!V_nH*E1TU*^7Ou=)9QUvoNHy-+E%fr_nt9Nig%SLXSXhX z-LvI-g_r5uwg15GT?d3e-lF?}K^=RAHyb#pOZPtEbzbe;zw3Yj;n9(ii51pesavAh zW8vWqx`hu+=^8#W)wQ{E*~HHMyLKGdwM%%P{_fnauXZ0WuzTvu;oZ9T>KfjCK={D^ zgHk)YYYglYKD2B9KH9sGN0@8(Y_h~wwP*lA z&})uW^M_@MhEl?}6(O&w`Sg#*s)0T+*)~=!Qcg~cGPc;=niq1aK9LR6Q%0#_x?_x* zQvcGCOS`u3T5)Oak-1aHOzk^n>KHSpjg=!S^!=&mj@D()Z8L60m%!+!#;Mu!^fL?p zKl@cA^oBVUzWx25h`Qckv>I5}Gl%@dCA@teMd^T<@zKtjDgHN zCZ&Cbwq(4j=_%vXGP+};+C(2X zMlF@6b@mL)=)QHf%IsA6WJ$oxQGYdUI&KTOv%_M`)(gxqoSCLc#=g9%{-2t?&-1qNsM)Kh zOqMZy%bvMaAInhRoVi|8~-!+E$QVHd*-gq?YBeb%#AY( z|Mtw?WQNSA3IAI&H*a2UC1B<>d*)W)o%`X#pK<28{%_6PCxafnM?U`GQ z`&B+&HD~U8-i64_JT`xC=Fa#>XYLYnXndOHf96h?Ue2^83{eNrbIzu1TbeXxcWK8GC%$>{G-o!C# za2|<(Pk+tnJI2h+JV1YM`o8mzPTz^<`1mx<|MZ@=kwyyd8-0$Xzuz3nR zxWFSO^lheuPf#8?30_l+gbp|B`!wo*YeFBSTZb@no;psSJYRi0v_~Po9i91}8tOi? zbDtyjE$Fw>KXDe6`2@Je!%l#&n!A`&#&f4*&TLYM>-@r z?h6I?6=lY=S*4W9BKa|Mp*p<8)pLi>?Kphy@Y;E6ugQ@P$ zxmaE3ox0Bz`@8M*U8{b7v0CaMy0Upc!`s5e_tnFhF9c34QA7W75SC_G%|CTLn(?AU zB4S)$svgn)vUxH`s)YNE{XembWIk-T$8OhhwWK?7Wx2Y}opA5D5vBY#%g@x!I3-s6 zV^d;fhOxZ3($AFm=x>07fcSeMi_uH($ zoDpmPu^F*0!%$va=VwN&{~I%6Lx$D-n=@j=-<%QmEBFolzc(Wcdqx<(GvZn$zs>r~ z8L{afn-L#p7|M$u`-GN<(7Zu^P&;J1gMM4)R`rX7|9RxCdnrU3zrDj+Eax#DC+t+{T z_J9P_xc;3wD0|xaXB1^CKF2{E!ci<}pePIR&hv`02JIRtN_&jP7>tFES-90$QS$I? zSX*>JXQU!7SyA4=WGuwiri!u+rJ5;9X&h{(lvYlWSn~qU*5N<6hL>CLd>tmXRFuUn z^&$t=;$gefcc*VpzmxuR`kJ2){Y+xJ`{kYVrRhucRtMGQ+074*^?3)?j%uxqht!<8 zbDX9pb?PX3o{L%|qwUY?A~i2BmD^}hS5fZbUR`(b<3`mp>JBx6mrA|*ic%kT-`CQA zyN@CCs}y}Hjo4)U^aZto{@!-2h@O5y4KhZaQ^%-rv6M;QTf(>hi+G)G#TLL6WLzY&@?vRFkE=E8*y7g(Z#ONra{f%n&Kc`=l@93JSMU zlp^>AXHdDdqC}t-TBDSad_i5MrY)xKhggX(@fFe`%b&+Z1W-R4o`fu4stu3+p%&_* zE!yKY0$=2@MC8X4h(vYN#JgC4+HDo(1+;0aq$%x5492U-){cpSS$G%q+w)u}8g}5h zL$pUnyn)5I(~*hRi8Pj>P8UUa7H?q_uAoO(MVSsAA7T~O;tDEsOCvJf6eSVK7>3dK z1bflwWkqR@1=xw**pJgVgDNT1$9TMs53vp#upfcl8EF(p2}I&%y3Zf|%}Z)2^_)KH zl3FQ;V$I%D&oGx(?^g3hzi5ZLI-$LVKdcbvB8+{}57RLN65hi`)Ma&#n&&X-o-ff` zC~eKjuV1;WmNZ7DGd-)5=NX0;q#Zs%8k6xRWQ;z>Wyo0NVN5EcCN}Gz-%vl$x82}A z?cOjgx85^{RzaWlyV@yLie*@PVhv_mPfbYy%KpdChIEWW@lTt+%-_aJ=8)>Bb( zBTsMkDdg*?C?5?}lMb={q83h+N}?ueL88_T z%drAcy%>1}5xrn5icj`py$v$LM{yrA(&f<`sdyEPyfP2p;yj$MD9SVFgIU;(TPV!rXowz= zi82Q=S^2EURrG&d)8~jbiAS*hdO~t zi_jXViKbSdZ5VL>?|mU%2yk3xEA_iO|` z8;PoPOgh&a^KcNMbW}Q<+2c{%C+Iy%FSCNZm*3YA zL7e+x$P`Z>Kh*CPr>)_6wNs6TP$c8B6jxvmOC^S*Cwf^!^P$i19A=1?FholsLzR2F zqLe||>3Y;Hb*gbPpH@;$lM=}dp2h4yVk%%MXU(-kasad@;SSs!3&u+zxz&xii?0bZ;a_ z(Nl>|=3cL&=T~OyQzvR|^}Yod;mZ^GtHx+8$k*EsVnRb2&?ei^xsKEAu$oV;F{`-h1o~||eHb$0_mQ1Z&w)_L49JHI_zmru1syO2GBXzAeYiJYPS)+-d=Wi7Kbxvt zlE2uKxHPkxWEQyEYI*b)CADSIvh1g_JmQ&E3D)ddYR$0q%(8vhZ_Tz`ALt#2X<ty9;D~r{N%EUg!UaZ6F>A7=*!Sxr#SCOvEHCGm^`(-ZXm|yY6A?{(?)m zjxy9OZ!ME&HIYXlL?9B~u?a^}VGXlyE$>}OK|f5zO#F)9P+}eHGdM>=g-z`65u0cz z7GN2c<13uR4a9xSr6oq;HO#_1EW`&`g>~43-FWH~-ZU{6OEKYvdM&cW6{*1_P;q-MIN0HCz1$H6(cFzBIa8yEpuZSc%V=g}4$vZv1#UA{Gd|%Um z-82m65cQqBFFxeY)82v$52@m9DRAQay&8McZs-l*x_K?wQgOON;UvUGa*K?L}g#-8jpE7-93TaHCT#%`hgczn%EZP{!k+Q?JAw3bh z5y144sg?|xZiDa+HbAD{Ze(Nn$rP-GQFs%(;rxOf5rxqiU9b?RP~l5P6~k~(@%g!> z7-`YkXtk4+497aGhdseZFv&++6TKi4ybzkA8Qy_R`W^TkWti+QU;<=E_yl>G{IUZy z{#wFo-UOR*O1tGby=pk~ki*eTE?EjSrd~U=$N6u$&xfd8L=CUub!>scPE-_a(G~X2 zwVL!<$W9jdozWf+TO*?Fm)-(*igVEN#=S%>Kuwco)Pvmw+2nMb z_<=+4K{khjIEL9w6ME${>e9pe-S6EG2998;cD z9*`(}oYQ*Txq9~M**jP7{AB+*xaZ(k>lUq>GGfXrshy^b*wflrQH8HZ%K@d3ezB?+ zs^1->J=UyLeu5A~i(@eX6R{d=Aia1UZ$Nsp7^h+PrU*TF_b|t6{E54$cf>n0+_y*d zViR~b=58ssILq-@^(3u`kzS3n_~d#=IILhK(jd{WqaeL6ZuP#h6@kG%5%`?+cI?F= z9L7l_xjOq`x09rA!8br12vSE3#V~w+g2OqE}O^&QjvyHn2kAj2Me$ei?A3=umxZItW;9IAyMrYt^)7?${7xX z$bq3)j^byT{%4J4&uA^wRNvO_r^O{$fo$Dg`}?HrEo>!Sm6gf{UWD&PR8~C1XCo^- z8{(vo4erPJvwHeC?G^pfW@all%!)K{7@fGwN$S)#&py&bL9$Xw>I4WV=seo~AL5iUw#Z%Nsig>BKilG?mDQY4`yi~?vJZ5-` zno1Ebm6@1@1)iejQp8JTAr@nWr>KP#@lsid)!6JQY9&RyR6fHt?D7<~ks@9yyYW4a zdWv3>B3>##;W(~&irPsLFO}=~9l3t9qtQW%c&R*wV3hI{b&?`pDy2~lNuHuEQp8K8 z3Z6n;Pf<51;-yj#4e^4fC`F2RskA_A^zsz-kRo0xz0n6lJVm{vh?mMxjDX8ilqyBM zRHkDl7I}*LN)a!W#aIHvQ`BFIc&Ti{C-}}&G?1doyv#7WFY`K-*(|eMX7x*0$*lee z9~+eiYX{WSk4f*q4>*Hs&@S`7h8R49mgtYS@HTw+3ZFefS2I2BU$%Q4H+;7LF56!O*?w!Zfowkhj-Mj{Q9@H*bWA!Frmt(n@R zIvekUcd-^Vu7}d?C#?{C zX@wz>?%JW~PTCHK847ui2-A7vci+sR3FA1+k&^*Q1?kU^<}HJ}JTJO$^_Zn|8``CN zM)T%zh;?4TCEP=$KRE*4Wgg%Len;Rvb`@;JHeAAG+{1lTx=#ona2kmA=zzs|AHU!X zYALEx8!gZhJy2Fv3n&#;Rq3y(iVJ7(2YMJY#_;CRN5=X#?pO_bg2wg5I{bmEG;TO_ zNTa2(IcbpH;8mohu@z~cG;$hT=tzU)pQy1L)7@;4-Y>iMxc7$qqf-W9R@F4=hmJ#V z(v?t*L>dfiLO;4>cX7Ja&0AJiO9rS)eGJ8V+(31Qstm*u{D|DyRHXri;VaN1`^QKd z&y`kB$t{pwRXSn;E~82gRhft%z#}(GB6?sR&ZBams*J&5l+MN4u?wM(sY*Mv#~=*G zPdJ7@9#i#_lL*rMiOejylW1@!F_bV^E0&eW!naW=x2p6FqWc(z;h2Dln1rxkRVjuj zEYG7VT|-o500v?ZMq@m5yo-fchmA0hetQ4z9lN(~*t+2(Bkgs<(3s|Vw)_NJZ;ECZ zi*c}9W4B-ptyqiWIN{Tx60|5Xn18%!J6&~Ow~rXcUL#LP7@UEXRD&pWw>yU4b@ZTF z+JB6jZ)v&IpgLsKMSV243Z_Uwb245)OLVXbrb$5uGCHC&`dbClrJz3<12709t%8|S zFp`WkjK(B`jbB%TCy{;~Z(??^9=w(o-I}8XszI~KnS*!nfwh{svYHRb_z=rsSOxQ> zz#wB2KEWQVV7?UWA!9H0<5#O-p%nZ|#(DgP2Ufvi3W6Vyp)j@qD3C`Fo~4~PZZ46M z0^}4#5tOz|K9G{qZr5Hf>zPi@4Cq*9mu#dYY8g2)e^=l#o?vd;b6Do? zN^8Cz;P-!U-H6(x?NQTY4sXX1oPd;F!F4#Cs?ru6(G4$S0ES>3Uc)TR#vH6i_E1%+ zfQ49v_1FX@uc}-q$Pu;>%NAye;H|=HnliEooyCv%2~kB=B^DQP1vSDrW@9}J1Q+8N zhi({#9rzme(Yd&)%tUGlRrwZYFfp9@iK$3Go__q><6mxAV*UAYu5tepO;c-1Zv$w( z^tdh>A_e1-xrZCb%SMmvo>nBi(5Sgt+o~qnyt>4 z-@$*!{TUs%=Y!0fbNRMv7t^FvN5%Xc%g_cB@hMK>H0~5ol|KPW`~ZpfZDt#VgxcA+P85`OOxFHcA)NAgA~C4$v}0%49I|O#{)dgfXU$X zfefJ45`Fe|ZK3&?S=+C<;tctmGmIL1mY1dma2Du59|q(5S&m;KsgK79`*O%I$PnyAPQorj!IaQ{zp3_@GxYNE*B9=4!LANkc0GNM zmP=3nM$3~{RH{}-3k=6(EQE~Y_c(~N_#HVJ#G;5oeY8hEypH#<0lRS=>2NT(*$|JX z@I2arQ&;OpAD&$+=5tcXg_rNug!j6FR1tk;o`BFab}dI9<>fB&ZA2wZR@WC}F&nF~ z6Gw0jIhZ%a5Q{o!gW+~eq@Q@ z*5u5F&7S~T6(<&GvPiSLQ zXXsPBpW$`9fw_kBlq@=zw1FeI>$_;MmXl|X*=p!riV9Tc_=6@$t}bn=z@x|XJbyAd zoiQ6fAluUf+r#y#Ms)_+U`)|981myY{X8S zGn{uN?B_@qdWJ&^Qf34N(3ktNrW9Vki(?3`vmrR(8gr`-S73M!UFysT4j_J70F}Ft zF%_TSq*dUcApc1+?%+@4uFIYc`x&6@0gQ=cJdI9xtFF1qoU+Qd$k>2GxNjBYq9Eu# z83pSx3GlS;3=XiT*j<@oxvAoOnxf8_iVfJv6G;JAROd$0JCUP469KIZX9)Shtw@i= zCS0m7QDdJ84PXzrL{5gJclubFV3N@pi}7s} ztEKVMo^Q$d2|>xcYb0AGiBgh4P9IFba=WC8lq@G_FT$IuN~5OMGS#G{5jo?r6Ibn$ z>XbOIk`vU7HxaZ&JHuInraRk_?u!NZ0r&LeAJxKo)yD%y>GPMVPJQb$0lv>ax39y? zIlrh~^u8zga)uHh3ptvz7c@6=Jri(K4SbpxDVSyi)|GLcM*184ZUolnb*|q@mwkbw z!wW{PhO$61FUDhq5%`=eu!8gs95(_R$pXho=V`%VzJ-yii7XJ!iw+oO1U8ighLN6w z4Mt#ddA))3S==)MTgVFTkuKhn_lTB8u2!tTS(_If&=LLdt>J7#FoM1%eH(dNaps{1 zwUgt}OR_IKMMf%yVUC_ z<#cBc&s6ImdtVpXtID4tV+;%&e#z=iUzuBn z$+?ThZFxsTC&Sra+S-ZqP<(*BI(Zq6H16GMpoC*D<$oYwJ1+lp=c|6|4VLZ1QQig< zF$r@F>av|Vq?chMe)7NkP?it=iSnH7dG|oO_EryuOG!I&Mqv&#tG!=#3?GzhYFtsD?@szn*cWRHNWc0r z@1>ZH4LFKF5u3uzPK?D8oI&>PtQXz!w(Nr`U%|{kh1(aLmP5IFDijcyGY#_!vJT|3EIxkOCcF;hwT# zy4E&JbEN1uS2Jj?kc zBTjpACF#?zcqKk_zw9h)jqm;9S=J{RcE*z{$qenww2#E=KKn?>InQ#E^jR(;b3FWH zWZGX6GVeeMndgd`;nUv)jtiOQr=69dEt%#{f_v^{SWlL?C0L=%u%1l&R)Txq%CMd+ z^D03xvofqFQ%n=wG4)wbV%Gi6&hlALV&)k8$;cGr#LO{H%p7AgBSTxV#5mCkdxo}T zig9A*7$;_(n|4-)^<;{1V&)hpS^>?_#4IsRbcZyY!Q4C~1>kAv}WSUA_=1U)qyzHOUtp(=_rBh&*K>&p5~j{PNMee9A5#sLN;P@-ex5A}*hR%V*v4v9^4IEgx3P=hE^K zw0zhsA1liT$nsIKd?+j*|H{X`^1-frgnK=W!I4i9<#Rvz)J;Cqk`FTEQ-ii~?mOY` zJJE6U@H&$-9%1u?dZz^|4L zxg9At9_1Een%qy6dxvtbP;Lv#9YDFsC-?K@)}7p&llyRT&rR;G$$d1rV#s~d zm3j3K?{=*6@NUN{e!HzVsp2T;6IIU0{k6h<9V9V+Sj6KV(d#(n;k}Mi=ygQas9GD0 z^S41gvTBBi$33FkasIn)t={iw>+@NC1@C~yKcd_5O0<44(NU?SZ*{-D)kCUfXmmW& z^=F`gbiZ1o9`7~_OTbT;7;W1Jvk%s=&L^d z1Ni3*hH~0DinBPJ9>bRr#`0eEI*-LqmUu7J9%27~F zTTN$!>(d}QdzH>EqO;ZLY;!u>i_Y%rz?0Z?Hvd2#ZKty%=%|y^*#~rXC7n&Bvmepf z#&mWGoeiY3N9n8>L1%+GmEA#SXVTfWbanxqT}Wq>==b_fuX6q z#(P+V53mZm@E!hx-w@h|FInPwG)7z;*G9ZrBv1`-sqZD!m?KJM%S!TAZrzG zbj>OuS*v)XYgWmXwTd^o#oe8ExT_TRPN@W+=$cjTD|-8Fj_3?^yx}$L{NbmLH@;?_ zYkul@18mm0=%Ue`}*7?Ct9dDG)I^X-L;|+5O zcbLD4?D=Qb+3u%~H_m3A&3@{5<80R1=%UiU9)|uz0jyKL`omqbBc;jr=ndYaCH_l=1I8V+}C(b9%W}WeV>UiU9)*0oejyKL` zouPi}c;jr=8R(~uH_m3AR6ljRaW?Cu_^IQKvstH;pE}++n{{6DQ^y-;vrY>?b-Zyd z=8kidEOq3>-=5EAorZquc;jr=dB#s2Z=B6K)&11*#@Vcs=%xBEM`;=GR{YZ@Uyweke5o8$8Y?v^JE%OT z?BnLd*UC11`7e&7;EXFXuKnWZlC4ZqTw-iuWSzQ|>(q{ns~lS=v3BK}v2`OW*NKct Ud?vP5?YO!%qm7~eag5jgALr;EJ^%m! delta 32146 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 delta 8559 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 JY@M>!?7v})*A)N& diff --git a/makefile b/makefile index eb64b381..fa9dc957 100644 --- a/makefile +++ b/makefile @@ -1,6 +1,7 @@ # # This GNU make makefile has been tested on: # Linux (x86 & Sparc & PPC) +# Android (Termux) # OS X # Solaris (x86 & Sparc) (gcc and Sun C) # OpenBSD @@ -37,13 +38,14 @@ # # simh project support is provided for simulators that are built with # dependent packages provided with the or by the operating system -# distribution OR for platforms where that isn't directly available (OS X) -# by packages from specific package management systems (MacPorts). Users -# wanting to build simulators with locally build dependent packages or -# packages provided by an unsupported package management system can -# override where this procedure looks for include files and/or libraries. -# Overrides can be specified by define exported environment variables or -# GNU make command line arguments which specify INCLUDES and/or LIBRARIES. +# distribution OR for platforms where that isn't directly available +# (OS X) by packages from specific package management systems (MacPorts +# or Homebrew). Users wanting to build simulators with locally build +# dependent packages or packages provided by an unsupported package +# management system can override where this procedure looks for include +# files and/or libraries. Overrides can be specified by define exported +# environment variables or GNU make command line arguments which specify +# INCLUDES and/or LIBRARIES. # Each of these, if specified, must be the complete list include directories # or library directories that should be used with each element separated by # colons. (i.e. INCLUDES=/usr/include/:/usr/local/include/:...) @@ -493,7 +495,10 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) endif endif ifneq (,$(call find_include,semaphore)) - OS_CCDEFS += -DHAVE_SEMAPHORE + ifneq (, $(shell grep sem_timedwait $(call find_include,semaphore))) + OS_CCDEFS += -DHAVE_SEMAPHORE + $(info using semaphore: $(call find_include,semaphore)) + endif endif ifneq (,$(call find_include,sys/ioctl)) OS_CCDEFS += -DHAVE_SYS_IOCTL @@ -1190,6 +1195,17 @@ PDP11 = ${PDP11D}/pdp11_fp.c ${PDP11D}/pdp11_cpu.c ${PDP11D}/pdp11_dz.c \ PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT} $(DISPLAY_OPT) +UC15D = PDP11 +UC15 = ${UC15D}/pdp11_cis.c ${UC15D}/pdp11_cpu.c \ + ${UC15D}/pdp11_cpumod.c ${UC15D}/pdp11_cr.c \ + ${UC15D}/pdp11_fp.c ${UC15D}/pdp11_io.c \ + ${UC15D}/pdp11_io_lib.c ${UC15D}/pdp11_lp.c \ + ${UC15D}/pdp11_rh.c ${UC15D}/pdp11_rk.c \ + ${UC15D}/pdp11_stddev.c ${UC15D}/pdp11_sys.c \ + ${UC15D}/pdp11_uc15.c +UC15_OPT = -DVM_PDP11 -DUC15 -I ${UC15D} -I ${PDP18BD} + + VAXD = VAX VAX = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c ${VAXD}/vax_io.c \ ${VAXD}/vax_cis.c ${VAXD}/vax_octa.c ${VAXD}/vax_cmode.c \ @@ -1748,7 +1764,7 @@ ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \ i7094 ibm1130 id16 id32 sds lgp h316 cdc1700 \ swtp6800mp-a swtp6800mp-a2 tx-0 ssem b5500 isys8010 isys8020 \ isys8030 isys8024 imds-225 scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 \ - i650 + i650 sigma uc15 all : ${ALL} @@ -1833,6 +1849,14 @@ ${BIN}pdp11${EXE} : ${PDP11} ${SIM} ${MKDIRBIN} ${CC} ${PDP11} ${SIM} ${PDP11_OPT} $(CC_OUTSPEC) ${LDFLAGS} +uc15 : ${BIN}uc15${EXE} + +${BIN}uc15${EXE} : ${UC15} ${SIM} + ${MKDIRBIN} + ${CC} ${UC15} ${SIM} ${UC15_OPT} $(CC_OUTSPEC) ${LDFLAGS} + +vax : ${BIN}vax${EXE} + vax : microvax3900 microvax3900 : ${BIN}BuildROMs${EXE} ${BIN}microvax3900${EXE}