home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume33 / pdcurses / part03 < prev    next >
Encoding:
Text File  |  1992-11-19  |  55.5 KB  |  1,663 lines

  1. Newsgroups: comp.sources.misc
  2. From: M.Hessling@gu.edu.au (Mark Hessling)
  3. Subject:  v33i083:  pdcurses - Public Domain curses library for DOS and OS/2 v2.0, Part03/11
  4. Message-ID: <1992Nov19.040054.6674@sparky.imd.sterling.com>
  5. X-Md4-Signature: 87772155f4f83e0fef151c0697a829ba
  6. Date: Thu, 19 Nov 1992 04:00:54 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: M.Hessling@gu.edu.au (Mark Hessling)
  10. Posting-number: Volume 33, Issue 83
  11. Archive-name: pdcurses/part03
  12. Environment: DOS,OS/2,ANSI-C
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then feed it
  16. # into a shell via "sh file" or similar.  To overwrite existing files,
  17. # type "sh file -c".
  18. # Contents:  curspriv.h demos/testcurs.c makefile private/_setrows.c
  19. #   private/_validch.c
  20. # Wrapped by kent@sparky on Wed Nov 18 21:44:06 1992
  21. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  22. echo If this archive is complete, you will see the following message:
  23. echo '          "shar: End of archive 3 (of 11)."'
  24. if test -f 'curspriv.h' -a "${1}" != "-c" ; then 
  25.   echo shar: Will not clobber existing file \"'curspriv.h'\"
  26. else
  27.   echo shar: Extracting \"'curspriv.h'\" \(9131 characters\)
  28.   sed "s/^X//" >'curspriv.h' <<'END_OF_FILE'
  29. X/*
  30. X* $Header: c:/curses/RCS/curspriv.h%v 2.0 1992/11/16 22:40:39 MH Rel $
  31. X*
  32. X*                          CURSPRIV.H
  33. X*
  34. X* Header file for definitions and declarations for the
  35. X* PDCurses package. These definitions should not be generally
  36. X* accessible to programmers, but are provided if the applications
  37. X* programmer decides to make the decision in favor of speed on a
  38. X* PC over portability.
  39. X*
  40. X* Revision History:
  41. X* Frotz 1.5Beta 900714  Added many levels of compiler support.
  42. X*                       Added mixed prototypes for all "internal" routines.
  43. X*                       Removed all assembly language.  Added EGA/VGA
  44. X*                       support.  Converted all #ifdef to #if in all
  45. X*                       modules except CURSES.H and CURSPRIV.H.
  46. X*                       Always include ASSERT.H.  Added support for an
  47. X*                       external malloc(), calloc() and free().
  48. X*                       Added support for FAST_VIDEO (direct-memory writes).
  49. X*                       Added various memory model support (for FAST_VIDEO).
  50. X*                       Added much of the December 1988 X/Open Curses
  51. X*                       specification.
  52. X* bl    1.3     881005  All modules lint-checked with MSC '-W3' and turbo'C'
  53. X*                       '-w -w-pro' switches.
  54. X* bl    1.2     881002  Support (by #ifdef UCMASM) for uppercase-only
  55. X*                       assembly routine names. If UCMASM if defined,
  56. X*                       all assembler names are #defined as upper case.
  57. X*                       Not needed if you do "MASM /MX. Also missing
  58. X*                       declaration of cursesscroll(). Fixes thanks to
  59. X*                       N.D. Pentcheff
  60. X* bl    1.1     880306  Add _chadd() for raw output routines.
  61. X* bl    1.0     870515  Release.
  62. X*
  63. X*/
  64. X
  65. X#ifndef __CURSES_INTERNALS__
  66. X#define __CURSES_INTERNALS__
  67. X
  68. X/* Always include... */
  69. X#include <assert.h>
  70. X
  71. X/*----------------------------------------------------------------------
  72. X*       OPERATING SYSTEM SUPPORT:
  73. X*
  74. X*               DOS             The one we all know and love:-}
  75. X*               OS/2            The new kid on the block.
  76. X*               FLEXOS          A Real-time, protected-mode OS from
  77. X*                               Digital Research, Inc.
  78. X*                (AKA, the 4680 from IBM...)
  79. X*/
  80. X
  81. X/*----------------------------------------*/
  82. X#ifdef  DOS
  83. X#  define FAST_VIDEO 1          /* We can write directly to the screen. */
  84. X   typedef union REGS Regs;
  85. X   extern Regs regs;
  86. X#endif
  87. X
  88. X/*----------------------------------------*/
  89. X#ifdef  FLEXOS
  90. X#  define FAST_VIDEO 1          /* We can use scopy()   */
  91. X#  define GMODE  0 /* KLUDGE ALERT!
  92. X                   * GMODE == 0 defines character mode structures in FLEXTAB.H.
  93. X                   * GMODE == 1 defines graphics  mode structures in FLEXTAB.H.
  94. X                   */
  95. X#include <flextab.h>
  96. Xextern VIRCON vir;
  97. X#endif
  98. X
  99. X
  100. X
  101. X
  102. X/*----------------------------------------------------------------------
  103. X*       MEMORY MODEL SUPPORT:
  104. X*
  105. X*       MODELS
  106. X*               TINY            cs,ds,ss all in 1 segment (not enough memory!)
  107. X*               SMALL           cs:1 segment,           ds:1 segment
  108. X*               MEDIUM          cs:many segments        ds:1 segment
  109. X*               COMPACT         cs:1 segment,           ds:many segments
  110. X*               LARGE           cs:many segments        ds:many segments
  111. X*               HUGE            cs:many segments        ds:segments > 64K
  112. X*/
  113. X#ifdef  __TINY__
  114. X#  define SMALL 1
  115. X#endif
  116. X#ifdef  __SMALL__
  117. X#  define SMALL 1
  118. X#endif
  119. X#ifdef  __MEDIUM__
  120. X#  define MEDIUM 1
  121. X#endif
  122. X#ifdef  __COMPACT__
  123. X#  define COMPACT 1
  124. X#endif
  125. X#ifdef  __LARGE__
  126. X#  define LARGE 1
  127. X#endif
  128. X#ifdef  __HUGE__
  129. X#  define HUGE 1
  130. X#endif
  131. X
  132. X
  133. X
  134. X
  135. X/*----------------------------------------------------------------------
  136. X*       MALLOC DEBUGGING SUPPORT:
  137. X*
  138. X*       Set EMALLOC and EMALLOC_MAGIC in order to use your private
  139. X*       versions of malloc(), calloc(), and free().  This can help,
  140. X*       but not solve, your malloc problems when debugging...
  141. X*
  142. X*/
  143. X#ifndef    INTERNAL
  144. X#  define EMALLOC 0             /* Disable External Malloc            */
  145. X#else
  146. X#  define EMALLOC 0             /* Enable/Disable External Malloc       */
  147. X#  define EMALLOC_MAGIC  0x0C0C /* Our magic indicator that we should   */
  148. X                                /* use our external malloc rather than  */
  149. X                                /* the runtime's malloc.                */
  150. X#endif
  151. X
  152. X
  153. X/*----------------------------------------------------------------------*/
  154. X/* window properties */
  155. X#define _SUBWIN         0x01    /* window is a subwindow            */
  156. X#define _ENDLINE        0x02    /* last winline is last screen line */
  157. X#define _FULLWIN        0x04    /* window fills screen              */
  158. X#define _SCROLLWIN      0x08    /* window lwr rgt is screen lwr rgt */
  159. X#define _PAD            0x10    /* X/Open Pad.                      */
  160. X
  161. X
  162. X
  163. X
  164. X/*----------------------------------------------------------------------*/
  165. X/* Miscellaneous */
  166. X#define _INBUFSIZ       512     /* size of terminal input buffer */
  167. X#define _NO_CHANGE      -1      /* flags line edge unchanged     */
  168. X
  169. X
  170. X
  171. X
  172. X/* @@@ THESE SHOULD BE INDIVIDUAL FUNCTIONS, NOT MACROS! */
  173. X#define _ECHAR          0x08    /* Erase char        (^H)         */
  174. X#define _DWCHAR         0x17    /* Delete Word char (^W)         */
  175. X#define _DLCHAR         0x15    /* Delete Line char (^U)         */
  176. X#define _GOCHAR         0x11    /* ^Q character                  */
  177. X#define _PRINTCHAR      0x10    /* ^P character                  */
  178. X#define _STOPCHAR       0x13    /* ^S character                  */
  179. X#define  NUNGETCH       20      /* max # chars to ungetch()      */
  180. X
  181. X
  182. X
  183. X
  184. X/* Setmode stuff */
  185. Xstruct cttyset
  186. X{
  187. X    bool    been_set;
  188. X    SCREEN    saved;
  189. X};
  190. X
  191. Xextern struct cttyset c_sh_tty;         /* tty modes for shell_mode */
  192. Xextern struct cttyset c_pr_tty;         /* tty modes for prog_mode  */
  193. Xextern struct cttyset c_save_tty;
  194. Xextern struct cttyset c_save_trm;
  195. X
  196. X/* Printscan stuff */
  197. Xextern char c_printscanbuf[];           /* buffer used during I/O */
  198. X
  199. X/* Strget stuff */
  200. Xextern char*    c_strbeg;
  201. X
  202. X/* doupdate stuff */
  203. Xextern WINDOW*  twin;                   /* used by many routines */
  204. X
  205. X/* Monitor (terminal) type information */
  206. X#define _NONE           0x00
  207. X#define _MDA            0x01
  208. X#define _CGA            0x02
  209. X#define _EGACOLOR       0x04
  210. X#define _EGAMONO        0x05
  211. X#define _VGACOLOR       0x07
  212. X#define _VGAMONO        0x08
  213. X#define _MCGACOLOR      0x0a
  214. X#define _MCGAMONO       0x0b
  215. X#define _FLEXOS         0x20            /* A Flexos console */
  216. X#define _MDS_GENIUS     0x30
  217. X
  218. X/* Text-mode font size information */
  219. X#define _FONT8  8
  220. X#define _FONT14 14
  221. X#define _FONT15 15              /* GENIUS */
  222. X#define _FONT16 16
  223. X
  224. X
  225. X/*----------------------------------------------------------------------
  226. X*       ANSI C prototypes.  Be sure that your compiler conditional
  227. X*       compilation definitions above define ANSI to be non-zero
  228. X*       if you compiler supports prototypes.
  229. X*/
  230. X#ifdef     ANSI
  231. X#  ifdef  CPLUSPLUS
  232. X     extern "C" {
  233. X#  endif
  234. Xbool    PDC_check_bios_key( void );
  235. Xbool    PDC_get_ctrl_break( void );
  236. Xbool    PDC_transformline( int );
  237. Xchtype    PDC_validchar( chtype );
  238. Xint    PDC_backchar( WINDOW*, char*, int* );
  239. Xint    PDC_scr_open( SCREEN*, bool );
  240. Xint    PDC_scr_close( void );
  241. Xint    PDC_get_cursor_pos( int*, int* );
  242. Xint    PDC_get_columns( void );
  243. Xint    PDC_scroll( int, int, int, int, int, chtype );
  244. Xint    PDC_set_ctrl_break( bool );
  245. Xint    PDC_clr_update( WINDOW* );
  246. Xint    PDC_chadd( WINDOW*, chtype, bool, bool );
  247. Xint    PDC_chins( WINDOW*, chtype, bool );
  248. X#ifdef     OS2
  249. XVIOCONFIGINFO    PDC_query_adapter_type( void );
  250. XVIOMODEINFO    PDC_get_scrn_mode( void );
  251. Xint    PDC_set_scrn_mode( VIOMODEINFO );
  252. Xbool    PDC_scrn_modes_equal (VIOMODEINFO, VIOMODEINFO);
  253. X#else
  254. Xint    PDC_query_adapter_type( void );
  255. Xint    PDC_get_scrn_mode( void );
  256. Xint    PDC_set_scrn_mode( int );
  257. Xbool    PDC_scrn_modes_equal (int, int);
  258. X#endif
  259. Xint    PDC_get_font( void );
  260. Xint    PDC_set_font( int );
  261. Xint    PDC_set_80x25( void );
  262. Xint    PDC_fix_cursor( int );
  263. Xint    PDC_get_rows( void );
  264. Xint    PDC_set_rows( int );
  265. Xint    PDC_putchar( chtype );
  266. Xint    PDC_clr_scrn( WINDOW* );
  267. Xint    PDC_gattr( void );
  268. Xint    PDC_gotoxy( int, int );
  269. Xint    PDC_print( int, int, int );
  270. Xint    PDC_chg_attr( WINDOW*, chtype, int, int, int, int );
  271. Xint    PDC_split_plane( WINDOW*, char*, char*, int, int, int, int );
  272. Xint    PDC_sanity_check( int );
  273. Xint    PDC_get_cursor_mode( void );
  274. Xint    PDC_set_cursor_mode( int, int );
  275. Xint    PDC_get_bios_key( void );
  276. Xint    PDC_putc( chtype, chtype );
  277. Xint    PDC_putctty( chtype, chtype );
  278. Xsigned    PDC_rawgetch( void );
  279. Xsigned    PDC_sysgetch( void );
  280. Xvoid    PDC_usleep( long );
  281. XWINDOW*    PDC_makenew( int, int, int, int );
  282. X
  283. X#ifdef    FLEXOS
  284. Xint    PDC_flexos_8bitmode( void );
  285. Xint    PDC_flexos_16bitmode( void );
  286. Xchar*    PDC_flexos_gname( void );
  287. X#endif
  288. X
  289. X#ifdef    REGISTERWINDOWS
  290. Xbool    PDC_inswin( WINDOW*, WINDOW* );
  291. Xint    PDC_addtail( WINDOW* );
  292. Xint    PDC_addwin( WINDOW*, WINDOW* );
  293. Xint    PDC_rmwin( WINDOW* );
  294. XWINDS*    PDC_findwin( WINDOW* );
  295. X#endif
  296. X#  ifdef  CPLUSPLUS
  297. X     }
  298. X#  endif
  299. X#endif
  300. X
  301. X#define MAX_ATRTAB    272
  302. X
  303. X/* internal macros for attributes */
  304. X#define chtype_attr(ch)  ((atrtab[((ch >> 8) & 0xFF)] << 8) & A_ATTRIBUTES)
  305. X#define phys_attr(ch)    (atrtab[((ch >> 8) & 0xFF)])
  306. X
  307. X#endif /* __CURSES_INTERNALS__*/
  308. END_OF_FILE
  309.   if test 9131 -ne `wc -c <'curspriv.h'`; then
  310.     echo shar: \"'curspriv.h'\" unpacked with wrong size!
  311.   fi
  312.   # end of 'curspriv.h'
  313. fi
  314. if test -f 'demos/testcurs.c' -a "${1}" != "-c" ; then 
  315.   echo shar: Will not clobber existing file \"'demos/testcurs.c'\"
  316. else
  317.   echo shar: Extracting \"'demos/testcurs.c'\" \(9169 characters\)
  318.   sed "s/^X//" >'demos/testcurs.c' <<'END_OF_FILE'
  319. X/*
  320. X *
  321. X * This is a test program for the PDCurses screen package for IBM PC type
  322. X * machines.
  323. X * This program was written by John Burnell (johnb@kea.am.dsir.govt.nz)
  324. X * To compile this program with your compiler define or leave undefined
  325. X * the following preprocessor macros:
  326. X * PROTO - define if your compiler accepts standard ANSI-C function prototypes
  327. X * COLOR_CURSES - define if your curses library has color support
  328. X *
  329. X */
  330. X#define PROTO
  331. X#define COLOR_CURSES
  332. X
  333. X#include <stdio.h>
  334. X#include <curses.h>
  335. X
  336. X#ifdef PROTO
  337. Xvoid inputTest (WINDOW *win);
  338. Xvoid scrollTest (WINDOW *win, int height, int width);
  339. Xint introTest (WINDOW *win);
  340. Xint initTest (WINDOW **win, int *height, int *width);
  341. Xvoid outputTest (WINDOW *win);
  342. Xvoid padTest (void);
  343. Xvoid resizeTest (void);
  344. X#else
  345. Xvoid inputTest ();
  346. Xvoid scrollTest ();
  347. Xint introTest ();
  348. Xint initTest ();
  349. Xvoid outputTest ();
  350. Xvoid padTest ();
  351. Xvoid resizeTest ();
  352. X#endif
  353. X
  354. Xmain()
  355. X{
  356. XWINDOW  *win;
  357. Xint     width, height;
  358. X
  359. X    if (!initTest (&win, &height, &width)) {return 1;}
  360. X
  361. X    padTest ();
  362. X
  363. X    introTest (win);
  364. X
  365. X    resizeTest ();
  366. X
  367. X    scrollTest (win, height, width);
  368. X
  369. X    inputTest (win);
  370. X
  371. X    outputTest (win);
  372. X
  373. X    delwin (win);
  374. X
  375. X    endwin();
  376. X    return 0;
  377. X}
  378. X#ifdef PROTO
  379. Xvoid Continue (WINDOW *win)
  380. X#else
  381. Xvoid Continue (win)
  382. XWINDOW *win;
  383. X#endif
  384. X{
  385. X    wmove(win, 10, 1);
  386. X    wclrtoeol(win);
  387. X    mvwaddstr(win, 10, 1, " Press any key to continue");
  388. X    wrefresh(win);
  389. X    raw();
  390. X    wgetch(win);
  391. X}
  392. X#ifdef PROTO
  393. Xint initTest (WINDOW **win, int *height, int *width)
  394. X#else
  395. Xint initTest (win, height, width)
  396. XWINDOW **win;
  397. Xint *height;
  398. Xint *width;
  399. X#endif
  400. X{
  401. X    initscr();
  402. X#ifdef COLOR_CURSES
  403. X    if (has_colors())
  404. X       start_color();
  405. X#endif
  406. X    *width  = 60;
  407. X    *height = 13;                /* Create a drawing window */
  408. X    *win = newwin(*height, *width, (LINES-*height)/2, (COLS-*width)/2);
  409. X    if(*win == NULL)
  410. X    {   endwin();
  411. X        return 1;
  412. X    }
  413. X}
  414. X#ifdef PROTO
  415. Xint introTest (WINDOW *win)
  416. X#else
  417. Xint introTest (win)
  418. XWINDOW *win;
  419. X#endif
  420. X{
  421. X    beep ();
  422. X#ifdef COLOR_CURSES
  423. X    if (has_colors())
  424. X       init_pair(1,COLOR_WHITE,COLOR_BLUE);
  425. X    wattrset(win, COLOR_PAIR(1));
  426. X#else
  427. X    wattrset(win, A_REVERSE);
  428. X#endif
  429. X    werase(win);
  430. X
  431. X    box(win, 0xba, 0xcd);
  432. X    wrefresh(win);
  433. X    cbreak ();
  434. X    mvwaddstr(win, 1, 1, "You should have rectangle in the middle of the screen");
  435. X    mvwaddstr(win, 2, 1, "You should have heard a beep");
  436. X    Continue(win);
  437. X    return 1;
  438. X}
  439. X#ifdef PROTO
  440. Xvoid scrollTest (WINDOW *win, int height, int width)
  441. X#else
  442. Xvoid scrollTest (win, height, width)
  443. XWINDOW *win;
  444. Xint height,width;
  445. X#endif
  446. X{
  447. X    int i;
  448. X    int OldX, OldY;
  449. X    char *Message = "The window will now scroll slowly";
  450. X
  451. X    mvwprintw (win, height - 2, 1, Message);
  452. X    wrefresh (win);
  453. X    scrollok(win, TRUE);
  454. X    for (i = 1; i <= height; i++) {
  455. X      delay_output (250);
  456. X      scroll(win);
  457. X      wrefresh (win);
  458. X    };
  459. X
  460. X    getmaxyx (win, OldY, OldX);
  461. X    mvwprintw (win, 6, 1, "The top of the window will scroll");
  462. X    wmove (win, 1, 1);
  463. X    wsetscrreg (win, 0, 4);
  464. X    box(win, 0xba, 0xcd);
  465. X    wrefresh (win);
  466. X    for (i = 1; i <= 5; i++) {
  467. X      delay_output (500);
  468. X      scroll(win);
  469. X      wrefresh (win);
  470. X    };
  471. X    wsetscrreg (win, 0, --OldY);
  472. X
  473. X}
  474. X#ifdef PROTO
  475. Xvoid inputTest (WINDOW *win)
  476. X#else
  477. Xvoid inputTest (win)
  478. XWINDOW *win;
  479. X#endif
  480. X{
  481. X    int w, h, bx, by, sw, sh, i, c;
  482. X    char buffer [80];
  483. X    WINDOW *subWin;
  484. X    wclear (win);
  485. X
  486. X    w  = win->_maxx;
  487. X    h  = win->_maxy;
  488. X    bx = win->_begx;
  489. X    by = win->_begy;
  490. X    sw = w / 3;
  491. X    sh = h / 3;
  492. X    if((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL)
  493. X        return;
  494. X
  495. X#ifdef COLOR_CURSES
  496. X    if (has_colors())
  497. X       init_pair(2,COLOR_CYAN,COLOR_BLUE);
  498. X    wattrset(subWin, COLOR_PAIR(2) | A_BOLD);
  499. X#else
  500. X    wattrset(subWin, A_BOLD);
  501. X#endif
  502. X    box(subWin, 0xba, 0xcd);
  503. X    wrefresh(win);
  504. X
  505. X    nocbreak();
  506. X    mvwaddstr(win, 2, 1, "Press some keys for 5 seconds");
  507. X    mvwaddstr(win, 1, 1, "Pressing ^C should do nothing");
  508. X    wrefresh(win);
  509. X
  510. X    for (i = 0; i < 5; i++) {
  511. X      werase (subWin);
  512. X      box(subWin, 0xba, 0xcd);
  513. X      mvwprintw (subWin, 1, 1, "Time = %d", i);
  514. X      wrefresh(subWin);
  515. X      delay_output(1000);
  516. X      flushinp();
  517. X    }
  518. X
  519. X    delwin (subWin);
  520. X    werase(win);
  521. X    flash();
  522. X    wrefresh(win);
  523. X    delay_output(500);
  524. X
  525. X    if (typeahead(NULL)) beep();
  526. X    mvwaddstr(win, 2, 1, "Press a key, followed by ENTER");
  527. X    wmove(win, 9, 10);
  528. X    wrefresh(win);
  529. X    echo();
  530. X    noraw();
  531. X    wgetch(win);
  532. X    flushinp();
  533. X
  534. X    wmove(win, 9, 10);
  535. X    wdelch(win);
  536. X    mvwaddstr(win, 4, 1, "The character should now have been deleted");
  537. X    Continue(win);
  538. X
  539. X    wclear (win);
  540. X    mvwaddstr(win, 2, 1, "Press an arrow key");
  541. X    wrefresh(win);
  542. X    keypad(win, TRUE);
  543. X    raw();
  544. X    c = wgetch(win);
  545. X
  546. X    nodelay(win, TRUE);
  547. X    wgetch(win);
  548. X    nodelay(win, FALSE);
  549. X
  550. X    refresh();
  551. X    wclear (win);
  552. X    mvwaddstr(win, 3, 2, "The window should have moved");
  553. X    mvwaddstr(win, 4, 2, "This text should have appeared without you pressing a key");
  554. X    mvwprintw(win, 2, 2, "Keycode = %d", c);
  555. X    mvwaddstr(win, 6, 2, "Enter a string");
  556. X    mvwin(win, 2, 1);
  557. X    wrefresh(win);
  558. X    mvwscanw(win, 7, 6, "%s", buffer);
  559. X}
  560. X#ifdef PROTO
  561. Xvoid outputTest (WINDOW *win)
  562. X#else
  563. Xvoid outputTest (win)
  564. XWINDOW *win;
  565. X#endif
  566. X{
  567. X    WINDOW *win1;
  568. X    char Buffer [80];
  569. X    chtype ch;
  570. X
  571. X    nl ();
  572. X    wclear (win);
  573. X    mvwaddstr(win, 1, 1, "You should now have a screen in the upper left corner, and this text should have wrapped");
  574. X    Continue(win);
  575. X
  576. X    wclear(win);
  577. X    mvwaddstr(win, 1, 1, "A new window will appear with this text in it");
  578. X    mvwaddstr(win, 8, 1, "Press any key to continue");
  579. X    wrefresh(win);
  580. X    wgetch(win);
  581. X
  582. X    win1 = newwin(10, 50, 15, 25);
  583. X    if(win1 == NULL)
  584. X    {   endwin();
  585. X        return;
  586. X    }
  587. X#ifdef COLOR_CURSES
  588. X    if (has_colors())
  589. X       init_pair(3,COLOR_BLUE,COLOR_WHITE);
  590. X    wattrset(win1, COLOR_PAIR(3));
  591. X#else
  592. X    wattrset(win1, A_NORMAL);
  593. X#endif
  594. X    wclear (win1);
  595. X    mvwaddstr(win1, 5, 1, "This text should not appear");
  596. X    overwrite(win, win1);
  597. X
  598. X    box(win1,0xb3,0xc4);
  599. X    wmove(win1, 8, 26);
  600. X    wrefresh(win1);
  601. X    wgetch(win1);
  602. X
  603. X    wclear(win1);
  604. X    wattron(win1, A_BLINK);
  605. X    mvwaddstr(win1, 4, 1, "This blinking text should appear in only the second window");
  606. X    wattroff(win1, A_BLINK);
  607. X    overlay(win, win1);
  608. X    wmove(win1, 8, 26);
  609. X    wrefresh(win1);
  610. X    wgetch(win1);
  611. X    delwin(win1);
  612. X
  613. X    clear();
  614. X    wclear(win);
  615. X    wrefresh(win);
  616. X    mvwaddstr(win, 6, 2, "This line shouldn't appear");
  617. X    mvwaddstr(win, 4, 2, "Only half of the next line is visible");
  618. X    mvwaddstr(win, 5, 2, "Only half of the next line is visible");
  619. X    wmove(win, 6, 1);
  620. X    wclrtobot (win);
  621. X    wmove(win, 5, 20);
  622. X    wclrtoeol (win);
  623. X    mvwaddstr(win, 8, 2, "This line also shouldn't appear");
  624. X    wmove(win, 8, 1);
  625. X    wdeleteln(win);
  626. X    Continue(win);
  627. X
  628. X    wmove (win, 5, 9);
  629. X    ch = winch (win);
  630. X
  631. X    wclear(win);
  632. X    wmove (win, 6, 2);
  633. X    waddstr (win, "The next char should be l:  ");
  634. X    winsch (win, ch);
  635. X    Continue(win);
  636. X
  637. X    wmove(win, 5, 1);
  638. X    winsertln (win);
  639. X    mvwaddstr(win, 5, 2, "The lines below should have moved down");
  640. X    Continue(win);
  641. X
  642. X    wclear(win);
  643. X    wmove(win, 2, 2);
  644. X    wprintw(win, "This is a formatted string in a window: %d %s\n", 42, "is it");
  645. X    mvwaddstr(win, 10, 1, "Enter a string: ");
  646. X    wrefresh(win);
  647. X    wscanw (win, "%s", Buffer);
  648. X
  649. X    wclear(win);
  650. X    mvwaddstr(win, 10, 1, "Enter a string");
  651. X    wrefresh(win);
  652. X    printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
  653. X    scanw ("%s", Buffer);
  654. X
  655. X    wclear(win);
  656. X    curs_set(2);
  657. X    mvwaddstr(win, 1, 1, "The cursor should appear as a block");
  658. X    Continue(win);
  659. X
  660. X    wclear(win);
  661. X    curs_set(0);
  662. X    mvwaddstr(win, 1, 1, "The cursor should have disappeared");
  663. X    Continue(win);
  664. X
  665. X    wclear(win);
  666. X    curs_set(1);
  667. X    mvwaddstr(win, 1, 1, "The cursor should be an underline");
  668. X    Continue(win);
  669. X}
  670. X
  671. X#ifdef PROTO
  672. Xvoid resizeTest(void)
  673. X#else
  674. Xvoid resizeTest()
  675. X#endif
  676. X{
  677. X    WINDOW *win1;
  678. X    char Buffer [80];
  679. X    chtype ch;
  680. X
  681. X    savetty ();
  682. X
  683. X    clear();
  684. X    refresh();
  685. X    resize(50);
  686. X
  687. X
  688. X    win1 = newwin(11, 50, 14, 25);
  689. X    if(win1 == NULL)
  690. X    {   endwin();
  691. X        return;
  692. X    }
  693. X    init_pair(3,COLOR_BLUE,COLOR_WHITE);
  694. X    wattrset(win1, COLOR_PAIR(3));
  695. X    wclear (win1);
  696. X
  697. X    mvwaddstr(win1, 1, 1, "The screen may now have 50 lines");
  698. X    Continue(win1);
  699. X
  700. X    resetty ();
  701. X
  702. X    wclear (win1);
  703. X    mvwaddstr(win1, 1, 1, "The screen should now be reset");
  704. X    Continue(win1);
  705. X
  706. X    delwin(win1);
  707. X
  708. X    clear();
  709. X    refresh();
  710. X
  711. X}
  712. X#ifdef PROTO
  713. Xvoid padTest(void)
  714. X#else
  715. Xvoid padTest()
  716. X#endif
  717. X{
  718. XWINDOW *pad;
  719. X
  720. X pad = newpad(50,100);
  721. X mvwaddstr(pad, 5, 2, "This is a new pad");
  722. X mvwaddstr(pad, 8, 0, "The end of this line should be truncated here:abcd");
  723. X mvwaddstr(pad,11, 1, "This line should not appear.");
  724. X wmove(pad, 10, 1);
  725. X wclrtoeol(pad);
  726. X mvwaddstr(pad, 10, 1, " Press any key to continue");
  727. X prefresh(pad,0,0,0,0,10,45);
  728. X keypad(pad, TRUE);
  729. X raw();
  730. X wgetch(pad);
  731. X
  732. X mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
  733. X mvwaddstr(pad, 40, 1, " Press any key to continue");
  734. X prefresh(pad,30,0,0,0,10,45);
  735. X keypad(pad, TRUE);
  736. X raw();
  737. X wgetch(pad);
  738. X
  739. X delwin(pad);
  740. X}
  741. X
  742. END_OF_FILE
  743.   if test 9169 -ne `wc -c <'demos/testcurs.c'`; then
  744.     echo shar: \"'demos/testcurs.c'\" unpacked with wrong size!
  745.   fi
  746.   # end of 'demos/testcurs.c'
  747. fi
  748. if test -f 'makefile' -a "${1}" != "-c" ; then 
  749.   echo shar: Will not clobber existing file \"'makefile'\"
  750. else
  751.   echo shar: Extracting \"'makefile'\" \(22856 characters\)
  752.   sed "s/^X//" >'makefile' <<'END_OF_FILE'
  753. X# $Header: c:/curses/RCS/makefile.%v 2.0 1992/11/16 22:40:49 MH Rel $
  754. X#================ PDCurses makefile for DMAKE 3.8 ======================
  755. X# This makefile is for DMAKE, either under DOS or OS/2
  756. X# The fowwoing OS/Compiler combinations are supported:
  757. X#
  758. X# Target       Compiler    Command                Compiler
  759. X# Operating    Mnemoic     Line
  760. X# System                   
  761. X#-----------------------------------------------------------------------
  762. X# DOS            BCC       OS=DOS COMP=BCC        Borland C++
  763. X# DOS            TCC       OS=DOS COMP=TCC        Borland Turbo C++
  764. X# DOS            TC        OS=DOS COMP=TC         Borland Turbo C
  765. X# DOS            MSC       OS=DOS COMP=MSC        Microsoft C
  766. X# DOS            QC        OS=DOS COMP=QC         Microsoft Quick C
  767. X# OS2            MSC       OS=OS2 COMP=MSC        Microsoft C
  768. X# OS2            CSET2     OS=OS2 COMP=CSET2      IBM C Set/2
  769. X# OS2            EMX       OS=OS2 COMP=EMX        emx/gcc
  770. X# OS2            TSC       OS=OS2 COMP=TSC        TopSpeed C
  771. X# OS2            WATCOMC   OS=OS2 COMP=WATCOMC    Watcom C
  772. X#-----------------------------------------------------------------------
  773. X# Special case for Microsoft Compiler when the host OS is DOS and the
  774. X# target OS is OS2:
  775. X# Command line will be OS=DOS COMP=MSC TOS=OS2
  776. X#-----------------------------------------------------------------------
  777. XMODEL = L
  778. Xmodel = l
  779. X#-----------------------------------------------------------------------
  780. X# default setup for BCC under DOS, optimised version
  781. X# change values below or override with -e switch on command line
  782. X#-----------------------------------------------------------------------
  783. XOS=DOS
  784. XCOMP=BCC
  785. XOPT=Y
  786. X#-----------------------------------------------------------------------
  787. X.IF $(TOS) == $(NULL)
  788. X    TOS = $(OS)
  789. X.END
  790. X.IF $(OS) == OS2
  791. X#========================================================================
  792. X#========================= OS2 - CSET2 ==================================
  793. X#========================================================================
  794. X    .IF $(COMP) == CSET2
  795. X        LINK      = link386
  796. X        CC        = icc
  797. X        LIB_EXE   = lib
  798. X        LIB_DIR   = g:\ibmc\lib
  799. X        SETARGV   = $(LIB_DIR)\setargv
  800. X        .IF $(OPT) == N
  801. X            CDEBUG = -Q+ -O- -Ti -I$(CC_INC)
  802. X            LDEBUG = /NOE /SE:160 /PMTYPE:VIO
  803. X            DBG    =d
  804. X        .ELSE
  805. X            CDEBUG  = -Q+ -O+ -DNDEBUG -I$(CC_INC)
  806. X            LDEBUG  = /NOE /SE:160 /PMTYPE:VIO
  807. X            DBG     =o
  808. X        .END
  809. X        OBJ      = obj
  810. X        OBJ_DIR  = o$(DBG)
  811. X        PDCLIB   = curses$(DBG).lib
  812. X        LIBRSP   =,lib.map;
  813. X        CFLAGS   = $(CDEBUG) -Fo$@ -c -I$(CC_INC)
  814. X        MAKE_LIB = $(LIB_EXE) $(PDCLIB) $(LIBFLAGS) @$(LRF)
  815. X        DLFLAGS  = $(LDEBUG) $*.obj,,,$(PDCLIB);
  816. X        UTLFLAGS = $(LDEBUG) $*.obj;
  817. X        MANFLAGS = $(LDEBUG) $*.obj+$(SETARGV);
  818. X#========================================================================
  819. X#========================= OS2 - MSC ====================================
  820. X#========================================================================
  821. X    .ELIF $(COMP) == MSC
  822. X        LINK      = link
  823. X        CC        = cl
  824. X        LIB_EXE   = lib
  825. X        LIB_DIR   = $(LIB)
  826. X        SETARGV   = $(LIB_DIR)\setargv
  827. X        DEFINES   = -D__OS2__
  828. X        .IF $(OPT) == N
  829. X            CDEBUG =-nologo -Od -Zi -A$(MODEL)
  830. X            LDEBUG =/CO /NOE /SE:160 /PMTYPE:VIO
  831. X            DBG    =d
  832. X        .ELSE
  833. X            CDEBUG  =-nologo -Ox -A$(MODEL) -DNDEBUG
  834. X            LDEBUG  = /NOE /SE:160 /PMTYPE:VIO
  835. X            DBG     =o
  836. X        .END
  837. X        OBJ      = obj
  838. X        OBJ_DIR  = o$(DBG)$(MODEL)
  839. X        PDCLIB   = $(MODEL)curses$(DBG).lib
  840. X        LIBRSP   =,lib.map;
  841. X        CFLAGS   = $(CDEBUG) $(DEFINES) -Fo$@ -c -I$(CC_INC)
  842. X        MAKE_LIB = $(LIB_EXE) $(PDCLIB) $(LIBFLAGS) @$(LRF)
  843. X        DLFLAGS  = $(LDEBUG) $*.obj,,,$(PDCLIB);
  844. X        UTLFLAGS  = $(LDEBUG) $*.obj;
  845. X        MANFLAGS = $(LDEBUG) $*.obj+$(SETARGV);
  846. X#========================================================================
  847. X#========================= OS2 - EMX ====================================
  848. X#========================================================================
  849. X    .ELIF $(COMP) == EMX
  850. X        LINK      = $(CC)
  851. X        CC        = gcc
  852. X        LIB_EXE   = ar
  853. X        LIB_DIR   = g:\emx\lib
  854. X        LIBFLAGS  = rcv
  855. X        DEFINES   = -D__OS2__ -D__EMX__
  856. X        .IF $(OPT) == N
  857. X            CDEBUG =-g
  858. X            LDEBUG = -Zomf 
  859. X            DBG    =d
  860. X        .ELSE
  861. X            CDEBUG  =-O -DNDEBUG
  862. X            LDEBUG = -Zomf 
  863. X            DBG     =o
  864. X        .END
  865. X        OBJ      = o
  866. X        OBJ_DIR  = o$(DBG)
  867. X        PDCLIB   = curses$(DBG).lib
  868. X        LIBRSP   =,lib.map;
  869. X        CFLAGS   = $(CDEBUG) $(DEFINES) -o$(@:db).o -c -I$(CC_INC)
  870. X        MAKE_LIB = $(LIB_EXE) $(LIBFLAGS) curses.a $(OBJ_DIR)/*.o
  871. X        EMX_OMF_LIB=emxomf -l -o $(PDCLIB) curses.a
  872. X        EMX_OMF_OBJ=emxomf -d -o $*.obj $*.o
  873. X        DLFLAGS  = $(LDEBUG) -L$(LIB_DIR) -lc -los2 $*.obj $(PDCLIB) $(LIB_DIR)\vio32.lib -o $* $(DEMO_DIR)\$*.def
  874. X        UTLFLAGS = $(LDEBUG) -L$(LIB_DIR) -lc -los2 $*.obj -o $* $(TOOLS_DIR)\$*.def
  875. X        MANFLAGS = $(LDEBUG) -Lg:\emx\lib -lc -los2 $*.obj -o $* $(TOOLS_DIR)\$*.def
  876. X#========================================================================
  877. X#========================= OS2 - TSC ====================================
  878. X#========================================================================
  879. X# If you can fill in the following, please let me know !
  880. X#========================================================================
  881. X    .ELIF $(COMP) == TSC
  882. X        OBJ      = obj
  883. X#========================================================================
  884. X#========================= OS2 - WATCOMC ================================
  885. X#========================================================================
  886. X# If you can fill in the following, please let me know !
  887. X#========================================================================
  888. X    .ELIF $(COMP) == WATCOMC
  889. X        CC       = cc
  890. X        OBJ      = obj
  891. X    .END
  892. X.ELSE
  893. X#========================================================================
  894. X#========================= DOS - BCC ====================================
  895. X#========================================================================
  896. X    .IF $(COMP) == BCC
  897. X        LINK      = tlink
  898. X        CC        = bcc
  899. X        LIB_EXE   = tlib
  900. X        LIB_DIR   = f:\c\lib
  901. X        WILDARGS  = $(LIB_DIR)\wildargs.obj
  902. X        LIB_FLAGS = /C /E
  903. X        CFG       = +$(ROOTDIR)\PDCURSES.CFG
  904. X        DEFINES   = 
  905. X        .IF $(OPT) == N
  906. X            CDEBUG    =-N -v -y
  907. X            LDEBUG    =-c -v -s -l -e
  908. X            DBG    =d
  909. X        .ELSE
  910. X            CDEBUG    = -O -DNDEBUG
  911. X            LDEBUG    =
  912. X            DBG     =o
  913. X        .END
  914. X        OBJ      = obj
  915. X        OBJ_DIR  = o$(DBG)$(model)
  916. X        PDCLIB   = $(model)curses$(DBG).lib
  917. X        LIBRSP   =,lib.map
  918. X        CFLAGS   = $(CFG) $(CDEBUG) $(DEFINES) -m$(model) -I$(CC_INC) -If:\c\include -o$@
  919. X        MAKE_LIB = $(LIB_EXE) $(PDCLIB) $(LIBFLAGS) @$(LRF)
  920. X        DLFLAGS  = $(LDEBUG) $(LIB_DIR)\c0$(model).obj+$*.obj,$*,,$(PDCLIB)+$(LIB_DIR)\c$(model).lib;
  921. X        UTLFLAGS = $(LDEBUG) $(LIB_DIR)\c0$(model).obj+$*.obj,$*,,$(LIB_DIR)\c$(model).lib;
  922. X        MANFLAGS = $(LDEBUG) $(LIB_DIR)\c0$(model).obj+$*.obj+$(WILDARGS),$*,,$(LIB_DIR)\c$(model).lib;
  923. X#========================================================================
  924. X#========================= DOS - TCC ====================================
  925. X#========================================================================
  926. X    .ELIF $(COMP) == TCC
  927. X        LINK      = tlink
  928. X        CC        = tcc
  929. X        LIB_EXE   = tlib
  930. X        LIB_DIR   = f:\c\lib
  931. X        WILDARGS  = $(LIB_DIR)\wildargs.obj
  932. X        LIB_FLAGS = /C /E
  933. X        CFG       = +$(ROOTDIR)\PDCURSES.CFG
  934. X        DEFINES   = 
  935. X        .IF $(OPT) == N
  936. X            CDEBUG    =-N -v -y
  937. X            LDEBUG    =-c -v -s -l -e
  938. X            DBG    =d
  939. X        .ELSE
  940. X            CDEBUG    = -O -DNDEBUG
  941. X            LDEBUG    =
  942. X            DBG     =o
  943. X        .END
  944. X        OBJ      = obj
  945. X        OBJ_DIR  = o$(DBG)$(model)
  946. X        PDCLIB   = $(model)curses$(DBG).lib
  947. X        LIBRSP   =,lib.map
  948. X        CFLAGS   = $(CFG) $(CDEBUG) $(DEFINES) -m$(model) -I$(CC_INC) -If:\c\include -o$@
  949. X        MAKE_LIB = $(LIB_EXE) $(PDCLIB) $(LIBFLAGS) @$(LRF)
  950. X        DLFLAGS  = $(LDEBUG) $(LIB_DIR)\c0$(model).obj+$*.obj,$*,,$(PDCLIB)+$(LIB_DIR)\c$(model).lib;
  951. X        UTLFLAGS = $(LDEBUG) $(LIB_DIR)\c0$(model).obj+$*.obj,$*,,$(LIB_DIR)\c$(model).lib;
  952. X        MANFLAGS = $(LDEBUG) $(LIB_DIR)\c0$(model).obj+$*.obj+$(WILDARGS),$*,,$(LIB_DIR)\c$(model).lib;
  953. X#========================================================================
  954. X#========================= DOS - MSC ====================================
  955. X#========================================================================
  956. X    .ELIF $(COMP) == MSC
  957. X        LINK      = link
  958. X        CC        = cl
  959. X        LIB_EXE   = lib
  960. X        SETARGV   = $(LIB)\setargv
  961. X        .IF $(TOS) == OS2
  962. X            OS2LD     = /PMTYPE:VIO
  963. X            DEFINES   = -D__OS2__
  964. X            OS2LIB    = $(LIB)\os2.lib
  965. X            PLUS      =+
  966. X            RUNBIND   = bind $*
  967. X        .END
  968. X        .IF $(OPT) == N
  969. X            CDEBUG =-nologo -Od -Zi -A$(MODEL)
  970. X            LDEBUG =/CO /NOE /SE:160 $(OS2LD)
  971. X            DBG    =d
  972. X        .ELSE
  973. X            CDEBUG  =-nologo -Ox -A$(MODEL) -DNDEBUG
  974. X            LDEBUG  = /NOE /SE:160 $(OS2LD)
  975. X            DBG     =o
  976. X        .END
  977. X        OBJ      = obj
  978. X        OBJ_DIR  = o$(DBG)$(MODEL)
  979. X        PDCLIB   = $(MODEL)curses$(DBG).lib
  980. X        LIBRSP   =,lib.map;
  981. X        CFLAGS   = $(CDEBUG) $(DEFINES) -Fo$@ -c -I$(CC_INC)
  982. X        MAKE_LIB = $(LIB_EXE) $(PDCLIB) $(LIBFLAGS) @$(LRF)
  983. X        DLFLAGS  = $(LDEBUG) $*.obj,,,$(PDCLIB)$(PLUS)$(OS2LIB);
  984. X        UTLFLAGS = $(LDEBUG) $*.obj,,,$(OS2LIB);
  985. X        MANFLAGS = $(LDEBUG) $*.obj+$(SETARGV),,,$(OS2LIB);
  986. X#========================================================================
  987. X#========================= DOS - QC =====================================
  988. X#========================================================================
  989. X    .ELIF $(COMP) == QC
  990. X        LINK      = link
  991. X        CC        = qcc
  992. X        LIB_EXE   = lib
  993. X        SETARGV   = $(LIB)\setargv
  994. X        .IF $(OPT) == N
  995. X            CDEBUG =-Od -Zi -A$(MODEL)
  996. X            LDEBUG =/CO /NOE /SE:160 
  997. X            DBG    =d
  998. X        .ELSE
  999. X            CDEBUG  =-Ox -A$(MODEL) -DNDEBUG
  1000. X            LDEBUG  = /NOE /SE:160 
  1001. X            DBG     =o
  1002. X        .END
  1003. X        OBJ      = obj
  1004. X        OBJ_DIR  = $(DBG)$(MODEL)
  1005. X        PDCLIB   = $(MODEL)curses$(DBG).lib
  1006. X        LIBRSP   =,lib.map;
  1007. X        CFLAGS   = $(CDEBUG) $(DEFINES) -Fo$@ -c -I$(CC_INC)
  1008. X        MAKE_LIB = $(LIB_EXE) $(PDCLIB) $(LIBFLAGS) @$(LRF)
  1009. X        DLFLAGS  = $(LDEBUG) $*.obj,,,$(PDCLIB);
  1010. X        UTLFLAGS = $(LDEBUG) $*.obj;
  1011. X        MANFLAGS = $(LDEBUG) $*.obj+$(SETARGV);
  1012. X    .END
  1013. X.END
  1014. X#-----------------------------------------------------------------------
  1015. XROOTDIR   = c:\curses
  1016. XCC_INC    = c:/curses
  1017. XPORT_DIR  = $(ROOTDIR)\portable
  1018. XNONP_DIR  = $(ROOTDIR)\nonport
  1019. XPRIV_DIR  = $(ROOTDIR)\private
  1020. XFLEX_DIR  = $(ROOTDIR)\flexos
  1021. XTOOLS_DIR = $(ROOTDIR)\tools
  1022. XDEMO_DIR  = $(ROOTDIR)\demos
  1023. XDOC_DIR   = $(ROOTDIR)\doc
  1024. XLRF       = PDCurses.lrf
  1025. X#######################################################################
  1026. X#<<<<<< Nothing below here should need to be changed >>>>>>>>>>>>>>>>>>
  1027. X#######################################################################
  1028. X#
  1029. X#   Header Files
  1030. X#
  1031. XHEADERS = $(CC_INC)\curses.h $(CC_INC)\curspriv.h $(CC_INC)\cursos2.h
  1032. X
  1033. X#######################################################################
  1034. X########################## First (default) target #####################
  1035. X#######################################################################
  1036. Xall:    $(PDCLIB) demos manual
  1037. X#######################################################################
  1038. X############################ Demo Programs Targets ####################
  1039. X#######################################################################
  1040. Xdemos:  $(PDCLIB) xmas.exe newdemo.exe testcurs.exe firework.exe
  1041. X
  1042. Xnewdemo.exe:    $(PDCLIB) newdemo.obj
  1043. X            $(LINK) $(DLFLAGS)
  1044. X
  1045. Xxmas.exe:       $(PDCLIC) xmas.obj
  1046. X            $(LINK) $(DLFLAGS)
  1047. X
  1048. Xtestcurs.exe:   $(PDCLIB) testcurs.obj
  1049. X            $(LINK) $(DLFLAGS)
  1050. X
  1051. Xfirework.exe:   $(PDCLIB) firework.obj
  1052. X            $(LINK) $(DLFLAGS)
  1053. X
  1054. X
  1055. Xnewdemo.obj:   $(HEADERS) $(DEMO_DIR)\newdemo.c
  1056. X            $(CC) $(CFLAGS) $(DEMO_DIR)\newdemo.c
  1057. X            $(EMX_OMF_OBJ)
  1058. X
  1059. Xxmas.obj:      $(HEADERS)  $(DEMO_DIR)\xmas.c
  1060. X            $(CC) $(CFLAGS) $(DEMO_DIR)\xmas.c
  1061. X            $(EMX_OMF_OBJ)
  1062. X
  1063. Xtestcurs.obj:  $(HEADERS)  $(DEMO_DIR)\testcurs.c
  1064. X            $(CC) $(CFLAGS) $(DEMO_DIR)\testcurs.c
  1065. X            $(EMX_OMF_OBJ)
  1066. X
  1067. Xfirework.obj:  $(HEADERS)  $(DEMO_DIR)\firework.c
  1068. X            $(CC) $(CFLAGS) $(DEMO_DIR)\firework.c
  1069. X            $(EMX_OMF_OBJ)
  1070. X
  1071. X#######################################################################
  1072. X######################### Utility Program  Targets ####################
  1073. X#######################################################################
  1074. X
  1075. Xbuildlrf.exe:   buildlrf.obj
  1076. X            $(LINK) $(UTLFLAGS)
  1077. X            $(RUNBIND)
  1078. X
  1079. Xbuildlrf.obj: $(TOOLS_DIR)\buildlrf.c
  1080. X            $(CC) $(CFLAGS) $(TOOLS_DIR)\buildlrf.c
  1081. X            $(EMX_OMF_OBJ)
  1082. X
  1083. Xmanext.exe:   manext.obj
  1084. X            $(LINK) $(MANFLAGS)
  1085. X            $(RUNBIND)
  1086. X
  1087. Xmanext.obj: $(TOOLS_DIR)\manext.c
  1088. X            $(CC) $(CFLAGS) $(TOOLS_DIR)\manext.c
  1089. X            $(EMX_OMF_OBJ)
  1090. X
  1091. X#######################################################################
  1092. X######################### Library Program  Targets ####################
  1093. X#######################################################################
  1094. X#
  1095. X#       Portable Curses Functions
  1096. X#
  1097. XPORT1 = $(OBJ_DIR)\baudrate.$(OBJ) $(OBJ_DIR)\beep.$(OBJ)     $(OBJ_DIR)\box.$(OBJ)      \
  1098. X        $(OBJ_DIR)\canchang.$(OBJ) $(OBJ_DIR)\cbreak.$(OBJ)   $(OBJ_DIR)\clearok.$(OBJ)  \
  1099. X        $(OBJ_DIR)\colorcon.$(OBJ) $(OBJ_DIR)\def_prog.$(OBJ) $(OBJ_DIR)\def_shel.$(OBJ) \
  1100. X        $(OBJ_DIR)\delay_ou.$(OBJ) $(OBJ_DIR)\delwin.$(OBJ)   $(OBJ_DIR)\doupdate.$(OBJ) \
  1101. X        $(OBJ_DIR)\echo.$(OBJ)     $(OBJ_DIR)\endwin.$(OBJ)   $(OBJ_DIR)\erasecha.$(OBJ) \
  1102. X        $(OBJ_DIR)\fixterm.$(OBJ)  $(OBJ_DIR)\flash.$(OBJ)    $(OBJ_DIR)\flushinp.$(OBJ)
  1103. X
  1104. XPORT2 = $(OBJ_DIR)\gettmode.$(OBJ) $(OBJ_DIR)\getyx.$(OBJ)    $(OBJ_DIR)\has_ic.$(OBJ)   \
  1105. X        $(OBJ_DIR)\has_il.$(OBJ)   $(OBJ_DIR)\hascolor.$(OBJ) $(OBJ_DIR)\idlok.$(OBJ)    \
  1106. X        $(OBJ_DIR)\initcolo.$(OBJ) $(OBJ_DIR)\initpair.$(OBJ) $(OBJ_DIR)\initscr.$(OBJ)  \
  1107. X        $(OBJ_DIR)\intrflus.$(OBJ) $(OBJ_DIR)\keyname.$(OBJ)  $(OBJ_DIR)\keypad.$(OBJ)   \
  1108. X        $(OBJ_DIR)\killchar.$(OBJ) $(OBJ_DIR)\leaveok.$(OBJ)  $(OBJ_DIR)\longname.$(OBJ) \
  1109. X        $(OBJ_DIR)\meta.$(OBJ)     $(OBJ_DIR)\mvcur.$(OBJ)    $(OBJ_DIR)\mvprintw.$(OBJ)
  1110. X
  1111. XPORT3 = $(OBJ_DIR)\mvscanw.$(OBJ)  $(OBJ_DIR)\mvwin.$(OBJ)    $(OBJ_DIR)\mvwprint.$(OBJ) \
  1112. X        $(OBJ_DIR)\mvwscanw.$(OBJ) $(OBJ_DIR)\newpad.$(OBJ)   $(OBJ_DIR)\newterm.$(OBJ)  \
  1113. X        $(OBJ_DIR)\newwin.$(OBJ)   $(OBJ_DIR)\nl.$(OBJ)       $(OBJ_DIR)\nocbreak.$(OBJ) \
  1114. X        $(OBJ_DIR)\nodelay.$(OBJ)  $(OBJ_DIR)\noecho.$(OBJ)   $(OBJ_DIR)\noraw.$(OBJ)    \
  1115. X        $(OBJ_DIR)\overlay.$(OBJ)  $(OBJ_DIR)\overwrit.$(OBJ) $(OBJ_DIR)\paircont.$(OBJ) \
  1116. X        $(OBJ_DIR)\pnoutref.$(OBJ) $(OBJ_DIR)\prefresh.$(OBJ) $(OBJ_DIR)\printw.$(OBJ)
  1117. X
  1118. XPORT4 = $(OBJ_DIR)\raw.$(OBJ)      $(OBJ_DIR)\refresh.$(OBJ)  $(OBJ_DIR)\reset_pr.$(OBJ) \
  1119. X        $(OBJ_DIR)\reset_sh.$(OBJ) $(OBJ_DIR)\resetter.$(OBJ) $(OBJ_DIR)\resetty.$(OBJ)  \
  1120. X        $(OBJ_DIR)\saveoldt.$(OBJ) $(OBJ_DIR)\saveterm.$(OBJ) $(OBJ_DIR)\savetty.$(OBJ)  \
  1121. X        $(OBJ_DIR)\scanw.$(OBJ)    $(OBJ_DIR)\scroll.$(OBJ)   $(OBJ_DIR)\scrollok.$(OBJ) \
  1122. X        $(OBJ_DIR)\set_term.$(OBJ) $(OBJ_DIR)\setscrrg.$(OBJ) $(OBJ_DIR)\standend.$(OBJ) \
  1123. X        $(OBJ_DIR)\standout.$(OBJ) $(OBJ_DIR)\startcol.$(OBJ) $(OBJ_DIR)\subwin.$(OBJ)
  1124. X
  1125. XPORT5 = $(OBJ_DIR)\touchlin.$(OBJ) $(OBJ_DIR)\touchwin.$(OBJ) $(OBJ_DIR)\typeahea.$(OBJ) \
  1126. X        $(OBJ_DIR)\unctrl.$(OBJ)   $(OBJ_DIR)\ungetch.$(OBJ)  $(OBJ_DIR)\waddch.$(OBJ)   \
  1127. X        $(OBJ_DIR)\waddstr.$(OBJ)  $(OBJ_DIR)\wattroff.$(OBJ) $(OBJ_DIR)\wattron.$(OBJ)  \
  1128. X        $(OBJ_DIR)\wattrset.$(OBJ) $(OBJ_DIR)\wclear.$(OBJ)   $(OBJ_DIR)\wclrtobo.$(OBJ) \
  1129. X        $(OBJ_DIR)\wclrtoeo.$(OBJ) $(OBJ_DIR)\wdelch.$(OBJ)   $(OBJ_DIR)\wdeletel.$(OBJ) \
  1130. X        $(OBJ_DIR)\werase.$(OBJ)   $(OBJ_DIR)\wgetch.$(OBJ)   $(OBJ_DIR)\wgetstr.$(OBJ)
  1131. X
  1132. XPORT6 = $(OBJ_DIR)\winch.$(OBJ)    $(OBJ_DIR)\winsch.$(OBJ)   $(OBJ_DIR)\winsertl.$(OBJ) \
  1133. X        $(OBJ_DIR)\wmove.$(OBJ)    $(OBJ_DIR)\wnoutref.$(OBJ) $(OBJ_DIR)\wprintw.$(OBJ)  \
  1134. X        $(OBJ_DIR)\wrefresh.$(OBJ) $(OBJ_DIR)\wscanw.$(OBJ)   $(OBJ_DIR)\wsetscrr.$(OBJ) \
  1135. X        $(OBJ_DIR)\wstanden.$(OBJ) $(OBJ_DIR)\wstandou.$(OBJ) $(OBJ_DIR)\curs_set.$(OBJ)
  1136. X
  1137. XPORTABLE = $(PORT1) $(PORT2) $(PORT3) $(PORT4) $(PORT5) $(PORT6)
  1138. X
  1139. X#
  1140. X#               Non-portable PDCurses Functions
  1141. X#
  1142. XNONPORT = $(OBJ_DIR)\border.$(OBJ)   $(OBJ_DIR)\breakcha.$(OBJ) $(OBJ_DIR)\cursoff.$(OBJ)  \
  1143. X          $(OBJ_DIR)\curson.$(OBJ)   $(OBJ_DIR)\mvwinser.$(OBJ) $(OBJ_DIR)\rawout.$(OBJ)   \
  1144. X          $(OBJ_DIR)\resize.$(OBJ)   $(OBJ_DIR)\resizew.$(OBJ)  $(OBJ_DIR)\tabsize.$(OBJ)  \
  1145. X          $(OBJ_DIR)\waddraws.$(OBJ) $(OBJ_DIR)\wborder.$(OBJ)  $(OBJ_DIR)\wbox.$(OBJ)     \
  1146. X          $(OBJ_DIR)\winprint.$(OBJ) $(OBJ_DIR)\wordchar.$(OBJ) $(OBJ_DIR)\wtabsize.$(OBJ)
  1147. X
  1148. X#
  1149. X#               Private (Internal) PDCurses Functions
  1150. X#
  1151. XPRIV1 = $(OBJ_DIR)\_addtail.$(OBJ) $(OBJ_DIR)\_addwin.$(OBJ)  $(OBJ_DIR)\_backchr.$(OBJ) \
  1152. X        $(OBJ_DIR)\_cattr.$(OBJ)   $(OBJ_DIR)\_chadd.$(OBJ)   $(OBJ_DIR)\_chgattr.$(OBJ) \
  1153. X        $(OBJ_DIR)\_chins.$(OBJ)   $(OBJ_DIR)\_ckbiosk.$(OBJ) $(OBJ_DIR)\_clrscr.$(OBJ)  \
  1154. X        $(OBJ_DIR)\_clrupda.$(OBJ) $(OBJ_DIR)\_findwin.$(OBJ) $(OBJ_DIR)\_fixcurs.$(OBJ)
  1155. X
  1156. XPRIV2 = $(OBJ_DIR)\_gbiosky.$(OBJ) $(OBJ_DIR)\_gcrspos.$(OBJ) $(OBJ_DIR)\_gcurcol.$(OBJ) \
  1157. X        $(OBJ_DIR)\_gcurrow.$(OBJ) $(OBJ_DIR)\_getattr.$(OBJ) $(OBJ_DIR)\_getcbrk.$(OBJ) \
  1158. X        $(OBJ_DIR)\_getcols.$(OBJ) $(OBJ_DIR)\_getcrsr.$(OBJ) $(OBJ_DIR)\_getfont.$(OBJ) \
  1159. X        $(OBJ_DIR)\_getrows.$(OBJ) $(OBJ_DIR)\_getscrn.$(OBJ) $(OBJ_DIR)\_gotoxy.$(OBJ)
  1160. X
  1161. XPRIV3 = $(OBJ_DIR)\_inswin.$(OBJ)  $(OBJ_DIR)\_makenew.$(OBJ) $(OBJ_DIR)\_newline.$(OBJ) \
  1162. X        $(OBJ_DIR)\_print.$(OBJ)   $(OBJ_DIR)\_putc.$(OBJ)    $(OBJ_DIR)\_putctty.$(OBJ) \
  1163. X        $(OBJ_DIR)\_queryad.$(OBJ) $(OBJ_DIR)\_rawgetc.$(OBJ) $(OBJ_DIR)\_rmwin.$(OBJ)   \
  1164. X        $(OBJ_DIR)\_sanity.$(OBJ)  $(OBJ_DIR)\_scb.$(OBJ)     $(OBJ_DIR)\_scrclos.$(OBJ)
  1165. X
  1166. XPRIV4 = $(OBJ_DIR)\_scrnmod.$(OBJ) $(OBJ_DIR)\_scroll.$(OBJ)  $(OBJ_DIR)\_scropen.$(OBJ) \
  1167. X        $(OBJ_DIR)\_set8025.$(OBJ) $(OBJ_DIR)\_setcrsr.$(OBJ) $(OBJ_DIR)\_setfont.$(OBJ) \
  1168. X        $(OBJ_DIR)\_setrows.$(OBJ) $(OBJ_DIR)\_setscrn.$(OBJ) $(OBJ_DIR)\_sgetnl.$(OBJ)  \
  1169. X        $(OBJ_DIR)\_splitpl.$(OBJ) $(OBJ_DIR)\_sysgetc.$(OBJ) $(OBJ_DIR)\_validch.$(OBJ) \
  1170. X        $(OBJ_DIR)\_xfrmlin.$(OBJ) $(OBJ_DIR)\_vsscanf.$(OBJ)
  1171. X
  1172. XPRIVATE = $(PRIV1) $(PRIV2) $(PRIV3) $(PRIV4)
  1173. X
  1174. X#
  1175. X#       PDCurses function specific to the FlexOS Operating System
  1176. X#
  1177. X#FLEXOS = $(OBJ_DIR)\_16bitmo.$(OBJ) $(OBJ_DIR)\_8bitmod.$(OBJ) $(OBJ_DIR)\_gname.$(OBJ)
  1178. X
  1179. X
  1180. X$(PDCLIB): buildlrf.exe $(HEADERS) $(PORTABLE) $(NONPORT) $(PRIVATE)
  1181. X            +echo $(LIBRSP) >> $(LRF)
  1182. X            $(MAKE_LIB)
  1183. X            $(EMX_OMF_LIB)
  1184. X            +if exist $(LRF) del $(LRF)
  1185. X
  1186. X#
  1187. X#       Refresh library response file and build library
  1188. X#
  1189. Xlib:    $(PDCLIB)
  1190. X            +if exist $(PDCLIB) del $(PDCLIB)
  1191. X            +if exist $(LRF) del $(LRF)
  1192. X            +for %%f in ($(OBJ_DIR)\*.obj) do buildlrf +%%f $(LRF)
  1193. X            +echo $(LIBRSP) >> $(LRF)
  1194. X            $(MAKE_LIB)
  1195. X            $(EMX_OMF_LIB)
  1196. X            +if exist $(LRF) del $(LRF)
  1197. X
  1198. X#
  1199. X#       Object Module Targets
  1200. X#
  1201. XADDLRF =buildlrf -+$@ $(LRF)
  1202. X
  1203. X# PORTABLE
  1204. X$(OBJ_DIR)\%.$(OBJ): $(PORT_DIR)/%.c 
  1205. X              +-mkdir $(OBJ_DIR)
  1206. X              $(CC) $(CFLAGS) $<
  1207. X              -$(ADDLRF)
  1208. X
  1209. X# NONPORT
  1210. X
  1211. X$(OBJ_DIR)\%.$(OBJ): $(NONP_DIR)/%.c 
  1212. X              +-mkdir $(OBJ_DIR)
  1213. X                $(CC) $(CFLAGS) $<
  1214. X                -$(ADDLRF)
  1215. X
  1216. X# PRIVATE
  1217. X
  1218. X$(OBJ_DIR)\%.$(OBJ): $(PRIV_DIR)/%.c 
  1219. X              +-mkdir $(OBJ_DIR)
  1220. X              $(CC) $(CFLAGS) $<
  1221. X              -$(ADDLRF)
  1222. X
  1223. X
  1224. X# FLEXOS
  1225. X
  1226. X#$(OBJ_DIR)\%.$(OBJ): $(FLEX_DIR)/%.c
  1227. X#              +-mkdir $(OBJ_DIR)
  1228. X#              $(CC) $(CFLAGS) $<
  1229. X#              -$(ADDLRF)
  1230. X
  1231. X#######################################################################
  1232. X######################### Documentation Targets #######################
  1233. X#######################################################################
  1234. X
  1235. Xmanual:        $(DOC_DIR)\intro.man    $(DOC_DIR)\overview.man    $(DOC_DIR)\todo.man manext.exe
  1236. X    manext $(DOC_DIR)\intro.man             > PDCurses.man
  1237. X    manext $(DOC_DIR)\overview.man             >> PDCurses.man
  1238. X    +echo .......=================================== >> PDCurses.man
  1239. X    +echo .......PDCurses Definitions and Variables:    >> PDCurses.man
  1240. X    +echo .......=================================== >> PDCurses.man
  1241. X    manext $(CC_INC)\curses.h $(FFLAGS)    >> PDCurses.man
  1242. X    +echo .......============================ >> PDCurses.man
  1243. X    +echo .......Portable PDCurses Functions:        >> PDCurses.man
  1244. X    +echo .......============================ >> PDCurses.man
  1245. X    manext $(ROOTDIR)\portable\*.c >> PDCurses.man
  1246. X    +echo .......================================ >> PDCurses.man
  1247. X    +echo .......Non-portable PDCurses Functions:        >> PDCurses.man
  1248. X    +echo .......================================ >> PDCurses.man
  1249. X    manext $(ROOTDIR)\nonport\*.c >> PDCurses.man
  1250. X    +echo .......============================ >> PDCurses.man
  1251. X    +echo .......Internal PDCurses Functions:        >> PDCurses.man
  1252. X    +echo .......============================ >> PDCurses.man
  1253. X    manext $(ROOTDIR)\private\*.c >> PDCurses.man
  1254. X    +echo .......========================== >> PDCurses.man
  1255. X    +echo .......PDCurses Flexos Functions:        >> PDCurses.man
  1256. X    +echo .......========================== >> PDCurses.man
  1257. X    manext $(ROOTDIR)\flexos\*.c >> PDCurses.man
  1258. X    +echo .......======================== >> PDCurses.man
  1259. X    +echo .......Functions not supported:        >> PDCurses.man
  1260. X    +echo .......======================== >> PDCurses.man
  1261. X    manext $(DOC_DIR)\todo.man             >> PDCurses.man
  1262. X
  1263. X#######################################################################
  1264. X######################### Maintenance Targets #########################
  1265. X#######################################################################
  1266. Xclean:
  1267. X    +del PDCurses.ar? > NUL:
  1268. X    +del $(OBJ_DIR)\*.obj
  1269. X
  1270. Xzoo:
  1271. X    zoo a pdcurs20 $(ROOTDIR)\readme $(ROOTDIR)\makefile $(HEADERS)
  1272. X    zoo a pdcurs20 $(DOC_DIR)\*.man
  1273. X    zoo a pdcurs20 $(PORT_DIR)\*.c $(NONP_DIR)\*.c $(PRIV_DIR)\*.c
  1274. X    zoo a pdcurs20 $(FLEX_DIR)\*.c $(DEMO_DIR)\*.c $(DEMO_DIR)\*.def
  1275. X    zoo a pdcurs20 $(TOOLS_DIR)\*.c $(TOOLS_DIR)\*.def $(ROOTDIR)\pdcurses.cfg
  1276. X
  1277. Xzip:
  1278. X    zip pdcurs20 $(ROOTDIR)\readme $(ROOTDIR)\makefile $(HEADERS) 
  1279. X    zip pdcurs20 $(DOC_DIR)\*.man
  1280. X    zip pdcurs20 $(PORT_DIR)\*.c $(NONP_DIR)\*.c $(PRIV_DIR)\*.c
  1281. X    zip pdcurs20 $(FLEX_DIR)\*.c $(DEMO_DIR)\*.c $(DEMO_DIR)\*.def
  1282. X    zip pdcurs20 $(TOOLS_DIR)\*.c $(TOOLS_DIR)\*.def $(ROOTDIR)\pdcurses.cfg
  1283. END_OF_FILE
  1284.   if test 22856 -ne `wc -c <'makefile'`; then
  1285.     echo shar: \"'makefile'\" unpacked with wrong size!
  1286.   fi
  1287.   # end of 'makefile'
  1288. fi
  1289. if test -f 'private/_setrows.c' -a "${1}" != "-c" ; then 
  1290.   echo shar: Will not clobber existing file \"'private/_setrows.c'\"
  1291. else
  1292.   echo shar: Extracting \"'private/_setrows.c'\" \(2085 characters\)
  1293.   sed "s/^X//" >'private/_setrows.c' <<'END_OF_FILE'
  1294. X#define    CURSES_LIBRARY    1
  1295. X#include <curses.h>
  1296. X
  1297. X#ifndef NDEBUG
  1298. Xchar *rcsid__setrows = "$Header: c:/curses/private/RCS/_setrows.c%v 2.0 1992/11/15 03:24:37 MH Rel $";
  1299. X#endif
  1300. X
  1301. X
  1302. X
  1303. X
  1304. X/*man-start*********************************************************************
  1305. X
  1306. X  PDC_set_rows()    - sets the physical number of rows on screen
  1307. X
  1308. X  PDCurses Description:
  1309. X     This is a private PDCurses function.
  1310. X
  1311. X     This routine attempts to set the number of rows on the physical
  1312. X     screen to the passed value.
  1313. X
  1314. X  PDCurses Return Value:
  1315. X     This function returns OK upon success otherwise ERR is returned.
  1316. X
  1317. X  PDCurses Errors:
  1318. X     It is an error to attempt to change the screen size on a "bogus"
  1319. X     adapter.  The reason for this is that we have a known video
  1320. X     adapter identity problem.  e.g. Two adapters report the same
  1321. X     identifying characteristics.
  1322. X
  1323. X     It is also an error to attempt to change the size of the Flexos
  1324. X     console (as there is currently no support for that).
  1325. X
  1326. X  Portability:
  1327. X     PDCurses    int    PDC_set_rows( int rows );
  1328. X
  1329. X**man-end**********************************************************************/
  1330. X
  1331. Xint    PDC_set_rows(int rows)
  1332. X{
  1333. X#ifdef    FLEXOS
  1334. X    return( ERR );
  1335. X#endif
  1336. X#ifdef    DOS
  1337. X    if (_cursvar.bogus_adapter)
  1338. X        return( ERR );
  1339. X
  1340. X    switch (_cursvar.adapter)
  1341. X    {
  1342. X    case _EGACOLOR:
  1343. X    case _EGAMONO:
  1344. X        if (rows < 43)
  1345. X            PDC_set_font(_FONT14);
  1346. X        else
  1347. X            PDC_set_font(_FONT8);
  1348. X        break;
  1349. X
  1350. X    case _VGACOLOR:
  1351. X    case _VGAMONO:
  1352. X        if (rows < 28)
  1353. X            PDC_set_font(_FONT16);
  1354. X        else
  1355. X        if (rows < 50)
  1356. X            PDC_set_font(_FONT14);
  1357. X        else
  1358. X            PDC_set_font(_FONT8);
  1359. X        break;
  1360. X
  1361. X    case _MCGACOLOR:
  1362. X    case _MCGAMONO:
  1363. X    case _MDA:
  1364. X    case _CGA:
  1365. X    case _MDS_GENIUS:
  1366. X    default:
  1367. X        break;
  1368. X    }
  1369. X    _cursvar.font = PDC_get_font();
  1370. X    LINES = PDC_get_rows();
  1371. X    COLS = PDC_get_columns();
  1372. X    return( OK );
  1373. X#endif
  1374. X#ifdef    OS2
  1375. X    VIOMODEINFO modeInfo;
  1376. X    USHORT result;
  1377. X
  1378. X    modeInfo.cb = sizeof(modeInfo);
  1379. X    /* set most parameters of modeInfo */
  1380. X    VioGetMode(&modeInfo, 0);
  1381. X    modeInfo.fbType = 1;
  1382. X    modeInfo.row = rows;
  1383. X    result = VioSetMode(&modeInfo, 0);
  1384. X    _cursvar.font = PDC_get_font();
  1385. X    LINES = PDC_get_rows();
  1386. X    COLS = PDC_get_columns();
  1387. X    return ((result == 0) ? OK : ERR);
  1388. X#endif
  1389. X}
  1390. END_OF_FILE
  1391.   if test 2085 -ne `wc -c <'private/_setrows.c'`; then
  1392.     echo shar: \"'private/_setrows.c'\" unpacked with wrong size!
  1393.   fi
  1394.   # end of 'private/_setrows.c'
  1395. fi
  1396. if test -f 'private/_validch.c' -a "${1}" != "-c" ; then 
  1397.   echo shar: Will not clobber existing file \"'private/_validch.c'\"
  1398. else
  1399.   echo shar: Extracting \"'private/_validch.c'\" \(8570 characters\)
  1400.   sed "s/^X//" >'private/_validch.c' <<'END_OF_FILE'
  1401. X#define    CURSES_LIBRARY    1
  1402. X#include <curses.h>
  1403. X
  1404. X#ifndef    NDEBUG
  1405. Xchar *rcsid__validch = "$Header: c:/curses/private/RCS/_validch.c%v 2.0 1992/11/15 03:24:39 MH Rel $";
  1406. X#endif
  1407. X
  1408. X
  1409. X
  1410. X/*man-start*********************************************************************
  1411. X
  1412. X*    Table for key code translation of function keys in keypad mode
  1413. X*    These values are for strict IBM keyboard compatibles only
  1414. X**man-end**********************************************************************/
  1415. X
  1416. X
  1417. X#if    defined (DOS) || defined (OS2)
  1418. Xstatic chtype kptab[] =
  1419. X{
  1420. X /* Normal Function Keys     */
  1421. X 0x3b, KEY_F(1), 0x3c, KEY_F(2), 0x3d, KEY_F(3), 0x3e, KEY_F(4),
  1422. X 0x3f, KEY_F(5), 0x40, KEY_F(6), 0x41, KEY_F(7), 0x42, KEY_F(8),
  1423. X 0x43, KEY_F(9), 0x44, KEY_F(10),
  1424. X
  1425. X /* Normal Keypad         */
  1426. X 0x47, KEY_HOME, 0x48, KEY_UP,   0x49, KEY_PPAGE,
  1427. X 0x4b, KEY_LEFT, 0x4c, KEY_B2,   0x4d, KEY_RIGHT,
  1428. X 0x4f, KEY_END,  0x50, KEY_DOWN, 0x51, KEY_NPAGE,
  1429. X 0x52, KEY_IC,   0x53, KEY_DC,
  1430. X
  1431. X /* Shft-Function Keys     */
  1432. X 0x54, KEY_F(11), 0x55, KEY_F(12), 0x56, KEY_F(13), 0x57, KEY_F(14),
  1433. X 0x58, KEY_F(15), 0x59, KEY_F(16), 0x5a, KEY_F(17), 0x5b, KEY_F(18),
  1434. X 0x5c, KEY_F(19), 0x5d, KEY_F(20),
  1435. X
  1436. X /* Ctl-Function Keys     */
  1437. X 0x5e, KEY_F(21), 0x5f, KEY_F(22), 0x60, KEY_F(23), 0x61, KEY_F(24),
  1438. X 0x62, KEY_F(25), 0x63, KEY_F(26), 0x64, KEY_F(27), 0x65, KEY_F(28),
  1439. X 0x66, KEY_F(29), 0x67, KEY_F(30),
  1440. X
  1441. X /* Alt-Function Keys     */
  1442. X 0x68, KEY_F(31), 0x69, KEY_F(32), 0x6a, KEY_F(33), 0x6b, KEY_F(34),
  1443. X 0x6c, KEY_F(35), 0x6d, KEY_F(36), 0x6e, KEY_F(37), 0x6f, KEY_F(38),
  1444. X 0x70, KEY_F(39), 0x71, KEY_F(40),
  1445. X
  1446. X /* Control-Keypad         */
  1447. X 0x77, CTL_HOME, 0x84, CTL_PGUP,
  1448. X 0x73, CTL_LEFT, 0x74, CTL_RIGHT,
  1449. X 0x75, CTL_END, 0x76, CTL_PGDN,
  1450. X
  1451. X /* Alt-Numbers         */
  1452. X 0x78, ALT_1, 0x79, ALT_2, 0x7a, ALT_3, 0x7b, ALT_4,
  1453. X 0x7c, ALT_5, 0x7d, ALT_6, 0x7e, ALT_7, 0x7f, ALT_8,
  1454. X 0x80, ALT_9, 0x81, ALT_0,
  1455. X
  1456. X /* Extended codes         */
  1457. X 0x85, KEY_F(41), 0x86, KEY_F(42), 0x87, KEY_F(43), 0x88, KEY_F(44),
  1458. X 0x89, KEY_F(45), 0x8a, KEY_F(46), 0x8b, KEY_F(47), 0x8c, KEY_F(48),
  1459. X 0x03, 0, /* NULL */
  1460. X 0xff, PADSLASH,     0x0d, PADENTER,      0x0a, CTL_PADENTER,
  1461. X 0xa6, ALT_PADENTER, 0x53, SHF_PADSTOP,   0xfc, CTL_ENTER,
  1462. X 0xfa, PADSTAR,      0xfd, PADMINUS,      0xfb, PADPLUS,
  1463. X 0x93, CTL_PADSTOP,  0x8f, CTL_PADCENTER, 0x90, CTL_PADPLUS,
  1464. X 0x8e, CTL_PADMINUS, 0x95, CTL_PADSLASH,  0x96, CTL_PADSTAR,
  1465. X 0x4e, ALT_PADPLUS,  0x4a, ALT_PADMINUS,  0xa4, ALT_PADSLASH,
  1466. X 0x37, ALT_PADSTAR,  0x92, CTL_INS,       0xa2, ALT_INS,
  1467. X 0xa3, ALT_DEL,      0x8d, CTL_UP,        0x91, CTL_DOWN,
  1468. X 0x94, CTL_TAB,      0xa5, ALT_TAB,       0x82, ALT_MINUS,
  1469. X 0x83, ALT_EQUAL,    0x99, ALT_PGUP,      0xa1, ALT_PGDN,
  1470. X 0x9f, ALT_END,      0x98, ALT_UP,        0xa0, ALT_DOWN,
  1471. X 0x9d, ALT_RIGHT,    0x9b, ALT_LEFT,      0x1c, ALT_ENTER,
  1472. X 0x97, ALT_HOME,     0x01, ALT_ESC,       0x0e, ALT_BKSP,
  1473. X 0x29, ALT_BQUOTE,   0x1a, ALT_LBRACKET,  0x1b, ALT_RBRACKET,
  1474. X 0x27, ALT_SEMICOLON,0x28, ALT_FQUOTE,    0x33, ALT_COMMA,
  1475. X 0x34, ALT_STOP,     0x35, ALT_FSLASH,    0x2b, ALT_BSLASH,
  1476. X
  1477. X /* Alt-Alphabet         */
  1478. X 0x1e, ALT_A, 0x30, ALT_B, 0x2e, ALT_C, 0x20, ALT_D,
  1479. X 0x12, ALT_E, 0x21, ALT_F, 0x22, ALT_G, 0x23, ALT_H,
  1480. X 0x17, ALT_I, 0x24, ALT_J, 0x25, ALT_K, 0x26, ALT_L,
  1481. X 0x32, ALT_M, 0x31, ALT_N, 0x18, ALT_O, 0x19, ALT_P,
  1482. X 0x10, ALT_Q, 0x13, ALT_R, 0x1f, ALT_S, 0x14, ALT_T,
  1483. X 0x16, ALT_U, 0x2f, ALT_V, 0x11, ALT_W, 0x2d, ALT_X,
  1484. X 0x15, ALT_Y, 0x2c, ALT_Z,
  1485. X
  1486. X 0x0f, KEY_BACKTAB,
  1487. X
  1488. X /* End of kptab[]         */
  1489. X 0x100, -1
  1490. X};
  1491. X#endif
  1492. X
  1493. X
  1494. X
  1495. X
  1496. X#ifdef    FLEXOS
  1497. Xchtype    kptab[] =
  1498. X{
  1499. X /* Normal Function Keys     */
  1500. X 0x1001, KEY_F(1), 0x1002, KEY_F(2), 0x1003, KEY_F(3), 0x1004, KEY_F(4),
  1501. X 0x1005, KEY_F(5), 0x1006, KEY_F(6), 0x1007, KEY_F(7), 0x1008, KEY_F(8),
  1502. X 0x1009, KEY_F(9), 0x100A, KEY_F(10),
  1503. X
  1504. X /* Normal Keypad         */
  1505. X 0x2018, KEY_HOME, 0x2010, KEY_UP, 0x2014, KEY_PPAGE,
  1506. X 0x2012, KEY_LEFT, 0x2035, KEY_B2, 0x2013, KEY_RIGHT,
  1507. X 0x2008, KEY_LL, 0x2011, KEY_DOWN, 0x2015, KEY_NPAGE,
  1508. X 0x2009, KEY_IC, 0x200A, KEY_DC,
  1509. X
  1510. X /* Shft-Function Keys     */
  1511. X 0x1401, KEY_F(11), 0x1402, KEY_F(12), 0x1403, KEY_F(13), 0x1404, KEY_F(14),
  1512. X 0x1405, KEY_F(15), 0x1406, KEY_F(16), 0x1407, KEY_F(17), 0x1408, KEY_F(18),
  1513. X 0x1409, KEY_F(19), 0x140A, KEY_F(20),
  1514. X
  1515. X /* Ctl-Function Keys     */
  1516. X 0x1101, KEY_F(21), 0x1102, KEY_F(22), 0x1103, KEY_F(23), 0x1104, KEY_F(24),
  1517. X 0x1105, KEY_F(25), 0x1106, KEY_F(26), 0x1107, KEY_F(27), 0x1108, KEY_F(28),
  1518. X 0x1109, KEY_F(29), 0x110A, KEY_F(30),
  1519. X
  1520. X /* Alt-Function Keys     */
  1521. X 0x1201, KEY_F(31), 0x1202, KEY_F(32), 0x1203, KEY_F(33), 0x1204, KEY_F(34),
  1522. X 0x1205, KEY_F(35), 0x1206, KEY_F(36), 0x1207, KEY_F(37), 0x1208, KEY_F(38),
  1523. X 0x1209, KEY_F(39), 0x120A, KEY_F(40),
  1524. X
  1525. X /* Control-Keypad         */
  1526. X 0x2118, CTL_HOME, 0x2114, CTL_PGUP,
  1527. X 0x2112, CTL_LEFT, 0x2113, CTL_RIGHT,
  1528. X 0x2108, CTL_END, 0x2115, CTL_PGDN,
  1529. X
  1530. X /* Alt-Numbers         */
  1531. X 0x2231, ALT_1, 0x2232, ALT_2, 0x2233, ALT_3, 0x2234, ALT_4,
  1532. X 0x2235, ALT_5, 0x2236, ALT_6, 0x2237, ALT_7, 0x2238, ALT_8,
  1533. X 0x2239, ALT_9, 0x2230, ALT_0,
  1534. X
  1535. X /* Alt-Alphabet         */
  1536. X 0x0200 | (unsigned) 'A', ALT_A, 0x0200 | (unsigned) 'B', ALT_B,
  1537. X 0x0200 | (unsigned) 'C', ALT_C, 0x0200 | (unsigned) 'D', ALT_D,
  1538. X 0x0200 | (unsigned) 'E', ALT_E, 0x0200 | (unsigned) 'F', ALT_F,
  1539. X 0x0200 | (unsigned) 'G', ALT_G, 0x0200 | (unsigned) 'H', ALT_H,
  1540. X 0x0200 | (unsigned) 'I', ALT_I, 0x0200 | (unsigned) 'J', ALT_J,
  1541. X 0x0200 | (unsigned) 'K', ALT_K, 0x0200 | (unsigned) 'L', ALT_L,
  1542. X 0x0200 | (unsigned) 'M', ALT_M, 0x0200 | (unsigned) 'N', ALT_N,
  1543. X 0x0200 | (unsigned) 'O', ALT_O, 0x0200 | (unsigned) 'P', ALT_P,
  1544. X 0x0200 | (unsigned) 'Q', ALT_Q, 0x0200 | (unsigned) 'R', ALT_R,
  1545. X 0x0200 | (unsigned) 'S', ALT_S, 0x0200 | (unsigned) 'T', ALT_T,
  1546. X 0x0200 | (unsigned) 'U', ALT_U, 0x0200 | (unsigned) 'V', ALT_V,
  1547. X 0x0200 | (unsigned) 'W', ALT_W, 0x0200 | (unsigned) 'X', ALT_X,
  1548. X 0x0200 | (unsigned) 'Y', ALT_Y, 0x0200 | (unsigned) 'Z', ALT_Z,
  1549. X
  1550. X 0x0200 | (unsigned) 'a', ALT_A, 0x0200 | (unsigned) 'b', ALT_B,
  1551. X 0x0200 | (unsigned) 'c', ALT_C, 0x0200 | (unsigned) 'd', ALT_D,
  1552. X 0x0200 | (unsigned) 'e', ALT_E, 0x0200 | (unsigned) 'f', ALT_F,
  1553. X 0x0200 | (unsigned) 'g', ALT_G, 0x0200 | (unsigned) 'h', ALT_H,
  1554. X 0x0200 | (unsigned) 'i', ALT_I, 0x0200 | (unsigned) 'j', ALT_J,
  1555. X 0x0200 | (unsigned) 'k', ALT_K, 0x0200 | (unsigned) 'l', ALT_L,
  1556. X 0x0200 | (unsigned) 'm', ALT_M, 0x0200 | (unsigned) 'n', ALT_N,
  1557. X 0x0200 | (unsigned) 'o', ALT_O, 0x0200 | (unsigned) 'p', ALT_P,
  1558. X 0x0200 | (unsigned) 'q', ALT_Q, 0x0200 | (unsigned) 'r', ALT_R,
  1559. X 0x0200 | (unsigned) 's', ALT_S, 0x0200 | (unsigned) 't', ALT_T,
  1560. X 0x0200 | (unsigned) 'u', ALT_U, 0x0200 | (unsigned) 'v', ALT_V,
  1561. X 0x0200 | (unsigned) 'w', ALT_W, 0x0200 | (unsigned) 'x', ALT_X,
  1562. X 0x0200 | (unsigned) 'y', ALT_Y, 0x0200 | (unsigned) 'z', ALT_Z,
  1563. X
  1564. X 0x0f, KEY_BACKTAB,
  1565. X
  1566. X /* End of kptab[]         */
  1567. X 0x100, -1
  1568. X};
  1569. X#endif
  1570. X
  1571. X
  1572. X
  1573. X
  1574. X/*----------------------------------------------------------------------
  1575. X$ PDC_validchar()    - validate/translate passed character
  1576. X$
  1577. X$ PDCurses Description:
  1578. X$    This is a private PDCurses function.
  1579. X$
  1580. X$    Checks that 'c' is a valid character, and if so returns it,
  1581. X$    with function key translation applied if 'w' has keypad mode
  1582. X$    set.  If char is invalid, returns -1.
  1583. X$
  1584. X$ PDCurses Return Value:
  1585. X$    This function returns -1 if the passed character is invalid, or
  1586. X$    the WINDOW* 'w' is NULL, or 'w's keypad is not active.
  1587. X$
  1588. X$    This function returns 0 under Flexos if the passed character
  1589. X$    is 0x0300.  (-:Forget why.  --Frotz    911130:-)
  1590. X$
  1591. X$    Otherwise, this function returns the PDCurses equivalent of the
  1592. X$    passed character.  See the function key and key macros in
  1593. X$    <curses.h>
  1594. X$
  1595. X$ PDCurses Errors:
  1596. X$    There are no errors defined for this routine.
  1597. X$
  1598. X$ Portability:
  1599. X$    PDCurses    chtype    PDC_validchar( chtype c );
  1600. X$
  1601. X$----------------------------------------------------------------------
  1602. X*/
  1603. Xchtype    PDC_validchar(chtype c)
  1604. X{
  1605. Xextern    WINDOW*    _getch_win_;
  1606. X/* extern    WINDOW*    w;*/   /* w defined in wgetch() as static - _getch_win_ */
  1607. X                        /* is the same window - all references to w changed*/
  1608. X                        /* to _getch_win_ - marked with @@ */
  1609. X
  1610. X    chtype    *scanp;
  1611. X
  1612. X    if (_getch_win_ == (WINDOW *)NULL)
  1613. X        return (-1);    /* bad window pointer      */
  1614. X
  1615. X#ifdef    FLEXOS
  1616. X    if (c == 0x0300)
  1617. X        return (0);    /* special case, ^@ = NULL      */
  1618. X#endif
  1619. X    if (!(c & ~A_CHARTEXT))    return (c);  /* normal character */
  1620. X    if (!(_getch_win_->_use_keypad))    return (-1); /* skip if keys if !keypad mode */
  1621. X
  1622. X#if    defined (DOS) || defined (OS2)
  1623. X    /*
  1624. X    * Under DOS, extended keys are in the upper byte.  Shift down for a
  1625. X    * comparison.
  1626. X    */
  1627. X    c = (c >> 8) & A_CHARTEXT;
  1628. X#endif
  1629. X    scanp = kptab;
  1630. X    while (*scanp > 0)    /* search for value         */
  1631. X    {            /* (stops on table entry 0x100) */
  1632. X        if (*scanp++ == c)
  1633. X        {
  1634. X            return (*scanp);    /* found, return it */
  1635. X        }
  1636. X        scanp++;
  1637. X    }
  1638. X    return( -1 );        /* not found, invalid */
  1639. X}
  1640. END_OF_FILE
  1641.   if test 8570 -ne `wc -c <'private/_validch.c'`; then
  1642.     echo shar: \"'private/_validch.c'\" unpacked with wrong size!
  1643.   fi
  1644.   # end of 'private/_validch.c'
  1645. fi
  1646. echo shar: End of archive 3 \(of 11\).
  1647. cp /dev/null ark3isdone
  1648. MISSING=""
  1649. for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
  1650.     if test ! -f ark${I}isdone ; then
  1651.     MISSING="${MISSING} ${I}"
  1652.     fi
  1653. done
  1654. if test "${MISSING}" = "" ; then
  1655.     echo You have unpacked all 11 archives.
  1656.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1657. else
  1658.     echo You still must unpack the following archives:
  1659.     echo "        " ${MISSING}
  1660. fi
  1661. exit 0
  1662. exit 0 # Just in case...
  1663.