176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* ----------------------------------------------------------------------- *
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *   Copyright 2001-2008 H. Peter Anvin - All Rights Reserved
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *   This program is free software; you can redistribute it and/or modify
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *   it under the terms of the GNU General Public License as published by
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *   Boston MA 02111-1307, USA; either version 2 of the License, or
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *   (at your option) any later version; incorporated herein by reference.
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * ----------------------------------------------------------------------- */
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * conio.c
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Output to the screen
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <stdarg.h>
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include "mystuff.h"
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanint putchar(int ch)
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman{
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    if (ch == '\n')
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	putchar('\r');
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanasm("movb $0x02,%%ah ; int $0x21": :"d"(ch));
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    return ch;
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Note: doesn't put '\n' like the stdc version does */
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanint puts(const char *s)
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman{
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    int count = 0;
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    while (*s) {
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	putchar(*s);
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	count++;
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	s++;
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    }
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    return count;
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}
43