He probado el listado, y si es leeeentooo
Bueno, estamos rellenando 24KB de memoria desde Basic. ¿Qué esperabas?

Aunque lo de borrar la segunda pantalla era opcional, pero podría tener basurillas de anteriores programas (al fin y al cabo, todo carga sobre el mismo TPA). Si vas a cargar una imagen encima, entonces es tontería el borrarla, de hecho.
Y optimizando un poco más lo anterior: se puede pokear el FCB del fichero abierto para que te cargue sobre la memoria de video en vez de un buffer del Basic; así el programa será casi tan rápido como el que colgué en ensamblador.
Alucino, ahora empiezo ha entender el tema de la Roller Ram
Enhorabuena, ese era el objetivo.

Como seguramente habrás leído en el documento que indiqué, el valor del puerto $F5 (latcheado) le indica al PCW dónde empieza la roller. La roller no es más que una lista de punteros que le dice al PCW dónde empieza en memoria cada linea, con lo que tenemos flexibilidad total.
En el ejemplo utilizo una segunda roller y memoria de video; así no tenemos problemas de conmutación de bancos por las interrupciones, es directamente accesible y no afectamos la pantalla original.
Pero una vez entendido el principio general se pueden hacer todo tipo de cosas chulas, como solapar scanlines para ahorrar memoria, tener 2, 3, 4... buffers de video, compartir lineas (marcadores, vidas) entre todos ellos, scrolls verticales pixel a pixel por hardware, ... lo que te apetezca. El hardware de video del PCW es muy flexible (y el del PCW16 aún más, qué pena que no tenga uno para trastear).