Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
#1

Видео драйвер с++ - C++

08.04.2012, 14:23. Просмотров 1737. Ответов 19
Метки нет (Все метки)

Здравствуйте. Не сможете ли вы заполнить этот пустой код.
Сам ума не приложу как это сделать.
Мы как бы пишем сами ОС, и вот, это типа драйвер.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#define VIDEO_WIDTH 80    //ширина экрана
#define VIDEO_HEIGHT 25   //высота экрана
#define VIDEO_RAM 0xb8000 //адрес видеопамяти
int tty_cursor;           //положение курсора
int tty_attribute;        //текущий аттрибут символа
 
//Инициализация tty
void init_tty()
{
  //поставить курсор в начало
  //выставить атрибут по-умолчанию
}
 
//Смена текущего аттрибута символа
void textcolor(char c)
{
  //выставить атрибут
}
 
//Очистка экрана
void clear()
{
  //создать указатель в начало видео памяти
  //пройти циклом по всему экрану начиная с пойнтера и выставить значение = ' ' (пробел)
  //вернуть курсор в начало
}
 
//Вывод одного символа в режиме телетайпа
void putchar(char c)
{
  //создать указатель в начало видео памяти
  //проверить символ с: если это символ новой строки (\n), то перевести курсор в начало следующей строки
  //а если это просто символ - вывести его на экран, выставить аттрибут и перевести курсор в следующее положение
 
  //если курсор вышел за границу экрана, то нужно сдвинуть экран вверх на одну строку
  if(tty_cursor>VIDEO_WIDTH*VIDEO_HEIGHT){
    //как-нибудь вот тут
  }
}
 
//Вывод строки, заканчивающейся нуль-символом
void puts(const char *s)
{
  while(*s) {
    //вывод одного символа и переход к следующему
  }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 14:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Видео драйвер с++ (C++):

Драйвер Фильтр - C++
Здрастье! В Windows Driver Kit есть исходники и описания для драйверов фильтров (как их писать на С)! Но я не могу найти там ничего...

Драйвер-фильтр на C/C++ - C++
Нужно написать драйвер-фильтр на C/C++.Он должен создавать "виртуальный" жёсткий диск (по сути просто иконку). При открытии диска какой-то...

Драйвер ММ-клавиатуры - C++
Захотелось написать свой драйвер, точнее обычную программу, которая организует работу мультимедия клавы... По сути надо: 1. перехватить...

Логический драйвер - C++
Здравствуйте! В графической программе есть оператор initgraph, в атрибутах которого нужно указать путь к файлу, содержащему логический...

Аудио драйвер, микрофон - C++
Цель: 1. Считывать звук из компьютера(как вывод в звуковую карту) 2. Считанные данные отправить в ком-порт(буферами для...

Драйвер клавиатуры и мыши. - C++
Здравствуйте! Может кто-нибудь дать исходники на драйвер клавиатуры и мыши с подробным описанием строк. Или любой небольшой исходник...

19
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,277
Записей в блоге: 1
08.04.2012, 14:25 #2
ща попробую
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 14:39 #3
видео-драйвер? О_о По-моему, это просто работа с консолью.
0
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,277
Записей в блоге: 1
08.04.2012, 14:44 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#define VIDEO_WIDTH 80    //ширина экрана
#define VIDEO_HEIGHT 25   //высота экрана
#define VIDEO_RAM 0xb8000 //адрес видеопамяти
int tty_cursor;           //положение курсора
int tty_attribute;        //текущий аттрибут символа
 
//Инициализация tty
void init_tty()
{
  tty_cursor=0;
  //выставить атрибут по-умолчанию
//C АТРИБУТАМИ КАК НЕ ЗНАЮ Я ВООБЩЕ ВПЕРВЫЕ С ВИДЕОПАМЯТЬЮ РАБОТАЮ
}
 
//Смена текущего аттрибута символа
void textcolor(char c)
{
  //выставить атрибут
}
 
//Очистка экрана
void clear()
{
 memset(VIDEO_RAM, 0, VIDEO_WIDTH*VIDEO_HEIGHT);
}
 
//Вывод одного символа в режиме телетайпа
void putchar(char c)
{
  //создать указатель в начало видео памяти
  //проверить символ с: если это символ новой строки (\n), то перевести курсор в начало следующей строки
  //а если это просто символ - вывести его на экран, выставить аттрибут и перевести курсор в следующее положение
  if (c!='\n'){
    memset(VIDEO_RAM+tty_cursor, c, 1);
    ttycursor++;
   }
   else{
     ttycursor=(ttycursor+WIDTH)/WIDTH;
   }
 
  //если курсор вышел за границу экрана, то нужно сдвинуть экран вверх на одну строку
  if(tty_cursor>VIDEO_WIDTH*VIDEO_HEIGHT){
    memmove(VIDEO_RAM, VIDEO_RAM+WIDTH);
    memset(VIDEO_RAM+WIDTH*(HEIGHT-1), 0, WIDTH);
  }
}
 
//Вывод строки, заканчивающейся нуль-символом
void puts(const char *s)
{
  while(*s) {
    //вывод одного символа и переход к следующему
    putchar(*s);
    s++;
  }
}
Добавлено через 1 минуту
Цитата Сообщение от Nekto Посмотреть сообщение
видео-драйвер? О_о По-моему, это просто работа с консолью.
Какая ж это работа с консолью. Это ему нужно самому реализовать функции putchar и.т.п. путём записи в видеопамять
3
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
08.04.2012, 15:11  [ТС] #5
Kuzia domovenok, было бы здорово.
0
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,277
Записей в блоге: 1
08.04.2012, 15:15 #6
Цитата Сообщение от Hardcore Посмотреть сообщение
Kuzia domovenok, было бы здорово.
Что здорово, ты код из моего сообщения смотрел?
0
Plazma
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
08.04.2012, 16:03 #7
Hardcore, позвольте спросить, что такое tty_attribute ?
0
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
08.04.2012, 16:14  [ТС] #8
Plazma, Точно не помню, но вроде этот атрибут равен 7, и как я полагаю это размер шрифта.
0
dr.curse
389 / 345 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
08.04.2012, 16:21 #9
Цитата Сообщение от Hardcore Посмотреть сообщение
Мы как бы пишем сами ОС, и вот, это типа драйвер.
извените за вопрос но что значит "как бы пишем", и это в универе?
0
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
08.04.2012, 16:28  [ТС] #10
Plazma, Это цвет фона и шрифта.
0
Deviaphan
08.04.2012, 16:28
  #11

Не по теме:

Сперва хотел поглумиться, но передумал. Вам и без меня тяжко... будет...

0
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,277
Записей в блоге: 1
08.04.2012, 16:30 #12
Цитата Сообщение от Hardcore Посмотреть сообщение
Plazma, Точно не помню, но вроде этот атрибут равен 7, и как я полагаю это размер шрифта.
Какой, к чёрту размер шрифта в текстовом режиме? Тебя что в моём коде не устраивает? Ты его видел? Я например не использовал никогда такую видеопамять в программах раньше, но ведь по логике должно же работать!

Что? укажи конкретную строчку?
0
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
08.04.2012, 18:50  [ТС] #13
Kuzia domovenok, вот эти строки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void init_tty()
{
  tty_cursor=0;
  tty_attribute=7;
  //выставить атрибут по-умолчанию
//C АТРИБУТАМИ КАК НЕ ЗНАЮ Я ВООБЩЕ ВПЕРВЫЕ С ВИДЕОПАМЯТЬЮ РАБОТАЮ
}
 
//Смена текущего аттрибута символа
void textcolor(char c)
{
    
  //выставить атрибут
}
0
Merovingian
54 / 54 / 5
Регистрация: 24.09.2011
Сообщений: 149
08.04.2012, 19:39 #14
Да, повеселило) Я помню так тоже игрался. Причем много чего сохранилось, а вот с видеопамятью ничего нет. Работал так со звуком и с буфером клавиатуры.

Помню, что пишем в регистры, а затем генерируем программное прерывание, это было еще в Borland'е, а там есть int86 в dos.h

Вот как делал аналог gotoxy

C
1
2
3
4
5
6
union REGS regs;
regs.h.ah = 2;
regs.h.dh = y;
regs.h.dl = x;
regs.h.bh = 0;
int86(0x10, &regs, &regs);
А атрибуты символа передаются вместе с символом как его старший байт между прочим. Еще что нибудь вспомню - обязательно сообщу!))
0
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
08.04.2012, 20:49 #15
существует 15 возможных атрибутов, атрибут под номером 7 это синий экран, белые буквы.
друзья айтишники, не путайте теплое с мягким, мы пишем не на С++, а на голом Си, на Си без классов. Объясняю, у нас даже нет <iostream>, из за этого мы пишем все это, это называется телетайп.
Kuzia domovenok, как говорил у нас голый Си, и из за этого мы не можем использовать
C
1
memset
0
08.04.2012, 20:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 20:49
Привет! Вот еще темы с ответами:

драйвер для миди клавиатуры - C++
требуется написать драйвер для миди клавиатуры. подскажите как это сделать или если есть у кого программа киньте буду очень благодарен. ...

Драйвер для чтения CD-ROM - C++
Есть код программы, которая должна считывать данные с CD-ROM'а. Скажите, он правильный или нет? Просто меня уверяют, что не правильный: ...

Драйвер для отслеживания обращения к папкам - C++
Добрый вечер, форумчане! Мне нужно написать драйвер для отслеживания обращения к 2 папкам. Сам драйвер должен выполнять функцию блокировки...

Звуковой драйвер не сообщяет о завершение воспроизведения - C++
void CALLBACK func (HWAVEOUT hwi, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){ if (Msg == WOM_OPEN)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru