home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / pas / gfxfx / putpixel.pas < prev    next >
Pascal/Delphi Source File  |  1994-06-22  |  1KB  |  46 lines

  1.  
  2. { Direct screen writing in SuperVGA mode 640x480x256 on a TsengLabs ET4000 }
  3.  
  4. program tsenglabs_et4000_640x480x256_mode;
  5. uses crt;
  6. const vseg : word = $a000;
  7. var x,y : word; p : integer; i,page : byte;
  8.  
  9. procedure putpixel(xp,yp : word; col : byte); assembler;
  10. asm
  11.   mov es,vseg
  12.   mov ax,yp
  13.   mov dx,640
  14.   mul dx
  15.   add ax,xp
  16.   adc dx,0
  17.   mov di,ax
  18.   cmp dl,page
  19.   je @skip
  20.   mov page,dl
  21.   mov al,dl
  22.   mov dx,03cdh { <- bankswitch port, 64k banks }
  23.   out dx,al
  24.  @skip:
  25.   mov al,col
  26.   mov [es:di],al
  27. end;
  28.  
  29. procedure setpal(col,r,g,b : byte); assembler; asm
  30.   mov dx,03c8h; mov al,col; out dx,al; inc dx; mov al,r
  31.   out dx,al; mov al,g; out dx,al; mov al,b; out dx,al; end;
  32.  
  33. begin
  34.   asm mov ax,2eh; int 10h; end;
  35.   page := 0;
  36.   for i := 1 to 255 do setpal(i,255-i div 4,255-i div 4,30);
  37.   for x := 0 to 639 do for y := 0 to 479 do putpixel(x,y,x*x+y*y);
  38.   p := 0;
  39.   repeat until keypressed;
  40.   asm mov ax,3; int 10h; end;
  41. end.
  42.  
  43. { Safety: }
  44. { mov dx,3bfh; mov al,3; out dx,al; mov dx,3d8h; mov al,0a0h; out dx,al }
  45. { 3b8h in monochrome mode }
  46.