> Hi, Vadim.
Однажды 18 Dec 97 13:13, Vadim Maximoff писал к All, а я вмешался:
VM> Я сам это попытался сделать, да в нашем городе нет вообще книг
VM> нормальных по программированию, файликов тоже нет с документацией...
VM> Hужно все это для Graphical User Interface (GUI)...SUBJ (если есть
VM> доки, то намыльте пожалуйста)...
2Vadim: Hе знаю как на счет скорости, но точка в VESA режимах вроде так
выводится :
procedure PutPixel(X, Y: Integer; Color: Byte);
var
Offset: Longint;
Bank: Integer;
begin
if (X >= 0) and (Y >= 0) and (X < VesaMode.Width)
and (Y < VesaMode.Height) then begin
Offset := LongMul(Y, VesaMode.Width) + X;
Bank := LongRec(Offset).Hi;
if Bank <> LastBank then SetBank(Bank);
case DrawMode of
0: Mem[SegA000: LongRec(Offset).Lo] := Color;
1: Mem[SegA000: LongRec(Offset).Lo] :=
Color xor Mem[SegA000:LongRec(Offset).Lo];
2: Mem[SegA000: LongRec(Offset).Lo] :=
Color or Mem[SegA000:LongRec(Offset).Lo];
end;
end;
end;
Procedure Plot(x,y:integer; color:byte); assembler;
Asm
mov bh,0
mov cx,x { sets x coordinate }
mov dx,y { sets y coordinate }
mov al,color { sets color (0-255) }
mov ah,0Ch { tells video to plot a point }
int 10h
End;
procedure SetPixel(X, Y : Word; C : word);
var b,z1,z2,z3,q,w:longint;
bnk:word;
begin
if c<=255 then
begin
z1:=y;z2:=xmax;
q:=z1*z2+x;
z3:=memw[sos:ooo+6];
z3:=z3*1024;
if z3=0 then z3:=1;
b:=q div z3;
bnk:=b*bank;
if oldbank<>b then
begin
asm
mov ax,$4f05
mov bx,0
mov dx,bnk
int $10
end;
oldbank:=b;
end;
if ((x<xmax) and (y<ymax)) then mem[$a000:q]:=c;
end;
end;
procedure PutPixel(x,y:word;col:byte);assembler;
asm
mov ax,GraphResult
cmp ax,grOk
jne @L_END
mov ax,modeInfo.usBytesPerScanLine
mul y
add ax,x
jnc @LOOP1
inc dx
@LOOP1:
mov di,ax
cmp dx,WinPos
je @LOOP2
mov WinPos,dx
xor bx,bx
call modeInfo.fpWinFunc
@LOOP2:
mov ax,ModeInfo.usBegSegA
mov es,ax
mov al,col
mov es:[di],al
@L_END:
End;
procedure PutPixel256(X,Y : word; C : byte);
begin
asm
mov ax,y
mov bx,bytesPerLine
mul bx
add ax,x
mov bx,0a000h
mov es,bx
mov si,ax
mov al,dl
and al,0fh
mov dx,3d7h
out dx,al
mov al,byte ptr c
mov es:[si],al
end;
end;
Выбор за тобой. :)
> With best wishes and regards.
ћ Как мало программ остается в первоначальном виде. Так давайте слать
исходники, чтоб проще было их изменять. :)
--- [Hedgehog House] Phone: +7-3422-622044 Work Time: 00:00 - 07:30 Local
* Origin: Это не GoldEd. Это примочка к Д00Му для написания писем. (2:5054/26)
|