/* keypad.c A simple utility for reading a build keypad from joystickport or parallelport This requires ioaddr.c */ #include "ioaddr.c" unsigned char read_keypad( int keypadtype ) { unsigned char val,cval; cval = KEYPAD_NOKEY; switch( keypadtype ){ case KEYPADTYPE_JOYSTICK: val = read_port(joystickport) >> 4 & 0x0f; if(val == KEYPAD_NOKEY ){ return(val); } while(val == KEYPAD_HIGHALONE ){ val = read_port(joystickport) >> 4 & 0x0f; } cval = val; while( val != KEYPAD_NOKEY ) { val = read_port(joystickport) >> 4 & 0x0f; } return(cval); case KEYPADTYPE_PARALLEL: val = read_port(parallelport + 1) >> 3 & 0x0f; if(val == KEYPAD_NOKEY ){ return(val); } while(val == KEYPAD_HIGHALONE ){ val = read_port(parallelport + 1) >> 3 & 0x0f; } cval = val; while( val != KEYPAD_NOKEY ) { val = read_port(parallelport + 1) >> 3 & 0x0f; } return(cval); default:break; } return( cval ); }