@asman, post #30
@teh_KaiN, post #31
kod: move.w #$7fff,d0 move.w d0,dmacon(a5) ;dma off move.w d0,intena(a5) ;disable ints move.w d0,intreq(a5) ;clear pending ints
if(ubKeyReleased) { keyIntSetState(pKeyManager, ubKeyCode, KEY_NACTIVE); } else { keyIntSetState(pKeyManager, ubKeyCode, KEY_ACTIVE); }
UBYTE state = KEY_ACTIVE if (ubKeyReleased) { state = KEY_NACTIVE } keyIntSetState(pKeyManager, ubKeyCode, state);
@asman, post #32
keyIntSetState( pKeyManager, ubKeyCode, ubKeyReleased ? KEY_NACTIVE : KEY_ACTIVE );
@teh_KaiN, post #33
@asman, post #34
@teh_KaiN, post #27
Przerwania - byłem tam i okazuje się że OS dalej się wpieprza swoimi rzeczami w te przerwania, zjadając czas CPU. Dowód - AddIntServer narzuca format argumentów callbacków przerwania, więc nie jest to bezpośrednia podmiana wektorów na sprzęcie, tylko wciąż masz wrapper który oddaje kontrolę OSowi do robienia newralgicznych rzeczy.
W grach mierzę sobie czas tak jak mi Asman kiedyś zasugerował, żeby zmieniać kolor zerowy przed i po wykonaniu jakiegoś fragmentu głównej pętli, co w rezultacie da kolorowy pasek w tle proporcjonalnie gruby do czasu wykonania. Przed zawłaszczeniem HW kolorowe paski zaczynały się i kończyły w losowych miejscach, po zawłaszczeniu HW paski co klatkę pojawiają się w tym samym momencie i są zawsze takiej samej grubości.
@docent, post #36
Czyli SetTaskPri(FindTask(NULL), 127) przed miejscem, gdzie potrzebujesz czaly czas procesora i SetTaskPri(FindTask(NULL), 0) tam, gdzie chcesz np. zaladowac z dysku itp.
@mschulz, post #37
Nie musisz dawać SetTaskPri(self, 0) przed czytaniem z dysku. Twój program będzie czekał na sygnał po wywołaniu Read() i jego maksymalny priorytet nie będzie przeszkadzał. Dopiero kiedy filesystem skończy i odeśle pakiet twój proces dostanie sygnał i znowu będzie pracował z najwyższym priorytetem blokując wszystko inne.
@Krashan, post #39