/*************************************************************************** * NAME: COMSTUFF.C ** COPYRIGHT: ** "Copyright (c) 1992, by FORTE ** ** "This software is furnished under a license and may be used, ** copied, or disclosed only in accordance with the terms of such ** license and with the inclusion of the above copyright notice. ** This software or any other copies thereof may not be provided or ** otherwise made available to any other person. No title to and ** ownership of the software is hereby transfered." **************************************************************************** * CREATION DATE: 11/18/92 *--------------------------------------------------------------------------* * VERSION DATE NAME DESCRIPTION *> 1.0 05/01/93 Original ***************************************************************************/ #include #include #include "forte.h" #include "extern.h" #include "extern16.h" #include "utility.h" unsigned char xmit_busy(port) int port; { unsigned char status; status = inp(port + 5); return(!(status & 0x60)); } unsigned char data_ready(port) int port; { unsigned char status; status = inp(port + 5); return(status & 0x01); } void OutChar(port,data) int port; unsigned char data; { while(xmit_busy(port)) ; outp(port + 0,data); } unsigned char InChar(port) int port; { unsigned char data; while (!(data_ready(port))) ; data = inp(port+0); return(data); } void init_port(port) int port; /* 0 = com1, 1 = com2 */ { outp(port+3,0x80); outp(port+1,00); outp(port+0,0x06); outp(port+3,0x03); outp(port+1,00); while(data_ready(port)) (void)InChar(port); } void read_joystick(x1,y1,x2,y2,butts) unsigned int *x1; unsigned int *y1; unsigned int *x2; unsigned int *y2; unsigned int *butts; { union REGS regs; #ifndef WATCOMC regs.h.ah = 0x84; regs.x.dx = 1; int86(0x15,®s,®s); *x1 = regs.x.ax; *y1 = regs.x.bx; *x2 = regs.x.cx; *y2 = regs.x.dx; /* Now read buttons ... */ regs.h.ah = 0x84; regs.x.dx = 0; int86(0x15,®s,®s); *butts = regs.x.ax; #else regs.h.ah = 0x84; regs.x.edx = 1; int86(0x15,®s,®s); *x1 = regs.x.eax; *y1 = regs.x.ebx; *x2 = regs.x.ecx; *y2 = regs.x.edx; /* Now read buttons ... */ regs.h.ah = 0x84; regs.x.edx = 0; int86(0x15,®s,®s); *butts = regs.x.eax; #endif }