home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / asmutil / asmlib37.zip / MULTIWIN.DOC < prev    next >
Text File  |  1993-02-10  |  20KB  |  674 lines

  1.  
  2. ************************  MULTI-WINDOW SUBSYSTEM  ****************************
  3.  
  4. ASMLIB Multi-Window text mode video subroutines
  5. Copyright (C) 1992, 1993 Douglas Herr ■ All rights reserved
  6.  
  7. ASMLIB's multi-window system allows several pop-up windows to be stored
  8. at any given time, and permits any one window or any group of overlapping
  9. or non-overlapping windows to be displayed on the screen in any position
  10. and in any order.  Pop-up windows may be created, printed to, cleared or
  11. moved whether displayed or hidden.  Up to 10 pop-up windows may be open at
  12. any time.  All MultiWindow subroutines assume DS:@data.
  13.  
  14. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  15.  
  16. MWBORDER:    puts single- or double-lined border, or character border,
  17.              around an open window; sets border flag.
  18.              The Multi-Window border flag prevents MWClear, MWFill, MWPrint
  19.              and MWCenter from over-writing the border for the selected
  20.              window.
  21. Source:      mwborder.asm (multiwin.asm)
  22.  
  23. Call with:   BX = window handle
  24.              AH = border color attribute
  25.              AL = border type: -1 = double line
  26.                                 0 = single line
  27.                     1 through 254 = ASCII character
  28. Returns:     if CF = 0, no error
  29.              if CF = 1, handle not valid or window dimensions too small
  30. Uses:        flags
  31. Example:
  32.  
  33. include asm.inc
  34.  
  35. extrn   mwinit:proc, mwopen:proc, mwborder:proc
  36.  
  37. .data
  38. whandle dw 0
  39. wdata   dw 0,0,19,39            ; 20 rows, 40 columns
  40.  
  41. .code
  42. ; program fragment assumes DS:@data
  43.         .
  44.         .
  45.         .
  46.         call    mwinit
  47.         lea     bx,wdata        ; point to window corner data
  48.         call    mwopen          ; open window in multi-window system
  49.         jc      problem         ; if error, go take care of it
  50.         mov     whandle,ax      ;  else save window handle
  51.  
  52. ; give the window a single-lined border in red
  53.         mov     bx,ax           ; handle in BX
  54.         mov     al,0
  55.         mov     ah,12
  56.         call    mwborder
  57.  
  58. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  59.  
  60. MWCENTER:    centers a string in selected window
  61. Source:      mwcenter.asm (mwprint.asm, multiwin.asm)
  62.  
  63. Call with:   BX = window handle
  64.              DS:[SI] -> ASCIIZ string
  65.              DH = window row
  66.              AH = color attribute
  67. Returns:     DL = window column used by MWPrint
  68. Uses:        AL, DL, flags
  69.  
  70. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  71.  
  72. MWCLEAR:     clears a window managed by the MultiWindow system
  73. source:      mwclear.asm (multiwin.asm)
  74.  
  75. Call with:   BX = window handle
  76.              AH = color attribute
  77.              if the window's border is enabled, it is not cleared
  78. Returns:     nothing
  79. Uses:        AX, flags
  80. Example:     see example for MWNoBorder
  81.  
  82.  
  83.  
  84. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  85.  
  86. MWCLOSE:     releases a window's memory buffer to DOS
  87. Source:      multiwin.asm
  88.  
  89. Call with:   BX = valid window handle
  90.              assumes DS:@data
  91. Returns:     if CF = 0, no error
  92.              if CF = 1, bad handle
  93. Uses:        flags
  94. Example:
  95.  
  96. include asm.inc
  97.  
  98. extrn   mwtop:proc, mwclose:proc
  99.  
  100. .code
  101. ; program fragment assumes DS:@data
  102.         .
  103.         .
  104.         .
  105.  
  106.         mov    bx,window_handle
  107. ; all done with this window
  108. ; first I want to move it to the top of the window "stack"
  109. ; so the next window I open will be on top
  110.  
  111.         call   mwtop
  112.  
  113. ; then get rid of it
  114.         call   mwclose
  115.  
  116.  
  117. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  118.  
  119. MWCLOSEALL   close all open windows, releasing buffers
  120. Source:      mwclose.asm (multiwin.asm)
  121.  
  122. Call with:   no parameters
  123. Returns:     nothing
  124. Uses:        nothing; all registers and flags are saved
  125. Example:
  126.  
  127.         call   mwcloseall
  128.  
  129.  
  130. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  131.  
  132. MWDEFAULT:   change default status of opened windows
  133. Source:      mwdef.asm (multiwin.asm)
  134.  
  135. Call with:   AL = option bits
  136.               bit 0  if zero, hide windows
  137.                      if one, display window
  138.               bit 2  if zero, no shadow
  139.                      if one, shadow enabled
  140.              MWDefault affects only windows opened AFTER MWDefault is called.
  141.              Does not change the status of previously-opened windows.
  142.              assumes DS:@data
  143. Returns:     nothing
  144. Uses:        AL
  145. Example:
  146.  
  147. include asm.inc
  148.  
  149. extrn   mwinit:proc, mwopen:proc
  150. extrn   mwdefault:proc
  151.  
  152. .code
  153. ; program fragment assumes DS:@data
  154.         .
  155.         .
  156.         .
  157.         call    mwinit
  158.         mov     al,101b            ; all windows with shadow and unhidden
  159.         call    mwdefault          ; update defaults
  160.  
  161.  
  162. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  163.  
  164. MWDISPLAY:   display open windows on the screen
  165. Source:      multiwin.asm
  166.  
  167. Call with:   no parameters
  168.              MWDisplay updates the screen by displaying all unhidden
  169.              open windows.  No windows will ever show up on the screen
  170.              if you don't call MWDisplay.  You must call MWInit before
  171.              using MWDisplay.
  172. Returns:     nothing
  173. Uses:        nothing
  174. Example:     see example code for MWPrint
  175.  
  176.  
  177. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  178.  
  179. MWHIDE:      hide selected window
  180.              a "hidden" window is ignored by MWDISPLAY
  181. Source:      multiwin.asm
  182.  
  183. Call with:   BX = window handle
  184. Returns:     if CF = 0, no error
  185.              if CF = 1, bad handle number
  186. Uses:        flags
  187. Example:
  188.  
  189. include asm.inc
  190.  
  191. extrn   mwinit:proc, mwopen:proc, mwhide:proc
  192.  
  193. .data
  194. whandle dw 0
  195. wdata   dw 0,0,19,39           ; 20 rows, 40 columns
  196.  
  197. .code
  198. ; program fragment assumes DS:@data
  199.         .
  200.         .
  201.         .
  202.         call   mwinit
  203.         lea    bx,wdata        ; point to window corner data
  204.         call   mwopen          ; open window in multi-window system
  205.         jc     problem         ; if error, go take care of it
  206.         mov    whandle,ax      ;  else save window handle
  207.         mov    bx,ax           ; copy handle to AX
  208.         call   mwhide          ; don't display window when MWDisplay is called
  209.  
  210.  
  211.  
  212. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  213.  
  214. MWHIDEALL:   hide all open windows
  215. Source:      mwhide.asm (multiwin.asm)
  216.  
  217. Call with:   no parameters
  218. Returns:     nothing
  219. Uses:        nothing
  220. Example:
  221.  
  222. include asm.inc
  223.  
  224. extrn   mwinit:proc, mwhideall:proc
  225. extrn   mwopen:proc, mwdisplay:proc
  226.  
  227. .code
  228.         call    mwinit
  229.  
  230. ; program opens several windows
  231.         .
  232.         .
  233.         .
  234.  
  235. ; make all open windows disappear
  236.         call    mwhideall
  237.         call    mwdisplay
  238.  
  239.  
  240.  
  241. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  242.  
  243. MWINIT:      initializes multi-window system.  Several pop-up windows may
  244.              be popped onto or removed from a base screen in any order.
  245.              You must re-initialize the multi-window system each time the
  246.              base screen changes.  MWInit does not affect any open windows.
  247. Source:      multiwin.asm (screen.asm, smem.asm)
  248.  
  249. Call with:   no parameters
  250.              assumes DS:@DATA
  251. Returns:     AX = segment address of saved base screen
  252. Uses:        AX
  253. Example:
  254.  
  255. include asm.inc
  256.  
  257. extrn   mwinit:proc
  258.  
  259. .code
  260. ; program fragment assumes DS:@data
  261.         .
  262.         .
  263.         call   mwinit
  264.  
  265. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  266.  
  267. MWNOBORDER:  clears the border flag for the associated window
  268. Source:      mwborder.asm (multiwin.asm)
  269.  
  270. Call with:   BX = window handle
  271. Returns:     if CF = 0, no error
  272.              if CF = 1, bad handle number
  273. Uses:        flags
  274. Example:
  275.  
  276. include asm.inc
  277.  
  278. extrn   mwinit:proc, mwopen:proc
  279. extrn   mwborder:proc, mwnoborder:proc
  280. extrn   mwclear:proc
  281.  
  282. .data
  283. window_handle dw 0
  284. wdata         dw 0,0,19,39            ; 20 rows, 40 columns
  285.  
  286. .code
  287. ; program fragment assumes DS:@data
  288.         .
  289.         .
  290.         .
  291.         call    mwinit
  292.         lea     bx,wdata           ; point to window corner data
  293.         call    mwopen             ; open window in multi-window system
  294.         jc      problem            ; if error, go take care of it
  295.         mov     window_handle,ax   ;  else save window handle
  296.  
  297. ; give the window a single-lined border in red
  298.         mov     bx,ax              ; handle in BX
  299.         mov     al,0
  300.         mov     ah,12
  301.         call    mwborder
  302.         .
  303.         .
  304.  
  305. ; some time later, I want to clear the ENTIRE window, including the border
  306.         mov     bx,window_handle
  307.         call    mwnoborder
  308.         mov     ah,any_old_color
  309.         call    mwclear
  310.  
  311.  
  312. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  313.  
  314. MWNOSHADOW:  disables "shadow" effect for selected window
  315. Source:      mwshadow.asm (multiwin.asm)
  316.  
  317. Call with:   BX = window handle
  318. Returns:     if CF = 0, no error
  319.              if CF = 1, bad handle number
  320. Uses:        flags
  321. Example:
  322.  
  323. include asm.inc
  324.  
  325. extrn   mwinit:proc, mwopen:proc, mwnoshadow:proc
  326.  
  327. .data
  328. whandle dw 0
  329. wdata   dw 0,0,19,39           ; 20 rows, 40 columns
  330.  
  331. .code
  332. ; program fragment assumes DS:@data
  333.         .
  334.         .
  335.         .
  336.         call   mwinit
  337.         lea    bx,wdata        ; point to window corner data
  338.         call   mwopen          ; open window in multi-window system
  339.         jc     problem         ; if error, go take care of it
  340.         mov    whandle,ax      ;  else save window handle
  341.         mov    bx,ax           ; copy handle to AX
  342.         call   mwnoshadow      ; disable shadow for this window
  343.  
  344.  
  345.  
  346. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  347.  
  348. MWOPEN:      opens a pop-up window for subsequent display
  349. Source:      multiwin.asm (screen.asm, smem.asm)
  350.  
  351. Call with:   DS:[BX] pointing to window corner data
  352.              assumes DS:@data
  353.  
  354.              Up to 10 windows may be open at any time; if you need more,
  355.              you will need to change MWINDOW_COUNT in multiwin.asm and
  356.              re-assemble.  If two or more windows overlap on the screen,
  357.              the one opened last will be displayed on top of the other(s).
  358.              The window appearing on top may be changed with MWTop.
  359.  
  360.              Note the default status of all opened windows:
  361.                hidden
  362.                no shadow
  363.                no border
  364.  
  365.              You may change the status of any open window with
  366.              MWUnHide, MWHide, MWShadow, MWNoShadow, MWBorder and MWNoBorder;
  367.  
  368.              All open windows may be hidden or un-hidden with
  369.              MWHideAll or MWUnHideAll;
  370.  
  371.              The default status of newly-opened windows may be changed
  372.              with MWDefault.
  373.  
  374. Returns:     if CF = 0, AX = multi-window handle
  375.              if CF = 1, insufficient DOS memory for window
  376. Uses:        AX, flags
  377. Example:
  378.  
  379. include asm.inc
  380.  
  381. extrn   mwinit:proc, mwopen:proc
  382.  
  383. .data
  384. whandle dw 0
  385. wdata   dw 0,0,19,39           ; 20 rows, 40 columns
  386.                                ; upper left corner of screen
  387. .code
  388. ; program fragment assumes DS:@data
  389.         .
  390.         .
  391.         .
  392.         call   mwinit
  393.         lea    bx,wdata        ; point to window corner data
  394.         call   mwopen          ; open window in multi-window system
  395.         jc     problem         ; if error, go take care of it
  396.         mov    whandle,ax      ;  else save window handle
  397.  
  398.  
  399. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  400.  
  401. MWPRINT:     print an ASCIIZ string to an open window
  402. Source:      mwprint.asm (multiwin.asm)
  403.  
  404. Call with:   BX = window handle
  405.              DS:[SI] pointing to an ASCIIZ string
  406.              AH = color attribute
  407.              DH = window row, DL = window column
  408.              assumes DS:@data
  409. Returns:     nothing
  410. Uses:        AL
  411. Example:
  412.  
  413. include  asm.inc
  414.  
  415. extrn   mwinit:proc, mwopen:proc
  416. extrn   mwprint:proc, mwdisplay:proc
  417.  
  418. .data
  419. window_handle dw 0
  420. wdata         dw 0,0,19,39            ; 20 rows, 40 columns
  421. row           db 1
  422. column        db 1
  423. color         db 23
  424. window_string db 'Print this in the window',0
  425.  
  426. .code
  427. ; program fragment assumes DS:@data
  428.         .
  429.         .
  430.         .
  431.         call    mwinit
  432.         lea     bx,wdata           ; point to window corner data
  433.         call    mwopen             ; open window in multi-window system
  434.         jc      problem            ; if error, go take care of it
  435.         mov     window_handle,ax   ;  else save window handle
  436.  
  437.         lea     si,window_string   ; point to text
  438.         mov     bx,ax              ; AX is still the handle
  439.         mov     dh,row             ; offset from top of window
  440.         mov     dl,column          ; offset from left side of window
  441.                                    ; ROW and COLUMN are relative to BORDER
  442.                                    ; if border is enabled
  443.         mov     ah,color
  444.         call    mwprint
  445.         call    mwdisplay          ; show all unhidden windows on the screen
  446.  
  447.  
  448.  
  449. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  450.  
  451. MWPRINTCE:   prints a string in selected window & clears to edge of window
  452.              clears to border if the window's border is enabled
  453. Source:      mwprint.asm (multiwin.asm)
  454.  
  455. Call with:   BX = window handle
  456.              DS:[SI] pointing to an ASCIIZ string
  457.              AH = color attribute
  458.              DH = window row, DL = window column
  459. Returns:     nothing
  460. Uses:        AL
  461. Example:     see MWPrint
  462.  
  463.  
  464. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  465.  
  466. MWSELECT:    determines which window is visible at screen coordinate
  467. Source:      mwselect.asm (multiwin.asm)
  468.  
  469. Call with:   DH = screen row, DL = screen column
  470. Returns:     if CF = 0, BX = handle of window visible at these coordinates
  471.              if CF = 1, no window visible at these coordinates
  472. Uses:        BX, flags
  473. Example:
  474.  
  475. include asm.inc
  476.  
  477. extrn   mwselect:proc, mwtop:proc
  478.  
  479. .code
  480. ; program fragment assumes DS:@data
  481.         .
  482.         .
  483.         .
  484.  
  485. ; the mouse has been scurrying around the screen
  486. ; and the program has detected a mouse button press
  487. ; the mouse cursor is at row 3, column 14
  488.  
  489. ; determine which window the mouse has landed on
  490.         mov     dh,3
  491.         mov     dl,14
  492.         call    mwselect              ; get window visible at (3,14)
  493.         jc      no_window             ;  error? mouse must have had an itch
  494.         call    mwtop                 ; put this window on top of all others
  495.  
  496.  
  497. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  498.  
  499. MWSHADOW:    enables "shadow" effect for selected window
  500. Source:      mwshadow.asm (multiwin.asm)
  501.  
  502. Call with:   BX = window handle
  503. Returns:     if CF = 0, no error
  504.              if CF = 1, bad handle
  505. Uses:        flags
  506. Example:
  507.  
  508. include asm.inc
  509.  
  510. extrn   mwinit:proc, mwopen:proc, mwshadow:proc
  511.  
  512. .data
  513. whandle dw 0
  514. wdata   dw 0,0,19,39           ; 20 rows, 40 columns
  515.  
  516. .code
  517. ; program fragment assumes DS:@data
  518.         .
  519.         .
  520.         .
  521.         call   mwinit
  522.         lea    bx,wdata        ; point to window corner data
  523.         call   mwopen          ; open window in multi-window system
  524.         jc     problem         ; if error, go take care of it
  525.         mov    whandle,ax      ;  else save window handle
  526.         mov    bx,ax           ; copy handle to AX
  527.         call   mwshadow        ; enable shadow for this window
  528.  
  529.  
  530. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  531.  
  532. MWTITLE:     center an ASCIIZ string at the top of an open window
  533. Source:      mwtitle.asm (mwcenter.asm, multiwin.asm)
  534.  
  535. Call with:   BX = window handle
  536.              DS:[SI] pointing to an ASCIIZ string
  537.              AH = color attribute
  538.              assumes DS:@data
  539.              MWTitle prints the window title at the top of the window,
  540.              overwriting the border (if it is enabled).
  541. Returns:     nothing
  542. Uses:        AL
  543. Example:
  544.  
  545. include  asm.inc
  546.  
  547. extrn   mwinit:proc, mwopen:proc
  548. extrn   mwtitle:proc, mwdisplay:proc
  549.  
  550. .data
  551. window_handle dw 0
  552. wdata         dw 0,0,19,39            ; 20 rows, 40 columns
  553. row           db 1
  554. column        db 1
  555. color         db 23
  556. window_string db 'Window Title',0
  557.  
  558. .code
  559. ; program fragment assumes DS:@data
  560.         .
  561.         .
  562.         .
  563.         call    mwinit
  564.         lea     bx,wdata           ; point to window corner data
  565.         call    mwopen             ; open window in multi-window system
  566.         jc      problem            ; if error, go take care of it
  567.         mov     window_handle,ax   ;  else save window handle
  568.  
  569.         lea     si,window_string   ; point to text
  570.         mov     bx,ax              ; AX is still the handle
  571.         mov     ah,color
  572.         call    mwtitle
  573.         call    mwdisplay          ; show all unhidden windows on the screen
  574.  
  575.  
  576.  
  577. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  578.  
  579. MWTOP:       displays selected window on top of all others
  580. Source:      mwtop.asm (multiwin.asm)
  581.  
  582. Call with:   BX = window handle
  583. Returns:     DF = 0
  584.              if CF = 0, no error
  585.              if CF = 1, bad handle number
  586. Uses:        flags
  587. Example:
  588.  
  589. include asm.inc
  590.  
  591. extrn   mwselect:proc, mwtop:proc
  592.  
  593. .code
  594. ; program fragment assumes DS:@data
  595.         .
  596.         .
  597.         .
  598.  
  599. ; the mouse has been scurrying around the screen
  600. ; and the program has detected a mouse button press
  601. ; the mouse cursor is at row 3, column 14
  602.  
  603. ; determine which window the mouse has landed on
  604.         mov     dh,3
  605.         mov     dl,14
  606.         call    mwselect              ; get window visible at (3,14)
  607.         jc      no_window             ;  error? mouse must have had an itch
  608.         call    mwtop                 ; put this window on top of all others
  609.  
  610.  
  611. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  612.  
  613. MWUNHIDE:    allow selected window to be displayed
  614. Source:      multiwin.asm
  615.  
  616. Call with:   BX = window handle
  617. Returns:     if CF = 0, no error
  618.              if CF = 1, bad handle number
  619. Uses:        flags
  620. Example:
  621.  
  622. include asm.inc
  623.  
  624. extrn   mwinit:proc, mwopen:proc, mwunhide:proc
  625.  
  626. .data
  627. whandle dw 0
  628. wdata   dw 0,0,19,39           ; 20 rows, 40 columns
  629.  
  630. .code
  631. ; program fragment assumes DS:@data
  632.         .
  633.         .
  634.         .
  635.         call   mwinit
  636.         lea    bx,wdata        ; point to window corner data
  637.         call   mwopen          ; open window in multi-window system
  638.         jc     problem         ; if error, go take care of it
  639.         mov    whandle,ax      ;  else save window handle
  640.         mov    bx,ax           ; copy handle to AX
  641.         call   mwunhide        ; display window when MWDisplay is called
  642.  
  643.  
  644.  
  645. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  646.  
  647. MWUNHIDEALL: unhide all open windows
  648. Source:      mwunhide.asm (multiwin.asm)
  649.  
  650. Call with:   no parameters
  651. Returns:     nothing
  652. Uses:        nothing
  653. Example:
  654.  
  655. include asm.inc
  656.  
  657. extrn   mwinit:proc, mwunhideall:proc
  658. extrn   mwopen:proc, mwdisplay:proc
  659.  
  660. .code
  661.         call    mwinit
  662.  
  663. ; program opens several windows
  664.         .
  665.         .
  666.         .
  667.  
  668. ; make all open windows visible
  669.         call    mwunhideall
  670.         call    mwdisplay
  671.  
  672.  
  673.  
  674.