В эпоху 4K-дисплеев и глубоких цветовых пространств вопрос о том, сколько страниц текста можно отобразить на мониторе с разрешением 640×400 пикселей и 16-цветной палитрой при объёме памяти 1250 КБ, кажется анахронизмом. Однако такие параметры были стандартными для ранних IBM PC, Commodore Amiga или текстовых терминалов 1980–1990-х. Сегодня подобные расчёты актуальны для ретро-компьютеров, эмуляторов или специализированных систем с ограниченными ресурсами.

Ответ на вопрос зависит от трёх ключевых факторов: размера видеопамяти, разрешения экрана и способа кодирования текста. В этой статье мы разберёмся, как вычислить количество страниц, учитывая уникальную особенность 16-цветного режима EGA/VGA: каждый пиксель занимает 4 бита (полбайта), а не стандартный байт, как в современных системах.

Прежде чем переходить к формулам, стоит уточнить: под «страницей» здесь понимается полноэкранный текстовый блок, который полностью помещается в разрешении 640×400. В контексте старых систем это мог быть экран терминала, страница документа в WordPerfect или вывод программы в текстовом режиме. Важно также отличать графический режим (где каждый пиксель кодируется отдельно) от текстового (где символы хранятся в виде кодов в памяти, а не как растр).

📊 С какой целью вам нужны такие расчёты?
Ретро-компьютинг
Обучение программированию старых систем
Оптимизация встраиваемых устройств
Любопытство
Другое

1. Как рассчитать объём видеопамяти для 640×400 и 16 цветов

В графическом режиме с разрешением 640×400 и 16 цветами каждый пиксель кодируется 4 битами (так как 2⁴ = 16). Это означает, что на один байт (8 бит) приходится два пикселя. Формула для расчёта общего объёма памяти на один экран проста:

Объём на 1 экран (байт) = (Ширина × Высота × Глубина цвета в битах) / 8

Подставляем значения:

  • 📏 Ширина: 640 пикселей
  • 📏 Высота: 400 пикселей
  • 🎨 Глубина цвета: 4 бита (16 цветов)

(640 × 400 × 4) / 8 = 128 000 байт = 125 КБ на один экран

Таким образом, один полноэкранный графический кадр в этом режиме занимает 125 КБ. Но в вопросе указан объём 1250 КБ — это в 10 раз больше, чем требуется для одного экрана. Отсюда первый вывод: в памяти можно хранить 10 полноэкранных графических изображений (если речь идёт о статической графике).

Однако если под «страницами» понимаются текстовые экраны, а не графические, расчёты меняются. В текстовом режиме информация хранится не как растр, а как набор символов, где каждый символ занимает 1–2 байта (в зависимости от кодировки). Об этом — в следующем разделе.

💡

В графическом режиме 640×400×16 цветов один экран занимает 125 КБ. 1250 КБ хватит на 10 таких экранов.

2. Текстовый режим vs графический: что считать «страницей»?

Здесь кроется главная неоднозначность. В старых системах текстовый режим и графический режим использовали память по-разному:

Режим Разрешение Цвета Память на символ/пиксель Память на экран
Текстовый (80×25) 640×200 16 цветов (текст) + 8 цветов (фон) 2 байта на символ 4 КБ
Графический (EGA) 640×350 16 цветов 4 бита на пиксель ~92 КБ
Графический (VGA) 640×400 16 цветов 4 бита на пиксель 125 КБ
Текстовый (80×43) 640×344 Мono 2 байта на символ ~7 КБ

Если предположить, что «страница» — это текстовый экран (например, 80 символов в ширину и 25 строк), то расчёты кардинально меняются. В таком случае:

  • 📜 Один символ занимает 2 байта (1 байт — код символа, 1 байт — атрибуты цвета).
  • 🖥️ На экране 80×25 = 2000 символов.
  • 💾 Память на один экран: 2000 × 2 = 4 КБ.

Тогда 1250 КБ / 4 КБ = 312 текстовых страниц. Но это противоречит исходному разрешению 640×400, которое явно указывает на графический режим. Значит, нужно уточнить, что именно подразумевается под «страницей».

💡

В старых системах текстовый и графический режимы часто переключались программно. Например, в DOS команда MODE CO80 устанавливала текстовый режим 80×25, а MODE EGA — графический.

3. Альтернативный подход: страницы как графические слайды

Допустим, «страница» — это полноэкранное графическое изображение (например, слайд презентации или кадр анимации). Тогда, как мы выяснили ранее, один экран занимает 125 КБ. При объёме памяти 1250 КБ получим:

Количество страниц = Общий объём / Объём на страницу = 1250 КБ / 125 КБ = 10 страниц.

Но этот результат кажется слишком скромным. Возможно, речь идёт о сжатых данных или о текстовых страницах с графическими вставками. Рассмотрим третий вариант: смешанный режим, где на экране отображается и текст, и графика.

Например, в системах типа Amiga или Atari ST часто использовался дуальный режим:

  • 🖼️ Верхняя часть экрана — графика (например, 640×200).
  • 📄 Нижняя часть — текст (80×25).

В таком случае память на «страницу» складывается из памяти для графики и памяти для текста. Если предположить, что графика занимает половину экрана (640×200), то:

  • Графика: (640 × 200 × 4) / 8 = 62.5 КБ.
  • Текст (80×25): 4 КБ.
  • Итого на страницу: 66.5 КБ.

Тогда 1250 КБ / 66.5 КБ ≈ 18 страниц. Этот результат уже ближе к реалистичным сценариям.

Почему в старых системах использовались такие низкие разрешения?

Из-за ограничений видеопамяти (например, EGA имел всего 256 КБ) и производительности процессоров. Разрешение 640×400 при 16 цветах было компромиссом между детализацией и скоростью отображения.

4. Учёт сжатия и формата хранения данных

Все предыдущие расчёты предполагают, что данные хранятся в несжатом виде. Однако в реальных системах часто применялось сжатие, особенно для статической графики или текста. Например:

  • 🗜️ RLE-сжатие (поксельная оптимизация для однотонных областей).
  • 📂 Специализированные форматы (например, .PCX или .GIF для графики).
  • 📜 Кодирование текста (например, LZW для сокращения повторяющихся символов).

Если данные сжаты, количество страниц может увеличиться в 2–5 раз. Например, при коэффициенте сжатия 3:1 (типичном для RLE в графике с большими одноцветными областями):

  • Графика на страницу: 125 КБ / 3 ≈ 42 КБ.
  • Количество страниц: 1250 КБ / 42 КБ ≈ 30 страниц.

Для текста коэффициент сжатия может быть ещё выше (до 10:1 для повторяющихся фрагментов), но это зависит от содержания. Например, страница с повторяющимся шаблоном (как в BBS-системах) сожмётся сильнее, чем уникальный текст.

⚠️ Внимание: Коэффициенты сжатия сильно варьируются. Для точных расчётов нужно знать алгоритм и содержание данных. В ретро-системах часто использовались проприетарные форматы (например, .IFF на Amiga), которые требовали специальных декодеров.

5. Практические примеры: сколько страниц в реальных системах

Чтобы проиллюстрировать расчёты, рассмотрим несколько реальных сценариев:

Система Режим Память на страницу Количество страниц в 1250 КБ
IBM PC (EGA) 640×350, 16 цветов ~92 КБ ~13 страниц
Commodore Amiga (OCS) 640×200, 16 цветов ~62.5 КБ ~20 страниц
Atari ST (Medium Res) 640×200, 4 цвета ~31.25 КБ ~40 страниц
Текстовый терминал (80×25) Мono/цветной 2–4 КБ 312–625 страниц

Как видно, результат сильно зависит от аппаратной платформы и режима отображения. Например, на Amiga с разрешением 640×200 в 1250 КБ поместится 20 графических страниц, а на IBM PC с EGA (640×350) — только 13.

Если же речь идёт о текстовых страницах (например, в WordStar или Turbo Pascal), то количество может достигать сотен, так как текст занимает намного меньше памяти, чем графика.

- Режим отображения (графика или текст)|

- Формат хранения данных (сжатый/несжатый)|

- Размер шрифта и межстрочный интервал (для текста)|

- Наличие дополнительных элементов (рамки, иконки)-->

6. Как проверить расчёты на практике

Если вы работаете с ретро-системой или эмулятором (например, DOSBox, WinUAE), можно экспериментально определить количество страниц:

  1. Установите нужный графический режим (например, MODE 0x10 для EGA 640×350).
  2. Создайте тестовый файл с несколькими «страницами» (например, в PC Paintbrush или Deluxe Paint).
  3. Посчитайте объём файла и разделите 1250 КБ на размер одной страницы.

Для текста:

  1. Откройте текстовый редактор (например, Edit в DOS).
  2. Заполните экран символами и сохраните в файл.
  3. Умножьте размер файла на количество страниц, которое помещается в 1250 КБ.

Пример команды для создания тестового графического файла в DOSBox:

DEBUG

-A 100

MOV AX,0010

INT 10

(далее код для отрисовки пикселей)

-W 100 0 100

-Q

⚠️ Внимание: В эмуляторах параметры видеопамяти могут отличаться от реального железа. Например, DOSBox по умолчанию эмулирует VGA с 256 КБ памяти, что больше, чем у оригинального EGA (64–256 КБ). Уточните настройки эмулятора!

7. Частые ошибки при расчётах

При решении подобных задач легко допустить ошибки. Вот наиболее распространённые:

  • 🔢 Путаница между битами и байтами: 4 бита на пиксель ≠ 4 байта. Ошибка в 8 раз!
  • 🖥️ Игнорирование служебных данных: в реальных системах часть памяти занимают палитра, буферы и метаданные.
  • 📏 Неучёт межпиксельного расстояния: в текстовом режиме символы могут иметь «невидимые» атрибуты (например, курсор, мигание).
  • 🗃️ Пренебрежение сжатием: в играх и демо часто использовались упакованные данные.

Например, если забыть, что в текстовом режиме на символ отводится 2 байта (код + атрибуты), а не 1, результат будет завышен в 2 раза. Или если считать, что 16-цветный пиксель занимает 1 байт (как в современных системах), вместо реальных 4 бит, получится недооценка в 2 раза.

Ещё одна ловушка — различные стандарты разрешения. Например, в CGA было разрешение 640×200, а в EGA — 640×350. Если перепутать высоту, объём памяти на экран изменится пропорционально.

💡

Всегда уточняйте: 1) режим (графика/текст), 2) глубину цвета в битах, 3) наличие сжатия. Без этого расчёты будут неточными.

FAQ: Ответы на популярные вопросы

Можно ли увеличить количество страниц, уменьшив разрешение?

Да, но с оговорками. Например, если снизить разрешение с 640×400 до 320×200 (как в CGA), память на экран уменьшится в 4 раза (так как пикселей станет в 4 раза меньше). Тогда в 1250 КБ поместится не 10, а 40 графических страниц. Однако качество изображения ухудшится.

В текстовом режиме уменьшение разрешения обычно означает уменьшение количества символов на экране (например, с 80×25 до 40×25), что не всегда выгодно.

Почему в современных системах такие расчёты неактуальны?

Современные мониторы используют миллионы цветов (24–32 бита на пиксель) и разрешения Full HD/4K, где память на экран исчисляется мегабайтами. Например, один кадр 1920×1080 при 32 битах на пиксель занимает ~8 МБ — в 64 раза больше, чем 1250 КБ!

Кроме того, сегодня применяются аппаратное ускорение и динамическое выделение памяти, поэтому ручные расчёты не нужны.

Какой объём памяти нужен для анимации в таком режиме?

Для плавной анимации (например, 10 кадров в секунду) при разрешении 640×400 и 16 цветах потребуется:

125 КБ/кадр × 10 кадров/с = 1250 КБ/с — то есть 1.25 МБ в секунду. Это много для старых систем, поэтому анимация обычно делалась с меньшим разрешением или количеством цветов.

В играх часто использовались спрайты (небольшие движущиеся объекты), которые занимали меньше памяти, чем полноэкранная анимация.

Можно ли использовать такой монитор для современных задач?

Технически да, но с серьёзными ограничениями:

  • 🖥️ Поддержка низких разрешений в современных ОС (например, через эмуляцию или специальные драйверы).
  • 📄 Только для текстовых задач (например, терминал Linux или ретро-игры).
  • 🎨 Графика будет выглядеть архаично (ограниченная палитра, низкое разрешение).

Для повседневной работы такой монитор не подходит, но он идеален для ретро-компьютинга или обучения основам компьютерной графики.

Где сегодня применяются такие низкие разрешения?

Несмотря на архаичность, подобные режимы до сих пор используются в:

  • 🤖 Встраиваемых системах (например, дисплеи микроволновок или банкоматов).
  • 🕹️ Ретро-консолях и эмуляторах (например, Nintendo Entertainment System имела разрешение 256×240).
  • 📡 Терминалах и промышленных панелях (где важна надёжность, а не качество изображения).
  • 🛩️ Авионика и военная техника (где используются специализированные дисплеи с низким разрешением для отображения телеметрии).

В этих областях ограниченные ресурсы и быстродействие важнее, чем высокое разрешение.