mov
call
mov
call
didsync:
clr
ret
setsyn:
anl
add
movc
movx
ret
db
db
db
db
endp
;---------------------------------------------------------------------------
; delay by (A) ticks (1 tick = 4ms @ 250Hz)
proc
push
inc
add
mov
add
jnc
mov
loop:
mov
xrl
jnz
pop
ret
endp
;---------------------------------------------------------------------------
; calculate target tick value, taking 249->0 rollover into account
proc
push
forward nowrap
inc
add
mov
add
jnc
mov
nowrap:
mov
pop
ret
endp
;---------------------------------------------------------------------------
; decimal adjustment after subtraction
proc
mov
mov
call
mov
swap
dptr,#str_nosyn ; print sync error
write
a,#delval(800)
delay
MUTE
; turn Audio on again
a,#15
a,#2
a,@a+pc
@dptr,a
00h,80h,40h,0c0h; table for bit mirroring
20h,0a0h,60h,0e0h
10h,90h,50h,0d0h
30h,0b0h,70h,0f0h
delay
reg0
a
a,clk_msec
r0,a
a,#6
loop
r0,a
a,clk_msec
a,r0
loop
reg0
nexttime
reg0
a
a,clk_msec
r0,a
a,#6
nowrap
r0,a
a,r0
reg0
da_s
b,psw
c,ac
donibble
b.6,c
a
; mask nibble
; correct value
; read from table
; write to port
; done
; first assure we don't wait too few
; compute target value
; save this
; is the target value between 250..255 ?
; yes->wrap it
; wait for target value
; first assure we don't wait too few
; compute target value
; save this
; is the target value between 250..255 ?
; yes->wrap it
; save C+AC
; first process lower nibble
; then process upper nibble
Need help?
Do you have a question about the RT200 and is the answer not in the manual?