Dyskusja:Programowanie: Detekcja stereo

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 18:28, 20 paź 2011
Seban (Dyskusja | wkład)

← Previous diff
Wersja z dnia 14:21, 25 paź 2011
Xxl (Dyskusja | wkład)
(@Fox, odejmuje 6 bajtow?)
Next diff →
Linia 30: Linia 30:
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) 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)
 +
 +
 +moze w ten sposob?
 +<pre>
 +detect_stereo
 + ldx #$00
 + stx $d20f ;halt pokey 0
 + stx $d21f ;halt pokey 1
 + ldy #$03
 + sty $d21f ;release pokey 1
 +
 + lda #$ff
 +?loop dex
 + beq ?stereo
 + cmp $d20a ;see if pokey 0 is halted ($d20a = $ff)
 + beq ?loop
 +?stereo
 + sty $d20f
 + ;Results:
 + ;X = 0 - stereo
 + ;X !=0 - mono
 +</pre>
 +[[Użytkownik:Xxl|Xxl]] 16:21, 25 paź 2011 (CEST)

Wersja z dnia 14:21, 25 paź 2011

A może dałoby się zrobić to inaczej:

      ldx #$00
      stx $d20f     ;halt pokey 0
      stx $d21f     ;halt pokey 1
      lda #$03
      sta $d21f     ;release pokey 1

      lda $d20a     ;see if pokey 0 is halted ($d20a = $ff)
?loop and $d20a
      inx
      bne ?loop

      ldy #$03
      sty $d20f

      cmp #$ff
      bne ?mono

      inx

?mono ...           ;X=0 - mono
                    ;X=1 - stereo

? 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. KMK 16:43, 19 paź 2011 (CEST)

EDIT: dalsze skrócenie, do 32 bajtów. Na emulatorze działa. KMK 17:15, 19 paź 2011 (CEST)

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. --Seban/SLIGHT 20:28, 20 paź 2011 (CEST)


moze w ten sposob?

detect_stereo
      ldx #$00
      stx $d20f     ;halt pokey 0
      stx $d21f     ;halt pokey 1
      ldy #$03
      sty $d21f     ;release pokey 1

      lda #$ff
?loop dex
      beq ?stereo 
      cmp $d20a ;see if pokey 0 is halted ($d20a = $ff)
      beq ?loop
?stereo
      sty $d20f
                    ;Results:
                    ;X = 0  - stereo
                    ;X !=0  - mono

Xxl 16:21, 25 paź 2011 (CEST)

Personal tools