301 lines
14 KiB
C
301 lines
14 KiB
C
/* use14_ioc.h
|
|
** definitions of use1401 module stuff that is shared between use1401 and the driver.
|
|
** Copyright (C) Cambridge Electronic Design Limited 2010
|
|
** Author Greg P Smith
|
|
************************************************************************************/
|
|
#ifndef __USE14_IOC_H__
|
|
#define __USE14_IOC_H__
|
|
|
|
#define MAX_TRANSAREAS 8 /* The number of transfer areas supported by driver */
|
|
|
|
#define i386
|
|
#include "winioctl.h" /* needed so we can access driver */
|
|
|
|
/*
|
|
** Defines for IOCTL functions to ask driver to perform. These must be matched
|
|
** in both use1401 and in the driver. The IOCTL code contains a command
|
|
** identifier, plus other information about the device, the type of access
|
|
** with which the file must have been opened, and the type of buffering.
|
|
** The IOCTL function codes from 0x80 to 0xFF are for developer use.
|
|
*/
|
|
#define FILE_DEVICE_CED1401 0x8001
|
|
#define FNNUMBASE 0x800
|
|
|
|
#define U14_OPEN1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_CLOSE1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+1, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SENDSTRING CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+2, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_RESET1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+3, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETCHAR CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+4, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SENDCHAR CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+5, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_STAT1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+6, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_LINECOUNT CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+7, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETSTRING CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+8, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_REGCALLBACK CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+9, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETMONITORBUF CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+10, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SETTRANSFER CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+11, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_UNSETTRANSFER CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+12, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SETTRANSEVENT CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+13, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETOUTBUFSPACE CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+14, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETBASEADDRESS CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+15, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETDRIVERREVISION CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+16, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETTRANSFER CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+17, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_KILLIO1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+18, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_BLKTRANSSTATE CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+19, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_BYTECOUNT CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+20, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_ZEROBLOCKCOUNT CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+21, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_STOPCIRCULAR CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+22, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_STATEOF1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+23, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_REGISTERS1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+24, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GRAB1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+25, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_FREE1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+26, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_STEP1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+27, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SET1401REGISTERS CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+28, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_STEPTILL1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+29, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SETORIN CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+30, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_STARTSELFTEST CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+31, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_CHECKSELFTEST CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+32, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_TYPEOF1401 CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+33, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_TRANSFERFLAGS CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+34, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_DBGPEEK CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+35, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_DBGPOKE CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+36, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_DBGRAMPDATA CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+37, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_DBGRAMPADDR CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+38, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_DBGGETDATA CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+39, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_DBGSTOPLOOP CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+40, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_FULLRESET CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+41, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_SETCIRCULAR CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+42, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_GETCIRCBLK CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+43, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define U14_FREECIRCBLK CTL_CODE( FILE_DEVICE_CED1401, \
|
|
FNNUMBASE+44, \
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
//--------------- Structures that are shared with the driver -------------
|
|
#pragma pack(1)
|
|
|
|
typedef struct /* used for get/set standard 1401 registers */
|
|
{
|
|
short sPC;
|
|
char A;
|
|
char X;
|
|
char Y;
|
|
char stat;
|
|
char rubbish;
|
|
} T1401REGISTERS;
|
|
|
|
typedef union /* to communicate with 1401 driver status & control funcs */
|
|
{
|
|
char chrs[22];
|
|
short ints[11];
|
|
long longs[5];
|
|
T1401REGISTERS registers;
|
|
} TCSBLOCK;
|
|
|
|
typedef TCSBLOCK* LPTCSBLOCK;
|
|
|
|
typedef struct paramBlk
|
|
{
|
|
short sState;
|
|
TCSBLOCK csBlock;
|
|
} PARAMBLK;
|
|
|
|
typedef PARAMBLK* PPARAMBLK;
|
|
|
|
typedef struct TransferDesc /* Structure and type for SetTransArea */
|
|
{
|
|
WORD wArea; /* number of transfer area to set up */
|
|
void FAR * lpvBuff; /* address of transfer area */
|
|
DWORD dwLength; /* length of area to set up */
|
|
short eSize; /* size to move (for swapping on MAC) */
|
|
} TRANSFERDESC;
|
|
|
|
typedef TRANSFERDESC FAR * LPTRANSFERDESC;
|
|
|
|
/* This is the structure used to set up a transfer area */
|
|
typedef struct VXTransferDesc /* use1401.c and use1432x.x use only */
|
|
{
|
|
WORD wArea; /* number of transfer area to set up */
|
|
WORD wAddrSel; /* 16 bit selector for area */
|
|
DWORD dwAddrOfs; /* 32 bit offset for area start */
|
|
DWORD dwLength; /* length of area to set up */
|
|
} VXTRANSFERDESC;
|
|
|
|
#pragma pack()
|
|
|
|
#endif |