So this is for an all-custom computer, which is rather more impressive on its own (to say nothing of "So I made a C compiler."), but now I'm curious what the minimal implementation of an ethernet card for a "normal" PC would be. I suspect a lot of it would be very similar, up to that you could do checksums on the PC's CPU (probably just baked into the driver). It'd need to be attached - either bare serial or more usefully USB? And then you'd either need to write a "real" driver for it or else plumb through to userspace and do it there. For similar things I've eyeballed having the device implement <a href="https://en.wikipedia.org/wiki/USB_communications_device_class" rel="nofollow">https://en.wikipedia.org/wiki/USB_communications_device_clas...</a> so it "just works" without needing to do your own driver, but I don't think that would play nice with things like doing all the checksums host-side. Or... while searching for that, I stumbled across <a href="https://en.wikipedia.org/wiki/Ethernet_over_USB" rel="nofollow">https://en.wikipedia.org/wiki/Ethernet_over_USB</a> , which <i>maybe</i> suggests that you can just build an adaptor that translates the physical connection to USB and then let the computer magically handle all the rest for you? Dunno, over my head.