<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[atari.area forum - wydajnościówka w Action!]]></title>
		<link>https://www.atari.org.pl/forum/viewtopic.php?id=16500</link>
		<atom:link href="https://www.atari.org.pl/forum/extern.php?action=feed&amp;tid=16500&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Najświeższe odpowiedzi w wydajnościówka w Action!.]]></description>
		<lastBuildDate>Wed, 28 Apr 2021 06:50:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278620#p278620</link>
			<description><![CDATA[<p>@AS... doskonale o tym wiem, ale stosuję erystyczną sztuczkę &quot;gadki pod publiczkę&quot; ;)</p><p>Ja jestem z tych sofistów co otwarcie mówią jakie metody stosują, tyle, że ja dążę do prawdy a nie do tego by moje było na wierzchu :]</p><p>--- ed ---</p><p>TDC napisał, że zawstydziłem Ilmenita. Ja osobiście nie bardzo wiem gdzie. Jeżeli ktoś byłby łaskaw przykleić moje stanowisko na forum AOL to brzmi ono:</p><div class="quotebox"><cite>zbyti napisał/a:</cite><blockquote><p>TDC przestań robić wyzwania programistyczne w Action! Ilmenitowi. Dla każdego znającego jego osiągnięcia jest jasne, że gdyby Ilmenit uznał to za istotne to zmusił by kompilator Action! do prania jego starych gaci w rzece i jednoczesnego śpiewania przy tym międzynarodówki :]</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Wed, 28 Apr 2021 06:50:36 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278620#p278620</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278610#p278610</link>
			<description><![CDATA[<p>TeDeC tu nie pisze już.</p>]]></description>
			<author><![CDATA[null@example.com (AS...)]]></author>
			<pubDate>Tue, 27 Apr 2021 23:54:00 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278610#p278610</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278606#p278606</link>
			<description><![CDATA[<p>Widzę, że Tomek nie odpuszcza i wyzwanie wciąż &quot;aktualne&quot; ;)</p><p>Widocznie przedstawienie przeze mnie idei (i sposobu jak to osiągnąć w Action!), którą praktycznie od razu odgadł Ilmenit patrząc na raster time nie wystarczy.</p><div class="quotebox"><cite>Ilmenit napisał/a:</cite><blockquote><p>3. Nie patrzyłem w wynikowy kod, ale twoje &quot;odkrycie&quot; to prawdopodobnie wygenerowanie dostępu do tablicy w trybie adresowania &quot;Absolute Indexed&quot;, co wcześniej nie działało, ponieważ inkrementowałeś dwubajtowy wskaźnik a teraz masz stałą. Zakładam, że podobny efekt można uzyskać w wielu kompilatorach z tamtego okresu, bo nie ma powodu, aby nie można było.</p></blockquote></div><p>Może trzeba podać dokładne rozwiązanie?</p><div class="codebox"><pre><code>BYTE ARRAY FastP(0)=$9000</code></pre></div><p>Tak, każdy wie, że Action! nie pilnuje zakresu tablic :]</p><p>Na podstawie snippetów z wpisu TDC na blogu obaj mamy szybką tablicę bajtów, obaj mamy takie same raster time dla tego kodu ale Tomek to robi inaczej?</p>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Tue, 27 Apr 2021 21:58:42 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278606#p278606</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278572#p278572</link>
			<description><![CDATA[<div class="quotebox"><cite>supaplex napisał/a:</cite><blockquote><p>To co robisz jest w procedurach bibliotecznych języka.</p></blockquote></div><p>Ja ich celowo nie używam lub dołączam jako własny runtime aby po zapisaniu programu do XEX nie był potrzebny cartridge Action! w komputerze.</p><p>Do tego napisałem tak jak napisałem bo to narzucił artykuł TDC <a href="https://tdc-smakowitosci.blogspot.com/2021/04/przeomowe-atarowe-odkrycie-w-action.html">https://tdc-smakowitosci.blogspot.com/2 … ction.html</a></p><div class="quotebox"><cite>TDC napisał/a:</cite><blockquote><p>Korzystaliśmy z tego rozwiązania latami, będąc przekonanymi, że nie ma w żadnym języku czegoś szybszego i bardziej sprytnego;)</p><p>(...)</p><p>Okazało się, że myk jaki wymyśliłem - Action! kompiluje do 5 bajtów kodu dla stałej i do 8 bajtów przy zmiennym adresie (animacji). Jest to najmniejszy rozmiar kodu jaki da się wygenerować, więc krócej i szybciej na Atari się już nie da;))</p><p>Coś niesamowitego, naprawdę sądziłem przez kilkadziesiąt lat, że szybciej się już nie da... A jednak!;)</p></blockquote></div><p>Sednem tego artykułu nie jest wypełnienie pamięci jakąś jedną wartością tylko wymuszenie szybkiego trybu indeksowego. TDC SETBLOCK używa od zawsze, nie o to chodzi.</p><p>Jak pokazałem rok temu na AOL ta metoda pozwala także na osiągnięcie upragnionego LDA/STA w miejsce PEEK i POKE.</p><p>---</p><div class="quotebox"><cite>TDC napisał/a:</cite><blockquote><p>Wrato zaznaczyć, że do dziś wszyscy pamiętają, że Action! to znaczy szybkość i że nie ma możliwości odnalezienia innego języka, który byłby prawie tak szybki jak asembler.</p></blockquote></div><div class="quotebox"><cite>xxl napisał/a:</cite><blockquote><p>jak sie czyta zrodla co on generuje... nie da sie uratowac tego kompilatora</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Tue, 27 Apr 2021 10:08:13 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278572#p278572</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278571#p278571</link>
			<description><![CDATA[<p>Język wysokiego poziomu (ACTION!) powstał aby skrócić pisanie programów. To co robisz jest w procedurach bibliotecznych języka. Z ciekawości dołączyłem do twojego testu taką procedurę żeby sprawdzić ile zajmuje czasu.<br />Jeżeli jest za długa, to jak widzę nieźle sobie radzisz z wstawkami maszynowymi i na pewno możesz napisać własną.</p><br /><div class="codebox"><pre><code>SET $E=$2000 SET $491=$2000

DEFINE
  RBARON=&quot;[$A9$E$8D$D40A$8D$D01A]&quot;,RBAROFF=&quot;[$A9$0$8D$D01A]&quot;

BYTE ARRAY MATRIX=0
BYTE ARRAY MEMMATRIX(21)=$9000

CARD
  MEMADDR=$CA

BYTE
  I=$CC

PROC RSYNC=*(BYTE L)[$CD$0B$D4$D0$FB$60]

PROC OLDSTUFF=*()
  FOR I=0 TO 20 DO
    MATRIX(MEMADDR)=255
    MEMADDR==+1
  OD
RETURN

PROC NEWSTUFF=*()
  FOR I=0 TO 20 DO
    MEMMATRIX(I)=255
  OD
RETURN

PROC MAIN=*()

  DO
    MEMADDR=$9000
    RSYNC(40)
    RBARON OLDSTUFF() RBAROFF

    RSYNC(80)
    RBARON NEWSTUFF() RBAROFF

    RSYNC(100)
    RBARON
    SETBLOCK(MEMMATRIX,20,255)
    RBAROFF
  OD  

RETURN</code></pre></div><p>PS.<br />Życzę dużo satysfakcji w poznawaniu 8-bitowców, powodzenia w budowie i tworzeniu gier.</p>]]></description>
			<author><![CDATA[null@example.com (supaplex)]]></author>
			<pubDate>Tue, 27 Apr 2021 09:37:11 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278571#p278571</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278514#p278514</link>
			<description><![CDATA[<p>Już wiem:</p><div class="codebox"><pre><code>SET $E=$2000 SET $491=$2000

DEFINE
  RBARON=&quot;[$A9$E$8D$D40A$8D$D01A]&quot;,RBAROFF=&quot;[$A9$0$8D$D01A]&quot;

BYTE ARRAY MATRIX=0
BYTE ARRAY MEMMATRIX(21)=$9000

CARD
  MEMADDR=$CA

BYTE
  I=$CC

PROC RSYNC=*(BYTE L)[$CD$0B$D4$D0$FB$60]

PROC OLDSTUFF=*()
  FOR I=0 TO 20 DO
    MATRIX(MEMADDR)=255
    MEMADDR==+1
  OD
RETURN

PROC NEWSTUFF=*()
  FOR I=0 TO 20 DO
    MEMMATRIX(I)=255
  OD
RETURN

PROC MAIN=*()

  DO
    MEMADDR=$9000
    RSYNC(40)
    RBARON OLDSTUFF() RBAROFF

    RSYNC(80)
    RBARON NEWSTUFF() RBAROFF
  OD

RETURN</code></pre></div><p>------------</p><div class="codebox"><pre><code>BYTE ARRAY MEMMATRIX(21)=$9000</code></pre></div><div class="codebox"><pre><code>PROC NEWSTUFF=*()
  FOR I=0 TO 20 DO
    MEMMATRIX(I)=255
  OD
RETURN</code></pre></div><div class="codebox"><pre><code>2036: A0 00     LDY #$00
2038: 84 CC     STY $CC
203A: A9 14     LDA #$14
203C: C5 CC     CMP $CC
203E: B0 03     BCS $2043
2040: 4C 4F 20  JMP $204F
2043: A9 FF     LDA #$FF
2045: A6 CC     LDX $CC
2047: 9D 00 90  STA $9000,X
204A: E6 CC     INC $CC
204C: 4C 3A 20  JMP $203A
204F: 60        RTS</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Mon, 26 Apr 2021 09:05:05 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278514#p278514</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278513#p278513</link>
			<description><![CDATA[<p>jak sie czyta zrodla co on generuje... nie da sie uratowac tego kompilatora</p>]]></description>
			<author><![CDATA[null@example.com (xxl)]]></author>
			<pubDate>Mon, 26 Apr 2021 09:00:36 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278513#p278513</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278512#p278512</link>
			<description><![CDATA[<p>@xxl</p><p><strong>OLDSTUFF()</strong><br /></p><div class="codebox"><pre><code>0E25: A0 00     LDY #$00
0E27: 84 CC     STY $CC
0E29: A9 14     LDA #$14
0E2B: C5 CC     CMP $CC
0E2D: B0 03     BCS $0E32
0E2F: 4C 52 0E  JMP $0E52
0E32: 18        CLC
0E33: AD 08 0E  LDA $0E08
0E36: 65 CA     ADC $CA     ;LOADFLG
0E38: 85 AE     STA $AE     ;LELNUM+1
0E3A: AD 09 0E  LDA $0E09
0E3D: 65 CB     ADC $CB
0E3F: 85 AF     STA $AF     ;STENUM
0E41: A9 FF     LDA #$FF
0E43: A0 00     LDY #$00
0E45: 91 AE     STA ($AE),Y ;LELNUM+1
0E47: E6 CA     INC $CA     ;LOADFLG
0E49: D0 02     BNE $0E4D
0E4B: E6 CB     INC $CB
0E4D: E6 CC     INC $CC
0E4F: 4C 29 0E  JMP $0E29
0E52: 60        RTS</code></pre></div><p><strong>NEWSTUFF()</strong><br /></p><div class="codebox"><pre><code>0E53: A0 00     LDY #$00
0E55: 84 CC     STY $CC
0E57: A9 14     LDA #$14
0E59: C5 CC     CMP $CC
0E5B: B0 03     BCS $0E60
0E5D: 4C 6C 0E  JMP $0E6C
0E60: A9 FF     LDA #$FF
0E62: A6 CC     LDX $CC
0E64: 9D 0A 0E  STA $0E0A,X
0E67: E6 CC     INC $CC
0E69: 4C 57 0E  JMP $0E57
0E6C: 60        RTS</code></pre></div><p>Trzeba by przykład w Action! dopracować, ale nie będę na to czasu poświęcał bo dokładnie o to chodzi.</p><div class="codebox"><pre><code>MEMMATRIX^=$9000</code></pre></div><p>Nie pisałem już dawno w Action! na to miałem jakieś obejście ale już nie pamiętam, po prostu jak się to zrobi tak by strzelało w $9000 to dokładnie chodzi o to co piszesz.</p>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Mon, 26 Apr 2021 08:36:34 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278512#p278512</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278509#p278509</link>
			<description><![CDATA[<p>boje sie zapytac... ktos zauwazyl roznice miedzy trybem indeksowanym i posrednim indeksowanym? bo jesli tak czekam na odkrycie operacji dodawania.</p>]]></description>
			<author><![CDATA[null@example.com (xxl)]]></author>
			<pubDate>Mon, 26 Apr 2021 08:11:11 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278509#p278509</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278507#p278507</link>
			<description><![CDATA[<p>A gdzie tam... Skoro ten trick jest taki wiekopomny a TDC ociąga się z jego udokumentowaniem to &quot;na każdym zebraniu jest taka sytuacja, że ktoś musi zacząć pierwszy&quot;. :D</p>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Mon, 26 Apr 2021 07:48:16 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278507#p278507</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278500#p278500</link>
			<description><![CDATA[<p>Oj, coś mi tu śmierdzi wojną polsko-polską a nie wojenka A8 i C= :-)</p>]]></description>
			<author><![CDATA[null@example.com (pancio.net)]]></author>
			<pubDate>Mon, 26 Apr 2021 05:55:38 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278500#p278500</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=278495#p278495</link>
			<description><![CDATA[<p>TDC po 30 latach dokonał wiekopomnego odkrycia a ja to opisałem rok temu w poście 48 <a href="https://atarionline.pl/forum/comments.php?DiscussionID=5407&amp;page=1#Item_0">https://atarionline.pl/forum/comments.p … e=1#Item_0</a> po 2-mc zabawy ;)</p><div class="codebox"><pre><code>DEFINE
  RBARON=&quot;[$A9$E$8D$D40A$8D$D01A]&quot;,RBAROFF=&quot;[$A9$0$8D$D01A]&quot;

BYTE ARRAY MATRIX=0
BYTE ARRAY MEMMATRIX(21)

CARD
  MEMADDR=$CA

BYTE
  I=$CC

PROC RSYNC=*(BYTE L)[$CD$0B$D4$D0$FB$60]

PROC OLDSTUFF=*()
  FOR I=0 TO 20 DO
    MATRIX(MEMADDR)=255
    MEMADDR==+1
  OD
RETURN

PROC NEWSTUFF=*()
  FOR I=0 TO 20 DO
    MEMMATRIX(I)=255
  OD
RETURN

PROC MAIN=*()

  MEMMATRIX^=$9000

  DO
    MEMADDR=$9000
    RSYNC(40)
    RBARON OLDSTUFF() RBAROFF

    RSYNC(80)
    RBARON NEWSTUFF() RBAROFF
  OD

RETURN</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (zbyti)]]></author>
			<pubDate>Sun, 25 Apr 2021 21:46:05 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=278495#p278495</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=258575#p258575</link>
			<description><![CDATA[<p>dzięki Kuba - z tym prostokątem to czytasz mi w myślach :)</p><p>a punkt odniesienia i moje nieśmiałem próbki w Action! tutaj:<br /><a href="http://tooloudtoowide.marcinrusinowski.com/z-pamieci/jeszcze-szybciej-czyli-proste-kopiowanie-pojedynek-c-vs-action/">http://tooloudtoowide.marcinrusinowski. … vs-action/</a></p>]]></description>
			<author><![CDATA[null@example.com (tooloudtoowide)]]></author>
			<pubDate>Fri, 24 Jan 2020 12:33:54 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=258575#p258575</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=258553#p258553</link>
			<description><![CDATA[<div class="quotebox"><cite>tooloudtoowide napisał/a:</cite><blockquote><p>Pytanie - czy da się to szybciej w Action?</p></blockquote></div><p>Bez stosowania szczególnych rozwiązań - nie. Szczególne rozwiązanie to podmienić moveblock na to memcpy z cc65, i będzie tak samo szybko, lub napisać szybką procedurę &quot;blit&quot;, która pobierze dodatkowe parametry i mieć możliwość kopiowania prostokąta za jednym wywołaniem.</p><p>Trzeba pamiętać, że protokół wywołania procedury w action różni się w zal. od liczby bajtów parametrów: do trzech bajtów parametrów - rejestry&nbsp; axy. Powyżej - przez komórki pamięci na stronie zerowej (a już nie przez rejestry).</p>]]></description>
			<author><![CDATA[null@example.com (qbahusak)]]></author>
			<pubDate>Fri, 24 Jan 2020 09:46:02 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=258553#p258553</guid>
		</item>
		<item>
			<title><![CDATA[Odp: wydajnościówka w Action!]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=258500#p258500</link>
			<description><![CDATA[<p>aż odpalę zliczanie z zegarka, bo nie widzę po rysowaniu w pamięci, żeby to 4x szybciej było - ale dzięki za podpowiedź, muszę zmajstrować tak jak myślałem własną prockę do tego.</p><p>Oryginalnie zrobili to tak:</p><div class="codebox"><pre><code> PROC MoveBlock=*(BYTE POINTER d,s,CARD sz)
[$A085$A186$A284$A0$0$A5A5$16F0$A2B1$A091$C8$F9D0$A1E6$A3E6$A5C6$F1
D0$5F0$A2B1$A091$C8$A4C4$F7D0$60]</code></pre></div><div class="codebox"><pre><code>$664E P_MOVEBLOCK STA FRET
            STX FRET+1
STY BPTR2
LDY #$00
LDA L00A5
BEQ L6670
LDA (BPTR2),Y  
STA (FRET),Y
INY
BNE L665A
INC FRET+1
INC L00A3
DEC L00A5
BNE L665A
BEQ L6670
L666B       LDA (BPTR2),Y  
STA (FRET),Y
            INY
L6670       CPY L00A4
BNE L666B 
RTS</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (tooloudtoowide)]]></author>
			<pubDate>Thu, 23 Jan 2020 15:36:46 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=258500#p258500</guid>
		</item>
	</channel>
</rss>
