Posiadam ulepszoną wersję wykrywania źródła sygnału. Źródło sygnału jest przełączane do momentu znalezienia impulsu. Muszę dokonać modyfikacji w kodzie wykrywania sygnału pilota. Nie miał limitu czasu na początkowe wykrywanie krawędzi, więc dodałem go. Używam prostego zawijania rejestru X
DPILOT_BEGIN ldy #$00 ;Reset pilot tone counter
jsr SWITCH_SIGNAL_SOURCE ;Switch signal source
DPILOT_0 ldx #$00 ;Reset mini counter
DPILOT_1 inx ;Increment mini counter
beq DPILOT_BEGIN ;Timout, start over
L_MASK_A lda #$10 ;Get mask for 1
L_BIT_A bit SKSTAT ;Compare with signal
bne DPILOT_1 ;If 1, then loop
ldx #$00 ;Reset mini counter
stx COLBK ;Blank background
DPILOT_MID inx ;Increment mini counter
bmi DPILOT_BEGIN ;Timeout, start over
L_BIT_B bit SKSTAT ;Compare with signal
beq DPILOT_MID ;If 0, then loop
lda #$08 ;Background = gray
sta COLBK
cpx #$36 ;Check duration of the pulse
bcc DPILOT_BEGIN ;Too long, start over
iny ;Inc pilot tone counter
bne DPILOT_0 ;Less than 256, keep in pilot
JUSTRTS rtsDla porównania, oto oryginalny kod. Widać, że początkowa detekcja przejścia nie ma limitu czasu (reszta impulsu ma).
L0703 ldy #$00
L0705 lda #$10
L0707 bit SKSTAT
bne L0707
ldx #$00
stx COLBK
L0711 inx
bmi L0703
bit SKSTAT
beq L0711
lda #$08
sta COLBK
cpx #$36
bcc L0703
iny
bne L0705
JUSTRTS rts