Прикинул, что с учётом невозможности работать с видеопамятью когда она отрисовывается и при условии использовании DMA на Z180, работающем с частотой 25.175 МГц, мы сможем полностью менять кадр 4.4 раза в секунду в случае 640x400, 10.1 раз в секунду в случае 640x350 и 8.8 раза в секунду в случае 320x200 (если сумеем сохранять целую строку где-то в быстрой памяти, то оно будет в 2 раза быстрее - 17.6 раз в секунду). По сравнению со Спринтером это не густо, т.к. там акселератор теоретически мог обеспечить 85 полнокадровых перерисовок в секунду (практически не мерял - надо померять).
P.S. На самом деле это не так плохо, т.к. перерисовывая только одну полоску (высотой 50 пикселов и шириной 640 16-цветных пикселов или 320 256-цветных пикселов) мы сумеем получить 35 FPS для 640x400 и 320x200 и все 70 FPS в случае 640x350!
P.P.S. Я забыл, что в 16-цветном режиме я отменил палитру!
В этом случае теоретически можно разнести 4 микросхемы по разным шинам и процессор не будет тормозиться 3/4-времени работы с видеопамятью т.е. FPS-ы будут в 4 раза выше для 16-цветных режимов по сравнению с аналогичными 256-цветными (в 3.5 раза для 350 строк):
320x200 - 8.8 FPS (35 перерисовок одной полоски);
640x350 - 35.4 FPS (247 перерисовок одной полоски);
320x350 - 10.1 FPS (70 перерисовок одной полоски);
640x400 - 17.6 FPS (141 перерисовка одной полоски);
320x400 - 4.4 FPS (35 перерисовок одной полоски).
А вот интересно, можно ли эту палитру затолкать в галку или вообще на резисторах построить? Тогда можно сделать её палитрой по умолчанию для 256-цветных режимов и проц будет в 4 раза быстрее работать, пока программа не начнёт свою палитру использовать через 3 другие микросхемы видеопамяти...
Вот и набрали 4 бита в оставшуюся половинку четвёртого порта:
- отключение видео совсем;
- управление активной страницей в режиме 320x200;
- включение (точнее отключение) стандартной 256-цветной палитры "EGA2VGA" (как описано выше);
- что-то ещё было, но я забыл что...
P.P.P.S. Можно пойти другим путём - использовать эти биты чтобы устанавливать видеорежим - два младших бита на цветность:
00 - 16-цветный режим без палитры;
01 - 256-цветный режим с палитрой "EGA2VGA";
10 - 256-цветный режим "Grayscale" (градации серого);
11 - 256-цветный режим с пользовательской палитрой (палитрами).
И оставшиеся 2 бита (старших) на кол-во строк:
00 - 200 строк первая страница (верхняя половинка видеопамяти);
01 - 200 строк вторая страница (нижняя половинка видеопамяти);
10 - 350 строк с настройками 7 окон видеопамяти;
11 - 400 строк с фиксированными окнами видеопамяти.
Режим 16-цветов 200 строк бессмысленен (потому что 640x200), поэтому комбинации 0000 и 0100 будут иметь иной смысл - отключение видео совсем (0000) и расширение на будущее (0100) - например аппаратный текстовый режим...
P.P.P.P.S. Режимы 0001 и 0101 тоже не сильно осмысленные на самом деле, но пусть будут - мало ли...
P.P.P.P.P.S. Вот полная линейка видеорежимов с теоретической максимальной скоростью отрисовки в скобках:
0000 - отключение видео совсем;
0001 - 320x200 первая страница с палитрой EGA2VGA (35 FPS);
0010 - 320x200 первая страница с палитрой GRAYSCALE (35 FPS);
0011 - 320x200 первая страница с пользовательской палитрой (8.8 FPS);
0100 - расширение на будущее (аппаратный текст);
0101 - 320x200 вторая страница с палитрой EGA2VGA (35 FPS);
0110 - 320x200 вторая страница с палитрой GRAYSCALE (35 FPS);
0111 - 320x200 вторая страница с пользовательской палитрой (8.8 FPS);
1000 - 640x350 с настройками 7 окон видеопамяти (35 FPS);
1001 - 320x350 с настройками 7 окон видеопамяти и палитрой EGA2VGA (35 FPS);
1010 - 320x350 с настройками 7 окон видеопамяти и палитрой GRAYSCALE (35 FPS);
1011 - 320x350 с настройками 7 окон видеопамяти и пользовательскими палитрами (10 FPS);
1100 - 640x400 с фиксированными окнами видеопамяти (17.6 FPS);
1101 - 320x400 с фиксированными окнами видеопамяти и палитрой EGA2VGA (17.6 FPS);
1110 - 320x400 с фиксированными окнами видеопамяти и палитрой GRAYSCALE (17.6 FPS);
1111 - 320x400 с фиксированными окнами видеопамяти и пользовательскими палитрами (4.4 FPS).
Спринтеровские видеорежимы будут программно отображаться на этот набор - вобщем как-то так...