📄 io.c
字号:
static char _[] = "@(#)io.c 5.22 93/10/26 14:50:43, Srini, AMD.";/****************************************************************************** * Copyright 1991 Advanced Micro Devices, Inc. * * This software is the property of Advanced Micro Devices, Inc (AMD) which * specifically grants the user the right to modify, use and distribute this * software provided this notice is not removed or altered. All other rights * are reserved by AMD. * * AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS * SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL * DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR * USE OF THIS SOFTWARE. * * So that all may benefit from your experience, please report any problems * or suggestions about this software to the 29K Technical Support Center at * 800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or * 0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. * * Advanced Micro Devices, Inc. * 29K Support Products * Mail Stop 573 * 5900 E. Ben White Blvd. * Austin, TX 78741 * 800-292-9263 ***************************************************************************** * Engineer: Srini Subramanian. ***************************************************************************** * This file contains the I/O related routines. ***************************************************************************** */#include <stdio.h>#include <string.h>#ifdef MSDOS#include <conio.h>#else#include <sys/ioctl.h>#endif#include "main.h"#include "miniint.h"#include "error.h"#include "monio.h"/* Function declarations */INT32 Mini_io_setup PARAMS((void));INT32 Mini_io_reset PARAMS((void));int getkey PARAMS((void));INT32 Mini_poll_kbd PARAMS((char *cmd_buffer, int size, int mode));int cmd_io PARAMS ((char *cmd_buffer, char c));int channel0_io PARAMS ((char c));INT32Mini_io_setup(){ setbuf(stdout, 0); /* stdout unbuffered */ return(SUCCESS);}INT32Mini_io_reset(){/* Nothing special for now */ return(SUCCESS);}/*** This function is used to perform all host I/O. It** calls the functions cmd_io() or hif_io() as appropriate** Note that there are eight pobible I/O "modes". These** are all possible combination of:**** - Host / Target I/O** - HIF / non-HIF I/O** - Command file / keyboard I/O***/INT32Mini_poll_kbd(cmd_buffer, size, blockmode)char *cmd_buffer;int size;int blockmode;{#ifdef MSDOS char ch; static int indx=0; io_config.cmd_ready = FALSE; if (blockmode) { /* BLOCK until a command is typed (line buffered) */ while (gets(cmd_buffer) == NULL); /* no characters in stdin */ io_config.cmd_ready = TRUE; } else { /* NONBLOCk return immediately if there is no command pending */ if (kbhit()) { ch = (unsigned char) getche(); *(cmd_buffer+indx) = ch; indx=indx+1; if (ch == (unsigned char) 13) { /* \r, insert \n */ putchar(10); /* line feed */ *(cmd_buffer+indx) = '\0'; io_config.cmd_ready = TRUE; indx=0; } else if (ch == (unsigned char) 8) { /* backspace */ indx=indx-1; } else if (ch == (unsigned char) 127) { /* delete */ indx=indx-1; } }; } return(SUCCESS);#else int c; int result; char *temp_ptr; int tries; int i; result = 0; io_config.cmd_ready = FALSE; if (blockmode) { /* block mode read */ i = 0;#ifdef __hpux ioctl(fileno(stdin), FIOSNBIO, &i); /* set blocking read */#else ioctl(fileno(stdin), FIONBIO, &i); /* set blocking read */#endif } else { /* nonblocking read */ /* for now only read from stdin */ i = 1;#ifdef __hpux ioctl(fileno(stdin), FIOSNBIO, &i); /* set non blocking read */#else ioctl(fileno(stdin), FIONBIO, &i); /* set non blocking read */#endif } /* Now read from stdin. */ result = read( 0, cmd_buffer, BUFSIZ ); if (result < 0) { } else { cmd_buffer[result] = '\0'; io_config.cmd_ready = TRUE; } if (blockmode) { } else { i = 0;#ifdef __hpux ioctl(fileno(stdin), FIOSNBIO, &i); /* clear non-blocking read */#else ioctl(fileno(stdin), FIONBIO, &i); /* clear non-blocking read */#endif } return(SUCCESS);#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -