Dyskusja:Programowanie: Detekcja stereo

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:43, 19 paź 2011
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 15:15, 19 paź 2011
KMK (Dyskusja | wkład)

Next diff →
Linia 7: Linia 7:
lda #$03 lda #$03
sta $d21f ;release pokey 1 sta $d21f ;release pokey 1
- 
- ldy #$00 
lda $d20a ;see if pokey 0 is halted ($d20a = $ff) lda $d20a ;see if pokey 0 is halted ($d20a = $ff)
Linia 14: Linia 12:
inx inx
bne ?loop bne ?loop
 +
 + ldy #$03
 + sty $d20f
cmp #$ff cmp #$ff
bne ?mono bne ?mono
- iny+ inx
- +
-?mono lda #$03+
- sta $d20f+
- ... ;Y=0 - mono+?mono ... ;X=0 - mono
- ;Y=1 - stereo+ ;X=1 - stereo
</pre> </pre>
? 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) ? 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)
 +
 +:EDIT: dalsze skrócenie, do 32 bajtów. Na emulatorze działa. [[Użytkownik:KMK|KMK]] 17:15, 19 paź 2011 (CEST)

Wersja z dnia 15:15, 19 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)