MBR Trouble

Тема в разделе "WASM.BEGINNERS", создана пользователем sideX, 29 окт 2011.

  1. sideX

    sideX New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    57
    Пытаюсь загрузить таблицу кириллических символов для знакогенератора. размер 8x16. начиная с 192 символа ('A'). всего в таблице 1024 байт (64 символа с кода 192, 16 байт на символ).
    Таблица имеет вид:
    Код (Text):
    1. szSymbolTable   db 000h,000h,03Eh,066h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h ; A
    2.             db 000h,000h,0FEh,0C0h,0C0h,0C0h,0FCh,0C6h,0C6h,0C6h,0C6h,0FCh,000h,000h,000h,000h ; Б
    3.             ... etc
    Предварительно пишу ее во 2й и 3й секторы

    Далее в коде выполняю:
    Код (Text):
    1.     ...
    2.     mov dx, 0x80    ; чтение с диска
    3.     mov cx, 2       ; 2й сектор
    4.     mov ax, 0x202   ; чтение 2 секторов (1024 байт)
    5.     mov bx, 0x1000  ; адрес буфера
    6.     int 0x13
    7.  
    8.     mov ax, 0x1100  ; загрузить пользовательский шрифт
    9.     mov bp, 0x1000  ; указатель на таблицу
    10.     mov cx, 0x40    ; число изменяемых символов
    11.     mov dx, 0xC0    ; начиная с кода 0С0h ('A')
    12.     mov bx, 0x1000  ; число байт в образце символа
    13.     int 0x10
    14.     ...
    и в итоге получаю закорючки-иероглифы. подскажите пожалуйста, что за беда такая?
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Так 1100 - это EGA-фонт. Он бывает 8х8 и 8х14, ну и разрешения экрана другие. Наверно для VGA нужно что-то другое.
     
  3. sideX

    sideX New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    57
    valterg
    1100 это загрузка пользовательского шрифтв + я же в bh указываю его размер.
    кто-нибудь сталкивался с такой проблемой? уж и не знаю в чем может быть беда
     
  4. sideX

    sideX New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    57
    бле, мужыки. кто поможет - 100 вмз награда. дело то несложное вроде как. или у меня руки из жопы, или "в запятой" где-то ошибся. срочно нужно, горит
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    sideX
    Наиболее вероятно, что на винте в тех двух секторах просто нет таблицы. Выложили бы код, было бы быстрее. Но если горит, то поиск по форуму по слухам помогает.
     
  6. sideX

    sideX New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    57
    l_inc
    она там есть, т.к. я ее туда собственноручно пишу
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    sideX
    Не то, чтобы я не верил, но в теме по ссылке автор тоже собственноручно писал. Оказалось, не туда. В любом случае рабочий пример у Вас теперь есть. Сравнивайте.
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Я и говорю: в той справке, что я нашел, нет размера 8х16. Понимаешь, было время когда VGA не было, а БИОС и шрифты были.
    Поэтому и просят у тебя код - можно точнее все проверить.
     
  9. sideX

    sideX New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    57
    прилагаю исходники и бинарники.
    на виртуалке пускаем testing.exe и перезапускаемся

    http://www.sendspace.com/file/sg470g
     
  10. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Ты "пользовательский" шрифт грузишь, поэтому видеорежим нужно устанавливать до загрузки шрифта, а не после.
     
  11. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    К слову, для текстового режима лучше использовать кодировку, не разрушающую псевдографику (по крайней мере в диапазоне 0C0h-0DFh), к примеру CP866, а если не хочешь разрывать ряд малых букв, можно поменять местами диапазоны символов 0B0h-0BFh и 0E0-0EFh и написать макрос для трансляции в эту кодировку из utf8 в исходниках, типа:
    Код (Text):
    1. vb 13,10,"Привет!",32,0
     
  12. sideX

    sideX New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    57
    Phantom_84
    воистину!! очень признателен. низкий поклон и всем спасибо за внимание.