mirror of
https://github.com/open-simh/simh.git
synced 2026-01-25 19:57:36 +00:00
Notes For V3.0-0
Because some key files have changed, V3.0 should be unzipped to a clean directory. 1. New Features in 3.0-0 1.1 SCP and Libraries - Added ASSIGN/DEASSIGN (logical name) commands. - Changed RESTORE to unconditionally detach files. - Added E11 and TPC format support to magtape library. - Fixed bug in SHOW CONNECTIONS. - Added USE_ADDR64 support 1.2 All magtapes - Magtapes support SIMH format, E11 format, and TPC format (read only). - SET <tape_unit> FORMAT=format sets the specified tape unit's format. - SHOW <tape_unit> FORMAT displays the specified tape unit's format. - Tape format can also be set as part of the ATTACH command, using the -F switch. 1.3 VAX - VAX can be compiled without USE_INT64. - If compiled with USE_INT64 and USE_ADDR64, RQ and TQ controllers support files > 2GB. - VAX ROM has speed control (SET ROM DELAY/NODELAY). 2. Bugs Fixed in 3.01-0 2.1 VAX - Fixed CVTfi bug: integer overflow not set if exponent out of range - Fixed EMODx bugs: o First and second operands reversed o Separated fraction received wrong exponent o Overflow calculation on separated integer incorrect o Fraction not set to zero if exponent out of range - Fixed interval timer and ROM access to pass power-up self-test even on very fast host processors (fixes from Mark Pizzolato). 2.2 1401 - Fixed mnemonic, instruction lengths, and reverse scan length check bug for MCS. - Fixed MCE bug, BS off by 1 if zero suppress. - Fixed chaining bug, D lost if return to SCP. - Fixed H branch, branch occurs after continue. - Added check for invalid 8 character MCW, LCA. - Fixed magtape load-mode end of record response. 2.3 Nova - Fixed DSK variable size interaction with restore. 2.4 PDP-1 - Fixed DT variable size interaction with restore. 2.5 PDP-11 - Fixed DT variable size interaction with restore. - Fixed bug in MMR1 update (found by Tim Stark). - Added XQ features and fixed bugs: o Corrected XQ interrupts on IE state transition (code by Tom Evans). o Added XQ interrupt clear on soft reset. o Removed XQ interrupt when setting XL or RL (multiple people). o Added SET/SHOW XQ STATS. o Added SHOW XQ FILTERS. o Added ability to split received packet into multiple buffers. o Added explicit runt and giant packet processing. 2.6 PDP-18B - Fixed DT, RF variable size interaction with restore. - Fixed MT bug in MTTR. 2.7 PDP-8 - Fixed DT, DF, RF, RX variable size interaction with restore. - Fixed MT bug in SKTR. 2.8 HP2100 - Fixed bug in DP (13210A controller only), DQ read status. - Fixed bug in DP, DQ seek complete. 2.9 GRI - Fixed bug in SC queue pointer management. 3. New Features in 3.0 vs prior releases N/A 4. Bugs Fixed in 3.0 vs prior releases N/A 5. General Notes WARNING: The RESTORE command has changed. RESTORE will now detach an attached file on a unit, if that unit did not have an attached file in the saved configuration. This is required to assure that the unit flags and the file state are consistent. WARNING: The compilation scheme for the PDP-10, PDP-11, and VAX has changed. Use one of the supplied build files, or read the documentation carefully, before compiling any of these simulators.
This commit is contained in:
committed by
Mark Pizzolato
parent
43385c9616
commit
4ffd3be790
48
sim_ether.c
48
sim_ether.c
@@ -1,7 +1,7 @@
|
||||
/* sim_ether.c: OS-dependent network routines
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2002, David T. Hittner
|
||||
Copyright (c) 2002-2003, David T. Hittner
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -53,6 +53,14 @@
|
||||
|
||||
Modification history:
|
||||
|
||||
30-May-03 DTH Changed WIN32 to _WIN32 for consistency
|
||||
07-Mar-03 MP Fixed Linux implementation of PacketGetAdapterNames to also
|
||||
work on Red Hat 6.2-sparc and Debian 3.0r1-sparc.
|
||||
03-Mar-03 MP Changed logging to be consistent on stdout and sim_log
|
||||
01-Feb-03 MP Changed type of local variables in eth_packet_trace to
|
||||
conform to the interface needs of eth_mac_fmt wich produces
|
||||
char data instead of unsigned char data. Suggested by the
|
||||
DECC compiler.
|
||||
15-Jan-03 DTH Corrected PacketGetAdapterNames parameter2 datatype
|
||||
26-Dec-02 DTH Merged Mark Pizzolato's enhancements with main source
|
||||
Added networking documentation
|
||||
@@ -178,8 +186,8 @@ uint32 eth_crc32(uint32 crc, const void* vbuf, size_t len)
|
||||
|
||||
void eth_packet_trace(ETH_PACK* packet, char* msg)
|
||||
{
|
||||
unsigned char src[20];
|
||||
unsigned char dst[20];
|
||||
char src[20];
|
||||
char dst[20];
|
||||
unsigned short* proto = (unsigned short*) &packet->msg[12];
|
||||
uint32 crc = eth_crc32(0, packet->msg, packet->len);
|
||||
eth_mac_fmt((ETH_MAC*)&packet->msg[0], dst);
|
||||
@@ -209,7 +217,7 @@ void eth_zero(ETH_DEV* dev)
|
||||
/* Non-implemented versions */
|
||||
/*============================================================================*/
|
||||
|
||||
#if !defined (WIN32) && !defined(linux) && !defined(__NetBSD__) && \
|
||||
#if !defined (_WIN32) && !defined(linux) && !defined(__NetBSD__) && \
|
||||
!defined (__OpenBSD__) || !defined (USE_NETWORK)
|
||||
t_stat eth_open (ETH_DEV* dev, char* name)
|
||||
{return SCPE_NOFNC;}
|
||||
@@ -233,9 +241,9 @@ int eth_devices (int max, ETH_LIST* dev)
|
||||
|
||||
#include <ctype.h>
|
||||
#include <pcap.h>
|
||||
#ifdef WIN32
|
||||
#ifdef _WIN32
|
||||
#include <packet32.h>
|
||||
#endif /* WIN32 */
|
||||
#endif /* _WIN32 */
|
||||
#if defined (__NetBSD__) || defined (__OpenBSD__)
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/bpf.h>
|
||||
@@ -270,9 +278,11 @@ t_stat eth_open(ETH_DEV* dev, char* name)
|
||||
memset(errbuf, 0, sizeof(errbuf));
|
||||
dev->handle = (void*) pcap_open_live(savname, bufsz, ETH_PROMISC, -1, errbuf);
|
||||
if (!dev->handle) { /* can't open device */
|
||||
printf ("Eth: pcap_open_live error - %s\n", errbuf);
|
||||
if (sim_log) fprintf (sim_log, "Eth: pcap_open_live error - %s\n", errbuf);
|
||||
return SCPE_OPENERR;
|
||||
} else {
|
||||
printf ("Eth: opened %s\n", savname);
|
||||
if (sim_log) fprintf (sim_log, "Eth: opened %s\n", savname);
|
||||
}
|
||||
|
||||
@@ -350,7 +360,7 @@ void eth_callback(u_char* info, const struct pcap_pkthdr* header, const u_char*
|
||||
int i;
|
||||
for (i = 0; i < ETH_FILTER_MAX; i++) {
|
||||
if (memcmp(data, dev->filter_address[i], 6) == 0) to_me = 1;
|
||||
#ifdef WIN32
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
WinPcap has a known bug/feature that whenever a packet is transmitted,
|
||||
it is looped back into the receive buffers. This is not consistant with the
|
||||
@@ -363,7 +373,7 @@ void eth_callback(u_char* info, const struct pcap_pkthdr* header, const u_char*
|
||||
the network has the same DECNET address and refuses to start, giving an
|
||||
"Invalid media address" error.
|
||||
|
||||
This code section was ifdef'd for WIN32 only to allow other OS's a chance to
|
||||
This code section was ifdef'd for _WIN32 only to allow other OS's a chance to
|
||||
properly implement the above behavior. If it breaks the ethernet simulator
|
||||
on other platforms, remove the ifdef so that it will affect your platform,
|
||||
and then notify the author so that he can fix the ifdef. :-)
|
||||
@@ -497,7 +507,7 @@ int eth_devices(int max, ETH_LIST* list)
|
||||
return index; /* count of devices */
|
||||
}
|
||||
|
||||
#endif /* (WIN32 || linux || __NetBSD__ || __OpenBSD__) && USE_NETWORK */
|
||||
#endif /* (_WIN32 || linux || __NetBSD__ || __OpenBSD__) && USE_NETWORK */
|
||||
|
||||
/*============================================================================*/
|
||||
/* linux-specific code */
|
||||
@@ -534,13 +544,27 @@ int PacketGetAdapterNames(char* buffer, unsigned long* size)
|
||||
|
||||
while (ioctl(sock, SIOCGIFNAME, &ifr) == 0) {
|
||||
/* Only use ethernet interfaces */
|
||||
ioctl(sock, SIOCGIFHWADDR, &ifr);
|
||||
if (ifr.ifr_hwaddr.sa_family == ARPHRD_ETHER) {
|
||||
if ((0 == ioctl(sock, SIOCGIFHWADDR, &ifr)) &&
|
||||
(ifr.ifr_hwaddr.sa_family == ARPHRD_ETHER)) {
|
||||
strcpy(buffer+ptr, ifr.ifr_name);
|
||||
ptr += strlen(buffer)+1;
|
||||
ptr += strlen(buffer+ptr)+1;
|
||||
}
|
||||
ifr.ifr_ifindex = ++iindex;
|
||||
}
|
||||
if (ptr == 0) { /* Found any Ethernet Interfaces? */
|
||||
/* No, so try some good guesses since the SIOCGIFNAME ioctl
|
||||
doesn't always return the ethernet interfaces, at least not
|
||||
Debian or Red Hat running on sparc boxes. */
|
||||
|
||||
for (iindex=0; iindex < 10; ++iindex) {
|
||||
sprintf(ifr.ifr_name, "eth%d", iindex);
|
||||
if ((0 == ioctl(sock, SIOCGIFHWADDR, &ifr)) &&
|
||||
(ifr.ifr_hwaddr.sa_family == ARPHRD_ETHER)) {
|
||||
strcpy(buffer+ptr, ifr.ifr_name);
|
||||
ptr += strlen(buffer+ptr)+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close(sock);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user