home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DRWIN101.ZIP / SCRUTIL.HPP < prev    next >
C/C++ Source or Header  |  1991-05-01  |  9KB  |  265 lines

  1. #ifndef __SCRUTIL_H
  2. #define __SCRUTIL_H
  3.  
  4. #ifndef BYTE
  5.   #define BYTE unsigned char
  6. #endif
  7.  
  8. #ifndef WORD
  9.   #define WORD unsigned int
  10. #endif
  11.  
  12. #ifndef LWORD
  13.   #define LWORD unsigned long int
  14. #endif
  15.  
  16. #define SCRSEG_MONO    0xB0000000UL    /*monochrome video RAM*/
  17. #define SCRSEG_COLOR   0xB8000000UL    /*color video RAM*/
  18. #define SCRMOD         0x00400049UL    /*pointer to video mode byte in RAM*/
  19. #define SCRCOLUMN      0x0040004AUL    /*pointer to number of columns word*/
  20. #define SCRPAGSIZ      0x0040004CUL    /*pointer to page size word in RAM*/
  21. #define SCRPAGOFF      0x0040004EUL    /*pointer to current page offset word*/
  22. #define SCRPAGCUR      0x00400050UL    /*pointer to 8 page cursor words*/
  23. #define SCRCURSIZ      0x00400060UL    /*pointer to cursor size word in RAM*/
  24. #define SCRPAG         0x00400062UL    /*pointer to current page number*/
  25. #define SCREGAROWS     0x00400084UL    /*pointer to EGA (rows-1) byte*/
  26.  
  27. enum SCREEN_MODES {                    /*video modes for setscrmod*/
  28.   TEXT_40_25_BW        =0x0000,        /*25 rows, 40 columns, b/w text*/
  29.   TEXT_40_25           =0x0001,        /*same, but color*/
  30.   TEXT_80_25_BW        =0x0002,        /*25 rows, 80 columns, b/w text*/
  31.   TEXT_80_25           =0x0003,        /*same, but color*/
  32.   GRAP_320_200_4       =0x0004,        /*graphics, 320x200, 4 color*/
  33.   GRAP_320_200_4_BW    =0x0005,        /*same, grey-scale*/
  34.   GRAP_640_200_2       =0x0006,        /*2-color (BW)*/
  35.   MONO_80_25           =0x0007,        /*monochrome text*/
  36.   GRAP_160_200_16      =0x0008,        /*back to graphics modes*/
  37.   GRAP_320_200_16      =0x0009,
  38.   GRAP_640_200_4       =0x000A,
  39.  
  40.   TEXT_80_HI           =0x1112         /*either 50 (VGA) or 43 (EGA) rows*/
  41. };   /*screen video modes*/
  42.  
  43.  
  44. /****************************************************************************/
  45. /*  ASCII control characters...                                             */
  46. /****************************************************************************/
  47. #ifndef __ASCII
  48. #define __ASCII
  49. #define NUL    0x00    /*null character*/
  50. #define SOH    0x01    /*start of header*/
  51. #define STX    0x02    /*start of text*/
  52. #define ETX    0x03    /*end of text*/
  53. #define EOT    0x04    /*end of transmission*/
  54. #define ENQ    0x05    /*enquiry*/
  55. #define ACK    0x06    /*acknowledge*/
  56. #define BEL    0x07    /*bell, beep*/
  57. #define BS     0x08    /*backspace*/
  58. #define HT     0x09    /*horizontal tab*/
  59. #define TAB    0x09    /*horizontal tab, common name*/
  60. #define LF     0x0A    /*linefeed*/
  61. #define VT     0x0B    /*vertical tab*/
  62. #define FF     0x0C    /*formfeed*/
  63. #define CR     0x0D    /*carriage return, enter*/
  64. #define SO     0x0E    /*shift out*/
  65. #define SI     0x0F    /*shift in*/
  66. #define DC0    0x10    /*device control 0*/
  67. #define DLE    0x10    /*data link escape*/
  68. #define DC1    0x11    /*device control 1*/
  69. #define XON    0x11    /*transmit on*/
  70. #define DC2    0x12    /*device control 2*/
  71. #define DC3    0x13    /*device control 3*/
  72. #define XOFF   0x13    /*transmit off*/
  73. #define DC4    0x14    /*device control 4*/
  74. #define NAK    0x15    /*negative acknowledge*/
  75. #define SYN    0x16    /*synchronous idle*/
  76. #define ETB    0x17    /*end transmission block*/
  77. #define CAN    0x18    /*cancel*/
  78. #define EM     0x19    /*end of medium*/
  79. #define SUB    0x1A    /*substitute*/
  80. #define ESC    0x1B    /*escape*/
  81. #define FS     0x1C    /*file separator*/
  82. #define GS     0x1D    /*group separator*/
  83. #define RS     0x1E    /*record separator*/
  84. #define US     0x1F    /*unit separator*/
  85. #define SPC    0x20    /*space, blank*/
  86. #define DEL    0x7F    /*delete character*/
  87. #endif                                 //if ascii not yet defined (__ASCII)
  88.  
  89.  
  90. /****************************************************************************/
  91. /*  The following special keys are returned by the getkey() function.       */
  92. /*  The keys are simply the second (scan) code with 256 added.              */
  93. /****************************************************************************/
  94. #ifndef __FKEYS
  95. #define __FKEYS
  96. #define A_ESC      0x0101
  97. #define A_1        0x0178
  98. #define A_2        0x0179
  99. #define A_3        0x017A
  100. #define A_4        0x017B
  101. #define A_5        0x017C
  102. #define A_6        0x017D
  103. #define A_7        0x017E
  104. #define A_8        0x017F
  105. #define A_9        0x0180
  106. #define A_0        0x0181
  107. #define A_MINUS    0x010C
  108. #define A_EQUAL    0x010D
  109. #define A_BS       0x010E
  110. #define S_TAB      0x010F
  111. #define A_Q        0x0110
  112. #define A_W        0x0111
  113. #define A_E        0x0112
  114. #define A_R        0x0113
  115. #define A_T        0x0114
  116. #define A_Y        0x0115
  117. #define A_U        0x0116
  118. #define A_I        0x0117
  119. #define A_O        0x0118
  120. #define A_P        0x0119
  121. #define A_LTBRKT   0x011A
  122. #define A_RTBRKT   0x011B
  123. #define A_ENTER    0x011C
  124. #define A_A        0x011E
  125. #define A_S        0x011F
  126. #define A_D        0x0120
  127. #define A_F        0x0121
  128. #define A_G        0x0122
  129. #define A_H        0x0123
  130. #define A_J        0x0124
  131. #define A_K        0x0125
  132. #define A_L        0x0126
  133. #define A_SEMICOL  0x0127
  134. #define A_QUOTE    0x0128
  135. #define A_TILDE    0x0129
  136. #define A_BSLASH   0x012B
  137. #define _F11       0x01D9
  138. #define _F12       0x01DA
  139. #define S_F11      0x0187
  140. #define S_F12      0x0188
  141. #define C_F11      0x0189
  142. #define C_F12      0x018A
  143. #define A_F11      0x018B
  144. #define A_F12      0x018C
  145. #define A_Z        0x012C
  146. #define A_X        0x012D
  147. #define A_C        0x012E
  148. #define A_V        0x012F
  149. #define A_B        0x0130
  150. #define A_N        0x0131
  151. #define A_M        0x0132
  152. #define A_COMMA    0x0133
  153. #define A_PERIOD   0x0134
  154. #define A_SLASH    0x0135
  155. #define A_TAB      0x01A5
  156.  
  157. #define _F1        0x013B
  158. #define _F2        0x013C
  159. #define _F3        0x013D
  160. #define _F4        0x013E
  161. #define _F5        0x013F
  162. #define _F6        0x0140
  163. #define _F7        0x0141
  164. #define _F8        0x0142
  165. #define _F9        0x0143
  166. #define _F10       0x0144
  167. #define _HOME      0x0147
  168. #define _UPAR      0x0148
  169. #define _PGUP      0x0149
  170. #define _LTAR      0x014B
  171. #define _RTAR      0x014D
  172. #define _END       0x014F
  173. #define _DNAR      0x0150
  174. #define _PGDN      0x0151
  175. #define _INS       0x0152
  176. #define _DEL       0x0153
  177. #define S_F1       0x0154
  178. #define S_F2       0x0155
  179. #define S_F3       0x0156
  180. #define S_F4       0x0157
  181. #define S_F5       0x0158
  182. #define S_F6       0x0159
  183. #define S_F7       0x015A
  184. #define S_F8       0x015B
  185. #define S_F9       0x015C
  186. #define S_F10      0x015D
  187. #define C_F1       0x015E
  188. #define C_F2       0x015F
  189. #define C_F3       0x0160
  190. #define C_F4       0x0161
  191. #define C_F5       0x0162
  192. #define C_F6       0x0163
  193. #define C_F7       0x0164
  194. #define C_F8       0x0165
  195. #define C_F9       0x0166
  196. #define C_F10      0x0167
  197. #define A_F1       0x0168
  198. #define A_F2       0x0169
  199. #define A_F3       0x016A
  200. #define A_F4       0x016B
  201. #define A_F5       0x016C
  202. #define A_F6       0x016D
  203. #define A_F7       0x016E
  204. #define A_F8       0x016F
  205. #define A_F9       0x0170
  206. #define A_F10      0x0171
  207. #define C_PRTSC    0x0172
  208. #define C_LTAR     0x0173
  209. #define C_RTAR     0x0174
  210. #define C_END      0x0175
  211. #define C_PGDN     0x0176
  212. #define C_HOME     0x0177
  213. #define C_PGUP     0x0178
  214.  
  215. #define C_A        0x01
  216. #define C_B        0x02
  217. #define C_C        0x03
  218. #define C_D        0x04
  219. #define C_E        0x05
  220. #define C_F        0x06
  221. #define C_G        0x07
  222. #define C_H        0x08
  223. #define C_I        0x09
  224. #define C_J        0x0A
  225. #define C_K        0x0B
  226. #define C_L        0x0C
  227. #define C_M        0x0D
  228. #define C_N        0x0E
  229. #define C_O        0x0F
  230. #define C_P        0x10
  231. #define C_Q        0x11
  232. #define C_R        0x12
  233. #define C_S        0x13
  234. #define C_T        0x14
  235. #define C_U        0x15
  236. #define C_V        0x16
  237. #define C_W        0x17
  238. #define C_X        0x18
  239. #define C_Y        0x19
  240. #define C_Z        0x1A
  241. #endif                                 //if keys not yet defined (__FKEYS)
  242.  
  243.  
  244. //===========================================================================
  245. int  ptrcmp(void far *p,void far *q);  /*compares two pointers*/
  246. void memcpynf(void near *n,void far *f,WORD k);   /*copies to near from far*/
  247. void memcpyfn(void far *f,void near *n,WORD k);   /*copies to far from near*/
  248. WORD getcrow(void);                    /*get cursor row on screen*/
  249. WORD getccol(void);                    /*get cursor col on screen*/
  250. void setcpos(WORD row,WORD col);       /*set cursor row, column on screen*/
  251. WORD getcsiz(void);                    /*get cursor size (start/stop lines)*/
  252. void setcsiz(WORD siz);                /*set cursor size*/
  253. WORD getsmod(void);                    /*get screen video mode*/
  254. void setsmod(WORD mod);                /*set screen video mode*/
  255. WORD getsrows(void);                   /*get number of text rows available*/
  256. WORD getscols(void);                   /*get number of text columns*/
  257. WORD getsrowscols(void);               /*get rows in LSB, columns in MSB*/
  258. WORD far *setscrseg(void);             /*sets scrseg to point to video RAM*/
  259.  
  260. int  getkey(void);
  261.  
  262. extern WORD far *scrseg;               /*pointer to video RAM*/
  263.  
  264. #endif
  265.