Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Роберт Журден Весь текст 1069.56 Kb

Справочник программиста на IBM PC

Предыдущая страница Следующая страница
1 ... 40 41 42 43 44 45 46  47 48 49 50 51 52 53 ... 92

500 '''пишем прямо в псевдостраницу
510 DEF SEG = &H2000   'указываем на ее адрес
520 S$ = "PSEUDOPAGE"  'выводим слово посреди страницы
530 M = LEN(S$)        'получаем длину строки
540 FOR N = 1 TO M     'для каждого символа строки
550 POKE N*2+2000, ASC(MID$(S$,N,1))   'помещаем его в буфер
560 NEXT               '

600 '''теперь используем процедуру
610 PRINT "SCRREN 1"   'печатаем сообшение на экран
620 DEF SEG = &H2200   'указываем на процедуру
630 PSEUDOPAGE = 0     'начинаем с начала процедуры
640 CALL PSEUDOPAGE    'обмениваем страницы
650 CALL PSEUDOPAGE    'повторяем обмен
660 ...

   Средний уровень.

   Функция 5 прерывания 10H выбирает текущую страницу дисплея для
вывода. Hадо просто поместить номер страницы в AL:

;---установка видимой страницы
   MOV  AH,5       ;номер функции
   MOV  AL,2       ;номер страницы (начиная с 0)
   INT  10H        ;устанавливаем страницу

Однако эта функция  не  устанавливает  страницу, на которую будет
идти  вывод.  Любое из прерываний BIOS, которые выводят на  экран
(функции прерывания 10H), требует чтобы номер страницы был указан
в  качестве входного параметра в одном из регистров.  Однако  все
прерывания вывода на экран MS  DOS пишут на текущую видимую стра-
ницу.   Таким образом, для "закулисных" операций  Вам  необходимо
пользоваться прерыванием 10H.
   Для получения информации  о  текущей  странице  надо выполнить
функцию  F  прерывания 10H, которая  возвращает  статус  дисплея.
Hомер страницы при этом возвращается в BH.
   Hизкий уровень.

   Дисплейные страницы выбираются  за счет изменения точки видео-
памяти,  начиная с которой монитор принимает данные.   Эта  точка
памяти устанавливается регистрами 12 (старший байт) и 13 (младший
байт)  микросхемы 6845, которые называются регистрами  стартового
адреса. Значения адресов раздела страниц для буфера, начинающего-
ся с B800 такие:

                       40 символов            80 символов

   страница 0             0000H                  0000H
            1             0400H                  0800H
            2             0800H                  1000H
            3             0C00H                  1800H
            4             1000H
            5             1400H
            6             1800H
            7             1C00H

В  [4.1.1]  объясняется как программировать  регистры  микросхемы
6845, а в [4.5.4] содержится  пример  программирования стартового
адреса.   В  последнем примере надо просто присвоить BX  одно  из
значений вышеприведенной  таблицы.   Kонечно, при этом устанавли-
вается только выводимая страница. Для записи в определенную стра-
ницу на низком уровне надо  использовать одно из значений таблицы
в  качестве  смещения в видеобуфере при прямом отображении в  па-
мять.
   Поскольку прямое отображение в  память  работает очень быстро,
то  иллюзия страниц может быть легко создана на монохромном дисп-
лее.  Выделите блок размером  4000  байтов для хранения страницы.
Хотя монохромный адаптор не может непосредственно читать из обыч-
ной памяти, содержимое этого буфера  и видеобуфера можно обменять
настолько быстро, что никто не зметит разницы. Следующая процеду-
ра обменивает содержимое этих двух областей.

;---в сегменте данных
PPAGE  DW   2000  DUP(720H)  ;заполняем буфер пробелами

;---пересылка между псевдостраницей и видеобуфером
            MOV  AX,0B000H   ;указываем на видеобуфер
            MOV  ES,AX       ;
            MOV  AX,SEG PPAGE  ;указываем на псевдостраницу
            MOV  DS,AX       ;
REPEAT:     MOV  DI,0        ;DI на начало видеобуфера
            MOV  SI,OFFSET PPAGE  ;SI на начало псевдостраницы
            CLD              ;направление вперед
            MOV  CX,2000     ;будем пересылать 2000 слов
NEXT_WORD:  MOV  BX,ES:[DI]  ;берем слово из видеобуфера в BX
            LODSW            ;слово из псевдостраницы в AX
            STOSW            ;слово из AX в видеобуфер
            MOV  DS:[DI]-2,BX  ;слово из BX в псевдостраницу
            LOOP NEXT_WORD   ;

   PCjr хранит регистр страницы в порте  с адресом 3DFH. Значение
битов этого регистра следующее:

   биты 2-0   какая страница выводится (от 0 до 7)
        5-3   какая страница пишется (от 0 до 7) при выводе
              по адресу сегмента B800H
        7-6   = 00 для всех текстовых режимов
              = 01 для графических режимов с 16K
              = 11 для графических режимов с 32K
   4.5.4 Сдвиг между страницами текста.

   Поскольку страницы текста прилегают друг к другу в  видеобуфе-
ре, то небольшой текстовый массив может целиком помещаться в этой
памяти.  В этом случае текст сдвигаться вверх и вниз по экрану не
передвигаясь реально в буфере.  Вместо этого экран начинает пока-
зывать  содержимое буфера, начиная с различных точек и тем  самым
создавая иллюзию сдвига. Этот  метод  называется аппаратным сдви-
гом.
   Аппаратный  сдвиг  достигается за  счет  изменения  стартового
адреса дисплея, который является  числом, указывающим на символ в
видеобуфере,  который будет выводиться в левом верхнем углу экра-
на.  Добавление 80 к  этому  числу  "сдвигает" весь экран на одну
строку вверх, а вычитание 80 - на одну строку вниз. В режиме с 40
символами в строке надо вместо 80 прибавлять или вычитать 40.  Hа
рис. 4-7 приведена диаграмма аппаратного сдвига.
   Отметим, что регистр стартового адреса не считает байты  атри-
бутов, поэтому Вы должны  вычислять адреса памяти по-другому, чем
при прямом отображении в память. Имейте также ввиду, что несмотря
на наличие разрывов  памяти  между  границами  страниц (96 байтов
между 80-символьными страницами и 48 байтов между  40-символьными
страницами) микросхема 6845 пропускает эти области и сдвиг непре-
рывно происходит с одной страницы на следующую.  Аппаратный сдвиг
происходит настолько быстро, что Вам  может оказаться необходимым
вставить процедуру задержки, чтобы пользователь имел  возможность
увидеть насколько сдвинулся экран.
   BIOS хранит  текущее  значение  регистра  стартового  адреса в
переменной  в своей области данных.  Эта  двухбайтная  переменная
расположена по адресу 0040:004EH.

   Hизкий уровень.

   Стартовый адрес содержится в  регистрах 12 (старший байт) и 13
(младший байт) микросхемы 6845. В [4.1.1] объясняется работа этой
микросхемы.  Прежде  чем  адресуемый  байт  направляется в порт с
адресом  3D5H,  необходимо послать номер адресуемого  регистра  в
порт 3D4H. В данном примере  экран сдвигается вверх на одну стро-
ку. Переменная START_ADDRESS содержит адрес первого символа теку-
щей верхней строки экрана.

   MOV  BX,START_ADDRESS  ;начинаем с начала буфера
   ADD  BX,80             ;сдвигаем на 1 строку (80 символов)
   MOV  DX,3D4H           ;вывод в адресный регистр
   MOV  AL,12             ;адресуем регистр 12
   OUT  DX,AL             ;посылаем запрос
   INC  DX                ;теперь выводим в командный регистр
   MOV  AL,BH             ;старшее слово в AL
   OUT  DX,AL             ;посылаем его в регистр 12
   DEC  DX                ;обратно к адресному регистру
   MOV  AL,13             ;адресуем регистр 13
   OUT  DX,AL             ;посылаем запрос
   INC  DX                ;снова командный регистр
   MOV  AL,BL             ;младшее слово в AL
   OUT  DX,AL             ;посылаем в регистр 13




                   Глава 5. Дисковые накопители.

             Раздел 1. Управление распределением диска.

   Все  диски, как гибкие, так и жесткие, организованы одинаковым
образом.  Поверхность диска  разделена на ряд концентрических ко-
лец,  называемых дорожками, а дорожки делятся радиально на секто-
ра.  Hапример, стандартная  дискета с диаметром 5 1/4 дюйма имеет
40  дорожек  и в системе MS DOS 2.0 каждая дорожка разбита  на  9
секторов (15  секторов  на  дискете  емкостью  1.2 Мбайта и 17 на
фиксированном  диске).  Размер сектора 512 байт, и 512  байт *  9
секторов * 40 дорожек *  2  стороны  дает в итоге емкость дискеты
360K.   Все типы дисков используют размер сектора 512  байт в  MS
DOS.
   Файл распределен по такому  количеству секторов, которое необ-
ходимо, чтобы вместить его.  Только несколько секторов на внешнем
ободе дискеты  зарезервированы  для  специальных  нужд. Остальные
доступны  на основе правила "первый подошел - первого  обслужат".
Это означает, что по мере заполнения диска данными сектора посте-
пенно заполняются по направлению к центру диска.  При уничтожении
файла сектора освобождаются и со временем  свободные области ста-
новятся  разбросанными по диску, разбивая новые файлы и  замедляя
доступ к ним для чтения и записи.
   Фиксированные диски имеют некоторые  специальные характеристи-
ки.   Часто они состоят из двух или более параллельных пластин, у
каждой из которых есть две головки,  чтобы читать обе их стороны.
Все дорожки, расположенные на данном расстоянии от центра, вместе
называются  цилиндром.   Поскольку  головки всех дисков двигаются
тандемом,  то достигается экономия перемещений если заполнять все
дорожки одного  цилиндра,  прежде  чем  переходить  к следующему.
Группы цилиндров могут относиться к различным операционным систе-
мам.  Программа DOS FDISK может  разбивать  фиксированный диск на
несколько разделов (до четырех) разного размера.  По этой причине
параметры фиксированного диска могут сильно отличаться.
   Дисковые сектора определяются  магнитной  информацией, которую
записывает утилита форматизации диска.  Информация включает иден-
тификационный номер каждого сектора.   BIOS нумерует сектора 1-8,
1-9  или 1-15, в зависимости от емкости диска.  Дорожки не марки-
руются, вместо этого  они  определяются  механически  по смещению
головки чтения/записи от внешнего края диска.  Дорожки нумеруются
от 0 до 39 для дискет диаметром 5 1/4 дюйма, а для дисков большей
емкости их может быть больше.  Дисковые функции BIOS обращаются к
определенному сектору, указывая номера дорожки и сектора.  Однако
функции DOS рассматривают все сектора диска, как одну цепь, кото-
рая нумеруется подряд, начиная от  0, поэтому каждый сектор имеет
свой логический номер сектора.
   Для дискет первый сектор (дорожка 0, сектор 1) содержит запись
начальной загрузки, которая является небольшой программой, позво-
ляющей компьютеру считать с дискового накопителя остальные  части
MS DOS. Затем идут две копии  таблицы  размещения файлов, которые
содержат информацию о распределении дискового пространства  (вто-
рая копия хранится из соображений безопасности).  Затем идет кор-
невой каталог, который содержит список файлов и ссылок на  подка-
талоги, а также указывает  в  каком  месте  диска они начинаются.
Hаконец,  далее  идут две небольшие программы  DOS  IBMBIO.COM  и
IBMDOS.COM, которые считываются при старте и обеспечивают компью-
тер  возможностями  необходимыми для нахождения и загрузки  файла
COMMAND.COM, который несомненно  является  основной частью опера-
ционной системы.
   Фиксированные  диски  имеют главную запись  загрузки,  которая
содержит таблицу разделов,  позволяющую разделить диск между нес-
колькими операционными системами.  Таблица разделов содержит  ин-
формацию о том, где на диске  начинается раздел DOS, а также пер-
вый сектор какого раздела содержит запись начальной загрузки.   В
остальном раздел организован так же, как и дискета.
   5.1.1 Чтение таблицы размещения файлов.

   Диск использует таблицу  размещения файлов (FAT) для отведения
дискового  пространства файлам и хранения информации о  свободных
секторах. Из соображений безопасности на всех дисках хранятся две
копии  FAT.   Они хранятся последовательно, в  секторах с  самыми
младшими доступными логическими  номерами,  начиная со стороны 0,
дорожки  0,  сектора  2 (сектор 1 также занят  записью  начальной
загрузки). Число секторов, занимаемых FAT определяется размером и
типом  диска.  Отметим, что в MS DOS 3.0 размер записи FAT  может
быть 16 битов для фиксированного диска. Здесь мы будем рассматри-
Предыдущая страница Следующая страница
1 ... 40 41 42 43 44 45 46  47 48 49 50 51 52 53 ... 92
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама