home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
fbasic
/
inout
/
inout.c
< prev
next >
Wrap
Text File
|
1990-06-14
|
2KB
|
79 lines
/************************************************************************
* *
* 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 >> */