[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