home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / BASIC / QBFX / PARADOCS.DOC < prev    next >
Text File  |  1993-05-24  |  49KB  |  1,071 lines

  1.  
  2.  
  3.  
  4. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  5. ▒╔═════════════════════════════════════════════════════════════════════╗▒▒▒▒
  6. ▒║                        Paragon's QB Toolkit                         ║ ▒▒▒
  7. ▒╟─────────────────────────────────────────────────────────────────────╢ ▒▒▒
  8. ▒║ A library of graphic and audio utilities for use with the MicroSoft ║ ▒▒▒
  9. ▒║ QuickBasic 4.5 Programming environment.                             ║ ▒▒▒
  10. ▒║                                                                     ║ ▒▒▒
  11. ▒║         CopyRight (C) 1990,91,92,93 - J. Thomas Hunter              ║ ▒▒▒
  12. ▒║                                       Paragon Labs, Ltd.            ║ ▒▒▒
  13. ▒║                                                                     ║ ▒▒▒
  14. ▒║                                                                     ║ ▒▒▒
  15. ▒║                   All Rights Reserved WorldWide                     ║ ▒▒▒
  16. ▒║                                                                     ║ ▒▒▒
  17. ▒╚═════════════════════════════════════════════════════════════════════╝ ▒▒▒
  18. ▒▒                                                                       ▒▒▒
  19. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  20.  
  21.  
  22.  
  23.  
  24. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  25. ███ Introduction  █████████████████████████████████████████████████████████
  26. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  27.  
  28.  
  29. This document is NOT intended as a basic tutorial on the use of libraries in
  30. conjunction with the QuickBasic product, nor  is it an attempt to provide an
  31. all-encompassing piece of documentation on the use of QB. It IS an effort to
  32. document a software library which will likely prove to be your most valuable
  33. asset in your entire collection of tools for the QuickBasic environment.
  34.  
  35. We've all heard it before. REAL programmers don't write docs.  I'm no better
  36. at it than any other programmer, and  while I don't mind giving it my honest
  37. best effort, please bear with me if I stray off-topic occasionally or miss a
  38. few details I've used so frequently I've begun to take them for granted.
  39.  
  40. For your information, the size of the QLB is roughly 144,349 bytes.  Typical
  41. of the  MicroSoft QuickLib format, this is much larger sizewise than what is
  42. actually required of the .LIB format file available to registered users. The
  43. .LIB file weighs in at roughly  73,317,  certainly tolerable considering the
  44. features provided as far as Mouse, Graphics, PCX, GIF, MOD,  and other items
  45. are concerned.
  46.  
  47.  
  48.  
  49.  
  50. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  51. ███ License and Registration  █████████████████████████████████████████████
  52. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  53.  
  54.  
  55. Simply, the tools in this library may be distributed as shareware,  provided
  56. they are distributed in unmodified form.  You may NOT reverse engineer, dis-
  57. assemble, or otherwise alter the contents of the original archive  as it was
  58. distributed from Paragon Labs.
  59.  
  60. You may USE this demonstration package for evaluation purposes ONLY, in your
  61. effort to determine the suitability of this package for your intents. In its
  62. distribution state, the shareware  version of this package holds the Paragon
  63. QB Toolkit in .QLB library format, suitable for immediate use in the  Quick-
  64. Basic environment.  You may NOT produce an EXEcutable standalone application
  65. with this QLB library.  To produce a complete and distributable EXE program,
  66. you MUST register the library  with Paragon Labs, by calling (501) 631-9806,
  67. by dialing our BBS at (501) 631-5976  and paging the SysOp with your MC/Visa
  68. card handy, or by mailing $99 to :
  69.                                         J. Thomas Hunter
  70.                                         c/o Paragon Labs
  71.                                         2409 West Dogwood
  72.                                         Rogers, AR  72756
  73.  
  74. With your REGISTERED copy of the Paragon QB Toolkit, you may create your own
  75. EXEcutable standalone applications, under the following conditions :
  76.  
  77. 1. You include notice on the title screen of your application that grants
  78.    notice that "Portions CopyRight (C) 1990,91,92,93 - J. Thomas Hunter",
  79.    and you send a registered copy of your software to us for our use as a
  80.    courtesy.
  81. 2. You agree to make NO use of these products in  pursuit of developing a
  82.    graphic BBS or  terminal without EXPRESS WRITTEN CONSENT from Paragon.
  83.    (This isn't to say we WON'T - just to say that we reserve the right to
  84.    take each query on a case-by-case basis. To the contrary, we're in the
  85.    process of soliciting Doorware, Mailer, and BBS developers  to use our
  86.    platform)
  87. 3. You agree not to distribute your copy of the registered LIBrary files,
  88.    IF you register, to any third party.  For commercial developersm,  one
  89.    copy of this library must be purchased for each machine on which it is
  90.    to be used. This means if you have 5 programmers who will be using the
  91.    Paragon QB Toolkit, you must  buy  5 copies of the library.  Discounts
  92.    and site licenses may be available on request.
  93. 4. You further agree not to use this library  and bundle it with your own
  94.    to sell it as a programmer's utility of any kind.
  95. 5. Given that you've followed the conditions as set forth above,  you may
  96.    distribute your own software royalty-free using this library.
  97.  
  98. It's that simple.
  99.  
  100.  
  101.  
  102.  
  103. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  104. ███ The Library  ██████████████████████████████████████████████████████████
  105. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  106.  
  107.  
  108.  
  109. The following represent the CALLable routines provided in this library, and
  110. the corresponding syntax.  TechNotes are  given for each item if special or
  111. unusual calling circumstances are required.
  112.  
  113.  
  114. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  115. CALL BARMENU
  116. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  117.  
  118. Declaration :
  119. DECLARE SUB barmenu (funcset$, tlcv%, tlch%, brcv%, brch%, setup%, picked$)
  120.  
  121. Parametres  :
  122.  
  123.         funcset$ = menubar definition string, as follows :
  124.  
  125. ║XXXX│AAA▒aaa│BBB▒bbb│CCC▒ccc║YYYY│AAA▒aaa│BBB▒bbb│CCC▒ccc
  126.  
  127. Where 54    = MenuBar definition header ID                   (02 bytes)
  128. Where ║     = ASCII 186 - MBar Title prefix                  (01 bytes)
  129. Where XXXX  = MenuBar title header                           ( varies )
  130. Where │     = ASCII 179 - MBar Item prefix                   (01 bytes)
  131. Where AAA   = MenuBar pull-down item                         ( varies )
  132. Where ▒     = ASCII 177 - MBar function prefix               (01 bytes)
  133. Where aaa   = MenuBar Function invoked when item selected    ( varies )
  134. Where │     = ASCII 179 - MBar Item prefix                   (01 bytes)
  135. Where BBB   = MenuBar pull-down item                         ( varies )
  136. Where ▒     = ASCII 177 - MBar function prefix               (01 bytes)
  137. Where bbb   = MenuBar Function invoked when item selected    ( varies )
  138. Where │     = ASCII 179 - MBar Item prefix                   (01 bytes)
  139. Where CCC   = MenuBar pull-down item                         ( varies )
  140. Where ▒     = ASCII 177 - MBar function prefix               (01 bytes)
  141. Where ccc   = MenuBar Function invoked when item selected    ( varies )
  142.                                                              ----------
  143.                                                                Varies
  144.  
  145. tlcv%  = the top left corner vertically for the origin of the menubar.
  146. tlch%  = the top left corner horizontally for the origin of the menubar.
  147. brcv%  = the bottom right corner vertically for the origin of the menubar.
  148. brch%  = the bottom right corner horizontally for the origin of the menubar.
  149. setup% = 0 when calling for actual execution
  150.          1 when calling for menubar rendering, but without execution
  151.  
  152. Return Arguments :
  153.  
  154. picked$= return string (menubar function) used by the item selected.
  155.  
  156.  
  157.  
  158. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  159. CALL BEVLPANL
  160. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  161.  
  162.  
  163. Declaration :
  164. DECLARE SUB BEVLPANL (tlcv%, tlch%, brcv%, brch%, dcolr%)
  165.  
  166. Parametres  :   TLCV% = Top Left Corner Vertically
  167.                 TLCH% = Top Left Corner Horizontally
  168.                 BRCV% = Bottom Right Corner Vertically
  169.                 BRCH% = Bottom Right Corner Horizontally
  170.                 DCOLR%= Panel Colour (256-colour PDE mix OK)
  171.  
  172. Return Arguments :  None                                
  173.  
  174. Function : Draws a bevelled box on the screen in the colour specified.
  175.            Suitable for use in Screen mode 9 or 12.
  176.  
  177.  
  178. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  179. CALL BIGPANEL
  180. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  181.  
  182. Declaration :                                                         
  183. DECLARE SUB BIGPANEL (tlcv%, tlch%, brcv%, brch%, dcolr%, brsha%, tlsha%)
  184.  
  185. Parametres  :   TLCV% = Top Left Corner Vertically
  186.                 TLCH% = Top Left Corner Horizontally
  187.                 BRCV% = Bottom Right Corner Vertically
  188.                 BRCH% = Bottom Right Corner Horizontally
  189.                 DCOLR%= Panel Colour (256-colour PDE mix OK)
  190.                 BRSHA%= Colour for bottom and right sides (reliefing)
  191.                 TLSHA%= Colour for top and left sides (reliefing)
  192.  
  193. Return Arguments :  None                              
  194.  
  195. Function : Draws a "tech box" on the screen in the colour specified.
  196.            Suitable for use in Screen mode 9 or 12.
  197.  
  198. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  199. CALL BIN2BINSTR
  200. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  201.  
  202. Declaration :                                                        
  203. DECLARE SUB BIN2BINSTR (a%, b$)
  204.  
  205. Parametres  :           A% = numeric value to convert 
  206. Return Arguments :      b$ = string value delivering binary representation
  207.  
  208. Function : Converts numeric values to binary representation. Used by mouse
  209.            mapping routines, among other things.  
  210.  
  211.  
  212.  
  213. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  214. FUNCTION BINSTR2BIN%
  215. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  216.  
  217. Declaration :                                                       
  218. DECLARE FUNCTION BinStr2Bin% (b$)
  219.  
  220. Parametres  :           B$ = Binary representation of string to convert.
  221. Return Arguments :      Function returns numeric value
  222.  
  223. Syntax  :  N%=BinStr2Bin%(B$)
  224.  
  225. Example :  CLS                          │
  226.            B$="1001001"                 │
  227.            N%=BinStr2Bin%(B$)           │
  228.            Print N%                     │
  229.                                         │
  230. Output  :  73                           │
  231.      
  232.  
  233. Function : Converts a binary string of 1's and 0's to the numeric
  234.            equivalent. Used by the Mouse cursor mapping routines,
  235.            among other things.
  236.  
  237.  
  238. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  239. CALL GETMSTAT
  240. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  241.  
  242. Declaration :                                                       
  243. DECLARE SUB getmstat (mposx%, mposy%, MBUT%)
  244.  
  245. Parametres  :           None
  246. Return Arguments :      Mposx% = Horizontal mouse location when queried
  247.                         Mposy% = Vertical mouse location when queried
  248.                         MBut%  = Mouse Button State when queried, where
  249.                                  0 = no buttons pressed
  250.                                  1 = left button pressed
  251.                                  2 = right button pressed
  252.                                  3 = both buttons pressed
  253.  
  254. Function : Allows quick, easy polling of the mouse position and button
  255.            status for use by your programs.
  256.  
  257.  
  258.  
  259. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  260. CALL GRABBFLD
  261. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  262.  
  263. Declaration :                                                      
  264. DECLARE SUB GRABBFLD(tlcv%, tlch%, MXLN%, MNLN%, edt$, bgc%, fgc%, erflg%,
  265.                      escflg%, cflag%, FFLAG%, tmp$, Range$)
  266.  
  267. Parametres  :           tlcv%   = Top left corner vertically of field
  268.                         tlch%   = Top left corner horizontally of field
  269.                         MXln%   = Maximum field length
  270.                         MNln%   = Minimum field length
  271.                         edt$    = Edit string, as defined in PDE :
  272.  
  273. Where EDT$= "GGGGGGGGGGGG",
  274.              1                  = Numeric data only    │   12345│ (01 byte )
  275.               1                 = Right-flush field    │     123│ (01 byte )
  276.                1                = Centre field data    │   123  │ (01 byte )
  277.                 1               = Left-flush field     │123     │ (01 byte )
  278.                  1              = Cash-flush field     │  123.45│ (01 byte )
  279.                   1             = Zero-flush field     │00000123│ (01 byte )
  280.                    1            = Valid hour   (0-12)             (01 byte )
  281.                     1           = Valid minute (0-59)             (01 byte )
  282.                      1          = Uppercase flag       │     ABC│ (01 byte )
  283.                       1         = Valid month  (1-12)             (01 byte )
  284.                        1        = Valid day    (1-31)             (01 byte )
  285.                         1       = Valid year   (93-99)            (01 byte )
  286.  
  287.                         bgc%    = Background colour for field
  288.                         fgc%    = Foreground (text) colour
  289.                         erflg%  = inbound variable returns status
  290.                         escflg% = inbound variable returns status
  291.                         cflag%  = inbound variable returns status
  292.                         fflag%  = inbound variable returns status
  293.                         tmp$    = String carries default string
  294.                         range$  = Range edit option, e.g. "1-4,A-C,F,G"
  295.  
  296. Return Arguments :      erflg%  = Returns error status as 1 if error on edit
  297.                         escflg% = Returns 1 if escape key was hit
  298.                         cflag%  = Returns 0 on normal completion,
  299.                                 =         1 on upcrsr to prvs field  
  300.                                 =         2 on dncrsr to next field 
  301.                                 =         3 on back-tab to prvs field
  302.                                 =         4 on forw-tab to next field
  303.                                 =         5 on mouse button detected
  304.                         fflag%  = Returns 1-12, based on Function key hit
  305.                         tmp$    = Returns the entered string 
  306.  
  307. Function : Allows quick, easy keyed input support in graphics mode without
  308.            need of INPUT or other primitive QB items. For use under screen
  309.            modes 9 and 12.
  310.  
  311.  
  312. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  313. Function FGET
  314. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  315.  
  316. Declaration :                                                       
  317. DECLARE FUNCTION FGET (BYVAL xl, BYVAL yl, BYVAL xh, BYVAL yh, Segment%)
  318.  
  319. Parametres  :   xl%    = Bottom right corner horizontally
  320.                 xh%    = Top Left corner horizontally
  321.                 yl%    = Top Left corner vertically
  322.                 yh%    = Bottom Right corner vertically
  323.  
  324. Return Arguments :  Segment% = FAR area in RAM where area is stored
  325.  
  326. Function : Grabs an area of screen (modes 9 or 12) and stores it to FAR
  327.            memory,  allowing  subsequent operations in that area of the
  328.            screen without concern for screen image corruption. A Simple
  329.            CALL FPUT ( SEGMENT% ) will restore the area  stored.  These
  330.            routines were used in our own MenuBar item.  VERY fast.  Use
  331.            of these routines presumes that FAR memory has been freed by
  332.            use of the  N&=SETMEM(-xxxxx)  prior to use,  allocating FAR
  333.            area sufficient to store the screen area.
  334.  
  335. See also : FPUT
  336.  
  337.  
  338. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  339. Function FPUT
  340. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  341.  
  342. Declaration :                                                      
  343. DECLARE FUNCTION FPUT (Segment%)
  344.  
  345. Parametres  :       Segment% = Segment of FAR memory in which FGET saved
  346.  
  347. Return Arguments :  None
  348.  
  349. Function : Retrieves an area of screen (modes 9 or 12) from FAR storage
  350.            as placed with the  complementing FGET function.  VERY fast. 
  351.            Use of these routines presumes that  FAR  memory is freed by
  352.            use of the  N&=SETMEM(-xxxxx)  prior to use,  allocating FAR
  353.            area sufficient to store the screen area.
  354.  
  355. See also : FGET
  356.  
  357.  
  358. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  359. CALL FONTINIT
  360. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  361.  
  362. Declaration :                                                     
  363. DECLARE SUBV FONTINIT ()
  364.  
  365. Parametres       :  None
  366.  
  367. Return Arguments :  None
  368.  
  369. Function : Retrieves the default font set from the file STDFONT.REQ and
  370.            places it in RAM for subsequent use by PUTTXT.  This routine
  371.            should be called each  time  a SCREEN is used to switch into
  372.            graphics modes 9 or 12. VERY Fast!
  373.  
  374.  
  375. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  376. CALL HSCROLL
  377. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  378.  
  379. Declaration :                                                        
  380. DECLARE SUB hscroll (BYVAL xl, BYVAL xh, BYVAL yl, BYVAL yh, BYVAL DEPTH)
  381.  
  382. Parametres  :   xl%    = Bottom right corner horizontally
  383.                 xh%    = Top Left corner horizontally
  384.                 yl%    = Top Left corner vertically
  385.                 yh%    = Bottom Right corner vertically
  386.                 depth% = # of dots to scroll, where
  387.                          positive value = scroll up
  388.                          negative value = scroll down
  389.  
  390. Return Arguments :  None                             
  391.  
  392. Function : Allows scroll of a screen area on the vertical axis by a
  393.            specific number of dots.  Used in loop succession,  this
  394.            tool allows for the illusion of SmoothScrolling. For use
  395.            under screen modes 9 and 12.
  396.  
  397.  
  398. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  399. CALL IMPORT
  400. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  401.  
  402. Declaration :                                                         
  403. DECLARE SUB IMPORT (n$, justin%)
  404.  
  405. Parametres  :   N$     = PDE PANel format line to render
  406.                 justin%= First-pass paint behavior instruction
  407.  
  408. Return Arguments :  None                              
  409.  
  410. Function : For use with LINE INPUT when loading PAN format files, this
  411.            utility allows you to render an item from a PANel file at a
  412.            time. This routine is used by LOADIT.  For use under screen
  413.            modes 9 and 12.
  414.  
  415.  
  416. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  417. CALL LEDDISP
  418. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  419.  
  420. Declaration :                                                      
  421. DECLARE SUB getmstat (a$, b%, c%, d%, e%)
  422.  
  423. Parametres  :           a$ = String to be displayed
  424.                         b% = Horizontal screen displacement
  425.                         c% = Vertical screen displacement
  426.                         d% = LED Element Colour
  427.                         e% = Background colour
  428. Return Arguments :      None
  429.  
  430. Function : Allows a quick method of simulating LED or LCD digits onscreen
  431.            in graphics modes 9 or 12.
  432.  
  433.  
  434. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  435. CALL LOADIT
  436. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  437.  
  438. Declaration :                                                        
  439. DECLARE SUB LOADIT (thisfile$)
  440.  
  441. Parametres  :       Thisfile$ = PDE PANel format name to import.
  442.  
  443. Return Arguments :  None                             
  444.  
  445. Function : For use in conjunction with PDE PANel format files created with
  446.            the Paragon Development Environment (PDE). This utility renders
  447.            onscreen the panel drawn in PDE,  including GIFs,  PCXs, Icons,
  448.            lines, and generally  anything  else drawn in PDE,  eliminating
  449.            the need to manually plot points for line, circles, etc. in the
  450.            code.
  451.  
  452.  
  453.  
  454. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  455. CALL LOADPTR
  456. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  457.  
  458. Declaration :                                                         
  459. DECLARE SUB LOADPTR (PtrFile$,csr$)
  460.  
  461. Parametres  :       PtrFile$ = Pointer filename (as saved in MPTREDIT)
  462.                     CSR$     = Internally used by Paragon Library Utilities
  463. Return Arguments :  None                              
  464.  
  465. Function : Imports a mouse pointer as defined in the Paragon MPTREDIT
  466.            facility. The next CALL PUTPTR instruction after a CALL LOADPTR
  467.            will update the mouse to the screen.
  468.  
  469.  
  470. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  471. CALL MINIT
  472. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  473.  
  474. Declaration :                                                       
  475. DECLARE SUB MINIT ()
  476.  
  477. Parametres       :  None
  478. Return Arguments :  None                            
  479.  
  480. Function : This Mouse Initialization utility is called ONCE, and the front
  481.            end of your program,  to  initialize the mouse for use  in your
  482.            code. Subsequent calls have no effect. If a Mouse driver is not
  483.            detected, the screen switches to character mode and advises the
  484.            user to load  MOUSE.COM,  MOUSE.SYS,  or other MicroSoft Mouse-
  485.            Compatible pointer driver.
  486.  
  487.  
  488. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  489. CALL MOUSEHANDLER
  490. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  491.  
  492. Declaration :                                                         
  493. DECLARE SUB MOUSEHANDLER (Ax%, Bx%, Cx%, Dx%)
  494.  
  495. Parametres  :   Ax% = Inbound AX register setting for DOS service call &H33
  496.                 Bx% = Inbound AX register setting for DOS service call &H33
  497.                 Cx% = Inbound AX register setting for DOS service call &H33
  498.                 Dx% = Inbound AX register setting for DOS service call &H33
  499. Return Arguments :  Varies based on the service call option used.
  500.  
  501. Function : Allows direct access to DOS INT33H functions (for mouse driver)
  502.            through QB45.
  503.  
  504.  
  505. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  506. CALL PLAYMOD
  507. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  508.  
  509. Declaration :                                                         
  510. DECLARE SUB PLAYMOD (a$, frc, b, c, d, e)
  511.  
  512. Parametres  :   A$  = Mod FileName to Play
  513.                 frc%= Sampling frequency at which to play the mod
  514.                 b%  = 1 to play for MOD duration
  515.                 c%  = 1 to play continuous loop  
  516.                 d%  = 1 to cease MOD activity
  517.                 e%  = 1 to enable PCSpeaker play (without SoundBlaster)
  518.  
  519. Return Arguments :  None                              
  520.  
  521. Function : Plays a MOD digital audio file in background, allowing your
  522.            code to continue executing.  Some installations of QEMM and
  523.            EMM386 may steal interrupts and not release them to the MOD
  524.            engine.  To remedy this,  simply specify the AUTO option in
  525.            your QEMM or EMM386 command line.
  526.  
  527.  
  528. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  529. CALL PUTGIF
  530. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  531.  
  532. Declaration :                                                         
  533. DECLARE SUB PUTGIF (A$, b%, c%, d%, e%, f%, g%, h%)
  534.  
  535. Parametres  :   A$ = GIF name of GIF87A 16-colour image file to place.
  536.                 b% = top left corner vertically
  537.                 c% = top left corner horizontally
  538.                 d% = bottom right corner vertically
  539.                 e% = bottom right corner horizontally
  540.                 f% = image slide attribute (+=right, -=left) x-axis
  541.                 g% = image slide attribute (+=up, -=down)    y-axis
  542.                 h% = 0 for full-screen image
  543.                      1 for windowed/panned image
  544.  
  545. Return Arguments :  None
  546.  
  547. Function : Loads the GIF 87a 16-colour image specified into the window
  548.            specified  (or full-screen, as defined by h%)  at the slide
  549.            parametres specified. MAX GIF size is 85k. VERY fast!
  550.  
  551.  
  552. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  553. CALL PUTICON
  554. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  555.  
  556. Declaration :                                                        
  557. DECLARE SUB PUTICON (a%, b%, c$)
  558.  
  559. Parametres  :   A% = Vertical placement of ICOn image placement
  560.                 b% = Horizontal placement of ICOn image placement
  561.                 c$ = Icon filename as saved in ICEDITOR
  562.  
  563. Return Arguments :  None
  564.  
  565. Function : Loads the specified .ICO file (created with the Paragon Icon
  566.            Editor) and places it onscreen at the position specified.
  567.  
  568.  
  569. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  570. CALL PUTPCX
  571. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  572.  
  573. Declaration :                                                       
  574. DECLARE SUB PUTPCX (A$, b%, c%, d%, e%, f%, g%, h%)
  575.  
  576. Parametres  :   A$ = PCX name of 16-colour image file to place.
  577.                 b% = top left corner vertically
  578.                 c% = top left corner horizontally
  579.                 d% = bottom right corner vertically
  580.                 e% = bottom right corner horizontally
  581.                 f% = image slide attribute (+=right, -=left) x-axis
  582.                 g% = image slide attribute (+=up, -=down)    y-axis
  583.                 h% = 0 for full-screen image
  584.                      1 for windowed/panned image
  585.  
  586. Return Arguments :  None
  587.  
  588. Function : Loads the specified .PCX file and places it onscreen at the
  589.            position specified. Max PCX size is 65535 bytes. VERY Fast!
  590.  
  591.  
  592. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  593. CALL PUTPTR 
  594. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  595.  
  596. Declaration :                                                         
  597. DECLARE SUB PUTPTR (a%)
  598.  
  599. Parametres  :   A% = 0 to turn mouse pointer off
  600.                      1 to turn mouse pointer on
  601.  
  602. Return Arguments :  None                              
  603.  
  604. Function : Renders the currently loaded mouse pointer as loaded by LOADPTR
  605.            on the screen. The Parametre A% will turn the loaded pointer on
  606.            or off with this simple call.
  607.  
  608.  
  609. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  610. CALL PUTTXT 
  611. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  612.  
  613. Declaration :                                                         
  614. DECLARE SUB PUTTXT (literal$, tlch%, tlcv%, tcolr%)
  615.  
  616. Parametres  :   literal$ = String variable to be placed onscreen
  617.                 TLCH% = Top Left Corner Horizontally, where text is to go.
  618.                 TLCV% = Top Left Corner Vertically, where text is to go.
  619.                 DCOLR%= Text Colour (Base QB45 16-colour palette)
  620.  
  621. Return Arguments :  None                              
  622.  
  623. Function : Places text onscreen at the position and colour specified. This
  624.            assembler routine is VERY fast,  and depends on the presence of
  625.            STDFONT.REQ  in the directory in which your program originates.
  626.            Further, a CALL FONTINIT  MUST have been executed at the top of
  627.            your program immediately after invoking screen modes 9 or 12.
  628.  
  629.  
  630. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  631. CALL SHADPANL
  632. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  633.  
  634.  
  635. Declaration :
  636. DECLARE SUB SHADPANL (tlcv%, tlch%, brcv%, brch%, dcolr%)
  637.  
  638. Parametres  :   TLCV% = Top Left Corner Vertically
  639.                 TLCH% = Top Left Corner Horizontally
  640.                 BRCV% = Bottom Right Corner Vertically
  641.                 BRCH% = Bottom Right Corner Horizontally
  642.                 DCOLR%= Panel Colour (256-colour PDE mix OK)
  643.  
  644. Return Arguments :  None                               
  645.  
  646. Function : Draws a shadowbox (with black shadow) onscreen at the coordinate
  647.            set specified. Suitable for use in Screen mode 9 or 12.
  648.  
  649.  
  650. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  651. CALL SMLPANEL
  652. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  653.  
  654. Declaration :                                                         
  655. DECLARE SUB SMLPANEL (tlcv%, tlch%, brcv%, brch%, dcolr%, brsha%, tlsha%)
  656.  
  657. Parametres  :   TLCV% = Top Left Corner Vertically
  658.                 TLCH% = Top Left Corner Horizontally
  659.                 BRCV% = Bottom Right Corner Vertically
  660.                 BRCH% = Bottom Right Corner Horizontally
  661.                 DCOLR%= Panel Colour (256-colour PDE mix OK)
  662.                 BRSHA%= Colour for bottom and right sides (reliefing)
  663.                 TLSHA%= Colour for top and left sides (reliefing)
  664.  
  665. Return Arguments :  None                              
  666.  
  667. Function : Draws a box onscreen at the coordinate set specified. Bottom
  668.            and right side colour  may be specified,  as well as top and
  669.            left side, to define relief boxes, inset boxes, etc.   These
  670.            boxes are suitable for use in Screen mode 9 or 12.
  671.  
  672. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  673. CALL WAITTIME
  674. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  675.  
  676. Declaration :                                                         
  677. DECLARE SUB WAITTIME (x%)
  678.  
  679. Parametres  :   X% = Time to delay (in hundredths of a second)
  680.  
  681. Return Arguments :  None                              
  682.  
  683. Function : Timer sub, used to delay for X% hundredths of a second.
  684.  
  685.  
  686. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  687. CALL WBUTREL
  688. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  689.  
  690. Declaration :                                                        
  691. DECLARE SUB WBUTREL ()  
  692.  
  693. Parametres       :  None
  694. Return Arguments :  None
  695.  
  696. Function : Suspends execution until such time as the mouse button has
  697.            been released.
  698.  
  699.  
  700. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  701. CALL ZOOMPANL
  702. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  703.  
  704. Declaration :                                                          
  705. DECLARE SUB ZOOMPANL (tlcv%, tlch%, brcv%, brch%, dcolr%, brsha%, tlsha%)
  706.  
  707. Parametres  :   TLCV% = Top Left Corner Vertically
  708.                 TLCH% = Top Left Corner Horizontally
  709.                 BRCV% = Bottom Right Corner Vertically
  710.                 BRCH% = Bottom Right Corner Horizontally
  711.                 DCOLR%= Panel Colour (256-colour PDE mix OK)
  712.                 BRSHA%= Colour for bottom and right sides (reliefing)
  713.                 TLSHA%= Colour for top and left sides (reliefing)
  714.  
  715. Return Arguments :  None                               
  716.  
  717. Function : Draws an exploding tech box on the screen in the colour
  718.            specified. Suitable for use in Screen mode 9 or 12.
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725. ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  726. ███ DarkStar/PDE Panel File Formats ███████████████████████████████████████
  727. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  728.  
  729.  
  730. The DarkStar/PDE PANel files created by our PDE CASE product creates a sim-
  731. ple sequential file consisting of a series of  graphic instructions.  These
  732. instructions consist of a 2 - byte header to indicate  the  operation to be
  733. performed,  and a syntax following the header specific to that instruction.
  734. All records are sequentially stored,  and delimited by a  Carriage Return /
  735. LineFeed (Chr$(13)+Chr$(10)).
  736.  
  737. The PANel file has a two-record header,  indicating  the PANel name and the
  738. date/time stamp corresponding to its creation date. Additional data is held
  739. enumerating the exit behavior to be performed when the upper left corner of
  740. the tech box  (if present on the PANel)  is clicked by the user.  These two
  741. records might typically appear as follows :
  742.  
  743. *DARKMAIN82031514:00:00
  744. &DARKLOFF01
  745.  
  746. The information carried here is identified by the asterisk (*) in the first
  747. byte position of the record. The 8 bytes which  follow  define the  name of
  748. the PANel file. In positions 10 through 15, the date of the last PANel mod-
  749. ification is held. Each time the panel is saved, the date/time stamp is up-
  750. dated. Date/Time stamp format is YYMMDDHH:MM:SS.
  751.  
  752. The second line of the header record is identified by the & prefix,  and is
  753. used to tell PDE how to exit the application when the upper left corner  of
  754. the Tech Box (if present on the PANel file) is clicked by the user.  The 8-
  755. byte filename which follows (in positions 2 through 9) is the PANel name to
  756. call into play on arbitrary exit.  The two bytes  which  immediately follow
  757. may be either 1 or 0 in each position, representative of the switch setting
  758. on the panelsave under PDE. These represent Peel and Replace, respectively.
  759.  
  760. Remaining instructions in the DarkStar PANelfile format  may  be any of the
  761. following :
  762.  
  763.  
  764.  
  765. Paint pour instruction :
  766.  
  767. 01AAABBBCC
  768.  
  769. Where 01   = Paint header identifier                         (2 bytes)
  770. Where AAA  = horizontal offset of pour origin pixel          (3 bytes)
  771. Where BBB  = vertical offset of pour origin pixel            (3 bytes)
  772. Where CC   = colour attribute (0-15) per DOS                 (2 bytes)
  773.                                                              ---------
  774. 10 bytes
  775.  
  776.  
  777.  
  778. SmallPanel instruction:
  779.  
  780. 02AAABBBCCCDDDEEEFFGG
  781.  
  782. Where 02   = SmallPanel header identifier                    (2 bytes)
  783. Where AAA  = vertical offset of top left corner of box       (3 bytes)
  784. Where BBB  = horizontal offset of top left corner of box     (3 bytes)
  785. Where CCC  = vertical offset of bottom right corner of box   (3 bytes)
  786. Where DDD  = horizontal offset of bottom right corner of box (3 bytes)
  787. Where EEE  = colour attribute (0-128) per MIX-16 algorythm   (3 bytes)
  788. Where FF   = colour attribute (0-15) for lower right hilite  (2 bytes)
  789. Where GG   = colour attribute (0-15) per upper left hilite   (2 bytes)
  790.                                                              ---------
  791. 21 bytes
  792.  
  793.  
  794.  
  795. TechPanel instruction:
  796.  
  797. 03AAABBBCCCDDDEEEFFGG
  798.  
  799. Where 03   = TechPanel header identifier                     (2 bytes)
  800. Where AAA  = vertical offset of top left corner of box       (3 bytes)
  801. Where BBB  = horizontal offset of top left corner of box     (3 bytes)
  802. Where CCC  = vertical offset of bottom right corner of box   (3 bytes)
  803. Where DDD  = horizontal offset of bottom right corner of box (3 bytes)
  804. Where EEE  = colour attribute (0-128) per MIX-16 algorythm   (3 bytes)
  805. Where FF   = colour attribute (0-15) for lower right hilite  (2 bytes)
  806. Where GG   = colour attribute (0-15) per upper left hilite   (2 bytes)
  807.                                                              ---------
  808.                                                              21 bytes
  809.  
  810. ShadowPanel instruction:
  811.  
  812. 04AAABBBCCCDDDEE
  813.  
  814. Where 04   = ShadowPanel header identifier                   (2 bytes)
  815. Where AAA  = vertical offset of top left corner of box       (3 bytes)
  816. Where BBB  = horizontal offset of top left corner of box     (3 bytes)
  817. Where CCC  = vertical offset of bottom right corner of box   (3 bytes)
  818. Where DDD  = horizontal offset of bottom right corner of box (3 bytes)
  819. Where EE   = colour attribute (0-15) of box per DOS BASE-16  (2 bytes)
  820.                                                              ---------
  821. 16 bytes
  822.  
  823.  
  824.  
  825. BevelPanel instruction:
  826.  
  827. 05AAABBBCCCDDDEE
  828.  
  829. Where 05   = BevelPanel header identifier                    (2 bytes)
  830. Where AAA  = vertical offset of top left corner of box       (3 bytes)
  831. Where BBB  = horizontal offset of top left corner of box     (3 bytes)
  832. Where CCC  = vertical offset of bottom right corner of box   (3 bytes)
  833. Where DDD  = horizontal offset of bottom right corner of box (3 bytes)
  834. Where EE   = colour attribute (0-15) of box per DOS BASE-16  (2 bytes)
  835.                                                              ---------
  836.                                                              16 bytes
  837.  
  838. LinePanel instruction:
  839.  
  840. 06AAABBBCCCDDDEEEFFGG
  841.  
  842. Where 06   = LinePanel header identifier                     (2 bytes)
  843. Where AAA  = vertical offset of top left corner of box       (3 bytes)
  844. Where BBB  = horizontal offset of top left corner of box     (3 bytes)
  845. Where CCC  = vertical offset of bottom right corner of box   (3 bytes)
  846. Where DDD  = horizontal offset of bottom right corner of box (3 bytes)
  847. Where EEE  = colour attribute (0-128) per MIX-16 algorythm   (3 bytes)
  848. Where FF   = colour attribute (0-15) for lower right hilite  (2 bytes)
  849. Where GG   = colour attribute (0-15) per upper left hilite   (2 bytes)
  850.                                                              ---------
  851.                                                              21 bytes
  852.  
  853. ZonePanel instruction:
  854.  
  855. 07AAABBBCCCDDDEEEFFGG
  856.  
  857. Where 07   = ZonePanel header identifier                     (2 bytes)
  858. Where AAA  = vertical offset of top left corner of box       (3 bytes)
  859. Where BBB  = horizontal offset of top left corner of box     (3 bytes)
  860. Where CCC  = vertical offset of bottom right corner of box   (3 bytes)
  861. Where DDD  = horizontal offset of bottom right corner of box (3 bytes)
  862. Where EEE  = colour attribute (0-128) per MIX-16 algorythm   (3 bytes)
  863. Where FF   = colour attribute (0-15) for lower right hilite  (2 bytes)
  864. Where GG   = colour attribute (0-15) per upper left hilite   (2 bytes)
  865.                                                              ---------
  866.                                                              21 bytes
  867.  
  868. Icon Image instruction :
  869.  
  870. 08AAAAAAAABBBCCC
  871.  
  872. Where 08       = Icon Image header identifier                 (2 bytes)
  873. Where AAAAAAAA = 8-byte Icon Imagefile name                   (8 bytes)
  874. Where BBB      = Horizontal offset to top left corner of icon (3 bytes)
  875. Where CCC      = Vertical offset to top left corner of icon   (3 bytes)   
  876.                                                               ---------
  877.                                                               16 bytes
  878.  
  879. PCX Image instruction :
  880.  
  881. 09AAAAAAAABBBCCCDDDEEEFFFFGGGGH
  882.  
  883. Where 09       = PCX Image header identifier                 (2 bytes)
  884. Where AAAAAAAA = 8-byte PCX-Image filename                   (8 bytes)
  885. Where BBB      = Horizontal offset to top left corner of pcx (3 bytes)
  886. Where CCC      = Vertical offset to top left corner of pcx   (3 bytes)
  887. Where DDD      = Horizontal offset to lower right corner/pcx (3 bytes)
  888. Where EEE      = Vertical offset to lower right corner/pcx   (3 bytes)
  889. Where FFFF     = Horizontal slide of PCX within above window (4 bytes)
  890. Where GGGG     = Vertical slide of PCX within above window   (4 bytes)
  891. Where H        = 0 to place PCX into window defined          (1 byte )
  892.    or H        = 3 to place PCX as image filling viewport
  893.                                                              ---------
  894.                                                              31 bytes
  895.  
  896.  
  897.  
  898. GIF Image instruction :
  899.  
  900. 10AAAAAAAABBBCCCDDDEEEFFFFGGGGH
  901.  
  902. Where 10       = GIF Image header identifier                 (2 bytes)
  903. Where AAAAAAAA = 8-byte GIF-Image filename                   (8 bytes)
  904. Where BBB      = Horizontal offset to top left corner of GIF (3 bytes)
  905. Where CCC      = Vertical offset to top left corner of GIF   (3 bytes)
  906. Where DDD      = Horizontal offset to lower right corner/GIF (3 bytes)
  907. Where EEE      = Vertical offset to lower right corner/GIF   (3 bytes)
  908. Where FFFF     = Horizontal slide of GIF within above window (4 bytes)
  909. Where GGGG     = Vertical slide of GIF within above window   (4 bytes)
  910. Where H        = 0 to place GIF into window defined          (1 byte )
  911.    or H        = 3 to place GIF as image filling viewport
  912.                                                              ---------
  913.                                                              31 bytes
  914.  
  915. MOD Audio file instruction :
  916.  
  917. 11 AAAAAAAABCD
  918.  
  919. Where 11       = MOD Audio header identifier                 (2 bytes)
  920. Where AAAAAAAA = 8-byte MOD-format audio filename            (8 bytes)
  921. Where B        = 1 if Endless loop play activity desired     (1 byte )
  922.    or B        = 0 if flag not thrown
  923. Where C        = 1 if single-pass play activity desired      (1 byte )
  924.    or C        = 0 if flag not thrown
  925. Where D        = 1 if Silence all MOD activity               (1 byte )   
  926.    or D        = 0 if flag not thrown
  927.                                                              ---------
  928. 13 bytes
  929.  
  930.  
  931.  
  932. Text placement instruction :
  933.  
  934. 12AAAAAAAAAAAAAAAAAAAAAAAAA║BBBCCCDD
  935.  
  936. Where 12  = Text line header identifier                          (2 bytes)
  937. Where A   = Text to be placed onscreen and within viewport   (80-Byte Max)
  938. Where ║   = ASCII 186 delimiter to note end of text              (1 byte )
  939. Where BBB = Horizontal offset for top left corner of first byte  (3 bytes)
  940. Where CCC = Vertical offset for top left corner of first byte    (3 bytes)
  941. Where DD  = Colour attribute (0-15) of box per DOS BASE-16       (2 bytes)
  942.                                                                  ---------
  943.                                                                   Varies
  944.  
  945. Line instruction :
  946.  
  947. 13AAABBBCCCDDDEE
  948.  
  949. Where 13  = Line instruction header identifier               (2 bytes)
  950. Where AAA = Horizontal offset of Point #1 in Viewport        (3 bytes)
  951. Where BBB = Vertical offset of Point #1 in Viewport          (3 bytes)
  952. Where CCC = Horizontal offset of Point #2 in Viewport        (3 bytes)
  953. Where DDD = Vertical offset of Point #2 in Viewport          (3 bytes)
  954. Where EE  = Colour attribute (0-15) of line per DOS BASE-16  (2 bytes)
  955.                                                              ---------
  956.                                                              16 bytes
  957.  
  958.  
  959. Circle instruction :
  960.  
  961. 14 AAABBBCCCDD
  962.  
  963. Where 14  = Circle instruction header identifier              (2 bytes)
  964. Where AAA = Horizontal offset of Centrepoint of circle        (3 bytes)
  965. Where BBB = Vertical offset of Centrepoint of circle          (3 bytes)
  966. Where CCC = Radius of circle                                  (3 bytes)
  967. Where DD  = Colour attribute (0-15) of circle per DOS BASE-16 (2 bytes)
  968.                                                               ---------
  969.                                                               13 bytes
  970.  
  971.  
  972.  
  973. Field definition :
  974.  
  975. 50AAAAAAAAAAAAAAABBCCDDDEEEFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGG
  976.  
  977. Where 50                   = Field definition header ID      (02 bytes)
  978. Where AAAAAAAAAAAAAAA      = Dbase-compatible field name     (15 bytes)
  979. Where BB                   = Colour of field                 (02 bytes)
  980. Where CC                   = Field length (max characters)   (02 bytes)
  981. Where DDD                  = Hor. offset - top left corner   (03 bytes)
  982. Where EEE                  = Ver. offset - top left corner   (03 bytes)
  983. Where FFFFFFFFFFFFFFFFFFFF = Special edit codes per PDE      (20 bytes)
  984. Where GGGGGGGGGGGG         = Standard edit flags (follows)   (12 bytes)
  985.       1                    = Numeric data only    │   12345│ (01 byte )
  986.        1                   = Right-flush field    │     123│ (01 byte )
  987.         1                  = Centre field data    │   123  │ (01 byte )
  988.          1                 = Left-flush field     │123     │ (01 byte )
  989.           1                = Cash-flush field     │  123.45│ (01 byte )
  990.            1               = Zero-flush field     │00000123│ (01 byte )
  991.             1              = Valid hour   (0-12)             (01 byte )
  992.              1             = Valid minute (0-59)             (01 byte )
  993.               1            = Uppercase flag       │     ABC│ (01 byte )
  994.                1           = Valid month  (1-12)             (01 byte )
  995.                 1          = Valid day    (1-31)             (01 byte )
  996.                  1         = Valid year   (93-99)            (01 byte )
  997.                                                              ----------
  998.                                                               59 bytes
  999.  
  1000.  
  1001.  
  1002. Switch definition:
  1003.  
  1004. 51 AAAAAAAAAAAAAAABBCCCDDD
  1005.  
  1006. Where 51                   = Switch definition header ID     (02 bytes)
  1007. Where AAAAAAAAAAAAAAA      = Switch name                     (15 bytes)
  1008. Where BB                   = Switch colour (DOS Base-16)     (02 bytes)
  1009. Where CC                   = Hor. offset, top left corner    (03 bytes)
  1010. Where DD                   = Ver. offset, top left corner    (03 bytes)
  1011.                                                              ----------
  1012.                                                               25 bytes
  1013.  
  1014.  
  1015.  
  1016. Button definition:
  1017.  
  1018. 52AAAAAAAAAAAAAAAAAAAABBCCCDDDEEEFFFGGGGGGGGGGGGGGGGGGGG+
  1019. HHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
  1020.  
  1021. Where 52                   = Button definition header ID     (02 bytes)
  1022. Where AAAAAAAAAAAAAAAAAAAA = Button Name (appears on button) (20 bytes)
  1023. Where BB                   = Button colour (DOS Base-16)     (02 bytes)
  1024. Where CCC                  = Horizontal button size (width)  (03 bytes)
  1025. Where DDD                  = Vertical button size (height)   (03 bytes)
  1026. Where EEE                  = Horizontal button offset (TLC)  (03 bytes)
  1027. Where FFF                  = Vertical button offset   (TLC)  (03 bytes)
  1028. Where GGGGGGGGGGGGGGGGGGGG = Function name called on event   (20 bytes)
  1029. Where HHHHH                = Security level to see button    (05 bytes)
  1030. Where IIIIIIIIIIIIIIIII... = Security flags to see button    (32 bytes)
  1031.                                                              ----------
  1032.                                                               93 bytes
  1033.  
  1034.  
  1035. IconButton definition:
  1036.  
  1037. 53AAAAAAAABBBCCCDDDDDDDDDDDDDDDEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  1038.  
  1039. Where 53                   = IconButton definition header ID (02 bytes)
  1040. Where AAAAAAAA             = 8-byte IconImage filename       (08 bytes)
  1041. Where BBB                  = Hor. offset of top left corner  (03 bytes)
  1042. Where CCC                  = Ver. offset of top left corner  (03 bytes)
  1043. Where DDDDDDDDDDDDDDDDDDDD = Function name called on event   (20 bytes)
  1044. Where EEEEE                = Security level to see button    (05 bytes)
  1045. Where FFFFFFFFFFFFFFFFF... = Security flags to see button    (32 bytes)
  1046.                                                              ----------
  1047.                                                               73 bytes
  1048.  
  1049. MenuBar definition:
  1050.  
  1051. 54║XXXX│AAA▒aaa│BBB▒bbb│CCC▒ccc║YYYY│AAA▒aaa│BBB▒bbb│CCC▒ccc
  1052.  
  1053. Where 54    = MenuBar definition header ID                   (02 bytes)
  1054. Where ║     = ASCII 186 - MBar Title prefix                  (01 bytes)
  1055. Where XXXX  = MenuBar title header                           ( varies )
  1056. Where │     = ASCII 179 - MBar Item prefix                   (01 bytes)
  1057. Where AAA   = MenuBar pull-down item                         ( varies )
  1058. Where ▒     = ASCII 177 - MBar function prefix               (01 bytes)
  1059. Where aaa   = MenuBar Function invoked when item selected    ( varies )
  1060. Where │     = ASCII 179 - MBar Item prefix                   (01 bytes)
  1061. Where BBB   = MenuBar pull-down item                         ( varies )
  1062. Where ▒     = ASCII 177 - MBar function prefix               (01 bytes)
  1063. Where bbb   = MenuBar Function invoked when item selected    ( varies )
  1064. Where │     = ASCII 179 - MBar Item prefix                   (01 bytes)
  1065. Where CCC   = MenuBar pull-down item                         ( varies )
  1066. Where ▒     = ASCII 177 - MBar function prefix               (01 bytes)
  1067. Where ccc   = MenuBar Function invoked when item selected    ( varies )
  1068.                                                              ----------
  1069.                                                                Varies
  1070.  
  1071.