• Please review our updated Terms and Rules here

What should I look for in an Ethernet card for an XT-class computer?

Bang your skull on the ground hard enough and you can move the Earth. Here it is, running on IRQ2 using the NE2000 driver.

20191114_183123.jpg

I did go back and double check if it would work with the non-patched NE2000 driver because I realized I made a pilot error with that. (I didn't put "0x" in front of the port number, that's why it detected the mac address as aa:aa...) Results were negative. But the patched one does indeed seem to work! If there were someplace to officially document this stuff it seems like we might have an official workaround for IRQ2 on this card.
 
IRQ 0, 1 and 8 are immutable (0 = keyboard; 1 timer tick, 8 = RTC interrupt). The one that starts at 3 probably goes to 15. On a PC AT and above, IRQ 2 doesn't technically exist.

In the case of the Tandy 1000 EX & HX, IRQ 5 is used for the V-sync circuit (for reasons), IRQ 6 is hard tied to the floppy, and IRQ 7 to the parallel port. Only IRQs 2,3 & 4 are actually routed to the expansion bus. Other 1000 models have IRQs 2-7 on the expansion bus, with dip switches to change stuff, but the EX & HX are pretty limited.
 
Just wanted to drop one more word of thanks to everyone who contributed to this thread. Knock-on-wood I feel like I've finally gotten most of the kinks worked out of my RTL8019AS card thanks to your input. Considering the incredibly oddball configuration of the machine it's in it seems to be working great, IRQ2 and all.

(I'm posting this because I just finished running a backup from the XT-CF in my Frankenstein "Tandy 1000 SUX" to a Debian laptop over WiFi using EtherDFS, and happened at a pretty-darn-reasonable speed. I can't help feeling like it's amazing that it works at all, let alone this well.)
 
I've found the source code of latest RTL8019 packet driver (PNPPD.COM) here:

http://www.bitsavers.org/components/..._rtl8019as.zip (password is: rtl8019as)

There is a batch file (make.bat) to build it using TASM but it assembles just fine with MASM. I found the trouble in PNPPD.ASM and made a quick and dirty fix to that IRQ 2==9 on XT bug ... The "fix" is really ugly but it works for now (funny, it seems that they did it right in the ODI driver MSM.ASM Maybe someone can look into it to do a proper fix ...)

And here it is:

<attachment removed, look to my next post>

NOTE: I've not uploaded the patched source because I'm unsure about its legal status and it should be really trivial for anybody with a clue about x86 assembly to patch the source and rebuild it, anyway.
 
Last edited:
Cool! Next I get a chance I’ll see if I can reconfigure things to try the patched driver.

FWIW, I guess it doesn’t look like it made it into this thread, but some time later I determined that the patched Generic NE2000 driver wasn’t actually an acceptable workaround for the 8019AS on IRQ 2; at first things seemed okay, but it later turned out that certain programs (especially the FTP client) were failing because of repeated Ethernet checksum errors. Same errors happened with the card on IRQ3 (while the PNPPD.EXE would work fine) so it wasn’t specifically a problem with the IRQ.

I worked around things by making IRQ2 an option for the second COM port on my homemade serial interface and setting up the CuteMouse driver for that and running PNPPD.EXE on IRQ3, but this fix would avoid that ugliness. (And thus make using the mouse easier in programs with built-in drivers, like Windows, that don’t let you set a custom IRQ.’
 
I've found out where the problem is. In file PNPPD.ASM there is this table:

Code:
...
IRQTable   db 9,3,4,5,10,11,12,15    ; Jasper 10/05/94
...

so the fix is very simple Change this to:

Code:
...
IRQTable   db 2,3,4,5,10,11,12,15    ; DRR 18/12/21
...

and problem solved. Notice that this works also on ATs because in TAIL.ASM there is code to map IRQ 2 to IRQ 9 for them:

Code:
...
;
; Map IRQ 2 to IRQ 9 if needed
;
test  sys_features,TWO_8259  ; 2nd 8259 ?
je     no_mapping_needed        ; no, no mapping needed
cmp int_no,2                          ; map IRQ 2 to IRQ 9.
jne   no_mapping_needed
mov int_no,9
:no_mapping_needed
...

And, if you don't what to reassemble it, you can simply hexedit PNPPD.COM, changing the byte at offset 1493 (hex) from 09 to 02 with an hex editor.

Here is the patched binary:

View attachment pnppd_irq2.zip
 
Last edited:
Back
Top