home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / MAPL0206.ZIP / MBS50206.MRG < prev    next >
Encoding:
Text File  |  1993-02-06  |  88.5 KB  |  2,408 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against E:\RBBS\STOCK\RBBSSUB5.BAS to produce E:\RBBS\CHAT\RBBSSUB5.BAS
  3. * E:\RBBS\STOCK\RBBSSUB5.BAS:  Date 6-20-1992  Size 116575 bytes
  4. * ------------[ Created 02-06-1993 06:08:03 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. ' $title: 'RBBSSUB5.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  8. '  Copyright 1991 by D. Thomas Mack, all rights reserved.
  9. '  Name ...............: RBBSSUB5.BAS
  10. '  First Released .....: June 21, 1992
  11. '  Subsequent Releases.: 
  12. '  Copyright ..........: 1986 - 1992
  13. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  14. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  15. '     require error trapping are incorporated within RBBSSUB 2-5 as
  16. '     separately callable subroutines in order to free up as much
  17. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  18. '  Parameters..........: Most parameters are passed via a COMMON statement.
  19. '
  20. ' Subroutine  Line               Function of Subroutine
  21. '   Name     Number
  22. '  AddLink        63620  Adds a conference link
  23. * ------[ first line different ]------
  24. '  AskItems       63610  Get an list of items
  25. '  BinSearch      63520  Binary searches sorted file for a key value
  26. '  BreakFileName  63300  Break file name into component parts
  27. '  BufAsUnit      63500  Buffer out a string with CR's
  28. '  ChangeInit     63590  Get an integer value
  29. '  ChkAddedTime   63056  Check whether ok to extend time remaining
  30. '  ChkIfMsgHeader 63550  Checks whether record is a msg header
  31. '  DeLink         63620  Removes conference from linked ones
  32. '  DoorReturn     63100  Process door requests
  33. '  FdMacExe       63462  Executes a found macro
  34. '  FileSystem     20117  File System for RBBS-PC
  35. '  FindIt         63490  Check whether file exists and if so open as #2
  36. '  FormRead       63420  Read from file into a form
  37. '  LockAppend     63400  Prepare for a file append
  38. '  MacroExe       63460  Execute internal macro rather than user
  39. '  MarkItems      63600  Convert list of items into a "mark"
  40. '  MsgNameMatch   63540  Match name to one in msg header
  41. '  NextConf       63615  Sets up join to next conference link
  42. '  NoPath         63480  Detects whether string has a path in it
  43. '  RestoreCom     63310  Restore comm port after external program
  44. '  ReadMacro      63330  Read and process macro
  45. '  ReadParms      63490  Read certain number of parameters from file 2
  46. '  ReportEcho     63635  Reports echo preference of caller
  47. '  SayWelcome     63640  Welcomes callers on logon
  48. '  SetPrivileges  63650  Sets user privileges based on PASSWRDS
  49. '  SetPrompt      63470  Set prompts based on the user's security
  50. '  SetSessionTime 63645  Sets the session time
  51. '  SetSysOp       63625  Determines whether remote or global SysOp
  52. '  SetUserFlag    63560  Sets specified user flag
  53. '  SetUserPref    63630  Sets user preferences based on user record
  54. '  ShellExit      63320  Exit RBBS via shell
  55. '  SrchPasswrds   63652  Searches the PASSWRDS file
  56. '  TakeOffHook    63530  Take modem off hook
  57. '  TStats         69600  Display transfer stats from XFER-? file     ' MplXfer
  58. '  UnLockAppend   63410  Clean up after file append
  59. '  UnMarkItems    63610  Convert marked items into an input list
  60. '  VerifyAns      63510  Verify that string passes edits
  61. '  WildCard       63200  Match string to a pattern
  62. '
  63. '  $INCLUDE: 'RBBS-VAR.BAS'
  64. '
  65. * REPLACING old line(s) by new
  66. 20117 ' $SUBTITLE: 'FileSystem -- subroutine for RBBS-PC's file system'
  67. ' $PAGE
  68. '
  69. ' NAME    -- FileSystem
  70. '
  71. ' INPUTS  --       PARAMETER                 MEANING
  72. '             ZFileSysParm = 1  LIST THE SYSOP'S COMMENTS FILE
  73. '                                 2  L)IST DIRECTORY COMMAND
  74. '                                 3  D)OWNLOAD COMMAND
  75. '                                 4  RETURN FROM EXTERNAL PROTOCOLS
  76. '                                 5  U)PLOAD COMMAND
  77. '                                 6  S)CAN DIRECTORY COMMAND
  78. '                                 7  P)ERSONAL FILES COMMAND
  79. '                                 8  N)EW FILES COMMAND
  80. '                                 9  RETURN FROM EXTENDED DESCRIPTION
  81. * ------[ first line different ]------
  82. '                                 10  Batch Upload files
  83. '
  84. ' OUTPUTS -- ZFileSysParm = 1  COMMAND PROCESSED SUCCESSFULLY
  85. '                                2  RECYCLE TO TOP OF RBBS-PC (202)
  86. '                                3  PROCESS NEXT COMMAND (1200)
  87. '                                4  DENY USER ACCESS (1380)
  88. '                                5  HANDLE EXTENDED DESCRIP. (2008)
  89. '                                6  USER'S TIME EXCEEDED (10553)
  90. '                                7  Carrier DROPPED (10595)
  91. '
  92. ' PURPOSE -- To handle the RBBS-PC file system commands
  93. '
  94.       SUB FileSystem STATIC
  95.       ZFF = ZFileSysParm
  96.       ZFileSysParm = 1
  97.       ZActiveFMSDir$ = ""
  98.       CALL SaveUserActivity("F", ZNodeRecIndex, ZFalse)              ' CHAT0813
  99.       ON ZFF GOSUB 20119, _  ' HANDLER TO LIST COMMENTS TO SYSOP
  100.                   20150, _  ' L)IST DIRECTORY COMMAND HANDLER
  101.                   20180, _  ' D)OWNLOAD COMMAND HANDLER
  102.                   20263, _  ' RETURN FROM EXTERNAL Protocol'S
  103.                   20400, _  ' U)PLOAD COMMAND HANDLER
  104.                   21800, _  ' S)CAN DIRECTORY COMMAND HANDLER
  105.                   21850, _  ' P)ERSONAL FILES COMMAND HANDLER
  106.                   21860, _  ' N)EW FILES COMMAND HANDLER
  107.                   20705, _  ' RETURN FROM EXTENDED DESCRIPTIONS
  108.                   20410     ' 4)Batch Upload files
  109.       GOTO 21920
  110. * REPLACING old line(s) by new
  111. * ------[ first line different ]------
  112. 20120  X = 159             'Pe 01/19/93
  113.        Gosub 21915         'Pe 01/19/93
  114.        ZOutTxt$ = OutTxt$ + " " + _
  115.            ZFileNameHold$
  116.       IF WasRS$ <> "" THEN _
  117.          ZOutTxt$ = ZOutTxt$ + " for " + WasRS$
  118.       GOSUB 21650
  119.       IF ZFileSysParm > 1 THEN _
  120.          RETURN
  121.       CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
  122.       IF ZNo THEN _
  123.          ZErrCode = 0 : _
  124.          RETURN
  125.       WasPG = ZTrue
  126. * REPLACING old line(s) by new
  127. 20122 CALL OpenWork (2,ZFileName$)
  128.       IF ZErrCode = 53 THEN _
  129. * ------[ first line different ]------
  130.        X = 160 : _             'Pe 01/19/93
  131.        Gosub 21915 : _         'Pe 01/19/93
  132.          ZOutTxt$ = OutTxt$ + " " + ZFileName$ : _
  133.          CALL UpdtCalr (ZOutTxt$,2) : _
  134.          X = 161 : _             'Pe 01/19/93
  135.          Gosub 21915 : _         'Pe 01/19/93
  136.          ZOutTxt$ = ZOutTxt$ + OutTxt$ : _
  137.          GOSUB 21650 : _
  138.          RETURN
  139.       ZJumpSupported = ZTrue
  140.       ZJumpLast$ = ""
  141.       LastOK = ZFalse
  142.       ZJumpSearching = ZFalse
  143.       MaxPrint = ZPageLength - 1
  144.       CALL CmdStackPushPop (1)
  145.       ZLastIndex = 0
  146. * REPLACING old line(s) by new
  147. 20150 ZListDir = ZTrue
  148.       ListNew = ZFalse
  149.       SearchDate$ = ""
  150.       SearchString$ = ""
  151.       WasRS$ = ""
  152.       ShowDirOfDir = (ZLastIndex <= ZAnsIndex) AND NOT ZExpertUser
  153.       WasCK = 0
  154.       ZSearchingAll = ZFalse
  155. * ------[ first line different ]------
  156.       ZExtendedOff = ZFalse 'ZTrue   'Pe 10/27/91
  157. * REPLACING old line(s) by new
  158. * ------[ first line different ]------
  159. 20155 IF ZDnldCompleted AND ZAutoEnd = 1 THEN _   'Pe 02/05/90
  160.         ZFileSysParm = 7 : _
  161.         RETURN
  162.  IF ListNew OR ZAnsIndex > 255 THEN _   'Pe 12/12/91
  163.          RETURN                         'Pe 12/12/91
  164.       CALL GetDirs (ZFalse)    'Pe 02/04/90
  165.       IF ZWasQ = 0 THEN _
  166.          RETURN
  167.       ShowDirOfDir = ZFalse
  168.       CALL ConvertDir (ZAnsIndex)
  169.       WasQX = ZLastIndex
  170. * REPLACING old line(s) by new
  171. 20159 IF ZAnsIndex < ZLastIndex THEN _
  172.          GOTO 20155
  173.       ZSearchingAll = ZFalse
  174.       CALL CmdStackPushPop (1)
  175.       ZLastIndex = 0
  176.       IF ZNo OR InFMS OR (ZFileNameHold$ = ZDirPrefix$) THEN _
  177.          GOTO 20155
  178.       GOSUB 20178
  179.       CALL QuickTPut (ZEmphasizeOff$,0)
  180.       ZTurboKey = - ZTurboKeyUser
  181. * ------[ first line different ]------
  182.        X = 162              'Pe 01/19/93
  183.        Gosub 21915         'Pe 01/19/93
  184.        ZOutTxt$ = OutTxt$
  185.       GOSUB 21667
  186.       CALL AraAllCaps (ZUserIn$(),1)
  187. '******************************* Pe 02/15/90 **********************
  188.      IF ZUserIn$(1) = "T"  AND _
  189.          ZUserSecLevel >= ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  190.          ZAnsIndex = 1 : _   
  191.         CALL TypeFile : _
  192.        RETURN
  193.      IF ZUserIn$(1) = "V"  AND _
  194.          ZUserSecLevel >= ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  195.          ZAnsIndex = 1 : _   
  196.         CALL GetArc : _
  197.        RETURN
  198. '******************************************************************
  199.       IF ZUserIn$(1) = "L" THEN _
  200.          ZUserIn$(ZAnsIndex) = WasA1$ : _
  201.         GOTO 20161
  202.       Temp$ = ZUserIn$(1)
  203.       Temp = (ZUserIn$(1) = "D")
  204.       CALL AskItems ("MD",Temp$,ZTrue,"file",ZMarkedFiles$)
  205.       IF ZWasQ = 0 OR ZUserSecLevel < ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  206.          GOTO 20160
  207.       IF Temp THEN _
  208.          GOSUB 20202 _
  209.       ELSE IF LEN(ZUserIn$(1)) > 1 THEN _
  210.          ZAnsIndex = 1 : _
  211.          GOSUB 20202
  212. * REPLACING old line(s) by new
  213. 20162 CALL CmdStackPushPop (1)         ' save dir list list processing
  214.       CALL FMS (ZWasZ$,SearchString$,SearchDate$,InFMS, _
  215.                 ZCategoryName$(),ZCategoryCode$(),ZCategoryDesc$(),_
  216.                 DnldFlag,CatFound,ZAnsIndex)
  217.       WHILE DnldFlag > 0 AND ZSubParm > -1
  218.          GOSUB 20202
  219.          IF ZFileSysParm > 1 THEN _
  220.             RETURN
  221. * ------[ first line different ]------
  222.         IF ZDnldCompleted and ZAutoEnd = 1 THEN _  'Pe 02/05/90
  223.            RETURN       ' AUTOLOGOFF MOD
  224.          WasX$ = ZCategoryCode$(CatFound)
  225.          CALL DispUpDir (WasX$,SearchString$,SearchDate$,DnldFlag,ZAnsIndex)
  226.          CALL CheckTimeRemain (MinsRemaining)
  227.          IF ZSubParm = -1 THEN _
  228.             ZFileSysParm = 6 : _
  229.             RETURN
  230.          CALL Carrier
  231.       WEND
  232.       IF ZSubParm = -1 THEN _
  233.          ZFileSysParm = 7 : _
  234.          RETURN
  235.       IF ZAnsIndex > 255 OR ZRet THEN _
  236.          ZLastIndex = 0 : _
  237.          RETURN
  238.       CALL CmdStackPushPop (2)        ' restore dir list list processing
  239.       ZActiveFMSDir$ = ""
  240.       IF InFMS THEN _
  241.          GOTO 20159
  242.       IF ZUserSecLevel < ZMinSecToView THEN _
  243.          IF ZFileNameHold$ = ZUpldDirCheck$ THEN _
  244.        X = 163 : _             'Pe 01/19/93
  245.        Gosub 21915 : _        'Pe 01/19/93
  246.        ZOutTxt$ = OutTxt$ : _
  247.         GOSUB 21640 : _                                           'DGS-TXT
  248.         ZNo = ZTrue : _                                           'DGS-TXT
  249.         GOTO 20155                                                'DGS-TXT
  250.       ZFileNameHold$ = ZUserIn$(ZAnsIndex)
  251.       IF ZLimitSearchToFMS THEN _
  252.          GOTO 20166
  253.       IF NOT ZSearchingAll THEN _
  254.          IF ZFileNameHold$ = "ALL" OR ZFileNameHold$ = "A" THEN _
  255.             ZSearchingAll = ZTrue : _
  256.             GOSUB 21890 : _
  257.             GOTO 20157
  258.       CALL BadFile (ZFileNameHold$,BadFileNameIndex)
  259.       ON BadFileNameIndex GOTO 20163,20172,20176
  260. * REPLACING old line(s) by new
  261. 20166 ZFileName$ = ZCurDirPath$ + _
  262.                    ZFileNameHold$ + ".MNU"
  263. * ------[ first line different ]------
  264.       CALL FindIt (ZFileName$)
  265.       IF ZOK THEN _
  266.          CALL BufFile (ZFileName$,ZAnsIndex) : _
  267.          GOTO 20155
  268.       IF ZAltdirExtension$ = "" THEN _
  269.          GOTO 20172
  270.       ZFileName$ = ZCurDirPath$ + _
  271.                    ZFileNameHold$ + _
  272.                    "." + _
  273.                    ZAltdirExtension$
  274.       CALL Graphic (ZFileName$)
  275.       IF NOT ZOK THEN _
  276.          GOTO 20172
  277. * REPLACING old line(s) by new
  278. 20172 IF NOT ZSearchingAll THEN _
  279. * ------[ first line different ]------
  280.        X = 70 : _             'Pe 01/19/93
  281.        Gosub 21915 : _         'Pe 01/19/93
  282.          ZOutTxt$ = "Directory " + _
  283.               ZFileNameHold$ + _
  284.               OutTxt$ : _
  285.          GOSUB 21640 : _
  286.          ZNo = ZTrue : _
  287.          IF ZFileSysParm > 1 THEN _
  288.             RETURN
  289.       GOTO 20155
  290. * REPLACING old line(s) by new
  291. 20202 IF (ZTimeLock AND 2) AND (NOT TimeLockExempt) AND NOT ZHasPrivDoor THEN _
  292.          CALL TimeLock : _
  293.          IF NOT ZOK THEN _
  294.             RETURN
  295.       LastDnld = ZLastIndex
  296.       FirstDnld = ZAnsIndex
  297.       ZCmdTransfer$ = ""
  298. * ------[ first line different ]------
  299.       ZAnsIndex = ZLastIndex
  300.       GOSUB 20470
  301.       LastDnld = LastDnld + (WasX > 0)
  302.       BatchBytes# = 0
  303.       BatchBlocks# = 0
  304.       ZDownFiles = 0
  305.       CALL KillWork (ZNodeWorkFile$)
  306.       ZErrCode = 0
  307.       ZAnsIndex = FirstDnld
  308. * REPLACING old line(s) by new
  309. 20205 MarkingTime = (ZAnsIndex = FirstDnld OR NOT ZConcatFIles)
  310.       ZFileName$ = ZUserIn$(ZAnsIndex)
  311. * ------[ first line different ]------
  312.       CALL AllCaps(ZFileName$)              'ANSIEd
  313.       CALL Remove (ZFileName$,", ")
  314.       ZViolation$ = "Download "
  315.       IF ZListOnly THEN _
  316.          CALL BreakFileName (ZFileName$,DR$,ZWasY$,WasX$,ZTrue) : _
  317.          ZFileNameHold$ = ZWasY$ + _
  318.                            WasX$ : _
  319.          GOTO 20235
  320.       ZFileNameHold$ = ZFileName$
  321.       TmpFileNameHold$ = ZFileNameHold$                            'Pe 04/25/92
  322.       CALL BadFile (ZFileName$,BadFileNameIndex)
  323.       ON BadFileNameIndex GOTO 20220,20231,20233
  324. * INSERTING new line(s)
  325. 20210 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _      'Pe 06/01/92
  326.                       ((ZUserSecLevel < ZMinSecToView) OR _       'Pe 06/01/92
  327.                        NOT ZCanDnldFromUp),MarkingTime,"D")       'Pe 06/01/92
  328.        RETURN                                                     'Pe 06/01/92 
  329. * REPLACING old line(s) by new
  330. * ------[ first line different ]------
  331. 20220 IF INSTR(ZFileName$,ZDefaultExtension$)= 0 Then             'Pe 06/04/92
  332.       GOSUB 20210                                                 'Pe 06/02/92
  333.       IF ZOK THEN _                                               'Pe 06/02/92
  334.         GOTO 20235                                                'Pe 06/02/92
  335.       IF ZDotFlag THEN _                                          'Pe 06/02/92
  336.          RETURN                                                   'Pe 06/02/92
  337.      End if                                                       'Pe 06/04/92
  338.          WasI = 1                                                 'Pe 06/01/92
  339. * DELETING old line(s)
  340. 20222
  341. * REPLACING old line(s) by new
  342. * ------[ first line different ]------
  343. 20225 CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse) 'Pe 06/01/92
  344.         WasJ = INSTR(Mid$(ZCompressedExt$+". ",WasI),".")        'Pe 04/18/92
  345.        IF WasJ = 0 THEN _                                        'Pe 04/18/92
  346.           GOTO 20231                                             'Pe 06/04/92
  347.               Check$ = MID$(ZCompressedExt$,WasI,WasJ-1)         'Pe 04/28/92
  348.           WasI = WasI + WasJ                                     'Pe 04/18/92
  349.        ZFileName$ = WasX$ + "." + Check$                         'Pe 04/18/92
  350.       ZFileNameHold$ = ZFileName$                                'Pe 04/18/92
  351.      GOSUB 20210                                                 'Pe 06/01/92
  352.  IF ZOK THEN _                                                   'Pe 06/01/92
  353.        GOTO 20235                                                'Pe 06/01/92
  354.      IF ZDotFlag THEN _                                          'Pe 06/01/92
  355.         RETURN                                                   'Pe 06/01/92
  356.       GOTO 20225                                                 'Pe 06/01/92
  357. * REPLACING old line(s) by new
  358. * ------[ first line different ]------
  359. 20231  X = 70              'Pe 01/19/93
  360.        Gosub 21915         'Pe 01/19/93
  361.        ZOutTxt$ = TmpFileNameHold$ + _                             'Pe 04/18/92
  362.            OutTxt$
  363.       CALL UpdtCalr (ZOutTxt$,2)
  364.       ZOutTxt$ = ZOutTxt$ + _
  365.            " Correct name"+ZPressEnterExpert$
  366.       ZSuspendAutoLogoff = ZTrue
  367.       GOSUB 21660
  368.       ZSuspendAutoLogoff = ZFalse
  369.       IF ZFileSysParm > 1 THEN _
  370.          RETURN
  371.       IF ZWasQ=0 THEN _
  372.          IF ZBatchTransfer AND ZAnsIndex >= LastDnld THEN _
  373.             GOTO 20262 _
  374.          ELSE ZAutoLogOffReq = ZFalse : _
  375.               RETURN
  376.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  377.       GOTO 20205
  378. * REPLACING old line(s) by new
  379. 20236 ZLine25$ = "(D) " + _
  380.                  ZWasZ$
  381. * ------[ first line different ]------
  382. '
  383. ' *  TEST FOR DOWNLOAD SECURITY
  384. '
  385.       CALL OpenWork (2,ZFileSecFile$)
  386.       IF ZErrCode = 53 THEN _
  387.        X = 160 : _              'Pe 01/19/93
  388.        Gosub 21915  : _        'Pe 01/19/93
  389.          CALL UpdtCalr (OutTxt$ + " " + ZFileSecFile$,2) : _
  390.          GOTO 20247
  391. * REPLACING old line(s) by new
  392. 20244 IF ZUserSecLevel < VAL(ZWorkAra$(2)) THEN _
  393.          GOTO 20245
  394.       FilePswd$ = ZWorkAra$(3)
  395.       IF FilePswd$ = "" THEN _
  396.          GOTO 20247
  397. * ------[ first line different ]------
  398.       CALL AraAllCaps (ZUserIn$(),1)
  399.       IF ZUserIn$(1) = FilePswd$ THEN _
  400.          GOTO 20247
  401.        X = 164               'Pe 01/19/93
  402.        Gosub 21915         'Pe 01/19/93
  403.       ZOutTxt$ = OutTxt$ + " " + ZFileName$
  404.       GOSUB 21660
  405.       IF ZFileSysParm > 1 THEN _
  406.          RETURN
  407.       IF ZWasQ = 0 THEN _
  408.          RETURN
  409.       CALL AllCaps (ZUserIn$(1))
  410.       IF ZUserIn$(1) = FilePswd$ THEN _
  411.          GOTO 20247
  412. * REPLACING old line(s) by new
  413. 20247 ZWasDF = 0
  414.       CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse)
  415. * ------[ first line different ]------
  416.  IF INSTR("...WRK.FW .ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.ARJ.LZH.","."+Extension$+".") > 2 OR _
  417.          MID$(Extension$,2,1) = "Q" OR _
  418.          (ZRequireNonASCII AND Extension$ = "BAS") THEN _
  419.             ZWasDF = ZTrue
  420. * REPLACING old line(s) by new
  421. 20260 ZTransferFunction = 1
  422. * ------[ first line different ]------
  423.       ZWasBatchTransfer = ZFalse             'Pe 03/02/92
  424.       ZUpBatchTransfer = ZFalse              'Pe 03/02/92
  425.       GOSUB 21790
  426.       IF ZFileSysParm > 1 THEN _
  427.          RETURN
  428.          ZBatchTransfer = ZBatchProto                     'Pe Batch Mod
  429.       IF ZBatchTransfer AND ZCmdTransfer$ = "" THEN _
  430.          ZCmdTransfer$ = ZWasFT$
  431.       ON INSTR("AXCYN",ZInternalProt$) GOTO _
  432.          20340, _              ' ASCII DOWNLOAD
  433.          20290, _              ' Xmodem
  434.          20290, _              ' Xmodem CRC
  435.          20270, _              ' YMODEM
  436.          21700                 ' NONE - CANCEL
  437. '
  438. ' *  EXTERNAL Protocol Downloads/Uploads
  439. '
  440. * REPLACING old line(s) by new
  441. 20262 IF ZBatchTransfer THEN _
  442.          IF ZAnsIndex < LastDnld THEN _
  443.             RETURN _
  444.          ELSE ZBlocksInFile# = BatchBlocks# : _
  445.               ZBytesInFile# = BatchBytes# : _
  446.               ZNumDnldBytes! = BatchBytes# : _
  447.               IF ZBytesInFile# < 1 THEN _
  448.                  RETURN _
  449.               ELSE GOSUB 20780 : _
  450.                    IF ZFileSysParm > 1 OR NOT ZOK THEN _
  451.                       RETURN
  452. * ------[ first line different ]------
  453.          IF ZAbort THEN _
  454.             ZAbort = ZFalse : _              'Pe 01/26/92
  455.             ZDnldCompleted = ZFalse : _
  456.             GOSUB 21760 : _
  457.             RETURN
  458.       GOSUB 20337
  459.       CALL Transfer
  460. * REPLACING old line(s) by new
  461. 20263 IF ZPrivateDoor THEN _
  462.          ZCmdTransfer$ = ZWasFT$ : _
  463.          CALL XferType (2,ZTrue) : _
  464.          ZCmdTransfer$ = ""
  465.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")
  466.       IF ZErrCode <> 0 THEN _
  467.          GOTO 20267
  468.       CALL ReadParms (ZWorkAra$(), ZFailureParm, 1)
  469.       IF ZErrCode <> 0 THEN _
  470.          GOTO 20267
  471.       CLOSE 2
  472. * ------[ first line different ]------
  473.       IF NOT ZFakeXRpt THEN _                  'Pe 03/26/92
  474.         Call TStats                            'Pe 03/26/92
  475.       CALL KillWork ("XFER-" + ZNodeID$ + ".DEF")
  476. * REPLACING old line(s) by new
  477. 20265 IF ZTransferFunction = 2 THEN _
  478.          IF INSTR(ZWorkAra$(ZFailureParm),ZFailureString$) <> 1 THEN _
  479.             GOTO 20700 _
  480.          ELSE GOTO 20730
  481.       IF ZTransferFunction = 1 THEN _
  482. * ------[ first line different ]------
  483.         ZDnldCompleted = (INSTR(ZWorkAra$(ZFailureParm),ZFailureString$) <> 1)  'Pe 05/30/91
  484.       GOSUB 21760
  485.       CALL Carrier
  486.       IF ZSubParm = -1 THEN _
  487.          ZFileSysParm = 7
  488.       RETURN
  489. '
  490. ' *  XFER FILE NOT Found
  491. '
  492. * REPLACING old line(s) by new
  493. * ------[ first line different ]------
  494. 20292 X = 165               'Pe 01/19/93
  495.       Gosub 21915        'Pe 01/19/93
  496.       Call QuickTput1 (OutTxt$) : _
  497.       Call Delaytime (3) : _
  498.       Return
  499. * DELETING old line(s)
  500. 20294
  501. * REPLACING old line(s) by new
  502. * ------[ first line different ]------
  503. 20318 X = 166               'Pe 01/19/93
  504.        Gosub 21915        'Pe 01/19/93
  505.       ZOutTxt$ = OutTxt$
  506.       GOSUB 21630
  507.       IF ZFileSysParm > 1 THEN _
  508.          RETURN
  509.       CALL DelayTime (3)
  510.       RETURN
  511. * DELETING old line(s)
  512. 20325
  513. * REPLACING old line(s) by new
  514. * ------[ first line different ]------
  515. 20330 GOSUB 20337
  516.       ZOutTxt$ = ZProtoPrompt$ + _
  517.             " " + WasA1$ + _
  518.             " of " + _
  519.             ZFileNameHold$ + _
  520.             " ready.  <Ctrl X> aborts"
  521.       GOSUB 21650
  522.       RETURN
  523. * DELETING old line(s)
  524. 20335
  525. * REPLACING old line(s) by new
  526. 20340 IF ZWasDF THEN _
  527. * ------[ first line different ]------
  528.        X = 167 : _              'Pe 01/19/93
  529.        Gosub 21915  : _        'Pe 01/19/93
  530.          ZOutTxt$ = OutTxt$ : _
  531.          GOSUB 21650 : _
  532.          GOTO 21700
  533.       GOSUB 20750
  534.       IF ZFileSysParm > 1 OR NOT ZOK THEN _
  535.          RETURN
  536.       CALL OpenWork (2,ZFileName$)
  537.       IF (ZAnsIndex = FirstDnld OR NOT ZConcatFIles) THEN _
  538.          GOSUB 20337 : _
  539.        X = 168 : _              'Pe 01/19/93
  540.        Gosub 21915  : _        'Pe 01/19/93
  541.          ZOutTxt$ = OutTxt$ : _
  542.          GOSUB 21640 : _
  543.          IF ZFileSysParm > 1 THEN _
  544.             RETURN _
  545.          ELSE X = 169 : _              'Pe 01/19/93
  546.              Gosub 21915  : _        'Pe 01/19/93
  547.  ZOutTxt$ = ZProtoPrompt$ + " SEND of " + _
  548.               ZFileNameHold$ + _
  549.               OutTxt$ : _
  550.          ZTurboKey = 2 : _
  551.          ZForceKeyboard = ZTrue : _
  552.          ZSuspendAutologoff = ZTrue : _
  553.          GOSUB 21660 : _
  554.          ZSuspendAutologoff = ZFalse : _
  555.          IF ZFileSysParm > 1 THEN _
  556.             RETURN
  557. * REPLACING old line(s) by new
  558. 20380 ZStopInterrupts = ZFalse
  559.       WasTU = 0
  560.       SWAP WasTU,ZPageLength
  561.       CALL BufFile (ZFileName$,WasX)
  562.       SWAP WasTU,ZPageLength
  563.       ZNonStop = (ZPageLength < 1)
  564.       IF StopFile THEN _
  565. * ------[ first line different ]------
  566.          ZDnldCompleted = ZFalse : _   'Pe 05/29/91
  567.          GOTO 20390
  568. * REPLACING old line(s) by new
  569. 20385 ZDnldCompleted = ZTrue   'Pe 05/30/91
  570. * REPLACING old line(s) by new
  571. 20395 GOSUB 21640
  572.       IF ZFileSysParm > 1 THEN _
  573.          RETURN
  574. * ------[ first line different ]------
  575.        X = 170              'Pe 01/19/93
  576.        Gosub 21915        'Pe 01/19/93
  577.       ZOutTxt$ = OutTxt$ +ZPressEnterExpert$
  578.       GOSUB 21660
  579.       IF ZFileSysParm > 1 THEN _
  580.          RETURN
  581.       IF ZWasQ = 0 THEN _
  582.          RETURN
  583.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  584.       GOTO 20435
  585. * REPLACING old line(s) by new
  586. 20400 CALL TimeBack (1)
  587. * ------[ first line different ]------
  588.       ZUpBatchTransfer = ZFalse     'Pe 12/08/91
  589.       ZWasBatchTransfer = ZFalse
  590.       GOSUB 20420
  591.       ZAutoLogOffReq = 0
  592.       FirstUpld = ZAnsIndex
  593.       GOTO 20430
  594. * INSERTING new line(s)
  595. 20410 CALL TimeBack (1)
  596.       CALL KillWork (ZBatchWorkFile$)                 'Pe Batchup mod 
  597.       ZErrCode = 0
  598.       ZUpBatchTransfer = ZTrue
  599.       Call Killwork ("BatchUp" +ZNodeID$ +".LST")
  600.       ZErrCode = 0
  601.       ZAutoLogOffReq = 0
  602. '
  603. ' changes for 12/28/91
  604. '
  605. If LEN(ZUserIn$) < 3 Then _
  606.       CALL Batchit : _
  607.       FirstUpld = 2 : _
  608.       LastUpld = ZLastIndex : _
  609.       GOTO 20430
  610.      FirstUpld = ZAnsIndex
  611.     Goto 20430
  612.  
  613. * REPLACING old line(s) by new
  614. * ------[ first line different ]------
  615. 20420  X = 171              'Pe 01/19/93
  616.       Gosub 21915        'Pe 01/19/93
  617.       ZOutTxt$ = OutTxt$
  618.       GOSUB 21667
  619.       RETURN
  620. '
  621. ' *  SEARCH FOR DUPLICATE FILENAME
  622. '
  623. * REPLACING old line(s) by new
  624. 20432 FOR ZAnsIndex = FirstUpld TO LastUpld
  625.          IndexSave = ZAnsIndex
  626.          GOSUB 20471
  627.          GOSUB 20435
  628.          FirstUpld = FirstUpld + 1
  629.          IF ZFileSysParm > 1 THEN _
  630.             IndexSave = LastUpld + 1
  631.          ZAnsIndex = IndexSave
  632. * ------[ first line different ]------
  633.      NEXT
  634.     ZCmdTransfer$ = ""
  635.       RETURN
  636. * REPLACING old line(s) by new
  637. 20435 ZFileNameHold$ = ZUserIn$(ZAnsIndex)
  638.       ExtSrch = ZFalse
  639.       IF INSTR(ZFileNameHold$,".") = 0 THEN _
  640.          ZFileNameHold$ = ZFileNameHold$ + "." + ZDefaultExtension$
  641.       CALL AllCaps(ZFileNameHold$)
  642.       ZFileName$ = ZFileNameHold$
  643.       ZViolation$ = "Upload "
  644.       CALL NoPath (ZFileName$,BadFileNameIndex)
  645.       IF BadFileNameIndex THEN _
  646.          GOTO 20451
  647.       CALL BadFile (ZFileName$,BadFileNameIndex)
  648.       ON BadFileNameIndex GOTO 20440,20451,20515
  649. * ------[ first line different ]------
  650. '
  651. ' Following mod was orig from DGS-UNW mod....updated for Maple code 12/15/91
  652. * REPLACING old line(s) by new
  653. * ------[ first line different ]------
  654. 20440 TmpName$ = ZDirPath$+"NOTHANX.DEF"                         'Pe 06/01/92
  655.       CALL FindIt (TmpName$)                                        'DGS-UNW
  656.       IF ZOK THEN
  657.        X = 172              'Pe 01/19/93
  658.        Gosub 21915        'Pe 01/19/93
  659.        CALL QuickTPut1 (OutTxt$ + " "+ZFileNameHold$)
  660.         CALL OpenWork (2,TmpName$)
  661.          HaveFile$ = ""
  662.           FileInList = ZFalse
  663.             WHILE NOT EOF(2) AND NOT FileInList
  664.          INPUT #2, HaveFile$
  665.         CALL AllCaps (HaveFile$)
  666.           FileInList = (INSTR(ZFileNameHold$,HaveFile$) > 0)
  667.      WEND
  668.        CLOSE 2
  669.       END IF
  670.      IF FileInList THEN _
  671.     GOTO 20443
  672. '
  673. ' If you want to eliminate either one of these routines just comment
  674. ' out the one you don't want....NOTHANX.DEF must reside in RBBS's Subdir
  675. ' the OFFLINE.DIR were your Master FMS dir is kept....you can change names
  676. ' as you see fit. 
  677. '                  !!DO NOT COMMENT OUT THE LINE NUMBER !!
  678. '
  679.  TmpName$ = ZDirPath$+"OFFLINE.DIR"                            'PE mode2 to
  680.        CALL FindIt (TmpName$)                                        'DGS-UNW
  681.         IF ZOK THEN
  682.        X = 173               'Pe 01/19/93
  683.        Gosub 21915        'Pe 01/19/93
  684.           CALL QuickTPut1 (OutTxt$ + " "+ZFileNameHold$ )
  685.            CALL OpenWork (2,TmpName$)
  686.             HaveFile$ = ""
  687.              FileInList = ZFalse
  688.                WHILE NOT EOF(2) AND NOT FileInList
  689.                 LINE INPUT #2, HaveFile$                     'Pe 12/15/91
  690.                  CALL AllCaps (HaveFile$)
  691.                   StopReading = INSTR(HaveFile$,".")
  692.                    HaveFile$ = Left$(HaveFile$,StopReading)    'Pe 12/16/91
  693.                   Search = INSTR(ZFileNameHold$,".")
  694.                   Search$ = Left$(ZFileNameHold$,Search)
  695.                  If Search$ = HaveFile$ THEN_
  696.                 FileInList = ZTrue
  697.              WEND
  698.       CLOSE 2
  699.         END IF
  700. '
  701. '    next 2 lines
  702. '    Allow Sysop to update FMS listing with a local upload
  703. '    even if the filename exists in the NOTHANX.DEF OR OFFLINE.DIR
  704. '
  705. * INSERTING new line(s)
  706. 20443   If ZSysop Then _
  707.             FileinList = ZFalse            'Pe 12/15/91
  708.         IF FileInList THEN _
  709.            CALL BufFile (ZHelpPath$+"NOTHANX.MSG",WasX) : _  'Pe 06/01/92
  710.            CALL DelayTime (3) : _
  711.            GOTO 20453
  712.         CALL Carrier
  713.         IF ZSubParm = -1 THEN _
  714.            ZFileSysParm = 7 : _
  715.            RETURN
  716.       PersFile$ = ZFileName$                                     'Pe 08/09/91
  717.       ZFileName$ = ZPersonalDrvPath$ + PersFile$                 'Pe 08/08/91
  718.       Call FindFile (ZFileName$,ZOK)                             'Pe 08/09/91
  719.       IF ZOK THEN Goto 20452                                     'Pe 08/09/91
  720.       ZFileName$ = PersFile$                                     'Pe 08/09/91
  721.       CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,"U")
  722. * REPLACING old line(s) by new
  723. 20450 IF Extension$ <> Check$ THEN _
  724. * ------[ first line different ]------
  725.       CALL RotorsDir (WasX$ + "." + Check$,ZSubDir$(),ZSubDirCount,ZTrue,"U") : _
  726.          IF ZOK THEN _
  727.             ExtSrch = ZTrue : _
  728.             GOTO 20452
  729.       GOTO 20447
  730. * REPLACING old line(s) by new
  731. * ------[ first line different ]------
  732. 20451 X = 174              'Pe 01/19/93
  733.       Gosub 21915        'Pe 01/19/93
  734.       ZOutTxt$ = OutTxt$+ ZFileName$ + ">"
  735.       GOTO 20395
  736. * REPLACING old line(s) by new
  737. 20452 IF ZUserSecLevel < ZOverWriteSecLevel THEN _
  738.          GOTO 20453
  739.       IF ExtSrch AND (WasX$ + "." + Check$) <> ZFileName$ THEN _
  740. * ------[ first line different ]------
  741.        X = 175 : _              'Pe 01/19/93
  742.        Gosub 21915  : _        'Pe 01/19/93
  743.          ZOutTxt$ = WasX$ + "." + Check$ + OutTxt$ _
  744.       ELSE X = 176              'Pe 01/19/93
  745.        Gosub 21915        'Pe 01/19/93
  746.        ZOutTxt$ = OutTxt$
  747.       GOSUB 21660
  748.       IF ZFileSysParm > 1 THEN _
  749.          RETURN
  750.       IF NOT ZYes THEN _
  751.          GOTO 20453
  752.       ZWasZ$ = ZFileName$
  753.       CALL KillWork (ZFileName$)
  754.       IF ZErrCode <> 0 AND ZErrCode <> 53 THEN _
  755.        X = 177 : _              'Pe 01/19/93
  756.        Gosub 21915  : _        'Pe 01/19/93
  757.          ZOutTxt$ = OutTxt$ : _
  758.          GOSUB 21660 : _
  759.          RETURN
  760.       GOTO 20475
  761. * REPLACING old line(s) by new
  762. 20453 CLOSE 2
  763. * ------[ first line different ]------
  764.       FileInList = ZFalse ' Pe 12/31/92
  765.       IF ZUserSecLevel >= ZAddDirSecurity THEN _
  766.          GOTO 20455
  767. * REPLACING old line(s) by new
  768. * ------[ first line different ]------
  769. 20454 X = 178               'Pe 01/19/93
  770.       Gosub 21915         'Pe 01/19/93
  771.       CALL QuickTPut1 (OutTxt$ + " " + ZFileNameHold$)
  772.       CALL DelayTime (3)  'Pe 08/04/91
  773.       PersFile$ = ""      'Pe 08/08/91
  774.       CALL UpdtCalr ("Upload duplicate " + ZFileNameHold$,1)
  775.       RETURN
  776. * REPLACING old line(s) by new
  777. * ------[ first line different ]------
  778. 20455 X = 179              'Pe 01/19/93
  779.        Gosub 21915        'Pe 01/19/93
  780.        ZOutTxt$ = OutTxt$
  781.       ZTurboKey = - ZTurboKeyUser
  782.       GOSUB 21660
  783.       IF ZFileSysParm > 1 THEN _
  784.          RETURN
  785.       IF NOT ZYes THEN _
  786.          RETURN
  787.       GOSUB 20460
  788.       IF WhoTo$ = "" THEN _
  789.          RETURN
  790.       AddingDescOnly = ZTrue
  791.       ZWasBatchTransfer = ZFalse    'Pe 01/03/92
  792.       ZWasFT$ = "l"
  793. CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,1) 'UPL-MOD pe082690
  794. 'Call AutoLogoff    'Pe 10/20/91 Test mod... remove when working
  795.       GOSUB 20702
  796.       RETURN
  797. * REPLACING old line(s) by new
  798. * ------[ first line different ]------
  799. 20460 CALL KillWork (ZNodeWorkFile$)      'Pe BatchUp
  800.       WhoTo$ = ""
  801.      IF ZUpBatchTransfer THEN _          'Pe 04/29/92
  802.       WhoTo$ = "ALL"                     'Pe 04/29/92
  803.       WasY$ = ZFileName$
  804.       IF ZUserSecLevel >= ZMinSecPersUpld THEN _
  805.          CALL SetWhoTo (ZTrue,WhoTo$,"",RcvrRecNum,Found) _
  806.       ELSE WhoTo$ = "ALL"
  807.       ZFileName$ = WasY$
  808.       RETURN
  809. * REPLACING old line(s) by new
  810. 20471 ZWasZ$ = ZUserIn$(ZAnsIndex)
  811.       CALL AllCaps(ZWasZ$)
  812.       WasX = 0
  813.       IF LEN (ZWasZ$) = 1 THEN _
  814.          WasX = INSTR(ZDefaultXfer$,ZWasZ$) : _
  815.          IF WasX > 0 THEN _
  816.             ZAnsIndex = ZAnsIndex + 1 : _
  817.             IndexSave = IndexSave + 1 : _
  818.             ZCmdTransfer$ = ZWasZ$ : _
  819. * ------[ first line different ]------
  820.             IF MID$(ZInternalEquiv$,WasX,1) = "N" THEN _
  821.                ZCmdTransfer$ = ""
  822.       RETURN
  823. * REPLACING old line(s) by new
  824. 20475 ZWasZ$ = ZUpldDriveFile$
  825.       CALL FindFree
  826.       IF VAL(ZFreeSpace$) < 4096 THEN _
  827.          GOSUB 21895 : _
  828.          IndexSave = ZLastIndex + 1 : _
  829.          RETURN
  830. * ------[ first line different ]------
  831.        X = 180               'Pe 01/19/93
  832.        Gosub 21915        'Pe 01/19/93
  833.       ZOutTxt$ = OutTxt$ + ZFreeSpace$
  834.       GOSUB 21640
  835.       IF ZFileSysParm > 1 THEN _
  836.          RETURN
  837.     GOSUB 20460                                                  'Pe 08/08/91
  838.       If ZMplPersUpload = ZTrue Then _                           'Pe 08/09/91
  839.       ZFileName$ = ZPersonalDrvPath$ + PersFile$                 'Pe 08/08/91
  840. '*****************
  841. CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,1)  '<++++++
  842. '*****************
  843. * INSERTING new line(s)
  844. 20476 IF ZAbort THEN _     'Pe 09/07/91 added line number
  845.       ZAbort = ZFalse : _   'PE 12/14/88
  846.         RETURN
  847.       ZLine25$ = "(U) " + _
  848.                  ZFileNameHold$
  849.       ZSubParm = 2
  850.       CALL Line25
  851.       ZOutTxt$ = ""
  852.       ZOK = ZTrue
  853. * REPLACING old line(s) by new
  854. * ------[ first line different ]------
  855. 20500  ZTransferFunction = 2
  856.       GOSUB 21790
  857.       IF ZFileSysParm > 1 THEN _
  858.          RETURN
  859.       IF ZInternalProt$ = "N" THEN _                       'Pe 08/08/91
  860.          GOTO 21700                                        'Pe 08/08/91
  861. IF NOT ZUpBatchTransfer THEN _
  862. CALL AutoLogOff            'Pe 02/04/90
  863.       IF ZAutoEnd = 2 THEN _
  864.          RETURN
  865.       ON INSTR("AXCYN",ZInternalProt$) GOTO _
  866.          20560, _         ' ASCII UPLOAD
  867.          20542, _         ' Xmodem
  868.          20542, _         ' Xmodem CRC
  869.          20542, _         ' YMODEM
  870.          20735            ' NONE - CANCEL
  871.       GOTO 20261
  872. * REPLACING old line(s) by new
  873. * ------[ first line different ]------
  874. 20542 X = 165              'Pe 01/19/93
  875.       Gosub 21915         'Pe 01/19/93
  876.       Call QuickTput1 (OutTxt$) : _
  877.       Call Delaytime (3) : _
  878.       Return
  879. '
  880. ' *  ASCII UPLOAD
  881. '
  882. * REPLACING old line(s) by new
  883. 20560 LineACK = (ZDefaultLineACK$ <> "")
  884.       IF LineACK THEN _
  885. * ------[ first line different ]------
  886.        X = 181 : _              'Pe 01/19/93
  887.        Gosub 21915  : _        'Pe 01/19/93
  888.          ZOutTxt$ = OutTxt$ : _
  889.          ZTurboKey = - ZTurboKeyUser : _
  890.          LineACK = NOT ZNo : _
  891.          GOSUB 21660 : _
  892.          IF ZFileSysParm > 1 THEN _
  893.             RETURN
  894.       GOSUB 20337
  895.        X = 182              'Pe 01/19/93
  896.        Gosub 21915       'Pe 01/19/93
  897.       CALL QuickTPut1 (OutTxt$)
  898.       CALL QuickTPut1 (ZProtoPrompt$+" RECEIVE of " + ZFileNameHold$ + " ready")
  899.       ZOK = ZFalse
  900.       XOff = ZFalse
  901.       CALL OpenOutW(ZFileName$)
  902.       IF ZErrCode <> 0 AND ZErrCode <> 53 THEN _
  903.          ZWasEL = 20560 : _
  904.          GOTO 21900
  905.       GOSUB 20510
  906.       IF ZFileSysParm > 1 THEN _
  907.          RETURN
  908. * REPLACING old line(s) by new
  909. * ------[ first line different ]------
  910. 20670 X = 183               'Pe 01/19/93
  911.        Gosub 21915        'Pe 01/19/93
  912.        ZOutTxt$ = ZXOff$ + OutTxt$
  913. * REPLACING old line(s) by new
  914. 20700 GOSUB 21780
  915.       IF ZFileSysParm > 1 THEN _
  916.          RETURN
  917. * ------[ first line different ]------
  918. '
  919. '20702 IF ZWasFT$ = "l" THEN _          'Pe 12/28/91
  920. '         ZWasBatchTransfer = ZFalse    'Pe 12/28/91
  921. '
  922. 'Line number moved for Local Uploads    'Pe 01/03/91
  923. '
  924.       IF ZWasBatchTransfer Then _
  925.         CALL BatchUpload (ZDesc$,ZUCat$,2) : _
  926.         GOTO 20703
  927. * REPLACING old line(s) by new
  928. * ------[ first line different ]------
  929. 20702 CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(), ZLinesInMsg,2) 'Pe 02/03/90
  930. '
  931. * INSERTING new line(s)
  932. 20703 IF ZAutoEnd = 1 THEN _                'AUTO-UP MOD
  933.          ZFileSysParm = 7: _             'Pe BatchUp 09/12/91
  934.          ZDnldCompleted = ZTrue : _      'Pe BatchUp 09/12/91
  935.          RETURN                             'AUTO-UP MOD
  936.       IF NOT ZGetExtDesc THEN _
  937.          ZPrivateDoor = ZFalse : _
  938.          GOTO 20710
  939.        X = 184             'Pe 01/19/93
  940.        Gosub 21915        'Pe 01/19/93
  941.       ZMsgHeader$ = OutTxt$ + " " + ZFileNameHold$
  942.       ZSysopComment = ZTrue
  943.       ZMaxMsgLines = ZMaxExtendedLines
  944.       WasLL = ZRightMargin
  945.       ZRightMargin = 30 + ZMaxDescLen
  946.       IF ZRightMargin > 74 THEN _
  947.          ZRightMargin = 74
  948.       ZFileSysParm = 5
  949.       RETURN
  950. * REPLACING old line(s) by new
  951. 20705 ZMaxMsgLines = ZMaxMsgLinesDef
  952.       ZRightMargin = WasLL
  953. * ------[ first line different ]------
  954.       CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,3)  'Pe 02/04/90
  955. * REPLACING old line(s) by new
  956. 20730 GOSUB 21780
  957. * ------[ first line different ]------
  958.        X = 160              'Pe 01/19/93
  959.        Gosub 21915        'Pe 01/19/93
  960.       CALL QuickTPut1 (OutTxt$)
  961.       ZAutoLogoffReq = ZFalse                'Pe 10/20/91
  962.       ZWasBatchTransfer = ZFalse             'Pe 03/02/92
  963.       ZUpBatchTransfer = ZFalse              'Pe 03/02/92
  964.       LastUpld = 0
  965.       ZPrivateDoor = ZFalse
  966. * REPLACING old line(s) by new
  967. 20735 CALL KillWork (ZFileName$)
  968. * ------[ first line different ]------
  969.       IF ZErrCode <> 0 THEN _
  970.          ZWasEL = 20736 : _
  971.          GOTO 21900
  972.       ZAnsIndex = ZLastIndex + 1
  973.       IndexSave = ZAnsIndex
  974.       ZLastIndex = 0
  975.       RETURN
  976. '
  977. ' *  Sysop ABORTED UPLOAD
  978. '
  979. * REPLACING old line(s) by new
  980. * ------[ first line different ]------
  981. 20745 X = 186              'Pe 01/19/93
  982.        Gosub 21915        'Pe 01/19/93
  983.        ZOutTxt$ = ZXOff$ + OutTxt$
  984.       GOTO 20675
  985. '
  986. ' *  CALCULATE DOWNLOAD TIME ESTIMATE
  987. '
  988. * REPLACING old line(s) by new
  989. 20760 IF ZErrCode <> 0 THEN _
  990. * ------[ first line different ]------
  991.        X = 187 : _              'Pe 01/19/93
  992.        Gosub 21915  : _        'Pe 01/19/93
  993.          CALL QuickTPut1 (OutTxt$ + " " +ZFileNameHold$) : _
  994.          CALL UpdtCalr (OutTxt$ + " "+ZFileName$,2) : _
  995.          ZOK = ZFalse : _
  996.          ZErrCode = 0 : _
  997.          ZBytesInFile# = 0 : _
  998.          RETURN
  999.       ZBytesInFile# = LOF(2)
  1000.       ZNumDnldBytes! = LOF(2)
  1001.       ZOK = ZTrue
  1002.       IF SizeOnly THEN _
  1003.          SizeOnly = ZFalse : _
  1004.          RETURN
  1005.       ZBlocksInFile# = MaxBlock
  1006.       IF ZBatchTransfer THEN _
  1007.          BatchBlocks# =  BatchBlocks# + ZBlocksInFile# : _
  1008.          BatchBytes# = BatchBytes# + ZBytesInFile# : _
  1009.          CALL OpenWorkA (ZNodeWorkFile$) : _
  1010.          CALL PrintWorkA (ZFileName$) : _
  1011.          ZDownFiles = ZDownFiles + 1 : _
  1012.          CLOSE 2 : _
  1013.          RETURN
  1014.       ZDownFiles = 1
  1015. * REPLACING old line(s) by new
  1016. 20791 CALL CheckTimeRemain (MinsRemaining)
  1017.       IF ZSubParm = -1 THEN _
  1018.          ZFileSysParm = 6 : _
  1019.          RETURN
  1020.       ZOK = ZTrue
  1021.       Temp = ZExtraDnldTime
  1022.       CALL ChkAddedTime (Temp)
  1023.       Temp = MinsRemaining + Temp
  1024.       ZWasA = INT(ZBlocksInFile# / 60) + 1
  1025.       IF ZWasA <= Temp THEN _
  1026.          GOTO 20793
  1027. * ------[ first line different ]------
  1028.       IF ZDownFiles < 2 THEN _
  1029.          CALL AllCaps (ZFileNameHold$) : _
  1030.        X = 188 : _              'Pe 01/19/93
  1031.        Gosub 21915  : _        'Pe 01/19/93
  1032.          ZOutTxt$ = ZFileNameHold$ +OutTxt$ _
  1033.                  + STR$(ZWasA) + "  have" + STR$(Temp) : _
  1034.          CALL UpdtCalr (ZOutTxt$,2) : _
  1035.          CALL QuickTPut1 (ZOutTxt$) _
  1036.       ELSE CALL OpenWork (2,ZNodeWorkFile$) : _
  1037.            WHILE NOT EOF(2) : _
  1038.               CALL ReadDir (2,1) : _
  1039.               CALL BreakFileName (ZOutTxt$,DR$,ZWasY$,WasX$,ZTrue): _
  1040.               ZFileName$ = ZWasY$ + WasX$ : _
  1041.               X = 188 : _              'Pe 01/19/93
  1042.               Gosub 21915  : _        'Pe 01/19/93
  1043.               ZOutTxt$ = ZFileName$ + OutTxt$ _
  1044.                          + STR$(ZWasA) + "  have" + STR$(Temp) : _
  1045.               CALL UpdtCalr (ZOutTxt$,2) : _
  1046.            WEND : _
  1047.            CLOSE 2 : _
  1048.             X = 188 : _              'Pe 01/19/93
  1049.              Gosub 21915  : _        'Pe 01/19/93
  1050.            ZOutTxt$ = OutTxt$  _
  1051.                        + STR$(ZWasA) + "  have" + STR$(Temp) : _
  1052.            CALL QuickTPut1 (ZOutTxt$)
  1053.       CALL DelayTime (3)
  1054.       IF ZDownFiles < 2 THEN _
  1055.          GOTO 20792
  1056.       ZLastIndex = 0
  1057.        X = 189              'Pe 01/19/93
  1058.        Gosub 21915        'Pe 01/19/93
  1059.       ZOutTxt$ = OutTxt$
  1060.       ZTurboKey = - ZTurboKeyUser
  1061.       GOSUB 21668
  1062.       IF ZNo THEN _
  1063.          LastDnld = 0 : _
  1064.          GOTO 20792
  1065.       Temp = 0
  1066.       CALL OpenWork (2,ZNodeWorkFile$)
  1067.       WHILE NOT EOF(2)
  1068.          CALL ReadDir (2,1)
  1069.          CALL BreakFileName (ZOutTxt$,DR$,ZWasY$,WasX$,ZTrue)
  1070.          ZFileName$ = ZWasY$ + WasX$
  1071.          ZOutTxt$ = "Download " + ZFileName$ + " (Y,[N])"
  1072.          ZTurboKey = - ZTurboKeyUser
  1073.          GOSUB 21668
  1074.          IF ZYes THEN _
  1075.             Temp = Temp + 1 : _
  1076.             ZOutTxt$(Temp) = ZFileName$
  1077.       WEND
  1078.       CLOSE 2
  1079.       ZAnsIndex = 1
  1080.       ReStart = (Temp > 0)
  1081.       LastDnld = Temp
  1082.       ZLastIndex = Temp
  1083.       FOR WasX = 1 TO Temp
  1084.          ZUserIn$(WasX) = ZOutTxt$(WasX)
  1085.       NEXT
  1086. * REPLACING old line(s) by new
  1087. 20793 IF ZRatioRestrict# > 0 THEN _
  1088. * ------[ first line different ]------
  1089.        X = 190 : _              'Pe 01/19/93
  1090.        Gosub 21915  : _        'Pe 01/19/93
  1091.          CALL QuickTPut1 (OutTxt$) : _
  1092.          CALL CheckRatio (ZTrue)
  1093.       CALL AutoLogoff
  1094.       IF ZAutoEnd = 2 THEN _
  1095.       ZOK = ZFalse
  1096.       RETURN
  1097. * REPLACING old line(s) by new
  1098. 20851 ZWasY$ = ""
  1099.       CALL CheckCarrier
  1100.       IF ZSubParm = -1 THEN _
  1101.          ZFileSysParm = 7 : _
  1102.          RETURN
  1103.       RETURN
  1104. '
  1105. * ------[ first line different ]------
  1106. ' *  CHANGE TO 8 BIT FOR Xmodem
  1107. '
  1108. * DELETING old line(s)
  1109. 20860
  1110. 20900
  1111. 20903
  1112. 20920
  1113. 20922
  1114. 20930
  1115. 20960
  1116. 20970
  1117. 20990
  1118. * REPLACING old line(s) by new
  1119. 20996 WasSO = 0
  1120.       RETURN
  1121. '
  1122. * ------[ first line different ]------
  1123. ' STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL OUTPUT ROUTINE
  1124. '
  1125. ' Modeled on lines 12975 to 12983 in RBBS-PC.BAS
  1126. * DELETING old line(s)
  1127. 20999
  1128. 21000
  1129. 21020
  1130. 21040
  1131. 21050
  1132. 21060
  1133. 21070
  1134. 21080
  1135. 21090
  1136. 21100
  1137. 21110
  1138. 21113
  1139. 21120
  1140. 21131
  1141. 21145
  1142. 21150
  1143. 21170
  1144. 21180
  1145. 21190
  1146. 21191
  1147. 21200
  1148. 21210
  1149. 21212
  1150. 21220
  1151. 21225
  1152. 21230
  1153. 21240
  1154. 21250
  1155. 21280
  1156. 21281
  1157. 21300
  1158. 21303
  1159. 21350
  1160. 21360
  1161. 21380
  1162. 21390
  1163. 21410
  1164. 21415
  1165. 21420
  1166. 21440
  1167. 21443
  1168. 21445
  1169. 21450
  1170. 21455
  1171. 21460
  1172. 21470
  1173. 21480
  1174. 21490
  1175. 21503
  1176. 21504
  1177. 21510
  1178. 21530
  1179. 21531
  1180. 21540
  1181. 21545
  1182. 21550
  1183. 21560
  1184. 21561
  1185. * REPLACING old line(s) by new
  1186. 21720 CALL LPrnt (WasD$,NumReturns)
  1187.       RETURN
  1188. '
  1189. * ------[ first line different ]------
  1190. ' * UPDATE DOWNLOAD STATISTICS
  1191. '
  1192. '  (formerly lines 50600 to 50614 in RBBS-PC.BAS
  1193. * DELETING old line(s)
  1194. 21750
  1195. * REPLACING old line(s) by new
  1196. 21760 GOSUB 21780
  1197.       IF ZFileSysParm > 1 THEN _
  1198.          RETURN
  1199.       IF ZBatchTransfer THEN _
  1200.          CALL LinesInFile (ZNodeWorkFile$,ZDownFiles) _
  1201.       ELSE ZDownFiles = 1
  1202. * ------[ first line different ]------
  1203.       IF NOT ZDnldCompleted THEN _     'Pe 05/31/91
  1204.          ZAutoLogoffReq = ZFalse : _
  1205.          ZWasDF$ = " Aborted" : _
  1206.          GOTO 21770
  1207.       CALL LogPDown (ZPersonalDnld,1+ZAnsIndex-FirstDnld)
  1208.       WasX = ((ZRatioRestrict# > 0) AND ZEnforceRatios AND ZFreeDnld)
  1209.       IF NOT WasX THEN _
  1210.          ZDnlds = ZDnlds + ZDownFiles : _
  1211.          ZGlobalDLToday! = ZGlobalDLToday! + ZDownFiles : _
  1212.          ZGlobalDnlds = ZGlobalDnlds + ZDownFiles : _
  1213.          ZDLBytes! = ZDLBytes! + ZNumDnldBytes! : _
  1214.          ZGlobalDLBytes! = ZGlobalDLBytes! + ZNumDnldBytes! : _
  1215.          ZDLToday! = ZDLToday! + ZDownFiles : _
  1216.          ZBytesToday! = ZBytesToday! + ZNumDnldBytes! : _
  1217.          ZGlobalBytesToday! = ZGlobalBytesToday! + ZNumDnldBytes!
  1218.       ZNumDnldBytes! = 0
  1219.       ZWasDF$ = " Downloaded"
  1220.       IF (ZAnsIndex = LastDnld OR NOT ZConcatFIles) THEN _
  1221.         Call MenuPlus (9) : _                                ' Pe Menu174
  1222.          CALL SkipLine (1) : _
  1223.        X = 191 : _              'Pe 01/19/93
  1224.        Gosub 21915  : _        'Pe 01/19/93
  1225.          CALL QuickTPut1 (OutTxt$)
  1226.          IF WasX THEN _
  1227.        X = 192 : _              'Pe 01/19/93
  1228.        Gosub 21915  : _        'Pe 01/19/93
  1229.             CALL QuickTPut1 (OutTxt$)
  1230. * DELETING old line(s)
  1231. 21768
  1232. * REPLACING old line(s) by new
  1233. * ------[ first line different ]------
  1234. 21773 IF ZTransferFunction = 1 THEN
  1235.      CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZTrue)
  1236.       ZWasZ$ = WasX$ + _
  1237.            Extension$ + _
  1238.            ZWasDF$ + _
  1239.            " at " + _
  1240.            ZTime$ + _
  1241.            " using " + _
  1242.            ZWasFT$ + _
  1243.            STR$(ZBytesInFile#)
  1244.       CALL UpdtCalr (ZWasZ$,2)
  1245.    END IF
  1246.       IF ZBatchTransfer THEN _
  1247.          ZWasQ = ZWasQ - 1 : _
  1248.          GOTO 21772
  1249.       'CALL CheckRatio (ZFalse)
  1250. * REPLACING old line(s) by new
  1251. * ------[ first line different ]------
  1252. 21774  RETURN
  1253. '
  1254. '
  1255. ' *****   TURN ON INTERMEDIATE ECHO   ****
  1256. '
  1257. '  (formerly line 50620 in RBBS-PC.BAS
  1258. * REPLACING old line(s) by new
  1259. * ------[ first line different ]------
  1260. 21790  Call CheckCarrier                  'Pe 12/31/91
  1261.       IF ZSubParm = -1 THEN _             'Pe 12/31/91
  1262.          ZFileSysParm = 7 : _             'Pe 12/31/91
  1263.        Return                             'Pe 12/31/91
  1264.        IF ZEchoer$ = "I" THEN _
  1265.          CALL SetEcho ("R")
  1266.       RETURN
  1267. '
  1268. ' *****   DIRECTORY SEARCH   ****
  1269. '
  1270. '  (formerly lines 52900 to 52920 in RBBS-PC.BAS
  1271. * REPLACING old line(s) by new
  1272. * ------[ first line different ]------
  1273. 21810 X = 193              'Pe 01/19/93
  1274.        Gosub 21915        'Pe 01/19/93
  1275.        ZOutTxt$ = OutTxt$
  1276.       ZMacroMin = 99
  1277.       GOSUB 21668
  1278.       IF ZWasQ = 0 THEN _
  1279.          RETURN
  1280. * REPLACING old line(s) by new
  1281. 21820 WasRS$ = ZUserIn$(ZAnsIndex)
  1282.       WildSearch = (INSTR(WasRS$,"*") > 0 OR INSTR(WasRS$,"?") > 0)
  1283.       CALL AllCaps (WasRS$)
  1284.       IF RIGHT$(WasRS$,1) = "*" THEN _
  1285.          IF RIGHT$(WasRS$,2) <> ".*" THEN _
  1286.             WasRS$ = WasRS$ + ".*"
  1287.       SearchString$ = WasRS$
  1288.       SearchDate$ = ""
  1289.       ZJumpSearching = ZFalse
  1290.       WasA1$ = WasRS$
  1291. * ------[ first line different ]------
  1292.       ZExtendedOff = ZFalse 'ZTrue       'Pe 10/27/91
  1293.       GOTO 21867
  1294. '
  1295. ' *****  P - personal download  ****
  1296. '
  1297. '  (formerly lines 52950 to 52952 in RBBS-PC.BAS
  1298. * REPLACING old line(s) by new
  1299. * ------[ first line different ]------
  1300. 21854 RETURN
  1301. '
  1302. ' *  WasN - COMMAND FROM FILES MENU (DISPLAY NEW FILES SINCE Last DIR DISPLAY)
  1303. '
  1304. '  (formerly lines 53000 to 53070 in RBBS-PC.BAS
  1305. * REPLACING old line(s) by new
  1306. 21862 WasA1$ = RIGHT$(ZWasLM$,4) +_
  1307.             LEFT$(ZWasLM$,2)
  1308. * ------[ first line different ]------
  1309.        X = 194              'Pe 01/19/93
  1310.        Gosub 21915        'Pe 01/19/93
  1311.       ZOutTxt$ = OutTxt$ + WasA1$
  1312.       GOSUB 21668
  1313.       CALL AraAllCaps (ZUserIn$(),ZAnsIndex)
  1314.       IF ZWasQ = 0 OR ZUserIn$(ZAnsIndex) = "S" THEN _
  1315.          WasRS$ = ZWasLM$ : _
  1316.          GOTO 21866
  1317. * REPLACING old line(s) by new
  1318. 21866 SearchDate$ = WasRS$
  1319.       SearchString$ = ""
  1320.       ZJumpSearching = ZFalse
  1321. * ------[ first line different ]------
  1322.       ZExtendedOff = ZFalse 'ZTrue             'Pe 10/27/91
  1323.       ZUserIn$(ZAnsIndex) = "A"
  1324.        ZEndList = ZTrue          'Pe 12/01/91
  1325.        GOTO 21871                'Pe NewFile mod
  1326. * REPLACING old line(s) by new
  1327. * ------[ first line different ]------
  1328. 21867 CALL GetDirs (ZFalse)
  1329.       IF ZWasQ = 0 THEN _
  1330.          RETURN
  1331. * REPLACING old line(s) by new
  1332. 21880 WasQX = ZAnsIndex
  1333.       GOSUB 20157
  1334.       IF ZFileSysParm > 1 THEN _
  1335.          RETURN
  1336.       ZAnsIndex = ZAnsIndex + 1
  1337.       IF ZAnsIndex <= ZLastIndex THEN _
  1338.          GOTO 21875
  1339.       ListNew = ZFalse
  1340. * ------[ first line different ]------
  1341.       ZEndList = ZFalse       'Pe 12/01/91
  1342.       SearchString$ = ""
  1343.       SearchDate$ = ""
  1344.       RETURN
  1345. * REPLACING old line(s) by new
  1346. * ------[ first line different ]------
  1347. 21895  X = 195              'Pe 01/19/93
  1348.        Gosub 21915        'Pe 01/19/93
  1349.        CALL QuickTPut1 (OutTxt$)
  1350.        RETURN
  1351. '
  1352. ' *  MAIN FILE SYSTEM ERROR TRAP - ALL ERRORS PASS THROUGH THIS ROUTINE
  1353. '
  1354. '  (formerly lines 13000 to 13500 in RBBS-PC.BAS
  1355. * REPLACING old line(s) by new
  1356. 21900 IF ZDebug THEN _
  1357.          ZOutTxt$ = "RBBSSUB5 DEBUG Error Trap Entry ERL=" + _
  1358. * ------[ first line different ]------
  1359.              STR$(ZWasEL) + _
  1360.               " ERR=" + _
  1361.               STR$(ZErrCode) : _
  1362.          IF ZPrinter THEN _
  1363.             CALL Printit(ZOutTxt$) _
  1364.          ELSE CALL LPrnt(ZOutTxt$,1)
  1365.       IF ZWasEL = 20126 AND ZErrCode = 53 THEN _
  1366.          GOTO 20142
  1367.       IF ZWasEL = 20242 AND ZErrCode = 62 THEN _
  1368.          CALL UpdtCalr (ZFileSecFile$ + " bad format!",2) : _
  1369.          GOTO 20247
  1370.       IF ZWasEL = 20263 THEN _
  1371.          ZOutTxt$ = "<Download aborted>" : _
  1372.          ZDnldCompleted = ZFalse : _          'Pe
  1373.          ZAutoLogoffReq = ZFalse : _
  1374.          ZAutoEnd = 3 : _
  1375.          GOTO 20390
  1376.       IF ZWasEL = 20560 AND ZErrCode = 67 THEN _
  1377.          GOTO 20451
  1378.       IF ZWasEL = 20560 AND ZErrCode = 70 THEN _
  1379.          IF VAL(ZFreeSpace$) > 1999 THEN _
  1380.             GOTO 20610 _
  1381.          ELSE GOSUB 21895 : _
  1382.               GOTO 21700
  1383.       IF ZWasEL = 20620 THEN _
  1384.          GOTO 20670
  1385.       IF ZWasEL = 20650 THEN _
  1386.          GOTO 20670
  1387.       IF ZWasEL = 20736 AND ZErrCode = 53 THEN _
  1388.          GOTO 21700
  1389. * INSERTING new line(s)
  1390. 21915 Call GetRBBSString(X,RBBSString$)      'Pe 01/16/93
  1391.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  1392.       Return
  1393. * REPLACING old line(s) by new
  1394. 63100 ' $SUBTITLE: 'DoorReturn - Subroutine to process requests from a door'
  1395. ' $PAGE
  1396. '
  1397. '  NAME    -- DoorReturn
  1398. '
  1399. '  INPUTS  -- PARAMETER                      MEANING
  1400. '             DOUTx.DEF               File of requests
  1401. '
  1402. '  OUTPUTS -- ZUserSecLevel     Revised Security Level
  1403. '
  1404. '  PURPOSE -- To give Doors a stable way to make requests
  1405. '             to the host.
  1406. '
  1407.       SUB DoorReturn STATIC
  1408.       IF NOT ZExitToDoors THEN _
  1409.          EXIT SUB
  1410.       CALL OpenUser (ZHighestUserRecord)
  1411.       FIELD 5, 128 AS ZUserRecord$
  1412.       FIELD 5,31 AS ZUserName$, _
  1413.               15 AS ZPswd$, _
  1414.                2 AS ZSecLevel$, _
  1415.               14 AS ZUserOption$,  _
  1416.               24 AS ZCityState$, _
  1417.                2 AS MachineType$, _
  1418.                1 AS ZBankTime$,_
  1419.                4 AS ZTodayDl$, _
  1420.                4 AS ZTodayBytes$, _
  1421.                4 AS ZDlBytes$, _
  1422.                4 AS ZULBytes$, _
  1423.               14 AS ZLastDateTimeOn$, _
  1424.                3 AS ZListNewDate$, _
  1425.                2 AS ZUserDnlds$, _
  1426.                2 AS ZUserUplds$, _
  1427.                2 AS ZElapsedTime$
  1428.       ZSubParm = 6
  1429.       CALL FileLock
  1430.       GET 5,ZUserFileIndex
  1431.       ZTimesLoggedOn = CVI(MID$(ZUserOption$,1,2))
  1432. * ------[ first line different ]------
  1433.       IF ZDoorDropFile$ = "R" THEN _                                 ' DD012702/DOORS
  1434.          CALL ReadDoorSys                                            ' DD012702/DOORS
  1435.       CALL SetSysOp
  1436.       CALL SetUserPref
  1437.       CALL SetUserUpDn
  1438.       ZGlobalsSet = ZFalse
  1439.       CALL SetGlobalUpDn
  1440.       ZElapsedTime = CVI(MID$(ZUserRecord$,127,2))
  1441.       IF ZDoorDropFile$ = "R" THEN _                                 ' DD012702/DOORS
  1442.          ZErrCode = 0 : _                                            ' DD012702/DOORS
  1443.          PUT 5,ZUserFileIndex                                        ' DD012702/DOORS
  1444.       ZFileName$ = "DOUT" + ZNodeID$ + ".DEF"
  1445.       CALL FindIt (ZFileName$)
  1446.       IF NOT ZOK THEN _
  1447.          GOTO 63197
  1448. * REPLACING old line(s) by new
  1449. 63110 WasX$ = LEFT$(ZOutTxt$(2),1)         ' ZWasSL = Security Level
  1450.       CALL CheckInt (ZOutTxt$(2))
  1451.       IF ZErrCode > 0 THEN _
  1452.          GOTO 63105
  1453.       IF WasX$ = "+" OR WasX$ = "-" THEN _
  1454.          ZWasA = ZUserSecLevel + ZTestedIntValue _
  1455.       ELSE ZWasA = ZTestedIntValue
  1456.       IF ZWasA < ZSysopSecLevel THEN _
  1457.          ZAdjustedSecurity = (ZWasA <> ZUserSecLevel) : _
  1458.          IF ZAdjustedSecurity THEN _
  1459. * ------[ first line different ]------
  1460.            Call MenuPlus (10) : _                    ' Pe Menu174
  1461.             ZUserSecLevel = ZWasA : _
  1462.             MID$(ZUserRecord$,47,2) = MKI$(ZWasA) : _
  1463.             Call GetRBBSString(196,RBBSString$) : _      'Pe 01/16/93
  1464.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1465.             CALL QuickTPut1 (OuTxt$ + STR$(ZWasA)) : _
  1466.             Call GetRBBSString(197,RBBSString$) : _      'Pe 01/16/93
  1467.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1468.             CALL UpdtCalr (OutTxt$+STR$(ZWasA),2)
  1469.       GOTO 63105
  1470. * REPLACING old line(s) by new
  1471. 63320 ' $SUBTITLE: 'ShellExit - sub to shell out from RBBS'
  1472. ' $PAGE
  1473. '
  1474. '  NAME    -- ShellExit
  1475. '
  1476. '  INPUTS  -- ShellTem$     String to invoke shell with
  1477. '
  1478. '  OUTPUTS -- none
  1479. '
  1480. '  PURPOSE -- Delay so that strings can finish printing.  Restore comm
  1481. '             port on return
  1482. '
  1483.       SUB ShellExit (ShellTem$) STATIC
  1484. * ------[ first line different ]------
  1485.       CALL DelayTime (4 + ZBPS)   'Pe 08/12/91
  1486.       IF NOT ZLocalUser THEN _
  1487.          IF ZFossil THEN _
  1488.             CALL FOSExit(ZComPort) _
  1489.          ELSE CLOSE 3 : _
  1490.               OUT ZModemCntlReg,INP(ZModemCntlReg) OR 1
  1491.       CLOSE 2
  1492.       CALL MetaGSR (ShellTem$,ZFalse)
  1493.       SHELL ShellTem$
  1494.       IF ZFossil THEN _
  1495.          IF NOT ZLocalUser THEN _
  1496.             CALL FOSinit(ZComPort,Result) : _
  1497.             IF Result = -1 THEN _
  1498.                CALL PScrn("ERROR INIT FOSSIL AFT EXTERNAL") : _
  1499.                SYSTEM
  1500.       CALL DelayTime (2)
  1501.       CALL RestoreCom
  1502.       END SUB
  1503. * REPLACING old line(s) by new
  1504. * ------[ first line different ]------
  1505. 63355 CALL GlobalSrchRepl (WasX$,"|",ZCarriageReturn$,ZTrue)        ' KG011201
  1506.       ZCommPortStack$ = ZCommPortStack$ + WasX$ + ZCarriageReturn$  ' STack
  1507.       GOTO 63336
  1508. * REPLACING old line(s) by new
  1509. * ------[ first line different ]------
  1510. 63396 CALL SmartText (ZOutTxt$,ZFalse, OverStrike,ZFalse)   'Pe 02/06/93
  1511.       CALL MetaGSR (ZOutTxt$,OverStrike)
  1512.       RETURN
  1513. * REPLACING old line(s) by new
  1514. 63397 IF EOF(6) THEN _         ' Read next line in macro
  1515. * ------[ first line different ]------
  1516.               ZMacroActive = ZFalse _
  1517.       ELSE CALL ReadDir (6,1) : _
  1518.            ZMacroActive = (ZErrCode = 0)
  1519.       RETURN
  1520. * REPLACING old line(s) by new
  1521. 63400 ' $SUBTITLE: 'LockAppend - prepares for file append'
  1522. ' $PAGE
  1523. '
  1524. '  NAME    -- LockAppend
  1525. '
  1526. '  INPUTS  -- ZWasEN$            Name of file to append to
  1527. '
  1528. '  OUTPUTS -- none
  1529. '
  1530. '  PURPOSE -- Locks and opens file to append to
  1531. '
  1532.       SUB LockAppend STATIC
  1533. * ------[ first line different ]------
  1534. IF ZNetWorkType <> 0 Then _       'Pe 04/04/92
  1535.       WasBX = &H4 : _            'Pe 03/16/92
  1536.       ZSubParm = 9 : _           'Pe 03/16/92
  1537.       CALL FileLock
  1538.       ZErrCode = 0
  1539.       CALL OpenWorkA (ZWasEN$)
  1540.       END SUB
  1541. * REPLACING old line(s) by new
  1542. 63410 ' $SUBTITLE: 'UnLockAppend - cleans up after file append'
  1543. ' $PAGE
  1544. '
  1545. '  NAME    -- UnLockAppend
  1546. '
  1547. '  INPUTS  -- none
  1548. '
  1549. '  OUTPUTS -- none
  1550. '
  1551. '  PURPOSE -- Unlocks and close file appending to
  1552. '
  1553.       SUB UnLockAppend STATIC
  1554. * ------[ first line different ]------
  1555. IF ZNetWorkType <> 0 Then _       'Pe 04/04/92
  1556.       WasBX = &H4 : _            'Pe 03/16/92
  1557.       ZSubParm = 10 : _          'Pe 03/16/92
  1558.       CALL FileLock
  1559.       CLOSE 2
  1560.       END SUB
  1561. * REPLACING old line(s) by new
  1562. 63422 IF EOF(2) OR ZNo OR (ZErrCode > 0) OR (ZSubParm < 0) THEN _
  1563.          Template$ = "" : _
  1564.          EXIT SUB
  1565.       IF FixedLength THEN _
  1566.          CALL ReadDir (2,1) : _
  1567.          ZGSRAra$(1) = ZOutTxt$ _
  1568.       ELSE CALL ReadParms (ZGSRAra$(),DataVar,1)
  1569.       WasX$ = Template$
  1570. * ------[ first line different ]------
  1571.       CALL SmartText (WasX$,ZTrue,OverStrike,ZFalse)  ' Pe 02/06/93
  1572.       CALL MetaGSR (WasX$,OverStrike)
  1573.       CALL BufAsUnit (WasX$)
  1574.       IF RecPause OR (ZPageLength > 0 AND (ZLinesPrinted >= ZPageLength-1)) THEN _
  1575.          CALL PauseExit : _
  1576.          EXIT SUB
  1577.       GOTO 63422
  1578.       END SUB
  1579. * REPLACING old line(s) by new
  1580. 63465 ' Forces a keyboard pause inside a macro
  1581.       SUB PauseExit STATIC
  1582.       ZSubParm = 4
  1583.       ZTurboKey = -ZTurboKeyUser
  1584. * ------[ first line different ]------
  1585.       ZOutTxt$ = ZMorePrompt$ + LEFT$(">",-1*ZExpertUser) + MID$("? : ",2*ZTurboKey+1,2) ' TC041610
  1586.       ZForceKeyboard = ZTrue
  1587.       ZNoAdvance = ZTrue
  1588.       CALL TPut
  1589.       ZLinesPrinted = 0
  1590.       ZUserIn$ = ""
  1591.       END SUB
  1592. * REPLACING old line(s) by new
  1593. 63470 ' $SUBTITLE: 'SetPrompt - sub to set prompts based on user security'
  1594. ' $PAGE
  1595. '
  1596. '  NAME    -- SetPrompt
  1597. '
  1598. '  INPUTS  -- PARAMETER           MEANING
  1599. '             ZBegMain          POSITION START OF MAIN CMDS
  1600. '             ZBegFile          POSITION START OF FILE CMDS
  1601. '             ZBegUtil          POSITION START OF UTIL CMDS
  1602. '             ZBegLibrary       POSITION START OF Library CMDS
  1603. '
  1604. '  OUTPUTS -- PRESENT.OPTS$         DISPLAY WHAT USER CAN DO (1st)
  1605. '             CALLERS.OPTS$         DISPLAY WHAT USER CAN DO (2nd)
  1606. '             ZMainOpts$            MAIN OPTS USER CAN DO
  1607. '             ZFileOpts$            FILE OPTS USER CAN DO
  1608. '             ZUtilOpts$            UTIL OPTS USER CAN DO
  1609. '             ZLibOpts$         Library OPTS USER CAN DO
  1610. '
  1611. '  PURPOSE -- Sets command line display of what user can do by
  1612. '             section and display of what all user can do
  1613. '
  1614.       SUB SetPrompt STATIC
  1615.       First = ZBegMain
  1616.       Last = ZBegFile - 1
  1617.       CALL SetOpts (ZMainOpts$,ZInvalidMainOpts$,First,Last)
  1618.       First = ZBegFile
  1619.       Last = ZBegUtil - 1
  1620.       CALL SetOpts (ZFileOpts$,ZInvalidFileOpts$,First,Last)
  1621.       First = ZBegUtil
  1622.       Last = ZBegLibrary - 1
  1623.       CALL SetOpts (ZUtilOpts$,ZInvalidUtilOpts$,First,Last)
  1624.       First = ZBegLibrary
  1625.       Last = ZBegLibrary + 6
  1626.       CALL SetOpts (ZLibOpts$,ZInvalidLibraryOpts$,First,Last)
  1627.       First = 50
  1628.       Last = 56
  1629.       CALL SetOpts (SysOpt$,ZInvalidSysOpts$,First,Last)
  1630.       First = 46
  1631.       Last = 49
  1632.       CALL SetOpts (GlobalOpts$,InvalidGlobalOpts$,First,Last)
  1633.       IF LEN(SysOpt$) > 0 THEN _
  1634.          ZSystemOpts$ = "Sysop: " + _
  1635.                         SysOpt$
  1636.       ZMainOpts$ = GlobalOpts$ + ZMainOpts$ + _
  1637.                    MID$(ZAllOpts$,INSTR(ZOrigCommands$,"G"),1)
  1638.       ZFileOpts$ = GlobalOpts$ + _
  1639.                    ZFileOpts$
  1640.       ZUtilOpts$ = GlobalOpts$ + _
  1641.                    ZUtilOpts$
  1642.       ZLibOpts$ = GlobalOpts$ + _
  1643.                       ZLibOpts$
  1644.       CALL SortString (SysOpt$)
  1645.       CALL SortString (ZMainOpts$)
  1646.       ZMainOpts$ = ZMainOpts$ + _
  1647.                    SysOpt$
  1648.       CALL SortString (ZFileOpts$)
  1649.       CALL SortString (ZUtilOpts$)
  1650.       CALL SortString (ZLibOpts$)
  1651.       CALL AddCommas (ZMainOpts$)
  1652.       CALL AddCommas (ZFileOpts$)
  1653.       CALL AddCommas (ZUtilOpts$)
  1654.       CALL AddCommas (ZLibOpts$)
  1655.       ZDirPrompt$ = "What directory(s) (" + _
  1656. * ------[ first line different ]------
  1657.          MID$("U)pload,A)ll,P)ers,L)ist,E)xtra,[Q]uit)",8 * (ZUserSecLevel => ZMinSecToView) + 9)
  1658.       ZQuitPromptExpert$ = "QUIT C,S, or to F,[M],U"
  1659.       ZQuitPromptNovice$ = "QUIT C)onference, S)ession or to section " + _
  1660.                             "F)ile, [M]ain, U)til"
  1661.       ZQuitList$ = "FMUS@C"
  1662.       IF ZUserSecLevel < ZOptSec(18) THEN _
  1663.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,23) : _
  1664.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,61) : _
  1665.          MID$(ZQuitList$,5) = " "
  1666.       IF ZUserSecLevel < ZOptSec(15) THEN _
  1667.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,22) + _
  1668.                                MID$(ZQuitPromptExpert$,25) : _
  1669.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,56) + _
  1670.                                MID$(ZQuitPromptNovice$,63) : _
  1671.          MID$(ZQuitList$,3,1) = " "
  1672.       IF ZUserSecLevel < ZOptSec(6) THEN _
  1673.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,16) + _
  1674.                                MID$(ZQuitPromptExpert$,19) : _
  1675.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,41) + _
  1676.                                MID$(ZQuitPromptNovice$,49) : _
  1677.          MID$(ZQuitList$,1,1) = " "
  1678.       CALL SetSection
  1679.       END SUB
  1680. * REPLACING old line(s) by new
  1681. 63540 ' Match Name to one in message file
  1682.       SUB ChkMsgName (MsgFromCaller,MsgToCaller) STATIC
  1683. * ------[ first line different ]------
  1684.      IF ZNewUserDGS THEN _                                        'DGS-NEW
  1685.         CALL MsgNameMatch ("NEWUSER",ZActiveUserName$,6,MsgFromCaller) : _      'DGS-NEW
  1686.         CALL MsgNameMatch ("NEWUSER",ZActiveUserName$,37,MsgToCaller) : _       'DGS-NEW
  1687.      Exit Sub
  1688.       IF NOT ZRemoteSysop THEN _
  1689.          WasX$ = LEFT$("SYSOP",-5*ZSysop) : _
  1690.          CALL MsgNameMatch (ZorigUserName$,ZActiveUserName$,6,MsgFromCaller) : _ 'Dgs-ALSMod
  1691.          CALL MsgNameMatch (ZorigUserName$,ZActiveUserName$,37,MsgToCaller)  : _    'Dgs-ALSMod
  1692.          EXIT SUB
  1693.       CALL MsgNameMatch ("SYSOP",ZSysopFullName$,6,MsgFromCaller)
  1694.       IF NOT MsgFromCaller THEN _
  1695.          CALL MsgNameMatch (ZOrigUserName$,"",6,MsgFromCaller)
  1696.       CALL MsgNameMatch ("SYSOP",ZSysopFullName$,37,MsgToCaller)
  1697.       IF NOT MsgToCaller THEN _
  1698.          CALL MsgNameMatch (ZOrigUserName$,"",37,MsgToCaller)
  1699.       END SUB
  1700.       SUB MsgNameMatch (PrimeName$,AltName$,SearchPos,Found) STATIC
  1701.       WasX$ = LEFT$(PrimeName$+"  ",22-8*(SearchPos < 7))
  1702.       GOSUB 63542
  1703.       IF Found OR AltName$ = "" THEN _
  1704.          EXIT SUB
  1705.       WasX$ = LEFT$(AltName$ + "  ",22-8*(SearchPos < 7))
  1706.       GOSUB 63542
  1707.       EXIT SUB
  1708. * REPLACING old line(s) by new
  1709. 63542 WasY$ = MID$(ZMsgRec$,SearchPos,LEN(WasX$))
  1710. * ------[ first line different ]------
  1711.       CALL SmartText(WasY$,ZFalse, OverStrike,ZFalse)   'Pe 02/05/93
  1712.       CALL AllCaps(WasY$)                'SM091908
  1713.       WasY$ = LEFT$(WasY$,LEN(WasX$))            'SM091908
  1714.       ZWasDF = INSTR(WasY$,"@")
  1715.       IF ZWasDF > 0 THEN _
  1716.          MID$(WasY$,ZWasDF) = "      "
  1717.       Found = (WasY$ = WasX$)
  1718.       RETURN
  1719.       END SUB
  1720. * REPLACING old line(s) by new
  1721. 63560 ' Set specified user flag
  1722.       SUB SetUserFlag (RcvrRecNum, ChangeIndex, WhatGetting$) STATIC
  1723.       FIELD #5, 128 AS ZUserRecord$
  1724.       IF RcvrRecNum > 0 THEN _
  1725.          ZUserFileIndex = RcvrRecNum : _
  1726.          ZSubParm = 6 : _
  1727.          CALL FileLock : _
  1728.          GET 5, RcvrRecNum : _
  1729.          WasX = CVI(MID$(ZUserRecord$,57,2)) : _
  1730.          MID$(ZUserRecord$,57,2) = MKI$(WasX OR ChangeIndex) : _
  1731.          PUT 5, RcvrRecNum : _
  1732.          ZSubParm = 8 : _
  1733.          CALL FileLock : _
  1734. * ------[ first line different ]------
  1735.          Call GetRBBSString(198,RBBSString$) : _      'Pe 01/16/93
  1736.           OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1737.          CALL QuickTPut1 (ZWorkAra$(1) + OutTxt$ + " " + WhatGetting$) : _
  1738.          RcvrRecNum = 0
  1739.       END SUB
  1740. * REPLACING old line(s) by new
  1741. 63615 ' * Sets up next message base link *
  1742.       SUB NextConf (DoJoin) STATIC
  1743.       IF ZLinkedConf$ = "" OR (NOT DoJoin) THEN _
  1744.          EXIT SUB
  1745.       EndConf = INSTR(ZLinkedConf$,ZCarriageReturn$)
  1746.       ZHomeConf$ = LEFT$(ZLinkedConf$,EndConf-1)
  1747.       IF ZNonStop THEN _
  1748. * ------[ first line different ]------
  1749.             Call GetRBBSString(199,RBBSString$) : _      'Pe 01/16/93
  1750.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1751.          CALL QuickTPut1 (OutTxt$ + " " + ZHomeConf$) _
  1752.       ELSE _
  1753.         Call GetRBBSString(200,RBBSString$) : _      'Pe 01/16/93
  1754.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1755.          ZOutTxt$ = OutTxt$ + " " + ZHomeConf$ + " ([Y],N)" : _
  1756.          ZTurboKey = -ZTurboKeyUser : _
  1757.          ZSubParm = 1 : _
  1758.          CALL TGet : _
  1759.          IF ZNo THEN _
  1760.             ZHomeConf$ = "" : _
  1761.             ZGlobalRead = ZFalse : _
  1762.             EXIT SUB
  1763.       ZLinkedConf$ = RIGHT$(ZLinkedConf$,LEN(ZLinkedConf$)-EndConf)
  1764.       END SUB
  1765. * REPLACING old line(s) by new
  1766. 63625 ' * Sets SysOp security variables Formerly 5370 of rbbs-pc.bas
  1767.       ' * Returns ZWasA true when remote or global sysop
  1768.       SUB SetSysOp STATIC
  1769.       ZRemoteSysop = ((ZActiveUserName$ = ZSecretName$) OR _
  1770. * ------[ first line different ]------
  1771.                       (ZOrigUserName$ = ZSecretName$)) _
  1772.       OR _
  1773.       (ZActivUserName$ ="SYSOP")     'LK 12/05/91
  1774.       ZWasA = ZRemoteSysop
  1775.       ZGlobalSysop = (ZGlobalSysop OR (ZWasA AND ZOrigCnfg$ = ZConfigFileName$))
  1776.       IF ZGlobalSysop THEN _
  1777.          ZWasA = ZTrue
  1778.       END SUB
  1779. * REPLACING old line(s) by new
  1780. 63630 ' * Sets the user preferences based on user record.
  1781.       ' * Formerly in RBBS-PC.BAS
  1782.       SUB SetUserPref STATIC
  1783.       IF ZWasA THEN _
  1784.          ZUserSecLevel = ZSysopSecLevel _
  1785.       ELSE ZUserSecLevel = CVI(ZSecLevel$)
  1786.       ZBankTime = ASC(ZBankTime$)
  1787.       ZLastMsgRead = CVI(MID$(ZUserOption$,3,2))
  1788.       ZUserXferDefault$ = MID$(ZUserOption$,5,1)
  1789.       IF ZUserXferDefault$ = " " THEN _
  1790.          ZUserXferDefault$ = "N"
  1791.       CALL XferType (2,ZTrue)
  1792.       WasX = ASC(MID$(ZUserOption$,6,1))
  1793.       ZWasGR = (WasX MOD 3)
  1794.       ZBoldText$ = CHR$(48 - (WasX > 50))
  1795.       ZUserTextColor = (WasX - ZWasGR)/3 + 21
  1796.       IF ZUserTextColor > 37 THEN _
  1797.          ZUserTextColor = ZUserTextColor - 7
  1798.       IF ZEmphasizeOff$ <> "" THEN _
  1799.          CALL QuickTPut (ZColorReset$,0)
  1800.       IF ZEmphasizeOnDef$ <> "" THEN _
  1801.          ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m" _
  1802.       ELSE ZEmphasizeOff$ = ""
  1803.       IF ZWasGR = 1 AND NOT ZEightBit THEN _
  1804.          ZWasGR = 0
  1805.       CALL SetGraphic (ZWasGR)
  1806.       ZRightMargin = CVI(MID$(ZUserOption$,7,2))
  1807.       IF ZRightMargin > 72 THEN _
  1808.          ZRightMargin = 72
  1809. * ------[ first line different ]------
  1810.            IF NOT ZConfMode THEN _
  1811.          ZWasCI$ = ZCityState$ : _
  1812.       CALL Trim (ZWasCI$)
  1813.       UserOptions = CVI(MID$(ZUserOption$,9,2))
  1814.       ZPromptBell = (UserOptions AND 1) > 0
  1815.       ZExpertUser = (UserOptions AND 2) > 0
  1816.       CALL SetExpert
  1817.       ZNulls = (UserOptions AND 4) > 0
  1818.       ZUpperCase = (UserOptions AND 8) > 0
  1819.       ZLineFeeds = (UserOptions AND 16) > 0
  1820.       ZCheckBulletLogon = (UserOptions AND 32) > 0
  1821.       ZSkipFilesLogon = (UserOptions AND 64) > 0
  1822.       ZFullScreenEditor = (UserOptions AND 128) > 0    'Pe 09/02/91
  1823.       ZReqQuesAnswered = (UserOptions AND 256) > 0
  1824.       ZMailWaiting = (UserOptions AND 512) > 0
  1825.       WasX = (UserOptions AND 1024 ) > 0
  1826.       CALL SetHiLite (NOT WasX)
  1827.       IF NOT ZHiLiteOff THEN _
  1828.          CALL QuickTPut (ZEmphasizeOff$,0)
  1829.       ZTurboKeyUser = (UserOptions AND 2048) > 0
  1830.       ZTurboKey = ZFalse
  1831.       ZFileWaiting = (UserOptions AND 4096) > 0
  1832.             REM ** Change to:                                      **
  1833.       REM ** ZAvailableForChat = (UserOptions AND 8192) = 0 **   'Rchat-Mpl
  1834.       REM ** If you want availability to be default ON       **
  1835.  
  1836.       ZAvailableForChat = (UserOptions AND 8192) > 0           ' RCHAT-Mpl
  1837.       CALL SetRegDisplay
  1838.       ZPageLength = ASC(MID$(ZUserOption$,13,1))
  1839.       IF ZSubBoard THEN _
  1840.          GOTO 63632
  1841.       WasX$ = ZEchoer$
  1842.       ZEchoer$ = MID$(ZUserOption$,14,1)
  1843.       IF INSTR("ICR",ZEchoer$) = 0 THEN _
  1844.          ZEchoer$ = "R"
  1845.       IF WasX$ <> ZEchoer$ THEN _
  1846.          CALL ReportEcho
  1847.       CALL SetEcho (ZEchoer$)
  1848. * REPLACING old line(s) by new
  1849. 63635 ' * Reports who is doing echoing.  Formerly 9525 of rbbs-pc.bas
  1850.       SUB ReportEcho STATIC
  1851.       IF ZEchoer$ = "R" THEN _
  1852.          ZOutTxt$ =  "RBBS now set" _
  1853.       ELSE IF ZEchoer$ = "C" THEN _
  1854. * ------[ first line different ]------
  1855.             Call GetRBBSString(201,RBBSString$) : _      'Pe 01/16/93
  1856.             ZOutTxt$ = RBBSString$  _                'Pe 01/16/93
  1857.            ELSE  Call GetRBBSString(202,RBBSString$) : _      'Pe 01/16/93
  1858.            ZOutTxt$ = RBBSString$                      'Pe 01/16/93
  1859.         Call GetRBBSString(203,RBBSString$)       'Pe 01/16/93
  1860.             OutTxt$ = RBBSString$                 'Pe 01/16/93
  1861.       CALL QuickTPut1 (ZOutTxt$ + OutTxt$)
  1862.       END SUB
  1863. * REPLACING old line(s) by new
  1864. 63640 ' * Welcomes caller on
  1865. * ------[ first line different ]------
  1866.       SUB SayWelcome (anystring$,FF) STATIC   'Pe 08/01/92
  1867.       On FF Goto 63641,63643,63644       'Pe 08/01/92
  1868. * INSERTING new line(s)
  1869. 63641 LOCATE 24,1                  'Pe 08/01/92
  1870.       CALL AMorPM
  1871.       ZUserLogonTime! = TIMER
  1872.       ZTimeLoggedOn$ = TIME$
  1873.       ZLinesPrinted = 0
  1874.       ZExpertUser = ZFalse
  1875.       CALL SetExpert
  1876.       ZOutTxt$ = ""
  1877.       IF ZMaxNodes > 1 THEN _
  1878.          ZOutTxt$ = " - Node " + ZNodeID$
  1879.       IF ZReliableMode THEN _
  1880.          ZOutTxt$ = ZOutTxt$ + " (Reliable)"
  1881. '     Call DelayTime (7)  'delay 7 seconds for high speed modems 'JK11/18/92
  1882. '      CALL QuickTPut1 ("Welcome to " + ZRBBSName$ + ZOutTxt$)  'Pe 06/26/92
  1883.       CALL TestANSI
  1884.       ZTestParity = ZTrue
  1885.       ZStopInterrupts = ZTrue
  1886.       ZFileName$ = ZPreLog$
  1887.       CALL FlushCom (WasX$)
  1888.       ZCommPortStack$ = ""
  1889. Exit Sub                         'Pe 08/01/92
  1890.  
  1891. 63643 IF NOT ZNewUser THEN _
  1892.      CALL QuickTPut1 (ZFG1$ +"Times on   :" + STR$(ZTimesLoggedOn) + ZCrLf$ +_
  1893.                       + ZFG2$ +"Last on was: " + anystring$ + ZEmphasizeOff$)
  1894.  IF ZRemindFileXfers OR NOT ZNewUser THEN _
  1895.        CALL CheckRatio (ZFalse)
  1896. Exit Sub
  1897.  
  1898. 63644 CALL QuickTPut1 (ZFG1$+"Logging " + ZActiveUserName$)
  1899.     Temp1$ =  MID$(ZBaudParity$,INSTR(ZBaudParity$," B"))
  1900. CALL QuickTPut1 (ZFG2$ + "RBBS-PC " + ZVersionID$ + ZCrLf$ + _
  1901.                  ZFG3$ + "Node " + ZNodeID$)
  1902. Call QuickTput1 (ZFG4$ + "Line speed " + ZCBaud$ + temp1$+ZFG1$ +_ 
  1903.                 ", Host operating at " + ZModemInitBaud$ + temp1$ + ZEmphziseOff$)
  1904. '                     ", Host operating at " + anystring$+ ZEmphziseOff$)
  1905. Call SkipLine (1) 
  1906.     IF ZMaxNodes > 1 THEN                                        ' CHAT0805
  1907.        CALL LogNewForChat (ZMaxNodes)                            ' CHAT0805
  1908.     END IF                                                       ' CHAT0805
  1909.  
  1910.       END SUB
  1911.  
  1912. * REPLACING old line(s) by new
  1913. 63656 CALL GetPassword
  1914.       IF ZErrCode <> 0 THEN _
  1915.          CALL UpdtCalr (ZPswdFile$ + " bad format!",2) : _
  1916.          GOTO 63659
  1917.       IF MatchPass THEN _
  1918.          ZTempPassword$ = LEFT$(ZTempPassword$ + SPACE$(15),15) : _
  1919.          IF MatchPass$ <> ZTempPassword$ THEN _
  1920.             GOTO 63654 _
  1921.          ELSE IF ZUserSecLevel >= ZMinSecForTempPswd THEN _
  1922.                  GOTO 63658 _
  1923.               ELSE GOTO 63654
  1924. * ------[ first line different ]------
  1925.    IF ZUserSecLevel <> ZTempSecLevel OR ZTempPassword$ <> "" THEN _
  1926.          GOTO 63654
  1927.       IF ZStartTime = 0 THEN _
  1928.          GOTO 63658
  1929.       WorkTime$ = TIME$
  1930.       TestTime = VAL(LEFT$(WorkTime$,2) + MID$(WorkTime$,4,2))
  1931.       IF TestTime => ZStartTime AND TestTime <= ZEndTime THEN _
  1932.          GOTO 63658
  1933.       IF ZEndTime < ZStartTime THEN _
  1934.          IF TestTime => ZStartTime OR TestTime <= ZEndTime THEN _
  1935.             GOTO 63658
  1936.       GOTO 63654
  1937. * REPLACING old line(s) by new
  1938. 63675 SUB SetUserUpDn STATIC
  1939.       ZDnlds = CVI(ZUserDnlds$)
  1940.       ZUplds = CVI(ZUserUplds$)
  1941.       ZBankTime = ASC(ZBankTime$)
  1942.       IF ZEnforceRatios THEN _
  1943.          ZDLToday! = CVS(ZTodayDl$) : _
  1944.          ZBytesToday! = CVS(ZTodayBytes$) : _
  1945.          ZDLBytes! = CVS(ZDlBytes$) : _
  1946.          ZULBytes! = CVS(ZULBytes$)
  1947.       END SUB
  1948.       SUB SetGlobalUpDn STATIC
  1949.       IF NOT ZGlobalsSet THEN _
  1950.          ZGlobalsSet = ZTrue : _
  1951.          ZGlobalDnlds = ZDnlds : _
  1952.          ZGlobalUplds = ZUplds : _
  1953.          ZGlobalDLToday! = ZDLToday! : _
  1954.          ZGlobalBytesToday! = ZBytesToday! : _
  1955.          ZGlobalDLBytes! = ZDLBytes! : _
  1956.          ZGlobalULBytes! = ZULBytes! : _
  1957.          ZGlobalBankTime = ZBankTime
  1958.       END SUB
  1959. * ------[ first line different ]------
  1960. '
  1961. * REPLACING old line(s) by new
  1962. 63700 ' $SUBTITLE: 'TestANSI - test caller for ANSI support'
  1963. ' $PAGE
  1964. '
  1965. '  NAME    -- TestANSI
  1966. '                                  MEANING
  1967. '  INPUTS  -- ZTestANSITime   # of seconds to wait for ANSI response
  1968. '                             0 = do not test for ANSI
  1969. '
  1970. * ------[ first line different ]------
  1971. '  OUTPUTS -- ZCanANSIChat      = ZTrue if ANSIChat possible         ' DD071301/CHAT
  1972. '
  1973. '  PURPOSE -- Test callers' software for support of ANSI graphics
  1974. '
  1975.       SUB TestANSI STATIC
  1976.       IF ZTestANSITime < 1 THEN _
  1977.          GOTO 63705
  1978.       IF ZLocalUser THEN _
  1979.          IF ZDOSAnsi THEN _
  1980.             GOTO 63710 _
  1981.          ELSE GOTO 63705
  1982.         Call GetRBBSString(204,RBBSString$)      'Pe 01/16/93
  1983.         OutTxt$ = RBBSString$                'Pe 01/16/93
  1984.       CALL QuickTPut (OutTxt$ ,2)
  1985.       CALL FlushCom(Temp$)
  1986.       CALL PutCom (ZEscape$ + "[6n")
  1987.       CALL DelayTime(ZTestANSITime)
  1988.       CALL WipeLine (5)
  1989.       CALL FlushCom(Temp$)
  1990.       CALL WipeLine (5)
  1991.       Temp = INSTR(Temp$,ZEscape$ + "[")
  1992.       IF Temp > 0 THEN _
  1993.          Temp = INSTR(Temp,Temp$,"R") : _
  1994.          IF TEMP > 0 AND TEMP < 9 THEN _
  1995.             GOTO 63710
  1996. * REPLACING old line(s) by new
  1997. 63710 CALL SetGraphic(2)
  1998.       ZHiLiteOff = ZFalse
  1999. * ------[ first line different ]------
  2000.      CALL QuickTPut1 ("*ANSI Color  Detected*")
  2001.       IF ZDOSANSI THEN _
  2002.          ZCanANSIChat = ZTrue        ' DD071301/CHAT
  2003.       END SUB
  2004. * REPLACING old line(s) by new
  2005. 63720 SUB AraAllCaps (Ara$(1),WhichElement) STATIC
  2006.       Temp$ = Ara$(WhichElement)
  2007.       CALL AllCaps (Temp$)
  2008.       Ara$(WhichElement) = Temp$
  2009.       END SUB
  2010. * ------[ first line different ]------
  2011. '
  2012. '******************** INSERTED AutoLogoff here ******************
  2013. '
  2014. ' $SUBTITLE: 'AutoLogOff - Subroutine to  to log off after transfer'
  2015. ' $PAGE
  2016. '
  2017.   SUB AutoLogOff STATIC
  2018.  ZAutoEnd = 0
  2019.  ZAbort = ZFalse    'Pe 01/19/92
  2020.   IF ZGetExtDesc = ZTrue or ZOK = ZFalse or ZAutoLogOffReq = ZTrue THEN _
  2021.     EXIT SUB
  2022.  ZSubParm = 1
  2023. ZStackC = ZTrue    'Pe 12/21/91
  2024. * INSERTING new line(s)
  2025. 64989  ZStopInterrupts = ZTrue   'Pe 04/17/92
  2026. CALL BufFile(ZHelpPath$+"AUTOOFF.MNU",X)     ' MO 04/13/92
  2027. '      ZOutTxt$ = " C)ontinue with transfer " + ZCrLf$ + _
  2028. '                 " A)bort transfer - Cancel"+ ZCrLf$ + _
  2029. '                 " G)o ahead LOG-OFF after Transfer " + ZCrLf$ + _
  2030. '                 ZCrLf$ + "Press [Enter] to continue or select (C,A,G)->"
  2031. ZStopInterrupts = ZFalse    'Pe 04/17/92
  2032. ZOutTxt$ = "Select ([C],A,G) "
  2033.         ZTurboKey = -ZTurboKeyUser
  2034.       ZSubParm = 1
  2035.       Call TGet
  2036.       CALL AllCaps (ZUserIn$)
  2037.       WasMplx = INSTR("CAG",ZUserIn$)
  2038.       CALL Carrier                      'Pe 03/06/92
  2039.       IF ZSubParm = -1 THEN _           'Pe 03/06/92
  2040.       ZFileSysParm = 7 : _              'Pe 03/06/92
  2041.       EXIT SUB                          'Pe 03/06/92
  2042. IF ZUserIn$ = "" or ZUserIn$ = " " Then _
  2043.       GOTO 64995
  2044.    ON WasMplx GOTO 64995,64990,64998
  2045.       GOTO 64989
  2046. 64990 ZAutoEnd = 2
  2047.       Call Skipline (2)
  2048.       EXIT SUB
  2049. 64995 ZAutoEnd = 3
  2050.       Call Skipline (2)
  2051.       EXIT SUB
  2052. 64998 ZAutoEnd = 1
  2053.       ZAutoLogoffReq = ZTrue     'Pe 12/20/92
  2054.       Call SkipLine (2)
  2055.       END SUB
  2056. '
  2057. ' ****  S - COMMAND FROM UTILITY MENU (STATISTICS)  ***  'Pe 09/02/91
  2058. '
  2059. SUB Statistics (CallsToDate!,ActiveMessages,HighMsgNumber,HighestMsgRecord,CurUserCount,MaxMsgs) STATIC
  2060.       ActionFlag = ZTrue
  2061.       IF ZActiveMessageFile$ = ZPrevBase$ THEN _
  2062.         ActionFlag = ZFalse
  2063.      CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$)
  2064.      ZOutTxt$ = ""
  2065.      IF NOT ZConfMode THEN _
  2066.            ZOutTxt$ = "Caller Number................"+STR$(CallsToDate!) + "  "+ZCrLf$
  2067. ZOutTxt$ = ZOutTxt$ + "Active Messages.............."+STR$(ActiveMessages)+ZCrLf$
  2068. ZOutTxt$ = ZOutTxt$ + "Next Msg Number.............."+STR$(HighMsgNumber + 1)+ZCrLf$
  2069.      IF ZLastMsgRead > 0 THEN _
  2070.      ZOutTxt$ = ZOutTxt$ + "Last msg you read............" + STR$(ZLastMsgRead)+ZCrLf$ _
  2071.      ELSE ZOutTxt$ = ZOutTxt$ + "You Have NOT Read Any Messages Yet !" +ZCrLf$ : _
  2072.      ZNewUserDgs = Ztrue
  2073.      ZSubParm = 2
  2074.      CALL TPut
  2075. IF ZSubParm < 0 THEN _
  2076.          EXIT SUB
  2077.     ZWasZ$ = ZUpldDriveFile$
  2078.      CALL FindFree
  2079.      CALL QuickTPut1 ("Upload disk has" + ZFreeSpace$)
  2080.      CALL QuickTPut1 ( "String Space = "+  (STR$(FRE("A")) + " bytes")) 'Pe 08/01/92
  2081.      CALL QuickTPut1 ( "StackSpace = "+  (STR$(FRE(-2)) + " bytes")) 'Pe 05/10/92
  2082. '   CALL LPrnt("Free Common String Space ="+ (STR$(FRE(ZWASZ$))),1) 'Bcfs Mods
  2083. '   CALL LPrnt("Free Local String Space ="+ (STR$(FRE(WASZ$))),1)   'Bcfs Mods
  2084. '   CALL LPrnt("Free Far Space ="+ (STR$(FRE(-1))),1)               'Bcfs mods
  2085.  
  2086.      IF (NOT ZSysop) AND (ZUserSecLevel < ZSecKillAny) THEN _
  2087.       CALL Delaytime (2) : _
  2088.         EXIT SUB
  2089.      UserWork = (ZHighestUserRecord * .95) + 1
  2090.      IF ZMsgsCanGrow THEN _
  2091.         ZWasY$ = " open" _
  2092.      ELSE ZWasY$ = STR$(HighestMsgRecord + 1 - ZMaxNodes - ZNextMsgRec)
  2093.      ZOutTxt$ = "USERS: used" + _
  2094.           STR$(CurUserCount - 1) + _
  2095.           " avl" + _
  2096.           STR$(UserWork - CurUserCount) + _
  2097.           "  MSGS: used" + _
  2098.           STR$(ActiveMessages) + _
  2099.           " avl" + _
  2100.           STR$(MaxMsgs - ActiveMessages) + _
  2101.           "  MSG REC: used" + _
  2102.           STR$(ZNextMsgRec - 1) + _
  2103.           " avl" + ZWasY$
  2104.      ZSubParm = 2
  2105.      CALL TPut
  2106. IF ZSubParm < 0 THEN _
  2107.    EXIT SUB
  2108. CALL DelayTime (2)
  2109. END SUB
  2110. '********************************************************************
  2111. '
  2112. SUB ShowUsrProfile STATIC
  2113.  CALL QuickTPut (CHR$(12),0) ' to clear screen
  2114. WasX$ =  "USER NAME : " + ZActiveUserName$ + ZCrLF$ + _
  2115.          "SECURITY  :" + STR$(ZUserSecSave) + ZCrLf$ + _
  2116.          "PASSWORD  : " + ZPswdSave$ + ZCrLF$ + _
  2117.          "READ MSG. :" + STR$(ZLastMsgRead)
  2118. Call QuickTput1 (WasX$)
  2119. WasX$ =  "TIMES ON  :" + STR$(ZTimesLoggedOn) +ZCrLF$ + _
  2120.          "Last ON   : " + ZLastDateTimeOnSave$ +ZCRLF$ + _
  2121.          "DownLoads :" + STR$(ZDnlds)                            'Pe 07/09/92 
  2122. Call QuickTput1 (WasX$)
  2123. WasX$ =  "Uploads   :" + STR$(ZUplds)+ ZCrLf$ + _                'Pe 06/01/92
  2124.          "Baud Rate : " + ZCBaud$ + " Bps"                       'Pe 06/01/92
  2125. Call QuickTPut1 (WasX$)
  2126. WasX$ = "Dl-Bytes  :" + STR$(ZDLBytes!)+ZCrLF$ + _
  2127.         "Ul-Bytes  :" + STR$(ZULBytes!)                          'Pe 07/09/92
  2128. Call QuickTput1 (WasX$)
  2129. WasX$ = "User mode : " + MID$("NoviceExpert",1 -6 * ZExpertUser,6) +ZCrLf$ +_
  2130.         "Graphics  : " + MID$("None AsciiColor",GR * 5 + 1,5)
  2131. Call QuickTput1 (WasX$)
  2132. WasX$ = "Protocol  : " + ZUserXferDefault$ + ZCrLF$ + _
  2133.         "Upper Case: " + MID$("and lowerONLY", 1 - 9 * ZUpperCase,9)+ZCrLf$ + _
  2134.         "Line Feeds: " + FNOFFON$(ZLineFeeds)+ ZCrLF$ + _                 'Pe 07/11/92
  2135.         "Nulls     : " + FNOFFON$(ZNulls)
  2136. Call QuickTPut1 (WasX$)
  2137.       IF ZRestrictByDate THEN _
  2138.      CALL QuickTPut ("EXPIRATION: " + ZExpirationDate$,1)
  2139.      CALL Toggle (-8)
  2140.      CALL Toggle (-5)
  2141.      CALL Toggle (-10)
  2142.      CALL Toggle (-2)
  2143.      CALL Toggle (-4)
  2144.      CALL Toggle (-1)
  2145.      CALL Toggle(-11)                                                ' RCHAT
  2146. CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  2147. END SUB
  2148. '********************************************************************
  2149. '
  2150. SUB BatchUpload (ZDesc$,ZUCat$,WasFF) STATIC
  2151. On WasFF GOTO 69000, 69500
  2152. 69000    CALL OpenWorkA ("BatchUp" +ZNodeID$ +".LST")
  2153.          Call PrintWorkA (ZFileName$)
  2154.          CALL PrintWorkA (ZFileNameHold$)
  2155.          CALL PrintWorkA (ZDesc$)
  2156.          CALL PrintWorkA (ZUcat$)
  2157.         Close 2
  2158.      CALL OpenWorkA (ZBatchWorkFile$) 
  2159.        CALL PrintWorkA (ZFileName$)
  2160.      Close 2
  2161. IF ZAnsindex = ZLastIndex THEN 
  2162.       ZUpBatchTransfer = ZFalse
  2163.       ZWasBatchTransfer = ZTrue
  2164.   End IF
  2165. Exit Sub
  2166. '
  2167. '
  2168. 69500 CALL KillWork (ZBatchWorkFile$)
  2169.       ZErrCode = 0
  2170.     Temp$ = "BatchUp" + ZNodeid$ + ".LST"
  2171.       CALL OpenWork (8,Temp$)
  2172.          While Not EOF(8)
  2173.        Line Input #8,ZFileName$
  2174.        Line Input #8,ZFileNameHold$
  2175.        Line Input #8,ZDesc$
  2176.        Line Input #8,ZUCat$
  2177.         Call Findit (ZFileName$)
  2178.     IF ZOK THEN _
  2179.       CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(), ZLinesInMsg,2) _
  2180.         Else CALL UpdtCalr (ZFileNameHold$ + " ABORTED during BatchUL",2) 
  2181.           ZWasBatchTransfer = ZFalse                  'Pe 09/12/91
  2182.          ZAlreadyGiven = ZTrue
  2183.        Wend
  2184.      Close 8
  2185. End Sub
  2186.  
  2187. 69600 ' $SUBTITLE: 'BATCHIT - subroutine to list files for batch downloading'
  2188. ' $PAGE
  2189. '
  2190.  SUB BATCHIT STATIC
  2191.       CALL PutCom (CHR$(7))
  2192.         Call GetRBBSString(205,RBBSString$) : _      'Pe 01/16/93
  2193.         OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  2194.       CALL QuickTPUT (OutTxt$,1)
  2195.        ZWasB=1
  2196.        FOR BatchF = 2 TO 25
  2197.         ZOutTxt$ = "Name of file #" + STR$(Batchf-1)
  2198.         Call TGet
  2199.          IF ZUserIn$ = "" THEN GOTO 70415
  2200.           ZUserIn$(BatchF) = ZUserIn$
  2201.           ZAnsIndex = BatchF+1
  2202.         NEXT BatchF
  2203. 70415 BatchF =  BatchF-1
  2204.       ZLastIndex = BatchF
  2205.         End Sub
  2206. '
  2207. ' $SUBTITLE: 'TStat --- Display Transfer Stats from Xfer-? file'
  2208. ' $PAGE
  2209. '
  2210.       SUB TStats STATIC                                              ' MplXfer
  2211.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")                  ' MplXfer
  2212.       IF ZErrCode <> 0 THEN _
  2213.        Exit Sub                                                    'Pe 06/01/92
  2214.       CALL SkipLine (2)                                              ' MplXfer
  2215.       Call GetRBBSString(206,RBBSString$)      'Pe 01/16/93
  2216.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  2217.       CALL QuickTPut (ZFG2$ + OutTxt$,2)
  2218.         Call GetRBBSString(207,RBBSString$)      'Pe 01/16/93
  2219.             OutTxt$ = RBBSString$               'Pe 01/16/93
  2220.       CALL QuickTPut1 (ZFG4$ + OutTxt$)
  2221.         Call GetRBBSString(208,RBBSString$)      'Pe 01/16/93
  2222.             OutTxt$ = RBBSString$               'Pe 01/16/93
  2223. Call QuickTput1 (ZFG3$ +OutTxt$ + ZEmphasizeOff$) ' MplXfer
  2224.       WHILE NOT EOF(2)                                               ' MplXfer
  2225.         LINE INPUT #2,Stat$                                          ' MplXfer
  2226.         WasS = INSTR(Stat$,"rs ")                                    ' MplXfer
  2227.         IF WasS > 0 THEN _                                           ' MplXfer
  2228.            WasX$ = MID$(Stat$, 2, WasS)                              ' MplXfer
  2229.         Match = INSTR(Stat$, ".")                                    ' MplXfer
  2230.         IF Match > 0 THEN _                                          ' MplXfer
  2231.            WasZyX$ = MID$(Stat$, Match - 8, 12)                      ' MplXfer
  2232.         Match = 0                                                    ' MplXfer
  2233.         Start = 1                                                    ' MplXfer
  2234.         DO                                                           ' MplXfer
  2235.           Match = INSTR(Start, WasZyX$, "\")                         ' MplXfer
  2236.           IF Match > 0 THEN _                                        ' MplXfer
  2237.              WasZyX$ = RIGHT$(WasZyX$, LEN(WasZyX$) - Match)         ' MplXfer
  2238.         LOOP WHILE Match                                             ' MplXfer
  2239.         Match = 0                                                    ' MplXfer
  2240.         Start = 1                                                    ' MplXfer
  2241.         DO                                                           ' MplXfer
  2242.           Match = INSTR(Start, WasZyX$, " ")                         ' MplXfer
  2243.           IF Match > 0 THEN _                                        ' MplXfer
  2244.              WasZyX$ = RIGHT$(WasZyX$, LEN(WasZyX$) - Match)         ' MplXfer
  2245.         LOOP WHILE Match                                             ' MplXfer
  2246.         WasXy = LEN(WasZyX$)                                         ' MplXfer
  2247.  
  2248.       IF ZErrCode <> 0 THEN _
  2249.        Exit Sub                                                    'Pe 06/01/92
  2250.  
  2251.      CALL QuickTPut1 (ZFG1$ + WasZyX$ + SPACE$(15-WasXy) + WasX$ + ZEmphasizeOff$) ' MplXfer
  2252.       WEND                                                           ' MplXfer
  2253.       CALL SkipLine (1)                                              ' MplXfer
  2254.       CLOSE 2                                                        ' MplXfer
  2255.       CALL DelayTime (3)                                             ' MplXfer
  2256.       END SUB                                                        ' MplXfer
  2257. '
  2258. ' $SUBTITLE: 'ShowBull --- Intitial Welcom screen displayed'
  2259. ' $PAGE
  2260. '
  2261.  Sub ShowBull (UsrSecLevel$) STATIC   'Pe 07/23/92
  2262. 71525 CALL SkipLine (2)
  2263.      WasX$ = ZFG1$+"Review System Screens Available:" + ZCrLf$ + _
  2264.              ZFG4$+"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  2265. Call QuickTPut (WasX$,2)
  2266.      WasX$ = ZFG2$+"P)relog Screen"+ZCrLf$ + _
  2267.              ZFG3$+"W)elcome Screen" + ZCrLf$ + _
  2268.              ZFG4$+"O)nline News Screens"
  2269. Call QuickTPut (WasX$,1)
  2270.     WasX$ = ZFG1$+"Y)our Access Level" +ZCrLf$ + _
  2271.             ZFG2$+"N)ew User Sign-On" + ZCrLf$ + _
  2272.                   "[Q]uit"+ZEmphasizeOff$
  2273. Call QuickTPut (WasX$,2)
  2274. ZOutTxt$ = "Please make a Selection (P,W,O,Y,N,[Q]) "
  2275.         GOSUB 72999                     'Pe 04/25/92
  2276.         CALL AllCaps (ZUserIn$)
  2277.         WasMplX = INSTR("PWOYNQ",ZUserIn$)
  2278.         IF ZUserIn$ = "" THEN _
  2279.            GOTO 71596
  2280.     ON WasMplX GOTO 71530,71533,71536,71539,71541,71596
  2281. 71530 ZFileName$ = ZPreLog$
  2282.      GOTO 71550
  2283. 71533 ' ZFileName$ = ZWelcomeFile$
  2284.           CALL Displaywelcome
  2285.           Goto 71525
  2286.    '     GOTO 71550  
  2287. 71536 ZFileName$ = ZNewsFileName$
  2288.      GOTO 71550
  2289. 71539 ZFileName$ = ZWelcomeFileDrvPath$ + _      'Pe 07/19/92
  2290.                  "LG" + _
  2291.                  UsrSecLevel$ + _                'Pe 07/23/92
  2292.                  ".DEF"                          'Pe 06/01/92
  2293.      GOTO 71550
  2294. 71541 ZFileName$ = ZNewUserFile$
  2295. 71550 GOSUB 71790
  2296.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  2297.      GOTO 71525
  2298. 71596 ZFileSysParm = 1
  2299.        Exit Sub
  2300. '
  2301. 71790 CALL Graphic (ZFileName$)
  2302.      CALL BufFile (ZFileName$,WasX)
  2303.      CALL Carrier
  2304.      IF ZSubParm = -1 THEN _
  2305.         ZFileSysParm = 7 : _
  2306.         Exit Sub
  2307.      RETURN
  2308.  
  2309. 72995 GOSUB 72997
  2310.       ZSubParm = 1
  2311. 72996 CALL TGet
  2312. 72997 IF ZSubParm < 0 THEN _
  2313.       ZFileSysParm = 7 :_
  2314.          Exit Sub
  2315.       RETURN
  2316. 72998 ZOutTxt$ = ZOutTxt$ + _
  2317.            ZPressEnter$
  2318.       GOTO 72995
  2319. 72999 ZTurboKey = -ZTurboKeyUser
  2320.       GOTO 72995
  2321. End Sub
  2322. '
  2323. 78150   SUB DisplayWelcome STATIC
  2324. '
  2325.        ZStopInterrupts = NOT ZWelcomeInterruptable                   ' DD011601
  2326.        ZBypassTimeCheck = ZTrue                                      ' DD011601
  2327.        ZFileName$ = ZWelcomeFile$ + ".LST"                           ' DD011601
  2328.        CALL FindIt (ZFileName$)                                      ' DD011601
  2329.        IF ZOK THEN                                                   ' DD011601
  2330.           CALL OpenWork (7, ZFileName$)                              ' DD011601
  2331.           WHILE NOT EOF(7)                                           ' DD011601
  2332.              CALL ReadDir (7,1)                                      ' DD011601
  2333.              ZFileName$ = ZOutTxt$                                   ' DD011601
  2334.              ZStopInterrupts = NOT ZWelcomeInterruptable             ' DD011601
  2335.              ZBypassTimeCheck = ZTrue                                ' DD011601
  2336.              ZDisplayAsUnit = ZTrue                                  ' DD011601
  2337.              GOSUB 78160                                               ' DD011601
  2338.           WEND                                                       ' DD011601
  2339.           CLOSE 7                                                    ' DD011601
  2340.        ELSE                                                          ' DD011601
  2341.           ZFileName$ = ZWelcomeFile$                                 ' DD011601
  2342.           ZDisplayAsUnit = ZTrue                                     ' DD011601
  2343.           GOSUB 78160                                                ' DD011601
  2344.        END IF                                                        ' DD011601
  2345.        ZDisplayAsUnit = ZFalse                                       ' DD011601
  2346.        EXIT SUB                                                      ' DD011601
  2347. 78160  CALL Graphic (ZFileName$)                                     ' DD011601
  2348.        CALL BufFile (ZFileName$,WasX)                                ' DD011601
  2349.        CALL Carrier                                                  ' DD011601
  2350.        IF ZSubParm = -1 THEN _                                       ' DD011601
  2351.           EXIT SUB                                                   ' DD011601
  2352.        RETURN                                                        ' DD011601
  2353.        END SUB                                                       ' DD011601
  2354. '
  2355. ' $SUBTITLE: 'Line108 --- was line 108 in RBBS-PC.BAS'
  2356. ' $PAGE
  2357. '
  2358.  Sub line108 STATIC   'Pe 07/23/92
  2359.  
  2360.  CALL BreakFileName (ZCallersFile$,Drive$,WasX$,ZWasY$,ZTrue)
  2361.     ZCallersFilePrefix$ = WasX$
  2362.     ZNodeWorkDrvPath$ = Drive$
  2363.     ZArcWork$ = ZNodeWorkDrvPath$ + _
  2364.                 "ARCWORK" + _
  2365.                 ZNodeFileID$ + _
  2366.                 ".DEF"
  2367.     IF ZUseBASICWrites THEN _
  2368.        ZLocalBksp$ = ZBackArrow$ _
  2369.     ELSE ZLocalBksp$ = ZBackSpace$
  2370.     ZSysopFullName$ = LEFT$(ZSysopFirstName$ + " " + ZSysopLastName$ + "  ",22)
  2371.     ZFastFileSearch = ZFalse
  2372.     CALL FindIt (ZFastFileList$)
  2373.     IF ZOK THEN _
  2374.        CALL FindIt (ZFastFileLocator$) : _
  2375.        IF ZOK THEN _
  2376.           ZFastFileSearch = ZTrue : _
  2377.           CALL BreakFileName (ZFastFileList$, Drive$,WasX$,ZWasY$,ZTrue) : _
  2378.           ZFileName$ = Drive$ + WasX$ + "T" + ZWasY$ : _
  2379.           CALL FindIt (ZFileName$) : _
  2380.           IF ZOK THEN _
  2381.              CALL OpenRSeq (ZFileName$, WasX, WasY, 72) : _
  2382.              FIELD 2, 72 AS IndexRec$ : _
  2383.              GET 2, 1 : _
  2384.              ZFastTabs$ = IndexRec$ : _
  2385.              CLOSE 2 _
  2386.           ELSE ZFastTabs$ = ""
  2387. '
  2388. ' *****  INITIALIZE NetBIOS INTERFACE   ****
  2389. '
  2390.    IF ZNetworkType = 6 AND NOT ZSubBoard THEN _
  2391.       CALL InitIBM
  2392. '
  2393. ' *****  ESTABLISH NEXT CALLERS FILE RECORD AVAILABLE   ***
  2394. '
  2395.     CALL SetCall
  2396.  IF NOT ZSubBoard THEN _
  2397.        ZLocalUser = ZTrue : _
  2398.        ZOutTxt$ = ZColorReset$ : _
  2399.        ZSubParm = 1 : _
  2400.        CALL TPut : _
  2401.        ZLocalUser = ZFalse
  2402.     ZUpldDriveFile$ = RIGHT$(ZDnldDrives$,1)+":FREESPAC.UPL"
  2403.     ZMinsPerSessionDef = ZMinsPerSession
  2404.     ZMaxPerDayDef = ZMaxPerDay
  2405.     ZMaxBankTimeDef = ZMaxBank
  2406. End Sub
  2407.