@Davka,
post #29
@davka
Z tego co pamiętam to wychodzenie klawiszem w WHDLoad dostępne jest dopiero przy CPU 68010 lub wyższym. W 68000 brakuje jakiejś funkcji.
Bez obrazy ale Twoja pamięć w tym obszarze to delikatnie szwankuje bądź bardziej dyplomatycznie - co innego miałeś na myśli :)
Nie za bardzo rozumiem co oznacza funkcja w 68000. (Przepraszam, będzie teraz technicznie ) Mam nadzieje że chodziło Ci o specjalny rejestr (VBR) którego nie ma w 68000 a jest już dostępny od 68010+, który to umożliwia w przeniesienie tablicy wektorów przerwań pod inny adres. W 68000 jest on sztywno ustawiony na 0. A dlaczego taka z pozoru nieistotna rzecz jak inny adres tejże tablicy pozwala na prawie bezproblemowe wyjście z gry. Weźmy na tapetę dowolną grę pod 68000 czyli tablica wektórów przerwań jest zero. By dodać wyjście z tej gry do OS (przy cichym założeniu że OS mamy zamrożony ) mamy dwa rozwiązania.
1. Odszukać kluczowe pętle i tam dodać w tych miejscach łaty. Taka łata ma za zadanie sprawdzić czy został wciśnięty klawisz ( komunikacja z klawiaturą to osobny temat i załóżmy że jest poprawnie obsłużona ) i skok do procedury która przywróci OS. Minusów jest więcej niż plusów. Przytoczę tylko najważniejszy minus, nie zawsze można wyjść z gry bo nie dodaliśmy wszędzie gdzie trzeba odpowiednich łat a user jest poirytowany że czasami (zależy kiedy i w jakim miejscu gry wciska klawisz wyjścia ) można wyjść a czasami nie.
2. Dodać przerwanie klawiatury bądź wbić się w istniejące i zadbać o to by zawsze było włączone i w samym przerwaniu sprawdzić klawisz wyjścia i wyjść, i z przerwania (to też osobny i nie łatwy temat) i z programu.
Ten drugi sposób jest uskuteczniany przez autorów patchy (a na pewno ja tak robię). W ten sposób mamy wyjście dla procesora 68000. Oczywiście wiąże się to z dodatkową pracą i to czasami nie małą.
Weźmy się za ten tajemniczy rejestr VBR. Za pomocą prostego triku możemy mieć wyjście. Przenieśmy VBR w inne miejsce (poza obszar pamięci wykorzystywany przez grę). Dodajmy swoje własne funkcje przerwań. Każda taka funkcja sprawdza klawisz wyjścia i jeśli został naciśnięty to wychodzi do OS. W przeciwnym razie wywoływana jest funkcja przerwania spod adresu dla VBR równego 0. Wystarczy teraz że gra korzysta w przerwania VERTB, które jest bardzo popularne :) i mamy wyjście z gry za darmo.
Podsumowując. Wyjście z gry jest możliwe zawsze, wymaga to więcej pracy w przypadku gdy odpalamy WHDload na maszynie z 68000.
W razie wątpliwości / niejasności pytajcie.