<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Pokud si správně pamatuju, tak návrat z obsluhy NMI měl vlastní
instrukci RETN.<br>
Tedy ne RETI, ta byla pro návrat z maskovatelného přerušení.<br>
<br>
A HALT tady nemá co dělat. HALT je instrukce procesoru.<br>
Jen zatáhnout za BUSRQ, počkat na BUSACK, vykrást (nebo
zmodifikovat) obsah paměti, a BUSRQ zase uvolnit.<br>
<br>
PL<br>
<br>
******************<br>
<br>
<div class="moz-cite-prefix">Dne 23.3.2024 v 14:55 Pavel Kořenský
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:50bc0a9d-109a-455f-8a2e-97444451b25c@dator3.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div class="moz-cite-prefix">To s tím NMI se tenkrát dělalo z
jiného důvodu.</div>
<div class="moz-cite-prefix">Totiž aby Z80 nepřestal refreshovat
DRAM a neresetoval se. Třeba na ZX-Spectrum tohle dělal jeden
ten prodávaný interface (Disciple ???) který měl v sobě EPROM
paměť která byla víceméně kopií ZX-Spectrum ROM, ale trochu
přepsanou, aby se jim tam navíc vešel maličký monitor program
pro editaci paměti. A ten modul měl tlačítko NMI, které vyvolalo
přerušení a když k tomu přerušení došlo, byla už namapovaná ta
stínová ROM a skočilo to rovnou do toho monitor prográmku,
kterým se dala editovat data v RAM (třeba nekonečné životy do
her nebo se vyhodila ochrana proti kopírování). A při tom byla
na stacku pořád návratová adresa do původního místa v programu.
Když se to celé poeditovalo, tak procesor provedl RETI instrukci
a než skočil na původní místo, tak se stínová EPROM už odpojila,
takže i když byly někde v programu třeba kontroly na checksum
ROMky, program to nepoznal.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Pokud má dnes to Z80 statickou paměť
(ty tehdy byly příšerně drahé a s malou kapacitou, takže se jako
RAM běžně nepoužívaly), tak by měl stačit /BUSRQ, /BUSAK,/HALT.</div>
<div class="moz-cite-prefix">Ani ten RESET by nemusel být mám
dojem potřeba, protože pokud se HALT uvolní, měl by pokračovat
kde přestal.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Ale radil bych hledat na Netu. Už je
to dááááávno, co jsem podobné věci nosil v hlavě.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Zdraví PavelK</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Dne 23.03.2024 v 13:51 Jindrich Fucik
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:2mo.20ad.4LqUfqcc2wZ.1b%7Dj0s@seznam.cz">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<div>V zásadě máš pravdu.</div>
<div>Pro upřesnění:</div>
<div>NMI = Non maskable interrupt (to nepotřebuješ)</div>
<div>HALT = zastavení procesoru a uvedení do HiZ (to chceš)</div>
<div>(někde mi schází HLDA, ale nevím, jestli jsem na správné
platformě)<br>
</div>
<div>Pozor na to, že po odpojení se ti přestanou refreshovat
DRAMky, takže to musíš dělat sám.</div>
<div>A taky to, že po resetu se procesor pokusí začít v nějaké
ROMce, která provede boot up sekvenci. To taky nechceš, takže
se různě podstrkoval jiný začátek paměti.</div>
<div>Respektive se někdy dělalo, že se použilo právě to NMI a
podstrčil se program, kterej nechal hlavní procesor udělat
celou tu manipulaci.</div>
<div><br>
</div>
<aside>---------- Původní e-mail ----------<br>
Od: Pavel Kutina <a class="moz-txt-link-rfc2396E"
href="mailto:hw@prelude.cz" moz-do-not-send="true"><hw@prelude.cz></a><br>
Komu: HW-news <a class="moz-txt-link-rfc2396E"
href="mailto:hw-list@list.hw.cz" moz-do-not-send="true"><hw-list@list.hw.cz></a><br>
Datum: 23. 3. 2024 13:24:21<br>
Předmět: Jak na vycteni pameti z beziciho osmibitu?</aside>
<br>
<blockquote data-email="hw@prelude.cz">Zdravim, <br>
<br>
zjistil jsem, ze pamet neni co byvala, tak potrebuju trochu
nakopnout: <br>
<br>
Mam system se z80, k nemu paralelni SRAM a ja bych docela
potreboval z nej <br>
cas od casu vytahnout obsah RAM, nejak ho modifikovat a nacpat
zpatky. Jo, <br>
je to presne ta uloha, co se delavala na osmibitech pri
ukladani snapshotu <br>
:) <br>
<br>
Mam pristupne vsechny signaly procesoru vcetne /BUSRQ, /BUSAK,
/HALT, NMI a <br>
tak dale. Jestli mne hlava neklame, postup by mel byt nejak
takovyhle: <br>
<br>
- pozadam z80 o uvolneni sbernice BUSRQ, <br>
- z80 uvolni a potvrdi BUSAK, <br>
- poslu do z80 NMI nebo HALT(?), aby mi do toho nekecal, <br>
- tim by mela byt sbernice volna a procesor v HighZ? <br>
- externim procesorem si udelam s pameti, co potrebuju (cteni,
modifikace), <br>
- uvolnim NMI, do z80 poslu RESET a necham ho najet do nove
pameti. <br>
<br>
Predpokladam, ze tu je jeste par lidi, co to da z hlavy, nez
zacnu lovit na <br>
netu hloubeji... <br>
<br>
Diky za pomoc. <br>
<br>
Pavel Kutina <br>
</blockquote>
</blockquote>
</blockquote>
<br>
</body>
</html>