79705827

Date: 2025-07-18 07:23:11
Score: 0.5
Natty:
Report link

Principle of removing horizontal border is the same as for vertical border, but problem is the timing.

Whereas vertical border could be removed without interrupts, just based on $D012 value (you could do it at several lines), opening horizontal border needs interrupt from interrupt. Background is that single interrupt from regular code doesn't ensure precise timing since various instructions take different clocks to be completed until interrupt could be really performed.

Because of that you have to catch first VIC interrupt at specified line before area to be opened and interrupt handling routine shall end with consecutive NOPs which all of them have exactly the same defined clocks. Then it's ensured that next interrupt comes at precisely defined beam raster position and you are able to catch very small time-window to open border horizontally.

That's the reason why horizontal border is open just for few lines, typically for scrolling text, but not for whole screen. There wouldn't be any remaining time to perform any redraws or calculations.

Reasons:
  • Long answer (-1):
  • No code block (0.5):
  • Low reputation (1):
Posted by: KmsDev