MSX2+ 以降用に作成するなら VDP レジスタの R#26,#27 を設定すれば簡単。MSX2 でも動作させたい場合は R#18 を使う。BASIC で書くとこんな感じ。
100 DEFINT A-Z 110 SCREEN 5 120 SETPAGE ,1:LINE(0,0)-(255,211),0,BF ' 裏ページを消去 130 SETPAGE ,0:CIRCLE(128,106),100 ' テストのパターンを描画 140 A=0 ' 表示ページ 150 B=0 ' 画面補正位置 160 GOTO 230 197 '------------------------ 198 'メインループ 199 '------------------------ 200 REM COPY (…)-STEP(16,16),2 TO (240,B*16),1-A,PSET ' ここで新しいパターンを転送 210 COPY(16,B*16)-STEP(240,16),A TO (0,B*16),1-A,PSET ' 16dot移動した物を裏へコピー 220 B=B+1 ' 位置変数更新 230 IF B>=16 THEN B=0:A=1-A:SETPAGE A ' ページ切り換え 240 VDP(19) = (VDP(19) AND &HF0) OR ((B - 8) AND 15) ' 画面位置補正 250 GOTO 200
ポイントは画面転送を16回に分割している所。1回で全画面転送すると 1/60 秒以内に処理できないが、1/16程度ならそれなりの速度で転送できるはず。
実際にはマシン語等を使わないと実用的ではないでしょう。VSYNC で同期とりにくいし。べーしっ君でテストしたら結構滑らかに動いていた記憶が〜(って8年位前の話なんだが)。