• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Apple Ethernet NB - does it deliver?

eharmon

Well-known member
Did anyone ever establish what boost that memory has? 2.5MB is huge given transfer speeds on these cards. It seems unlikely it's buffering all that data in.

The only references I can see to the "MCP Memory Expansion Kit" are for the TokenRing card, though obviously it's compatible with Ethernet and potentially other A/ROSE cards.

Very interestingly, one of those references is from this IBM manual for SNA·ps which implies IBM's stack actually loads onto the card for acceleration: http://bitsavers.trailing-edge.com/...Networking_Guide_For_SNA_Products_Oct1991.pdf

Does that imply normal programs can load additional software into the A/ROSE environment to accelerate their network access? That has pretty interesting potential...
 

eharmon

Well-known member

eharmon

Well-known member
Doing the dreaded triple reply: do newer drivers disable the A/ROSE acceleration? From the NSI 1.4.2 release notes:
Ethernet driver version 1.1 for the Apple Ethernet NB Card
==========================================

Ethernet driver version 1.1 now allows the SONIC to transmit packets by building chains "on the fly". This results in a faster Ethernet driver.

This card no longer uses A/ROSE, but runs in "slave" mode. It now uses the same Ethernet driver that the Ethernet NB Twisted-Pair card uses.

Better allocation of memory when Virtual Memory is on.
It does have a SONIC chip on it, so did they just bypass the 68000 entirely? It would be interesting to A/B the 1.0.4 and 1.1 drivers.
 

Phipli

Well-known member
Doing the dreaded triple reply: do newer drivers disable the A/ROSE acceleration? From the NSI 1.4.2 release notes:

It does have a SONIC chip on it, so did they just bypass the 68000 entirely? It would be interesting to A/B the 1.0.4 and 1.1 drivers.
Expensive 68000 decorations if they're not even using it.
 

eharmon

Well-known member
I managed to munge together a copy of the Ethernet NB extension that shipped with 8.0/8.1 to load the 1.0.4 driver from NSI 1.4 instead of it's own (TattleTech seems to indicate it has the right one loaded, anyway).

(For those keeping score, I believe 8.0 and 8.1 ship with 1.1.1 in the System file, but the included extension updates that to 1.2.3 on boot...the 90s were a weird time.)

I have no idea to tell if that is/isn't using A/ROSE before and after, though. I guess I'll have to dig through the A/ROSE developer tools until I can make sense of what the card is doing.

At least now I can A/B one install to switch between the driver before and after this changelog message.

I can confirm though, that the later driver is shared between the NB (A/ROSE) and NB Twisted Pair (just Sonic) and is labelled "Apple Macintosh Sonic 16 NB Ethernet Driver". So it does seem quite likely they no longer use A/ROSE past 1.1.
 

eharmon

Well-known member
Theoretically, the NB and Quadra ethernet probably work with a modification of Glenn's 8390 driver, might be worth a shot if someone wants to spend the effort of making it 83932 compatible. Not sure how different they are, or if the Apple 83932 driver wastes buffer memory like the 8390 does.

 

Arbee

Well-known member
My understanding, which isn't great, is that A/ROSE involves a whole "shared processing" concept between the host Mac and the 68k on the card (the "Cathedral" DSP OS on the Quadra AVs is similar but less convoluted). So with the later driver running the NB card in slave mode, I interpret that to mean the 68000 is still doing something. It's just that whatever that is won't be as over-engineered as A/ROSE.

All of the 8390/8390x cards are based on the 3COM/Novell NE2000 design for the PC, which used the same 8390/8390x Ethernet chips. In that design, the 8390/8390x can DMA only to/from the on-card buffer RAM, and the CPU manually copies to/from that RAM. So it's easy to write drivers for but you can't get great throughput.

SONIC, at least on the Quadras and the LC PDS card, can DMA directly to/from anywhere in the Mac's address space, which cuts out a lot of busywork from the host. And opens up weird possibilities like a replacement driver that does primitive streaming video by just DMAing incoming packets to video RAM. 10BaseT probably isn't fast enough to do anything impressive there though.
 

eharmon

Well-known member
My understanding, which isn't great, is that A/ROSE involves a whole "shared processing" concept between the host Mac and the 68k on the card (the "Cathedral" DSP OS on the Quadra AVs is similar but less convoluted). So with the later driver running the NB card in slave mode, I interpret that to mean the 68000 is still doing something. It's just that whatever that is won't be as over-engineered as A/ROSE.

All of the 8390/8390x cards are based on the 3COM/Novell NE2000 design for the PC, which used the same 8390/8390x Ethernet chips. In that design, the 8390/8390x can DMA only to/from the on-card buffer RAM, and the CPU manually copies to/from that RAM. So it's easy to write drivers for but you can't get great throughput.

SONIC, at least on the Quadras and the LC PDS card, can DMA directly to/from anywhere in the Mac's address space, which cuts out a lot of busywork from the host. And opens up weird possibilities like a replacement driver that does primitive streaming video by just DMAing incoming packets to video RAM. 10BaseT probably isn't fast enough to do anything impressive there though.
Indeed, I tried forcing Glenn's driver to load with the A/ROSE card and it hangs forever once it tries to shuffle AppleTalk traffic on boot (I have auto mounts).

Later drivers in OS 8 do appear to be universal, though -- both the A/ROSE and non-A/ROSE cards share the same Sonic 16-based driver. But, interestingly, the original 3/com-based card (EtherTalk) -- which Glenn's driver targets -- does not; it uses a unique, older driver. Even though both the EtherTalk and A/ROSE-based EtherNet NB are both 3960-based.

Loading A/ROSE isn't required at all with these newer drivers, so it's definitely being bypassed. No extension, no Prep. Still works.

All that said it feels somewhat unlikely the universal driver for EtherNet NB cards has some kind of initialization which stubs out the A/ROSE card, so perhaps the Sonic card was always mapped directly on the bus, but differently than the 3/com card so the card initialization works but actual traffic hangs forever in Glenn's driver waiting for packet data it can't see in the buffer?

FWIW, throughput is always dog slow, and definitely seems slower with A/ROSE than without, so I can see why they killed it. But doing something clever like DMA through faster memory might actually make a difference. Then again, OT is always slow, without more offload I'm not sure it buys anything.

As an aside, it's so confusing talking about the revisions of these cards. For reference again:

EtherTalk NB: Original, iirc, 3/com reference-based card (3960)
EtherNet NB: Apple A/ROSE-based card (3960)
EtherNet NB Twisted-Pair: Apple Non-A/ROSE card (3960)

As a second aside, I need to write something up, but quick and dirty: the later drivers have a really clever stub driver which consults mapping data in the extension resources to determine what driver to load. By adding additional resources to the official drivers and changing around some tables, it's really easy to create custom mix-and-match drivers to try things out.
 
Last edited:

eharmon

Well-known member
Then again, I did try it with my machine overclocked and Glenn's driver might have less forgiving timings. I should check again...
 

CC_333

Well-known member
@eharmon Has anything interesting come out of your research?

This has some interesting potential, perhaps offloading some sort of algorithm that computes some modernish security ciphers so the Mac's main CPU doesn't have to? Probably only relatively simple ones would be practical, and a special web browser might have to be invented for it (or else some kind of shim or patch for an existing browser that allows for some sort of special proxy-like behavior through the A/ROSE-based card), but it's a start?

At the very least, it can inform any enterprising people who wish to create some kind of encryption DSP from scratch using modern tools and concepts.

c
 

eharmon

Well-known member
@eharmon Has anything interesting come out of your research?

This has some interesting potential, perhaps offloading some sort of algorithm that computes some modernish security ciphers so the Mac's main CPU doesn't have to? Probably only relatively simple ones would be practical, and a special web browser might have to be invented for it (or else some kind of shim or patch for an existing browser that allows for some sort of special proxy-like behavior through the A/ROSE-based card), but it's a start?

At the very least, it can inform any enterprising people who wish to create some kind of encryption DSP from scratch using modern tools and concepts.

c
Unfortunately I've been distracted by a few other things and this has been on the back burner for awhile.

It definitely seems possible to offload tasks to any A/ROSE-based card, which has been quite interesting to me. But encryption is probably a heavy lift, while it's offloading from the main processor, it's still just a 10MHz 68000. So while it will provide acceleration, it might actually be slower than no acceleration at all. I could maybe see it helping on a Mac II, but I wouldn't be surprised if any late 030 or 040 is still faster than waiting for the slower 68000 to do the work. There's other tasks that could be interesting though, and it's really a shame offloading something like OT didn't happen, cause just managing more of packet processing or AFP on the card seems like it would provide gains.

All that said, personally I've only gotten my A/ROSE card as far as crashing. Something is wrong with the way I'm bootstrapping from the (pretty terrible) public documentation. When I try to load something custom onto the card, even example code, it seems to load improperly and it just panics. There's a weird combo of loading the OS and the software you have to do just so to make it happy. Theoretically loading the A/ROSE Prep but no Ethernet drivers should be enough to setup the OS on the card and prepare it to load software, and I can certainly probe the card and see what's running, but loading anything new doesn't work. I think this might be because I'm failing to load some required OS payloads, but it's unclear.

I strongly suspect the A/ROSE development cards came with much better documentation, but I still haven't seen it floating around anywhere, so it's only the scraps from MPW, the NuBus books, and random development blurbs. Helpful, but doesn't really give you the full picture.

It's enough to reverse engineer it, but that's where I've yet to find the time.
 
Top