/*******************************************************************/ /* BUFFER.H */ /* Include file for BUFFER.C */ /* Developers Toolkit 1995. */ /* */ /* (c)Copyright Sealevel Systems Incorporated, 1993 - 1995 */ /* */ /*******************************************************************/ // #define _BORLAND /* Borland compiler option */ /*******************************************************************/ /* Return values */ /*******************************************************************/ #define BM_DEVICE_STOPPED 0x01 /*Signal to restart the device */ #define BM_STOP_IO 0x02 /*Signal to stop the device */ #define BM_DEVICE_OK 0x00 /*Signal to restart the device */ /*******************************************************************/ /* Defines for DEVICE_INFO */ /*******************************************************************/ #define DEVICE_IS_RUNNING 0x00 /* Used with bDeviceFlag */ #define DEVICE_IS_STOPPED 0x01 /* Used with bDeviceFlag */ #define INPUT_DEVICE 0x01 /* Used with bDeviceType */ #define OUTPUT_DEVICE 0x00 /* Used with bDeviceType */ /*******************************************************************/ /* Defines for BUFFER_INFO */ /*******************************************************************/ /*******************************************************************/ /* Note: All np??? variables hold near pointer to BUFFER_INFO */ /* type structs */ /*******************************************************************/ #pragma pack(1) /* Align on Byte boundary */ typedef struct BUFFER_INFO * npBUFFER_INFO; #ifdef _BORLAND typedef struct DEVICE_INFO far * fpDEVICE_INFO; #else typedef struct DEVICE_INFO __far * fpDEVICE_INFO; #endif struct DEVICE_INFO { npBUFFER_INFO npFirstBuffer; // First Buffer in the ring unsigned short wTimeOut; // Time-Out Value unsigned short wTotal; // Total Number of Buffers unsigned short wRedBuffers; // Current Number of RED Buffers npBUFFER_INFO npCurrent; // Near pointer to Current Buffer npBUFFER_INFO npNext_RED; // Near pointer to Next RED Buffer npBUFFER_INFO npNext_GREEN; // Near pointer to Next GREEN Buffer unsigned char bDeviceType; // Input or Output etc. unsigned char bDeviceFlag; // Busy bit }; struct BUFFER_INFO { #ifdef _BORLAND unsigned char far * fpBufferAddress; // Far Address of Data Buffer #else unsigned char __far * fpBufferAddress; // Far Address of Data Buffer #endif npBUFFER_INFO npNextBuffer; // Near Address of Next Buffer in Ring unsigned short wByteCount; // Buffer Count unsigned char bBufferFlag; // Misc. Flag (Optional) }; #pragma pack() /* Revert to default packing */ #ifdef _BORLAND void AddBuffer( fpDEVICE_INFO, npBUFFER_INFO, unsigned char far *); unsigned char far * AssignBuffer( fpDEVICE_INFO); #else void AddBuffer( fpDEVICE_INFO, npBUFFER_INFO, unsigned char __far *); unsigned char __far * AssignBuffer( fpDEVICE_INFO); #endif unsigned short StartBuffer( fpDEVICE_INFO, unsigned char); unsigned short ReleaseBuffer( fpDEVICE_INFO); unsigned short SwapBuffer( fpDEVICE_INFO); void EraseBuffers( fpDEVICE_INFO); /*******************************************************************/ /* End of File */ /*******************************************************************/