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