Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!snorkelwacker!bloom-beacon!eru!hagbard!sunic!mcsun!ukc!harrier.ukc.ac.uk!dac From: dac@ukc.ac.uk (David Clear) Newsgroups: comp.sys.atari.st.tech Subject: Re: Using Timer A to replay a sample Message-ID: <5558@harrier.ukc.ac.uk> Date: 28 Sep 90 08:16:05 GMT References: <1990Sep24.122920.15704@irscscm.UUCP> <891@ehviea.ine.philips.nl> <892@ehviea.ine.philips.nl> Reply-To: dac@ukc.ac.uk (David Clear) Organization: Computing Lab, University of Kent at Canterbury, UK. Lines: 41 In article <892@ehviea.ine.philips.nl> leo@ehviea.UUCP (Leo de Wit) writes: > >The sequence for timer A is (I looked it up): > >my_timint > ... do your stuff here ... > bclr #5,$fffa0f > rte > This sequence is correct - I have had no problems using it. I've never seen any documents to suggest that 1s have to be written into the other bits of the "interrupt in service" register. As I understand it, when the MFP gets an interrupt, it will not signal the 68000 unless it is of a higher priority than those already in service. Similarly, if it does signal the 68000, the 68000 will not service it unless the IPL has been moved back below 6 (?). So, for general purpose, multi-level interrupts, the order of events should be: int: move.w #$2300,sr /* Also enables VBI, #$2400, disables VBI */ .. your own thang bclr.b #n,MFP_ISR[AB] rte On the subject of sampled sound drivers, as I understand it, to plug a value in a volume register you first do a register select and then you plug the data in. This can be done with a movep.w, right? Wanting to speed up his sample player, a friend of mine discovered that the sound chip only decoded the lowest bit of the address - so the CONTROL/DATA register pair were replicated throughout the address space of the chip. This means that rather than doing three movep.w instructions, you can get away with a movep.l and a movep.w. Of course, this can't be guaranteed to work. Dave. -- % cc life.c | David Clear dac@ukc.ac.uk +44 227 764000x7592 % a.out | Local Area Networks, Computing Laboratory, Segmentation fault (core dumped) | University of Kent, Canterbury, England. >>> Kernel R0M. His Mission: To rid the world of wobbly ZX-81 16K RAM packs. <<<