|
|
1.1 ! root 1: #ifndef __FAST_DOT_H ! 2: #define __FAST_DOT_H ! 3: ! 4: /* ! 5: * _FAST.H 5.20A June 8, 1995 ! 6: * ! 7: * The Greenleaf Comm Library ! 8: * ! 9: * Copyright (C) 1991-1995 Greenleaf Software Inc. All Rights Reserved. ! 10: * ! 11: * NOTES ! 12: * ! 13: * This header file contains constants, structures, and definitions ! 14: * used by the Greenleaf Fast interface code. There should generally ! 15: * not be any reason for an end user of the library to include this file. ! 16: * ! 17: * MODIFICATIONS ! 18: * ! 19: * December 12, 1992 4.00A : Initial release ! 20: */ ! 21: ! 22: /* ! 23: * In order to change the buffer size, you need to edit the line here ! 24: * and change the 1024 to some other power of 2. Then change the ! 25: * equivalent line in _FISRASM.EQU to the same number. Finally, ! 26: * BUILD X FAST_*.C F_*.ASM, and you have a new buffer size. ! 27: */ ! 28: ! 29: #define FAST_BUFFER_SIZE 1024 ! 30: #define FAST_HIGH_WATER_MARK ( ( FAST_BUFFER_SIZE * 3 ) / 4 ) ! 31: #define FAST_LOW_WATER_MARK ( FAST_BUFFER_SIZE / 4 ) ! 32: ! 33: /* ! 34: * #define FAST_ISR_IN_C ! 35: */ ! 36: ! 37: /* ! 38: * Note that real far pointers are saved as unsigned longs. This ! 39: * prevents protected mode code from accidentally choking if and ! 40: * when it treats a real mode address as a pointer ! 41: */ ! 42: ! 43: #define FAST_PORT struct _tag_fast_port ! 44: ! 45: #if defined( GF_X32 ) ! 46: #pragma pack( 1 ) ! 47: #endif ! 48: ! 49: struct _tag_fast_port { ! 50: #if defined( GF_X32 ) ! 51: GF_FARPTR32 next_fast_port; ! 52: GF_FARPTR16 real_next_fast_port; ! 53: #elif defined( GF_X16 ) ! 54: struct _tag_fast_port far *next_fast_port; ! 55: GF_REALPTR16 real_next_fast_port; ! 56: #else ! 57: struct _tag_fast_port GF_FAR *next_fast_port; ! 58: unsigned long real_next_fast_port; ! 59: #endif ! 60: int fast_id; ! 61: int uart_base; ! 62: int head_pointer; ! 63: int tail_pointer; ! 64: int interrupt_number; ! 65: int line_status; ! 66: int mcr_rx_handshake_bit; ! 67: int msr_tx_handshake_bit; ! 68: int blocking; ! 69: int is_16550; ! 70: int use_16550_TX_fifo; ! 71: int trigger_level; ! 72: char buffer[ FAST_BUFFER_SIZE ]; ! 73: }; ! 74: ! 75: #undef FAST_PORT ! 76: ! 77: typedef struct _tag_fast_port FAST_PORT; ! 78: ! 79: /* ! 80: * A short port is just the fast port minus the buffer. I use this ! 81: * a lot under the 32 bit DOS extenders, when I copy the port structure ! 82: * into a shadow structure to dink with it. ! 83: */ ! 84: ! 85: typedef struct _tag_short_fast_port { ! 86: #if defined( GF_X32 ) ! 87: GF_FARPTR32 next_fast_port; ! 88: GF_FARPTR16 real_next_fast_port; ! 89: #elif defined( GF_X16 ) ! 90: struct _tag_fast_port far *next_fast_port; ! 91: GF_REALPTR16 real_next_fast_port; ! 92: #else ! 93: struct _tag_fast_port GF_FAR *next_fast_port; ! 94: unsigned long real_next_fast_port; ! 95: #endif ! 96: int fast_id; ! 97: int uart_base; ! 98: int head_pointer; ! 99: int tail_pointer; ! 100: int interrupt_number; ! 101: int line_status; ! 102: int mcr_rx_handshake_bit; ! 103: int msr_tx_handshake_bit; ! 104: int blocking; ! 105: int is_16550; ! 106: int use_16550_TX_fifo; ! 107: int trigger_level; ! 108: } SHORT_FAST_PORT; ! 109: int GF_CONV _DumpPortStatusGreenleafFast( PORT *port, PORT_DUMPER printer ); ! 110: ! 111: #if defined( GF_X32 ) ! 112: void GF_CDECL _GreenleafFastRealIsr( GF_FARPTR16 fast_port ); ! 113: void GF_CDECL _GreenleafFastIsr( GF_FARPTR32 fast_port ); ! 114: #elif defined( GF_X16 ) ! 115: void GF_CDECL far _GreenleafFastRealIsr( FAST_PORT far *fast_port ); ! 116: void GF_CDECL far _GreenleafFastIsr( FAST_PORT far *fast_port ); ! 117: #else ! 118: void GF_CDECL GF_FAR _GreenleafFastIsr( FAST_PORT GF_FAR *fast_port ); ! 119: #endif ! 120: ! 121: #if defined( GF_X32 ) ! 122: #pragma pack() ! 123: #endif ! 124: ! 125: #endif /* #ifndef __FAST_DOT_H */ ! 126:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.