#include #include #include unsigned char huge *lpt1_base = ( unsigned char huge * ) 0x0000:0x0408; unsigned char huge *lpt2_base = ( unsigned char huge * ) 0x0000:0x040A; unsigned char huge *lpt3_base = ( unsigned char huge * ) 0x0000:0x040C; unsigned char huge *lpt4_base = ( unsigned char huge * ) 0x0000:0x040E; unsigned char data_port( int port_num ) { switch ( port_num ) { case 1: return *lpt1_base; case 2: return *lpt2_base; case 3: return *lpt3_base; case 4: return *lpt4_base; default: std::cerr << "Bad printer port number: '" << port_num << "'\n"; exit( 1 ); } } unsigned char status_port( int port_num ) { switch ( port_num ) { case 1: return *lpt1_base + 1; case 2: return *lpt2_base + 1; case 3: return *lpt3_base + 1; case 4: return *lpt4_base + 1; default: std::cerr << "Bad printer port number: '" << port_num << "'\n"; exit( 1 ); } } unsigned char control_port( int port_num ) { switch ( port_num ) { case 1: return *lpt1_base + 2; case 2: return *lpt2_base + 2; case 3: return *lpt3_base + 2; case 4: return *lpt4_base + 2; default: std::cerr << "Bad printer port number: '" << port_num << "'\n"; exit( 1 ); } } int main( int argc, char *argv[] ) { unsigned char }