Kod jest w zasadzie poprawny

, (no może poztym że źle zapętliłeś - pomieszałeś zewnętrzną z wewnętrzną)
ale niestety tu wchodzą \'ograniczenia\' commodore (zresztą innych ośmiobitowców też).
Commodore ma 16 kolorów - a twój program korzysta z 55

.
Co do grafiki - ekran jest podzielony na kwadraciki 8x8 punktów, w których mogą być tylko dwa kolory i to jeszcze jeden z nich to tło tego kwadraciku! Więc przesuwając jedną linię, to jeszcze można to jakoś pogodzić - gorzej wiecej.
Żeby uzyskać zamierzony przez Ciebie efekt musisz tak jak wspomniał rafvte oprzeć to na assemblerze. Wtedy bedzie to wyglądało tak, że podczas wyrysowywania ekranu w odpowiedniej linii będzie się zmieniał kolor tła i w nastepnej znowu itd.
Niestety nie da sie tego zrobić w basicu, bo samo rozpoznanie rozkazu (np line (x,y)-(x,y),c) zabiera pare linii wyswietlania ekranu (mówiąc w dużym skrócie) i nie trafiłbyś w linię którą byś chciał.
Rozkazy assemblera zajmują tylko cząstke takiej linii np. 1/10 - i problem z trafieniem, już jest mniejszy.
pzdr