[SharpMZ] z80 a instrukce LDIR z pohledu sběrnice
Jakub Ladman
ladmanj na volny.cz
Pondělí Květen 28 19:51:45 CEST 2018
Ahoj
Diskuse dnes tady někde ve zmiňovaných odkazech mi připomněla moji
aktivitu kolem mého systému ve FPGA.
Je to trochu OT, protože to nemá nic společného se SHARPem, jen tu Z80tku.
a) kdyby měl někdo zájem, mám nakonec docela hezkou implementaci, jak
bych to nazval, SLAVE kontroléru přerušení IM2. Čili modul, který se dá
připojit do řetězu jiných součástek podporujících IM2. Vektor obsluhy se
na sběrnici vystavuje externě když o to modul zažádá. Je to napsáno ve
verilogu.
b) k vlastnímu dotazu:
Mám tam taky stroječek, který pokud je hw pomocí io portu nakonfigurován
příslušným způsobem a zdetekuje-li na sběrnici opcode LDIR, přepíná
stránky paměti mezi čtením a zápisem.
Využívám toho v CP/M3 (xmove), kde se tím přenáší bloky dat mezi
stránkami vlastně hardwarově.
Funguje to většinou dobře, ale občas to udělá hovadinu a já nevím proč.
Asi se to týká toho jestli se kopíruje ze stránky kde běží program
jinam, nebo naopak. Ale už jsem na to rok nešáhnul, takže si to přesně
nepamatuju.
Ale když se do toho stavového stroje dívám tak mi najednou chybí info o
tom jak se vrtí signály na sběrnici během té LDIR instrukce.
Vím že se opakuje Nkrát celá včetně opcode fetch, ale nevím kdy se mění
!MREQ !M1 !RD a !WR, pouze odhaduji podle jednoduché instrukce, která je
v manuálu Z80 popsaná obrázkem. Chtěl bych to vidět pro ten konkrétní
případ. ve FPGA to nemám kam logovat, simulovat to za podmínek programu
taky nedovedu. Logický analyzátor mám jenom osmibitový a nepovedlo se mi
zatriggerovat v situaci, kdy došlo k poškození dat.
Za radu děkuji
J.
Další informace o konferenci SharpMZ