short info:
i do my dlis in this way:
set it directly in the displaylist... no long dlis...
dli1
pha
txa
pha
tya
pha
sta wsync
do the stuff
lda #
sta dliv (512 on atari 800)
lda #>dli2
sta dliv+1
pla
tay
pla
tax
pla
rti
dli2
same as above just pointing to dli3...
last dli
does not enter the new vector or even the vector to dli1...
my vbl routine sets the correct pointer to dli1...
if you need a dli in between a line than
point the dli directly to it with WSYNCs...because in character mode you just can set the dli-bits on 8/16 scanline modes...
maybe this helps...
btw. you should not have jumping scanlines with "STA WSYNCS"... i would switch each dli off and try each of your 6 dlis... if they are jumping and then switching them on separatly: 1, 2,3,4,5,6, 1+2, 1+2+3, 1+2+3+4, ...
maybe you can trace which or when your routines get out of sync...
hve
http://www.s-direktnet.de/homepages/k_nadj/main.html