/* rom emurator lowlevel routine header T.Tsuda. , DSA October 16,1996 */ #ifdef RAMIO #define EXTERN #else #define EXTERN extern #endif /* lpt port address & data Data port assignment : write data Status port assignment : N/A Control port assignment Bit: LPT signal | Assign ---------------------------------- 0 : -Strobe | AINC Address counter incriment. falling edge:incriment. 1 : -AutoFDXT | WR RAM write enable. 0:write enable 2 : INIT | -CLR Clear Address counter. 0:clear 3 : -SLCTIN | DIR Direction. 1(L):Terget port , 0(H):AT Host port 4 : IRQEN | 0 (disable) 5 : (direction) | 0 (output) 6 : N/A | 7 : N/A | */ /* LOW level I/O routine */ /* macros */ #ifdef RAMIO #define DATAP lpt_addr[lpt_num] /* lpt data port address */ #define STATUSP (lpt_addr[lpt_num] + 1) /* lpt status port address */ #define CONTROLP (lpt_addr[lpt_num] + 2) /* lpt control port address */ #endif /* externals */ EXTERN unsigned int lpt_addr[5]; /* lpt[n] port base address */ EXTERN int lpt_num; /* lpt port number */ #define DIRAT 0 #define DIRROM 1 #define PORTSTBY 0 #define PORTAINC 1 #define PORTWR 2 #define PORTCLR 3 EXTERN int direction /* emuration ram direction */ #ifdef RAMIO = DIRAT #endif ; #ifdef RAMIO int cport[2][4] = { /*stby,ainc, wr , clr */ {0x07,0x06,0x05,0x03}, /* direction to AT port */ {0x0f,0x0e,0x0d,0x0b} /* direction to terget ROM */ }; #endif /* function of prottypes */ void get_lpt(void); int initport(void); void ramdir(int dir); void addrinc(void); void ramwrite(int data); void addrclr(void); void twait(); #undef EXTERN