home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / UTILS1 / DVCLK11B.ZIP / DVLIB.H < prev    next >
Text File  |  1994-03-08  |  11KB  |  267 lines

  1. /*----------------------------------*/
  2. /*  Types commonly used by DV API.  */
  3. /*----------------------------------*/
  4. typedef char BOOLEAN;
  5. typedef unsigned char BYTE;
  6. typedef unsigned long ULONG;
  7. typedef void far *HANDLE;
  8. typedef unsigned int SEGMENT;
  9.  
  10. /* Field table header. */
  11. typedef struct {
  12.    char nFields;                             /* # fields              */
  13.    char Bits;                                /* screen behaviour bits */
  14.                                              /*   see FTH* below      */
  15.    char CurrInp;                             /* current input field   */
  16.                                              /*   ***read-only***     */
  17.    char CurrSel;                             /* current select field  */
  18.                                              /*   ***read-only***     */
  19.    char AttrSel1;                            /* attr if pointed at    */
  20.    char AttrSel2;                            /* attr if selected      */
  21. } FT_HEADER;
  22.  
  23. /* Field table entry. */
  24. typedef struct {
  25.    char SRow, SCol;                          /* start row/col            */
  26.    char ERow, ECol;                          /* end row/col              */
  27.    char Type;                                /* field type               */
  28.                                              /*   see FTE* below         */  
  29.    char Modifier;                            /* modifier                 */
  30.                                              /*   if input fld see FTE*  */
  31.                                              /*   else 1st key           */
  32.    char Colour;                              /* colour of select field   */
  33.    char Key2;                                /* for select fld, 2nd key  */
  34. } FT_ENTRY;
  35.  
  36.  
  37. /*----------------*/
  38. /*  Definitions.  */
  39. /*----------------*/
  40. #define MAGIC            0x1b                /* introduces stream commands */
  41. #define NIL_OBJ          ((HANDLE) 0)        /* null object handle */
  42.                                              /* also means use my whatever */
  43.  
  44. /* Types of objects returned by type_obj(). */
  45. #define NOT_AN_OBJ       0
  46. #define WINDOW           8                   /* nb: same as TASK */
  47. #define TASK             8                   /* nb: same as WINDOW */
  48. #define MAILBOX          9
  49. #define KEYBOARD         10
  50. #define TIMER            11
  51. #define OBJECTQ          12
  52. #define POINTER          15
  53. #define PANEL            16
  54.  
  55. /* Keyboard behaviour bits. */
  56. #define KBD_FIELD        0x01                /* field mode */
  57. #define KBD_HARDCURSOR   0x02                /* hardware cursor displayed */
  58. #define KBD_INSERT       0x04                /* insert mode active */
  59. #define KBD_NOWAIT       0x08                /* no wait while input ongoing */
  60. #define KBD_FILTER       0x10                /* filter keys via SETESC */
  61. #define KBD_EXCLUSIVE    0x20                /* exclusive input */
  62.                                              /*   nb: DV v2.2+ */
  63.  
  64. /* Types of stream commands. */
  65. #define S_WINDOW         0x00                /* window streams */
  66. #define S_QUERY          0x01                /* query streams */
  67. #define S_MANAGER        0x10                /* manager streams */
  68.  
  69. /* 
  70.  * Logical attributes. They correspond to the colours on the palette.
  71.  * By themselves, they give the foreground colour; multiplied by 16,
  72.  * they give the background colour.
  73.  */
  74. #define ATTR_NORMAL      1
  75. #define ATTR_HINORM      2
  76. #define ATTR_HELP        3
  77. #define ATTR_HIHELP      4
  78. #define ATTR_ERROR       5
  79. #define ATTR_HIERROR     6
  80. #define ATTR_EMPH        7
  81. #define ATTR_MARKED      8
  82. #define ATTR_REVERSE     8                   /* add to others */
  83.  
  84. /* Screen behaviour for select fields as specified in field table header. */
  85. #define FTH_READARRAY    0x01                /* data returned as array */
  86. #define FTH_READALL      0x02                /* data returned, all fields */
  87. #define FTH_READMOD      0x03                /* data returned, mod fields */
  88. #define FTH_AUTORESET    0x04                /* reset mod bits automaticly */
  89. #define FTH_CONTENTS     0x08                /* return contents, not 1/0 */
  90. #define FTH_RIGHTMB      0x10                /* right mouse ends entry */
  91. #define FTH_LEFTMB       0x20                /* left mouse ends entry */
  92. #define FTH_MOUSE        0x30                /* either mouse ends entry */
  93. #define FTH_KBDSELECT    0x40                /* kbd selects fields too */
  94.  
  95. /* Types of fields possible. */
  96. #define FTE_INACTIVE     0x00
  97. #define FTE_OUTPUT       0x40
  98. #define FTE_INPUT        0x80
  99. #define FTE_DESELECT     0xc0
  100. #define FTE_SELECT       0xc2
  101.  
  102. /* Field modifiers. */
  103. #define FTE_CURSOR       0x04                /* return as cursor leaves fld */
  104.                                              /*   API level 2.02+           */
  105. #define FTE_CLEAROLD     0x08                /* clear field with 1st key */
  106. #define FTE_UPCASE       0x10                /* force input to uppercase */
  107. #define FTE_JUSTIFY      0x20                /* right justify (numbers) */
  108. #define FTE_JUMPFULL     0x40                /* auto move when field full */
  109. #define FTE_AUTOCR       0x80                /* auto CR when field full */
  110.  
  111.  
  112. /*------------------------*/
  113. /*  Function prototypes.  */
  114. /*------------------------*/
  115. /* Low-level functions to communicate with DV API */
  116. HANDLE send_DVstream(HANDLE window, BYTE *stream);
  117.  
  118. /* Miscellaneous functions */
  119. void giveup_tslice(void);
  120. void sound_tone(int freq, int ticks);
  121. void begin_critical(void);
  122. void end_critical(void);
  123. void set_api(int vers);
  124. void set_cstyle(BOOLEAN flag);
  125. int isdv(void);
  126.  
  127. /* Fields */
  128. void clear_fld(HANDLE window, BYTE field);
  129. void fill_fld(HANDLE window, BYTE field, BYTE fillchar);
  130. void colour_fld(HANDLE window, BYTE field, BYTE colour);
  131. void write_fld(HANDLE window, BYTE field, char far *buf, int len);
  132. void set_cursor_fld(HANDLE window, BYTE field);
  133. void set_type_fld(HANDLE window, BYTE field, BYTE ftype);
  134. void set_header_fld(HANDLE window, FT_HEADER far *header);
  135. void scroll_fld(HANDLE window, BYTE field, BYTE direction);
  136. void reset_fld(HANDLE window);
  137. void read_fld(HANDLE window, BYTE field, BYTE * buf);
  138. void get_entry_fld(HANDLE window, BYTE field, FT_ENTRY *entry);
  139. int get_size_fld(HANDLE window, BYTE field);
  140. BYTE get_type_fld(HANDLE window, BYTE field);
  141. void get_header_fld(HANDLE window, FT_HEADER *header);
  142.  
  143. /* Keyboards */
  144. HANDLE my_kbd(void);
  145. HANDLE id_kbd(HANDLE task);
  146. HANDLE create_kbd(void);
  147. void free_kbd(HANDLE task);
  148. void read_kbd(HANDLE key, BYTE far * far *buf, int far *len);
  149. void write_kbd(HANDLE key, BYTE far *buf, int len, int status);
  150. void set_priority_kbd(HANDLE key, long priority);
  151. long get_priority_kbd(HANDLE key);
  152. long sizeof_kbd(HANDLE key);
  153. void set_bits_kbd(HANDLE key, int bits);
  154. void reset_bits_kbd(HANDLE key, int bits);
  155. void open_kbd(HANDLE window, HANDLE key);
  156. void close_kbd(HANDLE key);
  157. void erase_kbd(HANDLE key);
  158. int check_kbd(HANDLE key);
  159.  
  160. /* Mailboxes */
  161. HANDLE my_mbx(void);
  162. HANDLE id_mbx(HANDLE task);
  163. HANDLE create_mbx(void);
  164. void free_mbx(HANDLE task);
  165. void read_mbx(HANDLE task, BYTE far * far *buf, long far *len);
  166. void write_mbx(HANDLE task, BYTE far *msg, long len);
  167. void set_priority_mbx(HANDLE mbox, long priority);
  168. long get_priority_mbx(HANDLE mbox);
  169. long sizeof_mbx(HANDLE task);
  170. void addto_mbx(HANDLE mbox, BYTE far *msg, long len, int status);
  171. void write_ptr_mbx(HANDLE mbox, BYTE far *msg, long len, int status);
  172. void open_mbx(HANDLE task);
  173. void close_mbx(HANDLE task);
  174. void erase_mbx(HANDLE mbox);
  175. int check_mbx(HANDLE mbox);
  176. void name_mbx(HANDLE mbox, char far *mboxname, int len);
  177. void lock_mbx(HANDLE mbox);
  178. HANDLE find_mbx(char far *mboxname, int len);
  179.    
  180. /* Objects and object queues */
  181. int is_obj(HANDLE object);
  182. HANDLE my_obq(void);
  183. HANDLE id_obq(HANDLE task);
  184. HANDLE read_obq(HANDLE task);
  185. void addto_obq(HANDLE task, HANDLE object);
  186. long sizeof_obq(HANDLE task);
  187. void remove_obq(HANDLE task, HANDLE object);
  188. void open_obq(HANDLE task);
  189. void close_obq(HANDLE task);
  190. void erase_obq(HANDLE task);
  191. int check_obq(HANDLE task);
  192. int type_obj(HANDLE object);
  193.  
  194. /* Panels */
  195. HANDLE create_pan(void);
  196. void free_pan(HANDLE panel);
  197. void dir_pan(HANDLE panel, BYTE far *pfile, int far *len);
  198. int write_pan(HANDLE panel, HANDLE window, char far *pname,\
  199.    int len, HANDLE far *win_ret, HANDLE far *key_ret);
  200. int get_count_pan(HANDLE panel);
  201. int open_pan(HANDLE panel, char far *pfilename, int len);
  202. void close_pan(HANDLE panel);
  203. int check_pan(HANDLE panel);
  204.  
  205. /* Tasks */
  206. extern long task_inbuf;
  207. extern BYTE task_orphan;
  208. void restart_tsk(SEGMENT task);
  209. void post_tsk(SEGMENT task);
  210. void stop_tsk(SEGMENT task);
  211. HANDLE create_tsk(char *titel, int len, int rows, int cols, BYTE *stk, \
  212.      int stksiz, void (*entry) (void));
  213. void free_tsk(HANDLE task);
  214.  
  215.  
  216. /* Timers */
  217. HANDLE create_tim(void);
  218. void free_tim(HANDLE timer);
  219. ULONG read_tim(HANDLE timer);
  220. void set_tim(HANDLE timer, ULONG secths);
  221. void set_priority_tim(HANDLE timer, ULONG priority);
  222. ULONG get_priority_tim(HANDLE timer);
  223. ULONG get_elapsed_tim(HANDLE timer);
  224. ULONG get_remain_tim(HANDLE timer);
  225. void addto_tim(HANDLE timer, ULONG secths);
  226. void open_tim(HANDLE timer);
  227. void close_tim(HANDLE timer);
  228. void erase_tim(HANDLE timer);
  229. int check_tim(HANDLE timer);
  230.  
  231. /* Windows */
  232. void put_char_win(SEGMENT window, BYTE chr, BYTE atr);
  233. HANDLE my_win(void);
  234. HANDLE create_win(char far *titel, int len, int rows, int cols, int inbuf);
  235. void free_win(HANDLE task);
  236. void read_win(HANDLE window, BYTE far *buf, int far *len);
  237. HANDLE write_win(HANDLE window, BYTE far *buf, int len);
  238. void set_lcurpos_win(HANDLE window, BYTE row, BYTE col);
  239. void set_pos_win(HANDLE window, BYTE row, BYTE col);
  240. void set_size_win(HANDLE window, BYTE rows, BYTE cols);
  241. void set_viewport_win(HANDLE window, BYTE rows, BYTE cols);
  242. void set_vsize_win(HANDLE window, BYTE rows, BYTE cols);
  243. void move_win(HANDLE window, char rows, char cols);
  244. void resize_win(HANDLE window, char rows, char cols);
  245. void unhide_win(HANDLE window);
  246. void hide_win(HANDLE window);
  247. void set_colour_win(HANDLE window, BYTE colour);
  248. void redraw_win(HANDLE window);
  249. void make_systop_win(HANDLE window);
  250. void make_top_win(HANDLE window);
  251. void make_bot_win(HANDLE window);
  252. int sizeof_win(HANDLE window);
  253. int get_width_win(HANDLE window);
  254. void fill_win(HANDLE window, int fillchar);
  255. void erase_win(HANDLE window);
  256. void read_chars_win(HANDLE window, BYTE far *buf, int far *len);
  257. int display_err_win(HANDLE window, char far *buf, int len, \
  258.    int rows, int cols, int beep, int buttons);
  259. int get_rows_win(HANDLE window);
  260. int get_cols_win(HANDLE window);
  261. int get_vrows_win(HANDLE window);
  262. int get_vrows_win(HANDLE window);
  263. void get_size_win(HANDLE window, BYTE *rows, BYTE *cols);
  264. void get_viewport_win(HANDLE window, BYTE *rows, BYTE *cols);
  265. void get_vsize_win(HANDLE window, BYTE *rows, BYTE *cols);
  266.  
  267.