{$I386_INTEL} USES GO32; VAR VideoBuffer : pointer; PROCEDURE Pixel(destiny : pointer; x,y : longint; color : byte); BEGIN if (x<0) or (x>319) or (y<0) or (y>199) then exit; ASM mov edi,destiny add edi,x { In unserem Videobuffer um x-Bytes weiter } mov eax,320 imul y { Und um y*320 Bytes weiter } add edi,eax mov al,color mov [edi],al { Pixel setzen } END ['EDI', 'EAX', 'EDX']; END; PROCEDURE InitVGAMode(mode : word); Var regs : trealregs; BEGIN regs.ax:=mode; Realintr($10,regs); END; BEGIN getmem(videobuffer,64000); initvgamode($13); { 320x200,256 } pixel(videobuffer,160,100,1); { PIXEL IN BUFFER SETZEN } dosmemput($a000,0,videobuffer^,64000); { BUFFER AN $a000:0 KOPIEREN } readln; initvgamode($3); { TEXTMODUS } freemem(videobuffer,64000); END.