/* vputn.c (emx+gcc) -- Copyright (c) 1987-1993 by Eberhard Mattes */

#include <stdlib.h>
#include <dos.h>
#define INCL_VIO
#include <os2emx.h>
#include <sys/video.h>
#include "video2.h"

void v_putn (char c, int count)
{
  if (count > 0)
    {
      if (_osmode == OS2_MODE)
        {
          BYTE cell[2];

          cell[0] = c;
          cell[1] = (BYTE)_v_attr;
          VioWrtNCell (cell, count, _v_y, _v_x, 0);
        }
      else if (_v_mem != NULL)
        {
          char *p;

          p = _v_mem + (_v_y * _v_width + _v_x) * 2;
          while (count > 0)
            {
              p[0] = c;
              p[1] = (char)_v_attr;
              --count; p += 2;
            }
        }
      else
        {
          union REGS r;

          r.h.ah = 0x09;
          r.h.bh = 0;
          r.h.bl = (unsigned char)_v_attr;
          r.h.al = c;
          r.x.cx = count;
          _int86 (0x10, &r, &r);
        }
    }
}
