Subject: Loom custom and interrupt level problems

From: shd
Date: Wed Nov 2 13:43:26 2005

To: Kohina-UADE-Forum
I started investigating why Loom custom has never worked. It turns out that the player makes an assumption that the playroutine interrupt can be pre-empted by an audio channel interrupt. Since we are running playroutine interrupts from CIA B interrupt vector, which is higher priority than audio channel interrupt and thus  can not be pre-empted by it. And therefore our system is simply incompatible with assumptions of Loom. IMO, Loom player is broken by design, because interrupts should be used to avoid CPU polling, but Loom player does CPU polling in the interrupt.

There is  at least two solutions:

 - Decrease the interrupt level below 4 in CIA B interrupt so that audio interrupts can happen. This has the potential problem that if something were to trigger a CIA B interrupt inside the playroutine, the playroutine would pre-empt itself.
 - Move playroutine calls to CIA A interrupt vector, which has an interrupt level lower than audio channel interrupts. This approach might also solve the Thomas Hermann player problem which uses two CIA B timers at the moment.

---

From: amadeus
Date: Mon Nov 7 08:21:10 2005

To: Kohina-UADE-Forum
[quote:f18127c945="shd"]I started investigating why Loom custom has never worked. It turns out that the player makes an assumption that the playroutine interrupt can be pre-empted by an audio channel interrupt. Since we are running playroutine interrupts from CIA B interrupt vector, which is higher priority than audio channel interrupt and thus  can not be pre-empted by it. And therefore our system is simply incompatible with assumptions of Loom. IMO, Loom player is broken by design, because interrupts should be used to avoid CPU polling, but Loom player does CPU polling in the interrupt.
[/quote:f18127c945]

Sometimes customs are very badly ripped or altered heavily. Skate or Die is such example. Could this be the case here?

[quote:f18127c945="shd"]
 - Move playroutine calls to CIA A interrupt vector, which has an interrupt level lower than audio channel interrupts. This approach might also solve the Thomas Hermann player problem which uses two CIA B timers at the moment.[/quote:f18127c945]

Would this be the only way to get Thomas Hermann to work?

---

From: shd
Date: Mon Nov 7 12:13:28 2005

To: Kohina-UADE-Forum
[quote:880bdb735b="amadeus"]
Would this be the only way to get Thomas Hermann to work?[/quote:880bdb735b]

Well you can try the latest CVS version and find out..

---

From: amadeus
Date: Mon Nov 7 12:46:29 2005

To: Kohina-UADE-Forum
[quote:8ab1f2bc57="shd"]Well you can try the latest CVS version and find out..[/quote:8ab1f2bc57]

I would like to, but I haven't got read access.

---

From: mld/uade team
Date: Mon Nov 7 12:58:03 2005

To: Kohina-UADE-Forum
[quote:9b4f83962e="amadeus"]Would this be the only way to get Thomas Hermann to work?[/quote:9b4f83962e]
Thomas Herrman songs sound mostly ok to me, apart from BlueAngel69 (sounds as if timing is very very tight there...have to if --speed-hack has an effect).

---

From: Guest
Date: Mon Nov 7 14:29:28 2005

To: Kohina-UADE-Forum
[quote:4227c1bfc5="amadeus"][quote:4227c1bfc5="shd"]Well you can try the latest CVS version and find out..[/quote:4227c1bfc5]

I would like to, but I haven't got read access.[/quote:4227c1bfc5]

Huh? Everyone has read access to the cvs repository. uadecvs is the user, and uadecvs is the password, see:

http://zakalwe.virtuaalipalvelin.net/uade/download.html