home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * *
- * F-BASIC386用拡張モジュール << MODULE-NAME : INOUT >> *
- * *
- * COPYRIGHT (C) FUJITSU PERSONAL COMPUTER SYSTEMS 1990 *
- * *
- * (AUTHOR) : 吉村 宰 ( FPS)第一技術 ) *
- * *
- * (FUNCTION) : I/O IN,OUT Program *
- * (use loadm) *
- * *
- * (UPDATE HISTORY) *
- * Ver Level Date 修正内容 Module Name *
- *----------------------------------------------------------------------*
- * *
- ************************************************************************/
-
- extern int inp();
- extern int inpw();
- extern int outp();
- extern int outpw();
-
- /************************************************************************
- * *
- * << FUNCTION-NAME : bs_io() >> *
- * *
- * (機能\) fb386上でloadmされ、I/Oへの入出力をする *
- * *
- * (入力) unsigned int io_adr I/O address *
- * unsigned int mode 下位4bit..byte数 *
- * bit7......0:read 1:write *
- * unsigned char *data データの入った(返す)文字列の *
- * ディスクリプタ *
- * *
- * (出力) 戻り値 0:正常 1:ERROR *
- * (注) *data --> アドレス(4byte) + 長さ(2byte) *
- * *
- * *
- * (UPDATE HISTORY) *
- * Ver Level Date 修正内容 Module Name *
- *----------------------------------------------------------------------*
- * 0 0.0 90/01/14 first generate O.Y. *
- * *
- ************************************************************************/
- int bs_io(io_adr,mode,data)
- unsigned int io_adr;
- unsigned int mode;
- unsigned char *data;
- {
- unsigned int bw;
- unsigned short len;
- unsigned char *d_adr;
-
- /* error check */
- if(io_adr >= 0x10000)
- return(1);
- bw = mode & 0x7f;
- if(!(bw == 2 || bw == 1))
- return(1);
- d_adr = *(unsigned char **)data;
- len = *(unsigned short *)(data+4);
- if(len != bw)
- return(1);
-
- /* io read/write */
- switch(mode){
- case 0x01:
- *d_adr = (unsigned char)inp(io_adr);
- case 0x02:
- *(unsigned short *)d_adr = (unsigned short)inpw(io_adr);
- case 0x81:
- outp(io_adr,*d_adr);
- case 0x82:
- outpw(io_adr,*(unsigned short *)d_adr);
- }
- return(0);
- }
- /* << end of source >> */