Top secrets sources NedoPC pentevo

Rev

Rev 383 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

Ìàãèê íà ïåíòåâå.


1. ÂÂîäèòñÿ ñîñòîÿíèå NMI. Îòëè÷àåòñÿ òåì, ÷òî â î÷êî #0000-#3FFF ïðèíóäèòåëüíî
âêëþ÷àåòñÿ ïîñëåäíÿÿ (255àÿ) ñòðàíèöà ÎÇÓ. Ïðèîðèòåò äàæå íàä âêëþ÷åíèåì 0 ïàãè
ðàìû â #0000-#3FFF ÷åðåç áèò â #EFF7.

Âõîä â ñîñòîÿíèå NMI ïðîèñõîäèò, ñîáñòâåííî, ïî íà÷àëó ñèãíàëà /NMI íà
ïðîöåññîð.

Ïðè ýòîì, âõîä íå ãàðàíòèðóåòñÿ è ìîæåò ïðèâåñòè ê êàòàñòðîôå, åñëè /MNI
ïðèõîäèò âî âðåìÿ êîìàíäû, êîòîðàÿ:
1) èìååò ñòåê îáëàñòè #0000-#3FFF
2) èñïîëíÿåòñÿ èç îáëàñòè #0000-#3FFF
3) èñïîëüçóåò äàííûå â îáëàñòè #0000-#3FFF
 ñëó÷àÿõ 1 è 3 òàêæå ìîæåò íàðóøèòüñÿ öåëîñòíîñòü äàííûõ â ïîñëåäíåé ñòðàíèöå
ÎÇÓ.


2. ïðåäëàãàåòñÿ ââåñòè ïîðò #BE (÷òåíèå-çàïèñü).

íà ÷òåíèå - ìîæíî áóäåò ñ÷èòàòü ñîñòîÿíèå ïîðòîâ #7FFD, #EFF7, #xx77, ñîñòîÿíèå
ìåíåäæåðà ïàìÿòè. ×òî ÷èòàåì - îïðåäåëÿåòñÿ ñòàðøèì àäðåñíûì áàéòîì.

Êîíêðåòíûå àäðåñà è ÷òî ÷èòàåòñÿ:

#00BE..#07BE: - íîìåðà âêëþ÷åííûõ ñòðàíèö â î÷êàõ, ÍÅÈÍÂÅÐÒÈÐÎÂÀÍÍÛÅ.
00..03 - î÷êè 0..3 äëÿ íóëåâîé êàðòû ïàìÿòè (áèò 4 7ôôä = 0)
04..07 - òî æå ñàìîå äëÿ åäèíè÷íîé êàðòû ïàìÿòè (áèò 4 7ôôä = 1)

#08BE: áèòû RAM/ROM äëÿ âñåõ î÷åê è êàðò ïàìÿòè, áèòû ñ íîìåðàìè 0..7
ðàñïðåäåëåíû òàê æå, êàê è ÿ÷åéêè 00..07 âûøå.

#09BE: áèòû dos/7ffd. òàê æå.

Ïðèìå÷àíèå: áèòû dos/7ffd è RAM/ROM äëÿ ñëó÷àÿ ROM ìîæíî ñòàâèòü òîëüêî ÷åðåç
ïîðòû #xFF7. Ñòàðøèå 2 áèòà íîìåðà ñòðàíèöû ìîæíî ïîñòàâèòü òîëüêî ÷åðåç ïîðòû
#x7F7, ïðè ýòîì óñòàíîâèòñÿ áèò RAM/ROM è îñòàíåòñÿ íåèçìåííûì áèò dos/7ffd.
Òàêèì îáðàçîì, àëãîðèòì âîññòàíîâëåíèÿ íà îñíîâå ðàíåå ñ÷èòàííûõ äàííûõ
#00BE..#09BE ìîæåò áûòü òàêèì:
1. Çàïèñûâàÿ â #xFF7, âîññòàíîâèòü âñå áèòû dos/7ffd
2. åñëè ñòðàíèöà ROM èëè RAM è å¸ íîìåð <64, âîññòàíîâèòü å¸ çàïèñüþ â #xFF7
   îäíîâðåìåííî ñ ïóíêòîì 1.
3. Äëÿ âñåõ RAM-ñòðàíèö ñ íîìåðàìè >=64 âîññòàíîâèòü íîìåð ñòðàíèöû
   äîïîëíèòåëüíîé çàïèñüþ â ñîîòâåòñòâóþùèé ïîðò #x7F7.
4. Â ïóíêòàõ 2-3 íå çàáûâàòü ïðî èíâåðñèþ íîìåðà ñòðàíèöû ïðè çàïèñè.

#0ABE: ïîñëåäíåå çàïèñàííîå çíà÷åíèå â ïîðò #7FFD.

#0BBE: ïîñëåäíåå çàïèñàííîå çíà÷åíèå â ïîðò #EFF7.

#0CBE: ïîñëåäíåå çàïèñàííîå çíà÷åíèå â ïîðò #xx77. çíà÷åíèå áèò ñëåäóþùåå:

 áèòû 3..0 - ïîñëåäíåå çàïèñàííîå çíà÷åíèå â áèòû 3..0 ïîðòà #xx77
 áèò 7 - ïîñëåäíåå çàïèñàííîå çíà÷åíèå A14 ïðè çàïèñè â #xx77
 áèò 6 - --//-- A9 --//--
 áèò 5 - --//-- A8 --//--


#0DBE: òåêóùèé îòîáðàæàåìûé öâåò. Äëÿ ñ÷èòûâàíèÿ ïàëèòðû. Ôîðìàò òàêîé æå, êàê è
#FF äëÿ óñòàíîâêè, êðîìå òåõ æå 2 áèò, êîòîðûå ÍÅÎÏÐÅÄÅËÅÍÛ. Ñ÷èòûâàòü òàê æå:
õàëò, ïîòîì ñòàâèì íà áîðäþðå âñå öâåòà è ñ÷èòûâàåì.


Ïîðò #BF ñàì ïî ñåáå (ðèä-ðàéò)




Ìîìåíò âõîäà â íìè.

Ïðåäëàãàåòñÿ, ÷òî åñëè íàæàòà F11 (èëè ÷òî òàì) íà êëàâå, àâðêà äà¸ò ñèãíàë â
ôïãà è ò.ä.
Ôïãà ãåíåðèò NMI ÎÄÍÎÂÐÅÌÅÍÍÎ (â òîì æå òàêòå), ÷òî è INT. Ò.å. ìû òî÷íî çíàåì
ìîìåíò âõîäà â íìè, è ïðè æåëàíèè, ìîæåì ïðîäîëæèòü ïðîãðàììó ñ òîãî æå ìåñòà
(âî âðåìåíè). Çàîäíî, åñëè èíò áûë ðàçðåø¸í, ìû íå çàñèðàåì ñòåê (îí òàê è òàê
áûë áû çàñðàí èíòîì).









íà çàïèñü - ïîñëå ôàêòà çàïèñè â ïîðò #BE, åñëè íàõîäèìñÿ â ñîñòîÿíèè NMI, íà
2îé ïî ñ÷¸òó /RFSH âûêëþ÷àåì ýòî ñîñòîÿíèå.

Òàêèì îáðàçîì âûõîä èç NMI ïðîèñõîäèò òàê

  POP <âñå ðåãèñòðû>
  OUT (#BE),A
  RETN

Òóò ìîæíî ñäåëàòü ðåñèíõðîíèçàöèþ çåòíèêà âçàä ê èíòó - âûñòàâèâ åìó çàìîðîçêó
êëîêà äî èíòà. Ïðè ýòîì íàäî ó÷åñòü òàêòû âûõîäà èç íìè (ïîï àäðåñà).