home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 273_01 / swriteca.ca < prev    next >
Text File  |  1988-02-11  |  1KB  |  58 lines

  1. #include <dos.h>
  2. swrite_ca(int row, int col, char *area)
  3. /* This will do a direct video write of the character ch. It will be
  4.    placed at location row,col using attribute attr.
  5. */
  6. {
  7.   extern int color, mono, cga, ega, scrseg, bios;
  8.   union REGS inregs, outregs;
  9.   int   scrofs, *pattr, orow, ocol ,x;
  10.   char pchar;
  11.   char far *base;
  12.   char far *work;
  13.     if(mono) base=(char far *)0xb0000000;
  14.     else base=(char far *)0xb8000000;
  15.     if(bios) {
  16.         locate(row,col) ;
  17.         inregs.h.bh=0x00;
  18.         inregs.h.ah=0x09;
  19.         inregs.h.al=*area;
  20.         area++;
  21.         inregs.h.bl=*area;
  22.         inregs.x.cx=0x01;
  23.         int86(0x10,&inregs,&inregs);
  24.         return(0);
  25.     }
  26.     scrofs = ((((row+1) * 160) - 160) + ((col+1) * 2)) - 2;
  27.     work = base + scrofs;
  28.     pchar = *area;
  29.     asm les bx,work
  30.     asm mov cl,pchar
  31.     if(cga) {
  32.             asm     mov    dx,03dah
  33.             asm        in    al,dx
  34.             asm        test al,1
  35.             asm        jnz $-3
  36.             asm        in    al,dx
  37.             asm        test al,1
  38.             asm        jz $-3
  39.         }
  40.     asm mov byte ptr es:[bx],cl
  41.     work++;
  42.     area++;
  43.     pchar = *area;
  44.     asm les bx,work
  45.     asm mov cl,pchar
  46.     if(cga) {
  47.             asm     mov    dx,03dah
  48.             asm        in    al,dx
  49.             asm        test al,1
  50.             asm        jnz $-3
  51.             asm        in    al,dx
  52.             asm        test al,1
  53.             asm        jz $-3
  54.         }
  55.     asm mov byte ptr es:[bx],cl
  56.     return(0);
  57. }
  58.