Příklad DLI vs VBI

raster/c.p.u., 2009

Druhý příklad je rozšířením prvního, kdy kromě stejně pracujících DLI přibylo ještě VBI, provádějící záměrně tak dlouhou činnost, že ji lze vidět i během vykreslování následujícího snímku - činnost VBI rutiny je vyznačena zeleným mihotáním. Modré mihotání je práce hlavní rutiny.

Příklad dále demonstruje, jak jednotlivá DLI přerušují práci tohoto VBI a po dokončení se vrací k pokračování ve VBI rutině, a to i po trojnásobně kříženém DLI v dolní části.

K dokončení VBI dojde až téměř dole, kdy se teprve procesor dostane zpět k hlavní rutině (modré mihotání). Jak je vidět, někdy můžeme ve VBI a DLI rutinách spotřebovat i téměř všechen výkon procesoru.

Pro zajímavost na závěr doporučuji povšimnout si, jak je ukončována VBI rutina. Mám na mysli onen "magický" jmp $e462. Někteří lidé se domnívají, že je to nějaká výjimečná speciální značka. Ale je to daleko prostší. V OS ROM na příslušné adrese najdete skok jmp $c28a, a tam se nachází sekvence

    pla
    tay
    pla
    tax
    pla
    rti

neboli obnovení obsahu registrů Y,X,A (které OS ROM před voláním vaší VBI rutiny uschoval na zásobník) a ukončení přerušení instrukcí RTI.