Копейкин
Не знаю, насколько регенерация памяти и видеосистема притормаживают процессор, интересно бы посмотреть диаграммы, но реального железа у меня нет. Если исходить из соображений, что простые инструкции занимают 2-3 байта, делают одно обращение к памяти или работают с регистрами, и в среднем читается/записывается 3 байта на 1 инструкцию, то память ограничивает производительность процессора на уровне 300000 команд в секунду. Если это поделить на 854 символа в секунду из результатов checkit, то получается 351 тактов, что несколько дофига. Чтобы нарисовать символ нужно вычислить смещение на экране, смещение в шрифте, маску для атрибутов, прочитать и записать 8 байт для режима 25x80. Если выделить по 10 команд на вычисление смещений, атрибутов, еще по 10 на чтение, наложение маски и запись, получается около 60 полезных команд, все остальные команды пользы для рисования символов не приносят. Сохранение регистров - еще 20 команд неизбежного зла, но если разбить экран на блоки можно за 10 команд убедиться что символ попадает в текущий блок и отложить его рисование на потом. Когда мы будет рисовать блок, эти 10 команд можно отыграть за счёт того, что не нужно вычислять смещение на экране для всех символов блока. То есть в теории, рисование одного символа команд за 60 одолеть можно. На практике ускорения в 351/60 мы не получаем, но в 3 раза ускорение для режима 25х80 получить можно без особых затрат. Для режима 25x40 можно получить ускорение в 5-6 раз, если делать табличку на 512 байт, и в 10 раз если занять шрифтом 4К. Расшифровка цифр из предыдущего сообщения:
1284 - примерно такую цифру должен был показать checkit, если бы не перехватил int2, а вот такое:
4091 - должен его заставить показать resident, если конечно они уживутся в реальности