<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Dyskusja%3AProgramowanie%3A_Detekcja_stereo</id>
	<title>Dyskusja:Programowanie: Detekcja stereo - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Dyskusja%3AProgramowanie%3A_Detekcja_stereo"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Dyskusja:Programowanie:_Detekcja_stereo&amp;action=history"/>
	<updated>2026-10-02T20:02:58Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Dyskusja:Programowanie:_Detekcja_stereo&amp;diff=1119&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Dyskusja:Programowanie:_Detekcja_stereo&amp;diff=1119&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;A może dałoby się zrobić to inaczej:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      ldx #$00&lt;br /&gt;
      stx $d20f     ;halt pokey 0&lt;br /&gt;
      stx $d21f     ;halt pokey 1&lt;br /&gt;
      lda #$03&lt;br /&gt;
      sta $d21f     ;release pokey 1&lt;br /&gt;
&lt;br /&gt;
      lda $d20a     ;see if pokey 0 is halted ($d20a = $ff)&lt;br /&gt;
?loop and $d20a&lt;br /&gt;
      inx&lt;br /&gt;
      bne ?loop&lt;br /&gt;
&lt;br /&gt;
      ldy #$03&lt;br /&gt;
      sty $d20f&lt;br /&gt;
&lt;br /&gt;
      cmp #$ff&lt;br /&gt;
      bne ?mono&lt;br /&gt;
&lt;br /&gt;
      inx&lt;br /&gt;
&lt;br /&gt;
?mono ...           ;X=0 - mono&lt;br /&gt;
                    ;X=1 - stereo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
? Procedura jest prostsza i krótsza niż u Sebana, oraz nie używa przerwań, ale nie bardzo mam na czym sprawdzić, czy to działa. [[Użytkownik:KMK|KMK]] 16:43, 19 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: EDIT: dalsze skrócenie, do 32 bajtów. Na emulatorze działa. [[Użytkownik:KMK|KMK]] 17:15, 19 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
Będzie działać na real sprzęcie. Sprawdziłem czy pokey w reset daje $FF. Dokładnie tak do działa. Pomysł bardzo fajny i o wiele prostszy niż zabawa z IRQ. --[[Użytkownik:Seban|Seban/SLIGHT]] 20:28, 20 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
moze w ten sposob?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
detect_stereo&lt;br /&gt;
      ldx #$00&lt;br /&gt;
      stx $d20f     ;halt pokey 0&lt;br /&gt;
      stx $d21f     ;halt pokey 1&lt;br /&gt;
      ldy #$03&lt;br /&gt;
      sty $d21f     ;release pokey 1&lt;br /&gt;
&lt;br /&gt;
      lda #$ff&lt;br /&gt;
?loop dex&lt;br /&gt;
      beq ?stereo&lt;br /&gt;
      cmp $d20a ;see if pokey 0 is halted ($d20a = $ff)&lt;br /&gt;
      beq ?loop&lt;br /&gt;
?stereo&lt;br /&gt;
      sty $d20f&lt;br /&gt;
                    ;Results:&lt;br /&gt;
                    ;X = 0  - stereo&lt;br /&gt;
                    ;X !=0  - mono&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Użytkownik:Xxl|Xxl]] 16:21, 25 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Uczcijmy to minutą ciszy. :) [[Użytkownik:KMK|KMK]] 19:47, 25 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
kolejna cykliczna &amp;quot;adekwatna a nawet gorsza reakcja&amp;quot; Drac030 :) [[Użytkownik:Xxl|Xxl]] 21:45, 25 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Najlepiej jest, kiedy właśnie tak myślisz. Nie krępuj się zatem :) [[Użytkownik:KMK|KMK]] 21:59, 25 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
Niestety zmienia &amp;quot;API&amp;quot; w nieintuicyjny sposób (chyba, że nazwiemy funkcję &amp;quot;is_mono&amp;quot;).&lt;br /&gt;
W rozwiązaniu Sebana kosztuje bajty ustawienie przerwań, a potem posprzątanie po nich. W rozwiązaniu KMK kosztuje to, że jeden $FF w RANDOM jeszcze o niczym nie świadczy. Jeśli dalej chcemy ciąć bajty, to można spróbować POTx - np. w jednym POKEYu odpalić szybkie skanowanie, a w drugim wolne. Jeśli szybkie włączymy w drugim POKEYu, a potem wolne w podstawowym, to nawet nie trzeba potem sprzątać. [[Użytkownik:0xF|0xF]] 12:34, 26 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Na POTach test stereo robi [[SysInfo]]. I to chyba działa, nie słyszałem narzekań. [[Użytkownik:KMK|KMK]] 13:08, 26 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
@fox: ale przecież KMK nie odczytuje raz $d20a... odczytuje to 256 razy, jak się którykolwiek bajt trafi nie $ff to zostanie to właśnie and-em wykryte. Moim zdaniem to prosta i czytelna metoda ;) Będzie działać na 100% :) --[[Użytkownik:Seban|Seban/SLIGHT]] 13:31, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
@fox #2: a dobra, nie doczytałem. Znaczy nie zrozumiałem za pierwszym razem o co Fox-owi chodziło. Fox tłumaczył że u KMK właśnie 256-krotnie AND-owanie daje pewność, w przeciwieństwie do procki XXL-a ;-) To była raczej próba oświecenia XXL-a przez Fox-a :P --[[Użytkownik:Seban|Seban/SLIGHT]] 13:33, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
Obawiam się Seban, że podobnie jak poprzednicy nie zrozumiałeś mojej poprawki. Sprawdź, nie tylko jest krótsza ale i szybsza - pętla jest przerywana. [[Użytkownik:Xxl|Xxl]] 14:54, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Seban: jednak nie zrozumiałeś. Poruszyłem dwie kwestie:&lt;br /&gt;
&lt;br /&gt;
: 1. Procka XXLa jest poprawna i szybsza. Jedyny mankament to, że zwraca odwrotny wynik, niż pozostałe procki.&lt;br /&gt;
&lt;br /&gt;
: Nie, to nie jest jedyny mankament (w zasadzie to nie jest żaden mankament). Proponowałem &amp;quot;uczcić to minutą ciszy&amp;quot;, bo w sposób bardzo skomplikowany uzyskuje to, co można bardzo prosto zrobić na mojej procedurze, to znaczy skrócić ją o 6 bajtów, pozbywając się kodu, który ustala wynik w rejestrze X. Kodu, który tam jest, bo to jest przykład i ma być klarowny. W przeciwnym wypadku A=$FF dla stereo i A=!$ff (a konkretnie to A=$00) dla mono jest równie dobrym wynikiem. [[Użytkownik:KMK|KMK]] 17:59, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Racja. I cofam to, że jest szybsza. [[Użytkownik:0xF|0xF]] 21:52, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: 2. Zaproponowałem jeszcze inną technikę - przy pomocy rejestrów POT. Zwróciłem uwagę, że &amp;quot;rozwlekłość&amp;quot; procedury Sebana wynika z programowania przerwań, a KMK i XXL z konieczności wielokrotnego sprawdzenia RANDOM. Być może &amp;quot;technika POT&amp;quot; byłaby krótsza. Jednak wycofuję się z tego pomysłu, bo co, jeśli podłączone są wiosełka lub coś innego (w 1200XL podobno jumpery) ?&lt;br /&gt;
&lt;br /&gt;
: [[Użytkownik:0xF|0xF]] 15:43, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
@fox: no już załapałem po drugiej edycji że XXL-a też zadziała ale nie chciałem już edytować po raz trzeci mając nadzieję że sam wyprostujesz moje brednie :P I tak się stało :) nie wiem czemu ale wcześniej jakoś ubzdurałem sobie że XXL-owa wersja wylezie po pierwszym $FF (co nie jest prawdą). jednym słowem, sorki za zamieszanie. Ostatnio mało czasu na sen mam :) --[[Użytkownik:Seban|Seban/SLIGHT]] 16:25, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
A ja dodam, że nie jest nawet najkrótsza, oto przykład: można przekazać informację za pomocą statusu procesora:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
is_stereo&lt;br /&gt;
      ldx #$00&lt;br /&gt;
      stx $d20f     ;halt pokey 0&lt;br /&gt;
      stx $d21f     ;halt pokey 1&lt;br /&gt;
      ldy #$03&lt;br /&gt;
      sty $d21f     ;release pokey 1&lt;br /&gt;
&lt;br /&gt;
_loop ror $d20a     ;see if pokey 0 is halted ($d20a = $ff)&lt;br /&gt;
      bcc _mono&lt;br /&gt;
      dex&lt;br /&gt;
      bne _loop&lt;br /&gt;
&lt;br /&gt;
_mono sty $d20f&lt;br /&gt;
                    ;Results:&lt;br /&gt;
                    ;C = 0  - mono&lt;br /&gt;
                    ;C = 1  - stereo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Użytkownik:Xxl|Xxl]] 23:54, 27 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: No pięknie, ale chyba procedura rozminęła się gdzieś po drodze z istotą metody? Chodziło o testowanie stałej wartości, a nie sprawdzenie czy przypadkiem b0 nie jest skasowany... [[Użytkownik:Mono|Mono]] 00:20, 28 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Nie, nie, to ma sens. Bo jeśli wystąpi C=0, to znaczy, że rejestr nie jest równy $FF. Przeciwnie, jeśli C=1 cały czas, to znaczy, że RANDOM stoi na $FF. Myślę, że można xxlowi pogratulować, po tygodniu myślenia zdołał realnie zaoszczędzić 1 bajt kodu. [[Użytkownik:KMK|KMK]] 00:24, 28 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
To nie efekt 5 minut myślenia, nawet nie tygodnia, to efekt 20 lat:) Z 32 bajtów do 24 to niezły wynik ale myślę, że i tak nie jest to najkrótsza wersja. [[Użytkownik:Xxl|Xxl]] 11:34, 28 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: 20 lat pracy nad tą procedurką? Szacun. Przykro, że ktoś wyprzedził cię o tydzień. PS. dlaczego ROR? [[Użytkownik:KMK|KMK]] 14:44, 28 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
Lecz kompleksy :-) Z Twoim wnioskowaniem to i odpowiedz ROR zostal zapisany w gwiazdach nie wypaczy wyniku. Zawsze możesz próbować napisać lepszą/szybszą/krótszą, rzuć wyzwanie losowi albo pogódź się z nim :) [[Użytkownik:Xxl|Xxl]] 15:43, 28 paź 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Nie wiem, czy zauważyłeś (pewnie nie), że występujesz w tej konkurencji sam. Mnie zadowala, że wykorzystanie RANDOM był nowy (najwyraźniej) pomysł. Ale życzę powodzenia. [[Użytkownik:KMK|KMK]] 16:41, 28 paź 2011 (CEST)&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>