#include #include #include #include #include "pcbios.h" #define RAMIO #include "ramio.h" #undef RAMIO /* LOW level I/O routine */ /* port */ void get_lpt() { unsigned int far *bios_data; FP_SEG(bios_data) = 0x40; FP_OFF(bios_data) = 0x08; lpt_addr[1] = *bios_data; FP_OFF(bios_data) = 0x0a; lpt_addr[2] = *bios_data; FP_OFF(bios_data) = 0x0c; lpt_addr[3] = *bios_data; /* FP_OFF(bios_data) = 0x0e; lpt_addr[4] = *bios_data; */ lpt_addr[4] = (unsigned int)0x0000; lpt_num = 0; return; } int initport() { if(lpt_addr[lpt_num] == 0x0000) return 1; direction = DIRAT; outp(CONTROLP,cport[direction][PORTSTBY]); twait(); outp(DATAP,0xff); twait(); return 0; } void ramdir(int dir) { direction = dir; outp(CONTROLP,cport[dir][PORTSTBY]); twait(); return; } void addrinc(void) { outp(CONTROLP,cport[direction][PORTAINC]); twait(); outp(CONTROLP,cport[direction][PORTSTBY]); twait(); return; } void ramwrite(int data) { outp(DATAP,data); twait(); outp(CONTROLP,cport[direction][PORTWR]); twait(); outp(CONTROLP,cport[direction][PORTSTBY]); twait(); return; } void addrclr(void) { outp(CONTROLP,cport[direction][PORTCLR]); twait(); outp(CONTROLP,cport[direction][PORTSTBY]); twait(); return; } void twait() { static long l = 0; if(l < 7) { l++; twait(); l--; } return; }