Smonson wrote: ↑
Mon Jan 08, 2018 9:45 am
Wow, that's quite surprising actually. So, let me get this straight, if it wasn't for the stabiliser then the total number of LOADs on the line wouldn't be a multiple of 4, and I guess the length added by the stabiliser is the shortest available one that satisfies that requirement?
It also switches to 71Hz near the beginning of the line, presumably for the same reason, but since there are no LOADs in the shifter already, it displays black by default.
It's really useful that you told me that the switch happens exactly at cycle 444, because I've been guessing where to align the physical screen with the Atari's scanline cycle number. Now I can get it exact
The "stabilizer" clears the extra words that would otherwise be left in the Shifter for next scanline, yes.
At the beginning of the scanline the switch to HI is done to make the GLUE start the line earlier than it would've otherwise
That's how you "open" the left border.
For more information on the exact cycles, please see my "state machine" for the GLUE (ST, STE is slightly different):
Code: Select all
4 IF(71) H = TRUE
24 IF(60) BLANK = FALSE
28 IF(50) BLANK = FALSE
52 IF(60) H = TRUE
54 LINE = 508/512(/224)
56 IF(50) H = TRUE
164 IF(71) H = FALSE
184 IF(71) BLANK = TRUE
372 IF(60) H = FALSE
376 IF(50) H = FALSE
450 IF(!71) BLANK = TRUE
LINE-50 IF(!71) HSYNC = TRUE && H = FALSE
LINE-10 IF(!71) HSYNC = FALSE
Code: Select all
4: IF(71) H = TRUE
164: IF(71) H = FALSE
184: IF(71) BLANK = TRUE
188: IF(71) HSYNC = TRUE
212: IF(71) HSYNC = FALSE
In reality this is not how it's implemented in GLUE, but it's a simpler explanation on how to get to the accurate cycles. H is combined with V (separate vertical state machine) to form DE.
So, for the left border, even if the decision to start the line is taken at cycle 4, BLANK is still active and thus no graphics is displayed until cycle 24 or 28 depending on frequency.
Also, for the stabilizer, as you can see by going to 71 at cycle 444 and back at 456 it means the IF(!71) BLANK = TRUE doesn't happen. Additional pixels will thus be displayed until 512-50=462 (for a 50Hz line) when HSYNC kicks in which will enable BLANK and nothing should be displayed for the rest of the line.
I have much more on this written up on the Atari-Wiki but it's currently down and the only way to read it is through "view source" on the wiki pages ... http://www.atari-wiki.com/index.php?tit ... ction=edit