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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

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


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

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 89 90 91 92 93 94 95  96 97 98 99 100 101 102 ... 198
     ;
     PAGE
     ;
     ; ******* ВНУТРЕННИЙ СТЕК И КОНЕЦ ОПЕРАЦИОННОЙ ЧАСТИ ДРАЙВЕРА ********
     ;
            db      32 DUP ('stack   ')      ; внутренний стек глубиной
     local_stack    EQU     $                ;   256 байт
     ;
     bpb_tab        dw      offset bpb       ; указатель на BPB
     ;
     LAST_USED      EQU     $                ; адрес завершения
     ;
     ; ******* ХАРАКТЕРИСТИКИ RAM-ДИСКА, ПРИНИМАЕМЫЕ ПО УМОЛЧАНИЮ **********
     ;
     ; Параметры для 5-1/4" двустороннего двойной плотности диска с девятью
     ; секторами на дорожке.
     ;
     MTYPE   EQU    0FDh             ; байт описателя носителя
     TRACKS  EQU    40               ; 40 дорожек
     SECTORS EQU    9                ; 9 секторов на дорожке
     DSIZE   EQU    512              ; 512 байт в секторе
     SIDES   EQU    2                ; 2 стороны на диске
     ;
     FSECS   EQU    2                ; количество секторов в FAT
     DIREN   EQU    112              ; количество элементов директория
     DSECS   EQU    7                ; 7 секторов в директории
     CLSIZ   EQU    2                ; 2 сектора в кластере
     ;
     STOTAL  EQU    TRACKS*SECTORS*SIDES     ; всего секторов
     PTOTAL  EQU    (DSIZE/16)*STOTAL        ; всего параграфов
     ;
     ; ************ НАЧАЛО ОБЛАСТИ ДАННЫХ RAM-ДИСКА ***********************
     ;
     ; RAM-диск д.б. выровнен на границу параграфа
     ;
            IF      ($-ORIGIN) mod 16
            ORG     ($-ORIGIN) + 16 - (($-ORIGIN) mod 16)
            ENDIF
     RDISK  LABEL   BYTE             ; начало RAM-диска
     RPARA  EQU     ($-ORIGIN)/16    ; размер кода в параграфах
     ;
     ; ------------ Блок параметров BIOS ----------------------------------
     ;
            jmp     near ptr boot    ;  JMP  (3 байта)
            db      'IBM  3.1'       ; 8 байт имя и версия
     ;
     bpb    bpbstrc 
            dw      SECTORS          ; количество секторов на дорожке
            dw      SIDES            ; количество головок чтения/записи
            dw      0                ; количество скрытых секторов
     boot:
            db      (DSIZE-30) DUP (?)       ; остаток boot_sector
     ;
     ; ------------ Таблицы размещения файлов (FAT) -----------------------
     ;                                       ; первые два элемента FAT
     FAT_1  db      MTYPE,0FFh,0FFh          ; нулевой остаток FAT

                                      - 6-67 -
            db      (DSIZE-3) DUP (0)
            db      ((FSECS-1) * DSIZE) DUP (0)
     FAT_2  db      MTYPE,0FFh,0FFh          ; первые два элемента FAT
            db      (DSIZE-3) DUP (0)        ; нулевой остаток FAT
            db      ((FSECS-1) * DSIZE) DUP (0)
     ;
     ; ------------ Сектора директория ------------------------------------
     ;
     DIREC  db      'RAM_DISK   '            ; имя тома (11 байт)
            db      08h                      ; VID
            db      10 DUP (?)               ; зарезервировано
            dw      0600h                    ; время 12:00:00 (полдень)
            dw      021h                     ; дата 1 января 1980 года
            dw      0                        ; начальный кластер 0
            dd      0                        ; размер файла 0
            db      (DSIZE-32) DUP (0)       ; нулевой остаток директория
            db      ((DSECS-1) * DSIZE) DUP (0)
     BUFFER LABEL   BYTE                     ; начало области данных
     ;
     ; ************ ПРОЦЕДУРА ИНИЦИАЛИЗАЦИИ *******************************
     ;
     INCLUDE        stdmac.inc
     ;
     ; ============ Область данных инициализации ==========================
     ;
     $signon        db      'RAM DISK Driver Version 1.00 Installed: Drive'
     $desig         db      'A'
     $crlf          db      0Dh,0Ah,'$'
     ;
     ; ============ Начало процедуры инициализации ========================
     ;
     INIT   PROC    NEAR             ; 00 - инициализация
     ;
     ; установим адрес завершения, количество устройств и указатель на
     ; таблицу BPB
     ;
            mov     request.endadro,0        ; адрес конца драйвера
            mov     request.endadrs,cs
            add     request.endadrs,(RPARA+PTOTAL)   ; последний параграф
            mov     request.units,1
            mov     request.bpbtabo,offset bpb_tab
            mov     request.bpbtabs,cs
            mov     al,$desig                ; скорректируем имя диска
            add     al,request.devnum
            mov     $desig,al
     ;
     ; вывод на экран идентификационной строки
            @DisStr $signon
     ;
     ; скорректируем значение "max_cmd" исходя из версии MS-DOS
            @GetDOSVersion                   ; получим номер версии MS-DOS
            cmp     al,3                     ; MS-DOS версии 3.00 и выше ?
            jb      init_done             ; нет - прекращаем инициализацию
            mov     [max_cmd],CMD_PRE_32     ; команды для MS-DOS 3.00
            cmp     ah,2                     ; MS-DOS версии 3.20 и выше ?
            jb      init_done             ; нет - прекращаем инициализацию
            mov     [max_cmd],CMD_32         ; команды для MS-DOS 3.20

                                      - 6-68 -
     ;
     init_done:
            xor     ax,ax                    ; нет проблем !
            ret
     INIT   ENDP
     ;
     ; ************ КОНЕЦ ДРАЙВЕРА. КОНЕЦ ФАЙЛА ***************************
     ;
     _TEXT  ENDS
            END

     ---------------------------------------------------------------------

                                    Заключение

            Теперь Вы готовы писать и устанавливать свои собственные драй-
         веры  устройств.  Руководствуйтесь  нашими  замечаниями и "MS-DOS
         Programmers Reference Manual" при возникновении каких-либо техни-
         ческих вопросов.
                                      ЙННННННННННН»
                                      є   Вывод   ЗД¬
                                      є программы є ¦
                                      ИНСНННННННННј ¦
                                        АДДДєДДДДДДДЩ
                         ЙННННННННННННННННННОНННННННННННННННННН»
                         є                  є                  є
                  ЙННННННvНННННН»    ЙННННННvНННННН»    ЙННННННvНННННН»
                  є Виртуальный ЗД¬  є Виртуальный ЗД¬  є Виртуальный ЗД¬
                  є дисплей #0  є ¦  є дисплей #1  є ¦  є дисплей #2  є ¦
                  ИНСНННННННННННј ¦  ИНСНННННННННННј ¦  ИНСНННННННННННј ¦
                    АДДДДєДДДДДДДДЩ    АДДДДєДДДДДДДДЩ    АДДДДєДДДДДДДДЩ
                         ИННННННННННННННННН>є<НННННННННННННННННј
                                            є
                                      ЙНННННvННННН»
                                      є  Монитор  ЗД¬
                                      є  Дисплей  є ¦
                                      ИНСНННННННННј ¦
                                        АДДДДДДДДДДДЩ

                     Рисунок 6-8. Драйвер виртуальных экранов

            Полезными драйверами были  бы,  например,  драйвер  матричного
         принтера,  поддерживающий графические команды (такие как "нарисо-
         вать линию") и преобразующий их к требуемому  принтером  формату,
         или драйвер терминала, поддерживающий виртуальные экраны (см.рис.
         6-8). Такой драйвер терминала может иметь несколько буферов в па-
         мяти, хранящих копии экранной информации. Посылая команды драйве-
         ру по IOCTL-каналу,  можно указать драйверу какой виртуальный эк-
         ран  должен  быть  обновлен и какой виртуальный экран должен быть
         отображен на реальном экране.  Если  Вы  успешно  написали  такой
         драйвер, то Вы можете заменить им существующий драйвер консоли.
             Список идей,  которые можно было бы реализовать в  драйверах,
         практически бесконечен.  Вероятно,  у Вас уже появилось несколько
         своих,  которые Вы хотели бы реализовать. Если у Вас хватает спо-
         койствия  и  терпения то ничто не может помешать Вам в этом,  так
         что дерзайте!



                     Глава 7. ИСПОЛЬЗОВАНИЕ РАСШИРЕННОЙ ПАМЯТИ

                     Урок истории
                     Менеджер расширенной памяти
                     Интерфейс прикладной программы EMS
                     Написание программ, использующих расширенную память
                     Системное программное обеспечение
                     Краткое содержание
                     Библиография
                     Программы интерфейса низкого уровня и пример приложения

              Включение спецификации расширенной памяти в MS-DOS 4.0  сде-
         лало  полноправным  данный  стандарт в качестве метода увеличения
         памяти во всех системах  MS-DOS.  Несмотря  на  все  возрастающее
         быстродействие и сложность IBM-совместимых персональных компьюте-
         ров на базе DOS,  их предельные аппаратурная и программная произ-
         водительность была подвержена ограничениям,  накладываемым струк-
         турой системы  и  архитектурой  процессора  8088,  встроенными  в
         исходный персональный компьютер IBM. До недавнего времени один из
         таких пределов,  барьер 640К,  являлся постоянным источником зат-
         руднений для пользователей и программистов систем MS-DOS. Обозна-
         чающий  максимальную  величину  ОЗУ пользователя, поддерживаемого
         MS-DOS, предел  памяти  в  640К  появлялся в качестве постоянного
         препятствия к неумолимой тенденции разрабатывать и применять  бо-
         лее мощные программные средства.
              Пользователи, требующие сложных баз данных, электронных таб-
         лиц,  графических интерфейсов и резидентных утилит,  хотят приме-
         нять эти средства одновременно под управлением многозадачной сис-
         темы с окнами.  Разработчики готовы удовлетворить такие запросы с
         помощью резидентных отладчиков,  инструкций реального  времени  и
         наборов средств интерфейса пользователя. Обе группы предпринимали
         отчаянные усилия при ограничении в 640К без определенного решения
         для тупика DOS.
              Вся промышленность персональных компьютеров вступила в  нас-
         тоящее  время  в  сотрудничество для создания работающего решения
         для преодоления предела памяти в MS-DOS по схеме расширения памя-
         ти,  именуемой расширенной памятью, которая обеспечивает програм-
         мам MS-DOS доступ максимум к 32 мегабайтам ОЗУ помимо  640К, под-
         держиваемых  MS-DOS.  К  сожалению,  расширенная  память не может
         использоваться приложениями MS-DOS автоматически. Любая программа
         должна писаться специальным образом для ее распознавания и приме-
         нения.  Хотя процесс распознавания и применения не является авто-
         матическим,  он не особенно сложный или загадочный.  Данная глава
         обеспечит Вам основы и знания,  необходимые для добавления  этого
         мощного средства к Вашей собственной базе программирования.
              Требования производительности и гибкости,  которые пользова-
         тели предъявляют к программному обеспечению,  практически диктуют
         программам прямое управление аппаратурой персонального компьютера
         в  обход DOS и BIOS для получения максимума из аппаратуры семейс-
         тва персональных компьютеров.  Создание таких программ -  сложная
         задача  для разработчиков,  которые не только должны владеть тон-
         костями аппаратуры персонального компьютера и его  различных плат
         адаптеров ввода/вывода, но также обращать специальное внимание на
         приспособление к различиям в аппаратуре установленной  базы  сис-
Предыдущая страница Следующая страница
1 ... 89 90 91 92 93 94 95  96 97 98 99 100 101 102 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама