home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asm32 / multiwin.doc < prev    next >
Text File  |  1994-03-09  |  20KB  |  678 lines

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