160_______________________________________________
Но все эти оценки пока основаны только на предположениях, для уточнения которых необходимо и возможно уже с пониманием смысла производимых действий почитать файл. При этом желательно выводить данные достаточно компактно, чтобы в кадре помещалось 2000 байтов, и таким образом, чтобы иметь возможность рассматривать содержимое кадра желаемое время, а затем перейти к чтению следуюа^го. Это можно осуществить при помощи нижеприведенной программы:
CLS 'очистка экрана DEF SEG = &НВ800 'установка сегмента дисплея 3% = О 'О в счетчик вывода символов DIM byte AS STRING * 1 'определение байта OPEN "C:\dos\ega3.cpi." FOR BINARY AS #1 'открытие файла I& = 0 'Ов счетчик байтов DO 'начало цикла чтения I& = 16 + 1 'следующий номер байта GET #1, I&, byte 'чтение байта POKE 3%, ASC(byte) 'вывод символа на дисплей 3% = 3% + 2 'смещение для следующего символа IF :]% >= 4000 THEN 3% = 0: SLEEP
'проверка заполнения кадра
key$ = IMKEY$ 'очистка буфера клавиатуры LOOP UNTIL EOF(l) 'выход из цикла по концу файла CLOSE #1 'закрытие файла
В ней прочитанные из файла коды байтов записываются непосредственно в ЗУ дисплея, а по заполнению кадра вызывается процедура приостановки выполнения программы на неопределенное время (до нажатия клавиши). Поскольку процедура SLEEP не осуществляет чтение клавиатуры, пришлось добавить команду, без которой при нажатиях клавиши возникает писк из-за переполнения буфера клавиатуры.
При первом просмотре файла постарайтесь найти все строки, содержащие часть заголовка кодовой страницы "EGA" и попытаться более точно оценить размеры этого заголовка. Они расположены на 1, 5, 10, 15 и 20 страницах вывода в строках 1, 23, 20, 18 и 15 соответственно. Последний раз этот набор символов появляется на 25 странице Но это явно не заголовок страницы, а как бы примечание к файлу, за которым следует символ 26.
Поскольку предыдущий заголовку кодовой страницы символ 255 кодируется нулями, то нетрудно заметить, что заголовок начинается с символа, код которого равен 28. На основании этого наблюдения приходим к окончательному выводу, что на заголовок файла отведено 24 байта, на заголовок кодовой страницы — 34 и на подзаголовок фонта — 6. Для того, чтобы убедиться в правильности нашего понимания формата файла проанализируем содержимое числовой информации в заголовках кодовых страниц. Первое число в заголовке, указывающее на конец кодовой страницы, для пяти страниц принимает значения 9805, 19585, 29365, 39145 и 48925 соответственно. А это как раз на 9 меньше адреса символа "Е", который мы раньше принимали за начало заголовка кодовой страницы. Последнее число дает размер кодовой страницы (включая подзаголовки фонтов) и потому оно для всех страниц равно 9746 (то есть отличается от ранее обнаруженной разности 9780 как раз на размер заголовка кодовой