I have never really understood the purpose of the M1
pin or cycle. Can
anyone in simple terms explain it's purpose?
M1 serves various purpose on the Z80 Bus:
- Together with MREQ it indicates an opcode fetch.
- Together with IORQ it indicates an vectored interupt acknowlege,
ordering the peripherial device to issue the vector number.
- Z80 I/O devices use M1 as 'programming finished' signal -
so, for example, if you set a Z80 PIO to interrupt mode,
the seting data will be transfered during the IORQ/WR cycle
(Trailing edge of T2), but the actual enabeling will be postponed
until the falling edge of M1 - just to be in an safe state.
Basicly M1 is only one member in a group of three status signals
to show the internal workflow:
M1 ST HALT
0 0 1 Opcodefetch (first byte)
0 1 1 Opcodefetch (2nd or 3rd byte)
1 1 1 Working
1 0 0 DMA
1 0 1 DMA
0 0 0 HALT
1 1 0 SLEEP (Z180)
0 1 0 Invalid (should nor occure)
As you see, or-ing ST and M1 and connecting the result to a
frequency counter gives a prety good instructions per time
indicator (MIPS-o-meter :).
I hope this was simpel _and_ complete :)
Gruss
H.
BTW, on the Z180 the M1 (together with the 64180 'early' IORQ/RD
signal enabeling) usage can be programmed via the OMCR - I had to
learn it the hard way (no, RTFM is no solution if you belive that
you know the signal handling :).
--
Stimm gegen SPAM:
http://www.politik-digital.de/spam/de/
Vote against SPAM:
http://www.politik-digital.de/spam/en/
Votez contre le SPAM:
http://www.politik-digital.de/spam/fr/
Ich denke, also bin ich, also gut
HRK