[#65]
Re: Sonnet Crescendo 7200 w Amidze
@michal_zukowski,
post #61
@rzookol
Tak właściwie to ten program jest już sensownie napisany, na wszystkich natywnych strukturach operuje procesor 68k. PPC wykonuje tylko kalkulacje. Wymiana danych następuje przez bufor allokowany via AllocVec. Więc tutaj spatchowaliśmy 2 wywołania AllocVec, żeby używał pamięci Sonneta. Poza tym hunki PPC zostały spatchowane, żeby domyślnie lądowały w pamięci Sonneta. Rysowanie i obsługa okna odbywa się przez procesor 68k. Można powiedzieć, że ten program Cybermand to bardzo prosty przypadek do obsłużenia (ale od czegoś trzeba zacząć).
Funkcja Run68K wywoływana przez PPC uruchamia kod 68k przez proces 68k (zwany MasterControl), wewnątrz pamięci PPC. Więc PPC wysyła message (PutXMsgPPC) do procesu MasterControl, i ten kod dalej wywołuje potrzebny kod 68k w pamięci Fast Amigi. Robi to za pomocą oryginalnego tasku, który uruchomił kod PPC, używajac funkcji RunPPC (MirrorTask).
M/w tak:
Program 68k -> RunPPC -> PutMsg MasterControl (program 68k wchodzi w WaitPort()/WaitforPPC() -> MasterControl wysyła message do PPC i przerwanie do PPC -> PPC wykonuje swoją magię -> jeśli wykonuje Run68K -> PutXMsgPPC MasterControl -> przerwanie 68k (przerwanie "Gort") -> PPC wchodzi do Waitfor68K() -> Przerwanie 68k sygnalizuje do MasterControl -> MasterControl GetMsg i wtedy PutMsg do mirror tasku (oryginalnego programu 68k) -> oryginalny program 68K wykonuje swoją magię -> replymsg do MasterControl i oryginalny program 68k wraca do WaitforPPC().
Ciężko to opisać, trzeba byłoby jakiś diagram narysować. Jak jesteś bardziej zainteresowany to zajrzyj do kodu sonnet.library

.
@BULI
Nie mamy takiej karty, ale obsługa G4 to akurat żaden problem.
Ostatnia aktualizacja: 18.03.2015 18:58:36 przez strim_
Ostatnia aktualizacja: 18.03.2015 19:08:11 przez strim_