home *** CD-ROM | disk | FTP | other *** search
/ Black Art of 3D Game Programming / Black_Art_of_3D_Game_Programming.iso / source / msc / library / black9.h < prev    next >
Text File  |  1994-12-10  |  4KB  |  150 lines

  1.  
  2. // D E F I N E S  ////////////////////////////////////////////////////////////
  3.  
  4. // modem responses
  5.  
  6. #define MODEM_USER_ABORT      -1
  7.  
  8. #define MODEM_OK              0
  9. #define MODEM_CONNECT         1
  10. #define MODEM_RING            2
  11. #define MODEM_NO_CARRIER      3
  12. #define MODEM_ERROR           4
  13. #define MODEM_CONNECT_1200    5
  14. #define MODEM_NO_DIALTONE     6
  15. #define MODEM_BUSY            7
  16. #define MODEM_NO_ANSWER       8
  17. #define MODEM_CONNECT_0600    9
  18. #define MODEM_CONNECT_2400    10
  19. #define MODEM_CARRIER_2400    11
  20. #define MODEM_CONNECT_4800    12
  21. #define MODEM_CONNECT_9600    13
  22.  
  23. #define NUM_MODEM_RESPONSES   14
  24.  
  25. // standard delay times
  26.  
  27. #define DELAY_1_SECOND  18
  28. #define DELAY_2_SECOND  38
  29. #define DELAY_3_SECOND  48
  30.  
  31. // registers indices in 16450/16550 UART
  32.  
  33. #define SERIAL_RBF        0    // the read buffer
  34. #define SERIAL_THR        0    // the write buffer
  35. #define SERIAL_IER        1    // the int. enable register
  36. #define SERIAL_IIR        2    // the int. identification register
  37. #define SERIAL_LCR        3    // control data config. and divisor latch
  38. #define SERIAL_MCR        4    // modem control reg.
  39. #define SERIAL_LSR        5    // line status reg.
  40. #define SERIAL_MSR        6    // modem status of cts, ring etc.
  41. #define SERIAL_DLL        0    // the low byte of baud rate divisor
  42. #define SERIAL_DLH        1    // the hi byte of divisor latch
  43.  
  44. // baud rate divisors
  45.  
  46. #define SERIAL_BAUD_1200  96     // baud rate divisors for 1200 baud - 19200
  47. #define SERIAL_BAUD_2400  48
  48. #define SERIAL_BAUD_4800  24
  49. #define SERIAL_BAUD_9600  12
  50. #define SERIAL_BAUD_19200  6
  51.  
  52. // bit masks for different comm settings
  53.  
  54. #define SERIAL_STOP_1      0     // 1 stop bit per character
  55. #define SERIAL_STOP_2      4     // 2 stop bits per character
  56.  
  57. #define SERIAL_BITS_5      0     // send 5 bit characters
  58. #define SERIAL_BITS_6      1     // send 6 bit characters
  59. #define SERIAL_BITS_7      2     // send 7 bit characters
  60. #define SERIAL_BITS_8      3     // send 8 bit characters
  61.  
  62. #define SERIAL_PARITY_NONE 0     // no parity
  63. #define SERIAL_PARITY_ODD  8     // odd parity
  64. #define SERIAL_PARITY_EVEN 24    // even parity
  65.  
  66. #define SERIAL_DIV_LATCH_ON 128  // used to turn reg 0,1 into divisor latch
  67.  
  68. #define SERIAL_GP02        8     // enable interrupt
  69.  
  70. // comm port I/O port base addresses
  71.  
  72. #define COM_1              0x3F8 // base port address of port 0
  73. #define COM_2              0x2F8 // base port address of port 1
  74.  
  75. // programmable interrupt controller addresses
  76.  
  77. #define PIC_IMR    0x21   // pic's interrupt mask reg.
  78. #define PIC_ICR    0x20   // pic's interupt control reg.
  79.  
  80. #define INT_SERIAL_PORT_0    0x0C  // port 0 interrupt com 1 & 3
  81. #define INT_SERIAL_PORT_1    0x0B  // port 1 interrupt com 2 & 4
  82.  
  83. #define SERIAL_BUFF_SIZE 1024    // size of re-circulating receive buffer
  84.  
  85. // modem control commands
  86.  
  87. #define MODEM_DTR_ON      0
  88. #define MODEM_DTR_OFF     1
  89.  
  90. // E X T E R N A L S //////////////////////////////////////////////////////////
  91.  
  92. extern void (_interrupt _far *Old_Serial_ISR)();  // holds old comm port interrupt handler
  93.  
  94.  
  95. extern char serial_buffer[SERIAL_BUFF_SIZE];  // the receive buffer
  96.  
  97. extern int serial_end;       // indexes into receive buffer
  98. extern int serial_start;
  99. extern int serial_ch;
  100. extern int char_ready;       // current character and ready flag
  101. extern int old_int_mask;     // the old interrupt mask on the PIC
  102. extern int open_port;        // the currently open port
  103. extern int serial_lock;      // serial ISR semaphore so the buffer
  104.                              // isn't altered will it is being written
  105.                              // to by the ISR
  106.  
  107. extern char *modem_strings[];
  108.  
  109. // P R O T O T Y P E S ///////////////////////////////////////////////////////
  110.  
  111. // serial communications
  112.  
  113. void _interrupt _far Serial_ISR(void);
  114.  
  115. int Serial_Ready(void);
  116.  
  117. int Serial_Read(void);
  118.  
  119. int Serial_Read_Wait(void);
  120.  
  121. void Serial_Write(char ch);
  122.  
  123. void Serial_Print(char *string,int cr);
  124.  
  125. int Serial_Open(int port_base, int baud, int configuration);
  126.  
  127. int Serial_Close(void);
  128.  
  129. void Serial_Flush();
  130.  
  131. // modem interface
  132.  
  133. void Modem_Control(int command);
  134.  
  135. void Modem_Send_Command(char *buffer);
  136.  
  137. int Initialize_Modem(char *extra_init);
  138.  
  139. int Make_Connection(char *number);
  140.  
  141. int Wait_For_Connection(void);
  142.  
  143. int Modem_Result(char *result,int exit_enable);
  144.  
  145. int Hang_Up(void);
  146.  
  147.  
  148.  
  149.  
  150.