Изменить тип курсора мыши в текстовом режиме

Тема в разделе "WASM.ELECTRONICS", создана пользователем D_odik, 17 мар 2008.

  1. D_odik

    D_odik New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    2
    Не могу решить задачу. Помогите пожалуйста.
    Собственно задача:
    Изменить тип курсора в текстовом режиме при нажатии некоторой клавиши на клавиатуре.
    Задание формы курсора мыши в текстовом режиме:
    Вход:
    АХ = 000Ah
    BХ = тип курсора
    0 – программный
    1 - аппаратный
    СХ= маска экрана, если ВХ=0
    СХ= начальная строка курсора мыши, если ВХ=1
    DХ= маска курсора, если ВХ=0
    DХ= конечная строка курсора мыши, если ВХ=1
    Код (Text):
    1. %Title "Mouse"
    2. IDEAL
    3. MODEL Small
    4. DATASEG
    5.  
    6. CODESEG
    7. Start:
    8. ; посылаем начальный адрес сегмента в регистр ax
    9.     mov ax, @data
    10.     mov ds, ax
    11.     mov ax, 12h
    12.     int 10h
    13. ;инициализация мыши
    14.  
    15.     mov ax, 0
    16.     int 33h    
    17. ;сделать указатель видимым
    18.     mov ax, 1
    19.     int 33h
    20. escape: ;ждать esc
    21.     mov ah, 7        
    22.     int 21h         ;прерывание для работы с клавиатурой
    23.     cmp al, 6dh     ;проверка на нажатие клавиши "1"
    24.     jne waiting
    25.    
    26.     mov ax, 0ah     ;задать форму курсора
    27.     mov bx, 0h      ;тип программный
    28.     mov cx, 0h  ;маска ввода
    29.     mov dh, 0fh     ;маска курсора
    30.     mov dl, 7fh
    31.     int 33h
    32.  
    33. ;   mov ax, 04h ;перемещение курсора в угол
    34. ;   mov cx, 0
    35. ;   mov dx, 0
    36. ;   int 33h
    37.  
    38.  
    39. waiting:
    40.     cmp al, 27
    41.     jne escape
    42.  
    43.     mov ax, 2       ;выключить курсор    
    44.     int 33h
    45.     mov ax, 04c00h
    46.     int 21h         ;выход
    47. END Start
    Собственно проблема, курсор не меняется.
    Запускал в ВинХП. И что такое маска ввода и маска курсора? Как правильно задать?
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    D_odik
    Вот что написано в IntList
     
  3. D_odik

    D_odik New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    2
    Я все это видел. И пробовал. Курсор не меняется.
    Хоть подскажите возможную причину. Где искать.
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    D_odik
    Если экранная маска = 0, то для любого символа курсор будет один и тот же (символ 0x7f, цвет белый). Попробуйте поиграться разными значениями маски курсора и экранной маски. Еще один вариант - сделать курсор видимым после его изменения.
     
  5. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    D_odik
    ты где тестишь? попробуй на реальной тачке или в bosch. Видимо не эмулирует это windows. Была такая же проблема с получение типо IBM PC, по адресу 0x00F:FFFE помоему, лежали нули вместо идентефикаторов. в bosch все нормально было.