OSDev http://osdev.su/ |
|
Ошибка при сдвиге курсора http://osdev.su/viewtopic.php?f=6&t=823 |
Страница 1 из 1 |
Автор: | Lincor [ 24 ноя 2013, 16:03 ] |
Заголовок сообщения: | Ошибка при сдвиге курсора |
Не работает функция сдвига аппаратного курсора. Делаю так: Код: static void move_cursor() { u16int cursorLocation = cursor_y * width + cursor_x; outb(0x3D4, 14); outb(0x3D5, cursorLocation >> 8); outb(0x3D4, 15); outb(0x3D5, cursorLocation); } При попытке запуска в QEMU курсор находится в неправильном месте. Ошибка: Код: dma: command d5 not supported
dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 dma: unregistered DMA channel used nchan=1 dma_pos=0 dma_len=54529 |
Автор: | Nable [ 24 ноя 2013, 16:22 ] |
Заголовок сообщения: | Re: Ошибка при сдвиге курсора |
Как будто бы, выглядит правильно (ср. с http://wiki.osdev.org/Text_Mode_Cursor) Реализацию outb покажи, я бы на месте компилятора ругнулся typemismatch на вот это: outb(0x3D5, cursorLocation); |
Автор: | pavia [ 24 ноя 2013, 19:02 ] |
Заголовок сообщения: | Re: Ошибка при сдвиге курсора |
Глобальные переменные зло. А так да надо outb - посмотреть. |
Автор: | Lincor [ 24 ноя 2013, 20:15 ] |
Заголовок сообщения: | Re: Ошибка при сдвиге курсора |
outb я скопипастил из linux 0.01: Код: #define outb(value,port) \
__asm__ ("outb %%al,%%dx"::"a" (value),"d" (port)) |
Автор: | pavia [ 24 ноя 2013, 20:28 ] |
Заголовок сообщения: | Re: Ошибка при сдвиге курсора |
Нашли откуда копировать. Ну собственно догадки подтвердились. Порядок аргументов перепутан. В объявлении функции у вас один порядок аргументов, а вызываете вы с другим. |
Автор: | Lincor [ 25 ноя 2013, 14:30 ] |
Заголовок сообщения: | Re: Ошибка при сдвиге курсора |
спасибо, никогда бы не заметил |
Автор: | SII [ 25 ноя 2013, 15:23 ] |
Заголовок сообщения: | Re: Ошибка при сдвиге курсора |
Если ничего не помогает, разумно трассировать выполнение программы на уровне машинных команд (ассемблера). Там сразу бы всплыла неправильная передача параметров. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |