IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Y-a-h-o-o VESA заработала на 16 млн цветов
Shadow
сообщение 3.05.2003 0:08
Сообщение #1


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


;D ;D
---
я просто счастилив теперь VESA работает полностью
320*200 16 млн цветов
----
и цвет нормально кодируется ff ff ff R G B
----
и видео память индексируется нормально
незнаю кидать исходник или нет
ну уж очень  весомый
----
написал для паскаля такую же чтуку
-----


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
AlaRic
сообщение 3.05.2003 7:00
Сообщение #2


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Кидай исходник прям сюда....на сколько символов выйдет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Shadow
сообщение 3.05.2003 8:28
Сообщение #3


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


D вот оно
{$L inc.obj}
{$f+}
Var
x,y,xx,yy,xxx,yyy: Word;
col: LongInt;

Procedure Color(col:LongInt);External;

Procedure VESAINIT;Assembler;
asm
	mov ax,4f02h	{ функция VESA }
	mov bx,10fh	{ режим 320*200 16-милионов }
	int 10h		{BIOS video interrupt}
	mov ax,0a000h	{video memory adress}
	mov es,ax	{init es for video memory}
end

Procedure VESAPix(x,y:Word);Assembler;
asm
	mov ah,4fh	{ востанавливаем окно }
	mov al,05	{--}
	mov bh,0	{--}
	mov bl,0	{--}
	mov dx,0	{--}
	int 10h		{--}
	mov ax,1280
	mul y		{ ;умножаем на У }
	cmp dx,1	{ если в dx 1 то на 1 шаг }
	je @corect1	{}
	cmp dx,2	{ на 2 шага }
	je @corect2	{}
	cmp dx,3	{ на 3 шага }
	je @corect3	{}
	shl x,2		{}
	add ax,x	{}
	adc dx,0	{ сложение с корректировкой }
	cmp dx,1	{ 1 шаг }
	je @corect1t	{}
	cmp dx,2	{ 2 шага }
	je @corect2t	{}
	cmp dx,3	{ 3 шага }
	je @corect3t	{}
	mov si,ax	{ ;теперь адресуем видео память }
@out:
	jmp @exits	{ ;выходим }
@corect1:		{}
	shl x,2		{ ;сдвиг на 2 умножаем на 4 }
	add ax,x	{ ;в ax конечный результат }
	adc dx,0	{ ;сложение с корректировкой }
@corect1t:		{}
	mov si,ax	{ ;в si ax }
	cmp dx,2	{ cмотрим в dx число то есть какой шаг стоит }
	je @corect2t	{}
	cmp dx,3	{ 3 шага }
	je @corect2t	{}
@not_cor:		{}
	mov ah,4fh	{}
	mov al,05	{ ;62454 }
	mov bh,0	{;---------}
	mov bl,0	{;---------}
	mov dx,1	{ ;переносим окно на один шаг }
	int 10h		{}
	jmp @out	{}
@corect2:		{}
	shl x,2		{ ;сдвиг на 2 умножаем на 4 }
	add ax,x	{ ;в ax конечный результат }
	adc dx,0	{}
	cmp dx,3	{}
	jz @corect3t	{}

@corect2t:		{}
	mov si,ax	{ ;в si ax }
	mov ah,4fh	{;}
	mov al,05	{ ;62454 }
	mov bh,0	{;---------}
	mov bl,0	{;---------}
	mov dx,2	{ ;переносим окно на один шаг }
	int 10h		{}
	jmp @out	{}
@corect3:		{}
	shl x,2		{ ;сдвиг на 2 умножаем на 4 }
	add ax,x	{ ;в ax конечный результат }
	adc dx,0	{ сложение с корректировкой }
@corect3t:		{}
	mov si,ax	{ ;в si ax }
	mov ah,4fh	{ функция }
	mov al,05	{ ;62454 }
	mov bh,0	{ ;страница }
	mov bl,0	{ ;номер окна }
	mov dx,3	{ ;переносим окно на 1 шаг }
	int 10h		{ BIOS interrupt }
	jmp @out	{ на вывод пиксель }
@exits:
end

BEGIN
	VESAInit;		{INIT Graph Mode VESA}
	col:=$0000000000;	{ внешняя переменная для цвета }
	for yy:=50 to 60 do begin		{add xx+1}
		for xx:=100 to 115 do begin	{add yy+1}
			col:=col+$0000111111;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$0000ffffff;
	for yy:=50 to 60 do begin		{add xx+1}
		for xx:=115 to 129 do begin	{add yy+1}
			col:=col-$0000111111;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$0000000000;			{ внешняя переменная для цвета }
	for yy:=50 to 60 do begin		{add xx+1}
		for xx:=129 to 144 do begin	{add yy+1}
			col:=col+$0000111111;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$0000ffffff;
	for yy:=50 to 60 do begin		{add xx+1}
		for xx:=144 to 158 do begin	{add yy+1}
			col:=col-$0000111111;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$0000000000;			{ внешняя переменная для цвета }
	for yy:=61 to 71 do begin		{add xx+1}
		for xx:=100 to 115 do begin	{add yy+1}
			col:=col+$0000000011;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$00000000ff;
	for yy:=61 to 71 do begin		{add xx+1}
		for xx:=115 to 129 do begin	{add yy+1}
			col:=col-$0000000011;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=$00000000ff;
	end;

	col:=$0000000000;			{ внешняя переменная для цвета }
	for yy:=61 to 71 do begin		{add xx+1}
		for xx:=129 to 144 do begin	{add yy+1}
			col:=col+$0000000011;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$00000000ff;
	for yy:=61 to 71 do begin		{add xx+1}
		for xx:=144 to 158 do begin	{add yy+1}
			col:=col-$0000000011;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=$00000000ff;
	end;

	col:=$0000000000;			{ внешняя переменная для цвета }
	for yy:=72 to 82 do begin		{add xx+1}
		for xx:=100 to 115 do begin	{add yy+1}
			col:=col+$0000110000;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$0000ff0000;
	for yy:=72 to 82 do begin		{add xx+1}
		for xx:=115 to 129 do begin	{add yy+1}
			col:=col-$0000110000;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=$0000ff0000;
	end;

	col:=$0000000000;			{ внешняя переменная для цвета }
	for yy:=72 to 82 do begin		{add xx+1}
		for xx:=129 to 144 do begin	{add yy+1}
			col:=col+$0000110000;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=0;
	end;

	col:=$0002ff0000;
	for yy:=72 to 82 do begin		{add xx+1}
		for xx:=144 to 158 do begin	{add yy+1}
			col:=col-$0000110000;
			VESAPix(xx,yy);		{ чертим закрашенный прямоугольник }
		end;
		col:=$0000ff0000;
	end;

	asm			{Wait press}
		mov ah,0	{Key}
		int 16h
	end
END.


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Shadow
сообщение 3.05.2003 8:31
Сообщение #4


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


а вот и pbj
-----
:D :D
----

.MODEL SMALL, Pascal
.DATA
Extrn col:Dword;
.CODE
Public color
color proc far
.386
      mov ebx,col
      mov es:[si],ebx
      ret
endp color
END



--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SKVOZNJAK
сообщение 4.11.2003 18:56
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


А не мог бы ты сделать енто под 640480  защищённого режима  ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Shadow
сообщение 4.11.2003 20:27
Сообщение #6


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D
-=-=-
Это древняя тема для меня
-=-=-
насчет защищенного режима
как бы видно что в паскале
во вставках ASM неполучилось применить 32
регистр который участвует в цвете
-=-=
Думаю модет в DELPHI ето удастся
------------------------------
Но есть мыль анписать все ето на ASM с под WIN
кстати компилятор под WIN у меня есть
-----------------------------------
Но ето собачья работа........ собственно все что выше переработать


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 20.07.2025 0:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"