mirror of
https://github.com/simh/simh.git
synced 2026-05-04 15:05:39 +00:00
Notes For V3.9
The makefile now works for Linux and most Unix's. However, for Solaris and MacOS, you must first export the OSTYPE environment variable: > export OSTYPE > make Otherwise, you will get build errors. 1. New Features 1.1 3.9-0 1.1.1 SCP and libraries - added *nix READLINE support (Mark Pizzolato) - added "SHOW SHOW" and "SHOW <dev> SHOW" commands (Mark Pizzolato) - added support for BREAK key on Windows (Mark Pizzolato) 1.1.2 PDP-8 - floating point processor is now enabled 2. Bugs Fixed Please see the revision history on http://simh.trailing-edge.com or in the source module sim_rev.h. 3. Status Report This is the last release of SimH for which I will be sole editor. After this release, the source is moving to a public repository: under the general editorship of Dave Hittner and Mark Pizzolato. The status of the individual simulators is as follows: 3.1 PDP-1 Stable and working; runs available software. 3.2 PDP-4/7/9/15 Stable and working; runs available software. 3.3 PDP-8 Stable and working; runs available software. 3.4 PDP-10 [KS-10 only] Stable and working; runs available software. 3.5 PDP-11 Stable and working; runs available system software. The emulation of individual models has numerous errors of detail, which prevents many diagnostics from running correctly. 3.6 VAX-11/780 Stable and working; runs available software. 3.7 MicroVAX 3900 (VAX) Stable and working; runs available software. Thanks to the kind generosity of Camiel Vanderhoeven, this simulator has been verified with AXE, the VAX architectural exerciser. 3.8 Nova Stable and working; runs available software. 3.9 Eclipse Stable and working, but not really supported. There is no Eclipse-specific software available under a hobbyist license. 3.10 Interdata 16b Stable and working, but no software for it has been found, other than diagnostics. 3.11 Interdata 32b Stable and working; runs 32b UNIX and diagnostics. 3.12 IBM 1401 Stable and working; runs available software. 3.13 IBM 1620 Hand debug only. No software for it has been found or tested. 3.14 IBM 7094 Stable and working as a stock system; runs IBSYS. The CTSS extensions have not been debugged. 3.15 IBM S/3 Stable and working, but not really supported. Runs available software. 3.16 IBM 1130 Stable and working; runs available software. Supported and edited by Brian Knittel. 3.17 HP 2100/1000 Stable and working; runs available software. Supported and edited by Dave Bryan. 3.18 Honeywell 316/516 Stable and working; runs available software. 3.19 GRI-909/99 Hand debug only. No software for it has been found or tested. 3.20 SDS-940 Hand debug only, and a few diagnostics. 3.21 LGP-30 Unfinished; hand debug only. Does not run available software, probably due to my misunderstanding of the LGP-30 operational procedures. 3.22 Altair (original 8080 version) Stable and working, but not really supported. Runs available software. 3.23 AltairZ80 (Z80 version) Stable and working; runs available software. Supported and edited by Peter Schorn. 3.24 SWTP 6800 Stable and working; runs available software. Supported and edited by Bill Beech 3.25 Sigma 32b Incomplete; more work is needed on the peripherals for accuracy. 3.26 Alpha Incomplete; essentially just an EV-5 (21164) chip emulator. 4. Suggestions for Future Work 4.1 General Structure - Multi-threading, to allow true concurrency between SCP and the simulator - Graphics device support, particularly for the PDP-1 and PDP-11 4.2 Current Simulators - PDP-1 graphics, to run Space War - PDP-11 GT40 graphics, to run Lunar Lander - PDP-15 MUMPS-15 - Interdata native OS debug, both 16b and 32b - SDS 940 timesharing operating system debug - IBM 7094 CTSS feature debug and operating system debug - IBM 1620 debug and software - GRI-909 software - Sigma 32b completion and debug - LGP-30 debug 4.3 Possible Future Simulators - Data General MV8000 (if a hobbyist license can be obtained for AOS) - Alpha simulator - HP 3000 (16b) simulator with MPE
This commit is contained in:
@@ -68,6 +68,9 @@
|
||||
|
||||
Modification history:
|
||||
|
||||
20-Apr-11 MP Fixed missing information from save/restore which
|
||||
caused operations to not complete correctly after
|
||||
a restore until the OS reset the controller.
|
||||
09-Dec-10 MP Added address conflict check during attach.
|
||||
06-Dec-10 MP Fixed loopback processing to correctly handle forward packets.
|
||||
29-Nov-10 MP Fixed interrupt dispatch issue which caused delivered packets
|
||||
@@ -367,7 +370,11 @@ REG xqa_reg[] = {
|
||||
{ GRDATA ( TBINDX, xqa.tbindx, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( RBINDX, xqa.rbindx, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( IDTMR, xqa.idtmr, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( VECTOR, xqa_dib.vec, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( MUST_POLL, xqa.must_poll, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( SANT_ENAB, xqa.sanity.enabled, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( SANT_QSECS, xqa.sanity.quarter_secs, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( SANT_TIMR, xqa.sanity.timer, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
@@ -419,7 +426,11 @@ REG xqb_reg[] = {
|
||||
{ GRDATA ( TBINDX, xqb.tbindx, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( RBINDX, xqb.rbindx, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( IDTMR, xqb.idtmr, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( VECTOR, xqb_dib.vec, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( MUST_POLL, xqb.must_poll, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( SANT_ENAB, xqb.sanity.enabled, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( SANT_QSECS, xqb.sanity.quarter_secs, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ GRDATA ( SANT_TIMR, xqb.sanity.timer, XQ_RDX, 32, 0), REG_HRO},
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
@@ -439,10 +450,10 @@ MTAB xq_mod[] = {
|
||||
{ MTAB_XTD | MTAB_VDV, 0, "TYPE", "TYPE={DEQNA|DELQA|DELQA-T}",
|
||||
&xq_set_type, &xq_show_type, NULL },
|
||||
#ifdef USE_READER_THREAD
|
||||
{ MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500|DELAY=nnn}",
|
||||
{ MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500|DELAY=nnn}",
|
||||
&xq_set_poll, &xq_show_poll, NULL },
|
||||
#else
|
||||
{ MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500}",
|
||||
{ MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500}",
|
||||
&xq_set_poll, &xq_show_poll, NULL },
|
||||
#endif
|
||||
{ MTAB_XTD | MTAB_VDV | MTAB_NMO, 0, "SANITY", "SANITY={ON|OFF}",
|
||||
@@ -469,7 +480,7 @@ DEVICE xq_dev = {
|
||||
2, XQ_RDX, 11, 1, XQ_RDX, 16,
|
||||
&xq_ex, &xq_dep, &xq_reset,
|
||||
NULL, &xq_attach, &xq_detach,
|
||||
&xqa_dib, DEV_DISABLE | DEV_QBUS | DEV_DEBUG,
|
||||
&xqa_dib, DEV_FLTA | DEV_DISABLE | DEV_QBUS | DEV_DEBUG,
|
||||
0, xq_debug
|
||||
};
|
||||
|
||||
@@ -478,7 +489,7 @@ DEVICE xqb_dev = {
|
||||
2, XQ_RDX, 11, 1, XQ_RDX, 16,
|
||||
&xq_ex, &xq_dep, &xq_reset,
|
||||
NULL, &xq_attach, &xq_detach,
|
||||
&xqb_dib, DEV_DISABLE | DEV_DIS | DEV_QBUS | DEV_DEBUG,
|
||||
&xqb_dib, DEV_FLTA | DEV_DISABLE | DEV_DIS | DEV_QBUS | DEV_DEBUG,
|
||||
0, xq_debug
|
||||
};
|
||||
|
||||
@@ -1678,6 +1689,16 @@ t_stat xq_process_loopback(CTLR* xq, ETH_PACK* pack)
|
||||
physical_address = &xq->var->setup.macs[0];
|
||||
else
|
||||
physical_address = &xq->var->mac;
|
||||
|
||||
/* The only packets we should be responding to are ones which
|
||||
we received due to them being directed to our physical MAC address,
|
||||
OR the Broadcast address OR to a Multicast address we're listening to
|
||||
(we may receive others if we're in promiscuous mode, but shouldn't
|
||||
respond to them) */
|
||||
if ((0 == (pack->msg[0]&1)) && /* Multicast or Broadcast */
|
||||
(0 != memcmp(physical_address, pack->msg, sizeof(ETH_MAC))))
|
||||
return SCPE_NOFNC;
|
||||
|
||||
memcpy (&response.msg[0], &response.msg[offset+2], sizeof(ETH_MAC));
|
||||
memcpy (&response.msg[6], physical_address, sizeof(ETH_MAC));
|
||||
offset += 8 - 16; /* Account for the Ethernet Header and Offset value in this number */
|
||||
@@ -2366,7 +2387,7 @@ t_stat xq_reset(DEVICE* dptr)
|
||||
xq->var->sanity.quarter_secs = XQ_HW_SANITY_SECS * 4/*qsec*/;
|
||||
}
|
||||
|
||||
return SCPE_OK;
|
||||
return auto_config (0, 0); /* run autoconfig */
|
||||
}
|
||||
|
||||
void xq_reset_santmr(CTLR* xq)
|
||||
@@ -2567,15 +2588,16 @@ t_stat xq_attach(UNIT* uptr, char* cptr)
|
||||
if (status != SCPE_OK) {
|
||||
free(tptr);
|
||||
free(xq->var->etherface);
|
||||
xq->var->etherface = 0;
|
||||
xq->var->etherface = NULL;
|
||||
return status;
|
||||
}
|
||||
if (xq->var->poll == 0) {
|
||||
status = eth_set_async(xq->var->etherface, xq->var->coalesce_latency_ticks);
|
||||
if (status != SCPE_OK) {
|
||||
eth_close(xq->var->etherface);
|
||||
free(tptr);
|
||||
free(xq->var->etherface);
|
||||
xq->var->etherface = 0;
|
||||
xq->var->etherface = NULL;
|
||||
return status;
|
||||
}
|
||||
xq->var->must_poll = 0;
|
||||
@@ -2589,6 +2611,8 @@ t_stat xq_attach(UNIT* uptr, char* cptr)
|
||||
printf("%s: MAC Address Conflict on LAN for address %s, change the MAC address to a unique value\n", xq->dev->name, buf);
|
||||
if (sim_log) fprintf (sim_log, "%s: MAC Address Conflict on LAN for address %s, change the MAC address to a unique value\n", xq->dev->name, buf);
|
||||
eth_close(xq->var->etherface);
|
||||
free(xq->var->etherface);
|
||||
xq->var->etherface = NULL;
|
||||
return SCPE_NOATT;
|
||||
}
|
||||
uptr->filename = tptr;
|
||||
@@ -2597,8 +2621,27 @@ t_stat xq_attach(UNIT* uptr, char* cptr)
|
||||
/* turn on transceiver power indicator */
|
||||
xq_csr_set_clr(xq, XQ_CSR_OK, 0);
|
||||
|
||||
/* reset the device with the new attach info */
|
||||
xq_reset(xq->dev);
|
||||
/* init read queue (first time only) */
|
||||
status = ethq_init(&xq->var->ReadQ, XQ_QUE_MAX);
|
||||
if (status != SCPE_OK)
|
||||
return status;
|
||||
|
||||
if (xq->var->mode == XQ_T_DELQA_PLUS)
|
||||
eth_filter_hash (xq->var->etherface, 1, &xq->var->init.phys, 0, xq->var->init.mode & XQ_IN_MO_PRO, &xq->var->init.hash_filter);
|
||||
else
|
||||
if (xq->var->setup.valid) {
|
||||
int i, count = 0;
|
||||
ETH_MAC zeros = {0, 0, 0, 0, 0, 0};
|
||||
ETH_MAC filters[XQ_FILTER_MAX + 1];
|
||||
|
||||
for (i = 0; i < XQ_FILTER_MAX; i++)
|
||||
if (memcmp(zeros, &xq->var->setup.macs[i], sizeof(ETH_MAC)))
|
||||
memcpy (filters[count++], xq->var->setup.macs[i], sizeof(ETH_MAC));
|
||||
eth_filter (xq->var->etherface, count, filters, xq->var->setup.multicast, xq->var->setup.promiscuous);
|
||||
}
|
||||
else
|
||||
/* reset the device with the new attach info */
|
||||
xq_reset(xq->dev);
|
||||
|
||||
return SCPE_OK;
|
||||
}
|
||||
@@ -2613,7 +2656,7 @@ t_stat xq_detach(UNIT* uptr)
|
||||
if (uptr->flags & UNIT_ATT) {
|
||||
eth_close (xq->var->etherface);
|
||||
free(xq->var->etherface);
|
||||
xq->var->etherface = 0;
|
||||
xq->var->etherface = NULL;
|
||||
free(uptr->filename);
|
||||
uptr->filename = NULL;
|
||||
uptr->flags &= ~UNIT_ATT;
|
||||
|
||||
Reference in New Issue
Block a user