DetectJapanesePaddle:
    ld     bc,$0000        ; b = 0 for 256 loops; c = 0 for counting
-:  in     a,($dc)
    bit    5,a             ; Get TR input
    jr     nz,+            ; If 1, don't increment c
    inc    c
+:  djnz   -               ; repeat 256 times
    ld     a,c             ; inspect counter
    ; If the counter value is between $60 and $a0 (50% +/- 12.5% of 256)
    ; then set b=$ff else set b=0
    ld     b,$00
    sub    $60
    jr     c,_DetectionEnd
    cp     $40
    jr     nc,_DetectionEnd
    dec    b
_DetectionEnd:
    ld     a,b
    ret                    ; result in a ($ff if detected, 0 if not)



Return to top
0.111s