Jak na vycteni pameti z beziciho osmibitu?
Petr Labaj
labaj na volny.cz
Sobota Březen 23 15:22:59 CET 2024
Pokud si správně pamatuju, tak návrat z obsluhy NMI měl vlastní
instrukci RETN.
Tedy ne RETI, ta byla pro návrat z maskovatelného přerušení.
A HALT tady nemá co dělat. HALT je instrukce procesoru.
Jen zatáhnout za BUSRQ, počkat na BUSACK, vykrást (nebo zmodifikovat)
obsah paměti, a BUSRQ zase uvolnit.
PL
******************
Dne 23.3.2024 v 14:55 Pavel Kořenský napsal(a):
> To s tím NMI se tenkrát dělalo z jiného důvodu.
> 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.
>
> 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.
> 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.
>
> Ale radil bych hledat na Netu. Už je to dááááávno, co jsem podobné
> věci nosil v hlavě.
>
> Zdraví PavelK
>
> Dne 23.03.2024 v 13:51 Jindrich Fucik napsal(a):
>> V zásadě máš pravdu.
>> Pro upřesnění:
>> NMI = Non maskable interrupt (to nepotřebuješ)
>> HALT = zastavení procesoru a uvedení do HiZ (to chceš)
>> (někde mi schází HLDA, ale nevím, jestli jsem na správné platformě)
>> Pozor na to, že po odpojení se ti přestanou refreshovat DRAMky, takže
>> to musíš dělat sám.
>> 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.
>> 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.
>>
>> ---------- Původní e-mail ----------
>> Od: Pavel Kutina <hw na prelude.cz>
>> Komu: HW-news <hw-list na list.hw.cz>
>> Datum: 23. 3. 2024 13:24:21
>> Předmět: Jak na vycteni pameti z beziciho osmibitu?
>>
>>
>> Zdravim,
>>
>> zjistil jsem, ze pamet neni co byvala, tak potrebuju trochu
>> nakopnout:
>>
>> Mam system se z80, k nemu paralelni SRAM a ja bych docela
>> potreboval z nej
>> cas od casu vytahnout obsah RAM, nejak ho modifikovat a nacpat
>> zpatky. Jo,
>> je to presne ta uloha, co se delavala na osmibitech pri ukladani
>> snapshotu
>> :)
>>
>> Mam pristupne vsechny signaly procesoru vcetne /BUSRQ, /BUSAK,
>> /HALT, NMI a
>> tak dale. Jestli mne hlava neklame, postup by mel byt nejak
>> takovyhle:
>>
>> - pozadam z80 o uvolneni sbernice BUSRQ,
>> - z80 uvolni a potvrdi BUSAK,
>> - poslu do z80 NMI nebo HALT(?), aby mi do toho nekecal,
>> - tim by mela byt sbernice volna a procesor v HighZ?
>> - externim procesorem si udelam s pameti, co potrebuju (cteni,
>> modifikace),
>> - uvolnim NMI, do z80 poslu RESET a necham ho najet do nove pameti.
>>
>> Predpokladam, ze tu je jeste par lidi, co to da z hlavy, nez
>> zacnu lovit na
>> netu hloubeji...
>>
>> Diky za pomoc.
>>
>> Pavel Kutina
>>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240323/5fc6cf9e/attachment.htm>
Další informace o konferenci Hw-list