Pervasive misuse of "ETH_MAC *" (a pointer to an ETH_MAC, aka a 6
element unsigned char array) when a simple "ETH_MAC" is correct. The
best example of this was eth_mac_fmt() in sim_ether.c with the following
prototype:
t_stat eth_mac_fmt (ETH_MAC* const mac, char* strmac)
The first parameter is a pointer to an array of 6 unsigned characters,
whereas it really just wants to be a pointer to the first element of the
array:
t_stat eth_mac_scan (const ETH_MAC mac, char* strmac)
The "ETH_MAC *" indirection error also results in subtle memcpy() and
memcmp() issues, e.g.:
void network_func(DEVICE *dev, ETH_MAC *mac)
{
ETH_MAC other_mac;
/* ...code... */
/* memcpy() bug: */
memcpy(other_mac, mac, sizeof(ETH_MAC));
/* or worse: */
memcpy(mac, other_mac, sizeof(ETH_MAC));
}
eth_copy_mac() and eth_mac_cmp() replace calls to memcpy() and memcmp()
that copy or compare Ethernet MAC addresses. These are type-enforcing
functions, i.e., the parameters are ETH_MAC-s, to avoid the subtle
memcpy() and memcmp() bugs.
This fix solves at least one Heisenbug in _eth_close() while free()-ing
write request buffers (and possibly other Heisenbugs.)
Added KS10 support.
CPU Redid instruction decode to improve performance
Triple-I display cleanup.
Normalized end of line to DOS/Unix.
KL10 FE, Cleanup issues with TTY devices hanging simulator..
Fixed errors in RH20 device.
RP and TU drives more independent of RH controller.
Removed DEV_NET and fixed DEV_type on various devices.
Support for 64 lines on KL10 FE by default.
Fixed support for 32 lines on DC10.
Support for TYPE 340 Display undocumented functions.