home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / c / boss / boss_sup.exe / REV.HST < prev    next >
Text File  |  1994-07-31  |  39KB  |  848 lines

  1. /*
  2. ** WINDOWS - Simple but Elegant Window Functions 
  3. **           (Datalight, Lattice, CI86, Microsoft, Borland
  4. **            Zortech, Mix PowerC, Manx AZTEC C, WATCOM)
  5. **
  6. ** Copyright (c) 1984 - 1994 - Philip A. Mongelluzzo
  7. ** All rights reserved.
  8. **
  9. ** Revision History in reverse order:
  10. **
  11. **  The following changes were incorporated in the 08/15/94 release:
  12. **
  13. **              Added support for enhanced keyboards    (8.02)
  14. **              windows.c, wn_bios.c, wn_sup.c,
  15. **              winboss.ext, winboss.h, winboss.fns
  16. **              ** Note: v_getch() was modified for backward
  17. **              compatability.  v_getchn() was added to
  18. **              provdide 101 key keyboard scan codes.
  19. **              All Window BOSS functions call v_getch().
  20. **
  21. **              Added wns_isopen (wn_close.c)           (8.01)
  22. **              wn_open.c, wn_close.c, winboss.h
  23. **              winboss.fns, windows.c
  24. **
  25. **              Microsoft 8.0, Borland 4.02             (8.00)
  26. **              Watcom 10.0
  27. **
  28. **              Corrected wn_gedate  
  29. **              (wn_gedate.c, wn_frmget2.c)             (7.08)
  30. **
  31. **              Certfied Watcom 9.0                     (7.07)
  32. **
  33. **              Certfied Borland C 3.1                  (7.06)
  34. **
  35. **              Corrected WINBOSS.H - PDDOWN function codes from
  36. **              interger to character.  
  37. **              (winboss.h)                             (7.05)
  38. **
  39. **              Corrected definition of "newtype" for wn_pdtype
  40. **              in WINBOSS.FNB (Borland)
  41. **              (winboss.fnb)                           (7.04)
  42. **              
  43. **              Certfied MSC 7.00.  New "winboss.h" and "winboss.fn7"
  44. **              wn_input had to be modified to work around a quirk in
  45. **              the compiler that made wn_gphone handle backspace and
  46. **              left arrow incorrectly. A number of functions were 
  47. **              edited to eliminate cosmetic compiler warnings.
  48. **              (wn_gets, wn_move, wn_pddown, wn_save, wn_popup)
  49. **              (winboss.h, wn_input, winboss.fn7)      (V7.03)
  50. **
  51. **  The following changes were incorporated in the 03/15/92 release:
  52. **
  53. **              Added wns_gfrm2 to workaround problems Topspeed C had
  54. **              in compiling wn_frmget.
  55. **              (wn_frmget.c)                           (V7.02)
  56. **
  57. **              Added pulldown functions.  This is actually a replacement
  58. **              for wn_popup but adding it in this way will protect
  59. **              existing users software investment.
  60. **              (wn_pdown.c)                            (V7.01)
  61. **
  62. **              Certified Borland C++ 3.0 and TC++ for Windows
  63. **              (no code changes)                       (V7.00)
  64. **
  65. **              Certified Microsoft Quick C for Windows.
  66. **              (no code changes)                       (V6.16)
  67. **       
  68. **              wn_frmget was not BACK TABBING over display text.
  69. **              Thanks to Rick Brown for reporting the problem and
  70. **              the fix.
  71. **              (wn_frmget.c)                           (V6.15)
  72. **
  73. **        wn_getca was calling wns_err with an incorrect parameter.
  74. **        (wn_puts.c)                (V6.14)
  75. **
  76. **  The following changes were incorporated in the 10/31/91 release:
  77. **
  78. **              Certified WATCOM 8.5, MIX Power C 2.10
  79. **              Borland TC++ 1.01, Borland TC 2.01, Borland C 2.0
  80. **
  81. **              Dropped formal support of CI86, Datalight,
  82. **              Aztec, and Watcom's EXPRESS C.
  83. **              DO NOT CONFUSE EXPRESS C WITH WATCOM'S OPTIMIZING
  84. **              C COMPILER.
  85. **                      
  86. **              Added wn_getca (get char and atrib from window).
  87. **              (wn_puts)                               (V6.13)
  88. **
  89. **              Added wn_gmltext (get multiline text)
  90. **              (wn_gtext, winboss.h)                   (V6.12)
  91. **
  92. **              Taught wn_input about ^RightArrow and ^LeftArrow.
  93. **              AKA word right and word left.  Ground work for
  94. **              wn_gtxbuf (get text buffer).
  95. **              (wn_input, winboss.h)                   (V6.11)
  96. **
  97. **              Added wn_gssn - get social security number
  98. **              (wn_gssn, wn_frmget, winboss.h)         (V6.10)
  99. **
  100. **              Added wn_clreol - Clear to end of line
  101. **              Added wn_clreow - Clear to end of window
  102. **              (wn_clrfns)                             (V6.09)
  103. **
  104. **              Added wn_gedate - get European date.
  105. **              (winboss.h, wn_frmget, wn_gedate)       (V6.08)
  106. **
  107. **              v_setatr & v_setrev are no longer macros, they are
  108. **              now functions.
  109. **              (winboss.h, wn_bios)                    (V6.07)
  110. **
  111. **              New shadow window type 510 which provides transparrent
  112. **              shadow (dimly lit characters). NOTE: windows with
  113. **              transparrent shadows can be moved freely, however,
  114. **              once they have been covered by another window and
  115. **              are moved the shadow area will loose sync with
  116. **              the underlying text.  This is not a bug it is a
  117. **              restriction.
  118. **              (wn_open, wn_move, wn_activ)            (V6.06)
  119. **
  120. **              Added v_gctype - get cursor type.  Ya all asked for it
  121. **              so ya all got it.
  122. **              (wn_bios)                               (V6.05)
  123. **
  124. **              wn_popup was not handling BACKSPACE correctly. Thanks
  125. **              to Harold Jackson for reporting the problem. 
  126. **              (wn_popup.c, winboss.h)                 (V6.04)
  127. **
  128. **              WN_SBIT's definition changed in TCVLIB.ASM
  129. **              (tcvlib.asm)                            (V6.03)
  130. **
  131. **              "windows.h"   renamed to "winboss.h"
  132. **              "windows.ext" renamed to "winboss.ext"
  133. **              "windows.fns" renamed to "winboss.fns"
  134. **              These changes were made to eliminate the pontential
  135. **              conflict between Borland C++ (2.X) and The Window BOSS.
  136. **              (various)                               (V6.02)        
  137. **
  138. **  The following changes were incorporated in the 01/07/91 release:
  139. **
  140. **  12.26.90 -  wn_hlinit was allocating more memory than was needed.
  141. **              (wn_help.c)                             (V6.01)
  142. **
  143. **              TopSpeed "C" support added.
  144. **              (windows.h, windows.fnt)
  145. **
  146. **              wn_gulong was short 1 byte on the mask it passes 
  147. **              to wn_input.c.  Thanks to the TopSpeed Compiler for
  148. **              finding this.
  149. **
  150. **              Moved v_getchm() to "wn_mouse.c" to eliminate including
  151. **              ANY mouse code from applications that do not call
  152. **              any of the mouse functions.  v_getchm() was previously
  153. **              located in "wn_bios.c".
  154. **
  155. **              Microsoft 6.00A certification.
  156. **
  157. **  12.14.90 -  wn_close was not setting wn->shadow to FALSE when
  158. **              closing shadowed windows.  This was causing wn_activate
  159. **              to do potentially foolish things.       (V6.00)        
  160. **
  161. **  (11.01.90)  ** [Limited distribution release]
  162. **
  163. **  09.14.90 -  Watcom 8.0 Support                      (V5.22)
  164. **
  165. **  08.25.90 -  Added v_getchm() - get character or mouse press.
  166. **              (wn_mouse, wn_bios, windows.c, 
  167. **              windows.ext)                            (V5.21)
  168. **
  169. **  07.25.90 -  Zortech 2.10 Support.                   (V5.20)
  170. **
  171. **  07.23.90 -  Mix Power C 2.00 Support.               (V5.19)
  172. **
  173. **  07.18.90 -  Turbo C++ Support.  Created TCVLIB.ASM to get around
  174. **              Borland's oversight with regard to "CONST".
  175. **              (wn_print.c, tcvlib.asm)                (V5.18)
  176. **
  177. **  The following changes were incorporated in the 07.01.90 release:
  178. **
  179. **  06.16.90 -  Cosmetic and misc changes: (BOSSDEMO.C,
  180. **              MAKELIB.BAT (LC6), include memory model directives
  181. **              for Lattice 6.XX batch files).           
  182. **              Thanks again to Bill Hinkle.            (V5.17)
  183. **
  184. **              QuickC 2.5 Support.                            
  185. **
  186. **              MSC 6.0 Support.  Changed "windows.h" to CAST
  187. **              NULL as an int.
  188. **              (windows.h)                                    
  189. **
  190. **  04.04.90 -  wn_help was taught to use wn_putsa to enforce user
  191. **              specified help screen attributes.  Tip of the hat
  192. **              to Chris Madsen.
  193. **              (wn_help.c)                             (V5.16)
  194. **
  195. **  03.23.90 -  Added "wns_escape". This is set to TRUE by wn_input
  196. **              whenever ESCAPE has terimated the input.  ESCAPE
  197. **              now terminates input for all input field types.
  198. **              (wn_gbool, wn_gdate, wn_double, wn_gfloat, wn_gphone)
  199. **              (wn_gtime, wn_guint, wn_gulong, wn_gint)
  200. **              Thanks Dexter!!                         (V5.15)
  201. **
  202. **  03.12.90 -  Due to popular request, wn_open now range checks
  203. **              the window parameters to make sure that the window
  204. **              will actually fit on the screen.  NULL is returned
  205. **              if not.  This will prevent some cockpit "bad handle"
  206. **              error exits.
  207. **              (wn_open.c)                             (V5.14)
  208. **
  209. **  03.08.90 -  Added wn_hlinit, wn_help, wn_popup, and wn_qpopup.
  210. **              These functions are close clones to the old sample
  211. **              code provided in help.c and popup.c.  HELP.C and
  212. **              POPUP.C will no longer be distributed.
  213. **              (wn_help.c, wn_popup.c, windows.h)
  214. **              (genindex.c)                            (V5.13)
  215. **
  216. **  03.07.90 -  Placed all "externals" in "windows.ext".  This is
  217. **              being done to ease the burden of making changes
  218. **              to both global and external data.  This will also
  219. **              keep all the constants in one place.
  220. **              (windows.c, windows.h, windows.ext)     (V5.12)
  221. **
  222. **  03.06.90 -  HELP Key is now user definable.  The global wns_hkey
  223. **              has been added and defaults to F1.  This global
  224. **              can be set directly of via the wn_shkey() function.
  225. **              (windows.c, wn_init.c)                  (V5.11)
  226. **
  227. **  03.04.90 -  Added wn_stitle (Supertitle).  wn_stitle provides
  228. **              (top, bottom) (centered, left, right) titles!
  229. **              wn_stitle.c                             (V5.10)
  230. **
  231. **  03.03.90 -  Added wn_gatext - get ascii (ANY ascii text).
  232. **              Now you can input graphics characters!
  233. **              Tnx to Werner Schonber for the suggestion.
  234. **              wn_gtext.c                              (V5.09)
  235. **
  236. **  03.01.90 -  Fine tuned overlap detection to improve performance.
  237. **              wn_activ.c                              (V5.08)
  238. **
  239. **  02.25.90 -  Shadow window support. wn_activ.c, wn_close.c,
  240. **              wn_move.c, windows.h, windows.c, wn_open.c 
  241. **                                                      (V5.07) 
  242. **
  243. **  02.24.90 -  Eliminated most of the assembler functions.  This
  244. **              was done to provide better support for the HUGE
  245. **              memory model.
  246. **              (c:{wn_bios, wn_mouse, wn_sup}, *.asm)  (V5.06)
  247. **
  248. **  02.04.90 -  Linked exploding windows to time of day clock.
  249. **              Added wns_gticks() in wn_open.c.
  250. **              nap() in BOSSDEMO now uses wns_gticks.
  251. **              (wn_open.c)                             (V5.05)
  252. **
  253. **  02.03.90 -  wn_sdelspc was not handling requests to delete 
  254. **              trailing and leading spaces from strings that were
  255. **              only spaces!  Tnx es a tip-o-de-hat to Pat Elam,
  256. **              M. G. F. Gilliland, M.D., and Harold Jackson.
  257. **              (wn_string.c)                           (V5.04)
  258. **
  259. **  01.28.90 -  wns_movscr was not allowing for 132 column or
  260. **              wider screens.  It was taught how to allocate memory 
  261. **              for user defined physical screen sizes.  Thanks to the
  262. **              folks at Atomic Energy of Canada LTD. 
  263. **              (wn_sup.c)                              (V5.03)
  264. **
  265. **           -  v_cls() in "wn_bios" was taught about wni_mxrows 
  266. **              and wni_mxcols. 
  267. **              (wn_bios.c)                             (V5.02)
  268. **
  269. **  01.20.90 -  Pulldown code in BOSSDEMO would not work if called
  270. **              twice.  The problem was traced to the "winopn" member
  271. **              of the static structure mainbar.  Setting "mainbar.winopn"
  272. **              to FALSE before "wn_close(mainbar.wpsave)" in "pddemo()"
  273. **              solves the potential problem.  Thanks to Russ Brown for
  274. **              reporting the problem. 
  275. **              (bossdemo.c)                            (V5.01)
  276. **
  277. **              Version conversion table:
  278. **              
  279. **                   Base Release    Base Version
  280. **                      ??.??.86        1.00
  281. **                      ??.??.87        2.00
  282. **                      ??.??.88        3.00
  283. **                      ??.??.89        4.00
  284. **                      ??.??.90        5.00        
  285. **
  286. **  The following changes were incorporated in the 02.15.90 release:
  287. **                         AKA Version 5.00
  288. **
  289. **  01.10.90 -  WCVLIB.ASM created.  This file contains the assembly 
  290. **              language routines for WATCOM 7.0.  Previous versions of
  291. **              WATCOM should use MSVLIB.ASM.  
  292. **
  293. **  01.05.89 -  Physical windows wider than 80 columns were not 
  294. **              working correctly.  Thanks to all who reported this
  295. **              problem. (wn_actic.c, wn_sup.c, windows.c, wn_init.c).
  296. **              The constant "4096" was not removed in wn_savres. It
  297. **              does not impact the physical sceen size logic but does 
  298. **              allow the code of those who have "tinkered" with video 
  299. **              pages to continue to work.
  300. **
  301. **  12.22.89 -  Re-assembled all assembly language routines to insure
  302. **              that wni_mxcols, wni_mxrows, and wni_mxneed were being
  303. **              used correctly.
  304. **
  305. **  11.30.89 -  ZORTECH 2.0 Support.  Please note that ZORLIB version
  306. **              2.0 can not create a usable LWIN.LIB.  Microsoft's LIB
  307. **              works fine and should be used.  ZORTECH has been notified
  308. **              of the problem.
  309. **
  310. **  11.24.89 -  jeesh... One line exploding windows exploded again!
  311. **              This time we got the gremlin!! Tnx to Michael Canfield
  312. **              for suppling the test case.
  313. **
  314. **  (11.15.89)  ** [Limited distribution release]
  315. **
  316. **  10.28.89 -  Modified wn_title to insure ALL compiliers process
  317. **              hex values that are imbedded into the title properly.
  318. **              (e.g. "Hello \xcd There!")
  319. **              Thanks to Don Wahl for pointing out the discrepancy.
  320. **
  321. **  10.25.89 -  It would appear that the PC/PC_CLONE BIOS can not deal 
  322. **              with scrolling single line windows.  wn_insrow() was taught 
  323. **              to erase single line windows and avoid using the 
  324. **              BIOS for this special case.  This problem does not exist
  325. **              on AT or PC/2 class machines.  Thanks to Harold Jackson
  326. **              for reporting the problem.
  327. **
  328. **  10.24.89 -  Eliminated a potential multiple cursor problem with
  329. **              the mouse cursor when a window is being saved/restored
  330. **              with an active mouse.  Tip of the hat to Steve Thatcher
  331. **              of Attachmate.
  332. **
  333. **  10.20.89 -  Corrected a bug in wn_open to allow 1 line exploding 
  334. **              windows to function properly.  Thanks to John F. La Fleur 
  335. **              for reporting the problem.
  336. **
  337. **              wn_puts was not handling borderless windows properly.
  338. **              Thanks to Tim Keane for reporting the problem.
  339. **
  340. **              Lattice Version 6.0 Support
  341. **
  342. **  09.27.89 -  Logic was added to wn_input to insure that user supplied
  343. **              non null editing buffers are the same lenth as their masks!
  344. **              This logic will prevent garbage from appearing when 
  345. **              wn_input is called to peform data entry with a prefilled
  346. **              value in the user buffer (ubuff).
  347. **
  348. **  09.05.89 -  The forms package now treats the ESCcape
  349. **              like most common applications do.  That is to say that it 
  350. **              causes the current operation to cease.  Current 
  351. **              Window BOSS users please note that this feature can
  352. **              be disabled by removing the code in wn_frmget that contains
  353. **              "ESC.001" as part of the comments.
  354. **
  355. **  09.05.89 -  Added 1st character sensitivity to the sample popup menu
  356. **              code. ** NOTE ** -> For menu's that have different 1st
  357. **              character picks.  
  358. **              
  359. **  (08.25.89)  ** [Limited distribution release]
  360. **
  361. **  08.23.89 -  Exploding window opens were failing on SOME 
  362. **              adapters.  Even size exploding windows were
  363. **              failing. Corrected!
  364. **              Thanks to Richard Allen for his assistance.
  365. **
  366. **  The following changes were incorporated in the 07.01.89 release:
  367. **
  368. **  06.17.89 -  Lattice 3.41!! ... The version release race is on!
  369. **
  370. **  05.29.89 -  Mix Power C 1.30 Support.  
  371. **
  372. **  05.25.89 -  Added wn_gutext and wn_gltext.  Get upper case only
  373. **              and lower case only text functions.  Thanks to
  374. **              Charlie Munao for the suggestion.  Improved code 6/6/89.
  375. **
  376. **  05.23.89 -  wn_frmcls now sets the form pointer to the form being
  377. **              closed to NFRM and the individual field pointers to
  378. **              NFLD. This should help those who attempt to dectect
  379. **              if a form/field is active.        
  380. **
  381. **  05.10.89 -  wn_close now sets the window pointer to the window 
  382. **              being closed to WNLPTR.  This should help those who
  383. **              attempt to detect if a window is open.
  384. **
  385. **           -  Moved definition of FAR MEMORY marcos from "wn_sup.c"
  386. **              and "wn_activ.c" to "windows.h".
  387. **
  388. **  05.06.89 -  By popular request... WN_FRMGET now displays both the
  389. **              field prompt and data entry mask for all fields prior
  390. **              to accepting input for the 1st field.  Accomplished by
  391. **              introducing "wni_frmflg" which is used/tested by
  392. **              all the data entry functions, wn_input, and wn_frmget.
  393. **
  394. **  05.05.89 -  Exploding window logic was tweeked to provide smoother
  395. **              explosions.  
  396. **
  397. **  05.04.89 -  Incorporated support for user defined PHYSICAL screen
  398. **              size.  New globals: wni_mxrows, wni_mxcols, wni_mxneed.
  399. **              Globals are defined in "windows.c" and are referenced in
  400. **              "windows.h".  The globals are max rows, max cols, and max
  401. **              memory required to save a *complete* screen image (rows *
  402. **              col * 2).  A new version of wn_init, wn_psinit has be
  403. **              provided to properly set the globals.  Refer to the manual
  404. **              for a complete discussion.  The defaults are 25, 80, and 
  405. **              4000.  Usefull for applications and/or systems that run
  406. **              in 43 line EGA or 50 line VGA mode.  Since The BOSS
  407. **              assumes the screen size to be fixed, wn_psinit must be
  408. **              called before ANY windows are opened.
  409. **
  410. **  04.30.89 -  v_kstat now returns TRUE rather than (-1). This conforms
  411. **              to the constant in "windows.h".  Thanks to Clive Basson
  412. **              at Infostat!
  413. **
  414. **           -  wns_dput (internal routine) was modified to call
  415. **              wns_savres for all writes.  This will improve
  416. **              normal screen output (speed) in most cases.
  417. **
  418. **           -  wns_drow (internal routine) now calls wns_savres 
  419. **              for all writes. This will improve normal screen 
  420. **              output (speed) in most cases.
  421. **
  422. **           -  wn_title now calls wn_dput to write title for 
  423. **              faster title writes.
  424. **
  425. **  04.15.89 -  wn_gulong corrected to use common "%lu" .vs. "%U"
  426. **
  427. **  04.05.89 -  Watcom 7.0 Support.  Tip of the hat to the folks at
  428. **              the Watcom Compiler factory... Once again, they proved
  429. **              that you can release a MAJOR upgrade without breaking
  430. **              anybody's hard work (code).
  431. **
  432. **  04.04.89 -  Lattice 3.4X support. (LC3) Tip of the hat to
  433. **              William Hinkle & Jon Martin (UNISYS) for thier comments,
  434. **              suggestions and support.
  435. **
  436. **           -  Float/Double promotion & demotion caused wn_gfloat 
  437. **              trouble.  Resolved with #if LC3 in wn_gfloat. (LC3)
  438. **
  439. **           -  windows.h was modified to eliminate warnings 
  440. **              about undefined control blocks and include
  441. **              stdlib.h for proper memory allocation
  442. **              prototypes. (LC3)
  443. **
  444. **           -  Fixed LCP.BAT, APMODEL.BAT, and ADMODE.BAT (LC3)
  445. **
  446. **           -  Eliminated *true* unreferenced variables. (LC3)
  447. **
  448. **  03.11.89 -  Quick C Version 2.0 support. 
  449. **
  450. **  03.10.89 -  wn_frmopn/cls was tweeked to be a bit smarter about
  451. **              memory allocation & deallocation.  Tip of the hat
  452. **              to Barry Roomberg & Peter Spreadborough.  This 
  453. **              solves the *very* random "NULL POINTER" message
  454. **              on exit. 
  455. **
  456. **  The following changes were incorporated in the 02.01.89 release:
  457. **
  458. **  02.01.89 -  Mouse support, get double, get unsigned long,
  459. **              get password, left justify string, right justify string
  460. **              center string, delete leading and/or trailing blanks.
  461. **              Files: wn_mouse.c, wn_string.c, wn_gpword.c
  462. **              Files: wn_gdouble.c, wn_gulong.c
  463. **
  464. **  12.26.88 -  wn_restore was modified to allow for those who like to
  465. **              diddle with a "wn_save"d screen image.  This also 
  466. **              corrected a potential problem with restoring saved 
  467. **              images.  Thanks to Mike Blaszczak for reporting the
  468. **              conflict.
  469. **
  470. **  08.01.88 -  added #if __TURBOC__ to windows.c
  471. **
  472. **  The following changes were incorporated in the 08.15.88 release:
  473. **
  474. **  07.24.88 -  wn_puts() was not fixing up color attributes on mono
  475. **              systems - corrected.
  476. **
  477. **  07.10.88 -  AZTEC "C" support.  Thanks to Dexter McCloud for his
  478. **              assistance.
  479. **
  480. **           -  help() has been modified to be compatiable with
  481. **              AZTEC.  Please take note as format of the ".hlp" file
  482. **              has changed. Refer to Intelc.hlp for examples.
  483. **
  484. **  07.03.88 -  WATCOM "C" support.
  485. **
  486. **           -  smartened up wn_frmopn() & wn_frmcls() to avoid
  487. **              possible NULL Pointer Assignments.
  488. **
  489. **           -  cleaned up pointer conversion warnings in wn_activate,
  490. **              wn_close, wn_open, wn_restore, wn_save. defined
  491. **              WNLPTR in windows.h.
  492. **            
  493. **           -  eliminated various warning messages during compilation,
  494. **              Lattice still complains for no valid reason on a few
  495. **              modules.
  496. **
  497. **           -  wns_alloc now use runtime routines allocating memory
  498. **              in the large model, dos routines in small code models.        
  499. **
  500. **           -  wns_alloc allocates and immediately frees all available 
  501. **              memory in the small data memory models before allocating far 
  502. **              memory. This eliminates memory mgmt clashes for some
  503. **              compilers.  
  504. **
  505. **           -  eliminated the need for "peek.c"
  506. **
  507. **  06.29.88 -  Corrected wn_activate to always fixup the cursor
  508. **              display for the activated window.  Thanks to
  509. **              John P. Toscano for reporting the problem.
  510. **
  511. **  06.12.88 -  Functions in wn_activate & wn_sup that call _vidblt
  512. **              and xferdata were taught how to deal with variable
  513. **              offsets from wns_alloc.  
  514. **
  515. **  The following changes were incorporated in the 06.01.88 release:
  516. **
  517. **  06.01.88 -  Incoporated data entry routines!
  518. **
  519. **              Smartened up wn_puts on border detection.
  520. **
  521. **  05.14.88 -  Added: wn_putc  (window put character)
  522. **                     wn_putca (window put character & attribute)
  523. **              Both can be found in the WN_PUTS.C file.          
  524. **
  525. **  05.10.88 -  wn_dmode was now properly sets PAINT & FLASH modes for
  526. **              EGA video adapters - Thanks to Mike Gross from
  527. **              West Germany
  528. **
  529. **  The following changes were incorporated in the 05.06.88 release:
  530. **
  531. **  05.06.88  - Support for MIX Power C added. - Tip of the hat to
  532. **              Bob Lewis for his assistance.
  533. **
  534. **  04.27.88  - The declaration of _stklen was removed from BOSSDEMO.C,
  535. **              this will keep Turbo C happy.
  536. **
  537. **  03.22.88  - wn_activate ability to detect window overlap and
  538. **              handle borderless windows was improved.
  539. **
  540. **  03.22.88  - popup was taught how to handle text on the 0th line.
  541. **
  542. **  03.19.88  - v_spage was loading BH instead of AL. Thanks to
  543. **              Ross Schaach (TRAX, Corp.)
  544. **
  545. **  02.10.88  - wn_gets was modified to insure that charcters being
  546. **              echoed stay within the window borders.  Thanks to
  547. **              Dave McCracken for the suggestion.
  548. **
  549. **  01.14.88  - static declarations of filbuf and showpage were removed
  550. **              in help.c
  551. **
  552. **  The following changes were incorporated in the 11.20.87 release:
  553. **
  554. **  11.13.87  - Microsoft Ver 5.0 & Quick C Support
  555. **
  556. **  09.21.87 - wn_activate was occasionally incorrectly determining
  557. **             window overlap.  Thanks to the folks at Datalight
  558. **             and Marden Marshall for reporting the problem and supplying
  559. **             test cases.
  560. **
  561. **  09.17.87 - wn_init() and wn_exit() were modified to work around
  562. **             Turbo C's inability to handing allocating far memory
  563. **             in the large model.
  564. **
  565. **  09.07.87 - wns_push(), wns_pop(), wn_activate(), wn_move(),
  566. **             wns_image(), and wns_blt() were modified to use a table
  567. **             of global segments, offsets, and pointers.
  568. **             This was done to support the wn_init() and wn_exit()
  569. **             functions.  
  570. **
  571. **             wn_init() and wn_exit() added.  wn_init() must be the
  572. **             first window fucntion called and it must only be called
  573. **             once.  It works in conjucntion with wn_exit() to insure
  574. **             that the screen image on application entry is restored
  575. **             to the "T" on application exit.  wn_exit() must be the 
  576. **             last window function called.  One can not be used without
  577. **             the other.  Both should be used but are neither are
  578. **             required.
  579. **
  580. **  09.05.87 - wn_delrow was calling v_locate with args reversed
  581. **             causing the wrong section of the screen to be cleared
  582. **             on single line borderless windows.  Thanks to Paul
  583. **             Stephenson of Rockwell International for reporting both
  584. **             the problem and the cure.
  585. **
  586. **  09.03.87 - All assembler routines in DLVLIB.ASM now save/restore
  587. **             the SI & DI registers.  Datalight 3.10 and later 
  588. **             specific. The -w and -p command line parameters must
  589. **             be used when compiling The Window BOSS source code
  590. **             under Datalight 3.10 and later.
  591. **
  592. **  The following changes were incorporated in the 08.22.87 release:
  593. **
  594. **  08.10.87 - Added wns_dmode() to set the display mode.  
  595. **             wns_dmode(PAINT) sets the window display mode to paint
  596. **             style, wn_dmode(FLASH) sets the display mode to 
  597. **             flash style.  This function eliminates the need to set
  598. **             wn_sbit and wns_mtflg to produce the desired effects.
  599. **
  600. **  07.17.87 - wn_puts() & wn_putsa() perform simple range checking to
  601. **             insure that the string being displayed is/stays within
  602. **             the target window.
  603. **
  604. **  06.22.87 - Let's "C" specific code removed. Support will continue
  605. **             for previous versions but Mark William's products will
  606. **             not be supported in this or future releases.  This
  607. **             action is being as the result of compiler limitations.
  608. **
  609. **  06.17.87 - wn_activate now does INSTANT screen updates. Ditto
  610. **             for wn_move.  wn_mtype() returns 1 for EGA.  
  611. **             BLAZING screen updates on EGAs.
  612. **
  613. **  06.07.87 - wns_wtext() was incorrectely computing the offset for
  614. **             windows with wn_wrap enabled!
  615. **
  616. **  The following changes were incorporated in the 06.04.87 release:
  617. **
  618. **  06.03.87  - Support for BORLAND Turbo C!!
  619. **
  620. **  The following changes were incorporated in the 05.12.87 release:
  621. **
  622. **  05.12.87  - wns_text was incorrectly compensating for single line
  623. **              borderless windows (Attachmate follow up).
  624. **
  625. **  05.04.87  - EXPLODING windows are now supported!! Simply add 800 to
  626. **              the video page when calling wn_open()!
  627. **
  628. **            - Calls of the form wn_insrow(wn,0) and wn_delrow(wn,0) 
  629. **              caused the border to be klobbered.  wn_insrow() and
  630. **              wn_delrow() were taught about borders.
  631. **
  632. **  03.31.87  - wn_printf [wns_wtext()] was incorrectly displaying graphics 
  633. **              characters. Thanks to Mark MacGee for reporting the problem.
  634. **
  635. **  03.23.87  - Attachmate reported that wn_gets was doing funny things
  636. **              on single line bordered windows on PCs and PC clones but
  637. **              was fine on ATs and AT clones!  It would appear that the
  638. **              PC/PC_CLONE BIOS can not deal with scrolling single line
  639. **              windows.  wn_delrow() was taught to erase single line
  640. **              windows and avoid using the BIOS for this special case.
  641. **
  642. **  03.19.87  - Argh!! Datalight elected to use M_I86 as a predefined
  643. **              equate.  References to M_I86 were changed to 
  644. **              MSCV3 | MSCV4. (Datalight 3.XX)
  645. **
  646. **  The following changes were incorporated in the 03.15.87 release:
  647. **
  648. **  03.01.87  - wn_activate was incorrectly computing the coordinates of
  649. **              unbordered windows.  Thanks to Peter Fletcher for reporting
  650. **              the problem and supplying a solution.
  651. **
  652. **  01.22.87  - wn_dborder() was using the wrong attribute (wn-style,
  653. **              instead of wn->bstyle). Thanks to Peter Partch for
  654. **              reporting the problem and supplying a solution.
  655. **
  656. **  01.06.87  - wn_activate was not walking through the current linked 
  657. **              list of windows. In rare cases this would cause two
  658. **              windows to be considered non-overlapping when in fact
  659. **              they were.  Thanks to Robert Klotz for reporting the
  660. **              problem.
  661. **
  662. **  The following changes were incorporated in the 01.01.87 release:
  663. **
  664. **  12.19.86  - Removed a needless call to wn_err(wn,"wn_printf") in
  665. **              wn_title().
  666. **
  667. **  12.16.86  - Improved centering logic for window titles.
  668. **              Thanks to Steve Liberty for suggesting the change.
  669. **
  670. **  12.14.86  - Incorporated compiler specific equates in windows.h.
  671. **
  672. **  12.13.86  - wns_mtype() returns 0 for mode 3, 2 for mode 0 or 2,
  673. **              and 7 for mode 7. (Internal Use - This change allowed
  674. **              for the prevention of blue on black characters when
  675. **              the video mode is 2 and a color monitor is in use.
  676. **              (wns_fixc & wns_mtype).
  677. **
  678. **            - BASIC support for Mark Williams "Lets C".
  679. **
  680. **            - Tightend free() checks in wn_activate, wn_close, and
  681. **              wn_restore.
  682. **
  683. **  12.12.86  - wn_puts() was not adding the original physical cursor
  684. **              location to the logical cursor location. 
  685. **              Thanks to Marek Glowacki for reporting the problem.
  686. **
  687. **  12.10.86  - Allow v_locate() to position the cursor slightly off
  688. **              the screen.  Previous limit was (24,79) current limit
  689. **              is (25,80) which is just beyond the edge of the screen.
  690. **              This was done to insure that hidden cursors remain out
  691. **              of view.
  692. **
  693. **            - Improved cursor handling when wn_dmaflg = FALSE.
  694. **
  695. **  12.09.86  - Taught wn_activate to honor cursor position of window
  696. **              being activated. This will insure the cursor is always
  697. **              in the right logical and physical position. 
  698. **              More cosmetic enhancement than logic error correction.
  699. **
  700. **  The following changes were incorporated in the 12.01.86 release:
  701. **
  702. **  11.28.86  - Reverse video attribute was not being set correctly
  703. **              on MGAs - corrected.
  704. **
  705. **  11.19.86  - wn_dborder was incorrectly computing the row offset.
  706. **              Thanks to Steve Thatcher for reporting the problem.
  707. **              
  708. **  11.16.86  - Added ".smeth" member to window control block. This 
  709. **              member defines the scrolling method to be used in
  710. **              the window. It can be set to BIOS or DMAS, the default
  711. **              is DMAS.  
  712. **
  713. **            - All routines that reference wn_activate will return
  714. **              NULL if the window could not be activated.  This is 
  715. **              usually due to a lack of free memory.
  716. **
  717. **  The following changes were incorporated in the 11.14.86 release:
  718. **
  719. **  11.13.86  - Closing windows in random order when exiting "sometimes"
  720. **              produced null pointer assignment error messages or 
  721. **              incorrect screen images - corrected.
  722. **
  723. **            - wn_natrib() was not storing the newly defined window
  724. **              attribute in the window control block - corrected.
  725. **
  726. **  11.09.86  - Support for Datalight C added.
  727. **
  728. **  11.02.86  - v_border() added.  Allows color of border area to be
  729. **              set on CGAs with color monitors.
  730. **
  731. **  11.01.86  - wn_fixcsr was not adding the original physical cursor
  732. **              location to the logical cursor location. 
  733. **              Thanks to Bill Harts for reporting the problem.
  734. **
  735. **            - wn_puts was computing the virtual cursor location
  736. **              incorrectly. Thanks to Eric Lundstrom!
  737. **
  738. **            - Logic to dectect null strings was incorporated into
  739. **              _vidblt.  This will prevent 64k worth of trash from
  740. **              being blitted to the video ram.
  741. **
  742. **  10.30.86  - All references to MSC in "windows.h" were changed
  743. **              to M_I86.  This forces "windows.fns" to be included
  744. **              under Microsoft C.  This change was also applied to
  745. **              "windows.c".
  746. **
  747. **  10.26.86  - Full float, long, etc. support for wn_printf in
  748. **              all Lattice versions.  Microsoft 3.XX is the only
  749. **              one in the dark ages.
  750. **
  751. **  10.23.86  - Tip of the hat to Russ Thackson for the improved
  752. **              overlaping window detection technique incorporated
  753. **              in wn_activate().
  754. **
  755. **  The following changes were incorporated in the 10.22.86 release:
  756. **
  757. **  10.22.86  - wn_activate() was causing unnecessary window 
  758. **              thrashing on non-overlapping windows. Corrected.
  759. **
  760. **  The following changes were incorporated in the 10.10.86 release:
  761. **
  762. **  09.27.86  - Tiled windows are now supported! wn_activate() added.
  763. **
  764. **            - wn_gets() was not calling wns_err - corrected.  This
  765. **              was not a bug, just continued support for wild pointer
  766. **              checks.
  767. **
  768. **  09.25.86  - New logic for vidblt(). Fast mode now works on color
  769. **              without causing snow or flicker!!  Video updates now 
  770. **              occur at the fastest possible speed!  The effect of
  771. **              wn_sbit now conforms exactly to the description in the
  772. **              manual.
  773. **
  774. **            - wn_printf (CI86) now has full float support. Thanks
  775. **              to Rob Sullivan for reporting the CI86 problem. Lattice
  776. **              and MSC Version 3.0 are the only hold outs for full
  777. **              wn_print support.  MSC Version 3.0 support will never
  778. **              be incorporated. If you are using MSC Version 3.00 
  779. **              you will have to upgrade to Version 4.XX.  The price
  780. **              of the update is well worth it. Version 4.00 is a
  781. **              work of art! Lattice support will be delayed until
  782. **              Lattice gets around to supporting vsprintf() as
  783. **              defined by the evolving ANSI standard.
  784. **
  785. **  09.17.86  - seperate modules to decrease memory overhead.
  786. **
  787. **            - link list support (wn_open,wn_close,WINDOWPTR struct)
  788. **              This is the ground work for tiled window support.
  789. **
  790. **  09.02.86  - use registers in wns_savres() for speed (MSC).
  791. **
  792. **  The following changes were incorporated in the 08.30.86 release:
  793. **
  794. **  08.28.86  - wn_gets was delclared as (char *) but returning
  795. **              (void).  Corrected to return (char *).
  796. **
  797. **  08.27.86  - wns_wtext() was not correctly handling borderless
  798. **              windows. Corrected.
  799. **
  800. **            - wn_printf() was not correctly handing cases such as:
  801. **              wn_printf(wn,"%s %d %f %d\n", "text", 2, 2.2, 5);
  802. **              The window boss now supports a complete implementation
  803. **              of printf formatting under Microsoft C Version 4.00.
  804. **              All other compilers and versions support an INTEGER only
  805. **              wn_printf.  This will be corrected in a future release.
  806. **
  807. **  08.16.86  - Added wn_gets(). Get string in window with validation.
  808. **
  809. **  The following chages were incorporated in the 06.02.86 release.
  810. **
  811. **  06.02.86  - v_smode was using bh instead of ah. Corrected.
  812. **              Thanks to Rob Rainwater!!
  813. **
  814. **  05.26.86  - Added wn_natrib. Set new window attribute NOW!
  815. **
  816. **  05.25.86  - Corrected a potential problem with a couple of the routies
  817. **              in MSVLIB.ASM. Registers SI & DI were being used but not
  818. **              being saved. This "may" cause spurious probles with "C"
  819. **              programs that use register variables.  Microsoft C 3.0 only.
  820. **
  821. **            - wn_titla was not calling wns_fixc. Corrected.
  822. **
  823. **  05.24.86  - Added wn_titla. write window title with attributes.
  824. **
  825. **  05.10.86  - wn_putsa was not calling wns_fixc.  This caused problems
  826. **              when CGA was in mode bw80 but putsa was called with a
  827. **              valid color atrib.
  828. **
  829. **  The following changes were incororated in the 05.08.86 release.
  830. **
  831. **  05.07.86  - Additions for Microsoft "C" version 3.0
  832. **
  833. **  05.05.86  - wn_printf fix for lattice version 3.0.
  834. **
  835. **  04.25.86  - Added support for handling backspace, delete, & BELL
  836. **              characters correctly (wns_wtext).
  837. **
  838. **              Incorporated v_wtty in vlib.asm.
  839. **
  840. **  Initial Release..
  841. **
  842. **  01.24.86  - Initial release with a bit of a false start thanks to
  843. **              Microsoft's Lib.
  844. **
  845. */
  846.  
  847. 
  848.