• 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.

Do the classic Macs support DMA?

mousehouse

Active member
As I’m relatively new to tinkering with the classic Macs… The classic Mac design in my SE and SE/30 looks pretty basic, with the CPU doing all of the hard work. There are no custom chips like in other systems of this era.

Is there are kind of DMA support in the classic design? Eg. for SCSI or PDS/ethernet cards?

Any pointers to old design documents etc. appreciated!
 

Coloruser

Well-known member
The IIfx used DMA, but AFAIK it is only used unter AU/X and not the standard Mac OS. The 1. gen PowerMac introduced DMA to the Mac OS…. (But not the PPC performas based on 68k mobo designs)
 

GRudolf94

Well-known member
The 53C80 has its DMA pins plumbed in, at least on the SE and following machines. Not sure about the Plus, I don't have the board handy.
 

Bolle

Well-known member
PDS and Nubus cards can theoretically do DMA in all Macs, but there are only very few cards that actually did make use of it.
 

Phipli

Well-known member
Thank you all for the replies, learned something new today :)
Another thing that is sort of related, there were a few things made that were semi-independent of the host. Couple of Apple-made examples :

The Apple Display 8•24 GC video card has an AM29000 RISC processor with a lot of grunt and runs a portion of the graphics software natively on the card. It is also capable of block transfers to some other dumb cards and direct accesses their framebuffers through through NuBus with no involvement of the host.

Some Apple Ethernet cards had a 68000 processor and ran their own RTOS. They were based around a system called "A/ROSE" (after a legal challenge by Microsoft made them change the name from MR.DOS... A/ROSE by any other name is still MR.DOS) which was planned to be used as sort of an SDK for developers to produce cards using A/ROSE to interface with the host and bolting their own hardware onto the far side. It wasn't a huge success because they were expensive with basically an entire computer on the card. Also, personally, I have found the A/ROSE host side software to be some of the most incompatible and remove it on sight.

Other related things, it can be hard to spot because apple generally get their chips custom labelled, but the ADB controller is a MicroChip PIC MCU, and the Egret and CUDA chips are 68HC05s in disguise.

There is lots going on there, but it feels like people mainly just surprised Macs didn't have DMA floppy control and sideways scrolling hardware.

Regarding built-in video, for general use it tended to be a fast framebuffer and not have any acceleration features (people bought expansion cards for accelerated graphics). They were generally pretty fast (especially at 8bit) in their day although even Mac users have forgotten this, in part due to all the enthusiastic marketing by 3rd parties. 3rd parties struggled to exceed the performance of Quadra video, even with accelerated routines, because of the expansion bus speed limitations for bulk transferring data, while the onboard video used 32bit word aligned dual port memory at the full bus speed for 24bit colour and heavy software and hardware optimisation. Sort of the RISC attitude - simple but fast. End result is they can throw frames to screen pretty quick, but can't compete with an Amiga WRT manipulating what is already in the framebuffer.

This is made more stark by the lack of a low resolution mode on macs - I do wonder if this was originally intentional to actively avoid being "just for games" as I know Apple feared that the GUI would be perceived as a gimmick/ toy and the Mac not a serious computer. Also the user interface was designed for approximately 72dpi, so reducing the resolution under this would have likely looked bad 😆

I'm not sure how third party cards compare to an Amiga, I'd guess they do well in some situations and bad in others. An example of where Macs and Acorns (another platform that went for simple hardware) tend to do well and I understand Amigas struggle is "high resolution" 3D - for example flight simulators.
 
Last edited:

mousehouse

Active member
Very interesting!

I think in hindsight the straightforward architecture is one of the reasons Apple was able to keep scaling the hardware of the Macintosh line - at least until the limitations of the OS became blocking to progress. It does make it easier to do big changes such as the switch to PPC if the architecture you're leaving behind is relatively easy to emulate. And the relentless focus on the business / professional side is also very visible indeed. In hindsight (to me) the custom chips in the Amiga did give it an advantage when they launched but Commodore's inability to truly innovate on them made it a "blocking advantage" IMHO.

On my classic Mac the OS (6 or 7) is really elegant, clean and crisp and even on a stock 8MHz 68000 very usable. I find it so much fun to look back at the tech from 30-35 years ago (and enjoy it) with the knowledge of today :)
 

Phipli

Well-known member
I think in hindsight the straightforward architecture is one of the reasons Apple was able to keep scaling the hardware of the Macintosh line - at least until the limitations of the OS became blocking to progress. It does make it easier to do big changes such as the switch to PPC if the architecture you're leaving behind is relatively easy to emulate. And the relentless focus on the business / professional side is also very visible indeed. In hindsight (to me) the custom chips in the Amiga did give it an advantage when they launched but Commodore's inability to truly innovate on them made it a "blocking advantage" IMHO.
I'd disagree, because the complexity could be hidden. I feel the major thing that kept apple going and maintained compatibility was related though - abstraction.

For some speed and flexibility sacrifice, Apple asked developers to use OS calls instead of directly accessing hardware. This put the interface between ever changing hardware and the same function calls in Apple's hands and meant that they could swap out the audio, video, even processor, and the running software didn't even notice.

A lot of software for platforms other than the Mac, RiscOS and IBM PC / clones was tied to specific machines or small families of machines. It was a speed vs long term sustainability/ compatibility trade off. A well written program targeting a Macintosh SE wouldn't know or care when it was run on a 1.25GHz G4 tower.

In the early days, not all developers did what they were told and their software very quickly broke on newer machines. I think lessons were learnt and people started using the OS routines more.
 

mousehouse

Active member
Good one. It does look like Apple kept the reigns short on what you could do. Other platforms were considerably more open to hacking your way around on the hardware.

Looking forward to doing some tests on DMA related things when I have my classic Mac in working order!
 

Arbee

Well-known member
The 53C80 has its DMA pins plumbed in, at least on the SE and following machines. Not sure about the Plus, I don't have the board handy.
Just to clarify, most 68K Macs do what is called "pseudo-DMA" where something in one of the custom chips (it varies which chip by machine) will queue up to 4 bytes so the software can blindly read/write 4 bytes at a time. When the 68K gets ahead of the SCSI bus the 68K is frozen until the data is ready (for reads) or can be accepted (for writes).

The lack of DMA I attribute in part to Steve Wozniak's influence on Apple engineers. Woz thought all-singing all-dancing custom hardware of the sort Atari and Commodore specialized in was the wrong way to go and having the complexity in the software rather than in the chips was correct. He's largely been proven right ever since John Carmack's clever DOOM code blew away the Amiga's custom chips in 1993.
 

halkyardo

Well-known member
On a somewhat related note, National Semiconductor application note AN-691 describes a reference design for a SE/30 PDS ethernet card using the DP83932 'SONIC' ethernet controller that does bus-mastering DMA to system RAM instead of having its own packet buffer on the card.

In theory, with a suitably flexible DMA-capable ethernet controller, I think the Mac OS' rather unusual network driver API would allow for zero-copy networking (or at least skipping that first copy from the receive buffer to the downstream protocol handler). I don't think this was ever actually done in practice, though - the SONIC driver code I've looked at just sets up a receive buffer for the card to DMA to, and then treats it just as it would a 'traditional' card's onboard buffer memory.
 

Arbee

Well-known member
All of the SONIC cards from Apple do use direct DMA to RAM, including the Quadra on-board and the LC PDS cards. It's easy to tell on the LC cards because there's no RAM chips.
 
Top