Dyskusja:Programowanie: Detekcja stereo
From Atariki
(Różnice między wersjami)
| 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)
