DataMuseum.dk

Presents historical artifacts from the history of:

Regnecentalen RC-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Regnecentalen RC-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦40f78dfb0⟧ TextFile

    Length: 2609 (0xa31)
    Types: TextFile
    Notes: UNIX file
    Names: »bmse_vpx.c«

Derivation

└─⟦0cfe73749⟧ Bits:30004154/config.imd SW95707I VP/ix MS-DOS emulator Rel. 1.1
└─⟦0cfe73749⟧ UNIX Filesystem
    └─⟦this⟧ »vc/new/usr/vpix/src/bmouse/bmse_vpx.c« 

TextFile

/* @(#)bmse_vpx.c	3.2 - 88/05/25 */
/*
 * MODULE: BMSE_VPX
 *	hardware dependent bus mouse emulation for VPIX
 *
 *   Copyright (c) 1986, 1987 by Phoenix Technologies Ltd
 *
 */

/*
 ***********************************
 * INCLUDES AND DEFINES
 ***********************************
 */
#include	"ptypes.h"
#include	"v86error.h"

#include	<fcntl.h>
#include	<sys/mouse.h>

typedef	struct	mouseinfo MSEPKT;

/*
 ***********************************
 * DATA
 ***********************************
 */
LOCAL	int	    _fd = -1;
LOCAL	BYTE	    _mouse_path[80];

/*
 ***********************************
 * FUNCTIONS
 ***********************************
 */
EXTERN	VOID	xy_bmouse();
EXTERN	VOID	btn_bmouse();

GLOBAL	int	bmsemd_init();
GLOBAL	int	bmsemd_close();
GLOBAL	VOID	bmsemd_read();
GLOBAL	int	bmsemd_release();
GLOBAL	int	bmsemd_acquire();

/*
 ***********************************
 * ENTRY POINTS
 ***********************************
 */

/*
 * FUNCTION: BMSEMD_INIT	
 *		Bus mouse initialization 
 *
 * INPUT PARAMETERS
 *	path	-- path name for mouse device
 * OUTPUT PARAMETERS
 *	returns	-- OK or ERR
 */
GLOBAL	int	bmsemd_init( path )
	char	*path;
{
	strcpy (_mouse_path, path);
	return (bmsemd_acquire ());
}

GLOBAL int bmsemd_acquire()
{
	MSEPKT	pkt;

        if	( (_fd = open(_mouse_path,O_RDONLY)) == -1 )
		v86error( VERR_WARNING, MOUSE_OPEN_ERR, errno, _mouse_path );
	else if	( ioctl(_fd,VPC_MOUSE_READ,&pkt) == -1 )
	{
		v86error( VERR_WARNING, MOUSE_INIT_ERR );
		close( _fd );
		_fd = -1;
	}
	return( _fd == -1 ? ERR : OK );
}



/*
 * FUNCTION: BMSEMD_CLOSE	
 *		Bus mouse shutdown 
 *
 * INPUT PARAMETERS
 *	none
 * OUTPUT PARAMETERS
 *	returns	-- OK or ERR
 */
GLOBAL	int	bmsemd_close()
{
	return (bmsemd_release ());
}

GLOBAL int bmsemd_release()
{
	int	rc = ERR;

	if	( _fd != -1 )
	{
		rc = close( _fd );
		_fd = -1;
	}
	return( rc );
}



/*
 * FUNCTION: BMSEMD_READ
 *		a routine to call when mouse data is available
 *
 * INPUT PARAMETERS
 *	none
 * OUTPUT PARAMETERS
 *	none
 */
GLOBAL	VOID	bmsemd_read()
{
	MSEPKT	pkt;

	if	( _fd == -1 || ioctl(_fd,VPC_MOUSE_READ,&pkt) == -1 )
	{
#ifdef	DEBUG
		v86error(VERR_WARNING,"unable to get mouse data");
#endif
		return;
	}

	if	( pkt.status & MOVEMENT )	/* if the mouse moved */
		xy_bmouse( pkt.xmotion, pkt.ymotion );

	if	( pkt.status & BUT1CHNG )	/* if button 1 changed */
		btn_bmouse( 0, (int)(pkt.status & BUT1STAT) );

	if	( pkt.status & BUT2CHNG )	/* if button 2 changed */
		btn_bmouse( 1, (int)(pkt.status & BUT2STAT) );

	if	( pkt.status & BUT3CHNG )	/* if button 3 changed */
		btn_bmouse( 2, (int)(pkt.status & BUT3STAT) );
}