C128 service manual says this about VIC: DMA and Bus Arbitration True DMA of the internal processor can now be accomplished by requesting the DMA through VIC. The VIC will shut down the processor in an orderly fashion, instead of a suicidal fashion. A DMA source requests a DMA via the DMARQST input. VIC will respond to that request with a DMAACK after shutting down the processor. The DMA source must listen to the DMAACK line and be prepared to itself be shut down in the event that VIC decides to do its own DMA. Thus, the VIC chip has the highest DMA priority. The C128 system does not use this DMA arbitration scheme, but a fatal DMA scheme similar to that of the C64. On a C128 indeed DMAACK is not connected to anything and DMARQST is pulled high. Has anyone ever tried do use this? As I understand the designers wanted to simplify the DMA process: just pull DMARQST low and do your stuff only while DMAACK is low. ytm On Sat, Jul 9, 2022 at 9:52 PM <ruud_at_baltissen.org> wrote: > Normally you don't stop the 6510 "just like that". When giving control > to the Z80 in the CP/M module it is the 6510 that initiates the whole > proces. It (re)sets a flipflop with a specific bit which on its turn > negates the DMA line and then executes some NOPs. When the Z80 returns > the control, the 6510 resumes with executing those NOPs and then resumes > with the rest of the program. > > If you negate the DMA line just out of the blue, there is a chance that > you disable it in the middle of reading an instruction. If you "stop" > the 6510 in the beginning of PHI2, you will disable the buses of the > 6510. The 6510 will read $FF as the next instruction and that is a KILL > instruction: stop and do nothing at all anymore. Looks familiar? > > I can give several other reasons why things can go wrong. But my main > message is: negate the DMA line only under controlled circumstances. > > > -- > > Kind regards / Met vriendelijke groet, Ruud Baltissen > > www.Baltissen.org > > >Received on 2022-07-11 10:00:07
Archive generated by hypermail 2.3.0.