UNIT VESA256; INTERFACE uses dos,crt,vesatype; type TRGB=record R,G,B:byte; end; procedure VClrScr(col:byte); procedure VPutPixel(x,y:word;col:byte); procedure SavePal(p:pointer); Procedure setPal(p:pointer); IMPLEMENTATION var CurWin:word; procedure SetBank;assembler; asm pusha xor bx,bx mov dx,[curwin] call [ModeInfo.VMC] mov [CurWin],dx popa end; procedure VClrScr(col:byte); begin asm cmp [IsVESA],0 je @exit jmp @beg @NextWin: inc [curwin] call SetBank retn @beg: mov [curwin],0 call SetBank mov ax,0A000h mov es,ax xor di,di mov ax,[ModeInfo.Width] mul [ModeInfo.Height] mov cx,dx mov dx,ax mov al,col mov ah,col @l1: push cx mov cx,32768 rep stosw call @nextwin pop cx loop @l1 mov cx,dx rep stosb @exit: end; end; { procedure SetRGBColor(index:byte;RGB:TRGB); begin end; } procedure SavePal(p:pointer); begin asm mov ax,1017h xor bx,bx mov cx,0ffh les dx,p int 10h end; end; Procedure setPal(p:pointer);begin asm mov ax,1012h xor bx,bx mov cx,0ffh les dx,p int 10h end; end; procedure VPutPixel(x,y:word;col:byte); begin asm cmp [IsVESA],0 je @exit mov ax,[y] mul [ModeInfo.width] add ax,[x] adc dx,0 mov di,ax cmp dx,[curwin] je @next mov [CurWin],dx call SetBank @next: mov ax,0A000h mov es,ax mov al,col stosb @exit: end; end; end.