Redesigned Interrupt Handling so there are no fixed InterruptHandler delegates, but rather a method of assigning an interrupt handler to any IRQ number. This was needed because when booting on different hardware (actual hardware), the IRQ's assigned by ACPI to the PCI cards are not fixed. So for instance, the RTL8139 card got an IRQ12, whereas under QEMU it was IRQ11.
Updated all network drivers as well as the ES1370 and Keyboard drivers to use the new IRQ Handling methods.
Updated all network drivers to send out minimum 64 byte ethernet packets as smaller than this is not accepted by most network cards
TCP Packets larger than 255 bytes now have their TCP Checksum correctly calculated.
Large packet fragmentation now happens.
MSS is negotiated during connection startup
Update Global to call driver initialization routines for different drivers. Devices are enumerated during startup regardless of what hardware you are using.
Update FrodeTest workspace to run via new NetworkDevice interface
Update Builder.cs so that QEMU gets called with only either "-net tap" or "-net user", as these two options conflict
Internalized most of the TCP/IP stack leaving only the User needed classes available to use.
Commented most of TCP/IP stack public methods, and cleaned out code a little bit.
Cosmos.Sys project outputs XML documentation for classes that have documentation. This should be helpful for people playing around with the new User Kit.
Moved Chad's files into a seperate folder for now
Removed all TCP Stack related files from my workspace
Updated my workspace Program.cs to demo how TCPIPStack class should be used
Added event delegate so TCP Stack can attach itself to receive data from NetworkDevice
Added another MAC Address constant 00:00:00:00:00:00 as MACAddress.Zero
Fixed Read8 and Read32 implementations. PCI Standard requires all reads to be 32-bits so reading 32-bit register and shifting to required register for result
Fixed Enable command to OR required parameters instead of ANDing them