The January 2016 edition of Marina is compatible with the new Uthernet II from a2RetroSystems.
Find updated demo disk, user’s manual, and source code at the Marina web site.
The source code disk also has some sample programs that use the Uthernet II’s built-in TCP/IP stack. Marina’s Uthernet II driver is in UTH2.S and is an example of how to interface with the MAC Raw mode of the W5100.
Several bugs are fixed, and there have been some advancements towards the TCP implementation, mostly in the sockets interface, but I also have the TCP checksum routine written, and parts of the port demultiplexer going too. The DNS resolver now uses the sockets API, but I’m in the middle of writing a GETHOSTBYNAME function call, so in this edition of Marina it never processes the reply from the server. Not a big deal.
Now that I’ve got the Uthernet II driver done, I can switch back to the Uthernet and focus on completing TCP, as well as other smaller items on my to do list.
But I am also open to working on other areas of Marina. So if anyone has any suggestions or other input, I’m all ears.
Now that the Uthernet II is out and in the hands of hundreds of people, completing Marina is really now just a learning exercise for me.
Anyone who is seriously considering writing a networking application, or heaven forbid, a game, should go with the Uthernet II’s built-in TCP/IP stack, which you will find is fairly competently described in the Uthernet II manual, which I will also update later this week (and hopefully finish before too long).
There is also a new document in the Marina Technical Library called “The New Uthernet II Send Sequence” which describes a less-headache-inducing method of transferring data to/from the W5100. It may need to be updated a little, but overall the technique is sound.
And now, here’s the big change list since the October 2015 edition of Marina:
– Uthernet II driver added
– ARPINIT sets MAC address in various ARP templates
– Fixed check for LLBCAST flag in HANDLEIP
– Don’t pad DHCPDISCOVER and REQUEST messages to 300 bytes
– Fixed check for DHCP replies when no IP address is configured
– Allow SOTYPETCP in SOCKET
– Started writing LISTEN for TCP sockets
– Moved HANDLETCP to TCP.S
– Moved IPHEADCHKSUM to IP.S
– Moved IPCONFIG and IPRECONFIG to IPCONFIG.S
– Removed missed frame count from ETH.S
– Wrote TCPCHKSUM
– Fixed random number generation for link-local address
– Fixed check for NSTXID in DNSRESOLVE
– Wrote VERIPADDR
– Wrote GETHOSTBYNAME
– Modified DNSRESOLVE to use Sockets API
– OUTPHEAD buffer size increased for TCP
– Moved HANDLEIP to IP.S
– Wrote GETSOCKOPT
– Added REUSEPORT socket option
– Uthernet driver scans slots for CS8900A
– Uthernet driver counts transmission failures in TXFAILS
– Socket RECV demo prints all data received, beyond 256 bytes
– SEND eliminated from Uthernet driver; falls into SEND16