вывод точки напрямую в видео память
---
своя процедура
---
мне тут помогли (Dark) и я решил......
---
очень быстро
---
Код
Const color:array[0..10,0..14] of Byte=
((24,15,15,24,24,24,15,15,15,24,15,24,24,24,15),
(15,24,22,15,24,15,24,24,24,24,15,15,24,15,15),
(15,22,24,15,24,24,15,15,24,24,15,24,15,24,15),
(15,15,15,15,24,24,24,24,15,24,15,24,24,24,15),
(15,24,24,15,24,15,15,15,24,24,15,24,24,24,15),
(24,24,24,24,24,24,24,24,24,24,24,24,24,24,24),
(15,15,15,24,24,24,15,15,15,24,24,24,15,15,15),
(15,22,24,15,24,15,24,24,24,15,24,15,24,24,24),
(15,15,15,24,24,15,15,15,15,15,24,24,15,15,24),
(15,24,22,24,22,15,24,22,24,15,24,24,24,24,15),
(15,24,22,22,22,15,24,22,24,15,24,15,15,15,24));
Var
x,y,c,col:Word;
Procedure PixelOut(x,y:Word;c:Byte);
label we;
Begin
y:=y*320;
asm
xor ax,ax
mov bx,x {in di 1000 smeshenie v video memory}
mov cx,y {}
add bx,cx
mov al,c
cmp bx,64000
je we
mov es:[bx],al {<=> mov es:di, ds:si move strin byte 11 in vid memory es:di out ds:si}
we:
end;
end;
BEGIN
asm
mov ax,0013h
int 10h
mov ax,0a000h
mov es,ax
end;
for x:=0 to 14 do
for y:=0 to 10 do begin
col:=color[y,x];
PixelOut(100+x,50+y,col);
end;
asm
mov ah,0
int 16h
end;
end.
((24,15,15,24,24,24,15,15,15,24,15,24,24,24,15),
(15,24,22,15,24,15,24,24,24,24,15,15,24,15,15),
(15,22,24,15,24,24,15,15,24,24,15,24,15,24,15),
(15,15,15,15,24,24,24,24,15,24,15,24,24,24,15),
(15,24,24,15,24,15,15,15,24,24,15,24,24,24,15),
(24,24,24,24,24,24,24,24,24,24,24,24,24,24,24),
(15,15,15,24,24,24,15,15,15,24,24,24,15,15,15),
(15,22,24,15,24,15,24,24,24,15,24,15,24,24,24),
(15,15,15,24,24,15,15,15,15,15,24,24,15,15,24),
(15,24,22,24,22,15,24,22,24,15,24,24,24,24,15),
(15,24,22,22,22,15,24,22,24,15,24,15,15,15,24));
Var
x,y,c,col:Word;
Procedure PixelOut(x,y:Word;c:Byte);
label we;
Begin
y:=y*320;
asm
xor ax,ax
mov bx,x {in di 1000 smeshenie v video memory}
mov cx,y {}
add bx,cx
mov al,c
cmp bx,64000
je we
mov es:[bx],al {<=> mov es:di, ds:si move strin byte 11 in vid memory es:di out ds:si}
we:
end;
end;
BEGIN
asm
mov ax,0013h
int 10h
mov ax,0a000h
mov es,ax
end;
for x:=0 to 14 do
for y:=0 to 10 do begin
col:=color[y,x];
PixelOut(100+x,50+y,col);
end;
asm
mov ah,0
int 16h
end;
end.