I'm currently on a trip, at this time I can't really check anything. I will only reply and comment about the global concepts for the time being ...
slingshot wrote:Meanwhile I also implemented a Shifter based on this great information. However I struggle at one point: Death of the left border. Inside the MMU/GLUE combo, the border is opened, the correct number of words are loaded (if 115 is the correct number). However the Shifter gets confused: sometimes the 3 leftover words are appearing at the beginning of the line, not at the end.
This is a stabilization issue. As you probably know by now, Shifter is designed for a line length where the the number of words is a multiple of four. If the number of words in a line are not a multiple of four, then Shifter might not process the end of line correctly. For this purpose software that opens the border usually implements something so called stabilization.
There are several possibilities that could break stabilization. The main suspect is probably a wrong implementation of the Reload Control Logic, but again, it might something else.
npomarede wrote:Ah OK, you're talking about the STE shifter. but in that case AFAIR the death of the left border doesn't work on STE.
Not sure - it opens the border correctly (the GLUE/MMU part works), just the planes are disordered.
I don't know for sure and have no way to check it right now, if indeed this demo works or not on a real STE. But Nicolas is probably correct. If so, then something in your implementation is not correct.
Also the same with Closure - btw, is there more versions of that demo, I read in a topic that it uses the illegal shiftmode ("11") to stop the shifter pixel clock, but I couldn't capture such an event.
I'm not sure, but I think there is only one single public version. For sure that the public version doesn't set both bits of the resolution register.
Upd.: I think an important info is missing from this thread: I read at another thread by @ijor that the palette registers are latches. So as soon as CMPCS_N goes down, the gates are opened, and the values on the data bus are enabled to the inner processes.
The palette registers are indeed asynchronous transparent latches. But this is not relevant for the issues you mention. The palette lookup happens at a later stage. It should not affect anything related to borders or stabilization. It is relevant mostly only for the so called Spectrum 512 effect that change palette registers on the fly.