xaizek / vifm-pdcurses (License: mostly public domain) (since 2019-03-20)
PDCurses 3.4 with vifm-specific patches applied (a couple were upstreamed)
<root> / HISTORY (7cf5b71accea888026577644822fd8b15325ea35) (72KiB) (mode 100644) [raw]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925
PDCurses 3.4 - 2008/09/08
=========================

Nothing much new this time, but I've been sitting on some bug fixes for 
almost a year, so it's overdue. Apart from bugs, the main changes are in 
the documentation.

New features:

- setsyx() is now a function rather than a macro.

Bug fixes and such:

- In x11, the xc_atrtab table size was under-calculated by half, 
  resulting in crashes at (oddly) certain line counts. (It should've 
  crashed a lot more.) Reported by Mark Hessling.

- Test for moved cursor was omitting the window origin offset. Reported 
  by Carey Evans.

- Is DOS and OS/2, the value for max items in key_table was still wrong.
  Reported by C.E.

- Changed isendwin() so it won't crash after delscreen().

- Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs(). 

- Disable QuickEdit Mode when enabling mouse input for the Win32 
  console; reported by "Zalapkrakna".

- Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
  courtesy of Paul Smedley.

- Unified exports list with no duplicates -- pdcurses.def is now built
  from components at compile time.

- Don't install curspriv.h, and don't include it with binary
  distributions.

- Building DLLs with LCC is no longer supported, due to the primitive
  nature of its make.exe.

- Export the terminfo stub functions from the DLLs, too.

- Added support for Apple's ".dylib" in configure. Suggested by Marc 
  Vaillant (who says it's needed with OS 10.5.)

- In sdl1/Makefile.mng, ensure that CC is set.

- In the gcc makefiles, "$?" didn't really have the desired effect --
  _all_ the dependencies showed up on the command line, including
  curses.h, and pdcurses.a twice.  And apparently, this can mess up some
  old version (?) of MinGW. So, revert to spelling out "tuidemo.o
  tui.o". Reported by "Howard L."

- Extensive documentation revision and reorganizing. More to do here. 
  For example, I moved the build instructions from INSTALL (which never 
  really described installation) to the platform-specific READMEs. 

- New indentation standard: four spaces, no tabs.

------------------------------------------------------------------------

PDCurses 3.3 - 2007/07/11
=========================

This release adds an SDL backend, refines the demos, and is faster in 
some cases.

New features:

- SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.

- Double-buffering -- minimize screen writes by checking, in doupdate()
  and wnoutrefresh(), whether the changes to curscr are really changes.
  In most cases, this makes no difference (writes were already limited
  to areas marked as changed), but it can greatly reduce the overhead
  from touchwin(). It also helps if you have small, separated updates on
  the same line.

- The PDC_RGB colors can now be used, or not, with any platform (as long
  as the same options are used when compiling both the library and
  apps). This may help if you have apps that are hardwired to assume
  certain definitions.

- Restored the use_default_colors() stuff from the ncurses versions of
  the rain and worm demos, to make them "transparent" (this is useful
  now, with the SDL port); added transparency to newdemo.

- Added setlocale() to tuidemo, to make it easier to browse files with
  non-ASCII characters.

- Sped up firework demo by replacing unneeded clear() and init_pair()
  calls.

- Allow exit from ptest demo by typing 'q'.

- New functions for implementors: PDC_pair_content() and PDC_init_pair()
  (the old pdc_atrtab stuff was arguably the last remnant of code in the
  pdcurses directory that was based on platform details).

Bug fixes and such:

- Implicit wrefresh() needs to be called from wgetch() when the window's 
  cursor position is changed, even if there are no other changes.

- Set SP->audible on a per-platform basis, as was documented in
  IMPLEMNT, but not actually being done.

- Minor tweaks for efficiency and readability, notably with wscrl().

- tuidemo didn't work correctly on monochrome screens when A_COLOR was
  defined -- the color pair numbers appeared as the corresponding
  character; also, the input box was (I now realize) broken with ncurses
  since our 2.7, and broke more subtly with PDCurses' new implicit
  refresh handling; also, the path to the default file for the Browse
  function was a bit off.

- Assume in the demos that curs_set() is always available -- there's no
  good test for this, and the existing tests were bogus.

- Made the command-line parameter for ptest work. (If given an argument,
  it delays that number of milliseconds between changes, instead of
  waiting for a key, and automatically loops five times.)

- Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
  the platform directory.

- Building the X11 port with Cygwin required manually editing the 
  Makefile after configuring; no longer. Reported by Warren W. Gay.

- Minor tightening of configure and makefiles.

- Bogus references to "ACS_BLCORNER" in the border man page. Reported by
  "Walrii".

- slk_wlabel() was not documented.

- Spelling cleanup.

- Changed RCSIDs to not end with a semicolon -- avoids warnings when
  compiling with the -pedantic option.

- Merged latin-1.txt into x11.txt.

- Updated config.guess and config.sub to more recent versions.

------------------------------------------------------------------------

PDCurses 3.2 - 2007/06/06
=========================

This release mainly covers changes to the build process, along with a 
few structural changes.

New features:

- The panel library has been folded into the main library. What this
  means is that you no longer need to specify "-lpanel" or equivalent
  when linking programs that use panel functionality with PDCurses;
  however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a)
  so that you can, optionally, build your projects with no changes. It
  also means that panel functionality is available with the DLL or
  shared library. Note that panel.h remains separate from curses.h.

- Setting the PDCURSES_SRCDIR environment variable is no longer required
  before building, unless you want to build in a location other than the
  platform directory. (See INSTALL.)

- MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
  option. Partly due to Timofei Shatrov.

- Support for the Digital Mars compiler.

- Watcom makefiles now use the "loaddll" feature.

Bug fixes and such:

- Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from
  curses.h, except for X11-specific SCREEN elements and functions.
  Dynamically-linked X11 apps built against an old version will have
  their red and blue swapped until rebuilt. (You can define PDC_RGB to
  build the library with the old color scheme, but it would also have to
  be defined when building any new app.) Any app that depends on
  PDCurses to determine the platform it's building on will have to make
  other arrangements.

- Documentation cleanup -- added more details; removed some content that
  didn't apply to PDCurses; moved the doc-building tool to the doc
  directory; changed *.man to *.txt.

- The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of
  curses.dll, builds either the static library or the DLL (not both at
  once), and links all the demos with the DLL when building it.

- In Win32, read the registry only when needed: when init_color() or 
  color_content() is called, instead of at startup.

- A few additional consts in declarations.

- The Win32 compilers that build DLLs now use common .def files.

- panel.h functions sorted by name, as with other .h files; curses.h is
  no longer included by repeated inclusions of panel.h or term.h.

- Simplified Borland makefiles.

- Makefile.aix.in depended on a file, xcurses.exp, that was never there.
  This problem was fixed as part of the change to common .def files; 
  however, I still haven't been able to test building on AIX.

------------------------------------------------------------------------

PDCurses 3.1 - 2007/05/03
=========================

Primarily clipboard-related fixes, and special UTF-8 support.

New features:

- "Force UTF-8" mode, a compile-time option to force the use of UTF-8
  for multibyte strings, instead of the system locale. (Mainly for
  Windows, where UTF-8 doesn't work well in the console.) See INSTALL.

- Multibyte string support in PDC_*clipboard() functions, and in Win32's
  PDC_set_title().

- Added the global string "ttytype", per other curses implementations,
  for compatibility with old BSD curses.

- Real functions for the "quasi-standard aliases" -- crmode(),
  nocrmode(), draino(), resetterm(), fixterm() and saveterm().
  (Corresponding macros removed.)

Bug fixes and such:

- In Win32, under NT-family OSes, the scrollback buffer would be
  restored by endwin(), but would not be turned off again when resuming
  curses after an endwin(). The result was an odd, partly-scrolled-up
  display. Now, the buffer is toggled by PDC_reset_prog_mode() and
  PDC_reset_shell_mode(), so it's properly turned off when returning
  from an endwin().

- In 3.0, selection in X11 didn't work. (Well, the selecting worked, but 
  the pasting elsewhere didn't.) This was due to the attempted fix 
  "don't return selection start as a press event," so that's been 
  reverted for now.

- PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.

- Missing underscore in the declaration of XC_say() prevented
  compilation with PDCDEBUG defined.  Reported by M.H.

- Off-by-one error in copywin() -- the maximum coordinates for the
  destination window should be inclusive. Reported by Tiago Dionizio.

- Start in echo mode, per X/Open. Reported by T.D.

- Strip leading and trailing spaces from slk labels, per a literal
  reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it
  also applies here).

- The #endif for __PDCURSES__ needs to come _after_ the closing of the
  extern "C". This has been broken since June 2005. Fortunately (?), it
  only shows up if the file is included multiple times, and then only in
  C++. Reported on the DOSBox forums.

- Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the 
  clipboard functions in Win32, to match the console.

- Changed the format of the string returned from longname().

- In the clipboard test in the testcurs demo, use a single mvprintw() to
  display the return from PDC_getclipboard(), instead of a loop of
  addch(), which was incompatible with multibyte strings.

- Moved has_key() into the keyname module, and documented it.

- Moved RIPPEDOFFLINE to curspriv.h.

- Typos in IMPLEMNT.

------------------------------------------------------------------------

PDCurses 3.0 - 2007/04/01
=========================

The focuses for this release are X/Open conformance, i18n, better color 
support, cleaner code, and more consistency across platforms.

This is only a brief summary of the changes. For more details, consult 
the CVS log.

New features:

- An almost complete implementation of X/Open curses, including the
  wide-character and attr_t functions (but excluding terminfo). The
  wide-character functions work only in Win32 and X11, for now, and
  require building the library with the appropriate options (see
  INSTALL). Note that this is a simplistic implementation, with exactly
  one wchar_t per cchar_t; the only characters it handles properly are
  those that are one column wide.

- Support for X Input Methods in the X11 port (see INSTALL). When built
  this way, the internal compose key support is disabled in favor of
  XIM's, which is a lot more complete, although you lose the box cursor.

- Multibyte character support in the non-wide string handling functions, 
  per X/Open. This only works when the library is built with wide- 
  character support enabled.

- Mouse support for DOS and OS/2. The DOS version includes untested 
  support for scroll wheels, via the "CuteMouse" driver.

- An ncurses-compatible mouse interface, which can work in parallel with 
  the traditional PDCurses mouse interface. See the man page (or 
  mouse.c) for details.

- DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.

- COLORS, which had been fixed at 8, is now either 8 or 16, depending on
  the terminal -- usually 16. When it's 8, blinking mode is enabled
  (controlled as before by the A_BLINK attribute); when it's 16, bright
  background colors are used instead. On platforms where it can be
  changed, the mode is toggled by the new function PDC_set_blink().
  PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's
  always set to FALSE; in DOS, with other than an EGA or VGA card, it 
  can't be.) Also, COLORS is now set to 0 until start_color() is called.

- Corresponding to the change in COLORS, COLOR_PAIRS is now 256.

- Working init_color() and color_content(). The OS/2 version of
  init_color() works only in a full-screen session; the Win32 version
  works only in windowed mode, and only in NT-family OSes; the DOS
  version works only with VGA adapters (real or simulated). The Win32
  version is based mostly on James Brown's setconsoleinfo.c
  (www.catch22.net).

- use_default_colors(), assume_default_colors(), and curses_version(),
  after ncurses.

- Added global int TABSIZE, after ncurses and Solaris curses; removed
  window-specific _tabsize.

- Logical extension to the wide-character slk_ funcs: slk_wlabel(), for 
  retrieving the label as a wide-character string.

- A non-macro implementation of ncurses' wresize().

- Working putwin(), getwin(), scr_dump() and scr_restore().

- A working acs_map[]. Characters from the ACS are now stored in window
  structures as a regular character plus the A_ALTCHARSET attribute, and
  rendered to the ACS only when displayed. (This allows, for example,
  the correct display on one platform of windows saved from another.)

- In X11, allow selection and paste of UTF8_STRING.

- The testcurs demo now includes a color chart and init_color() test, a
  wide character input test, a display of wide ACS characters with
  sample Unicode text, a specific test of flash(), more info in the
  resize test, and attempts to change the width as well as the height.

- Command-line option for MSVC to build DLLs (see INSTALL). Also, the
  naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned,
  and either the static lib or DLL is built, not both at once (except
  for X11).

- For backwards compatibility, a special module just for deprecated
  functions -- currently PDC_check_bios_key(), PDC_get_bios_key(),
  PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used
  in applications, but currently are... in fact, all the "private"
  functions (in curspriv.h) are subject to change and should be avoided. 

- A new document, IMPLEMNT, describing PDCurses' internal functions for
  those wishing to port it to new platforms.

- Mark Hessling has released the X11 port to the public domain. 
  (However, x11/ScrollBox* retain their separate copyright and MIT-like 
  license.)

Bug fixes and such:

- Most of the macros have been removed (along with the NOMACROS ifdef).
  The only remaining ones are those which have to be macros to work, and
  those that are required by X/Open to be macros. There were numerous
  problems with the macros, and no apparent reason to keep them, except
  tradition -- although it was PCcurses 1.x that first omitted them.

- Clean separation of platform-specific code from the rest. Outside of
  the platform directories, there remain only a few ifdefs in curses.h
  and curspriv.h.

- General reorganization and simplification.

- Documentation revisions.

- When expanding control characters in addch() or insch(), retain the 
  attributes from the chtype.

- Preserve the A_ALTCHARSET attribute in addch() and insch().

- Per X/Open, beep() should always return OK.

- On platforms with a controlling terminal (i.e., not X11), curs_set(1)
  now sets the cursor to the shape it had at the time of initscr(),
  rather than always making it small. (Exception for DOS: If the video
  mode has been changed by PDC_resize_screen(), curs_set(1) reverts to
  line 6/7.) The shape is taken from SP->orig_cursor (the meaning of
  which is platform-specific).

- Stop updating the cursor position when the cursor is invisible (this 
  gives a huge performance boost in Win 9x); update the cursor position 
  from curs_set() if changing from invisible to visible.

- Some tweaking of the behavior of def_prog_mode(), def_shell_mode(), 
  savetty(), reset_prog_mode(), reset_shell_mode() and resetty()... 
  still not quite right.

- flash() was not implemented for Win32 or X. A portable implementation
  is now used for all platforms. Note that it's much slower than the
  old (DOS and OS/2) version, but this is only apparent on an extremely
  slow machine, such as an XT.

- In getstr(), backspacing on high-bit characters caused a double 
  backspace.

- hline() and vline() used an incorrect (off by one) interpretation of 
  _maxx and _maxy. If values of n greater than the max were specified, 
  these functions could access unallocated memory.

- innstr() is supposed to return the number of characters read, not just 
  OK or ERR. Reported by Mike Aubury.

- A proper implementation of insch() -- the PDC_chadd()-based version 
  wasn't handling the control characters correctly.

- Return ASCII and control key names from keyname() (problem revealed by
  ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when 
  appropriate, rather than "NO KEY NAME".

- Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE)
  now calls curs_set(1), regardless of the previous state of the cursor.

- In the slk area, BUTTON_CLICKED events now translate to function keys,
  along with the previously recognized BUTTON_PRESSED events. Of course,
  it should really be checking the events specified by map_button(),
  which still doesn't work.

- napms(0) now returns immediately.

- A unified napms() implementation for DOS -- no longer throttles the
  CPU when built with any compiler.

- Allow backspace editing of the nocbreak() buffer.

- pair_content(0, ...) is valid.

- There was no check to ensure that the pnoutrefresh() window fit within 
  the screen. It now returns an ERR if it doesn't.

- In X11, resize_term() must be called with parameters (0, 0), and only 
  when SP->resized is set, else it returns ERR.

- Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's 
  web site.

- slk_clear() now removes the buttons completely, as in ncurses.

- Use the current foreground color for the line attributes (underline,
  left, right), unless PDC_set_line_color() is explicitly called. After 
  setting the line color, you can reset it to this mode via 
  "PDC_set_line_color(-1)".

- Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().

- Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch() 
  are now (again) the core functions.

- Dropped or made static many obsolete, unused, and/or broken functions,
  including PDC_chg_attrs(), PDC_cursor_on() and _off(),
  PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(),
  PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(),
  PDC_wunderline(), PDC_wleftline(), PDC_wrightline(),
  XCursesModifierPress() and XCurses_refresh_scrollbar().

- Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR 
  _ENDLINE, _FULLWIN and _SCROLLWIN.

- Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*, 
  _lasts*.

- Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor,
  sizeable, shell, blank, cursor, orig_emulation, font, orig_font,
  tahead, adapter, scrnmode, kbdinfo, direct_video, video_page,
  video_seg, video_ofs, bogus_adapter. (Some of these persist outside
  the SCREEN struct, in the platform directories.) Added mouse_wait and 
  key_code.

- Removed all the EMALLOC stuff. Straight malloc calls were used 
  elsewhere; it was undocumented outside of comments in curspriv.h; and 
  there are better ways to use a substitute malloc().

- Single mouse clicks are now reportable on all platforms (not just
  double-clicks). And in general, mouse event reporting is more
  consistent across platforms.

- The mouse cursor no longer appears in full-screen mode in Win32 unless
  a nonzero mouse event mask is used.

- ALT-keypad input now works in Win32.

- In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and 
  appears to be the source of a four-year-old bug report (hanging in 
  THE) by Phil Smith.

- Removed the PDC_THREAD_BUILD stuff, which has never worked. For the
  record: PDCurses is not thread-safe. Neither is ncurses; and the
  X/Open curses spec explicitly makes it a non-requirement.

- With the internal compose key system in the X11 port, modifier keys
  were breaking out of the compose state, making it impossible to type
  accented capitals, etc. Also, Multi_key is now the default compose
  key, instead of leaving it undefined by default; and a few more combos
  are supported.

- In X11, the first reported mouse event after startup always read as a
  double-click at position 0, 0. (This bug was introduced in 2.8.)

- In X11, don't return selection start as a press event. (Shift-click on
  button 1 is still returned.)

- In X11, properly handle pasting of high-bit chars. (It was doing an
  unwanted sign extension.)

- In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was
  set.

- The fix in 2.8 for the scroll wheel in X11 wasn't very good -- it did
  report the events as scroll wheel events, but it doubled them. Here's
  a proper fix.

- Changed mouse handling in X11: Simpler translation table, with
  XCursesPasteSelection() called from XCursesButton() instead of the
  translation table; require shift with button 1 or 2 for select or
  paste when mouse events are being reported (as with ncurses), allowing
  passthrough of simple button 2 events. This fixes the previously
  unreliable button 2 behavior.

- Modifier keys are now returned on key up in X11, as in Win32. And in
  general, modifier key reporting is more consistent across platforms.

- Modifiers are not returned as keys when a mouse click has occurred
  since the key press.

- In BIOS mode (in DOS), count successive identical output bytes, and
  make only one BIOS call for all of them. This dramatically improves 
  performance.

- The cursor position was not always updated correctly in BIOS mode.

- In testcurs, the way the ACS test was written, it would really only
  work with a) PDCurses (with any compiler), or b) gcc (with any
  curses). Here's a more portable implementation.

- Better reporting of mouse events in testcurs.

- Blank out buffer and num before the scanw() test in testcurs, in case 
  the user just hits enter or etc.; clear the screen after resizing.

- Allow tuidemo to use the last line.

- Separate left/right modifier keys are now reported properly in Win32.
  (Everything was being reported as _R.)

- Attempts to redirect input in Win32 now cause program exit and an 
  error message, instead of hanging.

- Dropped support for the Microway NDP compiler.

- Some modules renamed, rearranged.

- Fixes for errors and warnings when building with Visual C++ 2005.

- In MSVC, the panel library didn't work with the DLL.

- Complete export lists for DLLs.

- Simplified makefiles; moved common elements to .mif files; better 
  optimization; strip demos when possible.

- Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to 
  $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman.

- Changed "install" target in the makefile to a double-colon rule, to 
  get around a conflict with INSTALL on non-case-sensitive filesystems, 
  such as Mac OS X's HFS+. Reported by Douglas Godfrey et al.

- Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller.

- Set up configure.ac so autoheader works; removed some obsolescent 
  macros. Partly the suggestion of T.M.

- The X11 port now builds in the x11 directory (including the demos), as
  with other ports.

- The X11 port should now build on more 64-bit systems. Partly due to 
  M.H.

- The default window title and icons for the X11 port are now "PDCurses"
  instead of "XCurses".

- Internal functions and variables made static where possible.

- Adopted a somewhat more consistent naming style: Internal functions
  with external linkage, and only those, have the prefix "PDC_";
  external variables that aren't part of the API use "pdc_"; static
  functions use "_"; and "XC_" and "xc_" prefixes are used for functions
  and variables, respectively, that are shared between both processes in
  the X11 port. Also eliminated camel casing, where possible.

- Changed the encoding for non-ASCII characters in comments and
  documentation from Latin-1 to UTF-8.

------------------------------------------------------------------------

PDCurses 2.8 - 2006/04/01
=========================

As with the previous version, you should assume that apps linked against 
older dynamic versions of the library won't work with this one until 
recompiled.

New features:

- Simpler, faster.

- Declarations for all supported, standard functions, per the X/Open
  Curses 4.2 spec, with the notable exception of getch() and ungetch().
  You can disable the use of the macro versions by defining NOMACROS
  before including curses.h (see xmas.c for an example). NOMACROS yields
  smaller but theoretically slower executables.

- New functions: vwprintw(), vwscanw(), vw_printw() and vw_scanw(). This 
  completes the list of X/Open 4.2 functions, except for those concerned 
  with attr_t and wide characters. Some (especially the terminfo/termcap 
  functions) aren't yet fully fleshed out, though.

- Non-macro implementations for COLOR_PAIR(), PAIR_NUMBER(), getbkgd(), 
  mvgetnstr(), mvwgetnstr(), mvhline(), mvvline(), mvwhline(), and 
  mvwvline(). (The macros are still available, too.)

- newterm() works now, in a limited way -- the parameters are ignored, 
  and only the first invocation will work (i.e., only one SCREEN can be 
  used).

- start_color() works now -- which is to say, if you _don't_ call it, 
  you'll only get monochrome output. Also, without calling it, the 
  terminal's default colors will be used, where supported (currently 
  only in Win32). This is equivalent to the PDC_ORIGINAL_COLORS behavior 
  introduced in 2.7, except that _only_ the default colors will be used. 
  (PDC_ORIGINAL_COLORS is still available, if you want to combine the 
  use of specific colors and the default colors.)

- New logic for termname() and longname(): termname() always returns
  "pdcurses"; longname() returns "PDCurses for [platform] [adapter]
  [COLOR/MONO]-YxX" (adapter is only defined for DOS and OS/2). This is
  the first time these functions return _anything_ in Win32.

- New installation method for XCurses: the header files are placed in a 
  subdirectory "xcurses" within the include directory, rather than being 
  renamed. (But the renamed xcurses.h and xpanel.h are also installed, 
  for backwards compatibility.) curspriv.h and term.h are now available,
  and existing curses-based code need no longer be edited to use 
  XCurses' curses.h. And with no more need for explicit XCursesExit() 
  calls (see below), your code need not be changed at all to move from 
  another curses implementation to XCurses. It can be as simple as "gcc 
  -I/usr/local/include/xcurses -lXCurses -oprogname progname.c".

- Combined readme.* into this HISTORY file, and incorporated the old 1.x
  (PCcurses) history.

- New functionality for the testcurs demo: ACS character display; menu 
  support for PgUp, PgDn, Home and End; centered menu; and it can now 
  be resized in X.

- Added modified versions of the rain and worm demos from ncurses.

Bug fixes and such:

- Big cleanup of dead and redundant code, including unneeded defines, 
  ifdefs, and structure elements.

- flushinp() was not implemented for Win32.

- resetty() was not restoring LINES and COLS.

- nonl() made '\n' print a line feed without carriage return. This was 
  incorrect.

- Removed bogus implementation of intrflush().

- The line-breakout optimization system, disabled by default in 2.7, is
  removed in 2.8. It simply didn't work, and never has. (The typeahead() 
  function remains, for compatibility, but does nothing.)

- The declarations for the printw() and scanw() function families were
  erroneously ifdef'd.

- Safer printw() calls on platforms that support vsnprintf().

- Use the native vsscanf() in DJGPP, MinGW and Cygwin.

- ACS_BLOCK now works in X.

- Explicit calls to XCursesExit() are no longer needed.

- XCURSES is now defined automatically if not DOS, OS2 or WIN32.

- The default icon for XCurses wasn't working (had to remove the focus 
  hint code to fix this). Also, the default title is now "XCurses" 
  instead of "main".

- Incorrect dimensions (undercounting by two in each direction) were
  shown while resizing in X.

- Scroll wheel events were not always correctly reported in X.

- 32 bits are enough for the "long" chtype, but 64 bits were used on a 
  64-bit system, wasting memory. Now conditioned on _LP64. This could be 
  faster, too.

- The short, 16-bit chtype now works with XCurses.

- Corrected return value for is_linetouched(), is_wintouched(),
  can_change_color() and isendwin() (bool instead of int).

- timeout(), wtimeout(), idcok() and immedok() return void.

- pair_content() takes a short.

- Replaced incorrect usages of attr_t with chtype. attr_t is still 
  typedef'd, for backwards compatibility. (It's supposed to be used for 
  the WA_*-style functions, which PDCurses doesn't yet support.)

- Added const where required by the spec, and in other appropriate
  places.

- Removed PDC_usleep(). napms() is now the core delay routine.

- Fixed poll() support in napms().

- Various changes to the internal PDC_* functions -- don't depend on 
  these, and don't use them unless you absolutely have to.

- Some routines accessed window structures in their variable 
  declarations, _before_ checking for a NULL window pointer.

- Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and
  PDC_print().

- Cleaned up remaining warnings.

- Reduced unnecessary #include directives -- speeds up compilation.

- Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't 
  specify the memory model. Reported by Erwin Waterlander.

- Simplified the makefiles; e.g., some now build each demo in a single 
  step, and Watcom no longer uses demos.lnk. Also, the demo exes are now 
  stripped when possible; maximum compression used for archives built 
  by the makefiles; xcurses-config removed as part of "make distclean"; 
  and I tweaked optimization for some platforms.

- Reverted to /usr/local/ as default installation directory for XCurses.

- Upgraded to autoconf 2.59... instantly doubling the size of the
  configure script. Ah well. Otherwise, simplified the build system.

- Dropped support for pre-ANSI compilers. (It hasn't worked since at
  least version 2.4, anyway.)

- Revised and, I hope, clarified the boilerplate and other comments.

- Simplified logging and RCS ids; added RCS ids where missing.

- Consistent formatting for all code, approximately equivalent to
  "indent -kr -i8 -bl -bli0", with adjustments for 80 columns.

------------------------------------------------------------------------

PDCurses 2.7 - 2005/12/30
=========================

INTRODUCTION:

 Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses.
 Here's a brief summary of changes in this release. (More details are
 available in the CVS log and trackers on SourceForge.)

NEW FEATURES:

- Functions: delscreen(), getattrs(), has_key(), slk_color(),
  wcolor_set(), wtimeout().

- Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(),
  mvwvline(), timeout(), wresize().

- Stub implementations of terminfo functions (including a term.h).

- More stubs for compatibility: filter(), getwin(), putwin(),
  noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(),
  scr_set(), use_env(), vidattr(), vidputs().

- The terminal's default colors are used as curses' default colors when
  the environment variable "PDC_ORIGINAL_COLORS" is set to any value
  (Win32 only at the moment).

- Simplified build system.

- Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak
  files for more info).

- Minimal implementation of color_content() -- no longer a stub.

- Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for
  DOS/OS2/Win; "enhanced" versions of existing ACS characters used.

- Support for scroll wheels.

- Support for Pacific C.

BUGS FIXED:

- Builds correctly (including demos) on all tested platforms (see
  below); nearly all compiler warnings have been cleaned up; the ptest
  demo is built on all platforms; "clean" targets are improved.

- The ability to build ncurses_tests has been restored (see demos dir).

- Line-breakout optimization now defaults to off (equivalent to
  "typeahead(-1)"), so output is not interrupted by keystrokes (it's
  supposed to resume on the next refresh(), which wasn't working).

- Implicit wrefresh() in wgetch() was not being invoked in nodelay mode.

- subpad() was erroneously offsetting from the origin coordinates of the
  parent pad (which are always -1,-1).

- In wborder(), whline(), and wvline(), the current (wattrset) attribute
  was being used, but not the current background (wbkgd).

- Allow Russian 'r' character ASCII 0xe0 to be returned.

- termattrs() now also returns A_UNDERLINE, A_REVERSE.

- In Win32, with large scrollback buffers set, there was an unwanted
  "scrollup" effect on startup.

- Revamped keyboard handling for Win32.

- New screen resize method for Win32.

- napms(), delay_output(), etc. now work with Cygwin.

- curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode --
  the cursor stayed on.

- The A_REVERSE attribute was broken in XCurses.

- On 64-bit systems, XCurses was ignoring every other keystroke.

- Added focus hints for XCurses.

- Demos (except for tuidemo) once again have their proper titles in
  XCurses (using Xinitscr() instead of the obsolete XCursesProgramName).

- The 16-bit chtype is a working option again (by removing #define
  CHTYPE_LONG from curses.h), except in XCurses. It's not recommended;
  but if your needs are limited, it still works.

- Reset screen size in resetty() under DOS, as in Win32 and OS/2.

- Changes for cursor size under DOS.

- Automatic setting of BIOS mode for CGA under DOS now works.

- The cursor is now always updated in PDC_gotoxy(); this fixes the
  problem of missing characters in BIOS mode.

- Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(),
  nl() and nonl() now return OK.

- ERR and OK are now defined as -1 and 0, respectively, for
  compatibility with other curses implementations -- note that this
  change is not binary compatible; you'll have to rebuild programs that
  use shared/dynamic libraries.

- Added "const" to prototypes where appropriate.

- Miscellaneous code cleanup.

ACKNOWLEDGEMENTS:

 Walter Briscoe
 Jean-Pierre Demailly
 Ruslan Fedyarov
 Warren Gay
 Florian Grosse-Coosmann
 Vladimir Kokovic
 Matt Maloy
 K.H. Man
 Michael Ryazanov
 Ron Thibodeau
 Alexandr Zamaraev

 and of course, MARK HESSLING, for his over 13 years of service as the
 maintainer of PDCurses. Plus, thanks to all who've reported bugs or
 requested features. Apologies to anyone I've forgotten.

 I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS;
 DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2;
 EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows;
 recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++;
 and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris.

-- William McBrine

------------------------------------------------------------------------

PDCurses 2.6 - 2003/01/08
=========================

INTRODUCTION:

 This release of PDCurses includes the following changes:

BUGS FIXED:

- Allow accented characters on Win32 platform when run on non-English
  keyboards.

- Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned.

- Some bugs with halfdelay() fixed by William McBrine.

- pechochar() should now work correctly.

- redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi

- Don't include "special" characters like KEY_SHIFT_L to be returned in
  getnstr() family. Bug 542913

- Entering TAB in wgetnstr() no longer exceeds requested buffer size.
  Bug 489233

- Fixed bug 550066, scrollok() and pads.
  Also beep() called when buffer exceeded. Bug 562041.

- Reverse video of X11 selection reinstated. Pablo Garcia Abio??

- Right Alt modifier now works like left Alt modifier under Win32

- Add support for all libXaw replacement libraries with Scrollbar bug. 
  Note that for this to work, you still have to change the libXaw 
  replacement libraries to fix the bug :-(

- Don't trap signals in XCurses if calling application has ignored them. 
  Change by Frank Heckenbach.

- Bug reports from Warren W. Gay:
  - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms.
  - Fix definition of getsyx() and setsyx() to be consistent with 
    ncurses. Bug 624424.
  - Fix definition of echo() and noecho(). Bug 625001.
  - Fix definition of keypad() and leaveok(). Bug 632653.
  - Missing panel_hidden() prototype. Bug 649320.

- Fixed bug with calling def_prog_mode(), resize_term(), 
  reset_prog_mode(); the resize details were being lost.

NEW FEATURES:

- Clipboard support now available on DOS platform, but handled 
  internally to the currently running process.

- New X11 resource: textCursor, allows the text cursor to be specified 
  as a vertical bar, or the standard horizontal bar. Thanks to Frank 
  Heckenbach for the suggestion.

NEW COMPILER SUPPORT:

- lcc-win32 now works correctly

------------------------------------------------------------------------

PDCurses 2.5 - 2001/11/26
=========================

INTRODUCTION:

 This release of PDCurses includes the following changes:

- Set BASE address for Win32 DLL

- Add KEY_SUP and KEY_SDOWN.

- Add PDC_set_line_color()

- Add blink support as bold background

- Add bold colors

- Add getbkgd() macro

- Add new PDC functions for adding underline, overline, leftline and 
  rightline

- Add support for shifted keypad keys.

- Allow more keypad keys to work under Win32

- Change Win32 and OS/2 DLL name to curses.dll

- Change example resources to allow overriding from the command line

- Changes for building cleanly on OS/2

- Changes to handle building XCurses under AIX

- Check if prefresh() and pnoutrefresh() parameters are valid.

- Ensure build/install works from any directory

- Handle platforms where X11 headers do not typedef XPointer.

- Mention that Flexos is likely out-of-date.

- Pass delaytenths to XCurses_rawgetch()

- Remove boldFont

- Updates for cursor blinking and italic.

BUGS FIXED:

- Fix bug with getting Win32 clipboard contents. Added new 
  PDC_freeclipboard() function.

- Fix bug with halfdelay()

- Fix bug with mouse interrupting programs that are not trapping mouse 
  events under Win32.

- Fix return value from curs_set()

- Reverse the left and right pointing bars in ALT_CHARSET

NEW COMPILER SUPPORT:

- Add QNX-RTP port

------------------------------------------------------------------------

PDCurses 2.4 - 2000/01/17
=========================

INTRODUCTION:

 This release of PDCurses includes the following changes:

- full support of X11 selection handling

- removed the need for the cursos2.h file

- enabled the "shifted" key on the numeric keypad

- added native clipboard support for X11, Win32 and OS/2

- added extra functions for obtaining internal PDCurses status

- added clipboard and key modifier tests in testcurs.c

- fixes for panel library

- key modifiers pressed by themselves are now returned as keys:
  KEY_SHIFT_L KEY_SHIFT_R KEY_CONTROL_L KEY_CONTROL_R KEY_ALT_L KEY_ALT_R
  This works on Win32 and X11 ports only

- Added X11 shared library support

- Added extra slk formats supported by ncurses

- Fixed bug with resizing the terminal when slk were on.

- Changed behavior of slk_attrset(), slk_attron() slk_attroff()
  functions to work more like ncurses.

BUGS FIXED:

- some minor bug and portability fixes were included in this release

NEW FUNCTIONS:

- PDC_getclipboard() and PDC_setclipboard() for accessing the native
  clipboard (X11, Win32 and OS/2)

- PDC_set_title() for setting the title of the window (X11 and Win32 
  only)

- PDC_get_input_fd() for getting the file handle of the PDCurses input

- PDC_get_key_modifiers() for getting the keyboard modifier settings at 
  the time of the last (w)getch()

- Xinitscr() (only for X11 port) which allows standard X11 switches to 
  be passed to the application

NEW COMPILER SUPPORT:

- MingW32 GNU compiler under Win95/NT

- Cygnus Win32 GNU compiler under Win95/NT

- Borland C++ for OS/2 1.0+

- lcc-win32 compiler under Win95/NT

ACKNOWLEDGEMENTS: (for this release)

 Georg Fuchs for various changes.
 Juan David Palomar for pointing out getnstr() was not implemented.
 William McBrine for fix to allow black/black as valid color pair.
 Peter Preus for pointing out the missing bccos2.mak file.
 Laura Michaels for a couple of bug fixes and changes required to 
 support Mingw32 compiler.
 Frank Heckenbach for PDC_get_input_fd() and some portability fixes and
 the fixes for panel library.
 Matthias Burian for the lcc-win32 compiler support.

------------------------------------------------------------------------

PDCurses 2.3 - 1998/07/09
=========================

INTRODUCTION:

 This release of PDCurses includes the following changes:

- added more System V R4 functions

- added Win32 port

- the X11 port is now fully functional

- the MS Visual C++ Win32 port now includes a DLL

- both the X11 and Win32 ports support the mouse

- the slk..() functions are now functional

- support for scrollbars under X11 are experimental at this stage

- long chtype extended to non-Unix ports

 The name of the statically built library is pdcurses.lib (or 
 pdcurses.a). The name of the DLL import library (where applicable) is 
 curses.lib.

BUGS FIXED:

- some minor bugs were corrected in this release

NEW FUNCTIONS:

- slk..() functions

NEW COMPILER SUPPORT:

- MS Visual C++ under Win95/NT

- Watcom C++ under OS/2, Win32 and DOS

- two EMX ports have been provided:
  - OS/2 only using OS/2 APIs
  - OS/2 and DOS using EMX video support routines

EXTRA OPTIONS:

 PDCurses recognizes two environment variables which determines the
 initialization and finalization behavior.  These environment variables
 do not apply to the X11 port.

 PDC_PRESERVE_SCREEN
 If this environment variable is set, PDCurses will not clear the screen
 to the default white on black on startup.  This allows you to overlay
 a window over the top of the existing screen background.

 PDC_RESTORE_SCREEN
 If this environment variable is set, PDCurses will take a copy of the
 contents of the screen at the time that PDCurses is started; initscr(),
 and when endwin() is called, the screen will be restored.


ACKNOWLEDGEMENTS: (for this release)

 Chris Szurgot for original Win32 port.
 Gurusamy Sarathy for some updates to the Win32 port.
 Kim Huron for the slk..() functions.
 Florian Grosse Coosmann for some bug fixes.
 Esa Peuha for reducing compiler warnings.
 Augustin Martin Domingo for patches to X11 port to enable accented 
 characters.

------------------------------------------------------------------------

PDCurses 2.2 - 1995/02/12
=========================

INTRODUCTION:

 This release of PDCurses has includes a number of major changes:

- The portable library functions are now grouped together into single 
  files with the same arrangement as System V R4 curses.

- A panels library has been included. This panels library was written by 
  Warren Tucker.

- Quite a few more functions have been supplied by Wade Schauer and 
  incorporated into release 2.2. Wade also supplied the support for the 
  Microway NDP C/C++ 32 bit DOS compiler.

- The curses datatype has been changed from an unsigned int to a long. 
  This allows more attributes to be stored as well as increasing the 
  number of color-pairs from 32 to 64.

- Xwindows port (experimental at the moment).

BUGS FIXED:

- mvwin() checked the wrong coordinates

- removed DESQview shadow memory buffer checking bug in curses.h in 
  #define for wstandout()

- lots of others I can't remember

NEW FUNCTIONS:

- Too many to mention. See intro.man for a complete list of the 
  functions PDCurses now supports.

COMPILER SUPPORT:

- DJGPP 1.12 is now supported. The run-time error that caused programs 
  to crash has been removed.

- emx 0.9a is supported. A program compiled for OS/2 should also work 
  under DOS if you use the VID=EMX switch when compiling. See the 
  makefile for details.

- The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade 
  Schauer for this port.

- The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter 
  Kunst for this port.

- The library now has many functions grouped together to reduce the size 
  of the library and to improve the speed of compilation.

- The "names" of a couple of the compilers in the makefile has changed; 
  CSET2 is now ICC and GO32 is now GCC.

EXTRA OPTIONS:

 One difference between the behavior of PDCurses and Unix curses is the 
 attributes that are displayed when a character is cleared. Under Unix 
 curses, no attributes are displayed, so the result is always black. 
 Under PDCurses, these functions clear with the current attributes in 
 effect at the time. With the introduction of the bkgd functions, by 
 default, PDCurses clears using the value set by (w)bkgd(). To have 
 PDCurses behave the same way as it did before release 2.2, compile with 
 -DPDCURSES_WCLR

ACKNOWLEDGEMENTS: (for this release)

 Pieter Kunst, David Nugent, Warren Tucker, Darin Haugen, Stefan Strack, 
 Wade Schauer and others who either alerted me to bugs or supplied 
 fixes.

------------------------------------------------------------------------

PDCurses 2.1 - 1993/06/20
=========================

INTRODUCTION:

 The current code contains bug fixes for the DOS and OS/2 releases and 
 also includes an alpha release for Unix. The Unix release uses another 
 public domain package (mytinfo) to handle the low-level screen writes. 
 mytinfo was posted to comp.sources.unix (or misc) in December 1992 or 
 January 1993. Unless you are a glutton for punishment I would recommend 
 you avoid the Unix port at this stage.

 The other major addition to PDCurses is the support for DJGPP (the DOS 
 port of GNU C++). Thanks to David Nugent <davidn@csource.oz.au>.

 Other additions are copywin() function, function debugging support and 
 getting the small and medium memory models to work. The testcurs.c demo 
 program has also been changed significantly and a new demo program, 
 tuidemo, has been added.

 Some people have suggested including information on where to get dmake 
 from. oak.oakland.edu in /pub/msdos/c

OTHER NOTES:
	
 Under DOS, by default, screen writes to a CGA monitor are done via the 
 video BIOS rather than by direct video memory writes. This is due to 
 the CGA "snow" problem. If you have a CGA monitor and do not suffer 
 from snow, you can compile private\_queryad.c with CGA_DIRECT defined. 
 This will then use cause PDCurses to write directly to the CGA video 
 memory.

 Function debugging: Firstly to get function debugging, you have to 
 compile the library with OPT=N in the makefile. This also turns on 
 compiler debugging. You can control when you want PDCurses to write to 
 the debug file (called trace in the current directory) by using the 
 functions traceon() and traceoff() in your program.

 Microsoft C 6.00 Users note:
 ----------------------------

 With the addition of several new functions, using dmake to compile 
 PDCurses now causes the compiler to run "out of heap space in pass 2". 
 Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes this 
 problem; hence the -EM switch.

 Functional changes
 ------------------

 Added OS/2 DLL support.

 A few curses functions have been fixed to exhibit their correct 
 behavior and make them more functionally portable with System V 
 curses. The functions that have changed are overlay(), overwrite() and 
 typeahead.

 overlay() and overwrite()

 Both of theses functions in PDCurses 2.0 allowed for one window to be 
 effectively placed on top of another, and the characters in the first 
 window were overlaid or overwritten starting at 0,0 in both windows. 
 This behavior of these functions was not correct. These functions only 
 operate on windows that physically overlap with respect to the 
 displayed screen. To achieve the same functionality as before, use the 
 new function copywin(). See the manual page for further details.

 typeahead()

 This function in PDCurses 2.0 effectively checked to see if there were 
 any characters remaining in the keyboard buffer. This is not the 
 behavior exhibited by System V curses. This function is intended 
 purely to set a flag so that curses can check while updating the 
 physical screen if any keyboard input is pending. To achieve the same 
 effect with typeahead() under PDCurses 2.1 the following code should be 
 used.

 In place of...

	while(!typeahead(stdin))
	 {
		/* do something until any key is pressed... */
	 }

 use...

	/* getch() to return ERR if no key pending */
	nodelay(stdscr,TRUE);
	while(getch() == (ERR))
	 {
		/* do something until any key is pressed... */
	 }


ACKNOWLEDGEMENTS: (in no particular order)

 Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi 
 Hamalainen, James McLennan, Duane Paulson, Ib Hojme
	
 Apologies to anyone I may have left out.

------------------------------------------------------------------------

PDCurses 2.0 - 1992/11/23
=========================

INTRODUCTION:

 Well, here it finally is; PDCurses v2.0.

 PDCurses v2.0 is an almost total rewrite of PCcurses 1.4 done by John 
 'Frotz' Fa'atuai, the previous maintainer. It adds support for OS/2 as 
 well as DOS.

 This version has been tested with Microsoft C v6.0, QuickC v2.0 and 
 Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02 
 under OS/2 2.0. Also the library has been compiled successfully with 
 emx 0.8e, C Set/2 and Watcom 9. Most testing was done with the large 
 memory model, where applicable. The large memory model is probably the 
 best model to use.

 The amount of testing has not been as extensive as I would have liked, 
 but demands on releasing a product have outweighed the product's 
 quality. Nothing new with that !! Hopefully with wider circulation, 
 more bugs will be fixed more quickly.

 I have included just 1 makefile which is suitable for dmake 3.8 for 
 both DOS and OS/2. The makefile does not rely on customization of the 
 dmake.ini file.

 If you discover bugs, and especially if you have fixes, please let me 
 know ASAP.

 The source to the library is distributed as a zip file made with zip 
 1.9. You will need Info-ZIP unzip 5.0 to unzip. Follow the directions 
 below to compile the library.

DIRECTIONS:

 1. Create a new directory in which to unzip pdcurs20.zip. This will 
    create a curses directory and a number of subdirectories containing 
    source code for the library and utilities and the documentation.

 2. Make changes to the makefile where necessary:
    Change the MODEL or model macro to the appropriate value (if it
    applies to your compiler). Use model for Borland compilers.

    Change any paths in the defined macros to be suitable for your
    compiler.

 3. Invoke DMAKE [-e environment_options] [target]

    where environment_options are:

	OS (host operating system)
	COMP (compiler)
	OPT (optimized version or debug version) - optional. default Y
	TOS (target operating system) - optional. default OS

    see the makefile for valid combinations

    targets: all, demos, lcursesd.lib, manual...
	
    NB. dmake is case sensitive with targets, so those environments that 
    use an upper case model value (eg MSC) MUST specify the library 
    target as for eg. Lcursesd.lib

    The makefile is by default set up for Borland C++. The use of -e 
    environment_options override these defaults. If you prefer, you can 
    just change the defaults in the makefile and invoke it without the 
    -e switch.

OTHER NOTES:

 The documentation for the library is built into each source file, a 
 couple of specific doc files and the header files. A program is 
 supplied (manext) to build the manual. This program gets compiled when 
 you build the documentation.
	
 To generate the library response file correctly, I had to write a quick 
 and dirty program (buildlrf) to achieve this. Originally the makefiles 
 just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" which appended 
 a suitable line to the response file. Unfortunately under some 
 combinations of makefiles and command processors (eg. nmake and 4DOS) 
 the & would get treated as stderr and the echo command would fail.
	
 The original source for PDCurses that I received from the previous 
 maintainer contained support for the FLEXOS operating system. Not 
 having access to it, I could not test the changes I made so its support 
 has fallen by the wayside. If you really need to have PDCurses running 
 under FLEXOS, contact me and I will see what can be arranged.
	
 Under DOS, by default, screen writes to a CGA monitor are done via the 
 video BIOS rather than by direct video memory writes. This is due to 
 the CGA "snow" problem. If you have a CGA monitor and do not suffer 
 from snow, you can compile private\_queryad.c with CGA_DIRECT defined. 
 This will then use cause PDCurses to write directly to the CGA video 
 memory.

 Added System V color support.

COMPILER-SPECIFIC NOTES:

 Microsoft C
 -----------

 It is possible with MSC 6.0 to build the OS/2 libraries and demo 
 programs from within DOS. This is the only case where it is possible to 
 specify the value of TOS on the command line to be OS2 and the value of 
 OS be DOS.

 C Set/2
 -------

 I have only tested the library using the migration libraries. I doubt 
 that the demo programs will work without them.

 emx
 ---

 Testing has been done with 0.8e of emx together with the 16_to_32 
 libraries. The emx\lib directory should include the vio32.lib and 
 kbd32.lib libraries from the 16_to_32 package.

BUGS and UNFINISHED BUSINESS:

- PDC_set_ctrl_break() function does not work under OS/2.

- win_print() and PDC_print() do not work under OS/2.

- The file todo.man in the doc directory also lists those functions of 
  System V 3.2 curses not yet implemented. Any volunteers?

ACKNOWLEDGEMENTS:

 John 'Frotz' Fa'atuai, the previous maintainer for providing an
 excellent base for further development.
 John Burnell <johnb@kea.am.dsir.govt.nz>, for the OS/2 port.
 John Steele, Jason (finally NOT a John) Shumate....
 for various fixes and suggestions.
 Eberhardt Mattes (author of emx) for allowing code based on his
 C library to be included with PDCurses.
 Several others for their support, moral and actual.

-- Mark Hessling

------------------------------------------------------------------------

PDCurses 2.0Beta - 1991/12/21
=============================

Changed back from short to int. (int is the correct size for the default 
platform. Short might be too short on some platforms. This is more 
portable. I, also, made this mistake.)

Many functions are now macros.  If you want the real thing, #undef the 
macro. (X/Open requirement.)

Merged many sources into current release.

Added many X/Open routines (not quite all yet).

Added internal documentation to all routines.

Added a HISTORY file to the environment.

Added a CONTRIB file to the environment.

------------------------------------------------------------------------

PDCurses 1.5Beta - 1990/07/14
=============================

Added many levels of compiler support. Added mixed prototypes for all 
"internal" routines. Removed all assembly language.  Added EGA/VGA 
support.  Converted all #ifdef to #if in all modules except CURSES.H and 
CURSPRIV.H. Always include ASSERT.H.  Added support for an external 
malloc(), calloc() and free(). Added support for FAST_VIDEO 
(direct-memory writes). Added various memory model support (for 
FAST_VIDEO). Added much of the December 1988 X/Open Curses 
specification.

-- John 'Frotz' Fa'atuai

------------------------------------------------------------------------

PCcurses 1.4 - 1990/01/14
=========================

  In PCcurses v.1.4, both portability improvements and bugfixes have 
been made. The files have been changed to allow lint-free compilation 
with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still 
compile without problems on older compilers, although this has not been 
verified.

  The makefiles have been changed to suit both the public release and 
the author, who maintains a special kind of libraries for himself. In 
the case of Microsoft C, changes were done in the makefile to lower the 
warning level to 2 (was 3). This was to avoid ANSI warnings which are 
abundant because PCcurses does not attempt to follow strict ANSI C 
standard.

  BUG FIXES FROM V.1.3 TO V.1.4:

  !!!IMPORTANT CHANGE!!!

  The definitions for OK and ERR in curses.h were exchanged. This was 
done to be more consistent with UNIX versions. Also, it permits 
functions like newwin() and subwin() to return 0 (=NULL) when they fail 
due to memory shortage. This incompatibility with UNIX curses was 
pointed out by Fred C. Smith. If you have tested success/failure by 
comparisons to anything other than ERR and OK, your applications will 
need to be be changed on that point. Sorry... but presumably most of you 
used the symbolic constants?

  (END OF IMPORTANT CHANGE)

  Fred also pointed out a bug in the file update.c. The bug caused the 
first character printed after 'unauthorized' screen changes (like during 
a shell escape, for example) to be placed at the wrong screen position. 
This happened even if the normal precautions (clear / touch / refresh) 
were taken. The problem has now been fixed.

  PCcurses is currently also being used on a 68000 system with 
hard-coded ESCape sequences for ANSI terminals. However, ints used by 
the 68000 C compiler are 32 bits. Therefore ints have been turned into 
shorts wherever possible in the code (otherwise all window structures 
occupy twice as much space as required on the 68000). This does not 
affect PC versions since normally both ints and shorts are 16 bits for 
PC C compilers.

  At some places in the source code there are references made to the 
68000 version. There are also a makefile, a curses68.c file, and a 
curses68.cmd file. These are for making, low-level I/O, and linking 
commands when building the 68000 version. These files are probably 
useful to no-one but the author, since it is very specific for its 
special hardware environment. Still in an effort to keep all 
curses-related sources in one place they are included. Note however that 
PCcurses will not officially support a non-PC environment.

  The file cursesio.c, which was included in the package at revision 
level 1.2, and which was to be an alternative to the cursesio.asm file, 
has been verified to behave incorrectly in the function _curseskeytst(). 
The problem was that the value of 'cflag' does not contain the proper 
data for the test that is attempted. Furthermore, neither Turbo C or 
Microsoft C allows any way to return the data that is needed, and 
consequently you should not use cursesio.c. The best solution is to 
simply use the ASM version. In v.1.2 and v.1.3, the user could edit the 
makefile to select which version he wanted to use. The makefiles in 
v.1.4 have removed this possibility forcing the use of the ASM file, and 
cursesio.c has been dropped from the distribution.

  A bug in the wgetstr() function caused PCcurses to echo characters 
when reading a keyboard string, even if the echo had been turned off. 
Thanks to Per Foreby at Lund University, Sweden, for this. Per also 
reported bugs concerning the handling of characters with bit 8 set. 
Their ASCII code were considered as lower than 32, so they were erased 
etc. like control characters, i.e. erasing two character positions. The 
control character test was changed to cope with this.

  The overlay() and overwrite() functions were changed so that the 
overlaying window is positioned at its 'own' coordinates inside the 
underlying window (it used to be at the underlying window's [0,0] 
position). There is some controversy about this - the documentation for 
different curses versions say different things. I think the choice made 
is the most reasonable.

  The border() and wborder() functions were changed to actually draw a 
border, since this seems to be the correct behavior of these functions. 
They used to just set the border characters to be used by box(). These 
functions are not present in standard BSD UNIX curses.

  The subwin() function previously did not allow the subwindow to be as 
big as the original window in which it was created. This has now been 
fixed. There was also the problem that the default size (set by 
specifying numlines or numcols (or both) as 0 made the resulting actual 
size 1 line/column too small.

  There were a few spelling errors in function names, both in the 
function declarations and in curses.h. This was reported by Carlos 
Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but 
harmless) parameter in a function call at one place.

------------------------------------------------------------------------

PCcurses 1.3 - 1988/10/05
=========================

  The file 'border.c' is now included. It allows you to explicitly 
specify what characters should be used as box borders when the box() 
functions are called. If the new border characters are non-0, they 
override the border characters specified in the box() call. In my 
understanding, this functionality is required for AT&T UNIX sV.3 
compatibility. Thanks for this goes to Tony L. Hansen
(hansen@pegasus.UUCP) for posting an article about it on Usenet 
(newsgroup comp.unix.questions; his posting was not related at all to 
PCcurses).

  The only other difference between v.1.2 and v.1.3 is that the latter 
has been changed to avoid warning diagnostics if the source files are 
compiled with warning switches on (for Microsoft this means '-W3', for 
Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is 
clearly to be used rather than Microsoft, even if neither of them comes 
even close to a real UNIX 'lint'. Some of the warnings in fact indicated 
real bugs, mostly functions that did not return correct return values or 
types.

  The makefiles for both MSC and TRC have been modified to produce 
warning messages as part of normal compilation.

------------------------------------------------------------------------

PCcurses 1.2 - 1988/10/02
=========================

  The changes from v.1.1 to v.1.2 are minor. The biggest change is that 
there was a bug related to limiting the cursor movement if the 
application tried to move it outside the screen (something that should 
not be done anyway). Such erroneous application behavior is now handled 
appropriately.

  All modules have been changed to have a revision string in them, which 
makes it easier to determine what version is linked into a program (or 
what library version you have).

  There is now a 'cursesio.c' file. That file does the same as 
'cursesio.asm' (i.e. it provides the interface to the lower-level system 
I/O routines). It is written in C and thus it is (possibly) more 
portable than the assembler version (but still not so portable since it 
uses 8086 INT XX calls directly). When one creates new curses libraries, 
one chooses whether to use the assembler or the C version of cursesio. 
The choice is made by commenting out the appropriate dependencies for 
cursesio.obj, near the end of the makefiles.

  There is now a 'setmode.c' file. That file contains functions that 
save and restore terminal modes. They do it into other variables than do 
savetty() and resetty(), so one should probably use either 
savetty()/resetty() or the new functions only - and not mix the both 
ways unless one really knows what one does.

  Diff lists vs v.1.0 are no longer included in the distribution. The 
make utility still is. PCcurses v.1.2 still compiles with Microsoft C 
v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no 
reason to believe that it does not compile under Microsoft C v.3.0 and 
5.x, or Turbo C v.1.5, but this has not been tested.

  There are two makefiles included, one for Microsoft C, one for Turbo 
C. They are both copies of my personal makefiles, and as such they 
reflect the directory structure on my own computer. This will have to be 
changed before you run make. Check $(INCDIR) and $(LIBDIR) in 
particular, and make the choice of ASM or C cursesio version as 
mentioned above (the distribution version uses the C version of 
cursesio).

  The manual file (curses.man) has been changed at appropriate places.

  I would like to thank the following persons for their help:

  	Brandon S. Allbery (alberry@ncoast.UUCP)
		for running comp.binaries.ibm.pc (at that time)
		and comp.source.misc.

	Steve Balogh (Steve@cit5.cit.oz.AU)
  		for writing a set of manual pages and posting
		them to the net.

	Torbjorn Lindh
		for finding bugs and suggesting raw
		character output routines.

	Nathan Glasser (nathan@eddie.mit.edu)
  		for finding and reporting bugs.

	Ingvar Olafsson (...enea!hafro!ingvar)
  		for finding and reporting bugs.

	Eric Rosco (...enea!ipmoea!ericr)
  		for finding and reporting bugs.

	Steve Creps (creps@silver.bacs.indiana.edu)
  		for doing a lot of work - among others
		posting bug fixes to the net, and writing
		the new cursesio.c module.

	N. Dean Pentcheff (dean@violet.berkeley.edu)
  		for finding bugs and rewriting cursesio.asm
		for Turbo 'C' 1.5.

  Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
  		     (jeff@ads.arpa)
	has had a shareware version of curses deliverable since
	about half a year before I released PCcurses 1.0 on Use-
	Net. He is very concerned about confusion between the two
	packages, and therefore any references on the network
	should make clear whether they reference Dean's PCcurses
	or Larsson's PCcurses.

------------------------------------------------------------------------

PCcurses 1.1 - 1988/03/06
=========================

  The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes, 
and new (non-portable) functions for verbatim IBM character font display 
have been added (in charadd.c and charins.c). The manual file 
(curses.man) has been changed at appropriate places.

  In the file v10tov11.dif there are listings of the differences between
version 1.0 and 1.1. The diff listings are in UNIX diff(1) format.

  Version 1.1 compiles with Turbo C v.1.0, as well as Microsoft C v.3.0 
and v.4.0. On the release disk there is a make.exe utility which is very 
similar to UNIX make (If the package was mailed to you, the make utility 
will be in uuencoded format - in make.uu - and must be uudecoded first). 
It is much more powerful than Microsoft's different MAKEs; the latter 
ones will NOT generate libraries properly if used with the PCcurses 
makefiles.

  There are three makefiles:

	makefile		generic MSC 3.0 makefile
	makefile.ms		MSC 4.0 makefile
	makefile.tc		Turbo C 1.0 makefile

  To make a library with for example Turbo C, make directories to hold 
.H and .LIB files (these directories are the 'standard places'), edit 
makefile.tc for this, and type

	make -f makefile.tc all

and libraries for all memory models will be created in the .LIB 
directory, while the include files will end up in the .H directory. Also 
read what is said about installation below!

------------------------------------------------------------------------

PCcurses 1.0 - 1987/08/24
=========================

  This is the release notes for the PCcurses v.1.0 cursor/window control 
package. PCcurses offers the functionality of UNIX curses, plus some 
extras. Normally it should be possible to port curses-based programs 
from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is 
a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All 
the code has been re-written - it is not just an edit of ncurses (or 
UNIX curses). I mention this to clarify any copyright violation claims. 
The data structures and ideas are very similar to ncurses. As for UNIX 
curses, I have not even seen any sources for it.

  For an introduction to the use of 'curses' and its derivatives, you 
should read 'Screen Updating and Cursor Movement Optimization: A Library 
Package' by Kenneth C. R. C. Arnold, which describes the original 
Berkeley UNIX version of curses. It is available as part of the UNIX 
manuals. The other source of information is 'The Ncurses Reference 
Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package.

  The only other documentation provided is a 'man' page which describes 
all the included functions in a very terse way. In the sources, each 
function is preceded by a rather thorough description of what the 
function does. I didn't have time to write a nice manual/tutorial - 
sorry.

  PCcurses is released as a number of source files, a man page, and a 
make file. A uuencoded copy of a 'make' utility, and a manpage for the 
'make' is also provided to make it easier to put together PCcurses 
libraries. Even if you are not interested in PCcurses, it may be 
worthwhile to grab the make.

  The makefile assumes the presence of the Microsoft C compiler (3.0 or 
4.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for 
supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a 
real UNIX make. The supplied make is a port of a public domain make, 
published on Usenet. It is almost completely compatible with UNIX make. 
When generating the curses libraries, the makefile will direct make to 
do some directory creating and file copying, and then re-invoke itself 
with new targets. The workings of the makefile are not absolutely 
crystal clear at first sight... just start it and see what it does.

  For portability, the curses libraries depend on one assembler file for 
access to the BIOS routines. There is no support for the EGA, but both 
CGA, MGA, and the HGA can be used. The libraries are originally for 
Microsoft C, but all C modules should be portable right away. In the 
assembler file, segment names probably need to be changed, and possibly 
the parameter passing scheme. I think Turbo C will work right away - as 
far as I understand, all its conventions are compatible with Microsoft 
C.

  There are some parts left out between ncurses and PCcurses. One is the 
support for multiple terminals - not very interesting on a PC anyway. 
Because we KNOW what terminal we have, there is no need for a termcap or 
terminfo library. PCcurses also has some things that neither curses nor 
ncurses have. Compared to the original UNIX curses, PCcurses has lots of 
extras.

  The BIOS routines are used directly, which gives fast screen updates.
PCcurses does not do direct writes to screen RAM - in my opinion it is
a bit ugly to rely that much on hardware compatibility. Anyone could fix
that, of course...

  One of the more serious problems with PCcurses is the way in which 
normal, cbreak, and raw input modes are done. All those details are in 
the 'charget' module - I do raw I/O via the BIOS, and perform any 
buffering myself. If an application program uses PCcurses, it should do 
ALL its I/O via PCcurses calls, otherwise the mix of normal and 
PCcurses I/O may mess up the display. I think my code is reasonable... 
comments are welcome, provided you express them nicely...

  To install, copy all files to a work directory, edit 'makefile' to 
define the standard include and library file directory names of your 
choice (these directories must exist already, and their path names must 
be relative to the root directory, not to the current one). You must 
also run uudecode on make.uu, to generate MAKE.EXE. You can do that on 
your PC, if you have uudecode there, otherwise you can do it under UNIX 
and do a binary transfer to the PC. When you have MAKE.EXE in your work 
directory (or in your /bin directory), type make.

  Make will now create 4 sub-directories (one for each memory model), 
copy some assembler include files into them, copy two include files to 
your include directory, CHDIR to each sub-directory and re-invoke itself 
with other make targets to compile and assemble all the source files 
into the appropriate directories. Then the library manager is run to 
create the library files in your desired library directory. Presto!

  If you only want to generate a library for one memory model, type 
'make small', 'make large', etc. The name of the memory model must be in 
lower case, like in the makefile.

  I think the package is fairly well debugged - but then again, that's 
what I always think. It was completed in May-87, and no problems found 
yet. Now it's your turn... Comments, suggestions and bug reports and 
fixes (no flames please) to

-- Bjorn Larsson
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm-pdcurses

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm-pdcurses

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master