Okay, I admit I went a bit overboard.
In the process of trying to determine why my IOBlix ethernet was crawling at 50K/13K per second transfer rates and locking up OS 4.0 on my A4000/CyberstormPPC, I have completely disassembled the ioblixether.device v37.17 using IDA Pro.
I am still going through and naming the data and flags in the 3314 bytes of private data, adding bit names, logical function names, etc., but have done enough that it is becoming trivial. I am a Software Engineer for Delphi, and I have actually enjoyed doing this in the evenings; but it would have sure been a lot easier if the original source were available!
I used 37.17 since it is the latest that actually works. Now I can actually determine what changes were made for 37.20, and why it is broken - and fix it.
I am just wondering, how many people are there using the Zorro-II IOBlix ethernet and need a new device driver???
After spending a week doing this, I found the primary problem is duplex mismatch. Duh. The 91C96 doesn't support Nway (autonegotiation). Lesson #1 is plugging a 10BaseT device without autonegotiation fixed at full-duplex into a switch with autonegotiation will 100% of the time result in a duplex mismatch. The switch will detect the speed, but cannot detect the duplex and defaults to HALF duplex. Performance drops by 90% or more.
Connecting to a NIC forced to full duplex, my transfer rates are 994KB/sec in both directions measured using tcpspeed under OS3.9. Excellent! This leaves a negligible margin for improvement.
Now the million $$$ questions is, what switch has fixed 10MB full duplex on one port and autonegotiation on another so I can hook this up to my gigabit router; effectively adding autonegotiation to the IOBlix and making it useable in full duplex? I don't want half duplex.
Back to the device driver. The real reason I disassmbled it is to get it working on OS4.0. I suspect that it may be the JIT compiler choking on the use of the skipw trick
skipw MACRO
IFNE NARG
FAIL !!! NO ARGUMENTS ALLOWED !!!
ENDC
dc.w $0c40 ;CMPI.W #?

,d0
ENDM
This is used in a couple places in the device driver. I can't find enough information about the OS4.0 JIT to know if this is an issue or not. If it is, an easy fix.
:rtfm: