home *** CD-ROM | disk | FTP | other *** search
- /**********************************************************
- * title: put_screen.c *
- * put attribute, char array to screen buffer *
- **********************************************************/
- put_screen(buf, attrib, rowstart, colstart, pag)
- char *buf; /* text buffer(aranged in col-row order */
- unsigned int attrib; /* attribute to be assigned to text */
- int rowstart; /* row position within screen (0,...) */
- int colstart; /* column position within screen */
- int pag; /* Video text page */
- {
- char tempbuf[161]; /* combined data-attribute buffer for one line */
- char *mbufptr, *interleave(); /* pointer into source buf */
- int base, index; /* indexs into screen buffer */
- int i; /* row counter */
- int rowsize = 1, colsize;
-
- colsize = strlen(buf);
- mbufptr = buf;
- base = (rowstart * 80) + colstart;
- for (i = 0; i < rowsize; i++) {
- mbufptr = interleave(mbufptr, attrib, tempbuf, colsize);
- index = base + (i * 80);
- putsc(tempbuf, index, colsize, pag); /* no-snow buff,start,length */
- }
- }
-
- /**********************************************************
- * title: interlv.c *
- * interleaves character with attribute into screen buff *
- * returns pointer into buffer where we left off *
- **********************************************************/
- char *interleave(aa, b, c, count) /* returns new pointer into source buffer */
- char *aa; /* pointer into source buffer */
- unsigned int b; /* attribute to interleave */
- char *c; /* pointer to destination buffer */
- int count; /* number of chars to process */
- {
- register int i; /* group counter */
-
- for (i = 0; i < count; ++i) {
- *c++ = *aa++; /* place data */
- *c++ = b; /* place attrib */
- }
- return aa;
- }
-
-