Jump to content


  • Content Count

  • Joined

  • Last visited

Posts posted by jamesmilne

  1. Hi solidbao,


    I did this, yes. I made a second SCSI target on the SCSI2SD card (you can configure this with the 'scsi2sd-util' configuration utility via USB)  and copied the A/UX installation CD image onto that virtual SCSI drive. You can even flag the device as being a CDROM, but I don't think I bothered with that.


    Copying the image onto the logical unit is the trickiest part. When you configure the second SCSI  target on the SCSI2SD, it should say what sector number the logical device starts at. Each block is 512 bytes in size I recall. You can then use 'dd' on your Mac to copy an A/UX installer ISO into that offset in the SD card.


    Note the SCSI device offsets are stored in the flash memory on the SCSI2SD device itself, they aren't saved onto the SD card (a design flaw, IMO), so you need to remember that if  you swap in any  other SD cards in future, you 'll need to change the config agian.


    Afterwards, put the SCSI2SD back in and hopefully the Mac will recognise your A/UX install CD and you can then run installation like normal  onto a separate SCSI target on the same SCSI2SD card.

    Screen Shot 2019-01-28 at 20.49.43.png

  2. On 1/20/2019 at 11:52 PM, ants said:

    Perhaps the Basilisk II source might help? Here is the ethernet driver:



    Yes indeed, it has been quite helpful. It confirms that I need to implement the E_AttachPH protocol handler stuff, as that's what MacTCP, OpenTransport, etc use. I'll need  a small amount of assembly glue to do that, but it seems straightforward.


    I've also been disassembling the Dayna DaynaPORT drivers, which helpfully were compiled with the debugging symbols left in, so I've got some annotations in the disassembly to look at.

  3. I’ve written a small DRVR, put it into an ‘enet’ resource whose ID matches my board ID, and copied it into my System file.


    Yay, the OS loads it!


    I’ve put a DebugStr in DRVROPEN and it pops up in Macsbug.


    So I can at least get the OS to load my driver. Next I’ll try putting it in an INIT file and see if its detected that way.


    (I’ll put all my code on GitHub once I’m done.)

  4. Hi guys


    My apologies for the long hiatus on my project to build a network card for the SE/30. Mark and I have been busy at work the last six months, and I have two small kids (3.5yo and 1yo), so haven’t had a load of time, but I took a look again at Christmas to see if I could make some progress.


    We were having some issues with random bus errors and crashed after writing to the card’s address space. Mark scratched his head a bit and figured out what was wrong with our CPLD logic. Its now rock solid.


    Once that was fixed, I managed to generate a Slot Resource descriptor and write it into the ROM on our card. A few reboots later and its now showing up in the Slot Manager. Yay!


    Sending & Receiving packets also works fine from my test application, so now its time to get my code hammered into a form where it will integrate with the Apple ENET driver, and fit in with AppleTalk, MacTCP and OpenTransport.


    This is where I’m running a bit dry on documentation. I wondered if anyone had any stashes of ancient Apple Dev Support sample code or tech notes that explained exactly how to write an Ethernet driver?


    By the looks of things there is a shell Apple ENET driver that AppleTalk, MacTCP and AppleTalk open to talk to the network card.


    This shell ENET driver looks for a board-specific driver in ‘enet’ resources to find one that handles a board in a given slot.


    So I need to build a DRVR ‘enet’ resource, ID matching the BoardID in my Slot Descriptor.


    The question is can I just put this inside an Extension in the Extensions folder? I’m going to try that obviously, and I’ve been dissecting what other 3rd party Ethernet card drivers I can find.  


    Quite a few ship as Resource files that the installer appears to merge into the System file, but I’d prefer not to go that route.


    I’d like to merge the driver into the ROM too, but that’s a bit tedious during development (which might also wear out the EPROM).


    Just looking to see if anyone had a secret stash of Ethernet driver code!

  5. The CPLD is a baby FPGA, but it might be enough to interface a SATA controller chip with the PDS slot if it has the right interface.


    The problem will be finding a SATA controller chip with an interface that isn’t PCI or PCIe, which are not simple to interface to via the PDS slot.


    Not sure there’s much point in building anything for Ultra SCSI since drives are rare & expensive. It would also be tricky due to the huge number of differential pairs involved.


    A PDS or NuBus to PCI bridge implemented on the FPGA might be feasible though. I’ve recently bought a dev kit for the Lattice ICE40. The dec board exposes 160 IO pins, which is enough for both PDS and PCI. It can run at 100MHz, so might be capable of interfacing between the two realms.


    This would also allow interfacing with USB, Wifi, etc PCI chips.

  6. Sorry, I guess that video was a bit cryptic. It is showing a hex dump of the first 128 bytes of each packet it receives over the network. It's receiving various broadcast packets from other machines.


    For the LAN9218 to work with SCSI, you'd need an FPGA to connect to the SCSI bus and handle all the SCSI protocol stuff, and implement some special SCSI command that could read/write registers.


    You could maybe do it with a microcontroller, like the RaSCSI project. A microcontroller isn't really ideal for directly interfacing with SCSI. It can take quite a few CPU cycles for an MCU to respond to activity on their GPIOs. Could be done though. The original designer of the RaSCSI was using it with an Sharp X68000 and had written a network driver for it, so we could probably get a network driver for RaSCSI working on the Mac too.

  7. 13 minutes ago, techknight said:

    So what do you mean by byte order being backwards? 


    You mean D0-D7 vs D8-D15? like little-endian/big-endian issue? 

    Yeah, endian issue. The chip is designed to work with little endian CPUs. If you want to use it with a big endian CPU, the data sheet says the hardware designer will need to accomodate this (swap the bytes).


    I’m thinking that our board is not actually wrong. I need to swap the bytes on the CPU when accessing the registers in the 9218 chip.


    However when I actually write data into the buffers, which has to be done 32bits at a time, I think the byte-swapping is actually required.

  8. Hi SE30_Neal,


    I bought 4x16MB SIMMs from OWC. When I tried them on their own, they didn't work, same symptoms as you. Corrupt screen at boot and sad mac sound.


    I tried them in the first 4 slots with a further 16MB (4x4MB SIMMs) in the remaining slots, but that didn't work either.


    What worked for me is 4 x 4MB in the first 4 slots, then 4 x 16MB in the remaining slots. I'm currently rocking 80MB of RAM, which is not too shabby. I believe this goes against what I had read about putting the larger SIMMs in the first slots, but who knows. I've had zero issues since the upgrade.

  9. Success!


    We reprogrammed the CPLD to ignore the FC lines, and now I can read/write registers on the card.


    I've also discovered that we did not in fact have to swap the byte order of the data bus in order to talk to the LAN9218. Now all my data is round the wrong way :-D No matter, I can bodge around that in software until we make more boards.


    Now to fire up MPW and write some code to test reading/writing packets...


  10. I’ve been enjoying using MPW recently. 


    I was always a Codewarrior guy back in the day and never used MPW, but I’m very much a vim/make guy these days, so MPW suites my sensibilities much better!


    On http://macintoshrepository.org/ there is quite a lot of old Apple Developer Connection CD ISOs that contain sample code and documentation.


    A wiki would be great, pointing to this kind of resource, sample code, and books.

  11. Mark's card has arrived and I've plugged it in to my SE/30. Nothing has exploded, which is a good start.


    Unfortunately, it won't talk to me.


    Our CPLD is looking for the function code bits to be 0b001, "User Data Space", which I'm guessing may not be set as AFAIK classic macOS always runs in Supervisor mode?


    Should we be looking for function code 0b101 instead? Or just ignore the function code bits?

  12. Components:

    - LAN9218 controller

    - DeclROM in big flash EPROM

    - MAC address in little EPROM

    - CPLD doing some address decoding for DeclROM and LAN9218


    Once we verify that we can program the EPROM via the PDS slot, we'll likely replace the DIP EPROM with a TSOP version, and probably remove the MAC address EPROM and put the MAC address in the main EPROM, then load it into the LAN9218 in the driver.


    The board follows the specs in "Designing Cards and Driver for the Macintosh Family". I'll see if I can twist Mark's arm to make it passthrough.


  13. I'm not against open-sourcing the PCB designs, but I'll talk to my buddy Mark who designed the boards about that.


    I will definitely open source the driver code.


    However, no point in open-sourcing anything until we get it to work.


    We've managed to squeeze the current design into a 2 layer board, which makes the PCBs super-cheap, but going to 4 layers wouldn't be prohibitive. The boards are very small.


    I don't want the product to wither & die either, but as Bolle points out making real stuff can be an expensive & time consuming business. Mark and I do this stuff for a living so we're well aware of what's involved. Maybe once we've got it working we can talk to someone else who has an interest in building them commercially.

  14. Yes the jumper is to change the slot address.


    We haven’t planned for a passthrough at the moment. It may make the board routing harder. We had to byteswap the data bus for the LAN9218 chip so we’d probably have to add another layer to forward the signals to a passthru slot.


    The boards hopefully won’t be too expensive, but we’ll have to think about what we do for producing more. We’ve both got pretty busy jobs and kids to attend to :-) 


    But the goal was always to produce them in some kind of quantity.

  15. The first boards have arrived, and my board wizard friend Mark, who designed it, has assembled the first prototype!


    We’ll likely simplify the board further. No need for a socketed EPROM if we can program the firmware via the computer, for example, allowing us to use a smaller SMD EPROM.


    He is in London, Ontario and I’m in London, England, so once he has finished his initial tests he’ll send it over to me and I can get started on the driver.






  16. I have been considering Wifi, but no designs yet. There are loads of Wifi modules/chipsets, but most have an SPI interface. That requires more advanced logic to interface with the 68k bus, compared to the LAN9218 which basically just needs wired up.


    Small FPGAs are pretty cheap these days. I'm interested in designing something FPGA-based next that can go into the PDS slot. That could interface with SPI devices, which is also basically what an SD card is.


  17. With the help of my friend Mark from work, who has done the board design & layout, I've started work on a modern replacement 030 PDS Ethernet card based on the Microchip LAN9218. I'm working on writing the driver. There is already a LAN92xx-series driver in the Linux kernel, so we've got something to work with.


    The LAN9218 is designed for integrating with a 32-bit MCU bus, so the board is pretty simple. We've taken the pseudo-slot design route, so there will be a ROM on there with at least a description ROM. I may even be able to shoehorn the driver in there too.


    We're at the point of getting some prototype boards made. I'll post once we have a few working boards and have made some progress on talking to it from System 7 :-D


    The one downside is I'm not sure there is any available documentation on writing network drivers for A/UX, so it may be tricky or impossible to get that running with this card, but hopefully System 7.5 with MacTCP & OpenTransport will be possible.