Brad, On 11/08/20 8:29 PM, Brad Boyer wrote:
On Mon, Aug 10, 2020 at 10:29:07PM -0600, Stan Johnson wrote:On 8/10/20 8:03 PM, Finn Thain wrote:The way I see it, implementing Localtalk support, better FPU emulation or any of a dozen other issues would be more rewarding because that might help with lots of Mac models (particularly those with more RAM).Supporting LocalTalk in Linux would be great for communicating with older Macs (and even better if you're talking about TCP/IP over LocalTalk, which would potentially allow Internet access via some LocalTalk/Ethernet bridges).Do we have enough CPU time to implement LocalTalk fully in software without causing other issues? I believe it's a synchronous protocol, and unless you're talking about one of the models with IOPs (IIfx, Q900, Q950) or real DMA (Q660, Q840) the CPU will need to be involved on a very fixed schedule. Is it possible to do that level of real-time scheduling with a standard Linux kernel? If I'm
Depends on the interrupt priority levels - if the SCC can preempt other interrupt handlers, and you do nothing but acknowledge the interrupt and copy bytes to a buffer, this might be worth a try. Protocol handling and moving buffer data to network buffers would be left to a task queue, to run when a packet has been fully received.
Today's kernels are a lot smarter with locks than 20 years ago when this would have been impossible.
How large are the data packets involved? Is there a pseudo-DMA address window for the SCC data port to used optimized access (moveml)? Does SCC access force a bus delay, or can the SCC be accessed at full rate?
interpreting the docs correctly, we will have to talk to the serial controller around 8000 times per second (230kbit/s and 4 bytes at a time from the ESCC) with very tight tolerances. Will it cause problems to have the serial controller sending interrupts that often? I suspect Apple just hogged the CPU during data transfer.
It definitely felt like that :-)Haven't tried 8000 Hz interrupt rates on a 16 MHz clocked m68k (200 with handling ne8390 interrupts is fine), but that ought to be straightforward enough to test with a little module.
Cheers, Michael
If we did have real LocalTalk support, we could use the ipddp module to use a Linux box as the bridge. It has both modes according to the code. I've never tried it myself, but it should work. Brad Boyer flar@allandria.com