cheesestraws
Well-known member
Rather than posting randomly in the "what did you do to your mac today" thread, I thought I'd make a separate thread for this project in here. Hope it's in the right place and people find it interesting and want to throw ideas at me.
The plan/project is to write a userland AppleTalk stack aimed at UNIX-like OSes that prioritises talking to vintage macs, especially from the 68k era. Netatalk no longer bothers with DDP, and AppleTalk in-kernel support in operating systems will, at some point, go away, probably rather sooner than later. It is being written in Go, partly because it's the main programming language currently in my short-term memory and partly because channels are useful.
The other important theme here is that I want to write this prioritising code clarity and readability rather than performance. I've often been trying to work out how to interact with a device and looked at the sample code, and then I have two problems rather than one, the second being to understand the sample code. I'd prefer that not to be the case for this.
Due to the terms of my employment, I can't release any code until I get the project signed off (sigh), but code *will* be coming. At the moment, you're not missing much anyway, honestly. Also, updates to this will be very sporadic for various life and health reasons.
State of affairs as of mid-December 2019:
The plan/project is to write a userland AppleTalk stack aimed at UNIX-like OSes that prioritises talking to vintage macs, especially from the 68k era. Netatalk no longer bothers with DDP, and AppleTalk in-kernel support in operating systems will, at some point, go away, probably rather sooner than later. It is being written in Go, partly because it's the main programming language currently in my short-term memory and partly because channels are useful.
The other important theme here is that I want to write this prioritising code clarity and readability rather than performance. I've often been trying to work out how to interact with a device and looked at the sample code, and then I have two problems rather than one, the second being to understand the sample code. I'd prefer that not to be the case for this.
Due to the terms of my employment, I can't release any code until I get the project signed off (sigh), but code *will* be coming. At the moment, you're not missing much anyway, honestly. Also, updates to this will be very sporadic for various life and health reasons.
State of affairs as of mid-December 2019:
- I've implemented a slightly hacky Localtalk over UDP multi/broadcast thing for minivmac, using most of the same code as the existing LToE code. I think this is more flexible for reasons I am happy to go into if anyone wants me to, but is mostly for my own dev convenience. There is actually a bug in minivmac, even using LToE, that prevents duplicate address detection working. The chances of anyone hitting this in the wild are fairly remote, but I think I've fixed it and I'll submit a patch when I can.
- I have the ability to send and receive LLAP packets over an LToUDP network and parse them. The "physical" layer and the LLAP layer are separate, so in theory it ought to be possible to swap out LToUDP for LToE or "real" localtalk later.
- I have the ability to acquire a network address on this network and participate in the duplicate address detection protocol with a virtual network of minivmac instances.
- I can parse short-header DDP packets, but if I want to send any I have to craft them by hand.