AppleWin/source/W5100.h
Andrea 60cbbb40db
Uthernet II: 2 fixes and minor changes (PR #1100)
* Enable virtual DNS by default.
* Improve handling of header size:
This fixes an issue in UDP, where it would not take the header size into account when deciding how much to read.
* IPRAW socket. Fix an issue where the header would include "our" IP Address.
The doc is not very clear 5.2.3: they say "destination". But for consistency with UDP (5.2.2) where it seems clear that this is the peer's ip, we replace with the "destination" of the socket, or the "source" of the packet.
* minor tweak: signal with SOCK_SYNSENT that a connection is being established.
* remove Socket::myErrno as it serves no purpose.
It is a duplicate of (sn_sr == W5100_SN_SR_SOCK_SYNSENT).
* add some logging when reading/writing on a closed socket.
2022-05-19 19:30:34 +01:00

107 lines
4.1 KiB
C

#pragma once
// Uthernet II registers
#define U2_C0X_MODE_REGISTER 0x04
#define U2_C0X_ADDRESS_HIGH 0x05
#define U2_C0X_ADDRESS_LOW 0x06
#define U2_C0X_DATA_PORT 0x07
// W5100 registers and values
#define W5100_MR 0x0000
#define W5100_GAR0 0x0001
#define W5100_GAR3 0x0004
#define W5100_SUBR0 0x0005
#define W5100_SUBR3 0x0008
#define W5100_SHAR0 0x0009
#define W5100_SHAR5 0x000E
#define W5100_SIPR0 0x000F
#define W5100_SIPR3 0x0012
#define W5100_RTR0 0x0017
#define W5100_RTR1 0x0018
#define W5100_RCR 0x0019
#define W5100_RMSR 0x001A
#define W5100_TMSR 0x001B
#define W5100_PTIMER 0x0028
#define W5100_UPORT1 0x002F
#define W5100_S0_BASE 0x0400
#define W5100_S3_MAX 0x07FF
#define W5100_TX_BASE 0x4000
#define W5100_RX_BASE 0x6000
#define W5100_MEM_MAX 0x7FFF
#define W5100_MEM_SIZE 0x8000
#define W5100_MR_IND 0x01 // 0
#define W5100_MR_AI 0x02 // 1
#define W5100_MR_PPOE 0x08 // 3
#define W5100_MR_PB 0x10 // 4
#define W5100_MR_RST 0x80 // 7
#define W5100_SN_MR_PROTO_MASK 0x0F
#define W5100_SN_MR_MF 0x40 // 6
#define W5100_SN_MR_CLOSED 0x00
#define W5100_SN_MR_TCP 0x01
#define W5100_SN_MR_UDP 0x02
#define W5100_SN_MR_IPRAW 0x03
#define W5100_SN_MR_MACRAW 0x04
#define W5100_SN_MR_PPPOE 0x05
#define W5100_SN_VIRTUAL_DNS 0x08 // not present on real hardware, see comment in Uthernet2.cpp
#define W5100_SN_MR_TCP_DNS (W5100_SN_VIRTUAL_DNS | W5100_SN_MR_TCP)
#define W5100_SN_MR_UDP_DNS (W5100_SN_VIRTUAL_DNS | W5100_SN_MR_UDP)
#define W5100_SN_MR_IPRAW_DNS (W5100_SN_VIRTUAL_DNS | W5100_SN_MR_IPRAW)
#define W5100_SN_CR_OPEN 0x01
#define W5100_SN_CR_LISTENT 0x02
#define W5100_SN_CR_CONNECT 0x04
#define W5100_SN_CR_DISCON 0x08
#define W5100_SN_CR_CLOSE 0x10
#define W5100_SN_CR_SEND 0x20
#define W5100_SN_CR_RECV 0x40
#define W5100_SN_MR 0x00
#define W5100_SN_CR 0x01
#define W5100_SN_SR 0x03
#define W5100_SN_PORT0 0x04
#define W5100_SN_PORT1 0x05
#define W5100_SN_DHAR0 0x06
#define W5100_SN_DHAR1 0x07
#define W5100_SN_DHAR2 0x08
#define W5100_SN_DHAR3 0x09
#define W5100_SN_DHAR4 0x0A
#define W5100_SN_DHAR5 0x0B
#define W5100_SN_DIPR0 0x0C
#define W5100_SN_DIPR1 0x0D
#define W5100_SN_DIPR2 0x0E
#define W5100_SN_DIPR3 0x0F
#define W5100_SN_DPORT0 0x10
#define W5100_SN_DPORT1 0x11
#define W5100_SN_PROTO 0x14
#define W5100_SN_TOS 0x15
#define W5100_SN_TTL 0x16
#define W5100_SN_TX_FSR0 0x20 // TX Free Size
#define W5100_SN_TX_FSR1 0x21 // TX Free Size
#define W5100_SN_TX_RD0 0x22 // TX Read Pointer
#define W5100_SN_TX_RD1 0x23 // TX Read Pointer
#define W5100_SN_TX_WR0 0x24 // TX Write Pointer
#define W5100_SN_TX_WR1 0x25 // TX Write Pointer
#define W5100_SN_RX_RSR0 0x26 // RX Receive Size
#define W5100_SN_RX_RSR1 0x27 // RX Receive Size
#define W5100_SN_RX_RD0 0x28 // RX Read Pointer
#define W5100_SN_RX_RD1 0x29 // RX Read Pointer
#define W5100_SN_DNS_NAME_LEN 0x2A // these are not present on real hardware, see comment in Uthernet2.cpp
#define W5100_SN_DNS_NAME_BEGIN 0x2B
#define W5100_SN_DNS_NAME_END 0xFF
#define W5100_SN_DNS_NAME_CPTY (W5100_SN_DNS_NAME_END - W5100_SN_DNS_NAME_BEGIN)
#define W5100_SN_SR_CLOSED 0x00
#define W5100_SN_SR_SOCK_INIT 0x13
#define W5100_SN_SR_SOCK_SYNSENT 0x15
#define W5100_SN_SR_ESTABLISHED 0x17
#define W5100_SN_SR_SOCK_UDP 0x22
#define W5100_SN_SR_SOCK_IPRAW 0x32
#define W5100_SN_SR_SOCK_MACRAW 0x42