torkell@ifi.uio.no (Torkel Lodberg) (02/10/91)
My problems are still not solved. I now use a patched version of MED V2.13, that uses the CIA B timer. I want to use this program while running a multinode high-speed (19200/38400 baud) BBS, but that's impossible. The CIA B timer causes characters to get lost even at 9600 baud? So: Why the heck did Commodore remove the CIA A timer in 2.0? Can this problem be fixed, somehow? I thought the Amiga was a *multitasking* machine, right? It is really unbelieveable that a 25Mhz A3000 machine can not transfer at 9600 baud while using a music program??? T.Lodberg
ridder@elvira.enet.dec.com (Hans Ridder) (02/15/91)
In article <CMM.0.88.666180488.torkell@kvart.ifi.uio.no> torkell@ifi.uio.no (Torkel Lodberg) writes: >My problems are still not solved. I now use a patched version >of MED V2.13, that uses the CIA B timer. I want to use this >program while running a multinode high-speed (19200/38400 baud) >BBS, but that's impossible. The CIA B timer causes characters >to get lost even at 9600 baud? > >So: Why the heck did Commodore remove the CIA A timer in 2.0? They didn't. Although there's been some confusion, it's been well publicized that both CIA A timers are used by the system. If you mess with them, things will break. The 1.3 RKM's document this clearly, and they've been available for quite a while now. >Can this problem be fixed, somehow? If you mean can we ever use CIA A, then probably not. But MED can be fixed. >I thought the Amiga was a *multitasking* machine, right? It is really >unbelieveable that a 25Mhz A3000 machine can not transfer at 9600 baud >while using a music program??? Yes, the Amiga is a multitasking machine. But we're talking about interrupt routines here, not tasks. Interrupts essentially block/bypass multitasking, so multitasking has nothing to do with it. The problem is that *any* interrupt blocks lower level interrupts (sorta like Disable().) The CIA B timers are at a higher interrupt priority than the serial port receive (RBF) interrupt, so they can cause data to be lost, while CIA A interrupts at a lower level than serial port receiver. The most probable reason you have trouble with CIA B and not CIA A is that when using CIA A the serial port interrupt routine is fairly quick so it doesn't block lower priority interrupts for too long. If it did, then you'd probably see problems with MED like glitches and pops in the sound. When using CIA B, MED probably spends too much time in its interrupt routine, blocking the serial port interrupt and data is lost. The serial port receiver doesn't have any buffering in hardware, so its interrupts must be serviced as quickly as possible. I don't know what MED is using the timer interrupt for, but if its using it to reload the audio hardware, then there are probably better ways to do that without losing serial port data, or having glitches in the sound. >T.Lodberg -hans ------------------------------------------------------------------------ Hans-Gabriel Ridder Digital Equipment Corporation ridder@elvira.enet.dec.com Customer Support Center ...decwrl!elvira.enet!ridder Colorado Springs, CO