1 Ostatnio edytowany przez nosty (2011-02-18 14:15:39)

Potrzebuje zmierzyc ile czasu (cykli) zabiera wykonanie dosc zlozonej procedury w asemblerze. Zrobic to w debuggerze byloby mi bardzo trudno, bo procedura wymaga "kontekstu": odpowiednio wypelnionych obszarow pamieci, ekranu, itp.
Chcialem uzyc Atari800win ustawiajac w konsoli F8 pulapki na adresach na poczatku i na koncu procedury.
Ale nadal nie wiem jak zmierzyc czas. Podejrzenie $0012-$0014 nic nie da, bo procedura jest szybsza niz ramka.
Jak to najlatwiej zrealizowac?

Dzieki za pomoc.

2

Jeśli dobrze kojarzę w monitorze atari800 (nie win!) podczas ręcznego wykonywania kodu masz licznik cykli cpu.
Jest to druga liczba od lewej przy wydruku każdego wykonanego rozkazu:

> g
  0  33 A=06 X=80 Y=01 S=F5 P=--*----- PC=F307: A9 80     LDA #$80
>

Zobacz - może w waszym też ten licznik jest.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

3

Ja zawsze przeliczałem ile cykli zajmuje procedura - to przy małych procedurach nastawionych na szybkość. Przy dłuższych zliczałem przebiegi VCOUNT-a ($D40B).

4 Ostatnio edytowany przez epi (2011-02-18 17:50:15)

mono: a pierwsza liczba to nr linii w ramce. W Atari800win też to jest.

nr_cyklu_w_ramce = nr_cyklu_w_linii + 114 * nr_linii_w_ramce

Stąd łatwo wyliczyć czas wykonania jako różnicę nr_cyklu_w_ramce po i przed. Tylko pamiętaj, że cały czas działa ANTIC. :)

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

5 Ostatnio edytowany przez eru (2011-02-18 17:48:48)

Kiedyś był cały wielki wątek o tym w kontekście przyspieszania Knights Lore. Patrz odtąd:

http://atariarea.krap.pl/forum/viewtopi … 623#p77623

Niestety, pliki na eru.nutki.com się pogubiły, ale ktoś może ma gdzieś np pacza do Atari800.. Nie chce mi się czytać całego wątku teraz :)

: 404. Stopka not found

6

A widziałeś profilera w altirze? Dokładnie to, czego potrzebujesz i więcej.

http://www.5oft.pl/

7

a jak już będzie wiedział ile cykli trzeba do/wy-cyklować kod użyjesz do tego MADSa

MADS 1.9.2
    * dodana nowa dyrektywa #CYCLE #N generująca kod 6502 o zadanej liczbie cykli N

8 Ostatnio edytowany przez nosty (2011-02-19 15:57:07)

Dzieki, wszyscy bardzo pomogliscie.
Faktycznie w Atari800win tez sa te liczby.
Dzieki!

Watku o przyspieszaniu KL kiedys nie czytalem wogole bo nie rozumielam ;) teraz moze byc dla mnie bardzo pouczajacy.