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

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against E:\RBBS\STOCK\RBBSSUB2.BAS to produce E:\RBBS\CHAT\RBBSSUB2.BAS
  3. * E:\RBBS\STOCK\RBBSSUB2.BAS:  Date 6-20-1992  Size 140946 bytes
  4. * ------------[ Created 02-06-1993 06:06:55 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. ' $title: 'RBBSSUB2.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  8. '  Copyright 1991 by D. Thomas Mack, all rights reserved.
  9. '  Name ...............: RBBSSUB2.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. '  Macro          1320  Check/execute macro
  23. '  AnswerIt        200  Answer the telephone when it rings
  24. '  ASCIICodes      129  Allow a CONFIG string to have any ASCII value
  25. '  BadChar         455  Check user name for invalid characters
  26. '  BadName       20235  Check for system crash attempt with bad file name
  27. '  BankTime       5500  Let caller change banked time
  28. '  CheckRatio    20096  Test upload/download ratio
  29. '  CheckMacro     1242  Checks for macro and processes
  30. '  CopyRight        97  Display RBBS-PC's copyright notice
  31. '  DEFALTU        9600  Write out the user's defaults
  32. '  DenyAccess     1386  Downgrade security so access denied
  33. '  DoorExit      10983  Set up a .BAT file to exit RBBS-PC to a "door"
  34. * ------[ first line different ]------
  35. '  DosExit       10934  Set up a .BAT file to exit to DOS (second level)
  36. '  EditALine      2618  Edits a single line
  37. '  EditDef         120  Edit configuration parameters
  38. '  FileNameCheck 20240  Matches file name to a prefix & extension
  39. '  GetArc        20140  Handle request for verbose listing
  40. '  GetCommand      101  Get RBBS-PC's node id from command line
  41. '  GetTime        9140  Calculates callers elapsed time (hh,mm,ss)
  42. '  GoIdle           90  Release resources when waiting for keyboard input
  43. '  KillMsg        3952  Delete old or unnecessary messages
  44. '  Line25          945  Build and/or update line 25 of RBBS-PC's local screen
  45. '  LineEdit       3700  Edit a line while minimizing string space consumption
  46. '  LogError      13660  Log error message to CALLERS file
  47. '  LPrnt          1480  Subroutine to write to local display
  48. '  MLInit            8  Removed in Maple code
  49. '  MsgProt        2055  Sets protection for a message
  50. '  ParseIt        1637  Parses a string
  51. '  PassWrd         660  Verify user & message passwords
  52. '  PopCmdStack    1650  Get user input, 1st checking command stack
  53. '  PScrn          1483  Print to display
  54. '  QuickLPrnt     1482  Quickly writes count of blocks on file transfer
  55. '  QuickTPut      1478  Fast, but limited, "TPut" equivalent
  56. '  QuickTPut1     1478  Outputs short string following by CR LF
  57. '  RBBSExit      10992  RBBS-PC exit to transfer control to other programs
  58. '  RecoverMsg    10410  Recover a deleted message
  59. '  RemNonAlf      5100  Removes non-alpha characters from a string
  60. '  RingCaller     1636  Ring caller's bell and put message in emphasis
  61. '  SetBaud        1654  Set baud rate in the 8250 chip of the RS232 interface
  62. '  SetCrLf        1496  Set up the necessary carriage return/line feed string
  63. '  SetSection    12000  Set the proper section prompts (main, file, util, libr)
  64. '  SetThread      4554  Set up request for threading thru messages
  65. '  SetWhoTo       2018  Sets who a message/personal upload is to
  66. '  SkipLine       1485  Write a # of blank lines to the communications port
  67. '  SearchCmd      1238  Searches list of commands in RBBS for a request
  68. '  SecViolation   1380  Process a security violation
  69. '  SysMenu         112  Displays sysop menu/status
  70. '  SysopChat      4773  Sysop and caller chat
  71. '  TestRel         336  Tests for Reliable connect
  72. '  TGet           1498  Read a line from the communications port
  73. '  TPut           1396  Write a line to the communications port
  74. '  Trim            105  Strip leading and trailing blanks from a string
  75. '  TrimTrail       107  Strip off specified string off end of another string
  76. '  UntilRight    12878  Ask a question until user says answer is right
  77. '  UpdateU       10600  Updates the user record on loging off/exiting RBBS-PC
  78. '  VarInit         109  Initialize system variables
  79. '  ViewHelp       1330  Processes help command
  80. '  WhoCheck       2250  Checks whether a user exists in user file
  81. '  WhosOn         9801  Report status of each node - who's on
  82. '  WordInFile    10976  Find a whole word within a file/menu
  83. '
  84. '  $INCLUDE: 'RBBS-VAR.BAS'
  85. '
  86. * DELETING old line(s)
  87. 10
  88. 20
  89. 30
  90. 60
  91. 70
  92. 80
  93. * REPLACING old line(s) by new
  94. 90 '  $SUBTITLE: 'GoIdle - release control when waiting'
  95. '  $PAGE
  96. '
  97. '  NAME    -- GoIdle
  98. '
  99. '  INPUTS  -- ZMLCom
  100. '             ZNetworkType
  101. '
  102. '  OUTPUTS --  NONE
  103. '
  104. '  PURPOSE --  To relinquish control when RBBS-PC is waiting for
  105. '              input from the communications port
  106. '
  107.       SUB GoIdle STATIC
  108. * ------[ first line different ]------
  109.    CALL GiveBack
  110.    END SUB
  111. * REPLACING old line(s) by new
  112. 97 '  $SUBTITLE: 'CopyRight - subroutine to display RBBS-PC copyright'
  113. '  $PAGE
  114. '
  115. '  NAME    -- CopyRight
  116. '
  117. '  INPUTS  --  NONE
  118. '
  119. '  OUTPUTS --  NONE
  120. '
  121. '  PURPOSE --  To display RBBS-PC's copyright notice on the local screen
  122. '
  123.       SUB CopyRight STATIC
  124.    ZWasA = (ZDebug OR ZExitToDoors OR ZCopyrightSecs < 1)
  125.    IF ZWasA THEN _
  126.       EXIT SUB
  127.    WIDTH 80
  128. * ------[ first line different ]------
  129.    CLS
  130.    KEY OFF
  131.    LOCATE ,,0
  132.    ZWasA = ZSnoop
  133.    ZSnoop = -1
  134.     CALL BufFile("COPYRITE.DEF",WasX)
  135. If Not ZOK Then 
  136.      Call GetRBBSString(267,RBBSString$)     'Pe 01/16/93
  137.      Call QuickTput1(RBBSString$)
  138.      Call Delaytime (35)
  139. End IF
  140.    CALL DelayTime (ZCopyrightSecs)
  141.    ZSnoop = ZWasA
  142.    END SUB
  143. * REPLACING old line(s) by new
  144. 101 ' $SUBTITLE: 'GetCommand - sub to get command from command line'
  145. ' $PAGE
  146. '
  147. '  NAME    -- GetCommand
  148. * ------[ first line different ]------
  149. '  INPUTS  --     PARAMETER                    MEANING
  150. '             ZConfigFileName$     NAME OF RBBS-PC ".DEF" FILE TO
  151. '                                  USE AS A MODEL WHEN CREATING THE
  152. '                                  .DEF FILE NAME TO BE USED BY THIS
  153. '                                  COPY OF RBBS-PC.
  154. '
  155. '             COMMAND LINE         COMMAND LINE USED TO INVOKE
  156. '                                  RBBS-PC IN THE FORM:
  157. '
  158. '       RBBS-PC.EXE x filename DEBUG /time /baud  /CBaud /reliable
  159. '
  160. '   WHERE THE OPTIONAL PARAMETERS ARE:
  161. '
  162. '  x       IS THE NODE ID IN THE RANGE 1-9,0,A-Z
  163. ' filename IS THE FULLY QUALIFIED FILE NAME TO USE AS THE ".DEF" FILE
  164. ' DEBUG    IS A DEBUGGING Switch
  165. ' /time    IS THE TIME OF DAY FOR RBBS-PC TO RETURN TO THE CALLER
  166. ' /baud    IS THE BAUD RATE OF THE CALLER IF RBBS-PC IS BEING SHELLED TO BY
  167. '             ANOTHER COMMUNICATIONS PROGRAM (THE COMMUNICATIONS PORT BEING
  168. '             USED IS ASSUMED TO BE THE ONE INPUTTED VIA THE RBBS-PC CONFIG
  169. '             PROGRAM
  170. ' /Cbaud   IS Actuall Connect rate of the Modems  ' Pe 01/01/93
  171. ' /reliable IS IF RELIABLE MODE WAS DETECTED BY A HOST MAILER
  172. '
  173. ' IF NO PARAMETERS ARE SUPPLIED, RBBS-PC ASSUMES THAT THE .DEF FILE NAME IS
  174. ' RBBS-PC.DEF AND THAT THE NODE IS NODE 1.
  175. '
  176. '  OUTPUTS -- ZConfigFileName$     NAME OF RBBS-PC ".DEF" FILE FOR
  177. '                                  THIS COPY OF RBBS-PC TO USE
  178. '             ZNodeRecIndex    RECORD NUMBER WITHIN THE
  179. '                                  MESSAGES FILE FOR THIS "NODE"
  180. '                                  (RANGE IS 2 TO 36)
  181. '
  182. '  PURPOSE --  To get node id from command line and determine if rbbs
  183. '              is being run as a door
  184. '
  185.   SUB GetCommand (PassedDebug,NetTime$,NetBaud$,ZCBaud$,NetReliable$) STATIC ' Pe 01/01/93
  186.       STATIC ZDebug
  187. '
  188. '
  189. ' *  GET NODE ID FROM COMMAND LINE
  190. '
  191. '
  192.       WasPM$ = COMMAND$
  193.       CALL AllCaps(WasPM$)
  194.       IF INSTR(WasPM$,"/") = 0 THEN _
  195.          GOTO 103
  196. '
  197. '
  198. ' * PARSE THE COMMAND LINE FOR THREE POSITIONAL SWITCHES FOR NET MAIL
  199. '
  200. '
  201.       CmdLine$ = MID$(WasPM$,INSTR(WasPM$,"/"))
  202.       WasPM$ = LEFT$(WasPM$,INSTR(WasPM$,"/") - 1)
  203.       ZWasA = 0
  204.       FOR WasX = 1 TO LEN(CmdLine$)
  205.           IF MID$(CmdLine$,WasX,1) = "/" THEN _
  206.              ZWasA = ZWasA + 1 : _
  207.              ZSubDir$(ZWasA) = "" _
  208.           ELSE ZSubDir$(ZWasA) = ZSubDir$(ZWasA) + MID$(CmdLine$,WasX,1)
  209.       NEXT
  210.       NetTime$ = ZSubDir$(1)
  211.       IF ZWasA > 1 THEN _
  212.          NetBaud$ = ZSubDir$(2)
  213.       IF ZWasA > 2 THEN _
  214.          ZCBaud$ = STR$(VAL(ZSubDir$(3)))       'Pe 031692
  215.       IF ZWasA > 3 THEN _
  216.          NetReliable$ = ZSubDir$(4)              'lk 022792
  217.       CALL Trim(NetTime$)
  218.       CALL Trim(NetBaud$)
  219.       CALL Trim (ZCBaud$)
  220.       CALL Trim(NetReliable$)
  221. * REPLACING old line(s) by new
  222. 109 '  $SUBTITLE: 'VarInit - subroutine to initialize system variables'
  223. '  $PAGE
  224. '
  225. '  NAME    --  VarInit
  226. '
  227. '  INPUTS  --  PARAMETER           MEANING
  228. '              NONE
  229. '
  230. '  OUTPUTS --  NONE
  231. '
  232. '  PURPOSE --  To initialize system variable
  233. '
  234.       SUB VarInit STATIC
  235.     DEF SEG                            ' Point to BASIC
  236.     WIDTH 80                           ' Set Screen Width
  237.     KEY OFF                            ' Line 25 turned off
  238. ' ********************* Variable Definitions *******************************
  239.     ZMsgDim = 99
  240.     WasMM = 999
  241.     WasBX = 75
  242.     WasJ = 60
  243.     REDIM ZOptSec(WasJ)
  244.     DIM ZWorkAra$(WasJ)
  245.     DIM ZGSRAra$(WasJ)
  246.     DIM ZCategoryName$(WasBX),ZCategoryCode$(WasBX),ZCategoryDesc$(WasBX)
  247.     DIM ZOutTxt$(ZMsgDim)                      ' Message line table
  248.     DIM ZUserIn$(ZMsgDim)                      ' Message line table
  249.     DIM ZMsgPtr(WasMM,2)                       ' Message pointers
  250.     ZAcknowledge$ = CHR$(6)
  251.     ZAckChar$ = "C" + _
  252.             ZAcknowledge$
  253. * ------[ first line different ]------
  254. '    ZActiveMenu$ = "B"
  255.     ZActiveMenu$ = "|"           'ANSIed243
  256.     ZActiveMessage$ = CHR$(225)
  257.     ZBackSpace$ = CHR$(8) + _
  258.                  CHR$(32) + _
  259.                  CHR$(8)
  260.     ZBackArrow$ = CHR$(29) + _
  261.                   CHR$(32) + _
  262.                   CHR$(29)
  263.     ZBaudRates$ = "      300  450 1200 2400 4800 7200 96001200014400168001920038400"
  264.     ZBellRinger$ = CHR$(7)
  265.     ZBulletinMenu$ = ""
  266.     ZWasCL = 24
  267.     ZCancel$ = CHR$(24)
  268.     ZColorReset$ = CHR$(27) + _
  269.                    "[00;37;40m"
  270.     ZConfigFileName$ = "RBBS-PC.DEF"
  271.     ZCarriageReturn$ = CHR$(13)
  272.     ZDeletedMsg$ = CHR$(226)
  273.     ZEndTransmission$ = CHR$(4)
  274.     ZEscape$ = CHR$(27)
  275.     ZExpectActiveModem = 0
  276.     ZFalse = 0
  277.     ZF1Key = 59
  278.     ZF10Key = 68
  279.     ZConfName$ = "MAIN"
  280.     CALL SetHiLite (ZTrue)
  281.     ZHomeConf$ = ""
  282.     ZInConfMenu = -1
  283.     ZLastCommand$ = "M "
  284.     ZLimitMinsPerSession = 0
  285.     ZLineFeed$ = CHR$(10)
  286.     ZLineFeeds = NOT ZFalse
  287.     ZLineEditChk$ = CHR$(9) + _
  288.                     ZLineFeed$ + _
  289.                     CHR$(11) + _
  290.                     CHR$(12) + _
  291.                     CHR$(127) + _
  292.                     CHR$(8) + _
  293.                     ZBellRinger$ + _
  294.                     CHR$(26) + _
  295.                     CHR$(227)
  296.     ZLineMes$ = SPACE$(78)          ' fixed length string workspace
  297.     ZLockStatus$ = "UM UU UB UD"
  298.     ZMenuIndex = 2
  299.     ZNAK$ = CHR$(21)
  300.     ZNoAdvance = ZFalse
  301.     ZPageLength = 23
  302.     ZParseOff = ZFalse
  303.     ZPressEnter$ = " (Press [ENTER] to quit)"
  304.     ZPressEnterExpert$ = " ([ENTER] quits)"
  305.     ZPressEnterNovice$ = ZPressEnter$
  306.     ZPrivateDoor = ZFalse
  307.     ZRightMargin = 72
  308.     ZReturnLineFeed$ = ZCarriageReturn$ + _
  309.                         ZLineFeed$
  310.     ZSmartTable$ = "CS PB NS FN LN SL DT TM TR TE TL RP RR CT " + _
  311.                    "C1 C2 C3 C4 C0 DD BD DB UB DL UL FI VY VN " + _
  312.                    "TY TN BN ND FS LS CN "+ _
  313.                    "C5 C6 C7 C8 C9 CA CB CC CD CE CF"   ' DD061303
  314.     ZStartOfHeader$ = CHR$(1)
  315.     ZTimeLoggedOn$ = SPACE$(8)
  316.     ZTrue = NOT ZFalse
  317.     ZUpInc = -1
  318.     ZXOff$ = CHR$(19)
  319.     ZXOn$ = CHR$(17)
  320.     ZInterrupOn$ = CHR$(11) + ZCancel$ + ZXOff$ + ZXOn$ + ZCarriageReturn$
  321.     ZOptionEnd$ = ZReturnLineFeed$ + " ,("
  322.     ZCrLf$ = ZCarriageReturn$ + ZLineFeed$
  323.     ZVersionID$ = " Mpl17/020693
  324.     ZWasLG$(1) = "Registration Check Failed"
  325.     ZWasLG$(2) = "Sysop name attempted"
  326.     ZWasLG$(3) = "Locked out attempt"
  327.     ZWasLG$(4) = "Password Attempt Failed"
  328.     ZWasLG$(5) = "Auto Lockout done"
  329.     ZWasLG$(6) = "Name in use on another Node!"
  330.     ZWasLG$(7) = ""
  331.     ZWasLG$(8) = "Locked reason read!"
  332.     ZWasLG$(9) = "Expired Registration"
  333.   CALL GetCommand (ZDebug,ZNetTime$,ZNetBaud$,ZCBaud$,ZNetReliable$) 'Pe 01/01/93
  334.     ZSubParm = 1
  335.     CALL ReadDef (ZConfigFileName$)
  336.     REDIM ZWorkAra$(ZMaxWorkVar)
  337.     REDIM ZGSRAra$(ZMaxWorkVar)
  338.     ZUseTPut = (ZUpperCase OR ZXOnXOff)
  339.     ZOrigCallers$ = ZCallersFile$
  340.     ZOrigMsgFile$ = ZMainMsgFile$
  341.     ZOrigUserFile$ = ZMainUserFile$
  342.     ZOrigSysopFN$ = ZSysopFirstName$
  343.     ZOrigSysopLN$ = ZSysopLastName$
  344.     ZPromptBell = ZPromptBellDef
  345.     ZSecretName$ = ZSysopPswd1$ + " " + ZSysopPswd2$
  346.     IF NOT ZSubBoard THEN _                           'lk 022092 for toss mod
  347.     ZOrigRBBSName$ = ZRBBSName$                       'lk 022092 for toss mod
  348.     END SUB
  349. '
  350. * REPLACING old line(s) by new
  351. 112 ' $SUBTITLE: 'SysMenu - sub to display RBBS-PC SYSOP menu'
  352. '  $PAGE
  353. '
  354. '  NAME    --  SysMenu
  355. '
  356. '  INPUTS  --  PARAMETER           MEANING
  357. '
  358. '  OUTPUTS --  NONE
  359. '
  360. '  PURPOSE --  TO DISPLAY RBBS-PC's SYSOP MENU ON THE LOCAL SCREEN
  361. '
  362.     SUB SysMenu STATIC
  363. * ------[ first line different ]------
  364.  
  365. Call SysMenuPlus (AOK)              'Pe Menu174
  366. If AOK = ZTrue then _             'Pe Menu174
  367.    Exit Sub
  368.  
  369.     ZLocalUser = ZTrue
  370.     ZSnoop = ZTrue
  371.     ZNonStop = ZTrue
  372.     CALL CheckTime (TIMER, ZDelay!, 1)
  373.     CLS
  374.     ZStopInterrupts = ZTrue
  375.     ZBypassTimeCheck = ZTrue
  376.     CALL BufFile ("MENU0",WasX)
  377.     ZNonStop = ZFalse
  378.     ZBypassTimeCheck = ZFalse
  379.     ZLocalUser = ZFalse
  380.     IF NOT ZOK THEN _
  381.     Call GetRBBSString(277,RBBSString$) : _     'Pe 01/26/93
  382.     OutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  383.     CALL LPrnt(OutTxt$,1)
  384.     LOCATE 2,13
  385.     CALL LPrnt(LEFT$(ZVersionID$,13),0)
  386.     LOCATE 2,42
  387.     CALL LPrnt(ZNodeID$,0)
  388.     LOCATE 2,60
  389.     WasX$ = DATE$
  390.     CALL LPrnt(LEFT$(WasX$,6) + RIGHT$(WasX$,2),0)
  391.     LOCATE 2,74
  392.     CALL LPrnt(LEFT$(TIME$,5),0)
  393.     IF ZFMSDirectory$ <> "" THEN _
  394.        LOCATE 6,76 : _
  395.        CALL LPrnt("YES",0)
  396.     IF ZExtendedLogging THEN _
  397.        LOCATE 8,76 : _
  398.        CALL LPrnt("YES",0)
  399.     IF ZFossil THEN _
  400.        LOCATE 10,76 : _
  401.        CALL LPrnt("YES",0)
  402.     LOCATE 12,75 : _
  403.     CALL LPrnt(ZComPort$,0)
  404.     LOCATE 14,75
  405.     CALL LPrnt (STR$(CINT(FRE("A")/1024)) + "k",0)
  406.     IF ZDebug THEN _
  407.        LOCATE 22,76 : _
  408.        CALL LPrnt("Yes",0)
  409.     END SUB
  410. '
  411. * REPLACING old line(s) by new
  412. 120 '  $SUBTITLE: 'EditDef - sub to edit config parameters'
  413. '  $PAGE
  414. '
  415. '  NAME    -- EditDef
  416. '
  417. '  INPUTS  --     PARAMETER                    MEANING
  418. '
  419. '  OUTPUTS --                          OUTPUT STRING
  420. '
  421. '  PURPOSE -- Interpretes and adjusts stored configuration parameters
  422. '
  423.       SUB EditDef STATIC
  424. * ------[ first line different ]------
  425.       ZMinsPerSessionDef = ZMinsPerSession                           ' KG082101
  426.       ZAllOpts$ = ZMainCmds$ + _
  427.                   ZFileCmd$ + _
  428.                   ZUtilCmds$ + _
  429.                   ZLibCmds$ + _
  430.                   ZGlobalCmnds$ + _
  431.                   ZSysopCmds$
  432.       ZHelpExtension$ = "." + _
  433.                         ZHelpExtension$
  434.       ZCompressedExt$ = ZDefaultExtension$
  435.       ZWasQ = INSTR(ZDefaultExtension$,".")
  436.       IF ZWasQ > 0 THEN _
  437.          ZDefaultExtension$ = LEFT$(ZDefaultExtension$, ZWasQ-1)
  438.       ZCurDirPath$ = ZDirPath$
  439.       ZTempExpiredSec = ZExpiredSec
  440.       ZBegMain = 1
  441.       ZBegFile = LEN(ZMainCmds$) + ZBegMain
  442.       ZBegUtil = LEN(ZFileCmd$) + ZBegFile
  443.       ZBegLibrary = LEN(ZUtilCmds$) + ZBegUtil
  444.       ZHelp$(3) = ZHelpPath$ + _
  445.                  ZHelp$(3)
  446.       ZHelp$(4) = ZHelpPath$ + _
  447.                  ZHelp$(4)
  448.       ZHelp$(7) = ZHelpPath$ + _
  449.                  ZHelp$(7)
  450.       ZHelp$(9) = ZHelpPath$ + _
  451.                  ZHelp$(9)
  452.       CALL BreakFileName (ZWelcomeFile$,ZWelcomeFileDrvPath$,Prefix$,_
  453.                      Extension$,ZTrue)
  454.      CALL ASCIICodes ("[","]",ZDefaultLineACK$)
  455.      CALL ASCIICodes ("[","]",ZHostEchoOn$)
  456.      CALL ASCIICodes ("[","]",ZHostEchoOff$)
  457.      CALL ASCIICodes ("[","]",ZEmphasizeOffDef$)
  458.      CALL ASCIICodes ("[","]",ZEmphasizeOnDef$)
  459.      ZDR1$ = ZFG1Def$
  460.      ZDR2$ = ZFG2Def$
  461.      ZDR3$ = ZFG3Def$
  462.      ZDR4$ = ZFG4Def$
  463.      IF ZSubParm = -62 THEN _
  464.         EXIT SUB
  465.      ZLocalUserMode = (RIGHT$(ZComPort$,1) < "1")
  466.      IF ZLocalUserMode THEN _
  467.         ZRecycleToDos = ZTrue
  468.      ZEchoer$ = ZDefaultEchoer$
  469.      IF LEN(ZScreenOutMsg$) < 2 THEN _
  470.         ZScreenOutMsg$ = ZStartOfHeader$
  471.      ZSmartTextCode$ = CHR$(ZSmartTextCode)
  472.      IF ZMaxWorkVar < 13 THEN _
  473.         ZMaxWorkVar = 13
  474. '
  475. ' ***  ESTABLISH RBBS-PC'S DOS SUBDIRECTORIES USAGE  ***
  476. '
  477.     IF ZMainFMSDir$ <> "" THEN _
  478.        ZFMSDirectory$ = ZDirPath$ + _
  479.                         ZMainFMSDir$ + _
  480.                         "." + _
  481.                         ZMainDirExtension$ : _
  482.        ZActiveFMSDir$ = ZFMSDirectory$ : _
  483.     ZUpcatHelp$ = ZHelpPath$ + _
  484.                   ZUpcatHelp$ + _
  485.                   ZHelpExtension$
  486.     IF ZSubDirCount < 1 THEN _
  487.        GOTO 123
  488.     FOR ZSubDirIndex = 1 TO ZSubDirCount
  489.        INPUT #2,ZSubDir$
  490.        IF RIGHT$(ZSubDir$,1) <> "\" THEN _
  491.          ZSubDir$(ZSubDirIndex) = ZSubDir$ + _
  492.                                  "\" _
  493.        ELSE ZSubDir$(ZSubDirIndex) = ZSubDir$
  494.     NEXT
  495.     GOTO 125
  496. * REPLACING old line(s) by new
  497. 126 CLOSE #2
  498. * ------[ first line different ]------
  499.    ' ZSubParm = -10
  500.    ' CALL Carrier
  501.     
  502. '
  503. ' ***  INITIALIZE OMNINET INTERFACE IF OMNINET IN USE  ***
  504. '
  505. * REPLACING old line(s) by new
  506. 128 IF ZNetworkType = 2 THEN _
  507.        ZWasCN$ = SPACE$(535) : _
  508.        CALL InitIO(ZWasA)
  509. * ------[ first line different ]------
  510. 'YW = 268
  511. 'For X = 1 to 9
  512. '    Call GetRBBSString(YW,RBBSString$)     'Pe 01/16/93
  513. '    ZWasLG$(X) = RBBSString$               'Pe 01/16/93 
  514. '    YW = YW + 1
  515. 'Next X
  516.  
  517.        END SUB
  518. '
  519. * REPLACING old line(s) by new
  520. 235 ZEightBit = ZTrue
  521.     IF ZExitToDoors THEN _
  522. * ------[ first line different ]------
  523.        CALL ReadProf(1)        'Pe 12/20/92
  524.     ZSubParm = -10
  525.     CALL Carrier
  526.     IF ZSubParm = 0 AND _
  527.        ZExitToDoors THEN _
  528.        ZSubParm = 1 : _
  529.        GOTO 335
  530.     IF ZSubParm = 0 AND _
  531.        ZExpectActiveModem THEN _
  532.        ZBaudTest! = VAL(ZNetBaud$) : _
  533.        CALL TestRel (ZNetReliable$) : _
  534.        GOTO 328
  535.     IF ZExpectActiveModem OR _
  536.        ZExitToDoors THEN _
  537.        ZSubParm = 4 : _
  538.        ZExitToDoors = ZFalse : _
  539.        EXIT SUB
  540.     IF ZSubParm = 0 THEN _
  541.        ConnectDelay! = TIMER + ZMaxCarrierWait : _
  542.        GOTO 324
  543.     CALL SysMenu
  544.     CALL ModemPut (ZModemResetCmd$)
  545.     CALL DelayTime (ZModemInitWaitTime)
  546.     CALL ModemPut (ZModemInitCmd$)
  547.     RingBack = ZFalse
  548.  
  549. Call LocateMenu (RingBack,ScreenCleared,AOK,1)      ' Pe menu174
  550. If AOK = ZTrue THEN _                ' Pe Menu174
  551.    If RingBack Then _
  552.      Goto 236 _
  553.        Else GOTO 237              ' Pe menu174
  554.  
  555.  LOCATE 16,55
  556.     IF ZRequiredRings = 0 THEN _
  557.        CALL LPrnt("WAITING FOR CARRIER",0) : _
  558.        GOTO 237
  559.  
  560.     IF MID$(ZModemInitCmd$, _
  561.       INSTR(ZModemInitCmd$,"S0") + 3,3) = "255" THEN _
  562.        CALL LPrnt("RING BACK SYSTEM",0) : _
  563.        RingBack = ZTrue : _
  564.        GOTO 236
  565.     CALL LPrnt(" WAITING FOR RING ",0)
  566.  
  567. * REPLACING old line(s) by new
  568. * ------[ first line different ]------
  569. 236 Call LocateMenu (RingBack,ScreenCleared,AOK,2)        ' Pe Menu174
  570.     IF AOK = ZTrue THEN _          ' Pe Menu174
  571.       GOTO 237                     ' Pe Menu174
  572.      LOCATE 16,76 : _
  573.     CALL LPrnt(MID$(STR$(ZRequiredRings),2),0)
  574.  
  575. * REPLACING old line(s) by new
  576. * ------[ first line different ]------
  577. 237 Call LocateMenu (RingBack,ScreenCleared,AOK,3)
  578. IF AOK <> ZTrue THEN
  579.  LOCATE 18,76
  580.     IF ZDosANSI THEN _
  581.        CALL LPrnt(ZEscape$ + "[05m" + "YES" + ZEscape$ + "[00m",0) _
  582.     ELSE CALL LPrnt ("YES",0)
  583.     COLOR ZFG,ZBG,ZBorder
  584.     LOCATE 20,56
  585. END IF
  586. '
  587. '
  588. ' *  GET READY TO ANSWER INCOMMING CALL:
  589. ' *       1.  LET THE MODEM "AUTO-ANSWER" FOR RBBS-PC.
  590. ' *           REQUIRED RINGS = 0 AND S0 = 1 IN MODEM INIT COMMAND.
  591. ' *       2.  ANSWER THE MODEM ON A SPECIFIED NUMBER OF RINGS.
  592. ' *           REQUIRED RINGS > 0 AND S0 = 254 IN MODEM Init COMMAND.
  593. ' *       3.  ANSWER THE MODEM ON A SPECIFIED NUMBER OF RINGS AFTER A USER
  594. ' *           First CALLS AND THEN HANGS UP (I.E. RING-BACK).
  595. ' *           REQUIRED RINGS > 0 AND S0 = 255 IN MODEM INIT COMMAND.
  596. '
  597. '
  598.     WasQQ = 255
  599.     WasI = INSTR(ZModemInitCmd$,"S0")
  600.     IF WasI = 0 THEN _
  601.        GOTO 239
  602.     IF VAL(MID$(ZModemInitCmd$,WasI + 3,3)) = 255 THEN _
  603.        WasQQ = 0 : _
  604.        ZBlk = WasQQ
  605.     ZSecsUsedSession! = TIMER
  606.     ZSubParm = 1
  607.     CALL Line25
  608.     RingAnswer = ZTrue
  609.     IF RingBack THEN _
  610.        RingAnswer = ZFalse
  611. * REPLACING old line(s) by new
  612. 260    IF RingBackWaitStart! > 0 THEN _
  613.           CALL CheckTime(RingBackWaitStart!, TempElapsed!, 2) : _
  614.           IF TempElapsed! > 45 THEN _
  615.              RingBackWaitStart! = 0 : _
  616.              RingBackCount = 0 : _
  617.              RingAnswer = ZFalse: _
  618.              IF RingBack THEN _
  619. * ------[ first line different ]------
  620.              Call LocateMenu (RingBack,ScreenCleared,AOK,4) : _       ' Pe menu174
  621.              If AOK = ZTrue Then Goto 265  _          ' Pe Menu174
  622.               Else LOCATE 20,56 : _
  623.                CALL LPrnt("Ringback timeout" + ZPagingPtrSupport$,1)
  624. '
  625. '  Comments  out the Following lines if you DO NOT want the screen to
  626. '  Blank Automaticaly...  120 Sec = 2 min  adjust if desired
  627. '
  628. ' DO NOT comment out the LINE NUMBER, just the CODE !!
  629.  
  630. * REPLACING old line(s) by new
  631. * ------[ first line different ]------
  632. 265  CALL CheckTime(ZSecsUsedSession!, TempElapsed!, 2)    'RT020193MPL
  633.        IF TempElapsed! > 120 AND NOT ScreenCleared THEN _  'RT020193MPL
  634.           LOCATE ,,0 : _                                   'RT020193MPL
  635.           CLS : _                                          'RT020193MPL
  636.           ZWasCL = 1 : _                                   'RT020193MPL
  637.           ScreenCleared = ZTrue : _                        'RT020193MPL
  638.           ZSecsUsedSession! = TIMER                        'RT020193MPL
  639.        IF ZTimeToDropToDos! > 0 THEN _
  640.           IF ZOldDate$ <> DATE$ THEN _
  641.           IF TIMER => ZTimeToDropToDos! AND _
  642.              TIMER < 86340 THEN _      ' Skip btw 23:59 and 00:00
  643.                 ZSubParm = 7 : _
  644.                 EXIT SUB
  645.     Call LocateMenu (RingBack,ScreenCleared,AOK,5)                ' Pe Menu174
  646. * REPLACING old line(s) by new
  647. * ------[ first line different ]------
  648. 305  Call LocateMenu (RingBack,ScreenCleared,RingBack,AOK,6)
  649.       If AOK = ZTrue Then Goto 310
  650.       LOCATE 20,56
  651.       CALL LPrnt(TIME$ + " Ring " + STR$(ZWasQ),0)
  652. * REPLACING old line(s) by new
  653. 328 CALL SetBPS (ZBaudTest!,ZBPS)
  654. * ------[ first line different ]------
  655.     IF ZBPS = 0 THEN GOTO 324                                     'Lk 02/28/92
  656. * REPLACING old line(s) by new
  657. * ------[ first line different ]------
  658. 675 Call GetRBBSString(278,RBBSString$)     'Pe 01/29/93
  659.    ZOutTxt$ = RBBSString$
  660.     ZHidden = ZTrue
  661.     CALL PopCmdStack
  662.     IF ZSubParm < 0 THEN _
  663.        ZPswdFailed = ZTrue : _
  664.        EXIT SUB
  665.     ZHidden = ZFalse
  666.     ZWasZ$ = ZUserIn$
  667. * REPLACING old line(s) by new
  668. * ------[ first line different ]------
  669. 680 Call GetRBBSString(65,RBBSString$)     'Pe 01/16/93
  670.     OutTxt$ = RBBSString$                'Pe 01/16/93 
  671.    CALL QuickTPut1 (OutTxt$)
  672.     ZLastIndex = 0
  673.     IF NOT ZMsgPswd THEN _
  674.        CALL UpdtCalr (ZActiveUserName$+" PW fail: " + ZWasZ$,1)
  675.     GOTO 670
  676.     END SUB
  677. * REPLACING old line(s) by new
  678. 949 ZLine25$ = "Node " + _
  679. * ------[ first line different ]------
  680.               ZNodeID$ + " " + _
  681.            ZPageStatus$ + " " + _
  682.            MID$("HOUR ",1, -5 * ZSysopAvail) + _                 'ST081501
  683.            MID$("PAGE ",1, -5 * ZSysopAnnoy) + _                 'ST081501
  684.            MID$("PNT ",1, -4 * ZPrinter) + _                     'ST081501
  685.            MID$("SYS ",1, -4 * ZSysopNext) + _
  686.            MID$("XOFF ",1,-5 * ZXOffEd) + _
  687.            MID$("CTS ",1,-4 * ZNotCTS)
  688. '
  689. '
  690. ' *  LINE 25 UPDATE ROUTINE
  691. '
  692. '
  693. * REPLACING old line(s) by new
  694. 950 IF NOT ZSnoop THEN _
  695.        EXIT SUB
  696.     ZCursorLine = CSRLIN
  697.     ZCursorRow = POS(0)
  698.     ZWasHH = LEN(ZActiveUserName$) + _
  699.          LEN(ZWasCI$) + _
  700.          LEN(ZLine25$) + _
  701. * ------[ first line different ]------
  702.          LEN(STR$(ZUserSecLevel))+ _
  703.          LEN(STR$(INT(MinsRemaining))) + 2              'Pe 05/29/91
  704.         LOCATE 25,1
  705.    IF ZNetworkType = 0 THEN _
  706.         ZLockStatus$ = SPACE$(2) + _                    'Pe 05/29/91
  707.                            LEFT$(ZTimeLoggedOn$,5)      'Pe 05/29/91
  708.     IF ZWasHH > 63 THEN _
  709.        ZWasHH = 0 _
  710.     ELSE _
  711.        ZWasHH = 64 - ZWasHH
  712.     ZLine25Hold$ = ZLine25$ + _
  713.                     SPACE$(ZWasHH) + _
  714.                     STR$(ZUserSecLevel) + _
  715.                     " " + _
  716.                     ZActiveUserName$ + _
  717.                     " " + _
  718.                     ZWasCI$ + _
  719.                     " " + _
  720.                     STR$(INT(MinsRemaining)) + _                  'Dgs-008
  721.                     " " + _
  722.                     ZLockStatus$
  723.     ZLine25Hold$ = LEFT$(ZLine25Hold$, 66) + " " + ZLockStatus$
  724.     IF ZDosANSI THEN _
  725.        ZLine25Hold$ = ZColorReset$ + ZLine25Hold$ + ZEmphasizeOff$
  726.     CALL LPrnt(ZLine25Hold$,0)
  727.     LOCATE ZCursorLine,ZCursorRow
  728.     END SUB
  729. * REPLACING old line(s) by new
  730. 1336 IF NOT ZOK THEN _
  731. * ------[ first line different ]------
  732.     Call GetRBBSString(279,RBBSString$) : _     'Pe 01/26/93
  733.         ZOutTxt$ = RBBSString$ + _
  734.              ZWasZ$ : _
  735.         CALL QuickTPut1 (ZOutTxt$) : _
  736.         CALL UpdtCalr (ZOutTxt$,2)
  737.      ZAnsIndex = ZAnsIndex + 1
  738.      IF ZAnsIndex <= ZLastIndex THEN _
  739.         GOTO 1332
  740.      IF FastHelp THEN _
  741.         FastHelp = ZFalse : _
  742.         EXIT SUB
  743.      GOTO 1331
  744. * REPLACING old line(s) by new
  745. 1380 ' $SUBTITLE: 'VIOLATION - handles all security violations'
  746. ' $PAGE
  747. '
  748. '  NAME    -- SecViolation
  749. '
  750. '  INPUTS  --     PARAMETER                    MEANING
  751. '
  752. '  OUTPUTS -- ZCursorLine               CURRENT LINE ON SCREEN
  753. '             ZCursorRow                CURRENT ROW ON ZCursorLine
  754. '
  755. '  PURPOSE -- Inform caller of security violation, augment count of
  756. '             violations and determine whether too many occurred.
  757. '
  758.      SUB SecViolation STATIC
  759.      CALL FlushKeys
  760.      CALL BufFile (ZSecVioHelp$,WasX)
  761.      IF NOT ZOK THEN _
  762. * ------[ first line different ]------
  763.     Call GetRBBSString(66,RBBSString$) : _     'Pe 01/16/93
  764.     OutTxt$ = RBBSString$ : _                'Pe 01/16/93 
  765.         CALL QuickTPut1 ( ZFirstName$ + OutTxt$)
  766.      CALL UpdtCalr ("SV!-" + ZViolation$,2)
  767.      ZLastIndex = 0
  768.      ZViolationsThisSession = ZViolationsThisSession + 1
  769.      IF ZMaxViolations = 0 OR ZViolationsThisSession <= ZMaxViolations THEN _
  770.         EXIT SUB
  771. * REPLACING old line(s) by new
  772. 1385 IF ZUserFileIndex < 1 THEN _
  773.         EXIT SUB
  774. * ------[ first line different ]------
  775.     Call GetRBBSString(280,RBBSString$)     'Pe 01/26/93
  776.    ZOutTxt$ = RBBSString$                'Pe 01/26/93 
  777.      IF ZUserSecLevel <= ZMinLogonSec THEN _
  778.         ZOutTxt$ = "" : _
  779.         ZUserSecLevel = ZUserSecLevel - 1 _
  780.      ELSE ZUserSecLevel = ZMinLogonSec
  781.      ZDenyAccess = ZTrue
  782.      END SUB
  783. * REPLACING old line(s) by new
  784. 1430 IF ZWasY$ = "" THEN _
  785.         GOTO 1435
  786.      ON INSTR(ZInterrupOn$,ZWasY$) GOTO 1434,1434,1473,1475,1433
  787.      GOSUB 1476
  788. * ------[ first line different ]------
  789.      GOTO 1435
  790. * REPLACING old line(s) by new
  791. 1480 ' $SUBTITLE: 'LPrnt    - subroutine to write to display'
  792. ' $PAGE
  793. '
  794. '  NAME    -- LPrnt
  795. '
  796. '  INPUTS  -- PARAMETER             MEANING
  797. '             Strng$        STRING TO WRITE OUT
  798. '             NumReturns   NUMBER OF CARRIAGE RETURNS
  799. '
  800. '  OUTPUTS -- NONE
  801. '
  802. '  PURPOSE -- Subroutine to write to the display.
  803. '
  804.       SUB LPrnt (Strng$,NumReturns) STATIC
  805.       IF NOT ZSnoop THEN _
  806.          EXIT SUB
  807.       CALL PScrn (Strng$)
  808. * ------[ first line different ]------
  809.       IF ZUseBASICWrites THEN _
  810.          FOR WasI = 1 TO NumReturns : _
  811.             PRINT : _
  812.          NEXT : _
  813.       ELSE FOR WasI = 1 TO NumReturns : _
  814.               LOCATE ,,1 : _
  815.               CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
  816.               LOCATE ZWasCL,ZWasCC : _
  817.               NEXT
  818.       END SUB
  819. * REPLACING old line(s) by new
  820. 1534 ZUserIn$ = ZOutTxt$   ' Not Macro command - pass to normal processing
  821. * ------[ first line different ]------
  822. ' * strip off leading slash when not in turbokey mode so macros can be
  823. ' * written to work in both turbo and non-turbo-key mode
  824.      IF LEFT$(ZUserIn$,1) = "/" THEN IF NOT ZTurboKeyUser THEN _     ' KG092301
  825.         ZUserIn$ = RIGHT$(ZUserIn$,LEN(ZUserIn$)-1) : _              ' KG092301
  826.         ZTurboKey = ZFalse                                           ' KG092301
  827.      IF ZMacroEcho THEN _
  828.         ZSubParm = 4 : _
  829.         CALL TPut
  830.      WasX$ = ZCarriageReturn$
  831.      GOTO 1547
  832. * REPLACING old line(s) by new
  833. 1537 CALL CheckTime(ZAutoLogoff!, TempElapsed!, 3)
  834.      IF TempElapsed! < 30 THEN _
  835.         IF TempElapsed! <= 0 THEN _
  836.            CALL SkipLine (1) : _
  837.            ZSubParm = -1 : _
  838.            ZNo = ZTrue : _
  839.            ZRet = ZTrue : _
  840.            ZSleepDisconnect = NOT ZAutoLogoffReq : _
  841.            IF ZAutoLogoffReq THEN _
  842.               CALL UpdtCalr ("Auto-logoff",1): _
  843.               EXIT SUB _
  844.            ELSE CALL UpdtCalr ("Sleep disconnect",1) : _
  845.                 EXIT SUB _
  846.         ELSE IF SleepWarn THEN _
  847.                 SleepWarn = ZFalse : _
  848.                 Temp! = TempElapsed! : _
  849. * ------[ first line different ]------
  850.                  Call GetRBBSString(281,RBBSString$) : _     'Pe 01/26/93
  851.                ZOutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  852.                 CALL RingCaller : _
  853.                 Call GetRBBSString(67,RBBSString$) : _     'Pe 01/16/93
  854.                 CALL QuickTput (RBBSString$ + "    " ,0) _ 'Pe 10/20/91
  855.              ELSE IF Temp! - TempElapsed! > 1.0 THEN _
  856.                      CALL QuickTPut (ZBackSpace$+ZBackSpace$,0) : _
  857.                      CALL QuickTPut (RIGHT$(STR$(CINT(TempElapsed!)),2),0) : _
  858.                      Temp! = TempElapsed!                 
  859.      CALL FindFKey
  860.      IF ZSubParm < 0 THEN _
  861.         EXIT SUB
  862. * REPLACING old line(s) by new
  863. 1545 WasX$ = ZWasY$
  864.      ZAutoLogoffReq = ZFalse
  865. * ------[ first line different ]------
  866.      'ZAutoEnd = 0                        'Pe 10/21/91
  867.      IF INSTR(ZLineEditChk$,ZWasY$) > 5 _
  868.         GOTO 1635
  869.      IF ZWasY$ < " " AND ZWasY$ <> ZCarriageReturn$ THEN _
  870.         GOTO 1525
  871.      IF ZWasY$ = "^" THEN _
  872.         GOTO 1525
  873.      IF ZWasY$ = ZCarriageReturn$ THEN _
  874.         GOTO 1547 _
  875.      ELSE GOSUB 1550
  876.      IF ZTurboKey < 1 THEN _
  877.         GOTO 1546
  878.      IF ZWasY$ = " " THEN _
  879.         ZWasY$ = ""
  880.      IF ZWasY$ <> "/" THEN _
  881.         ZUserIn$ = ZWasY$ : _
  882.         ZWasY$ = ZCarriageReturn$ : _
  883.         WasX$ = ZWasY$ : _
  884.         GOTO 1547
  885.      ZTurboKey = 0
  886.      GOTO 1525
  887. * REPLACING old line(s) by new
  888. 1546 IF LEN(ZUserIn$) => 512 THEN _
  889. * ------[ first line different ]------
  890.     Call GetRBBSString(282,RBBSString$) : _     'Pe 01/26/93
  891.     ZOutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  892.         ZSubParm = 5 : _
  893.         CALL TPut : _
  894.         ZWasY$ = ZCarriageReturn$ : _
  895.         WasX$ = ZWasY$ : _
  896.         GOTO 1547
  897.      ZUserIn$ = ZUserIn$ + _
  898.           ZWasY$
  899.      GOTO 1525
  900. * REPLACING old line(s) by new
  901. 1550 IF ZLogonActive THEN _
  902.         GOSUB 1549 : _
  903.         ZHidden = (Temp = 2 - (ZLenIndiv > 0 AND ZStartIndiv > 0))
  904.      IF ZHidden THEN _
  905.         IF (WasX$ <> " " AND WasX$ <> ";") THEN _
  906.            WasX$ = "."
  907.      CALL LPrnt(WasX$,0)
  908. * ------[ first line different ]------
  909.               GOTO 1551
  910.      IF ZHidden AND (WasX$ <> " ") THEN _
  911.         WasX$ = "."
  912.      CALL LPrnt(WasX$,0)
  913. * REPLACING old line(s) by new
  914. 1575 IF LEN(ZUserIn$) > 4000 THEN _
  915. * ------[ first line different ]------
  916.     Call GetRBBSString(283,RBBSString$) : _     'Pe 01/26/93
  917.     ZOutTxt$ = RBBSString$ + ZFirstName$ : _               'Pe 01/26/93 
  918.         ZSubParm = 5 : _
  919.         CALL TPut : _
  920.         IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
  921.            EXIT SUB _
  922.         ELSE GOTO 1500
  923.      IF ZParseOff THEN _
  924.         ZParseOff = ZFalse : _
  925.         GOTO 1620
  926.      CALL ParseIt
  927.      IF ZWasQ = 1 THEN _
  928.         GOTO 1622
  929.      GOTO 1625
  930. * REPLACING old line(s) by new
  931. 1580 ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
  932.      IF ZAutoLogoffReq OR ZWaitExpired THEN _
  933.         ZWaitExpired = ZFalse : _
  934.         IF NOT ZSuspendAutologoff THEN _
  935. * ------[ first line different ]------
  936.            ZAutoLogoff! = TIMER + 15          'Pe 10/20/91
  937.      RETURN
  938. * REPLACING old line(s) by new
  939. 1625 IF LEN(ZUserIn$) < 4 THEN _
  940.         WasX$ = LEFT$(ZUserIn$,3): _
  941.         CALL AllCaps (WasX$) : _
  942.         ZYes = (INSTR("YES",WasX$) = 1) : _
  943. * ------[ first line different ]------
  944.      ZNo = (INSTR("NO",WasX$) = 1 OR WasX$ = "A" OR WasX$ = "Q") : _
  945.         ZReply = (WasX$ = "RE") OR ZReply : _
  946.         ZKillMessage = (WasX$ = "K") OR ZKillMessage
  947.      ZHidden = ZFalse
  948. * REPLACING old line(s) by new
  949. 1628 CALL VerifyAns
  950.      IF NOT ZOK THEN _
  951. * ------[ first line different ]------
  952.     Call GetRBBSString(68,RBBSString$) : _     'Pe 01/16/93
  953.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  954.         CALL QuickTPut1 (OutTxt$+ ZUserIn$(1) + ">") : _
  955.         GOTO 1500
  956.      HoldA$ = ""
  957.      ZForceKeyboard = ZFalse
  958.      IF ZMacroSave > 0 THEN _
  959.         ZGSRAra$(ZMacroSave) = ZUserIn$ : _
  960.         ZMacroSave = 0 : _
  961.         GOTO 1632
  962.      IF (ZDistantTGet > 0) OR (ZMacroTemplate$ <> "") THEN _
  963.         CALL WipeLine (38) : _
  964.         IF NOT ZNo THEN _
  965.            GOTO 1632 _
  966.         ELSE ZWasQ = 0 : _
  967.              ZMacroTemplate$ = "" : _
  968.              ZDistantTGet = 0 : _
  969.              ZNo = ZFalse : _
  970.              GOTO 1633
  971.      IF ZMacroActive THEN _
  972.         ZLastIndex = ZWasQ : _
  973.         FirstIndex = 1: _
  974.         ZMacroActive = NOT EOF(6) : _
  975.         EXIT SUB
  976.      IF ZAnsIndex > 255 OR ((NOT InStack) AND INSTR(ZUserIn$,".") > 0) THEN _
  977.         EXIT SUB
  978.      IF MacroIndex OR ZSubParm < 3 THEN _
  979.         MacroIndex = 1 _
  980.      ELSE MacroIndex = ZAnsIndex
  981.      CALL NoPath (ZUserIn$(MacroIndex),Found)
  982.      IF Found THEN _
  983.         EXIT SUB
  984.      CALL CheckMacro (ZUserIn$(MacroIndex),Found)
  985.      IF Found THEN _
  986.         ZStoreParseAt = ZAnsIndex : _
  987.         GOTO 1525
  988.      EXIT SUB
  989. * REPLACING old line(s) by new
  990. 1638 ZWasDF$ = ZUserIn$
  991.      CALL AllCaps (ZWasDF$)
  992.      IF ZWasDF$ = "NS" THEN _
  993.          ZUserIn$ = "C" : _
  994.          ZNonStop = ZTrue
  995.      ZUserIn$(ZStoreParseAt) = ZUserIn$
  996.      ZNonStop = ZNonStop OR (ZWasDF$ = "C" AND NOT ZStackC)
  997. * ------[ first line different ]------
  998. IF ZAutoEnd = 3 THEN _   'Pe 10/20/91
  999.   ZNonStop = ZFalse      'Pe 10/20/91
  1000.      GOTO 1642
  1001. * REPLACING old line(s) by new
  1002. 1640 ZWasB = INSTR(ZWasA,ZUserIn$,ParseChar$)
  1003.      ZWasC = ZWasB-ZWasA
  1004.      IF ZWasC < 1 THEN _
  1005.         ZEOL = ZTrue : _
  1006.         ZWasC = 128
  1007.      ZWasDF$ = MID$(ZUserIn$,ZWasA,ZWasC)
  1008.      IF ZWasDF$ = "" THEN GOTO 1641
  1009.         ZWasQ = ZWasQ + 1
  1010.         ZStoreParseAt = ZStoreParseAt + 1
  1011.         ZUserIn$(ZStoreParseAt) = ZWasDF$
  1012.         CALL AllCaps(ZWasDF$)
  1013.         WasX = INSTR(";NS;/G;C;",";"+ZWasDF$+";")
  1014.         IF WasX = 0 THEN GOTO 1641
  1015.            ZNonStop = ZNonStop OR (WasX = 1) OR (WasX = 7 AND NOT ZStackC)
  1016.      IF ZStoreParseAt > 1 THEN IF INSTR("Jj",ZUserIn$(ZStoreParseAt-1)) THEN _
  1017.         ZNonStop = (ZPageLength < 1)
  1018. * ------[ first line different ]------
  1019. IF ZAutoEnd = 3 THEN _   'Pe 10/20/91
  1020.   ZNonStop = ZFalse      'Pe 10/20/91
  1021.            ZAutoLogoffReq = ZAutoLogoffReq OR (WasX = 4)
  1022.            IF ZAutoLogoffReq THEN _
  1023.            Call GetRBBSString(69,RBBSString$) : _     'Pe 01/16/93
  1024.            OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1025.             CALL QuickTPut1 (OutTxt$)
  1026.            IF ZWasQ > 0 AND WasX < 7 THEN _
  1027.               ZWasQ = ZWasQ - 1 : _
  1028.               ZStoreParseAt = ZStoreParseAt - 1
  1029. * REPLACING old line(s) by new
  1030. 1654 ' $SUBTITLE: 'SetBaud - sub to set the baud rate in the RS232'
  1031. ' $PAGE
  1032. '
  1033. '  NAME    -- SetBaud
  1034. '
  1035. '  INPUTS  --     PARAMETER                    MEANING
  1036. '             ZBaudRateDivisor   NUMBER TO DIVIDE THE 8250 CHIP'S
  1037. '                                 PROGRAMABLE CLOCK TO ADJUST THE
  1038. '                                 BAUD RATE TO THE USER'S BAUD
  1039. '                                 RATE (INDEPENDENT OF THE BAUD
  1040. '                                 RATE USED TO OPEN THE COMM. PORT)
  1041. '
  1042. '        DESIRED BAUD        DIVISIOR (DECIMAL) TO OBTAIN DESIRED BAUD RATE
  1043. '            RATE              PCjr         PC AND XT
  1044. '              50             2237             2304
  1045. '              75             1491             1536
  1046. '             110             1017             1047
  1047. '             134.5            832              857
  1048. '             150              746              768
  1049. '             300              373              384
  1050. '             600              186              192
  1051. '            1200               93               96
  1052. '            1800               62               64
  1053. '            2000               56               58
  1054. '            2400               47               48
  1055. '            3600               31               32
  1056. '            4800               23               24
  1057. '            7200          not available         16
  1058. '            9600          not available         12
  1059. * ------[ first line different ]------
  1060. '           14400          not available          8
  1061. '           19200          not available          6
  1062. '           38400               "                 3
  1063. '  OUTPUTS -- BAUD RATE SET IN THE RS232 INTERFACE
  1064. '
  1065. '  PURPOSE -- To set the baud rate in the RS232 interface
  1066. '             inpependent of the baud rate the communications port
  1067. '             was opened at
  1068. '
  1069.       SUB SetBaud STATIC
  1070.      IF ZCBaud$ = "" THEN _
  1071.         ZCBaud$ = MID$(ZBaudRates$,(-5 * ZBPS),5) : _                ' BH070401
  1072.         CALL Trim (ZCBaud$)                                          ' BH070401
  1073.      Temp! = VAL(ZCBaud$)
  1074.      IF Temp! > 0 THEN CALL SetBPS (Temp!,ZCBPS)
  1075.      IF (ZCBPS = 0 OR Temp! = 0) THEN ZCBPS = ZBPS
  1076.      IF NOT ZKeepInitBaud THEN _
  1077.         ZTalkToModemAt$ =  MID$(ZBaudRates$,(-5 * ZBPS),5) _
  1078.      ELSE ZTalkToModemAt$ = ZModemInitBaud$
  1079.      CALL Trim (ZTalkToModemAt$)
  1080.      IF LEN(ZTalkToModemAt$) < 5 THEN _
  1081.         ZTalkToModemAt$ = SPACE$(4 - LEN(ZTalkToModemAt$)) + _
  1082.                             ZTalkToModemAt$
  1083.      IF ZEightBit THEN_
  1084.         Parity = 2 : _                                    ' No PARITY
  1085.         DataBits = 3 : _                                  ' 8 DATA BITS
  1086.         StopBits = 0 _                                    ' 1 STOP BIT
  1087.      ELSE Parity = 3 : _                                  ' EVEN PARITY
  1088.           DataBits = 2 : _                                ' 7 DATA BITS
  1089.           StopBits = 0                                    ' 1 STOP BIT
  1090.      ComSpeed! = VAL(ZTalkToModemAt$)
  1091.      IF ComSpeed! > 19200 THEN _
  1092.         IF ZFossil THEN _
  1093.            WasI = &H9600 _
  1094.         ELSE WasI = 19200 _
  1095.      ELSE WasI = ComSpeed!
  1096.      IF ZFossil THEN _
  1097.         CALL FosSpeed(ZComPort,WasI,Parity,DataBits,StopBits) : _
  1098.         EXIT SUB
  1099.      IF ComSpeed! = 2400 THEN _
  1100.         ZBaudRateDivisor = &H30 + (1 * (ZComputerType = 2)) _
  1101.      ELSE IF ComSpeed! = 1200 THEN _
  1102.         ZBaudRateDivisor = &H60 + (3 * (ZComputerType = 2)) _
  1103.      ELSE IF ComSpeed! = 9600 THEN _
  1104.         ZBaudRateDivisor = &HC _
  1105.      ELSE IF ComSpeed! = 300 THEN _
  1106.         ZBaudRateDivisor = &H180 + (11 * (ZComputerType = 2)) _
  1107.      ELSE IF ComSpeed! = 450 THEN _
  1108.         ZBaudRateDivisor = &H100 + (8 * (ZComputerType = 2)) _
  1109.      ELSE IF ComSpeed! = 4800 THEN _
  1110.         ZBaudRateDivisor = &H18 _
  1111.      ELSE IF ComSpeed! = 19200 THEN _
  1112.         ZBaudRateDivisor = &H6 _
  1113.      ELSE IF ComSpeed! = 38400 THEN _
  1114.         ZBaudRateDivisor = &H3
  1115.      MostSignifByte = FIX (ZBaudRateDivisor / 256)
  1116.      LeastSignifByte = ZBaudRateDivisor - (MostSignifByte * 256)
  1117.      LineCntlStatus = INP(ZLineCntlReg)
  1118.      MSBSave = INP(ZMSB)
  1119.      OUT ZMSB,0
  1120.      OUT ZLineCntlReg,LineCntlStatus OR 128
  1121.      OUT ZLSB,LeastSignifByte
  1122.      OUT ZMSB,MostSignifByte
  1123.      OUT ZLineCntlReg,LineCntlStatus
  1124.      OUT ZMSB,MSBSave
  1125.      END SUB
  1126. * REPLACING old line(s) by new
  1127. * ------[ first line different ]------
  1128. 2021 ZOutTxt$ = "To [All],S)ysop," + _                               ' Mpl090202
  1129.                  LEFT$("D)istribution,",-14*EnableCC) + _
  1130.                  " or Full or Partial Name"                          ' DD073101
  1131.      CALL SkipLine (1)
  1132.      ZSemiOnly = ZTrue
  1133.      CALL PopCmdStack
  1134.      IF NOT ZSysop THEN _                             'SM091908
  1135.         CALL SmartText(ZUserIn$,ZFalse,ZFalse,ZFalse)           'Pe 02/06/93
  1136.      IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
  1137.     Call GetRBBSString(23,RBBSString$) : _     'Pe 01/16/93
  1138.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1139.         CALL QuickTPut1 (OutTxt$) : _
  1140.         GOTO 2021
  1141.      Found = ZTrue
  1142.      IF ZWasQ = 0 THEN _
  1143.          MsgTo$ = "ALL" : _    'Pe 12/08/91
  1144.            GOTO 2032 _         'Pe 12/08/91
  1145.      ELSE ZWasDF$ = ZUserIn$(ZAnsIndex) : _
  1146.           CALL AllCaps (ZWasDF$) : _
  1147.           CALL Trim (ZWasDF$) : _                                    ' DD082301
  1148.           ZUserIn$(ZAnsIndex) = ZWasDF$ : _
  1149.           MsgTo$ = ZWasDF$ : _                                       'Pe Efnd mod
  1150.        IF ZWasDF$ = "A" THEN _
  1151.              MsgTo$ = "ALL" _
  1152.           ELSE IF ZWasDF$ = "S" THEN _
  1153.              MsgTo$ = ZSysopFirstName$ + " " +ZSysopLastName$ _   'TS 04/14/09
  1154.           ELSE IF ZWasDF$ = "D" AND EnableCC THEN _
  1155.              GOTO 2025 _
  1156.           ELSE MsgTo$ = ZWasDF$
  1157.      GOTO 2032
  1158. * REPLACING old line(s) by new
  1159. * ------[ first line different ]------
  1160. 2025    Call GetRBBSString(284,RBBSString$)    'Pe 01/26/93
  1161.      ZOutTxt$ = RBBSString$                'Pe 01/26/93 
  1162.      CALL PopCmdStack
  1163.      IF ZWasQ = 0 THEN _
  1164.         GOTO 2021
  1165.      ZFileName$ = ZUserIn$(ZAnsIndex)
  1166.      CALL AllCaps (ZFileName$)
  1167.      IF INSTR("?H",ZFileName$) > 0 THEN _
  1168.         GOTO 2024
  1169.      CALL BadFile (ZFileName$,BadFileNameIndex)
  1170.      ON BadFileNameIndex GOTO 2026,2025,2025
  1171. * REPLACING old line(s) by new
  1172. 2026 ZFileName$ = ZDistriPath$ + ZFileName$ + ".LST"
  1173.      CALL FindItX (ZFileName$,7)
  1174.      IF NOT ZOK THEN _
  1175. * ------[ first line different ]------
  1176.     Call GetRBBSString(70,RBBSString$) : _     'Pe 01/16/93
  1177.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1178.         CALL QuickTPUT1 (ZUserIn$ + OutTxt$) : _
  1179.         ZMplPersUpload = ZFalse : _
  1180.         GOTO 2024
  1181.      ZNumHeaders = 0
  1182.     ZMplPersUpload = ZTrue                                         'Mpl090202
  1183.      CALL OpenWorkA (ZNodeWorkFile$)
  1184.      WHILE NOT EOF(7)
  1185.         CALL ReadDir (7,1)
  1186.         CALL AllCaps (ZOutTxt$)
  1187.         ZWasDF$ = ZOutTxt$
  1188.         CALL WhoCheck (ZOutTxt$, Found, RcvrRecNum)
  1189.         ZNumHeaders = ZNumHeaders + 1
  1190.         CALL PrintWorkA (ZWasDF$ + "," + STR$(-RcvrRecNum*Found))
  1191.      WEND
  1192.      GOTO 2033
  1193. * REPLACING old line(s) by new
  1194. 2032 RcvrRecNum = 0
  1195. * ------[ first line different ]------
  1196.       ZMplPersUpload = ZFalse                                      'Mpl090202
  1197.      IF MsgTo$ <> "ALL" THEN _
  1198.         IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _
  1199.            CALL CheckInt (MsgTo$) : _                                ' KG082201
  1200.            IF ZTestedIntValue = 0 OR ZUserSecLevel < ZSysOpSecLevel THEN _' DD012102
  1201.            ZWasDF = INSTR(MsgTo$+" @"," @") : _
  1202.            TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _
  1203.            ZMplPersUpload = Ztrue : _                              'Pe 06/08/91
  1204.            CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
  1205.            CALL QuickPeek (ZUserIn$(ZAnsIndex),MsgTo$,Found): _    'Pe Efnd mod   
  1206.            CALL AliasChk (MsgTo$,Found,UserNumFound) : _           'Mpl-ALias2            IF MsgTo$ = "" THEN EXIT SUB : _                       ' DD062502
  1207.            IF NOT Found THEN _
  1208.               ZLastIndex = 0 : _
  1209.               RcvrRecNum = 0 : _
  1210.                Call GetRBBSString(71,RBBSString$) : _     'Pe 01/16/93
  1211.                OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1212.               CALL QuickTPut1 (MsgTo$ + OutTxt$ +" " + _' Mpl090202
  1213.                    ZRBBSName$ + "!") : _                             ' DD060101
  1214.               ZMplPersUpload = ZFalse : _                            'Pe 06/08/91
  1215.               IF NOT ZReply THEN _
  1216.              Call GetRBBSString(285,RBBSString$) : _     'Pe 01/26/93
  1217.              ZOutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  1218.                  ZTurboKey = -ZTurboKeyUser : _
  1219.                  ZLastIndex = 0 : _
  1220.                  GOSUB 2034 : _
  1221.                  IF NOT ZYes THEN _
  1222.                     MsgTo$ = "" : _                                  ' DD080301
  1223.                     EXIT SUB                                         ' DD080301
  1224.      CALL CheckInt (MsgTo$)                                          ' DD012102
  1225.      IF ZTestedIntValue > 1 AND ZUserSecLevel >= ZSysOpSecLevel THEN _' DD012102
  1226.         ZMplPersUpload = ZTrue                                       ' DD012102
  1227.      IF MsgTo$ = Temp$ THEN _
  1228.     Call GetRBBSString(286,RBBSString$) : _     'Pe 01/26/93
  1229.     ZOutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  1230.         ZLastIndex = 0 : _
  1231.         GOSUB 2034 : _
  1232.         IF NOT ZYes THEN _
  1233.            MsgTo$ = ""
  1234.      CALL OpenWorkA (ZNodeWorkFile$)
  1235.      CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
  1236.      CLOSE 2
  1237.      ZNumHeaders = ZNumHeaders + 1
  1238.      IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
  1239.         MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
  1240.         (NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
  1241.     Call GetRBBSString(287,RBBSString$) : _     'Pe 01/26/93
  1242.     ZOutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  1243.            CALL PopCmdStack : _
  1244.            IF ZYes THEN _
  1245.               GOTO 2021
  1246. * REPLACING old line(s) by new
  1247. 2075 IF MsgTo$ = "ALL" THEN _
  1248. * ------[ first line different ]------
  1249.     Call GetRBBSString(72,RBBSString$) : _     'Pe 01/16/93
  1250.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1251.         CALL QuickTPut1 (OutTxt$) : _
  1252.         GOTO 2060
  1253.      IF ZWasZ$ = "P" THEN _
  1254.         GOTO 2088
  1255. * REPLACING old line(s) by new
  1256. * ------[ first line different ]------
  1257. 2081    Call GetRBBSString(73,RBBSString$)     'Pe 01/16/93
  1258.      OutTxt$ = RBBSString$                'Pe 01/16/93 
  1259.      CALL QuickTPut1 (OutTxt$ + " " + MsgTo$)
  1260. * REPLACING old line(s) by new
  1261. 2085 ZOutTxt$ = "Password"
  1262.      GOSUB 2096
  1263.      IF ZWasQ = 0 THEN _
  1264.         IF LEFT$(MsgPswd$,1) = "!" THEN _
  1265.            MsgPswd$ = MID$(MsgPswd$,2) : _
  1266. * ------[ first line different ]------
  1267.     Call GetRBBSString(74,RBBSString$) : _     'Pe 01/16/93
  1268.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1269.            CALL QuickTPut1 (OutTxt$ + " " + MsgPswd$) : _
  1270.            RETURN _
  1271.         ELSE _
  1272.         GOTO 2085
  1273.      IF LEN(ZUserIn$) > WasL THEN _
  1274.     Call GetRBBSString(75,RBBSString$) : _     'Pe 01/16/93
  1275.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1276.         CALL QuickTPut1 (STR$(WasL) + OutTxt$) : _
  1277.         GOTO 2085
  1278.      IF WasL = 15 AND LEFT$(ZUserIn$,1) = "!" THEN _
  1279.     Call GetRBBSString(76,RBBSString$) : _     'Pe 01/16/93
  1280.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1281.         CALL QuickTPut1 (OutTxt$) : _
  1282.         GOTO 2085
  1283.      RETURN
  1284. '
  1285. ' **  PASSWORD PROTECT MESSAGE (USERS WITH PASSWORD AND SYSOP CAN READ) *
  1286. '
  1287. * REPLACING old line(s) by new
  1288. * ------[ first line different ]------
  1289. 2088 Call GetRBBSString(288,RBBSString$)     'Pe 01/26/93
  1290.     ZOutTxt$ = RBBSString$                'Pe 01/26/93 
  1291.      ZTurboKey = -ZTurboKeyUser
  1292.      GOSUB 2096
  1293.      IF NOT ZYes THEN _
  1294.         GOTO 2070
  1295.      WasL = 14
  1296.      WasA1$ = "!"
  1297.      GOSUB 2085
  1298.      CALL AllCaps (ZUserIn$)
  1299.      GOTO 2092
  1300. '
  1301. ' ** MAKE MESSAGE KILL PROTECTED (ONLY SENDER, ADDRESSEE AND SYSOP CAN KILL) *
  1302. '
  1303. * REPLACING old line(s) by new
  1304. 2250 ' $SUBTITLE: 'WhoCheck - Checks whether user exists'
  1305. ' $PAGE
  1306. '
  1307. '  NAME    -- WhoCheck
  1308. '
  1309. '  INPUTS  --   PARAMETER                    MEANING
  1310. '              WhoFind$                User to find
  1311. '
  1312. '  OUTPUTS --  WhoFound                Whether user found
  1313. '              UserNumFound           Record # of user
  1314. '
  1315. '  PURPOSE --  Validate that user record exists.  Sysop
  1316. '              counted as found even if lack user record.
  1317. '
  1318.      SUB WhoCheck (WhoFind$,WhoFound,UserNumFound) STATIC
  1319.      UserNumFound = 0
  1320.      IF ZStartHash <> 1 THEN _
  1321.         WhoFound = ZTrue : _
  1322.         EXIT SUB
  1323.      Work128$ = ZUserRecord$
  1324.      WhoFound = ZFalse
  1325.      ToSysop = (INSTR(WhoFind$,"SYSOP") > 0 OR _
  1326.                 INSTR(WhoFind$,ZSysopFirstName$ + " " + ZSysopLastName$) > 0)
  1327. * ------[ first line different ]------
  1328.      CALL OpenUser (ZHighestUserRecord)
  1329.      FIELD 5, 128 AS ZUserRecord$
  1330.      IF ToSysop THEN _
  1331.     WasX$ = ZSecretName$ : _ 
  1332.          Call MenuPlus (4) _                    ' Pe Menu174
  1333.      ELSE WasX$ = WhoFind$
  1334.      ZWasDF = INSTR(WasX$+"@","@")
  1335.      WasX$ = LEFT$(WasX$,ZWasDF)
  1336.      IF LEN(WasX$) > 1 THEN _
  1337.         CALL FindUser (WasX$,"",ZStartHash,ZLenHash,_
  1338.                        0,0,ZHighestUserRecord,WhoFound,_
  1339.                        UserNumFound,ZWasSL)
  1340.      LSET ZUserRecord$ = Work128$
  1341.      IF NOT WhoFound THEN _
  1342.         IF ToSysop THEN _
  1343.            WhoFound = ZTrue 
  1344.      END SUB
  1345. * REPLACING old line(s) by new
  1346. 2620 ZOutTxt$ = "Line #" + _
  1347.           STR$(WasL) + _
  1348.           " is:" + _
  1349.           ZReturnLineFeed$ + _
  1350.           ZOutTxt$(WasL)
  1351.      ZSubParm = 3
  1352.      CALL TPut
  1353.      GOSUB 2695
  1354.      IF NOT ZExpertUser THEN _
  1355. * ------[ first line different ]------
  1356.     Call GetRBBSString(77,RBBSString$) : _     'Pe 01/16/93
  1357.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1358.         CALL QuickTPut1 (OutTxt$)
  1359.      ZOutTxt$ = "Search for" + _
  1360.           ZPressEnterExpert$
  1361.      ZMacroMin = 99
  1362.      ZParseOff = ZTrue
  1363.      ZSubParm = 1
  1364.      GOSUB 2694
  1365.      IF ZWasQ = 0 THEN _
  1366.         EXIT SUB
  1367.      ZWasY$ = LEFT$(ZUserIn$,1)
  1368.      IF ZWasY$ = RIGHT$(ZUserIn$,1) THEN _
  1369.         IF LEN(ZUserIn$) > 2 THEN _
  1370.            WasX = INSTR(2,ZUserIn$,ZWasY$) : _
  1371.            IF WasX < LEN(ZUserIn$) THEN _
  1372.               IF ZWasY$ < "0" OR (ZWasY$ > "9" AND ZWasY$ < "A") THEN _
  1373.                  ZUserIn$ = MID$(ZUserIn$,2,LEN(ZUserIn$)-2) : _
  1374.                  WasX = WasX - 1 : _
  1375.                  GOTO 2622
  1376.      WasX = INSTR(ZUserIn$,";")
  1377. * REPLACING old line(s) by new
  1378. 2660 WasX = INSTR(1,ZOutTxt$(WasL),WasX$)
  1379.      IF WasX = 0 THEN _
  1380. * ------[ first line different ]------
  1381.     Call GetRBBSString(78,RBBSString$) : _     'Pe 01/16/93
  1382.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1383.         CALL QuickTPut1 ("<" + WasX$ + OutTxt$ + STR$(WasL)) : _
  1384.         GOTO 2620
  1385. * REPLACING old line(s) by new
  1386. 3730 IF TabToSpace > 0 THEN _
  1387.         WasX$ = " " : _
  1388.         TabToSpace = TabToSpace - 1 : _
  1389.         GOTO 3750
  1390.      CALL FindFKey
  1391.      IF ZSubParm < 0 THEN _
  1392.         EXIT SUB
  1393.      WasX$ = ZKeyPressed$
  1394.      IF WasX$ = "" THEN _
  1395. * ------[ first line different ]------
  1396.         GOTO 3732 : _                                                ' KG011201
  1397.         IF ZLocalUser THEN _
  1398.            GOTO 3733 _
  1399.         ELSE GOTO 3732
  1400.      IF WasX$ = ZEscape$ THEN _
  1401.         ZKeyPressed$ = WasX$ : _
  1402.         EXIT SUB
  1403.      SendRemote = ZTrue
  1404.      WasZ = INSTR(ZLineEditChk$,WasX$)
  1405.      IF WasZ < 1 THEN _
  1406.         GOTO 3750 _
  1407.      ELSE IF WasZ > 4 THEN _
  1408.              GOTO 3870 _
  1409.      ELSE IF WasZ = 1 THEN _
  1410.              GOTO 3810
  1411.      IF ZLocalUser THEN _
  1412.         GOTO 3730
  1413. * REPLACING old line(s) by new
  1414. 3732 IF ZCommPortStack$ <> "" THEN _
  1415.         WasX$ = LEFT$(ZCommPortStack$,1) : _
  1416.         ZCommPortStack$ = RIGHT$(ZCommPortStack$,LEN(ZCommPortStack$)-1) : _
  1417.         GOTO 3738
  1418. * ------[ first line different ]------
  1419.      IF NOT ZLocalUser THEN _                                        ' KG011201
  1420.         CALL EofComm (Char) : _                                      ' KG011201
  1421.         IF Char <> -1 THEN _                                         ' KG011201
  1422.            GOTO 3736                                                 ' KG011201
  1423. * REPLACING old line(s) by new
  1424. 3750 IF SendRemote THEN _
  1425.         CALL PutCom(WasX$)
  1426. * ------[ first line different ]------
  1427.      IF WasX$ = ZCarriageReturn$ THEN _
  1428.         CALL LPrnt (ZCrLf$,0) : _
  1429.         Col = Col - 1 : _
  1430.         GOTO 3850 _
  1431.      ELSE _
  1432.         CALL LPrnt (WasX$, 0)
  1433. * REPLACING old line(s) by new
  1434. 3952 ' $SUBTITLE: 'KillMsg - subroutine to delete messages'
  1435. ' $PAGE
  1436. '
  1437. '  NAME    -- KillMsg
  1438. '
  1439. '  INPUTS  --     PARAMETER                    MEANING
  1440. '              MsgToKill                   MESSAGE NUMBER TO KILL
  1441. '              ActiveMessages              NUMBER ACTIVE MESSAGES
  1442. '
  1443. '  OUTPUTS --  NONE
  1444. '
  1445. '  PURPOSE --  To kill/delete old or unnecessary messages
  1446. '
  1447. * ------[ first line different ]------
  1448.      SUB KillMsg (MsgToKill,ActiveMessages,ZconfName$) STATIC     'Pe 05/29/91
  1449.      FIELD #1,128 AS ZMsgRec$
  1450.      WasQX = 1
  1451.      NumHeaders = 0
  1452. * REPLACING old line(s) by new
  1453. 3990 IF ZWasZ$ = "^READ^" OR ZWasZ$ = "^KILL^" THEN _
  1454.         CALL ChkMsgName (MsgFromCaller,MsgToCaller) : _
  1455.         IF (MsgFromCaller OR MsgToCaller) THEN _
  1456.            GOTO 4020 _
  1457.         ELSE IF NumHeaders > 1 THEN _
  1458.                 GOTO 4032 _
  1459.              ELSE ZMsgPswd = ZTrue : _
  1460.                   ZAttemptsAllowed = 0 : _
  1461. * ------[ first line different ]------
  1462.            Call GetRBBSString(289,RBBSString$) : _     'Pe 01/26/93
  1463.            ZOutTxt$ = RBBSString$ : _               'Pe 01/26/93 
  1464.                   GOTO 4031
  1465. * REPLACING old line(s) by new
  1466. * ------[ first line different ]------
  1467. 4656 Call GetRBBSString(290,RBBSString$)     'Pe 01/26/93
  1468.      ZOutTxt$ = RBBSString$                'Pe 01/26/93 
  1469.      ZTurboKey = -ZTurboKeyUser
  1470.      ZSubParm = 1
  1471.      CALL TGet
  1472.      IF ZWasQ = 0 OR ZSubParm = -1 THEN _
  1473.         EXIT SUB
  1474.      ZWasZ$ = ZUserIn$(1)
  1475. * REPLACING old line(s) by new
  1476. 4777 ZWasCM = 0
  1477.      CALL CheckTime(TimeChatStarted!,Elapsed!, 2)
  1478.      ZSecsPerSession! = ZSecsPerSession! + Elapsed!
  1479.      IF NOT ZLocalUser THEN _
  1480.         ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
  1481. * ------[ first line different ]------
  1482.     Call GetRBBSString(79,RBBSString$)     'Pe 01/16/93
  1483.      OutTxt$ = RBBSString$               'Pe 01/16/93 
  1484.      CALL QuickTPut (OutTxt$,2)
  1485.      END SUB
  1486. * REPLACING old line(s) by new
  1487. 5500 ' $SUBTITLE: 'BankTime - Allows User to Bank Session Time'
  1488. ' $PAGE
  1489. '  NAME    -- BankTime
  1490. '
  1491. '  INPUTS  -- PARAMETER             MEANING
  1492. '             ZBankTime          Time in bank can use
  1493. '
  1494. '  OUTPUTS -- ZBankTime
  1495. '
  1496. '  PURPOSE -- Allow Users to use Bank session time
  1497. '
  1498.      SUB BankTime STATIC
  1499. * ------[ first line different ]------
  1500.  If ZUserSecLevel < ZOptSec(28) Then Exit Sub   'Pe 08/30/92
  1501.      GOSUB 5507
  1502. * REPLACING old line(s) by new
  1503. 5501 CALL TimeRemain(MinsRemaining)
  1504. * ------[ first line different ]------
  1505.      Call GetRBBSString(291,RBBSString$)     'Pe 01/26/93
  1506.       ZOutTxt$ = STR$(MinsRemaining) + RBBSString$
  1507.      ZTurboKey = -ZTurboKeyUser
  1508.      CALL PopCmdStack
  1509.      IF ZSubParm = -1 THEN _
  1510.         EXIT SUB
  1511.      ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
  1512.      CALL AllCaps(ZWasZ$)
  1513.      ON INSTR("QDW?H",ZWasZ$) GOTO 5509,5505,5502,5508,5508
  1514.      GOTO 5501
  1515. * REPLACING old line(s) by new
  1516. 5503 IF SignTime = 1 THEN _
  1517.         ZOutTxt$ = "Withdraw" _
  1518. * ------[ first line different ]------
  1519.      ELSE ZOutTxt$ = "Deposit "
  1520.      Temp$ = ZOutTxt$ + " how many mins"
  1521.      CALL ChangeInt (ZFalse,Temp$,Temp,0,Maxtime)
  1522.      IF ZWasQ = 0 OR ZTestedIntValue = 0 THEN _
  1523.         GOTO 5501
  1524.      ZTestedIntValue = SignTime * ZTestedIntValue
  1525.      CALL ChkAddedTime (ZTestedIntValue)
  1526.      IF ZTestedIntValue = 0 THEN _
  1527.         GOTO 5501
  1528.    CALL UpdtCalr (Left$(Temp$,8) + STR$(ZTestedIntValue) + " Mins " ,2) ' Pe 02/05/93
  1529.      ZSecsPerSession! = ZSecsPerSession! + (ZTestedIntValue * 60)
  1530.      IF ZMaxPerDay = 0 THEN _                                        ' KG082101
  1531.         ZTimeCredits! = ZTimeCredits! + ZTestedIntValue * 60         ' KG082101
  1532.      ZElapsedTime = ZElapsedTime - ZTestedIntValue
  1533.      ZGlobalBankTime = ZGlobalBankTime - ZTestedIntValue
  1534.      ZBankTime = ZGlobalBankTime   'Pe 11/02/91
  1535.      GOSUB 5507
  1536.      GOTO 5501
  1537. * REPLACING old line(s) by new
  1538. 5505 SignTime = -1            ' deposit
  1539.      MaxTime = ZMaxBank - ZGlobalBankTime
  1540.      IF MaxTime <= 0 THEN _
  1541. * ------[ first line different ]------
  1542.     Call GetRBBSString(80,RBBSString$) : _     'Pe 01/16/93
  1543.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1544.         CALL QuickTPut1 (OutTxt$ + STR$(ZMaxBank)) : _
  1545.         ZLastIndex = 0 : _
  1546.         GOTO 5501
  1547.      IF MaxTime > MinsRemaining THEN _
  1548.         MaxTime = MinsRemaining
  1549.      GOTO 5503
  1550. * REPLACING old line(s) by new
  1551. 5507 IF ZAnsIndex < ZLastIndex THEN _
  1552.         RETURN
  1553. * ------[ first line different ]------
  1554.     Call GetRBBSString(81,RBBSString$) : _     'Pe 01/16/93
  1555.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1556.      ZOutTxt$ = OutTxt$ +" " + _
  1557.                  STR$(ZGlobalBankTime) + " Mins"
  1558.      CALL QuickTPut1(ZOutTxt$)
  1559.      RETURN
  1560. * REPLACING old line(s) by new
  1561. 5509 GOSUB 5507
  1562. * ------[ first line different ]------
  1563.      END SUB
  1564. * REPLACING old line(s) by new
  1565. 9600 ' $SUBTITLE: 'DefaultU - subroutine to update user defauts'
  1566. ' $PAGE
  1567. '
  1568. '  NAME    -- DefaultU
  1569. '
  1570. '  INPUTS  --     PARAMETER                    MEANING
  1571. * ------[ first line different ]------
  1572. '             ZFullScreenEditor     'Pe 09/02/91 AnsiEd Mod
  1573. '             ZBoldText$              Ansi bold (0 no, 1 yes)
  1574. '             ZCheckBulletLogon
  1575. '             ZExpertUser
  1576. '             ZWasGR
  1577. '             ZLastMsgRead
  1578. '             ZLineFeeds
  1579. '             ZNulls
  1580. '             ZPageLength
  1581. '             ZPromptBell
  1582. '             ZRegDate$
  1583. '             ZReqQuesAnswered
  1584. '             ZRightMargin
  1585. '             ZSkipFilesLogon
  1586. '             ZTimesLoggedOn
  1587. '             ZUpperCase
  1588. '             ZUserOption$
  1589. '             ZUserTextColor          Ansi of color (31-37)
  1590. '             ZUserXferDefault$
  1591. '
  1592. '  OUTPUTS--  USER.OPTONS$
  1593. '
  1594. '  PURPOSE --  To update the user's record with their options.
  1595. '  Meaning of graphics preference stored is as follows: where # is
  1596. '  value stored for the color.  E.g. if graphics perference for text
  1597. '  files is color, and preference for normal text is light yellow,
  1598. '  graphics preference stored is 38.  Colors are Red, Green, Yellow,
  1599. '  Blue, Purple, Cyan, and White.
  1600. '
  1601. '             normal                  bold
  1602. ' Graphics R  G  Y  B  P  C  W    R  G  Y  B  P  C  W
  1603. '   none  30 33 36 39 42 45 48 | 51 54 57 60 63 66 69
  1604. '   ansi  31 34 37 40 43 46 49 | 52 55 58 61 64 67 70
  1605. '  color  32 35 38 41 44 47 50 | 53 56 59 62 65 68 71
  1606. '
  1607.      SUB DefaultU STATIC
  1608.      ZWasA =    -ZPromptBell          -2 * ZExpertUser _
  1609.             -4 * ZNulls               -8 * ZUpperCase _
  1610.            -16 * ZLineFeeds          -32 * ZCheckBulletLogon _
  1611.            -64 * ZSkipFilesLogon    -128 * ZFullScreenEditor _
  1612.           -256 * ZReqQuesAnswered   -512 * ZMailWaiting _
  1613.          -1024 * (NOT ZHiLiteOff)  -2048 * ZTurboKeyUser _
  1614.          -4096 * ZFileWaiting      -8192 * ZAvailableForChat    'Rchat-Mpl
  1615.      WasX = 3*ZUserTextColor - 63 + 21*VAL(ZBoldText$) + ZWasGR
  1616.      IF WasX < 1 OR WasX > 255 THEN _
  1617.         WasX = 48
  1618.      LSET ZUserOption$ = _
  1619.         MKI$(ZTimesLoggedOn) + _
  1620.         MKI$(ZLastMsgRead) + _
  1621.         ZUserXferDefault$ + _
  1622.         CHR$(WasX) + _
  1623.         MKI$(ZRightMargin) + _
  1624.         MKI$(ZWasA) + _
  1625.         ZRegDate$ + _
  1626.         CHR$(ZPageLength) + _
  1627.         ZEchoer$
  1628.      END SUB
  1629. * REPLACING old line(s) by new
  1630. 9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
  1631. ' $PAGE
  1632. '
  1633. '  NAME    -- WhosOn
  1634. '
  1635. '  INPUTS  --     PARAMETER                    MEANING
  1636. '                NumNodes                   # of nodes to check
  1637. '                ZActiveMessageFile$        Current message file
  1638. '                ZOrigMsgFile$              Main msg file
  1639. '
  1640. '  OUTPUTS --  None
  1641. '
  1642. '  PURPOSE --  To display who is on each node.
  1643. '
  1644.      SUB WhosOn (NumNodes) STATIC
  1645.      WasA1$ = ZActiveMessageFile$
  1646.      ZActiveMessageFile$ = ZOrigMsgFile$
  1647.      CALL OpenMsg
  1648.      FIELD 1, 128 AS ZMsgRec$
  1649.      FOR NodeIndex = 2 TO NumNodes + 1
  1650.         GET 1,NodeIndex
  1651.         ZOutTxt$ = ZFG1$ + "Node" + _
  1652.              STR$(NodeIndex - 1) + ZFG2$
  1653. * ------[ first line different ]------
  1654.         RecIndex = -VAL(MID$(ZMsgRec$,44,2))     ' KG032604       ' RecIndex = VAL(MID$(ZMsgRec$,44,2))
  1655.         IF RecIndex >= 0 THEN _
  1656.            RecIndex = -1
  1657.         WasAX$ = MID$(ZBaudRates$,(-5 * RecIndex ),5) + _
  1658.               " BPS: "
  1659.         IF MID$(ZMsgRec$,55,2) = "-1" AND NOT ZSysop THEN _
  1660.            ZWasY$ = "SYSOP" + SPACE$(21) _
  1661.         ELSE ZWasY$ = MID$(ZMsgRec$,1,26)
  1662.         WasAX$ = WasAX$ + ZFG3$ + ZWasY$
  1663. '* ------[ first line different ]------
  1664.         IF MID$(ZMsgRec$,40,2) <> "-1" THEN                          ' CHAT0805
  1665.            CALL SaveUserActivity(WhatTheyDoin$, NodeIndex, ZTrue)    ' CHAT0813
  1666.            IF WhatTheyDoin$ = "C" THEN                               ' CHAT0813
  1667.               WasAX$ = WasAX$ + ZFG4$ + "(In Chat System)"     ' CHAT0813
  1668.             ELSEIF WhatTheyDOin$ = "F" THEN                          ' CHAT0813
  1669.               WasAX$ = WasAX$ + ZFG4$ + "(In File System)"           ' CHAT0813
  1670.             ELSEIF WhatTheyDoin$ = "M" THEN                          ' CHAT0813
  1671.               WasAX$ = WasAX$ + ZFG4$ + "(In Message System)"        ' CHAT0813
  1672.             ELSE                                                     ' CHAT0813
  1673.               WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22)         ' CHAT0813
  1674.            END IF                                                    ' CHAT0813
  1675.          ELSE                                                        ' CHAT0805
  1676.            WasAX$ = WasAX$ + ZFG4$ + "(In a Door)"                   ' CHAT0805
  1677.         END IF                                                       ' CHAT0805
  1678. 'Pe 02/29/92
  1679.         IF MID$(ZMsgRec$,57,1) = "A" THEN _
  1680.            ZOutTxt$ = ZOutTxt$ + "  Online at " + _
  1681.                 WasAX$ _
  1682.              ELSE ZOutTxt$ = ZOutTxt$ + _
  1683.                        " Offline at " + _
  1684.                        WasAX$
  1685.  
  1686. '        IF MID$(ZMsgRec$,57,1) = "A" THEN _
  1687. '           ZOutTxt$ = ZOutTxt$ + "  Online at " + _
  1688. '                WasAX$ _
  1689. '        ELSE IF NOT ZSysop THEN _
  1690. '                ZOutTxt$ = ZOutTxt$ + _
  1691. '                     " Waiting for next caller" _
  1692. '             ELSE ZOutTxt$ = ZOutTxt$ + _
  1693. '                       " Offline at " + _
  1694. '                       WasAX$
  1695.  
  1696.         CALL QuickTPut1 (ZOutTxt$)
  1697.         CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
  1698.         IF ZNo THEN _
  1699.            NodeIndex = NumNodes + 2
  1700.      NEXT
  1701.      ZActiveMessageFile$ = WasA1$
  1702.      CALL QuickTPut (ZEmphasizeOff$,0)
  1703.      END SUB
  1704. * REPLACING old line(s) by new
  1705. 10410 ' $SUBTITLE: 'RecoverMsg - sub to recover deleted messages'
  1706. ' $PAGE
  1707. '
  1708. '  NAME    -- RecoverMsg
  1709. '
  1710. '  INPUTS  --     PARAMETER                    MEANING
  1711. '               MsgToRecover          MESSAGE NUMBER TO RECOVER
  1712. '               FirstMsgRecord        RECORD # FOR First MSG
  1713. '
  1714. '  OUTPUTS --  ActionFlag                 SET TO 0 IF ERROR
  1715. '                                         SET TO -1 IF No ERROR
  1716. '
  1717. '  PURPOSE --  To recover deleted messages.  Note that this is only
  1718. '              possible if you have not compressed your message file
  1719. '              using config.
  1720. '
  1721. * ------[ first line different ]------
  1722.       SUB RecoverMsg (MsgToRecover,FirstMsgRecord,ActionFlag,ZConfName$) STATIC 'Pe 06/09/91
  1723.       FIELD #1,128 AS ZMsgRec$
  1724.       MsgRec = FirstMsgRecord
  1725. * REPLACING old line(s) by new
  1726. 10600 ' $SUBTITLE: 'UpdateU -- Update the users record at logoff'
  1727. ' $PAGE
  1728. '  NAME    -- UpdateU
  1729. '
  1730. '  INPUTS  -- PARAMETER             MEANING
  1731. '             ZAdjustedSecurity
  1732. '             ZCurDate$
  1733. '             ZDnlds
  1734. '             ZElapsedTime
  1735. '             ZListDir
  1736. '             ZMainUserFileIndex
  1737. '             ZSecsPerSession!
  1738. '             ZUplds
  1739. '             ZUserSecLevel
  1740. '
  1741. '  OUTPUTS -- ZElapsedTime$
  1742. '             ZListNewDate$
  1743. '             ZSecLevel$
  1744. '             ZUserDnlds$
  1745. '             ZUserUplds$
  1746. '
  1747. '  PURPOSE -- Update the user record for the user when the user
  1748. '             exits RBBS-PC.
  1749. '
  1750.       SUB UpdateU (LoggingOff) STATIC
  1751. * ------[ first line different ]------
  1752.       IF ZActiveUserName$ = "" OR ZFirstName$ = "" OR ZSubParm = -1 THEN _
  1753.          EXIT SUB
  1754.       IF ZUserFileIndex < 1 THEN _
  1755.          GOTO 10607
  1756.       UpdateDefaults = ZTrue
  1757. * REPLACING old line(s) by new
  1758. 10607 IF ZExitToDoors OR NOT LoggingOff THEN _
  1759. * ------[ first line different ]------
  1760.                            EXIT SUB
  1761. CALL QuickTPut1 (ZCrLF$ +ZFG1$ + STR$(MinsRemaining)+ ZFG2$ + _
  1762.                 " min left Today" +ZCrLF$ +" Banked Time.  " + ZFG1$+_
  1763.                   STR$(ZGlobalBankTime) + ZFG2$+" minutes.")
  1764. Call QuickTput1  (ZFG3$ +" "+ ZFirstName$ + ZFG2$ + ", Thanks for calling "+_
  1765.                   ZFG1$ +" " + ZOrigRBBSName$ +ZFG2$ +" please call again!" + _
  1766.                    ZColorReset$)
  1767.       CALL DelayTime (8 + ZBPS)
  1768.        Call MenuPlus (5)      ' Pe Menu174
  1769.       END SUB
  1770. * REPLACING old line(s) by new
  1771. 10935 ' $SUBTITLE: 'DosExit -- Setup to exit to DOS for ZSysop'
  1772. ' $PAGE
  1773. '  NAME    -- DosExit
  1774. '
  1775. '  INPUTS  -- PARAMETER             MEANING
  1776. '             ZComPort$
  1777. '             ZDoorsTermType
  1778. '             ZMultiLinkPresent
  1779. '             ZRBBSBat$
  1780. '             ZRedirectIOMethod
  1781. '             ZUseDeviceDriver$
  1782. '
  1783. '  OUTPUTS -- ZWasQ                    NUMBER OF LINES TO WRITE OUT TO
  1784. '                                      ZRCTTYBat$
  1785. '             ZUserIn$()               LINES TO WRITE OUT TO ZRCTTYBat$
  1786. '
  1787. '  PURPOSE -- Set up ZUserIn$() and ZWasQ in order to call "RBBSExit" and
  1788. '             exit to DOS for the remote RBBS-PC sysop
  1789. '
  1790.       SUB DosExit STATIC
  1791. * ------[ first line different ]------
  1792. * INSERTING new line(s)
  1793. 10940 Call GetRBBSString(292,RBBSString$)     'Pe 01/16/93
  1794.        ZOutTxt$ = RBBSString$               'Pe 01/16/93 
  1795.             ZTurboKey = -ZTurboKeyUser
  1796.             CALL TGet
  1797.             CALL AllCaps (ZUserIn$)
  1798.     IF ZYES THEN_
  1799.        GOTO 10955
  1800. '
  1801.       ZOutTxt$(1) = "ECHO OFF"
  1802.       IF ZUseDeviceDriver$ <> "" THEN _
  1803.          Port$ = ZUseDeviceDriver$ _
  1804.       ELSE Port$ = "COM" + RIGHT$(ZComPort$,1)
  1805.       IF ZRedirectIOMethod THEN _
  1806.          ZFF = 5 : _
  1807.          ZOutTxt$(2) = "CTTY " + _
  1808.                  Port$ : _
  1809.          ZOutTxt$(3) = ZDiskForDos$ + _
  1810.                  "COMMAND" : _
  1811.          ZOutTxt$(4) = "CTTY CON" : _
  1812.          ZOutTxt$(5) = ZRBBSBat$ _
  1813.       ELSE ZFF = 3 : _
  1814.            ZOutTxt$(2) = ZDiskForDos$ + _
  1815.                    "COMMAND >" + _
  1816.                    Port$ + _
  1817.                    " <" + _
  1818.                    Port$ : _
  1819.            ZOutTxt$(3) = ZRBBSBat$
  1820. * REPLACING old line(s) by new
  1821. 10950 CALL AMorPM
  1822. * ------[ first line different ]------
  1823.      CALL UpdtCalr ("Exited to DOS at " + ZTime$,2)
  1824.     Call GetRBBSString(82,RBBSString$)     'Pe 01/16/93
  1825.      OutTxt$ = RBBSString$               'Pe 01/16/93 
  1826.       CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + ZCrLF$ + OutTxt$)
  1827.       CALL RBBSExit (ZOutTxt$(),ZFF)
  1828.  
  1829. '
  1830. * INSERTING new line(s)
  1831. 10955  Call GetRBBSString(83,RBBSString$)     'Pe 01/16/93
  1832.         ZOutTxt$ = RBBSString$               'Pe 01/16/93 
  1833.             CALL TGet
  1834.             CALL AllCaps (ZUserIn$)
  1835. IF ZUserIn$ = "" or ZWasQ = 0 then_
  1836.    GOTO 10940
  1837. Call Findit(ZUserIn$)  'Pe 12/28/92
  1838.  If NOT ZOK then _     'Pe 12/28/92
  1839.     Call GetRBBSString(84,RBBSString$) : _     'Pe 01/16/93
  1840.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1841.   Call QuickTput ( OutTxt$ + " " + ZUserIn$  ,2)
  1842.      GOTO 10940        'Pe 12/28/92
  1843.     ZWasZ$ = ZUserIn$
  1844.      CALL DoorExit (ZFalse)
  1845.       END SUB
  1846. * REPLACING old line(s) by new
  1847. * ------[ first line different ]------
  1848. 10985 CALL ReadParms (ZOutTxt$(),10,1)                   'Pe 01/30/93 ' DD011801/DOORCARRIERDROP
  1849.       IF ZErrCode > 0 THEN _
  1850.          IF ReqDoorsDef THEN _
  1851.             EXIT SUB _
  1852.          ELSE ExitTo$ = ExitTo$ + " " + ZNodeID$ : _
  1853.               GOTO 10989
  1854.       IF ExitTo$ <> ZOutTxt$(1) THEN _
  1855.          GOTO 10985
  1856.       CALL CheckInt (ZOutTxt$(2))
  1857.       IF ZErrCode > 0 THEN _
  1858.          ZErrCode = 0 : _
  1859.          GOTO 10985
  1860.       IF ZUserSecLevel < ZTestedIntValue THEN _
  1861.     Call GetRBBSString(85,RBBSString$) : _     'Pe 01/16/93
  1862.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1863.          CALL QuickTPut1 (OutTxt$) : _
  1864.          EXIT SUB
  1865.       WasX$ = LEFT$(ZOutTxt$(5),INSTR(ZOutTxt$(5)+" "," ")-1)
  1866.       CALL FindIt (WasX$)
  1867.       IF NOT ZOK THEN _
  1868.          GOTO 10986
  1869.       ZFileName$ = ZOutTxt$(3)
  1870.       ExitMethod$ = ZOutTxt$(4)
  1871.       ExitTemplate$ = ZOutTxt$(5)
  1872.       ZDoorDisplay$ = ZOutTxt$(7)
  1873.       DoorTime$ = ZOutTxt$(8)
  1874.       ZDoorDropFile$ = ZOutTxt$(9)                                   ' DD121702/DOORS
  1875.       ZDoorCarrierDropOK$ = ZOutTxt$(10)                             ' DD011801/DOORCARRIERDROP
  1876.       CALL AskUsers
  1877.       CALL SmartText (ExitTemplate$,ZFalse,ZFalse,ZFalse)    'Pe 02/06/93
  1878.       CALL MetaGSR (ExitTemplate$,ZFalse)
  1879.       ExitTo$ = ExitTemplate$
  1880.       GOTO 10989
  1881. * REPLACING old line(s) by new
  1882. 10989 IF ZTransferFunction = 3 THEN _
  1883.          ZWasY$ = "Registration" _
  1884.       ELSE ZWasY$ = ZDooredTo$
  1885. * ------[ first line different ]------
  1886.       ZOutTxt$ = " Swapping " +ZOrigRBBSName$ + " out and " + _
  1887.                      ZWasY$ + _
  1888.                      " door in... "
  1889.       ZSubParm = 5
  1890.       CALL TPut
  1891.       CALL UpdtCalr (ZDooredTo$ + " door opened!",2)
  1892.       CALL DoorInfo
  1893.       IF ExitMethod$ = "S" THEN _
  1894.          CALL UpdateU (ZFalse) : _
  1895.          Call SaveProf (3) : _            'Pe 07/12/92
  1896.          CLOSE 4,5 : _
  1897.          CALL ShellExit (ExitTemplate$) : _
  1898.          ZPrevCaller$ = "" : _
  1899.          CALL SetCall : _
  1900.          CALL DoorReturn : _
  1901.          CALL BufFile (ZDoorDisplay$,WasX) : _
  1902.          ZExitToDoors = ZFalse _
  1903.       ELSE ZOutTxt$(1) = ZDiskForDos$ + _
  1904.                   "COMMAND /C " + _
  1905.                   ExitTo$ : _
  1906.            ZOutTxt$(2) = ZRBBSBat$ : _
  1907.            CALL RBBSExit (ZOutTxt$(),2)
  1908.        END SUB
  1909. * REPLACING old line(s) by new
  1910. 10991 ' $SUBTITLE: 'DoorInfo -- Write info for doors to file'
  1911.       SUB DoorInfo STATIC
  1912.       CLOSE 2
  1913. * ------[ first line different ]------
  1914.       IF ZDoorDropFile$ = "R" OR ZDoorDropFile$ = "S" THEN _         ' DD012702/DOORS
  1915.          CALL DoorSys                                            ' DD121702/DOORS
  1916.  
  1917.       IF ZDoorDropFile$ = "P" THEN _                                 ' DD121702/DOORS
  1918.          CALL PCBoardSys                                         ' DD121702/DOORS
  1919.  
  1920.       IF ZDoorDropFile$ = "W" THEN _                                 ' DD121702/DOORS
  1921.          CALL CallInfoBBS                                        ' DD121702/DOORS
  1922.  
  1923.       OPEN "O",2,"DORINFO" + _
  1924.                  ZNodeFileID$ + _
  1925.                  ".DEF"
  1926.       PRINT #2,ZRBBSName$
  1927.       PRINT #2,ZSysopFirstName$
  1928.       PRINT #2,ZSysopLastName$
  1929.       IF ZLocalUser THEN _
  1930.          PRINT #2,"COM0" _
  1931.       ELSE PRINT #2,ZComPort$
  1932.       ZUserIn$ = MID$(ZBaudParity$, INSTR(ZBaudParity$, ","))        ' MB040401
  1933.       PRINT #2,ZTalkToModemAt$;" BAUD";ZUserIn$                      ' KG071101
  1934.       PRINT #2,ZNetworkType
  1935.       IF ZGlobalSysop THEN _
  1936.          PRINT #2,"SYSOP" : _
  1937.          PRINT #2,"" _
  1938.       ELSE PRINT #2,OrigFirstName$ : _        'Lk Alias fix
  1939.            PRINT #2,ZLastName$
  1940.       PRINT #2,ZCityState$
  1941.       PRINT #2,ZWasGR
  1942.       PRINT #2,ZUserSecLevel
  1943.       CALL TimeRemain (MinsRemaining)
  1944.       CALL CheckInt (DoorTime$)
  1945.       IF ZErrCode = 0 AND ZTestedIntValue > 0 THEN _
  1946.          IF MinsRemaining > ZTestedIntValue THEN _
  1947.             MinsRemaining = ZTestedIntValue
  1948.       PRINT #2,INT(MinsRemaining)
  1949.       PRINT #2,ZFossil
  1950.       CLOSE 2
  1951. '      Call DoorSys                                                'ER 06/17/92
  1952.       END SUB
  1953. * REPLACING old line(s) by new
  1954. 10994 CLOSE 3
  1955.       ZExitToDoors = ZTrue
  1956.       IF NOT ZFossil THEN _
  1957.          OUT ZModemCntlReg,INP(ZModemCntlReg) OR 1
  1958. * ------[ first line different ]------
  1959. * REPLACING old line(s) by new
  1960. 12880 ZParseOff = ZTrue
  1961.       ZOutTxt$ = Ques$
  1962.       CALL PopCmdStack
  1963.       IF ZSubParm = -1 THEN _
  1964.          GOTO 12882
  1965.       IF ZWasQ = 0 THEN _
  1966.          GOTO 12880
  1967.       IF LEN(ZUserIn$(ZAnsIndex)) > MaxLen THEN _
  1968.          ZLastIndex = 0 : _
  1969. * ------[ first line different ]------
  1970.     Call GetRBBSString(75,RBBSString$) : _     'Pe 01/16/93
  1971.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1972.          CALL QuickTPut1 (STR$(MaxLen) + OutTxt$) : _
  1973.          GOTO 12880_
  1974.       ELSE IF LEN(ZUserIn$(ZAnsIndex)) < MinLen THEN _
  1975.               ZLastIndex = 0 : _
  1976.     Call GetRBBSString(86,RBBSString$) : _     'Pe 01/16/93
  1977.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  1978.               CALL QuickTPut1 (STR$(MinLen) + OutTxt$) : _
  1979.               GOTO 12880
  1980.       Ans$ = ZUserIn$(ZAnsIndex)
  1981.       IF ZAnsIndex < ZLastIndex THEN _
  1982.          GOTO 12881
  1983.       ZOutTxt$ = ZUserIn$(ZAnsIndex) + _
  1984.            ", right ([Y],N)"
  1985.       ZTurboKey = -ZTurboKeyUser
  1986.       ZSubParm = 1
  1987.       CALL TGet
  1988.       IF ZSubParm = -1 THEN _
  1989.          GOTO 12882
  1990.       IF ZNo THEN _
  1991.        GOTO 12880
  1992. * REPLACING old line(s) by new
  1993. 20096 ' $SUBTITLE: 'CheckRatio - subroutine to print ul/dl ratio'
  1994. ' $PAGE
  1995. '
  1996. '  NAME    -- CheckRatio
  1997. '
  1998. '  INPUTS  --   PARAMETER                    MEANING
  1999. '               TellUser           TELL USER THEIR RATIO
  2000. '               ZDnlds             FILES DOWNLOADED
  2001. '               ZDLBytes!          BYTES DOWNLOADED
  2002. '               ZUplds             FILES UPLOADED
  2003. '               ZULBytes!          BYTES UPLOADED
  2004. '
  2005. '  OUTPUTS --   ZOK                 -1 if okay to download, 0 otherwise
  2006. '
  2007. '  PURPOSE -- To determine whether the users violated
  2008. '             their upload to download restriction
  2009. '
  2010.       SUB CheckRatio (TellUser) STATIC
  2011.       ZOK = ZTrue
  2012. * ------[ first line different ]------
  2013.  IF ZFreeDnld THEN _
  2014.        GOTO 20110
  2015. '
  2016. ' Detemine method of ratio checking.  Look ahead to amount downloaded
  2017. '
  2018.       IF ZByteMethod = 1 OR ZByteMethod = 3 THEN _
  2019.          Method$ = "Bytes" : _
  2020.          ULWork# = ZULBytes! : _
  2021.          DLWork# = ZDLBytes! + ZNumDnldBytes!
  2022.       IF ZByteMethod = 0 OR ZByteMethod = 2 THEN _
  2023.          Method$ = "Files" : _
  2024.          ULWork# = ZUplds : _
  2025.          DLWork# = ZDnlds + ZDownFiles
  2026.       IF ULWork# < ZInitialCredit# THEN _
  2027.          ULWork# = ZInitialCredit#
  2028.       IF ZByteMethod = 2 THEN _
  2029.          Today# = ZRatioRestrict# - ZDLToday! - ZDownFiles
  2030.       IF ZByteMethod = 3 THEN _
  2031.          Today# = ZRatioRestrict# - ZBytesToday! - ZNumDnldBytes!
  2032. '
  2033.       Ratio# = 0
  2034.       RatioSuffix$ = ":0"
  2035.       IF ULWork# > 0 THEN _
  2036.          Ratio# = (DLWork# / ULWork#) : _
  2037.          RatioSuffix$ = ":1"
  2038.       IF ZByteMethod > 1 THEN _
  2039.  ZOutTxt$ =  "Today's Downloaded Files: " + STR$(ZDLToday! + ZDownFiles)+ZCrLf$ + _
  2040.              "Number of Bytes Today  : " + STR$(ZBytesToday! + ZNumDnldBytes!) : _
  2041.          ZSubParm = 5 : _
  2042.          CALL TPut : _
  2043.          CALL SkipLine (1) : _
  2044.          GOTO 20100
  2045.       WasX$ = STR$(Ratio#)
  2046.       X = INSTR(WasX$,".")
  2047.       IF X > 0 THEN _
  2048.          WasX$ = LEFT$(WasX$,X+1)
  2049. ZOutTxt$ = ZFG1$ + Method$ + " Downloaded: " + ZFG2$ +STR$(DLWork#)+ZCrLf$+ _
  2050.            ZFG3$ + Method$ + " Uploaded  : " + ZFG2$ +STR$(ULWork#) + ZCrLf$
  2051. ZOutTxt$ = ZoutTxt$ +  ZFG4$ + "Todays Downloaded Files: " + ZFG1$ + _
  2052.           STR$(ZDLToday! + ZDownFiles) + ZCrLf$ +"Ratio  : " +ZFG3$ + _
  2053.                              WasX$ + RatioSuffix$ +ZEmphasizeOff$
  2054.          ZSubParm = 5
  2055.          CALL TPut        'Pe 02/16/90
  2056. '
  2057. '  CHECK TO SEE IF THE USER HAS VIOLATED THEIR UL/DL RESTRICTION
  2058. '
  2059. * REPLACING old line(s) by new
  2060. * ------[ first line different ]------
  2061. 20100   IF NOT ZEnforceRatios OR ZRatioRestrict# <= 0 THEN _
  2062.          GOTO 20110                                               'Pe 02/16/90
  2063.  IF NOT (ZRatioRestrict# > 0 AND TellUser) THEN _
  2064.          EXIT SUB
  2065.       IF ZByteMethod <= 1 THEN _
  2066.          GOTO 20105
  2067.       IF Today# < 0 THEN _
  2068.          ZOutTxt$ = "Sorry, Daily download limit of" + _
  2069.               STR$(ZRatioRestrict#) + " " + _
  2070.               Method$ + " Reached" : _
  2071.          ZOK = ZFalse : _
  2072.       CALL DelayTime (3) _  'Pe 02/03/90
  2073.       ELSE ZOutTxt$ = "Download balance:" + _
  2074.                 STR$(Today#) + _
  2075.                 " " + _
  2076.                 Method$ : _
  2077.            ZOK = ZTrue
  2078.       ZSubParm = 5
  2079.       CALL TPut
  2080.       CALL SkipLine(1)
  2081.       EXIT SUB
  2082. '
  2083. * REPLACING old line(s) by new
  2084. 20105 IF Ratio# > ZRatioRestrict# OR ULWork# = 0 THEN _
  2085.          ZOK = ZFalse : _
  2086. * ------[ first line different ]------
  2087.            ZOutTxt$ = "Sorry, DL/UL ratio of" + _
  2088.               STR$(ZRatioRestrict#) + _
  2089.               ":1 " + _
  2090.               Method$ + " exceeded" + CHR$(7) : _
  2091.          ZSubParm = 5 : _
  2092.          CALL TPut : _
  2093.          Call DelayTime (4) : _      'Pe 06/13/91
  2094.          ZOutTxt$ = "Minimum upload of" + _
  2095.               STR$(INT(((DLWork# - (ULWork# * ZRatioRestrict#)) _
  2096.               / ZRatioRestrict#) + 1)) + _
  2097.               + " " + Method$ + " required to download" _
  2098.       ELSE ZOutTxt$ = "Balance remaining before upload required:" + _
  2099.                 STR$(INT((ULWork# * ZRatioRestrict#)-DLWork#)) + _
  2100.                 " " + Method$
  2101.       ZSubParm = 5
  2102.       CALL TPut
  2103.      CALL SkipLine (1)
  2104. * REPLACING old line(s) by new
  2105. 20141 IF ZAnsIndex >= ZLastIndex THEN _
  2106.          IF LEN(ZDefaultExtension$) > 0 THEN _
  2107. * ------[ first line different ]------
  2108.     Call GetRBBSString(87,RBBSString$) : _     'Pe 01/16/93
  2109.      OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  2110.             CALL QuickTPut1 (OutTxt$ + "  "+ZDefaultExtension$)
  2111.       WasZ$ = "V"
  2112.       CALL AskItems ("V",WasZ$,ZFalse,"file",ZMarkedFiles$)
  2113.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  2114.          EXIT SUB
  2115.       ZViolation$ = "View ARC"
  2116.       WasX = ZAnsIndex
  2117.       ZAnsIndex = WasX
  2118. * REPLACING old line(s) by new
  2119. 20142 IF ZAnsIndex > ZLastIndex THEN _
  2120. * ------[ first line different ]------
  2121.          IF ZLastIndex > 1 OR Drive$ <> "" THEN _                    ' KG091001
  2122.             EXIT SUB _
  2123.          ELSE GOTO 20141
  2124.       GOSUB 20143
  2125.       IF ZSubParm < 0 THEN _
  2126.          EXIT SUB
  2127.       ZAnsIndex = ZAnsIndex + 1
  2128.       GOTO 20142
  2129. * REPLACING old line(s) by new
  2130. 20143 ZWasZ$ = ZUserIn$(ZAnsIndex)
  2131.       CALL UnMarkItems (ZMarkedFiles$,ZAnsIndex, ZLastIndex,Temp,ZFalse)
  2132.       ZWasZ$ = ZUserIn$(ZAnsIndex)
  2133.       WasZ$ = ZWasZ$
  2134.       CALL AllCaps (ZWasZ$)
  2135.       CALL BreakFileName (ZWasZ$,Drive$,Prefix$,Ext$,ZFalse)
  2136.       IF Ext$ = "" THEN _
  2137.          Ext$ = ZDefaultExtension$ : _
  2138.          ZWasZ$ = ZWasZ$ + "." + ZDefaultExtension$
  2139. * ------[ first line different ]------
  2140.       ZLastExt$ = Ext$                                   'Pe 08/12/91
  2141.       ZFileNameHold$ = ZWasZ$
  2142.       ZFileName$ = ZWasZ$
  2143.       WasI = 1                                        'Pe 04/21/92
  2144.       CALL BadFile (Prefix$,BadFileNameIndex)
  2145.       ON BadFileNameIndex GOTO 20144,20146,20147
  2146. * REPLACING old line(s) by new
  2147. * ------[ first line different ]------
  2148. 20145  IF Drive$ <> "" THEN _                                         ' KG091001
  2149.          ZFileNameHold$ = Prefix$ + "." + Ext$ : _                   ' KG091001
  2150.          CALL FindFile (ZFileName$,ZOK) _                            ' KG091001
  2151.    Else CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,"V")
  2152.       IF ZOK THEN _
  2153.          GOTO 20148
  2154. If ZPersonalDnld Then _                                        'Pe 08/12/91
  2155. ZFileName$ = ZPersonalDrvPath$ + ZWasZ$ : _                    'Pe 08/12/91
  2156. CALL FindFile (ZFileName$,ZOK)                                 'Pe 08/12/91
  2157.  IF ZOK THEN _                                                 'Pe 08/12/91
  2158.     GOTO 20148                                                 'Pe 08/12/91
  2159.    ZWasZ$ = ZFileName$                                         'Pe 04/21/92
  2160.     CALL BreakFileName (ZFileName$,DR$,Prefix$,Ext$,ZFalse)    'Pe 04/21/92
  2161.     WasJ = INSTR(MID$(ZCompressedExt$+". ",WasI),".")          'Pe 04/21/92
  2162.      IF WasJ = 0 THEN _                                        'Pe 04/21/92
  2163.         GOTO 20146                                             'Pe 04/21/92
  2164.          Check$ = MID$(ZCompressedExt$,WasI,WasJ-1)            'Pe 04/21/92
  2165.        WasI = WasI + WasJ                                      'Pe 04/21/92
  2166.       ZFileName$ = Prefix$ + "." + Check$                      'Pe 04/21/92
  2167.       ZLastExt$ = Check$                                       'Pe 04/21/92
  2168.      ZFileNameHold$ = ZFileName$                               'Pe 04/21/92
  2169.    GOTO 20145                                                  'Pe 04/21/92
  2170. * REPLACING old line(s) by new
  2171. * ------[ first line different ]------
  2172. 20148  WasX$ = ZDiskForDos$ + "VU_FILE.BAT"   'Pe 12/29/92
  2173.       ' WasX$ = ZDiskForDos$ + "V" + Ext$ + ".BAT"   'Pe 09/25/91
  2174.       CALL FindIt (WasX$)
  2175.       IF NOT ZOK THEN _
  2176.          GOTO 20170                 'Pe 11/02/91
  2177. '
  2178. '  adds FileSec to ViewArc commands
  2179. '
  2180.       CALL OpenWork (2,ZFileSecFile$)
  2181.       IF ZErrCode = 53 THEN _
  2182.          CALL UpdtCalr ("Missing file " + ZFileSecFile$,2) : _
  2183.          ZErrCode = 0 : _
  2184.          GOTO 20165
  2185. * DELETING old line(s)
  2186. 20150
  2187. * INSERTING new line(s)
  2188. 20160 IF EOF(2) THEN _
  2189.          GOTO 20165
  2190.       CALL ReadParms (ZWorkAra$(),3,1)
  2191.       IF ZErrCode <> 0 THEN _
  2192.          CALL UpdtCalr (ZFileSecFile$ + " error in file!",2) : _
  2193.          GOTO 20165
  2194.      CALL WildFile (ZWorkAra$(1),ZWasZ$,ZOK)
  2195.       IF NOT ZOK THEN _
  2196.          GOTO 20160
  2197.         IF ZUserSecLevel < VAL(ZWorkAra$(2)) THEN _
  2198.          GOTO 20162
  2199.       FilePswd$ = ZWorkAra$(3)
  2200.       IF FilePswd$ = "" THEN _
  2201.          GOTO 20165
  2202.       CALL AraAllCaps (ZUserIn$(),1)
  2203.       IF ZUserIn$(1) = FilePswd$ THEN _
  2204.          GOTO 20165
  2205.     Call GetRBBSString(293,RBBSString$)     'Pe 01/16/93
  2206.      ZOutTxt$ = RBBSString$ + ZFileNameHold$              'Pe 01/16/93 
  2207.             ZSubParm = 1
  2208.          Call TGet
  2209.       IF ZSubParm < 0 THEN _
  2210.          Exit Sub
  2211.       IF ZWasQ = 0 THEN _
  2212.          RETURN
  2213.       CALL AllCaps (ZUserIn$(1))
  2214.       IF ZUserIn$(1) = FilePswd$ THEN _
  2215.          GOTO 20165
  2216. 20162 ZViolation$ = "View " + _
  2217.                    ZFileName$
  2218.     Call GetRBBSString(88,RBBSString$)     'Pe 01/16/93
  2219.      OutTxt$ = RBBSString$               'Pe 01/16/93 
  2220.       Call QuickTPut1 (OutTxt$)
  2221. 20163 CALL SecViolation
  2222.       IF ZDenyAccess THEN _
  2223.          ZFileSysParm = 4
  2224.       RETURN
  2225. '
  2226. '  End of changes
  2227. '
  2228. 20165 Call GetRBBSString(89,RBBSString$) : _     'Pe 01/16/93
  2229.        OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  2230.        CALL QuickTPut1 (ZFileNameHold$ + OutTxt$)       'Pe 09/25/91
  2231.       ZGSRAra$(3) = MID$(RIGHT$(ZComPort$,1)+"0",1-ZLocalUser, 1)
  2232.       CALL OpenWork (2,WasX$)                                     'Pe 11/02/91
  2233.       CALL ReadDir (2,1)
  2234.       IF EOF(2) THEN _
  2235.          ZWasZ$ = ZOutTxt$ : _
  2236.          ZGSRAra$(1) = ZFileName$ : _
  2237.          ZGSRAra$(2) = ZArcWork$ _
  2238.       ELSE ZWasZ$ = WasX$ + " " + ZFileName$ + _
  2239.             " " + ZArcWork$ + " " + ZGSRAra$(3) + " " + Ext$ + " " + ZNodeId$
  2240.       CALL ShellExit (ZWasZ$)
  2241.       CALL Findit (ZDiskForDOS$ + "NOVIEW."+ ZNodeId$)         'Pe 12/29/92
  2242.       IF ZOK Then _          'Pe 12/29/92
  2243.       Call KillWork(ZDiskForDOS$ + "NOVIEW."+ ZNodeId$) : _
  2244.        GOTO 20170                'Pe 12/29/92
  2245.       CALL BufFile (ZArcWork$,WasX)
  2246.       CALL ViewTxt        'located in Rbbssub1.bas
  2247.       RETURN
  2248. 20170     Call GetRBBSString(90,RBBSString$)     'Pe 01/16/93
  2249.      OutTxt$ = RBBSString$                'Pe 01/16/93 
  2250.        CALL QuickTPut1 (OutTxt$ + " "+Ext$+" files")    'Pe 11/02/91
  2251.          RETURN
  2252.       END SUB
  2253. * REPLACING old line(s) by new
  2254. 20245 SUB SetBPS (BaudTest!,BPS) STATIC
  2255. * ------[ first line different ]------
  2256.       IF BaudTest! = 2400 THEN _
  2257.          BPS = -4 _
  2258.       ELSE IF BaudTest! = 1200 OR BaudTest! = 1275 THEN _
  2259.          BPS = -3 _
  2260.       ELSE IF BaudTest! >= 7200 AND BaudTest! < 19200 THEN _
  2261.          GOTO 20246 _
  2262.       ELSE IF BaudTest! = 0 OR BaudTest! = 300 THEN _
  2263.          BaudTest! = 300 : _
  2264.          BPS = -1 _
  2265.       ELSE IF BaudTest! = 19200 THEN _
  2266.          BPS = -11 _
  2267.       ELSE IF BaudTest! = 38400 THEN _
  2268.          BPS = -12 _
  2269.       ELSE IF BaudTest! = 4800 THEN _
  2270.          BPS = -5 _
  2271.       ELSE BPS = 0
  2272.       EXIT SUB
  2273. * REPLACING old line(s) by new
  2274. 20246 IF BaudTest! = 14400 THEN _
  2275.          BPS = -9 _
  2276.       ELSE IF BaudTest! = 16800 THEN _
  2277.          BPS = -10 _
  2278.       ELSE IF BaudTest! = 7200 THEN _
  2279.          BPS = -6 _
  2280.       ELSE IF BaudTest! = 12000 THEN _
  2281.          BPS = -8 _
  2282.       ELSE BPS = -7       ' 9600
  2283.       END SUB
  2284. * ------[ first line different ]------
  2285. '
  2286. * INSERTING new line(s)
  2287. 20340 ' $SUBTITLE: 'QuickPeek - Easy find user to send message to'   ' DD062502
  2288. ' $PAGE                                                              ' DD062502                                                                     ' DD062502
  2289. '  NAME    -- QuickPeek - A Dan & Howard Mod - Dan Drinnon 1992      ' DD062502
  2290. '                                                                    ' DD062502
  2291. '  INPUTS  --     PARAMETER                    MEANING               ' DD062502
  2292. '                                                                    ' DD062502
  2293. '  OUTPUTS --     ZUserIn$                Search String User Input   ' DD062502
  2294. '                 MsgTo$                  Who Message is To          ' DD062502
  2295. '  PURPOSE -- Save User keystrokes when looking for message addressee' DD062502
  2296. '                                                                    ' DD062502
  2297.       SUB QuickPeek (ZUserIn$,MsgTo$,Found)  Static                  ' DD070801
  2298.       IF Found = ZTrue THEN EXIT SUB                                 ' DD070801
  2299.       Found = ZFalse
  2300.       ZLastDateTimeOnSave$ = ZLastDateTimeOn$                        ' DD062502
  2301.       HoldRecordPosition$ = ZUserRecord$                             ' DD081401
  2302.       UserInName$ = ZUserIn$                                         ' DD062502
  2303.       WhichUser = 1 
  2304.       Call GetRBBSString(91,RBBSString$)     'Pe 01/16/93
  2305.       OutTxt$ = RBBSString$                'Pe 01/16/93                                                  ' DD062502
  2306.       CALL QuickTPut (OutTxt$ + " " + MsgTo$,0)                   ' DD081501
  2307.       NumDots = 0                                                    ' DD081401
  2308.       CALL OpenUser (ZHighestUserRecord)                             ' DD062502
  2309.       WHILE NOT EOF(5)                                               ' DD062502
  2310.          GET #5, WhichUser                                           ' DD062502
  2311.          TempMsgTo$ = ZUserName$                                     ' DD062502
  2312.          CALL TRIM (TempMsgTo$)                                      ' DD062502
  2313.          IF UserInName$ = TempMsgTo$ THEN EXIT SUB                   ' DD062502
  2314.          IF INSTR(TempMsgTo$,UserInName$) > 0 THEN                   ' DD062502
  2315.          IF TempMsgTo$ = ZSecretName$ THEN _                         ' DD080301
  2316.             GOTO 20350                                               ' DD080301
  2317.          ZSubParm = 1                                                ' DD062502
  2318.          ZOutTxt$ = ZCRLf$ + "Send to: " + TempMsgTo$ + _            ' DD081401
  2319.                     " (Y)es,[N])o,A)bort)"                           ' DD081401
  2320.          ZTurboKey = -ZTurboKeyUser                                  ' DD062502
  2321.          CALL PopCmdStack                                            ' DD062502
  2322.          IF ZSubParm = -1 THEN _                                     ' DD062502
  2323.             LSET ZUserRecord$ = HoldRecordPosition$ : _              ' DD081401
  2324.             EXIT SUB                                                 ' DD062502
  2325.          ZWasZ$ = ZUserIn$(1)                                        ' DD062502
  2326.          CALL AllCaps (ZWasZ$)                                       ' DD062502
  2327.          IF ZWasZ$ = "A" THEN _                                      ' DD062502
  2328.             MsgTo$ = "" : _                                          ' DD062502
  2329.             Found = ZTrue : _                                        ' DD070801
  2330.             LSET ZUserRecord$ = HoldRecordPosition$ : _              ' DD081401
  2331.             EXIT SUB                                                 ' DD062502
  2332.          IF ZWasZ$ = "Y" THEN                                        ' DD062502
  2333.             MsgTo$ = TempMsgTo$                                      ' DD062502
  2334.             ZUserIn$ = TempMsgTo$                                    ' DD062502
  2335.             Found = ZTrue                                            ' DD070801
  2336.             LSET ZUserRecord$ = HoldRecordPosition$                  ' DD081401
  2337.             ZLastDateTimeOn$ = ZLastDateTimeOnSave$                  ' DD062502
  2338.             EXIT SUB                                                 ' DD062502
  2339.          ELSE                                                        ' DD062502
  2340.             WhichUser=WhichUser+1 : _                                ' DD081401
  2341.             NumDots = 0 : _                                          ' DD081401
  2342.            Call GetRBBSString(91,RBBSString$) : _     'Pe 01/16/93
  2343.              OutTxt$ = RBBSString$ : _               'Pe 01/16/93 
  2344.             CALL QuickTPut (OutTxt$ + " " + ZUserIn$,0)           ' DD081401
  2345.          END IF                                                      ' DD062502
  2346.          ELSE                                                        ' DD062502
  2347. 20350       WhichUser=WhichUser+1                                    ' DD080301
  2348.          END IF                                                      ' DD062502
  2349.          CALL MarkTime (NumDots)                                     ' DD081401
  2350.       WEND                                                           ' DD062502
  2351.       CALL SkipLine (1)                                              ' DD081401
  2352.       Found = ZFalse                                                 ' DD070801
  2353.       LSET ZUserRecord$ = HoldRecordPosition$                        ' DD081401
  2354.       ZLastDateTimeOn$ = ZLastDateTimeOnSave$                        ' DD062502
  2355.       END SUB                                                        ' DD062502
  2356.