Line-to line video jitter - why? How to avoid?

Are there some techichues to avoid line-to line VGA jitter? See attached picture. This is supposed to be a nice white rectangle, but the edges are not straight, and not stable - they look like waves, each line moves left and right, while the next moves in opposite direction
Comments
:loop mov VSCL, vscl_hsync ' 4 waitvid sync, #0 ' 6 mov VSCL, vscl_bp ' 4 waitvid blank, #0 ' 6 ' line generation here mov VSCL, vscl_fp ' 4 waitvid blank, #0 ' 6 djnz line_counter, #:loop ' 4 ' = 34
the shortest waitvid is for front porch - 48 pixels, translating into over 60 propeller clock cycles, which is much more than 34CON _clkmode = xtal1+pll16x _clkfreq = 80_000_000 PUB main cognew(@entry, 0) DAT entry '' 1024x768, 60 HZ, VESA CVT '' Pattern : 6 groups. Each group contains 128 lines : '' 64 lines of white-black-white ... sections '' 64 lines of black-white-black ... sections '' producing 16x12 "chess field" l_000 mov FRQA, $008 ' LONG $A0BFF408 l_001 movi VCFG, #$040 ' LONG $58FFFC40 l_002 movs VCFG, #$0FF ' LONG $50FFFCFF l_003 movd VCFG, #$002 ' LONG $54FFFC02 l_004 mov DIRA, #$0FF ' LONG $A0FFECFF l_005 shl DIRA, #$010 ' LONG $2CFFEC10 l_006 movi CTRA, $009 ' LONG $58BFF009 l_007 jmp #$00D ' LONG $5C7C000D l_008 LONG $19800000 l_009 LONG $0000000E l_00A LONG $00000000 l_00B LONG $00000000 l_00C LONG $00000000 '' vertical back porch- 4 lines l_00D mov $00A, #$004 ' LONG $A0FC1404 '' hsync l_00E mov VSCL, $1C9 ' LONG $A0BFFFC9 l_00F waitvid $1C8, #$000 ' LONG $FC7F9000 '' h back porch l_010 mov VSCL, $1CB ' LONG $A0BFFFCB l_011 waitvid $1CA, #$000 ' LONG $FC7F9400 '' h visible l_012 mov VSCL, $1CC ' LONG $A0BFFFCC l_013 waitvid $1CA, #$000 ' LONG $FC7F9400 '' h front porch l_014 mov VSCL, $1CD ' LONG $A0BFFFCD l_015 waitvid $1CA, #$000 ' LONG $FC7F9400 '' loop l_016 djnz $00A, #$00E ' LONG $E4FC140E '' vertical back porch- 23 lines l_017 mov $00A, #$017 ' LONG $A0FC1417 '' hsync l_018 mov VSCL, $1C9 ' LONG $A0BFFFC9 l_019 waitvid $1CE, #$000 ' LONG $FC7F9C00 '' h back porch l_01A mov VSCL, $1CB ' LONG $A0BFFFCB l_01B waitvid $1CF, #$000 ' LONG $FC7F9E00 '' h visible l_01C mov VSCL, $1CC ' LONG $A0BFFFCC l_01D waitvid $1CF, #$000 ' LONG $FC7F9E00 '' h front porch l_01E mov VSCL, $1CD ' LONG $A0BFFFCD l_01F waitvid $1CF, #$000 ' LONG $FC7F9E00 '' loop l_020 djnz $00A, #$018 ' LONG $E4FC1418 '' group - repeat 6 times l_021 mov $00A, #$006 ' LONG $A0FC1406 '' line - repeat 64 times l_022 mov $00B, #$040 ' LONG $A0FC1640 '' hsync l_023 mov VSCL, $1C9 ' LONG $A0BFFFC9 l_024 waitvid $1CE, #$000 ' LONG $FC7F9C00 '' h back porch l_025 mov VSCL, $1CB ' LONG $A0BFFFCB l_026 waitvid $1CF, #$000 ' LONG $FC7F9E00 '' section - white l_027 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_028 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_029 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_02A waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_02B mov VSCL, $1D0 ' LONG $A0BFFFD0 l_02C waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_02D mov VSCL, $1D0 ' LONG $A0BFFFD0 l_02E waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_02F mov VSCL, $1D0 ' LONG $A0BFFFD0 l_030 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_031 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_032 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_033 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_034 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_035 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_036 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_037 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_038 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_039 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_03A waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_03B mov VSCL, $1D0 ' LONG $A0BFFFD0 l_03C waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_03D mov VSCL, $1D0 ' LONG $A0BFFFD0 l_03E waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_03F mov VSCL, $1D0 ' LONG $A0BFFFD0 l_040 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_041 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_042 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_043 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_044 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_045 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_046 waitvid $1D2, #$000 ' LONG $FC7FA400 '' h front porch l_047 mov VSCL, $1CD ' LONG $A0BFFFCD l_048 waitvid $1CF, #$000 ' LONG $FC7F9E00 '' lines loop l_049 djnz $00B, #$023 ' LONG $E4FC1623 '' line - repeat 64 times l_04A mov $00B, #$040 ' LONG $A0FC1640 '' hsync l_04B mov VSCL, $1C9 ' LONG $A0BFFFC9 l_04C waitvid $1CE, #$000 ' LONG $FC7F9C00 '' h back porch l_04D mov VSCL, $1CB ' LONG $A0BFFFCB l_04E waitvid $1CF, #$000 ' LONG $FC7F9E00 '' section - black l_04F mov VSCL, $1D0 ' LONG $A0BFFFD0 l_050 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_051 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_052 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_053 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_054 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_055 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_056 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_057 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_058 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_059 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_05A waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_05B mov VSCL, $1D0 ' LONG $A0BFFFD0 l_05C waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_05D mov VSCL, $1D0 ' LONG $A0BFFFD0 l_05E waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_05F mov VSCL, $1D0 ' LONG $A0BFFFD0 l_060 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_061 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_062 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_063 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_064 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_065 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_066 waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_067 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_068 waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_069 mov VSCL, $1D0 ' LONG $A0BFFFD0 l_06A waitvid $1D1, #$000 ' LONG $FC7FA200 '' section - black l_06B mov VSCL, $1D0 ' LONG $A0BFFFD0 l_06C waitvid $1D2, #$000 ' LONG $FC7FA400 '' section - white l_06D mov VSCL, $1D0 ' LONG $A0BFFFD0 l_06E waitvid $1D1, #$000 ' LONG $FC7FA200 '' h front porch l_06F mov VSCL, $1CD ' LONG $A0BFFFCD l_070 waitvid $1CF, #$000 ' LONG $FC7F9E00 '' lines loop l_071 djnz $00B, #$04B ' LONG $E4FC164B '' groups loop l_072 djnz $00A, #$022 ' LONG $E4FC1422 '' v front porch - 3 lines l_073 mov $00A, #$003 ' LONG $A0FC1403 '' hsync l_074 mov VSCL, $1C9 ' LONG $A0BFFFC9 l_075 waitvid $1CE, #$000 ' LONG $FC7F9C00 '' h back porch l_076 mov VSCL, $1CB ' LONG $A0BFFFCB l_077 waitvid $1CF, #$000 ' LONG $FC7F9E00 '' h visible l_078 mov VSCL, $1CC ' LONG $A0BFFFCC l_079 waitvid $1CF, #$000 ' LONG $FC7F9E00 '' h front porch l_07A mov VSCL, $1CD ' LONG $A0BFFFCD l_07B waitvid $1CF, #$000 ' LONG $FC7F9E00 '' loop l_07C djnz $00A, #$074 ' LONG $E4FC1474 '' repeat frame l_07D jmp #$00D ' LONG $5C7C000D LONG 0[$14A] '' Constatnts pool ORG $1C8 L_1C8 LONG $00000001 L_1C9 LONG $00008068 L_1CA LONG $00000003 L_1CB LONG $00008098 L_1CC LONG $00008400 L_1CD LONG $00008030 L_1CE LONG $00000000 L_1CF LONG $00000002 L_1D0 LONG $00001040 L_1D1 LONG $000002FE L_1D2 LONG $00000202 L_1D3 LONG $00000000
Anyway, I would appreciate if someone looks at the code - possibly I am missing something. kuroneko - I mean you
Both frequencies differ by 250kHz which makes me wonder which frequency you actually want. Can you clarify?
I am attaching CVT description and spreadsheet, my CVT calculator and code builder, along with test code.