Главная · Поиск книг · Поступления книг · 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 ... 107 108 109 110 111 112 113  114 115 116 117 118 119 120 ... 198
        } HARDWARE_INFO;

        #define CONV_MEM           0        /*обычная память*/
        #define EXP_MEM            1        /*расширенная память*/

        typedef struct mregn { /*дескриптор области памяти*/

          unsigned char memory_type;       /*CONV_MEM / EXP_MEM*/

          unsignedint handle;       /*CONV_MEM: 0, EXP_MEM: обработчик*/

          unsigned int inutial_offset; /*CONV_MEM: 0 -65535,
                                        EXP_MEM:  0  -   16383*/
          unsigned int initial_seg_page;  /*CONV_MEM: адрес сегмента,
                                            EXP_MEM: номер страницы*/
        } MREGN;

        typedef struct move_xchg { /*структура  передвижки/обмена*/
           long region_length;    /*0 - 1 Мбайт*/
           MREGN source;          /*дискриптор области-источника*/
           MREGN dest;            /*дескриптор области -приемника*/
        } MOVE_XCHG;
        -------------------------------------------------------------------


                                      - 7-56 -
                             Листинг 7-4. EMMERMSG.C
        ------------------------------------------------------------------
        /*
        Наименование: emmermsg.c
        Содержание: сообщения  об  ошибках  для кодов ошибок спецификации
                    расширенной памяти LIM 4.0
        Ссылка: Lotus(r)/Intel(r)/Microsoft(r)  спецификация  расширенной
                    памяти, версия 4.0, стр.А5-А10
        */
        char *emmermsg[] = {
         "EMM driver  software  failure",                            ;  1
         "EMM  driver detected hardware failure",                    ;  2
         "EMM driver busy (doesn't happened any more)",              ;  3
         "Cannot  find  the  specified  handle",                     ;  4
         "The function  code  is  undefined",                        ;  5
         "No handles are currently available",                       ;  6
         "A  mapping  context  restoration  error  has occured",     ;  7
         "Insufficient  total  pages  for  request",                 ;  8
         "Insufficient  unallocated  pages  for  request",           ;  9
         "Zero logical pages have been requested from LIM 3.2
          compatible function",                                      ; 10
         "Logical page   out  of  range  for  specified  handle",    ; 11
         "Physical page out of range",                               ; 12
         "Mapping register  context save  area  is  full",           ; 13
         "Mapping  register context stack already has a context      ;
          associated with the specified handle",                     ; 14
         "Mapping register context stack does not have a  context    ;
          associated with the specified handle",                     ; 15
         "Undefined subfunction was  requested",                     ; 16
         "The  attribute type   is  undefined",                      ; 17
         "The  system  does  not  support nonvolatility",            ; 18
         "Partial source overwrite occured during move  region",     ; 19
         "Expanded  memory  region is too big for specified  handle",; 20
         "Conventional memory region and expanded memory region
         overlap",                                                   ; 21
         "Offset within a logical page exceeds the length of
          logical page",                                             ; 22
         "Region length   exceeds  1-Mbyte  limit",                  ; 23
         "Source  and destination expanded memory regions have the
          same handle and overlap",                                  ; 24
         "Undefined/unsupported memory source and destination types",; 25
         "Error code 0x99 is not used",                              ; 26
         "Specified alternate  map register  set  does  not  exist", ; 27
         "All alternate map/DMA register sets are in use",           ; 28
         "Alternate  map/DMA  register sets  are  not  supporte",    ; 29
         "Specified alternate map/DMA register set is not defined,
          not allocated, or is the current one",                     ; 30
         "Dedicated DMA  channels  are  not   supported",            ; 31
         "The specified  dedicated  DMA  channel does not exist",    ; 32
         "No corresponding handle value could be found for the
          specified handle name",                                    ; 33
         "A handle  with  the  specified  name  already  exists",    ; 34
         "Attempt to wrap around 1-Mbyte address space during
          move or exchange",                                         ; 35
         "The contents  of  the  user data structure passed to the
          function were corrupt or meaningless",                     ; 36
         "The operating system denied access to the function"        ; 37

                                      - 7-57 -
             };
        -------------------------------------------------------------------

        1 - программная ошибка драйвера менеджера расширенной памяти, 2 -
        драйвер менеджера расширенной памяти обнаружил ошибку в аппарату-
        ре, 3 - драйвер менеджера расширенной памяти занят (других не ос-
        талось),  4 - не найден указанный обработчик, 5 - код функции не-
        определен,  6 - нет доступных обработчиков,  7 - произошла ошибка
        восстановления контекста отображения,  8 - не хватает страниц для
        запроса,  9 - не хватает размещенных страниц для  запроса,  10  -
        нуль  логических страниц был запрошен от функции,  совместимой со
        спецификацией расширенной памяти LIM 3.2, 11 - логическая страни-
        ца вне диапазона указанного обработчика,  12 -физическая страница
        вне диапазона,  13 - область сохранения контекста регистров отоб-
        ражения  полна,  14 - у стека контекста регистров отображения уже
        есть контекст,  связанный с указанным обработчиком,  15 - у стека
        контекста регистров отображения нет контекста,  связанного с ука-
        занным обработчиком,  16 - была запрошена неопределенная подфунк-
        ция, 17 - тип атрибута неопределен, 18 - система не поддерживает
        неразрущаемость,  19 - во время передвижки области произошла час-
        тичная перезапись источника,  20 - область спецификации расширен-
        ной памяти слишком велика для указанного обработчика,  21  -  об-
        ласть  обычной памяти и область расширенной памяти перекрываются,
        22 - смещение внутри логической страницы превышает  размер  логи-
        ческой страницы, 23 - длина области превосходит предел в 1 Мбайт,
        24 - область-источник и область-приемник расширенной памяти имеют
        один и тот же обработчик и перекрываются, 25 - неопределенный/не-
        поддерживаемый типы памяти-источника и приемника, 26 - код ошибки
        0х99 не используется, 27 - указанный альтернативный набор регист-
        ров не существует, 28 - все альтернативные наборы регистров отоб-
        ражения/ПДП заняты,  29 - альтернативные наборы регистров отобра-
        жения/ПДП не поддерживаются,  30 - указанный альтернативный набор
        регистров отображения/ПДП не определен,  не размещен или является
        текущим набором, 31 -назначенные каналы ПДП не поддерживаются, 32
        - назначенный указанный канал ПДП не существует,  33 - не найдено
        значение,  соответствующее указанному имени обработчика, 34 - об-
        работчик  с указанным именем уже существует,  35 - попытка цикли-
        ческого перехода 1-Мбайтного адресного пространства во время  пе-
        редвижки   или   обмена,   36   -   содержимое  структуры  данных
        пользователя,   переданное  функции  искажено  или  бессмысленно,
        37 - операционная система запрещает доступ к данной функции


                              Листинг 7-5. EMMFUNC.C
        ------------------------------------------------------------------
        #include 
        #include "emmconst.h"
        #include "emmtypes.h"
        #pragma check_stack(off)
        #define CONTINUE_COL 32    /*колонка продолж-я сообщ-я об ошибке*/
        static union REGS inregs, outregs;
        static struct SREGS segregs;
        static unt result;
        void ShowEMMErr(errcode, lineno, filename)
        unsigned int errcode;
        unsigned int lineno;
        char *filename;

                                      - 7-58 -


        {
             unsigned int ec, func, len, line;
             char *bp, *lp, *cp;
             extern char *emmermsg[];

             ec = errcode & 0x00FF;
             func = inregs.x.ax;
             printf("EMM error detected at line (%d) in source file(%s)\n",
                     lineno, filename);
             if (ec < FRSTEMER || ec > LASTEMER)
                printf("EMM Function (%04X) Error(%02X): Unknown Error
                   Code!\n", func, ec);
             else {
                printf("EMM Function (%04X) Error(%02X): ", func, ec);
                lp = emmermsg[ec-FRSTEMERR];
                line = 0;
                while (*lp) {
                   for (cp = lp, len = 80 - CONTINUE_COL; *cp && len;
                      cp++, len --)
                         if (*cp == ' ')
                            bp = cp;
                   if (*cp)
                      *bp++ = '\0';
                   if (line++)
                      printf("                                      ");
                   printf("%s\n", lp);
                   lp = (*cp) ? bp : cp;
                }
            }
        }

        EMGGetStatus() /*тестирует наличие работающего менеджера расширен-
                              ной памяти*/
        {
             inregs.h.ah = 0x40;      /*функция "Получить состояние" спе-
                                        цификации расширенной памяти*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             return(result);
        }

        EMSGetFrameAddr(pfa)          /*возвращает удаленный адрес кадра
                                   страниц менеджера расширенной памяти*/
        char far **pfa;
        {
             inregs.h.ah = 0x41;      /*функция "Получить адрес кадра
                                   страниц" спецификации расширенной памя-
                                                         ти*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result) {
                FP_SEG(*pfa) = outregs.x.bx;
                FP_OFF(*pfa) = 0;
             }
             return(result);
        }


                                      - 7-59 -
        EMSGetPageCnt(una, tot)       /*возвращает кол-во общих и неразме-
                                   щенных страниц спецификации расширенной
                                                               памяти*/
        unsigned int *una, *tot;
        {
             inregs.h.ah = 0x42;      /*функция "Получить кол-во неразме-
                                   щенных страниц" спецификации расширен-
                                                   ной памяти*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result) {
                        *una = outregs.x.bx;
                        *tot = outregs.x.dx;
             }
             return(result);
        }

        EMSAllocatePages(handle, pages)   /*размещает обработчик с 'pages'
                                                     логических страниц*/
        unsigned int *handle, pages;
        {
             inregs.h.ah = 0x43;      /*функция "Разместить страницы"
                                        спецификации расширенной памяти*/

             inregs.x.bx = pages;     /*кол-во логических страниц для
Предыдущая страница Следующая страница
1 ... 107 108 109 110 111 112 113  114 115 116 117 118 119 120 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама