home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progbas / dframe31.arj / DFRAME.DOC < prev    next >
Encoding:
Text File  |  1992-04-28  |  59.4 KB  |  1,168 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                                D O O R F R A M E
  17.                                   Version 3.1
  18.  
  19.                         A BBS Doors Development Library
  20.  
  21.                             Copyright (c) 1990-1992
  22.                                 by Ted Freeman
  23.                              All rights reserved.
  24.  
  25.  
  26.                                Support board is:
  27.  
  28.                                MicroNet PCBoard
  29.                           615-626-1620 (Hayes ULTRA)
  30.  
  31.  
  32.  
  33. DOORFRAME v3.1 - Users Guide - Page i
  34.  
  35.  
  36.                                 C O N T E N T S
  37.                                =================
  38.  
  39.         Warranty ............................................ ii
  40.         Copyright notice .................................... ii
  41.         Distribution ........................................ ii
  42.         Description ......................................... ii
  43.         BOX ................................................. 1
  44.         CLREOL .............................................. 1
  45.         CLRSCRN ............................................. 2
  46.         DE.LAY .............................................. 2
  47.         DETECT.ANSI ......................................... 2
  48.         DIS.PLAY ............................................ 3
  49.         ENTER ............................................... 4
  50.         EXISTS .............................................. 4
  51.         EXIT.DOOR ........................................... 4
  52.         GETDRV .............................................. 4
  53.         GETEXECPATH ......................................... 4
  54.         GETSUB .............................................. 5
  55.         IN.PUT .............................................. 5
  56.         INITIALIZE .......................................... 5
  57.         LINES ............................................... 6
  58.         MAKE.BLT ............................................ 6
  59.         MAKE.BLT.CURRENT .................................... 6
  60.         MORE ................................................ 6
  61.         MUSIC ............................................... 7
  62.         OUT.PUT ............................................. 7
  63.         RINSTR .............................................. 7
  64.         SEND ................................................ 7
  65.         SHOW.BLT ............................................ 7
  66.         SUBEXIST ............................................ 7
  67.         COLOR TABLE ......................................... 8
  68.         CONFIGURATION FILE FORMAT ........................... 9
  69.         PCBOARD.SYS VARIABLES ............................... 10
  70.         USERS.SYS VARIABLES ................................. 12
  71.         DOOR.SYS VARIABLES .................................. 13
  72.         USERINFO.DAT VARIABLES .............................. 15
  73.         DORINFOx.DEF VARIABLES .............................. 15
  74.         CALLINFO.BBS VARIABLES .............................. 16
  75.         SFDOORS.DAT VARIABLES ............................... 18
  76.         CHAIN.TXT VARIABLES ................................. 20
  77.         MISCELLANEOUS NOTES ................................. 21
  78.  
  79.  
  80. DOORFRAME v3.1 - Users Guide - Page ii
  81.  
  82.  
  83.                                    Warranty
  84.  
  85.     This product is provided "as is" without warranty of any kind. The entire
  86.     risk as to the results and  performance of the program is assumed by you.
  87.     Futhermore, the  author does  not warrant, guarantee, or  make any  other
  88.     representations regarding  the use of,  or the  results of the use of the
  89.     program,  and you  rely on the  program and  results  solely at  your own
  90.     risk.  The author  cannot and  will not accept  responsibility for system
  91.     damage, loss of profit, or any other special, consequential or incidental 
  92.     damages  resulting  from  the  use  or  inability  to  use this  product.
  93.  
  94.                                    Copyright
  95.  
  96.     DOORFRAME Copyright (c) 1990-92 by  Ted Freeman  is being distributed as
  97.     Shareware. Under this concept you may use the  SHAREWARE  (unregistered)
  98.     version for a reasonable period of  time for evaluation  after which you
  99.     must either register your copy or discontinue  usage.
  100.  
  101.  
  102.                                  Distribution
  103.  
  104.     You  are encouraged to distribute DOORFRAME provided that all files
  105.     contained in the archive are distributed in their original and
  106.     unmodified state.
  107.  
  108.                                   Description
  109.  
  110.     
  111.     DOORFRAME is a subroutine library for developing online BBS Doors for
  112.     systems that are compatible with PCBOARD.SYS, USERS.SYS, DOOR.SYS,
  113.     CALLINFO.BBS, SFDOORS.DAT or DORINFOx.DEF for interfacing to the BBS.
  114.     DoorFrame was written for QUICKBASIC (tm) 4.5 and is not recommended for
  115.     use with earlier versions of the compiler. DoorFrame also utilizes some of
  116.     the routines contained in Tom Hanlin's PBClone library. The COM routines
  117.     are handled by the QBSerial I/O library.
  118.  
  119.  
  120. DOORFRAME v3.1 - Users Guide - Page 1
  121.  
  122.  
  123.                               DOORFRAME ROUTINES
  124.                              ====================
  125.  
  126. ------------------------------------------------------------------------------
  127. NOTE: 
  128. Since the subroutines are DECLAREd in DFRAME.INC (you DID $INCLUDE: it didn't 
  129. you?) you should not use the CALL statement. Type the name of the subroutine 
  130. and list it's parameters (if any) without the enclosing parentheses.
  131. For example:
  132.  
  133.  DIS.PLAY MSG$, FG%, BG%, BLINK%, BELL%, XPOS%, YPOS%, NL%, CENTER%, CAPS% 
  134.  
  135. The FUNCTIONs still require the enclosing parentheses.
  136. ------------------------------------------------------------------------------
  137.  
  138. SUBROUTINE: 
  139. BOX.IT (SROW%,SCOL%,EROW%,ECOL%,BTYPE%,BFG%,BBG%,FFG%,FBG%,FCHAR%,SHADOW%,TITLE$,HFG%,HBG%)
  140. PARAMETERS: SROW%    - ROW the box is to start at. Valid numbers are 1 - 22.
  141.                        Accepts an INTEGER number or variable.
  142.             SCOL%    - COLUMN the box is to start at. Valid numbers are 1 - 79.
  143.                        Accepts an INTEGER number or variable.
  144.             EROW%    - ROW the box is to end at. Valid numbers are 2 - 23.
  145.                        Accepts an INTEGER number or variable.
  146.             ECOL%    - COLUMN the box is to end at. Valid numbers are 2 - 80.
  147.                        Accepts an INTEGER number or variable.
  148.             BTYPE%   - Type of border. Accepts an INTEGER number or variable.
  149.                          0 = No border (spaces all the way around).
  150.                          1 = Single line all the way around.
  151.                          2 = Double line all the way around.
  152.                          3 = Double line on sides, single on top and bottom.
  153.                          4 = Single line on sides, double on top and bottom.
  154.             BFG%     - Foreground color of the border. (See color table)
  155.                        Accepts an INTEGER number or variable.
  156.             BBG%     - Background color of the border. (See color table)
  157.                        Accepts an INTEGER number or variable.
  158.             FFG%     - Foreground color of the box fill characters.
  159.                        Accepts an INTEGER number or variable.
  160.             FBG%     - Background color of the box fill characters.
  161.                        Accepts an INTEGER number or variable.
  162.             FCHAR%   - ASCII number of the character to fill box with.
  163.                        EX: 32 = SPACE, 65 = A, 206 = ╬
  164.             SHADOW%  - 1 = Shadow, 0 = no Shadow. This will put a Shadow
  165.                        on the right and bottom edges of the box.
  166.             TITLE$   - Displays a title centered on the top border.
  167.                        Accepts a STRING variable or QUOTED TEXT.
  168.             HFG%     - Foreground color of TITLE$
  169.             HFG%     - Background color of TITLE$
  170.  
  171. DESCRIPTION: Draws a BOX with various style borders. The inside of the
  172.              BOX may be filled with any ASCII character you choose. The
  173.              upper left corner of the screen is ROW 1, COLUMN 1 and the
  174.              bottom right is ROW 23, COLUMN 80.
  175.  
  176.  
  177. SUBROUTINE: CLREOL
  178. PARAMETERS: XPOS%, YPOS%, BGC%
  179. DESCRIPTION: Clears from the specified row and column to the end of that
  180.              line. The line is cleared in whatever color is specified in
  181.              the BGC% parameter. NOTE: Does not work in non-ANSI.
  182.  
  183.  
  184. DOORFRAME v3.1 - Users Guide - Page 2
  185.  
  186.  
  187. SUBROUTINE: CLRSCRN
  188. PARAMETERS: BGC%
  189. DESCRIPTION: Clears both the LOCAL (if ON) and REMOTE displays in the back-
  190.              ground color of your choice. Range is 0 - 7. ANSI only.
  191.  
  192. SUBROUTINE: DE.LAY (SEC%)
  193. PARAMETERS: SEC%, 1, 2, Etc.
  194. DESCRIPTION: Pauses your program for the number of seconds in SEC%. Accepts
  195.              INTEGER number or variable.
  196.  
  197.  
  198. SUBROUTINE: DETECT.ANSI
  199. PARAMETERS: None
  200. DESCRIPTION: This routine will determine if the remote system has ANSI
  201.              capability. If the remote system is ANSI compatible, the
  202.              GRAPHICS% variable will be set equal to -1 otherwise it is
  203.              set to 0. This routine does not control whether COLOR is used
  204.              or not, see the MODE% variable for that.
  205.  
  206.  
  207. DOORFRAME v3.1 - Users Guide - Page 3
  208.  
  209. SUBROUTINE: DIS.PLAY (MSG$,FG%,BG%,BLINK%,BELL%,XPOS%,YPOS%,NL%,CENTER%,CAPS%)
  210. PARAMETERS: MSG$     - Text to be printed in either variable or quoted form.
  211.                        Example: "Print this" or MSG$ = "Print this".
  212.  
  213.             FG%      - Foreground color (0 - 15) Of the text. Can be in
  214.                        INTEGER number or INTEGER variable form. 
  215.                        Example: FG% = 1, 1, BLUE (See Color Table)
  216.  
  217.             BG%      - Background color (0 - 7) of text otherwise same as FG%
  218.  
  219.             BLINK%   - Enter 1 for blinking text or 0 for normal text.
  220.                        Accepts INTEGER number or INTEGER variable.
  221.  
  222.             BELL%    - Enter 1 to sound a beep on the remote or 0 for no
  223.                        beep. Does not beep on the local computer.
  224.                        Accepts INTEGER number or INTEGER variable.
  225.  
  226.             XPOS%    - Row number for cursor positioning. Valid numbers
  227.                        are 0 - 23 (status line is on 24 - 25). Enter 0 to
  228.                        disable. Accepts INTEGER number or variable.
  229.                        NOTE: XPOS% is ignored when GRAPHICS% = 0.
  230.  
  231.             YPOS%    - Column number for cursor positioning. Valid numbers
  232.                        are 0 - 80. Enter 0 to disable. Accepts INTEGER number
  233.                        or INTEGER variable.
  234.                        NOTE: YPOS% is ignored when GRAPHICS% = 0.
  235.  
  236.             NL%      - Enter 1 to send a CR/LF at the end of the line. Enter
  237.                        0 to position the cursor after the last character.
  238.                        Accepts INTEGER number or INTEGER variable.
  239.  
  240.             CENTER%  - Enter 1 to center the line or 0 for no centering.
  241.  
  242.             CAPS%    - Enter 1 to convert text to all uppercase.
  243.                        Enter -1 to convert text to all lowercase.
  244.                        Enter 0 for no case conversion.
  245.                        Accepts INTEGER number or INTEGER variable.
  246. DESCRIPTION: Displays text to both the Local (if on) and Remote screens.
  247.              Accepts the full ASCII charcter set (0 - 255). Supports ANSI
  248.              color and cursor positioning (XPOS%, YPOS%). DoorFrame features
  249.              auto-ANSI detection and will display in graphics mode if it
  250.              senses ANSI capability on the remote end.
  251. ENHANCEMENTS: There are some special symbols available to make text blink
  252.              in the middle of a line in any color you wish. For example:
  253.  
  254.              DIS.PLAY "This will %{Blink Yellow{", LWHITE, BLACK, 0, 0,......
  255.  
  256.              Note the {'s before and after Blink Yellow. They tell the routine
  257.              to display the text in between in yellow and blinks because 
  258.              of the % symbol. Without the % the text is displayed in yellow
  259.              but does not blink. The rest of the line is displayed in white
  260.              on black. The symbols and their corresponding colors are:
  261.                 ~ = Blue,  ` = Green,  @ = Cyan,  ^ = Red,  | = Magenta
  262.                 { = Yellow, and } = White 
  263.              Put a * in front of the first symbol to display in low intensity
  264.              colors. Ex: *}text} displays 'text' in low intensity white. And
  265.              %*}test} displays 'text' in low intensity white and blinks.
  266.              Please note that you must have called DETECT.ANSI before using
  267.              these symbols and the caller must be ANSI capable. Multiple codes
  268.              are allowed in one Dis.Play statement. See the included
  269.              DFDEMO.BAS file for examples on using this option.
  270.  
  271. DOORFRAME v3.1 - Users Guide - Page 4
  272.  
  273. SUBROUTINE: ENTER
  274. PARAMETERS: None
  275. DESCRIPTION: Outputs a "Press <ENTER> to Continue" prompt and waits for the
  276.              response. If the caller is in graphics mode, this is centered
  277.              on line 23. In non-graphics mode it is centered 2 lines below
  278.              the last line printed.
  279.  
  280.  
  281. FUNCTION: EXISTS (FILENAME$ + CHR$(0))
  282. PARAMETERS: ASCIIZ Filename
  283. DESCRIPTION: Checks to see if a file exists on disk. The passed parameter
  284.              MUST be an ASCIIZ filename (FILENAME$ + CHR$(0)). The function
  285.              returns 0 if the file exists or -1 if it does not.
  286.              Example: IF EXISTS (MYFILE$ + CHR$(0)) = 0 THEN
  287.                          PRINT "The file is there!"
  288.                       ELSE
  289.                          PRINT "File not found."
  290.                       END IF
  291.  
  292.  
  293. SUBROUTINE: EXIT.DOOR (YN$)
  294. PARAMETERS: YN$, "Y", "N", "G"
  295. DESCRIPTION: VERY IMPORTANT! Always call this subroutine as the last thing
  296.              your program does. EXIT.DOOR updates the system files with any
  297.              changes that have been made to system variables, closes the
  298.              files, etc. When your Door closes, DoorFrame displays:
  299.  
  300.                         Thank you for using (Door Name)
  301.  
  302.                      Please wait while (BBS NAME) reloads.
  303.  
  304.              You can toggle this ON, "Y" or OFF, "N" when you call EXIT.DOOR.
  305.              Accepts a STRING variable YN$ = "Y" or quoted text "Y".
  306.              If you wish to allow the caller to log off from your Door, call
  307.              EXIT.DOOR "G".
  308.  
  309. SUBROUTINE: GETDRV (DRIVE$)
  310. PARAMETERS: DRIVE$
  311. DESCRIPTION: Returns the current default drive. You must initialize the
  312.              parameter to at least one character. For example:
  313.                 DRIVE$ = " "  or DRIVE$ ="x"
  314.                 GETDRV DRIVE$
  315.              After the call, DRIVE$ will contain the default drive letter.
  316.  
  317.  
  318. SUBROUTINE: GETEXECPATH (PATHNAME$, PATHLEN%)
  319. PARAMETERS: PATHNAME$, PATHLEN%
  320. DESCRIPTION: Returns the full path of your program (drive, subdirectory and
  321.              name of program). PATHNAME$ must be initialized to at least 80
  322.              characters. The length of the PATH spec. is returned in the
  323.              variable PATHLEN%. Example:
  324.                 PATHNAME$ = SPACE$(80)
  325.                 GETEXECPATH PATHNAME$, PATHLEN%
  326.                 PATHNAME$ = LEFT$(PATHNAME$, PATHLEN%)
  327.  
  328.  
  329. DOORFRAME v3.1 - Users Guide - Page 5
  330.  
  331. SUBROUTINE: GETSUB1 (DRIVE$, SUBDIR$, SUBLEN%, ERRCODE%)
  332. PARAMETERS: DRIVE$
  333. DESCRIPTION: Returns the current subdirectory on the specified drive. You
  334.              must initalize SUBDIR$ to at least 65 characters. Example:
  335.                 SUBDIR$ = SPACE$(65)
  336.                 GETSUB1 "C", SUBDIR$, SUBLEN%, ERRCODE%
  337.                 SUBDIR$ = LEFT$(SUBDIR$, SUBLEN%)
  338.  
  339.              SUBDIR$ returns with the subdirectory (padded with spaces).
  340.              SUBLEN% will contain the length of the subdirectory path and
  341.              ERRCODE% will 0 if there was no error or non-zero if there was.
  342.  
  343. SUBROUTINE: IN.PUT (LENGTH%, WAITTIME%, IFG%, IBG%)
  344. PARAMETERS: LENGTH%   - Desired length of input. Accepts an INTEGER number
  345.                         or variable. 0 = any length.
  346.             WAITTIME% - Number of seconds to wait for input. If ENTER is not
  347.                         pressed before this times out, control is passed back
  348.                         to the calling routine and RESPONSE$ will contain "-1"
  349.                         You may also have wait times of less than 1 second.
  350.                         Try .005 for 1/18th of a second wait.
  351.             IFG%      - Foreground color of the caller's response (INTEGER).
  352.             IBG%      - Background color of the caller's response (INTEGER).
  353. DESCRIPTION: Gets a response from the caller which is returned in the variable
  354.              RESPONSE$. Passes ASCII characters in the range 32 - 127 and
  355.              ignores all others. The 1st parameter indicates the desired
  356.              length of the input. Pass 0 to accept any length. This feature
  357.              allows you to use HOT KEYS! If you are prompting for a Y/N you
  358.              could do something like:
  359.                 DIS.PLAY "Is everything correct? (y/n) " (+ your parameters)
  360.                 IN.PUT 1, 180, 12, 0
  361.                 IF UCASE$(RESPONSE$) = "Y" THEN  Etc., Etc.
  362.              As soon as the caller hit Y or N, the subroutine terminates
  363.              without his having to hit ENTER (however IN.PUT always returns
  364.              when ENTER is pressed). Accepts an INTEGER number or variable.
  365.              The IN.PUT can also be used as a timed routine. In the example
  366.              above, The routine would wait for 180 seconds. if it does not
  367.              receive a keypress within that time, it returns to the calling
  368.              routine and RESPONSE$ would contain a "-1".
  369.              (See the enclosed EXINPUT.BAS for an example).
  370.  
  371.  
  372. SUBROUTINE: INITIALIZE
  373. PARAMETERS: None
  374. DESCRIPTION: VERY IMPORTANT! You MUST make a call to INITIALIZE before your
  375.              code does anything. This subroutine opens the system files and
  376.              obtains all the information you will need to run your Door. It
  377.              first reads the configuration file you passed on the command
  378.              line, then it reads PCBOARD.SYS, PCBOARD.DAT, and USERS (for 
  379.              PCBoard) or DOOR.SYS. There are 3 variables that must be
  380.              populated before the call to INITIALIZE. 
  381.                 PROGNAME$ = "Name of your Door"
  382.                 EXENAME$ = "FILENAM"
  383.                 VERSION$ = " v0.0"
  384.                 INITIALIZE
  385.              PROGNAME$ and VERSION$ are displayed on the Status line after
  386.              the callers name. EXENAME$ must be populated if you plan to use
  387.              the high score bulletin generator. EXENAME$ is the filename of
  388.              your program minus the .EXE extension.
  389.          ->  NOTE: EXENAME$ MUST BE NO MORE THAN 7 CHARACTERS!
  390.  
  391. DOORFRAME v3.1 - Users Guide - Page 6
  392.  
  393. SUBROUTINE: LINES (SROW%,SCOL%,LEN%,DIR$,ENDS%,MID%,EFG%,EBG%,MFG%,MBG%)
  394. PARAMETERS: SROW%    - Row the line starts at. Valid numbers are 1 - 22.
  395.                        Accepts an INTEGER number or variable.
  396.             SCOL%    - Column the line starts at. Valid numbers are 1 - 79.
  397.                        Accepts an INTEGER number or variable.
  398.             LEN%     - Length of the line. Max. of 23 for vertical, 80 horiz.
  399.                        Accepts an INTEGER number or variable.
  400.             DIR$     - "H" = horizontal. "V" = vertical. Accepts a STRING
  401.                        variable or quoted text.
  402.             ENDS%    - If you are placing the line inside a box, you can
  403.                        make the ends of the line match the box border.
  404.                        Accepts an INTEGER number or variable.
  405.                          0 = No ends. (straight line only)
  406.                          1 = Single line.
  407.                          2 = Double line.
  408.             MID%     - Type of line. 1 = Single line. 2 = Double line.
  409.                        Accepts an INTEGER number or variable.
  410.             EFG%     - Foreground color of the ends (see color table).
  411.                        Accepts an INTEGER number or variable.
  412.             EBG%     - Background color of the ends (see color table).
  413.                        Accepts an INTEGER number or variable.
  414.             MFG%     - Foreground color of the line (see color table).
  415.                        Accepts an INTEGER number or variable.
  416.             MBG%     - Background color of the line (see color table).
  417.                        Accepts an INTEGER number or variable.
  418. DESCRIPTION: Draws either a vertical or horizontal line at the specified
  419.              location. 
  420.  
  421.  
  422. SUBROUTINE: MAKE.BLT (HI.SCORE&)
  423. PARAMETERS: HI.SCORE&, 10, 10000, Etc.
  424. DESCRIPTION: This routine will write a hi-score bulletin listing the top ten
  425.              scores. The parameter passed must be a long integer (&). This
  426.              routine creates a file called FILENAME.BUL. The first line of
  427.              this .BUL file indicates the path to the actual BLT file. It
  428.              initially writes FILENAME.BLT. If you wish to have a different
  429.              filename (such as BLT1) you must edit this line. The filename
  430.              for your BLT file should be 7 characters or less because
  431.              DoorFrame also writes a graphics BLT and appends a G to the
  432.              filename. (You should also explain this to your user Sysops!)
  433.  
  434.  
  435. SUBROUTINE: MAKE.BLT.CURRENT (HI.SCORE&)
  436. PARAMETERS: HI.SCORE&, 10, 10000, Etc.
  437. DESCRIPTION: Same as MAKE.BLT except it posts CURRENT scores rather than
  438.              highest scores.
  439.  
  440.  
  441. SUBROUTINE: MORE
  442. PARAMETERS: None
  443. DESCRIPTION: Outputs "Press <ENTER> to continue, or <E> to end" and waits
  444.              for a response. Check the variable RESPONSE$ for an "E" and
  445.              terminate the current routine if found. For example:
  446.                 MORE
  447.                 IF UCASE$(RESPONSE$) = "E" THEN
  448.                   Etc.. Etc.
  449.  
  450. DOORFRAME v3.1 - Users Guide - Page 7
  451.  
  452. SUBROUTINE: MUSIC (TUNE$)
  453. PARAMETERS: MUSIC CODES
  454. DESCRIPTION: Outputs music to the remote system. The TUNE$ parameter
  455.              contains the same codes you would normally use in the BASIC
  456.              PLAY statement. For example:
  457.               TUNE$ = "t110 l8 ms d4 mn o3 g a b o4 c ... "
  458.               MUSIC TUNE$
  459.              Since not all communications programs can handle music, you
  460.              should ask the user if he has music capabilities. If the
  461.              user can't handle music he will simply see the music codes
  462.              come across his screen (not a pretty sight!).
  463.  
  464.  
  465. SUBROUTINE: OUT.PUT (LF%)
  466. PARAMETERS: LF%, 1, 2, Etc.
  467. DESCRIPTION: Outputs the specified number of CR/LF. Parameter is an INTEGER
  468.              number or an INTEGER variable. Ex: OUT.PUT 2
  469.  
  470.  
  471. SUBROUTINE: RINSTR (MAINST$, SEEKST$, FOUND%)
  472. PARAMETERS: MAINST$, SEEKST$
  473. DESCRIPTION: Like INSTR, this routine tells your the position of a substring
  474.              within a string. A reverse search is used and tells you the
  475.              last match rather than the first match. Example:
  476.                 MAINST$ = "This is a test string"
  477.                 RINSTR MAINST$, "is", FOUND%
  478.              FOUND% will contain the position of the word "is" rather than
  479.              the last 2 letters of "This" as would be returned by INSTR.
  480.  
  481.  
  482. SUBROUTINE: SEND (FILENAME$, YN%, CLR%)
  483. PARAMETERS: FILENAME$ - STRING variable or quoted text of file to SEND.
  484.             YN%       - 0 = Do not use the ENTER prompt after last page.
  485.                         1 = Use the ENTER prompt after last page.
  486.             CLR%      - 0 = Home cursor, do not clear screen.
  487.                         1 = Normal clear screen.
  488. DESCRIPTION: Sends the specified filename. This can be either an ASCII file
  489.              or an ANSI file. SEND first checks for the existance of the file
  490.              and either sends the file or reports "File not Found!". This is
  491.              handy for displaying Help files, Welcome screens, etc.
  492.        NOTE: When using The Draw to create ANSI screens, save the screen using
  493.              the block mode (ALT-B) as this seems to produce better results
  494.              than using the regular save function (ALT-S).
  495.  
  496.  
  497. SUBROUTINE: SHOW.BLT (YN$)
  498. PARAMETERS: YN$, "Y", "N"
  499. DESCRIPTION: Call this routine if your Door features a Hi-score bulletin. Make
  500.              sure you have called MAKE.BLT first! Best place to call this
  501.              is just before you call EXIT.DOOR. For example:
  502.               MAKE.BLT HI.SCORE&
  503.               SHOW.BLT "Y"
  504.               EXIT.DOOR "Y"
  505.              SHOW.BLT "Y" will ask if they want to see the Bulletin.
  506.              SHOW.BLT "N" displays the bulletin without asking.
  507.  
  508.  
  509. SUBROUTINE: SUBEXIST (SUBDIR$, FOUND%)
  510. PARAMETERS: SUBDIR$, "C:\SUBDIR"
  511. DESCRIPTION: Tells you if a subdirectory actually exists. Pass a STRING
  512.              variable or quoted string. FOUND% will return with a zero if
  513.              the subdirectory doesn't exist or non-zero if it does.
  514.  
  515.  
  516. DOORFRAME v3.1 - Users Guide - Page 8
  517.  
  518.  
  519.                              C O L O R  T A B L E
  520.                             ======================
  521.  
  522. COLOR # - NAME       INTENSITY       FOREGROUND (FG%)     BACKGROUND (BG%)
  523. ---------------------------------------------------------------------
  524.  0 - BLACK              Low               X                   X
  525.  1 - BLUE                "                X                   X
  526.  2 - GREEN               "                X                   X
  527.  3 - CYAN                "                X                   X
  528.  4 - RED                 "                X                   X
  529.  5 - MAGENTA             "                X                   X
  530.  6 - YELLOW              "                X                   X
  531.  7 - WHITE               "                X                   X
  532.  8 - GRAY               High              X
  533.  9 - LBLUE               "                X
  534. 10 - LGREEN              "                X
  535. 11 - LCYAN               "                X
  536. 12 - LRED                "                X
  537. 13 - LMAGENTA            "                X
  538. 14 - LYELLOW             "                X
  539. 15 - LWHITE              "                X
  540.  
  541. The COLORs are defined as CONSTANT in the DFRAME.INC file so you may use
  542. either the actual color number, it's name or an INTEGER variable of your own
  543. choosing when CALLing the DIS.PLAY subroutine.
  544.  
  545.  
  546. DOORFRAME v3.1 - Users Guide - Page 9
  547.  
  548.  
  549.                               CONFIGURATION FILE
  550.                               ==================
  551.  
  552. The format of the configuration file used by Doors created with DoorFrame is:
  553.  
  554. C:\PCB\PCBOARD.SYS              <- For PCBoard systems using PCBOARD.SYS only
  555. C|\PCB\USERS.SYS                <- For PCBoard systems using USERS.SYS
  556.                                    DoorFrame also recognizes the PCBoard
  557.                                    %PCBDRIVE% and %PCBDIR% environment var.
  558. C:\BBS\CALLINFO.BBS             <- For Wildcat! systems (prior to v3.1)
  559. C:\BBS\CHAIN.TXT                <- For WWIV systems
  560. C:\BBS\GTUSER.BBS               <- For GT Power systems
  561. C:\BBS\USERINFO.DAT             <- For Wildcat! 3.x+ systems.
  562. C:\BBS\DOOR.SYS                 <- For systems that support DOOR.SYS
  563. C:\BBS\DORINFOx.DEF             <- For QBBS/RBBS/RA. Replace x with Node #.
  564. C:\BBS\SFDOORS.DAT              <- For Spitfire systems.
  565. MicroNet                        <- BBS name
  566. Ted                             <- Sysop's first name
  567. Freeman                         <- Sysop's last name
  568.   .                             <- The Configuration file is left open as #1
  569.   .                                so you may add whatever is necessary.
  570.  
  571. NOTE: DoorFrame supports COM 1-4 on the standard IRQ's - COM1/COM3 = IRQ4 and
  572.       COM2/COM4 = IRQ3. If you wish to use a non-standard IRQ, add the IRQ
  573.       number after the configuration filename. Let's assume your Door is
  574.       called FOOBAR and you want to use COM1 and IRQ5. The command line
  575.       passed to your Door would be:
  576.         FOOBAR FOOBAR.CFG /5  
  577.         or  FOOBAR FOOBAR.CFG /%IRQ%  for the environment variable.
  578.       The /5 tells DoorFrame to use IRQ5 rather than the standard IRQ4 that
  579.       is normally used with COM1. No /x parameter is needed for the standard
  580.       IRQ's.
  581.  
  582. NOTE: There are 2 additional lines necessary when using GTUSER.BBS. Since
  583.       this file does not provide the ComPort% and NodeNum% variables, advise
  584.       your Door users to add them to this .CFG file on lines 5 and 6
  585.       respectively. Both variables will default to 1.
  586.  
  587.  
  588. DOORFRAME v3.1 - Users Guide - Page 10
  589.  
  590.  
  591.                   VARIABLES AVAILABLE WHEN USING PCBOARD.SYS
  592.                   ==========================================
  593.  
  594.         ALLOWEDBYTES&             Allowed D/L bytes from the PWRD file.
  595.                                   This number has already been multipled
  596.                                   by 1024 so it will be in actual bytes
  597.                                   rather than Kilobytes allowed.
  598.       * BAUDCONN$                 Connect rate of caller or "LOCAL"
  599.       * BAUDOPEN$                 Port opening BPS
  600.       * BBSSYS$                   Name of the BBS
  601.         CALLALARM%                Caller alarm status.     -1=ON, 0=OFF
  602.       * CALLERSLOC$               Location of CALLERSx log
  603.         CHATSTATUS$               Chat mode status. "U" or "A"
  604.       * CITY$                     Callers city and state
  605.       * CNAMESLOC$                Location of CNAMES
  606.       * COMPORT%                  COM port number
  607.         CONFREG$                  Conferences registered in
  608.         DISPLAY%                  Local display status.    -1=ON, 0=OFF
  609.         DOWNLOADS&                Number of downloads made
  610.       * ECC%                      Error corrected connect.  1=YES, 0=NO
  611.         EXENAME$                  Name of .EXE (Programmer supplied)
  612.         EXPERT$                   Expert mode - "Y" or "N"
  613.         EXPIRE$                   Callers expiration date
  614.       * FIRST$                    Callers first name
  615.         GRAPHICS%                 Graphics mode status.    -1=ON, 0=OFF
  616.                                   Determines if the caller is ANSI compatible
  617.                                   If your door requires the use of cursor
  618.                                   positioning and GRAPHICS% = 0 then you
  619.                                   should kick him back out of the door.
  620.       * HPHONE$                   Callers home phone number
  621.       * LASTON$                   Date caller last logged on (MM-DD-YY)
  622.         LEVEL&                    Callers security level
  623.       * LOCALUSR%                 -1 = LOCAL mode, 0 = Online
  624.       * LOGONHRS$                 Time caller logged on in HH:MM format
  625.       * LOGONMINS%                Time caller logged on in minutes
  626.         MODE%                     0 = Non-color, -1 = color is on. Default
  627.                                   is the BBS setting. You may force color
  628.                                   by setting this to -1.
  629.       * NAME$                     Callers full name
  630.       * NETWORK%                  1 = BBS is networked, 0 = no network
  631.       * NODENUM%                  Node number
  632.         OWNER$                    Name DoorFrame is registered to (if any).
  633.         PASSWORD$                 Password of caller
  634.         PAGEBELL%                 Page bell status.        -1=ON, 0=OFF
  635.         PAGELEN%                  Callers page length
  636.       * PCBDAT$                   Location of PCBOARD.DAT
  637.       * PCBOARD%                  1 = PCBoard, 0 = non-PCBoard
  638.         PRINTER%                  Printer status.          -1=ON, 0=OFF
  639.         PROGNAME$                 Name of DOOR (Programmer supplied)
  640.         PROTOCOL$                 Caller's default protocol (Z, X, etc.)
  641.         RESPONSE$                 Returned after a CALL to IN.PUT
  642.         SERIAL$                   Your DoorFrame serial #. String variable.
  643.       * SYSLOC$                   Location of system file. This contains the
  644.                                   path/filename of line 1 in the .CFG file.
  645.       * SYSOP%                    1 = SYSOP is using DOOR, 0 otherwise
  646.       * SYSOPFIRST$               Sysops first name
  647.         SYSOPFLAG$                " ", "N"=Sysop Next, "X"=Exit to DOS
  648.       * SYSOPLAST$                Sysops last name
  649.       * SYSOPNAME$                Sysops first and last names
  650.  
  651.  
  652. DOORFRAME v3.1 - Users Guide - Page 11
  653.  
  654.  
  655.         TIMEADJUST%               Use to adjust the callers remaining time
  656.                                   online. This variable adjusts the ELAPSED
  657.                                   time so if you wish to decrease his time,
  658.                                   give this a positive value.
  659.       * TIMEALWD%                 Minutes caller is allowed
  660.       * TIMELEFT%                 Time caller has left in minutes. Doorframe
  661.                                   calculates this so changing it has no effect
  662.       * TIMENOW%                  Current time in minutes (0 - 1440)
  663.       * TIMESON%                  Number of times on system
  664.         TIMEOUT%                  Programmer supplied. Defaults to 5 mins if
  665.                                   not specified. Has a minimum of one min.
  666.                                   No limit on maximum. 
  667.       * TIMEUSED%                 Time used so far today in minutes
  668.         UPLOADS&                  Number of uploads made
  669.       * USERCOMMENT$              User maintained comment
  670.       * USERSLOC$                 Location of USERS file
  671.       * USERNUM%                  Record number of caller
  672.         VERSION$                  DOOR version # (Programmer supplied)
  673.       * WPHONE$                   Callers work phone number
  674.  
  675. NOTES: Variables marked with '*' are provided for information only.
  676.  
  677.  
  678. DOORFRAME v3.1 - Users Guide - Page 12
  679.  
  680.  
  681.                    VARIABLES AVAILABLE WHEN USING USERS.SYS
  682.                    ========================================
  683.  
  684.         When using USERS.SYS, all variables contained in PCBOARD.SYS may
  685.         be used plus the following additional variables.
  686.  
  687.         DAILYDNLDBYTES&          Bytes downloaded so far today.
  688.         DELETEFLAG%              1 = delete this record, 0 = keep
  689.         EXPIREDLEVEL&            Expired Security level
  690.         LASTCONF%                Conference number last in.
  691.         LASTTIMEON$              Last time caller was on
  692.         MSGS.LEFT%               Number of messages posted
  693.         MSGS.READ%               Number of messages read
  694.         PCB.VERSION%             PCBoard version number (i.e. 1450)
  695.         TOTDNLDBYTES&            Total number of BYTES downloaded
  696.         TOTUPLDBYTES&            Total number of BYTES uploaded
  697.  
  698. NOTES: These variables are all passed back to PCBoard.
  699.  
  700.  
  701. DOORFRAME v3.1 - Users Guide - Page 13
  702.  
  703.  
  704.                     VARIABLES AVAILABLE WHEN USING DOOR.SYS
  705.                     =======================================
  706.  
  707.         ALIAS$                    Callers alias/handle
  708.       * ANSISUPPORT$              Caller supports ANSI but in NG mode
  709.       * BAUDCONN$                 Connect rate of caller or "LOCAL"
  710.       * BAUDOPEN$                 Port opening BPS
  711.       * BBSCOLOR%                 BBS default color code (1-15)
  712.       * BBSSYS$                   Name of the BBS
  713.         BIRTHDATE$                Callers date of birth
  714.         CALLALARM%                Caller alarm status.     -1=ON, 0=OFF
  715.       * CITY$                     Callers city and state
  716.       * COMPORT%                  COM port number (1 - 4).
  717.         CONFREG$                  Conferences registered in
  718.         DAILY.BYTES.ALWD&         Daily download max. K limit
  719.         DISPLAY%                  Local display status.    -1=ON, 0=OFF
  720.         DOORS.OPENED%             Number of Doors caller has opened
  721.         DOWNLOADS&                Number of downloads made
  722.       * ECC%                      Error corrected connect.  1=YES, 0=NO
  723.         EXENAME$                  Name of .EXE (Programmer supplied)
  724.         EXFROM%                   Conference exited to Door from.
  725.         EXPERT$                   Expert mode - "Y" or "N"
  726.         EXPIRE$                   Callers expiration date
  727.       * EVENT$                    Event time (hh:mm)
  728.         GRAPHICS%                 Graphics mode status.    -1=ON, 0=OFF
  729.                                   Determines if the caller is ANSI compatible
  730.                                   If your door requires the use of cursor
  731.                                   positioning and GRAPHICS% = 0 then you
  732.                                   should kick him back out of the door.
  733.       * HPHONE$                   Callers home phone number
  734.       * LASTON$                   Date caller last logged on (MM-DD-YY)
  735.         LASTSCAN$                 Date of last directory/new files scan.
  736.         LEVEL&                    Callers security level
  737.       * LOCALUSR%                 -1 = LOCAL mode, 0 = Online
  738.       * LOGONHRS$                 Time caller logged on in HH:MM format
  739.       * LOGONMINS%                Time caller logged on in minutes
  740.         MAX.FILES%                Maximum daily files available
  741.         MINSCREDIT%               Time credits in minutes
  742.         MODE%                     0 = Non-color, -1 = color is on. Default
  743.                                   is the BBS setting. You may force color
  744.                                   by setting this to -1.
  745.         MSGS.LEFT%                Total messages left
  746.       * NAME$                     Callers full name
  747.       * NETWORK%                  1 = BBS is networked, 0 = no network
  748.       * NODENUM%                  Node number
  749.         DLTODAY&                  Files downloaded so far today
  750.         OWNER$                    Name DoorFrame is registered to (if any).
  751.         PAGEBELL%                 Page bell status.        -1=ON, 0=OFF
  752.         PAGELEN%                  Callers page length
  753.       * PARITY%                   Parity (word length?) (7 or 8)
  754.         PASSWORD$                 Password of caller
  755.       * PATHGEN$                  Path to the GEN directory
  756.       * PATHMAIN$                 Path to the MAIN directory
  757.         PRINTER%                  Printer status.          -1=ON, 0=OFF
  758.         PROGNAME$                 Name of DOOR (Programmer supplied)
  759.         PROTOCOL$                 Callers default protocol (Z, X, etc)
  760.         RESPONSE$                 Returned after a CALL to IN.PUT
  761.  
  762.  
  763. DOORFRAME v3.1 - Users Guide - Page 14
  764.  
  765.  
  766.         SECREM$                   Number of seconds remaining this call.
  767.         SERIAL$                   Your DoorFrame serial #. String variable.
  768.       * SYSLOC$                   Location of system file. This contains the
  769.                                   path/filename of line 1 in the .CFG file.
  770.       * SYSOP%                    1 = SYSOP is using DOOR, 0 otherwise
  771.       * SYSOPFIRST$               Sysops first name
  772.       * SYSOPLAST$                Sysops last name
  773.       * SYSOPNAME$                Sysops first and last names
  774.         TIMEADJUST%               Use to adjust the callers remaining time
  775.                                   online. This variable adjusts the ELAPSED
  776.                                   time so if you wish to decrease his time,
  777.                                   give this a positive value.
  778.       * TIMELASTCALL$             Time of last call (hh:mm)
  779.       * TIMELEFT%                 Time caller has left in minutes. Doorframe
  780.                                   calculates this so changing it has no effect
  781.       * TIMENOW%                  Current time in minutes (0 - 1440)
  782.         TIMEOUT%                  Programmer supplied. Defaults to 5 mins if
  783.                                   not specified. Has a minimum of one min.
  784.                                   No limit on maximum. 
  785.       * TIMESON%                  Number of times on system
  786.       * TIMEUSED%                 Time used so far today in minutes
  787.         TOTAL.BYTES.TODAY&        Daily download K total
  788.         TOTAL.KB.DL&              Total K bytes downloaded
  789.         TOTAL.KB.UL&              Total K bytes uploaded
  790.         UPLOADS&                  Number of uploads made
  791.       * USERCOMMENT$              User maintained comment
  792.       * USERNUM%                  Record number of caller
  793.         VERSION$                  DOOR version # (Programmer supplied)
  794.       * WPHONE$                   Callers work phone number
  795.  
  796. NOTES: Variables marked with '*' are provided for information only.
  797.  
  798.  
  799. DOORFRAME v3.1 - Users Guide - Page 15
  800.  
  801.  
  802.                   VARIABLES AVAILABLE WHEN USING USERINFO.DAT
  803.                   ===========================================
  804.  
  805.       * ACTIVE.MENU%              0=Main, 1=Msg, 2=File, 3=Sysop
  806.         ALIAS$                    Callers alias/handle
  807.       * ANSISUPPORT$              'Y' or 'N' for ANSI enabled.
  808.         BANKED.TIME%              Banked time. (DLT - MaxLogOn)
  809.       * BAUDCONN$                 Connect rate of caller or "LOCAL"
  810.       * COMMAND.LINE$             Started with a CommandLine switch. Y or N.
  811.       * DATABITS$                 Databits, 7 or 8.
  812.       * DOOR.LOGOFF$              Y or N. Set to Y if caller logged off from
  813.                                   inside the door.
  814.         DOOR.DL&                  Number of files DL'ed in the door.
  815.         DOOR.KB&                  Downloads in K, add to daily and total bytes
  816.       * ECC%                      Error corrected connect.  1=YES, 0=NO
  817.       * LOGONTIMEDATE$            Time and date caller logged on to BBS
  818.       * NAME$                     Callers full name
  819.         SEC.LEVEL.NAME$           Security level name.
  820. NOTES: Variables marked with '*' are provided for information only.
  821.        All other variables are taken from the DOOR.SYS file.
  822.  
  823.  
  824.                   VARIABLES AVAILABLE WHEN USING DORINFOx.DEF
  825.                   ===========================================
  826.  
  827.       * BAUDRATE$                 Baud rate and parity of caller.
  828.                                   Ex. 2400 BAUD,N,8,1
  829.                                   NOTE: RBBS adds baud rate of BBS.
  830.       * BBSSYS$                   Name of the BBS
  831.       * CITY$                     Callers city and state
  832.       * COMPORT%                  COM port number (1 - 4).
  833.         DISPLAY%                  Defaults to -1 (ON).
  834.       * DORINFO13TH$              13th line available only on RBBS systems.
  835.         EXENAME$                  Name of .EXE (Programmer supplied)
  836.       * FIRST$                    Callers first name
  837.         GRAPHICS%                 Graphics mode status.    -1=ON, 0=OFF
  838.                                   Determines if the caller is ANSI compatible
  839.                                   If your door requires the use of cursor
  840.                                   positioning and GRAPHICS% = 0 then you
  841.                                   should kick him back out of the door.
  842.                                   Use DETECT.ANSI to determine this.
  843.       * LAST$                     Callers last name
  844.       * LASTON$                   Default 01-01-80 (not provided in DORINFO)
  845.         LEVEL&                    Callers security level
  846.       * LOCALUSR%                 -1 = LOCAL mode, 0 = Online
  847.         MODE%                     0 = Non-color, -1 = color is on. Default
  848.                                   is the BBS setting. You may force color
  849.                                   by setting this to -1.
  850.       * NAME$                     Callers full name
  851.         NETWORK$                  Network type. DoorFrame reads/writes as is.
  852.       * NODENUM%                  Number of this Node.
  853.         OWNER$                    Name DoorFrame is registered to (if any).
  854.         PROGNAME$                 Name of DOOR (Programmer supplied)
  855.         RESPONSE$                 Returned after a CALL to IN.PUT
  856.         SERIAL$                   Your DoorFrame serial #. String variable.
  857.       * SYSLOC$                   Location of system file. This contains the
  858.                                   path/filename of line 1 in the .CFG file.
  859.       * SYSOP%                    1 = SYSOP is using DOOR, 0 otherwise
  860.       * SYSOPFIRST$               Sysops first name
  861.       * SYSOPLAST$                Sysops last name
  862.       * SYSOPNAME$                Sysops first and last names
  863.  
  864.  
  865. DOORFRAME v3.1 - Users Guide - Page 16
  866.  
  867.         TIMEADJUST%               Use to adjust the callers remaining time
  868.                                   online. This variable adjusts the ELAPSED
  869.                                   time so if you wish to decrease his time,
  870.                                   give this a positive value.
  871.       * TIMELEFT%                 Time caller has left in minutes. Doorframe
  872.                                   calculates this so changing it has no effect
  873.       * TIMENOW%                  Current time in minutes (0 - 1440)
  874.         TIMEOUT%                  Programmer supplied. Defaults to 5 mins if
  875.                                   not specified. Has a minimum of one min.
  876.                                   No limit on maximum. 
  877.       * TIMESON%                  Defaults to 1 (Not provided in DORINFO)
  878.       * TIMEUSED%                 Time used so far today in minutes
  879.  
  880. NOTES: Variables marked with '*' are provided for information only.
  881.  
  882.  
  883.  
  884.                   VARIABLES AVAILABLE WHEN USING CALLINFO.BBS
  885.                   ===========================================
  886.  
  887.       * ALREADYCONNECTED$         "TRUE" or "FALSE"
  888.       * BAUDCONN$                 Connect rate of caller or "LOCAL"
  889.       * BBSSYS$                   Name of the BBS
  890.       * CITY$                     Callers city and state
  891.       * COMPORT%                  COM port number (1 - 4).
  892.         CONFREG$                  Conferences registered in (ABCD etc.)
  893.       * CONSOLE$                  "LOCAL" or "REMOTE"
  894.         DAILY.BYTES.ALWD&         Daily download max. K limit
  895.       * DATABITS$                 7 or 8
  896.         DISPLAY%                  Local display status.    -1=ON, 0=OFF
  897.       * DOORNUMBER$               BBS number of this door?
  898.         EXENAME$                  Name of .EXE (Programmer supplied)
  899.       * ENTERDOOR$                Time caller entered door in HH:MM format.
  900.       * FIRST$                    Callers first name
  901.         GRAPHICS%                 Graphics mode status.    -1=ON, 0=OFF
  902.                                   Determines if the caller is ANSI compatible
  903.                                   If your door requires the use of cursor
  904.                                   positioning and GRAPHICS% = 0 then you
  905.                                   should kick him back out of the door.
  906.                                   Use DETECT.ANSI to determine this.
  907.       * LAST$                     Callers last name
  908.         LASTMSG$                  Last message read
  909.       * LASTONDATE$               Date and time of last call
  910.         LEVEL&                    Callers security level
  911.       * LOCALUSR%                 -1 = LOCAL mode, 0 = Online
  912.       * LOGONTIMEDATE$            Time and date caller logged on to BBS
  913.       * LOGONHRS$                 Time caller logged on in HH:MM format
  914.         MODE%                     0 = Non-color, -1 = color is on. Default
  915.                                   is the BBS setting. You may force color
  916.                                   by setting this to -1.
  917.       * MNP$                      "MNP/ARQ Connection" or "Normal Connection"
  918.       * NAME$                     Callers full name
  919.         DLTODAY&                  Files downloaded so far today
  920.  
  921.  
  922. DOORFRAME v3.1 - Users Guide - Page 17
  923.  
  924.         OWNER$                    Name DoorFrame is registered to (if any).
  925.         PASSWORD$                 Password of caller
  926.         PROGNAME$                 Name of DOOR (Programmer supplied)
  927.         RESPONSE$                 Returned after a CALL to IN.PUT
  928.         SERIAL$                   Your DoorFrame serial #. String variable.
  929.       * SYSLOC$                   Location of system file. This contains the
  930.                                   path/filename of line 1 in the .CFG file.
  931.       * SYSOP%                    1 = SYSOP is using DOOR, 0 otherwise
  932.       * SYSOPFIRST$               Sysops first name
  933.       * SYSOPLAST$                Sysops last name
  934.       * SYSOPNAME$                Sysops first and last names
  935.         TIMEADJUST%               Use to adjust the callers remaining time
  936.                                   online. This variable adjusts the ELAPSED
  937.                                   time so if you wish to decrease his time,
  938.                                   give this a positive value.
  939.       * TIMELEFT%                 Time caller has left in minutes. Doorframe
  940.                                   calculates this so changing it has no effect
  941.       * TIMENOW%                  Current time in minutes (0 - 1440)
  942.       * TIMEOFF$                  Time caller exited from the door.
  943.         TIMEOUT%                  Programmer supplied. Defaults to 5 mins if
  944.                                   not specified. Has a minimum of one min.
  945.                                   No limit on maximum. 
  946.       * TIMEUSED%                 Time used so far today in minutes
  947.       * USERNUM%                  Record number of caller
  948.  
  949. NOTES: Variables marked with '*' are provided for information only.
  950.  
  951.  
  952. DOORFRAME v3.1 - Users Guide - Page 18
  953.  
  954.  
  955.                   VARIABLES AVAILABLE WHEN USING SFDOORS.DAT
  956.                   ==========================================
  957.  
  958.         ANSION$                   "TRUE" or "FALSE"
  959.       * BAUDCONN$                 Connect rate of caller or "LOCAL"
  960.       * BBSDIR$                   Spitfire's home directory
  961.       * BBSSYS$                   Name of the BBS
  962.       * CITY$                     Callers city and state
  963.       * COMPORT%                  COM port number (1 - 4).
  964.         DAILY.BYTES.ALLOWED&      Maximum download BYTES per day
  965.         DISPLAY%                  Local display status.    -1=ON, 0=OFF
  966.         DLPERDAY&                 Number of downloads allowed per day
  967.         DLTODAY&                  Number of downloads made today
  968.         DOWNLOADS&                Number of downloads made
  969.       * ECC%                      Error corrected connect.  1=YES, 0=NO
  970.         EXENAME$                  Name of .EXE (Programmer supplied)
  971.         EXTRATIME&                Number of seconds gained since logon
  972.       * FIRST$                    Callers first name
  973.       * FRONTEND$                 "TRUE" or "FALSE" if booted from a
  974.                                   front end program.
  975.         GRAPHICS%                 Graphics mode status.    -1=ON, 0=OFF
  976.                                   Determines if the caller is ANSI compatible
  977.                                   If your door requires the use of cursor
  978.                                   positioning and GRAPHICS% = 0 then you
  979.                                   should kick him back out of the door.
  980.                                   Use DETECT.ANSI to determine this.
  981.       * HPHONE$                   Callers home phone number
  982.       * LAST$                     Callers last name
  983.         LASTMCONF$                Last message conference
  984.         LASTFAREA$                Last file area
  985.         LEVEL&                    Callers security level
  986.       * LOCALUSR%                 -1 = LOCAL mode, 0 = Online
  987.       * LOGONHRS$                 Time caller logged on in HH:MM format
  988.       * LOGONSECS&                Number of seconds since midnight
  989.                                   when caller logged on to the BBS.
  990.       * MAXBAUD$                  Maximum baud of the system
  991.         MODE%                     0 = Non-color, -1 = color is on. Default
  992.                                   is the BBS setting. You may force color
  993.                                   by setting this to -1.
  994.       * NAME$                     Callers full name
  995.       * NODENUM%                  Number of this Node.
  996.       * NODTELOCK$                "TRUE" or "FALSE" if configured for
  997.                                   software data flow control.
  998.         OWNER$                    Name DoorFrame is registered to (if any).
  999.         PASSWORD$                 Password of caller
  1000.         PROGNAME$                 Name of DOOR (Programmer supplied)
  1001.         RESPONSE$                 Returned after a CALL to IN.PUT
  1002.       * SECONDS&                  Number of seconds since midnight
  1003.                                   when caller entered the door.
  1004.         SERIAL$                   Your DoorFrame serial #. String variable.
  1005.       * SYSLOC$                   Location of system file. This contains the
  1006.                                   path/filename of line 1 in the .CFG file.
  1007.       * SYSOP%                    1 = SYSOP is using DOOR, 0 otherwise
  1008.       * SYSOPFIRST$               Sysops first name
  1009.       * SYSOPLAST$                Sysops last name
  1010.       * SYSOPNAME$                Sysops first and last names
  1011.         SYSOPNEXT$                "TRUE" or "FALSE"
  1012.  
  1013. NOTES: Variables marked with '*' are provided for information only.
  1014.  
  1015.  
  1016. DOORFRAME v3.1 - Users Guide - Page 19
  1017.  
  1018.  
  1019.         TIMEADJUST%               Use to adjust the callers remaining time
  1020.                                   online. This variable adjusts the ELAPSED
  1021.                                   time so if you wish to decrease his time,
  1022.                                   give this a positive value.
  1023.       * TIMEALWD%                 Minutes caller is allowed
  1024.       * TIMELEFT%                 Time caller has left in minutes. Doorframe
  1025.                                   calculates this so changing it has no effect
  1026.       * TIMENOW%                  Current time in minutes (0 - 1440)
  1027.         TIMEOUT%                  Programmer supplied. Defaults to 5 mins if
  1028.                                   not specified. Has a minimum of one min.
  1029.                                   No limit on maximum. 
  1030.       * TIMEUSED%                 Time used so far today in minutes
  1031.  
  1032.         TOTAL.BYTES.TODAY&        BYTES downloaded so far today
  1033.         TOTAL.KB.DL&              Total K bytes downloaded
  1034.         TOTAL.KB.UL&              Total K bytes uploaded
  1035.         UPLOADS&                  Number of uploads made
  1036.       * USERNUM%                  Record number of caller
  1037.  
  1038. NOTES: Variables marked with '*' are provided for information only.
  1039.  
  1040.  
  1041. DOORFRAME v3.1 - Users Guide - Page 20
  1042.  
  1043.  
  1044.                    VARIABLES AVAILABLE WHEN USING CHAIN.TXT
  1045.                    ========================================
  1046.  
  1047.         AGE$                      Caller's age
  1048.         ALIAS$                    Callers alias/handle
  1049.       * BBSSYS$                   Name of the BBS
  1050.       * CALLSIGN$                 HAM radio call sign
  1051.         COLUMNS$                  Caller's screen width
  1052.       * COMPORT%                  COM port number (1 - 4).
  1053.         COSYSOP%                  1 if Caller is co-Sysop, 0 if not
  1054.       * DATADIR$                  System DATA directory
  1055.         DISPLAY%                  Local display status.    -1=ON, 0=OFF
  1056.         DOWNLOADS&                Number of downloads made
  1057.         EXENAME$                  Name of .EXE (Programmer supplied)
  1058.       * FIRST$                    Callers first name
  1059.       * GFILESDIR$                System GFILES directory
  1060.         GOLD$                     Caller's gold (?)
  1061.         GRAPHICS%                 Graphics mode status.    -1=ON, 0=OFF
  1062.                                   Determines if the caller is ANSI compatible
  1063.                                   Use DETECT.ANSI to determine this.
  1064.       * LAST$                     Callers last name
  1065.       * LASTON$                   Date caller last logged on (MM/DD/YY)
  1066.         LEVEL&                    Callers security level
  1067.       * LOCALUSR%                 -1 = LOCAL mode, 0 = Online
  1068.       * LOG$                      System LOG of the day
  1069.       * LOGONSECS&                Number of seconds since midnight
  1070.                                   when caller logged on to the BBS.
  1071.         MODE%                     0 = Non-color, -1 = color is on. Line 14
  1072.                                   of CHAIN.TXT determines this setting.
  1073.       * NAME$                     Callers full name
  1074.       * NODENUM%                  Defaults to 1 (not provided in CHAIN.TXT)
  1075.         OWNER$                    Name DoorFrame is registered to (if any).
  1076.         PAGELEN%                  Callers page length
  1077.         PARITY$                   "8N1" etc.
  1078.         PROGNAME$                 Name of DOOR (Programmer supplied)
  1079.         RESPONSE$                 Returned after a CALL to IN.PUT
  1080.         SERIAL$                   Your DoorFrame serial #. String variable.
  1081.         SEX$                      Callers sex
  1082.       * SYSLOC$                   Location of system file. This contains the
  1083.                                   path/filename of line 1 in the .CFG file.
  1084.       * SYSOP%                    1 = SYSOP is using DOOR, 0 otherwise
  1085.       * SYSOPFIRST$               Sysops first name
  1086.       * SYSOPLAST$                Sysops last name
  1087.       * SYSOPNAME$                Sysops first and last names
  1088.         TIMEADJUST%               Use to adjust the callers remaining time
  1089.                                   online. This variable adjusts the ELAPSED
  1090.                                   time so if you wish to decrease his time,
  1091.                                   give this a positive value.
  1092.       * TIMELEFT%                 Time caller has left in minutes. Doorframe
  1093.                                   calculates this so changing it has no effect
  1094.       * TIMENOW%                  Current time in minutes (0 - 1440)
  1095.         TIMEOUT%                  Programmer supplied. Defaults to 5 mins if
  1096.                                   not specified. Minimum 1 min. 
  1097.       * TIMEUSED%                 Time used so far today in minutes
  1098.         TOTAL.KB.DL&              Total K bytes downloaded
  1099.         TOTAL.KB.UL&              Total K bytes uploaded
  1100.         UPLOADS&                  Number of uploads made
  1101.       * USERNUM%                  Record number of caller
  1102.  
  1103. NOTES: Variables marked with '*' are provided for information only.
  1104.  
  1105. DOORFRAME v3.1 - Users Guide - Page 21
  1106.  
  1107.                                 MISCELLANEOUS NOTES
  1108.                                 ===================
  1109.  
  1110. Check DFRAME.INC for an explanation of variables not listed above.
  1111.  
  1112. DoorFrame requires DOS 3.x and up since all files are opened in SHARED mode.
  1113.  
  1114. When using PCBOARD.SYS, DoorFrame also accesses the USERS file.
  1115.  
  1116. When using USERS.SYS, DoorFrame also accesses PCBOARD.SYS, PCBOARD.DAT and the 
  1117. USERS file.
  1118.  
  1119. The DOOR.SYS used by DoorFrame is the standard 52 line GAP (tm) file.
  1120.  
  1121. The CALLINFO.BBS used by DoorFrame currently contains 36 lines.
  1122.  
  1123. Trapping errors
  1124. ---------------
  1125.  If you wish to utilize the internal error trapping, insert the following
  1126.  line wherever you wish the trapping to begin. I would suggest putting it
  1127.  right after you call INITIALIZE.
  1128.  
  1129.    ON ERROR GOTO ERR.ROUTINE
  1130.  
  1131.  Then at the very end of your program insert the following:
  1132.  
  1133.    ERR.ROUTINE:
  1134.    ERRORS ERR, ERL
  1135.    END
  1136.  
  1137.  If ANY Basic error is encountered, it will branch to ERR.ROUTINE and call
  1138.  the ERRORS subroutine. The error will be printed to the screen and written
  1139.  to DFRAME.ERR. Your Door will then exit back to the BBS.
  1140.  
  1141. The first few lines of your Door should be:
  1142.    ' $INCLUDE: 'DFRAME.INC'
  1143.    PROGNAME$ = "Name of the Door"
  1144.    VERSION$ = " v1.0"
  1145.    EXENAME$ = "FILENAM"           <- NOTE: Max of 7 letters!
  1146.    TIMEOUT% = 240                 <- Numbers of seconds to wait for keyboard
  1147.                                      activity. 240 will wait for 4 minutes
  1148.                                      then send a Keyboard Timeout msg. and
  1149.                                      exit back to the BBS. Defaults to 300.
  1150.    OWNER$ = "Your Name"           <- For registered DoorFrame users only.
  1151.    SERIAL$ = "99999"              <- DoorFrame will display an EVALUATION
  1152.                                      COPY message until registered.
  1153.    INITIALIZE
  1154.    .
  1155.    .
  1156.    Your code.......
  1157.    .
  1158.    .
  1159.    MAKE.BLT HI.SCORE&            <- If you want one generated.
  1160.    SHOW.BLT                      <- If you want to show it before door closes.
  1161.    EXIT.DOOR "Y"
  1162.  
  1163. The configuration filename passed on the command line is OPENed as #1. This
  1164. file is left open so you may read additional lines from the .CNF file. 
  1165. Although it is not absolutely necessary, you should CLOSE #1 somewhere near
  1166. the start of your program.
  1167.  
  1168.