User Tools

Site Tools


base:the_polling_method

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

base:the_polling_method [2015-04-17 04:34] (current)
Line 1: Line 1:
 +====== This article is not finished yet, stay tuned ======
  
 +
 +One method to acheive stable timing and complete synchronization with another signal is simply to poll the signal and take counter measures. The signal in this case could be the raster beam (stable rasters) or f.e. the drive CPU.
 +
 +Let's examplify with with polling the raster beam. We know $d012 contains lower 8 bits (out of nine) of the current raster line counter, and will increase by one every 63rd cycle.
 +
 +Consider the following code:
 +<​code>​
 +lda #$30
 +cmp $d012
 +bne *-3
 +</​code>​
 +
 +Since each loop here takes 5 cycles we'll have a jitter of up to 5 cycles. I.e. after the bne the beam will be on cycle 2-7. Imagine pushing this jitter so that it crosses the boundary between raster line #$30 and #$31 now by applying some NOPs (58cycles). If we add 58 cycles to the 2-7 jitter we get a jitter on 60-65 or in terms of raster lines 60-62(line #$30) and 0-2(line #$31). Within this intervall we want to poll $d012 again so by adding a lda $d012 and compensate that read in the 58cycles delay by 4 cycles we now will have a value that sometimes is #$30 (too early) or sometimes is #$31.
 +
 +<​code>​
 +          ldx #$30
 +lp1:
 +          cpx $d012
 +          bne lp1
 +          jsr cycles
 +          bit $ea
 +          nop
 +          cpx $d012
 +          beq skip1
 +          nop
 +          nop
 +skip1: ​   jsr cycles
 +          bit $ea
 +          nop
 +          cpx $d012
 +          beq skip2
 +          bit $ea
 +skip2: ​   jsr cycles
 +          nop
 +          nop
 +          nop
 +          cpx $d012
 +          bne onecycle
 +onecycle: rts
 +
 +cycles:
 +         ldy #$06
 +lp2:     dey
 +         bne lp2
 +         inx
 +         nop
 +         nop
 +         rts
 +</​code>​
 +
 +To be continued...
base/the_polling_method.txt ยท Last modified: 2015-04-17 04:34 (external edit)