home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / BBS_UTIL / BM0406_A.ZIP / 0406.ZIP / RSB20406.MRG < prev    next >
Text File  |  1994-04-06  |  94KB  |  2,193 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against RBBSSUB2.BAS to produce RBBSSUB2.NEW
  3. * RBBSSUB2.BAS:  Date 6-20-1992  Size 140946 bytes
  4. * BusiMod (tm) mods for RBBS v17.4 - (c) 1993,94 by respective authors
  5. * RBBS v17.4 (c) 1986,1992 by D Thomas Mack
  6. * ------------[ Created 04-06-1994 22:00:00 ]------------
  7. * REPLACING old line(s) by new
  8. ' $linesize:132
  9. ' $title: 'RBBSSUB2.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  10. '  Copyright 1991 by D. Thomas Mack, all rights reserved.
  11. '  Name ...............: RBBSSUB2.BAS
  12. '  First Released .....: June 21, 1992
  13. '  Subsequent Releases.: 
  14. '  Copyright ..........: 1986 - 1992
  15. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  16. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  17. '     require error trapping are incorporated within RBBSSUB 2-5 as
  18. '     separately callable subroutines in order to free up as much
  19. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  20. '  Parameters..........: Most parameters are passed via a COMMON statement.
  21. '
  22. ' Subroutine  Line               Function of Subroutine
  23. '   Name     Number
  24. '  Macro          1320  Check/execute macro
  25. '  AnswerIt        200  Answer the telephone when it rings
  26. '  ASCIICodes      129  Allow a CONFIG string to have any ASCII value
  27. '  BadChar         455  Check user name for invalid characters
  28. * ------[ first line different ]------
  29. '  BankTime       5500  Let caller change banked time
  30. '  CheckMacro     1242  Checks for macro and processes
  31. '  CopyRight        97  Display RBBS-PC's copyright notice
  32. '  DEFALTU        9600  Write out the user's defaults
  33. '  DenyAccess     1386  Downgrade security so access denied
  34. '  EditALine      2618  Edits a single line
  35. '  EditDef         120  Edit configuration parameters
  36. '  GetCommand      101  Get RBBS-PC's node id from command line
  37. '  GetTime        9140  Calculates callers elapsed time (hh,mm,ss)
  38. '  GoIdle           90  Release resources when waiting for keyboard input
  39. '  KillMsg        3952  Delete old or unnecessary messages
  40. '  Line25          945  Build and/or update line 25 of RBBS-PC's local screen
  41. '  LineEdit       3700  Edit a line while minimizing string space consumption
  42. '  LPrnt          1480  Subroutine to write to local display
  43. '  MLInit            8  Handle MultiLink initialization/de-initialization
  44. '  MsgProt        2055  Sets protection for a message
  45. '  ParseIt        1637  Parses a string
  46. '  PassWrd         660  Verify user & message passwords
  47. '  PopCmdStack    1650  Get user input, 1st checking command stack
  48. '  PScrn          1483  Print to display
  49. '  QuickLPrnt     1482  Quickly writes count of blocks on file transfer
  50. '  QuickTPut      1478  Fast, but limited, "TPut" equivalent
  51. '  QuickTPut1     1478  Outputs short string following by CR LF
  52. '  RemNonAlf      5100  Removes non-alpha characters from a string
  53. '  RingCaller     1636  Ring caller's bell and put message in emphasis
  54. '  SetBaud        1654  Set baud rate in the 8250 chip of the RS232 interface
  55. '  SetCrLf        1496  Set up the necessary carriage return/line feed string
  56. '  SetThread      4554  Set up request for threading thru messages
  57. '  SetWhoTo       2018  Sets who a message/personal upload is to
  58. '  SkipLine       1485  Write a # of blank lines to the communications port
  59. '  SearchCmd      1238  Searches list of commands in RBBS for a request
  60. '  SecViolation   1380  Process a security violation
  61. '  SysMenu         112  Displays sysop menu/status
  62. '  SysopChat      4773  Sysop and caller chat
  63. '  TestRel         336  Tests for Reliable connect
  64. '  TGet           1498  Read a line from the communications port
  65. '  TPut           1396  Write a line to the communications port
  66. '  Trim            105  Strip leading and trailing blanks from a string
  67. '  TrimTrail       107  Strip off specified string off end of another string
  68. '  VarInit         109  Initialize system variables
  69. '  ViewHelp       1330  Processes help command
  70. '  WhoCheck       2250  Checks whether a user exists in user file
  71. '  WhosOn         9801  Report status of each node - who's on
  72. '
  73. '  $INCLUDE: 'RBBS-VAR.BAS'
  74. '
  75. '  $SUBTITLE: 'MLInit - MultiLink initialization/deinitialization'
  76. '  $PAGE
  77. '
  78. '  NAME    -- MLInit
  79. '
  80. '  INPUTS  --  MLParm = 1             INITIALIZE AT STARTUP OR RE-
  81. '                                     CYLCE TIME
  82. '              MLParm = 2             DE-INITIALIZE ON EXITING TO
  83. '                                     A DOOR OR DOS REMOTELY
  84. '              MLParm = 3             DE-QUEUE COMMUNICATIONS PORTS
  85. '              MLParm = 4             CHECK FOR MULTILINK PRESENT
  86. '              ZDoorsTermType
  87. '              ZBaudTest!
  88. '              ZComPort$
  89. '              ZComputerType
  90. '
  91. '  OUTPUTS --  NONE
  92. '
  93. '  PURPOSE --  To test for the presence of multi-link and set
  94. '              multi link options to be compatible with RBBS-PC
  95. '
  96.       SUB MLInit (MLParm) STATIC
  97.     DEF SEG = 0
  98.     IF ZComputerType = 1 _
  99.        GOTO 10
  100.     IF NOT ZMLCom THEN _
  101.        IF ZNetworkType <> 1 THEN _
  102.           GOTO 10
  103.     ZMultiLinkPresent = PEEK(&H1FE) + 256 * PEEK(&H1FF)
  104.     IF ZMultiLinkPresent = 0 THEN _
  105.        GOTO 10
  106.     ON MLParm GOSUB 30,20,60,10
  107. * REPLACING old line(s) by new
  108. 90 '  $SUBTITLE: 'GoIdle - release control when waiting'
  109. '  $PAGE
  110. '
  111. '  NAME    -- GoIdle
  112. '
  113. '  INPUTS  -- ZMLCom
  114. '             ZNetworkType
  115. '
  116. '  OUTPUTS --  NONE
  117. '
  118. '  PURPOSE --  To relinquish control when RBBS-PC is waiting for
  119. '              input from the communications port
  120. '
  121. * ------[ first line different ]------
  122.       SUB GoIdle                                                     ' RM11159302
  123.    IF ZMLCom OR ZNetworkType = 1 THEN _
  124.       CALL MLInit(5) : _
  125.       EXIT SUB
  126.    CALL GiveBack
  127.    END SUB
  128. * REPLACING old line(s) by new
  129. 97 '  $SUBTITLE: 'CopyRight - subroutine to display RBBS-PC copyright'
  130. '  $PAGE
  131. '
  132. '  NAME    -- CopyRight
  133. '
  134. '  INPUTS  --  NONE
  135. '
  136. '  OUTPUTS --  NONE
  137. '
  138. '  PURPOSE --  To display RBBS-PC's copyright notice on the local screen
  139. '
  140. * ------[ first line different ]------
  141.       SUB CopyRight                                                  ' RM11159302
  142.    ZWasA = (ZDebug OR ZExitToDoors OR ZCopyrightSecs < 1)
  143.    IF ZWasA THEN _
  144.       EXIT SUB
  145.    WIDTH 80
  146.    ZOutTxt$(1) = "If you use RBBS-PC 17.4, please consider contributing to"
  147.    ZOutTxt$(2) = "             Capital PC User Group"
  148.    ZOutTxt$(3) = "             51 Monroe Street"
  149.    ZOutTxt$(4) = "             Plaza East Two"
  150.    ZOutTxt$(5) = "             Rockville, Maryland 20850"
  151.    ZOutTxt$(6) = ""
  152.    ZOutTxt$(7) = "You are free to copy/share RBBS-PC 17.4 provided"
  153.    ZOutTxt$(08)= "  1.  This program is distributed unmodified"
  154.    ZOutTxt$(09)= "  2.  No fee or consideration is charged for RBBS-PC itself"
  155.    ZOutTxt$(10)= "  3.  This notice is not bypassed or removed."
  156.    CLS
  157.    KEY OFF
  158.    LOCATE ,,0
  159.    ZWasA = ZSnoop
  160.    ZSnoop = -1
  161.    CALL LPrnt(SPACE$(60) + "tm",1)
  162.    CALL LPrnt(SPACE$(16) + STRING$(15,205) + " U S E R W A R E " + STRING$(15,205),1)
  163.    CALL SkipLine(1)
  164.    CALL LPrnt(SPACE$(17) + "Capital PC User Group User-Supported Software",1)
  165.    CALL SkipLine (1)
  166.    CALL LPrnt(SPACE$(5) + CHR$(214) + STRING$(66,196) + CHR$(183),1)
  167.    FOR WasI = 1 TO 10
  168.       CALL LPrnt(SPACE$(5) + CHR$(186) + "    " + ZOutTxt$(WasI) + SPACE$(62 - LEN(ZOutTxt$(WasI))) + CHR$(186),1)
  169.    NEXT
  170.    CALL LPrnt(SPACE$(5) + CHR$(211) + STRING$(66,196) + CHR$(189),1)
  171.    CALL LPrnt(SPACE$(5) + "Copyright (c) 1983-91 Tom Mack, 39 Cranbury Drive, Trumbull, CT 06611",1)
  172.    CALL DelayTime (ZCopyrightSecs)                                   ' KG011602
  173.    ZSnoop = ZWasA                                                    ' KG011002
  174.    END SUB
  175. * REPLACING old line(s) by new
  176. 105 ' $SUBTITLE: 'Trim - sub to eliminate leading/trailing blanks'
  177. ' $PAGE
  178. '
  179. '  NAME    -- Trim
  180. '
  181. '  INPUTS  --  PARAMETER                    MEANING
  182. '              TrimParm$           STRING THAT IS TO HAVE LEADING
  183. '                                  AND TRAILING BLANKS ELIMINATED FROM
  184. '
  185. '  OUTPUTS --  TrimParm$           STRING WITH NO LEADING OR TRAILING
  186. '                                   BLANKS
  187. '
  188. '  PURPOSE --  To strip leading and trailing blanks
  189. '
  190. * ------[ first line different ]------
  191.       SUB Trim (TrimParm$) STATIC                                    ' RM11159302
  192.       TrimParm$ = LTRIM$(RTRIM$(TrimParm$))                          ' RM11159303
  193.       END SUB
  194. '
  195. * REPLACING old line(s) by new
  196. 107 '  $SUBTITLE: 'TrimTrail - sub to trim off trailing characters'
  197. '  $PAGE
  198. '
  199. '  NAME    --  TrimTrail
  200. '
  201. '  INPUTS  --  PARAMETER           MEANING
  202. '              TrimParm$  WHAT STRING TO Trim FROM
  203. '              TrimThis$  WHAT CHARACTER TO Trim OFF END
  204. '
  205. '  OUTPUTS --  NONE
  206. '
  207. '  PURPOSE --  To remove all occurences of a character from end of string
  208. '
  209. * ------[ first line different ]------
  210.       SUB TrimTrail (TrimParm$,TrimThis$)                            ' RM11159302
  211.       IF RIGHT$(TrimParm$, 1) <> TrimThis$ THEN _
  212.          EXIT SUB
  213.       WasJ = LEN(TrimParm$) - 1
  214. * REPLACING old line(s) by new
  215. 109 '  $SUBTITLE: 'VarInit - subroutine to initialize system variables'
  216. '  $PAGE
  217. '
  218. '  NAME    --  VarInit
  219. '
  220. '  INPUTS  --  PARAMETER           MEANING
  221. '              NONE
  222. '
  223. '  OUTPUTS --  NONE
  224. '
  225. '  PURPOSE --  To initialize system variable
  226. '
  227. * ------[ first line different ]------
  228.       SUB VarInit                                                    ' RM11159302
  229.     DEF SEG                            ' Point to BASIC
  230.     WIDTH 80                           ' Set Screen Width
  231.     KEY OFF                            ' Line 25 turned off
  232. ' ********************* Variable Definitions *******************************
  233.     ZAcknowledge$ = CHR$(6)
  234.     ZAckChar$ = "C" + _
  235.             ZAcknowledge$
  236.     ZActiveMenu$ = "B"
  237.     ZActiveMessage$ = CHR$(225)
  238.     ZBackSpace$ = CHR$(8) + _
  239.                  CHR$(32) + _
  240.                  CHR$(8)
  241.     ZBackArrow$ = CHR$(29) + _
  242.                   CHR$(32) + _
  243.                   CHR$(29)
  244.     ZBaudRates$ = "      300  450 1200 2400 4800 7200 960012000144001680019200216002400026400288003840057600" ' BB062501/BB09039301/RM11279301
  245.     ZBellRinger$ = CHR$(7)
  246.     ZBulletinMenu$ = ""
  247.     ZWasCL = 24
  248.     ZCancel$ = CHR$(24)
  249.     ZColorReset$ = CHR$(27) + _
  250.                    "[00;37;40m"
  251.     ZConfigFileName$ = "RBBS-PC.DEF"
  252.     ZCarriageReturn$ = CHR$(13)
  253.     ZDeletedMsg$ = CHR$(226)
  254.     ZEndTransmission$ = CHR$(4)
  255.     ZEscape$ = CHR$(27)
  256.     ZExpectActiveModem = 0
  257.     ZFalse = 0
  258.     ZF1Key = 59
  259.     ZF10Key = 68
  260.     ZConfName$ = "MAIN"
  261.     CALL SetHiLite (ZTrue)
  262.     ZHomeConf$ = ""
  263.     ZInConfMenu = -1
  264.     ZLastCommand$ = "M "
  265.     ZLimitMinsPerSession = 0
  266.     ZLineFeed$ = CHR$(10)
  267.     ZLineFeeds = NOT ZFalse
  268.     ZLineEditChk$ = CHR$(9) + _
  269.                     ZLineFeed$ + _
  270.                     CHR$(11) + _
  271.                     CHR$(12) + _
  272.                     CHR$(127) + _
  273.                     CHR$(8) + _
  274.                     ZBellRinger$ + _
  275.                     CHR$(26) + _
  276.                     CHR$(227)
  277.     ZLineMes$ = SPACE$(78)          ' fixed length string workspace
  278.     ZLockStatus$ = "UM UU UB UD"
  279.     ZMenuIndex = 2
  280.     ZNAK$ = CHR$(21)
  281.     ZNoAdvance = ZFalse
  282.     ZPageLength = 23
  283.     ZParseOff = ZFalse
  284.     ZPressEnter$ = " (Press [ENTER] to quit)"
  285.     ZPressEnterExpert$ = " ([ENTER] quits)"
  286.     ZPressEnterNovice$ = ZPressEnter$
  287.     ZPrivateDoor = ZFalse
  288.     ZRightMargin = 72
  289.     ZReturnLineFeed$ = ZCarriageReturn$ + _
  290.                         ZLineFeed$
  291.     ZSmartTable$ = "CS PB NS FN LN SL DT TM TR TE TL RP RR CT " + _
  292.                    "C1 C2 C3 C4 C5 C6 C7 C8 C0 DD BD DB UB DL " + _  ' COLR174
  293.                    "UL FI VY VN " + _                                ' COLR174
  294.                    "TY TN BN ND FS LS CN DC " + _                    ' DROP174/RM100301
  295.                    "C9 CA CB CC CD CE CF " + _                       ' DD081801/COLR
  296.                    "G0 G1 G2 G3 G4 G5 G6 G7 " + _                    ' DD081801/COLR/RM02089401
  297.                    "FD FH FC LT BA BT TP "                           ' DGS011501-DS/RM02089401/GS02119401
  298.     ZStartOfHeader$ = CHR$(1)
  299.     ZTimeLoggedOn$ = SPACE$(8)
  300.     ZTrue = NOT ZFalse
  301.     ZUpInc = -1
  302.     ZXOff$ = CHR$(19)
  303.     ZXOn$ = CHR$(17)
  304.     ZInterrupOn$ = CHR$(11) + ZCancel$ + ZXOff$ + ZXOn$ + ZCarriageReturn$
  305.     ZOptionEnd$ = ZReturnLineFeed$ + " ,("
  306.     ZCrLf$ = ZCarriageReturn$ + ZLineFeed$
  307.     ZVersionID$ = "17.4A/BM/040694"                                  ' RM04069401
  308.     ZWasLG$(1) = "Registration Check Failed"
  309.     ZWasLG$(2) = "Sysop name attempted"
  310.     ZWasLG$(3) = "Locked out attempt"
  311.     ZWasLG$(4) = "Password Attempt Failed"
  312.     ZWasLG$(5) = "Auto Lockout done"
  313.     ZWasLG$(6) = "Name in use on another Node!"
  314.     ZWasLG$(7) = ""
  315.     ZWasLG$(8) = "Locked reason read!"
  316.     ZWasLG$(9) = "Expired Registration"
  317.     CALL GetCommand (ZDebug,ZNetTime$,ZNetBaud$,ZNetReliable$)
  318.     ZSubParm = 1
  319.     CALL ReadDef (ZConfigFileName$)
  320.     ZUseTPut = (ZUpperCase OR ZXOnXOff)
  321.     ZOrigCallers$ = ZCallersFile$
  322.     ZOrigMsgFile$ = ZMainMsgFile$
  323.     ZOrigUserFile$ = ZMainUserFile$
  324.     ZOrigSysopFN$ = ZSysopFirstName$
  325.     ZOrigSysopLN$ = ZSysopLastName$
  326.     ZPromptBell = ZPromptBellDef
  327.     ZSecretName$ = ZSysopPswd1$ + " " + ZSysopPswd2$
  328.     ZDropChange = ZFalse                                             ' DROP174
  329.     ZANSITest = ZFalse                                               ' RM030101/CHAT174/RM08049303
  330.     ZRIPTest = ZFalse                                                ' RM08049302/RIP
  331.     ZWelcomeAboard = ZFalse                                          ' NEWU174/RM08049304
  332.     ZNetConference = ZFalse                                          ' NET174/RM123101/RM08049305
  333.     ZRIPReset$ = " !|*!|0000270P01"                                  ' RM09089301/RIP
  334.     ZAllowInternodeChat = ZFalse                                     ' RM11199301
  335.     ChatFileName$ = ENVIRON$ ("RCHAT")                               ' RM09119302
  336.     CALL AllCaps (ChatFileName$)                                     ' RM10069305
  337.     IF ChatFileName$ = "" THEN _                                     ' RM09249302
  338.        ChatFileName$ = ZDiskForDos$                                  ' RM09249302
  339.     IF RIGHT$(ChatFileName$,1) = "\" THEN _                          ' RM09119302
  340.        ChatFileName$ = LEFT$(ChatFileName$,LEN(ChatFileName$) - 1)   ' RM09119302
  341.     ChatFileName$ = ChatFileName$ + "\RBBSCHAT.DEF"                  ' RM09119302
  342.     ZTimeBankInActive = ZFalse                                       ' RM12299301
  343.     ZAutoLogoffSecTime! = 20                                         ' RM01159402
  344.     ZOnlyOneTimeLockPerDay = ZFalse                                  ' RM02089401
  345.     ZUseCDWorkDrive = ZFalse                                         ' RM03299401
  346.     END SUB
  347. '
  348. * REPLACING old line(s) by new
  349. 112 ' $SUBTITLE: 'SysMenu - sub to display RBBS-PC SYSOP menu'
  350. '  $PAGE
  351. '
  352. '  NAME    --  SysMenu
  353. '
  354. '  INPUTS  --  PARAMETER           MEANING
  355. '
  356. '  OUTPUTS --  NONE
  357. '
  358. '  PURPOSE --  TO DISPLAY RBBS-PC's SYSOP MENU ON THE LOCAL SCREEN
  359. '
  360.     SUB SysMenu STATIC
  361.     ZLocalUser = ZTrue
  362.     ZSnoop = ZTrue
  363.     ZNonStop = ZTrue
  364.     CALL CheckTime (TIMER, ZDelay!, 1)
  365.     CLS
  366.     ZStopInterrupts = ZTrue
  367.     ZBypassTimeCheck = ZTrue
  368.     CALL BufFile ("MENU0",WasX)
  369.     ZNonStop = ZFalse
  370.     ZBypassTimeCheck = ZFalse
  371.     ZLocalUser = ZFalse
  372.     IF NOT ZOK THEN _
  373.        CALL LPrnt("MENU0 not on default drive",1)
  374. * ------[ first line different ]------
  375.     LOCATE 2,14                                                      ' MENU174/RM040603
  376.     IF ZDosANSI THEN _                                               ' MENU174/RM101303
  377.        CALL LPrnt(ZEscape$ + "[1m" + ZVersionID$,0) _                ' MENU174/RM101303/RM040603
  378.     ELSE _                                                           ' MENU174/RM101303
  379.        CALL LPrnt(ZVersionID$,0)                                     ' RM040603
  380.     LOCATE 2,40                                                      ' MENU174
  381.     CALL LPrnt(ZNodeID$,0)
  382.     LOCATE 2,59                                                      ' MENU174
  383.     WasX$ = DATE$
  384.     CALL LPrnt(LEFT$(WasX$,6) + RIGHT$(WasX$,2),0)
  385.     LOCATE 2,71                                                      ' MENU174
  386.     CALL LPrnt(LEFT$(TIME$,5),0)
  387.     CALL GetLC                                                       ' LAST174
  388.     LOCATE 4,2                                                       ' LAST174
  389.     CALL LPrnt ("Last Caller: " + ZLastCaller$,0)                    ' LAST174
  390.     IF ZFMSDirectory$ <> "" THEN _
  391.        LOCATE 7,27 : _                                               ' MENU174
  392.        CALL LPrnt("YES",0)
  393.     IF ZExtendedLogging THEN _
  394.        LOCATE 8,27 : _                                               ' MENU174
  395.        CALL LPrnt("YES",0)
  396.     IF ZFossil THEN _
  397.        LOCATE 9,27 : _                                               ' MENU174
  398.        CALL LPrnt("YES",0)
  399.     LOCATE 10,26 : _                                                 ' MENU174
  400.     CALL LPrnt(ZComPort$,0)
  401.     LOCATE 11,26                                                     ' MENU174
  402.     CALL LPrnt (STR$(CINT(FRE("A")/1024)) + "k",0)
  403.     IF ZDebug THEN _
  404.        LOCATE 12,27 : _                                              ' MENU174
  405.        CALL LPrnt("Yes",0)
  406.     LOCATE 15,20                                                     ' MENU174
  407.     CALL LPrnt (ZMenuNewDate$,0)                                     ' MENU174
  408.     LOCATE 15,32                                                     ' MENU174
  409.     CALL LPrnt (ZMenuNewTime$,0)                                     ' MENU174
  410.     LOCATE 16,14                                                     ' MENU174
  411.     CALL LPrnt (STR$(ZMenuNewCalls),0)                               ' MENU174
  412.     LOCATE 16,33                                                     ' MENU174
  413.     CALL LPrnt (STR$(ZMenuNewUpld),0)                                ' MENU174
  414.     LOCATE 17,14                                                     ' MENU174
  415.     CALL LPrnt (STR$(ZMenuNewUsers),0)                               ' MENU174
  416.     LOCATE 17,33                                                     ' MENU174
  417.     CALL LPrnt (STR$(ZMenuNewSysop),0)                               ' MENU174
  418.     END SUB
  419. '
  420. * REPLACING old line(s) by new
  421. 120 '  $SUBTITLE: 'EditDef - sub to edit config parameters'
  422. '  $PAGE
  423. '
  424. '  NAME    -- EditDef
  425. '
  426. '  INPUTS  --     PARAMETER                    MEANING
  427. '
  428. '  OUTPUTS --                          OUTPUT STRING
  429. '
  430. '  PURPOSE -- Interpretes and adjusts stored configuration parameters
  431. '
  432.       SUB EditDef STATIC
  433. * ------[ first line different ]------
  434.       ZMinsPerSessionDef = ZMinsPerSession                           ' KG082101
  435.       ZAllOpts$ = ZMainCmds$ + _
  436.                   ZFileCmd$ + _
  437.                   ZUtilCmds$ + _
  438.                   ZLibCmds$ + _
  439.                   ZGlobalCmnds$ + _
  440.                   ZSysopCmds$
  441.       ZHelpExtension$ = "." + _
  442.                         ZHelpExtension$
  443.       ZCompressedExt$ = ZDefaultExtension$
  444.       ZWasQ = INSTR(ZDefaultExtension$,".")
  445.       IF ZWasQ > 0 THEN _
  446.          ZDefaultExtension$ = LEFT$(ZDefaultExtension$, ZWasQ-1)
  447.       ZCurDirPath$ = ZDirPath$
  448.       ZTempExpiredSec = ZExpiredSec
  449.       ZBegMain = 1
  450.       ZBegFile = LEN(ZMainCmds$) + ZBegMain
  451.       ZBegUtil = LEN(ZFileCmd$) + ZBegFile
  452.       ZBegLibrary = LEN(ZUtilCmds$) + ZBegUtil
  453.       ZHelp$(3) = ZHelpPath$ + _
  454.                  ZHelp$(3)
  455.       ZHelp$(4) = ZHelpPath$ + _
  456.                  ZHelp$(4)
  457.       ZHelp$(7) = ZHelpPath$ + _
  458.                  ZHelp$(7)
  459.       ZHelp$(9) = ZHelpPath$ + _
  460.                  ZHelp$(9)
  461.       CALL BreakFileName (ZWelcomeFile$,ZWelcomeFileDrvPath$,Prefix$,_
  462.                      Extension$,ZTrue)
  463.      CALL ASCIICodes ("[","]",ZDefaultLineACK$)
  464.      CALL ASCIICodes ("[","]",ZHostEchoOn$)
  465.      CALL ASCIICodes ("[","]",ZHostEchoOff$)
  466.      CALL ASCIICodes ("[","]",ZEmphasizeOffDef$)
  467.      CALL ASCIICodes ("[","]",ZEmphasizeOnDef$)
  468.      ZDR1$ = ZFG1Def$
  469.      ZDR2$ = ZFG2Def$
  470.      ZDR3$ = ZFG3Def$
  471.      ZDR4$ = ZFG4Def$
  472.      IF ZSubParm = -62 THEN _
  473.         EXIT SUB
  474.      ZLocalUserMode = (RIGHT$(ZComPort$,1) < "1")
  475.      IF ZLocalUserMode THEN _
  476.         ZRecycleToDos = ZTrue
  477.      ZEchoer$ = ZDefaultEchoer$
  478.      IF LEN(ZScreenOutMsg$) < 2 THEN _
  479.         ZScreenOutMsg$ = ZStartOfHeader$
  480.      ZSmartTextCode$ = CHR$(ZSmartTextCode)
  481.      IF ZMaxWorkVar < 13 THEN _
  482.         ZMaxWorkVar = 13
  483. '
  484. ' ***  ESTABLISH RBBS-PC'S DOS SUBDIRECTORIES USAGE  ***
  485. '
  486.     IF ZMainFMSDir$ <> "" THEN _
  487.        ZFMSDirectory$ = ZDirPath$ + _
  488.                         ZMainFMSDir$ + _
  489.                         "." + _
  490.                         ZMainDirExtension$ : _
  491.        ZActiveFMSDir$ = ZFMSDirectory$ : _
  492.        ZLibDir$ = ZLibDirPath$ + _
  493.                             ZMainFMSDir$ + _
  494.                             "." + _
  495.                             ZLibDirExtension$
  496.     ZUpcatHelp$ = ZHelpPath$ + _
  497.                   ZUpcatHelp$ + _
  498.                   ZHelpExtension$
  499.     IF ZSubDirCount < 1 THEN _
  500.        GOTO 123
  501.     FOR ZSubDirIndex = 1 TO ZSubDirCount
  502.        INPUT #2,ZSubDir$
  503.        IF RIGHT$(ZSubDir$,1) <> "\" THEN _
  504.          ZSubDir$(ZSubDirIndex) = ZSubDir$ + _
  505.                                  "\" _
  506.        ELSE ZSubDir$(ZSubDirIndex) = ZSubDir$
  507.     NEXT
  508.     GOTO 125
  509. * REPLACING old line(s) by new
  510. 200 ' $SUBTITLE: 'AnswerIt - sub to establish connection'
  511. ' $PAGE
  512. '
  513. '  NAME    -- AnswerIt
  514. '
  515. '  INPUTS  --     PARAMETER                    MEANING
  516. '                 ZSubParm = 1           WAIT FOR PHONE TO RING
  517. '                          = 2           CONTINUE LOOKING FOR CONNECT
  518. '                          = 3           RENTRY AFTER FUNCTION KEY
  519. '                          = 4           GO ON LINE IMMEDIATELY
  520. '                 ZBG                    LOCAL DISPLAY'S BACKGROUND
  521. '                 ZBorder                LOCAL DISPLAY'S BORDER COLOR
  522. '                 ZComPort$              COMMUNICATIONS PORT NAME
  523. '                 ZComputerType          TYPE OF COMPUTER RUNNING ON
  524. '                 ZDumbModem             NON-HAYES TYPE MODEM FLAG
  525. '                 ZExtendedLogging       EXTENDED CALLERS LOG FLAG
  526. '                 ZFG                    LOCAL DISPLAY'S FOREGROUND
  527. '                 ZModemAnswerCmd$       COMMAND TO ANSWER PHONE
  528. '                 ZModemCntlReg          LOCATION WasOF MODEM CNTRL. REG
  529. '                 ZModemCountRingsCmd$   COMMAND TO COUNT PHONE RINGS
  530. '                 ZModemInitBaud$        BAUD AT WHICH TO OPEN COMM.
  531. '                 ZModemResetCmd$        COMMAND TO RESET THE MODEM
  532. '                 ZModemStatusReg        LOCATION OF MODEM STATUS REG
  533. '                 ZPrinter               FLAG TO PRINT ON LOCAL PRT.
  534. '                 ZRequiredRings         NUMBER OF RINGS TO ANSWER ON
  535. '                 ZSnoop                 FLAG TO DISPLAY ON LOCAL PC
  536. '                 ZSysopNext             FLAG TO GIVE SYSOP CONTROL
  537. '
  538. '  OUTPUTSS --    BaudTest!              BAUD RATE TO SET RS232 AT
  539. '                 ZEightBit              PARITY INDICATOR
  540. '                 ZReliableMode          INDICATES MODEM-SUPPLIED
  541. '                                        "ERROR-FREE" Protocol ACTIVE
  542. '                 ZSubParm          = 1  Carrier DETECT Found (I.E.
  543. '                                        MODEM AUTO-ANSWERED).
  544. '                                   = 2  ANSWERED THE PHONE AND
  545. '                                        Carrier DETECT OCCURRED.
  546. '                                   = 3  SYSOP HIT "ESC" KEY ON THE
  547. '                                        LOCAL KEYBOARD.
  548. '                                   = 4  ANSWERED THE PHONE BUT NO
  549. '                                        Carrier WAS DETECTED.
  550. '                                   = 5  COMM. BUFFER OVERFLOW.
  551. '                                   = 6  FUNCTION KEY PRESSED ON THE
  552. '                                        LOCAL KEYBOARD.
  553. '
  554. '  PURPOSE -- To detect incoming call and establish connection.
  555. '
  556.       SUB AnswerIt STATIC
  557. * ------[ first line different ]------
  558.       IF (NOT ZExitToDoors) AND (NOT ZSubBoard) THEN _               ' MENU174/RM08079301
  559.          CALL GetMenuNew                                             ' MENU174/RM112103/RM050401
  560.       ZErrCode = 0
  561.       ZReliableMode = ZFalse
  562.       ZFF = ZSubParm
  563.       ZSubParm = 0
  564.       ON ZFF GOTO 201,324,245,320
  565. '
  566. '
  567. ' *  INITIALIZE MODEM AND ANNOUNCE RBBS-PC IS UP AND READY FOR CALLS
  568. '
  569. '
  570. * REPLACING old line(s) by new
  571. 235 ZEightBit = ZTrue
  572.     IF ZExitToDoors THEN _
  573.        CALL ReadProf
  574.     ZSubParm = -10
  575.     CALL Carrier
  576.     IF ZSubParm = 0 AND _
  577.        ZExitToDoors THEN _
  578.        ZSubParm = 1 : _
  579.        GOTO 335
  580.     IF ZSubParm = 0 AND _
  581.        ZExpectActiveModem THEN _
  582.        ZBaudTest! = VAL(ZNetBaud$) : _
  583.        CALL TestRel (ZNetReliable$) : _
  584.        GOTO 328
  585.     IF ZExpectActiveModem OR _
  586.        ZExitToDoors THEN _
  587.        ZSubParm = 4 : _
  588.        ZExitToDoors = ZFalse : _
  589.        EXIT SUB
  590.     IF ZSubParm = 0 THEN _
  591.        ConnectDelay! = TIMER + ZMaxCarrierWait : _
  592.        GOTO 324
  593.     CALL SysMenu
  594.     CALL ModemPut (ZModemResetCmd$)
  595.     CALL DelayTime (ZModemInitWaitTime)
  596.     CALL ModemPut (ZModemInitCmd$)
  597.     RingBack = ZFalse
  598. * ------[ first line different ]------
  599.     LOCATE 20,23                                                     ' MENU174
  600.     IF ZRequiredRings = 0 THEN _
  601.        CALL LPrnt("WAITING FOR CARRIER",0) : _
  602.        GOTO 237
  603.     IF MID$(ZModemInitCmd$, _
  604.           INSTR(ZModemInitCmd$,"S0") + 3,3) = "255" THEN _
  605.        CALL LPrnt("RING BACK SYSTEM",0) : _
  606.        RingBack = ZTrue : _
  607.        GOTO 236
  608.     CALL LPrnt("WAITING FOR RING ",0)                                ' MENU174
  609. * REPLACING old line(s) by new
  610. * ------[ first line different ]------
  611. 236 LOCATE 20,40 : _                                                 ' MENU174
  612.     CALL LPrnt(MID$(STR$(ZRequiredRings),2),0)
  613. * REPLACING old line(s) by new
  614. * ------[ first line different ]------
  615. 237 LOCATE 19,23                                                     ' MENU174
  616.     IF ZDosANSI THEN _
  617.        CALL LPrnt(ZEscape$ + "[05m" + "YES" + ZEscape$ + "[00m",0) _
  618.     ELSE CALL LPrnt ("YES",0)
  619.     COLOR ZFG,ZBG,ZBorder
  620.     LOCATE 21,23                                                     ' MENU174
  621. '
  622. '
  623. ' *  GET READY TO ANSWER INCOMMING CALL:
  624. ' *       1.  LET THE MODEM "AUTO-ANSWER" FOR RBBS-PC.
  625. ' *           REQUIRED RINGS = 0 AND S0 = 1 IN MODEM INIT COMMAND.
  626. ' *       2.  ANSWER THE MODEM ON A SPECIFIED NUMBER OF RINGS.
  627. ' *           REQUIRED RINGS > 0 AND S0 = 254 IN MODEM Init COMMAND.
  628. ' *       3.  ANSWER THE MODEM ON A SPECIFIED NUMBER OF RINGS AFTER A USER
  629. ' *           First CALLS AND THEN HANGS UP (I.E. RING-BACK).
  630. ' *           REQUIRED RINGS > 0 AND S0 = 255 IN MODEM INIT COMMAND.
  631. '
  632. '
  633.     WasQQ = 255
  634.     WasI = INSTR(ZModemInitCmd$,"S0")
  635.     IF WasI = 0 THEN _
  636.        GOTO 239
  637.     Sreg = VAL(MID$(ZModemInitCmd$,WasI + 3,3))                      ' JR070102
  638.     IF Sreg = 255 THEN                                               ' JR070103
  639.        WasQQ = 0 : _                                                 ' JR070103
  640.        ZBlk = WasQQ                                                  ' JR070103
  641.     END IF                                                           ' JR070103
  642.     ZSecsUsedSession! = TIMER
  643.     ZSubParm = 1
  644.     CALL Line25
  645.     RingAnswer = ZTrue
  646.     IF RingBack THEN _
  647.        RingAnswer = ZFalse
  648. * REPLACING old line(s) by new
  649. 260    IF RingBackWaitStart! > 0 THEN _
  650.           CALL CheckTime(RingBackWaitStart!, TempElapsed!, 2) : _
  651.           IF TempElapsed! > 45 THEN _
  652.              RingBackWaitStart! = 0 : _
  653.              RingBackCount = 0 : _
  654.              RingAnswer = ZFalse: _
  655.              IF RingBack THEN _
  656. * ------[ first line different ]------
  657.                LOCATE 21,23 : _                                      ' MENU174
  658.                CALL LPrnt("Ringback timeout" + ZPagingPtrSupport$,1)
  659. * REPLACING old line(s) by new
  660. 266    IF (INP(ZModemStatusReg) AND &H40) > 0 AND _
  661. * ------[ first line different ]------
  662.           ZRequiredRings > 0 THEN                                    ' JR070107
  663.              IF Sreg = 252 OR Sreg = 253 THEN                        ' JR070107
  664.                 PAnswer = 0                                          ' JR070107
  665.                 CALL PersonalRing(PAnswer, Sreg)                     ' JR070107
  666.                 IF PAnswer = 1 THEN                                  ' JR070107
  667.                    GOTO 276                                          ' JR070107
  668.                 END IF                                               ' JR070107
  669.              ELSE                                                    ' JR070107
  670.                 GOTO 276                                             ' JR070107
  671.              END IF                                                  ' JR070107
  672.        END IF                                                        ' JR070107
  673. * REPLACING old line(s) by new
  674. 270    IF ZRecycleWait > 0 THEN _
  675.           CALL CheckTime(InactiveDelay!, TempElapsed!, 1) : _
  676.           IF TempElapsed! <= 0 THEN _
  677.              ZSubParm = 8 : _
  678.              EXIT SUB
  679. * ------[ first line different ]------
  680.        IF Sreg = 252 OR Sreg = 253 THEN                              ' JR070117
  681.           IF PAnswer = 0 THEN                                        ' JR070118
  682.              CALL GoIdle                                             ' JR070119
  683.              GOTO 247                                                ' JR070120
  684.           ELSE                                                       ' JR070121
  685.              GOTO 276                                                ' JR070122
  686.           END IF                                                     ' JR070123
  687.        END IF                                                        ' JR070123
  688.        CALL FlushCom (WasX$)
  689.        IF LEN(WasX$) > 0 THEN _
  690.           ModemResponse$ = ModemResponse$ + WasX$ : _
  691.           RingDetected = (INSTR(ModemResponse$,"RING") > 0) : _
  692.           ConnectDetected = (INSTR(ModemResponse$,"ONNECT") > 0) : _
  693.           NoCall = (NOT RingDetected) AND (NOT ConnectDetected)
  694.     IF RingDetected AND ZRequiredRings > 0 THEN _
  695.        MID$(ModemResponse$, INSTR(ModemResponse$,"RING")+1,1) = "A" : _
  696.        RingDetected = ZFalse : _
  697.        GOTO 276
  698.     CALL GoIdle
  699.     GOTO 247
  700. * REPLACING old line(s) by new
  701. * ------[ first line different ]------
  702. 305 LOCATE 21,23                                                     ' MENU174
  703.     IF ZDosANSI THEN _                                               ' MENU174/RM101303
  704.        CALL LPrnt(ZEscape$ + "[1;40;31m" + TIME$ + " Ring " + _      ' MENU174/RM101303
  705.                   STR$(ZWasQ) + ZEscape$ + "[00m",0) _               ' MENU174/RM101303
  706.     ELSE _                                                           ' MENU174/RM101303
  707.        CALL LPrnt(TIME$ + " Ring " + STR$(ZWasQ),0)                  ' MENU174/RM101303
  708. * REPLACING old line(s) by new
  709. 336 ' $SUBTITLE: 'TestRel - Test for Reliable mode connection'
  710. ' $PAGE
  711. '
  712. '  NAME    -- TestRel
  713. '
  714. '  INPUTS  --     PARAMETER                    MEANING
  715. '                 Strng$                 String to check for reliable
  716. '
  717. '  OUTPUTS --    ZReliableMode          Reliable mode indicator
  718. '
  719. '  PURPOSE -- To test for reliable connect
  720. '
  721. * ------[ first line different ]------
  722.     SUB TestRel (Strng$)                                             ' RM11159302
  723.     ZReliableMode = ZFalse
  724.     IF Strng$ = "" THEN _
  725.        EXIT SUB
  726.     IF INSTR(Strng$,"REL") OR _
  727.        INSTR(Strng$,"R C") OR _
  728.        INSTR(Strng$,"ARQ") OR _
  729.        INSTR(Strng$,"LAP") OR _
  730.        INSTR(Strng$,"ECL") OR _
  731.        INSTR(Strng$,"AFT") OR _
  732.        INSTR(Strng$,"MNP") THEN _
  733.          ZReliableMode = -1
  734.     ZWasZ = INSTR(Strng$,"ARRIER ")
  735.     IF ZWasZ > 0 THEN _
  736.        IF VAL(MID$(Strng$,ZWasZ+6)) > 0 THEN _
  737.           ZCBaud$ = STR$(VAL(MID$(Strng$,ZWasZ+6))) : _
  738.           CALL Trim (ZCBaud$)
  739.     END SUB
  740. * REPLACING old line(s) by new
  741. 455 ' $SUBTITLE: 'BadChar - sub to check user names for bad characters'
  742. ' $PAGE
  743. '
  744. '  NAME    -- BadChar
  745. '
  746. '  INPUTS  --     PARAMETER                    MEANING
  747. '                 PassedName$                  USER NAME
  748. '
  749. '  OUTPUTS --    PassedName$            USER NAME WILL CONTAIN ""
  750. '                                       IF BAD CHARACTERS Found
  751. '
  752. '  PURPOSE -- To check user names for invalid characters
  753. '
  754. * ------[ first line different ]------
  755.     SUB BadChar (PassedName$)                                        ' RM11159302
  756.     WasJ = 1
  757.     WasXX = LEN(PassedName$)
  758. * REPLACING old line(s) by new
  759. 675 ZOutTxt$ = "Enter Password"
  760.     ZHidden = ZTrue
  761.     CALL PopCmdStack
  762.     IF ZSubParm < 0 THEN _
  763.        ZPswdFailed = ZTrue : _
  764.        EXIT SUB
  765.     ZHidden = ZFalse
  766.     ZWasZ$ = ZUserIn$
  767. * ------[ first line different ]------
  768.     ZOldPassword$ = ZUserIn$                                         ' PSWD174
  769. * REPLACING old line(s) by new
  770. 949 ZLine25$ = "Node " + _
  771.                ZNodeID$ + " " + _
  772.                ZPageStatus$ + " " + _
  773.                MID$("AVL ",1, -4 * ZSysopAvail) + _
  774. * ------[ first line different ]------
  775.                MID$("PAGE ",1, -5 * ZSysopAnnoy) + _                 ' ST081503/MENU174
  776.                MID$("LPT ",1, -4 * ZPrinter) + _
  777.                MID$("SN ",1, -3 * ZSnoop) + _                        ' ST081503/MENU174
  778.                MID$("SYS ",1, -4 * ZSysopNext) + _
  779.                MID$("XOFF ",1,-5 * ZXOffEd) + _
  780.                MID$("CTS ",1,-4 * ZNotCTS) + _
  781.                SPACE$(1) + ZCBaud$                                   ' DGS060401-DS
  782. '
  783. '
  784. ' *  LINE 25 UPDATE ROUTINE
  785. '
  786. '
  787. * REPLACING old line(s) by new
  788. 950 IF NOT ZSnoop THEN _
  789.        EXIT SUB
  790.     ZCursorLine = CSRLIN
  791.     ZCursorRow = POS(0)
  792.     ZWasHH = LEN(ZActiveUserName$) + _
  793.          LEN(ZWasCI$) + _
  794.          LEN(ZLine25$) + _
  795. * ------[ first line different ]------
  796.          LEN(STR$(ZUserSecLevel)) + _                                'Dgs-008
  797.          LEN(STR$(INT(MinsRemaining))) + 2                           'Dgs-008
  798.     LOCATE 25,1
  799.     IF ZNetworkType = 0 THEN _
  800.        IF ZAutoDownYes THEN _
  801.           ZLockStatus$ = " AD " + _
  802.                          ZTimeLoggedOn$ _
  803.        ELSE ZLockStatus$ = SPACE$(4) + _
  804.                            ZTimeLoggedOn$
  805.     IF ZWasHH > 63 THEN _
  806.        ZWasHH = 0 _
  807.     ELSE _
  808.        ZWasHH = 64 - ZWasHH
  809.     ZLine25Hold$ = ZLine25$ + _
  810.                     SPACE$(ZWasHH) + _
  811.                     STR$(ZUserSecLevel) + _
  812.                     " " + _
  813.                     ZActiveUserName$ + _
  814.                     " " + _
  815.                     ZWasCI$ + _
  816.                     " " + _                                          'Dgs-008
  817.                     STR$(INT(MinsRemaining)) + _                     'Dgs-008
  818.                     " "
  819.     ZLine25Hold$ = LEFT$(ZLine25Hold$, 66) + " " + ZLockStatus$
  820.     IF ZDosANSI THEN _
  821.        ZLine25Hold$ = ZEscape$ + "[1;36;44m" + ZLine25Hold$ + _        ' DD071003
  822.                       + ZEscape$ + "[K" + ZColorReset$ + ZEmphasizeOff$ ' RM03149401
  823. '   IF ZDosANSI THEN _
  824. '      ZLine25Hold$ = ZColorReset$ + ZLine25Hold$ + ZEmphasizeOff$
  825.     CALL LPrnt(ZLine25Hold$,0)
  826.     LOCATE ZCursorLine,ZCursorRow
  827.     END SUB
  828. * REPLACING old line(s) by new
  829. 1380 ' $SUBTITLE: 'VIOLATION - handles all security violations'
  830. ' $PAGE
  831. '
  832. '  NAME    -- SecViolation
  833. '
  834. '  INPUTS  --     PARAMETER                    MEANING
  835. '
  836. '  OUTPUTS -- ZCursorLine               CURRENT LINE ON SCREEN
  837. '             ZCursorRow                CURRENT ROW ON ZCursorLine
  838. '
  839. '  PURPOSE -- Inform caller of security violation, augment count of
  840. '             violations and determine whether too many occurred.
  841. '
  842. * ------[ first line different ]------
  843.      SUB SecViolation                                                ' RM11159302
  844.      CALL FlushKeys
  845.      CALL BufFile (ZSecVioHelp$,WasX)
  846.      IF NOT ZOK THEN _
  847.         CALL QuickTPut1 ("Sorry, " + ZFirstName$ + ", action not permitted")
  848.      CALL UpdtCalr ("SV!-" + ZViolation$,2)
  849.      ZLastIndex = 0
  850.      CALL Muzak (3)
  851.      ZViolationsThisSession = ZViolationsThisSession + 1
  852.      IF ZMaxViolations = 0 OR ZViolationsThisSession <= ZMaxViolations THEN _
  853.         EXIT SUB
  854. * REPLACING old line(s) by new
  855. 1386 ' $SUBTITLE: 'DenyAccess - sub to permanently deny access'
  856. ' $PAGE
  857. '
  858. '  NAME    -- DenyAccess
  859. '
  860. '  INPUTS  --     PARAMETER                    MEANING
  861. '
  862. '  OUTPUTS -- (USER'S RECORD)
  863. '
  864. '  PURPOSE -- Permanently resets user's security level when access denied
  865. '
  866. * ------[ first line different ]------
  867.      SUB DenyAccess                                                  ' RM11159302
  868.      CALL TPut
  869.      ZLogonErrorIndex = 5
  870.      ZSubParm = 6
  871.      CALL FileLock
  872.      CALL OpenUser (ZHighestUserRecord)
  873.      FIELD 5, 128 AS ZUserRecord$
  874.      GET 5,ZUserFileIndex
  875.      MID$(ZUserRecord$,47,2) = MKI$(ZUserSecLevel)
  876.      PUT 5,ZUserFileIndex
  877.      ZSubParm = 8
  878.      CALL FileLock
  879.      END SUB
  880. * REPLACING old line(s) by new
  881. * ------[ first line different ]------
  882. 1476 IF ASC(ZWasY$) < 127 THEN                                       ' UG070509
  883.         ZCommPortStack$ = ZCommPortStack$ + ZWasY$
  884.         IF ZTurboKey THEN                                            ' UG070509/RM030602
  885.            ZRet = ZTrue                                              ' UG070509
  886.         END IF                                                       ' UG070509
  887.      END IF                                                          ' UG070509
  888.      RETURN
  889.      END SUB
  890. * REPLACING old line(s) by new
  891. 1478 ' $SUBTITLE: 'QuickTPut - subroutine to quickly write to terminal'
  892. ' $PAGE
  893. '
  894. '  NAME    -- QuickTPut
  895. '
  896. '  INPUTS  -- PARAMETER             MEANING
  897. '             Strng$             STRING TO WRITE OUT
  898. '             NumReturns         NUMBER OF CARRIAGE RETURNS
  899. '
  900. '  OUTPUTS -- NONE
  901. '
  902. '  PURPOSE -- Subroutine to quickly write to the terminal.  This is
  903. '             different from "TPut" in the things it doesn't do:
  904. '                A.) No function key check,
  905. '                B.) No conversion to upper case,
  906. '                C.) No check for carrier present
  907. '                D.) No check for imbedded carriage return in "Strng$"
  908. '                E.) No support for XON/XOff
  909. '
  910. * ------[ first line different ]------
  911.       SUB QuickTPut (Strng$,NumReturns)                              ' RM11159302
  912.       IF ZSubParm < 0 THEN _
  913.          EXIT SUB
  914.       IF ZUseTPut THEN _
  915.          ZOutTxt$ = Strng$ : _
  916.          ZSubParm = 4 : _
  917.          CALL TPut : _
  918.          CALL SkipLine (NumReturns) : _
  919.          EXIT SUB
  920.       CALL PutCom (Strng$)
  921.       LOCATE ,,1
  922.       CALL LPrnt (Strng$,0)
  923.       CALL SkipLine (NumReturns)
  924.       END SUB
  925.       SUB QuickTPut1 (Strng$)                                        ' RM11159302
  926.       CALL QuickTPut (Strng$,1)
  927.       END SUB
  928. * REPLACING old line(s) by new
  929. 1480 ' $SUBTITLE: 'LPrnt    - subroutine to write to display'
  930. ' $PAGE
  931. '
  932. '  NAME    -- LPrnt
  933. '
  934. '  INPUTS  -- PARAMETER             MEANING
  935. '             Strng$        STRING TO WRITE OUT
  936. '             NumReturns   NUMBER OF CARRIAGE RETURNS
  937. '
  938. '  OUTPUTS -- NONE
  939. '
  940. '  PURPOSE -- Subroutine to write to the display.
  941. '
  942. * ------[ first line different ]------
  943.       SUB LPrnt (Strng$,NumReturns)                                  ' RM11159302
  944.       IF NOT ZSnoop THEN _
  945.          EXIT SUB
  946.       CALL PScrn (Strng$)
  947.       IF ZVoiceType <> 0 AND ZTalkAll THEN _
  948.          CALL Talk (65,Strng$)
  949.       IF ZUseBASICWrites THEN _
  950.          FOR WasI = 1 TO NumReturns : _
  951.             PRINT : _
  952.          NEXT : _
  953.       ELSE FOR WasI = 1 TO NumReturns : _
  954.               LOCATE ,,1 : _
  955.               CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
  956.               LOCATE ZWasCL,ZWasCC : _
  957.               NEXT
  958.       END SUB
  959. * REPLACING old line(s) by new
  960. 1482 ' $SUBTITLE: 'QuickLPrnt - subroutine to quickly write to display'
  961. ' $PAGE
  962. '
  963. '  NAME    -- QuickLPrnt
  964. '
  965. '  INPUTS  -- PARAMETER             MEANING
  966. '             Strng$        STRING TO WRITE OUT
  967. '             Num           NUMBER OF CARRIAGE RETURNS
  968. '
  969. '  OUTPUTS -- NONE
  970. '
  971. '  PURPOSE -- Subroutine to quickly write to the display.
  972. '             Overwrites, and puts up count
  973. * ------[ first line different ]------
  974.       SUB QuickLPrnt (Strng$,Num)                                    ' RM11159302
  975.       IF ZSnoop THEN _
  976.          LOCATE ,1,1 : _
  977.          CALL Pscrn (Strng$ + STR$(Num))
  978.       END SUB
  979. * REPLACING old line(s) by new
  980. 1483 ' $SUBTITLE: 'PScrn    - subroutine to print to the screen'
  981. ' $PAGE
  982. '
  983. '  NAME    -- PScrn
  984. '
  985. '  INPUTS  -- PARAMETER             MEANING
  986. '             Strng$        STRING TO WRITE OUT
  987. '
  988. '  OUTPUTS -- NONE
  989. '
  990. '  PURPOSE -- Writes to local screen regardless of whether you have
  991. '             carrier.  Assumes have positioned cursor where you want.
  992. '
  993. * ------[ first line different ]------
  994.       SUB PScrn (Strng$)                                             ' RM11159302
  995.       IF Strng$ = "" THEN _
  996.          EXIT SUB
  997.       IF ZUseBASICWrites THEN _
  998.          PRINT Strng$; _
  999.       ELSE CALL ANSI (Strng$,ZWasCL,ZWasCC) : _
  1000.            LOCATE ZWasCL,ZWasCC
  1001.       END SUB
  1002. * REPLACING old line(s) by new
  1003. 1485 ' $SUBTITLE: 'SkipLine - sub to write a blank line to user'
  1004. ' $PAGE
  1005. '
  1006. '  NAME    -- SkipLine
  1007. '
  1008. '  INPUTS  --   PARAMETER             MEANING
  1009. '               ZLocalUser
  1010. '               ZModemStatusReg
  1011. '               NumReturns
  1012. '               ZReturnLineFeed$
  1013. '               ZSnoop
  1014. '
  1015. '  OUTPUTS -- NONE
  1016. '
  1017. '  PURPOSE -- Skip lines on the user's terminal
  1018. '
  1019. * ------[ first line different ]------
  1020.       SUB SkipLine (NumReturns)                                      ' RM11159302
  1021.       FOR WasI=1 TO NumReturns
  1022.           CALL PutCom (ZReturnLineFeed$)
  1023.       NEXT
  1024.       IF NOT ZSnoop THEN _
  1025.          GOTO 1486
  1026.       IF ZUseBASICWrites THEN _
  1027.          FOR WasI = 1 TO NumReturns : _
  1028.             PRINT : _
  1029.          NEXT _
  1030.       ELSE FOR WasI = 1 TO NumReturns : _
  1031.               LOCATE ,,1 : _
  1032.               CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
  1033.               LOCATE ZWasCL,ZWasCC : _
  1034.            NEXT
  1035. * REPLACING old line(s) by new
  1036. 1496 ' $SUBTITLE: 'SetCrLf -- sub to set up nulls/lf's for output'
  1037. ' $PAGE
  1038. '
  1039. '  NAME    -- SetCrLf
  1040. '
  1041. '  INPUTS  --   PARAMETER          MEANING
  1042. '              ZCarriageReturn$    CARRIAGE RETURN CHARACTER
  1043. '              ZLineFeed$          LINE FEED CHARACTER
  1044. '              ZLineFeeds          LINE FEED Switch
  1045. '              ZNul$                NULL CHARACTER
  1046. '
  1047. '  OUTPUTS -- ZReturnLineFeed$   END-OF-LINE STRING
  1048. '
  1049. '  PURPOSE -- Set up the necessary nulls/line feeds to end
  1050. '             each output to the communications port with.
  1051. '
  1052. * ------[ first line different ]------
  1053.       SUB SetCrLf                                                    ' RM11159302
  1054.       ZReturnLineFeed$ = _
  1055.          MID$(ZCarriageReturn$,1, - (NOT ZLocalUser)) + _
  1056.          ZNul$ + _
  1057.          MID$(ZLineFeed$,1, - (ZLineFeeds <> 0))
  1058.       END SUB
  1059. * REPLACING old line(s) by new
  1060. 1500 CALL Carrier
  1061.      IF ZSubParm = -1 THEN _
  1062.         EXIT SUB
  1063.      ZLinesPrinted = 0
  1064.      ZDisplayAsUnit = ZFalse
  1065.      InStack = ZFalse
  1066.      GOSUB 1580
  1067.      ZWasA = 0
  1068.      ZWasB = 0
  1069.      ZWasC = 0
  1070.      ZWasQ = 1
  1071.      ZStoreParseAt = 1
  1072.      ZYes = ZFalse
  1073.      ZUserIn$ = ""
  1074.      SleepWarn = ZTrue
  1075.      ZNo = ZFalse
  1076.      ZNonStop = (ZPageLength < 1)
  1077.      IF ZOutTxt$ = "" THEN _
  1078.         GOTO 1525
  1079. * ------[ first line different ]------
  1080.      IsMore = (LEFT$(ZOutTxt$,4) = "More") OR (LEFT$(ZOutTxt$,6) = "Press ") ' UG070510
  1081.      IF ZHidden THEN _
  1082.         ZOutTxt$ = ZOutTxt$ + " (dots will echo)"                    ' UG070510
  1083.      IF (NOT ZVerifying) OR HoldA$ = "" THEN _
  1084.         CALL ColorPrompt (ZOutTxt$) : _
  1085.         ZOutTxt$ = ZOutTxt$ + _
  1086.              MID$("? !  ",2*ZTurboKey+1,2) : _
  1087.         HoldA$ = ZOutTxt$ _
  1088.      ELSE ZOutTxt$ = HoldA$
  1089.      ZSubParm = 4
  1090.      StopSave = ZStopInterrupts
  1091.      ZStopInterrupts = ZTrue
  1092.      CALL TPut
  1093.      ZStopInterrupts = StopSave
  1094.      IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
  1095.         EXIT SUB
  1096. * REPLACING old line(s) by new
  1097. 1523 IF ZPromptBell THEN _
  1098.         IF ZLocalUser THEN _
  1099. * ------[ first line different ]------
  1100.            BEEP _                                                    ' RM041101
  1101.         ELSE CALL PutCom(ZBellRinger$)
  1102. * REPLACING old line(s) by new
  1103. 1534 ZUserIn$ = ZOutTxt$   ' Not Macro command - pass to normal processing
  1104. * ------[ first line different ]------
  1105. ' * strip off leading slash when not in turbokey mode so macros can be
  1106. ' * written to work in both turbo and non-turbo-key mode
  1107.      IF LEFT$(ZUserIn$,1) = "/" THEN IF NOT ZTurboKeyUser THEN _     ' KG092301
  1108.         ZUserIn$ = RIGHT$(ZUserIn$,LEN(ZUserIn$)-1) : _              ' KG092301
  1109.         ZTurboKey = ZFalse                                           ' KG092301
  1110.      IF ZMacroEcho THEN _
  1111.         ZSubParm = 4 : _
  1112.         CALL TPut
  1113.      WasX$ = ZCarriageReturn$
  1114.      GOTO 1547
  1115. * REPLACING old line(s) by new
  1116. 1537 CALL CheckTime(ZAutoLogoff!, TempElapsed!, 3)
  1117. * ------[ first line different ]------
  1118.      IF TempElapsed! < ZAutoLogoffSecTime! THEN _                    ' RM09169301 30
  1119.         IF TempElapsed! <= 0 THEN _
  1120.            CALL SkipLine (1) : _
  1121.            ZSubParm = -1 : _
  1122.            ZNo = ZTrue : _
  1123.            ZRet = ZTrue : _
  1124.            ZSleepDisconnect = NOT ZAutoLogoffReq : _
  1125.            IF ZAutoLogoffReq THEN _
  1126.               CALL UpdtCalr ("Auto-logoff",1): _
  1127.               EXIT SUB _
  1128.            ELSE CALL UpdtCalr ("Sleep disconnect",1) : _
  1129.                 EXIT SUB _
  1130.         ELSE IF SleepWarn THEN _
  1131.                 SleepWarn = ZFalse : _
  1132.                 Temp! = TempElapsed! : _
  1133.                 ZOutTxt$ = "Auto-Logoff in " + STR$(ZAutoLogoffSecTime!) + " seconds..." : _ ' RM09169301 30
  1134.                 CALL RingCaller : _
  1135.                 CALL QuickTput ("Press Enter to cancel  " + STR$(ZAutoLogoffSecTime!),0) _ ' RM09169301 30
  1136.              ELSE IF Temp! - TempElapsed! > 1.0 THEN _
  1137.                      CALL QuickTPut (ZBackSpace$+ZBackSpace$,0) : _
  1138.                      CALL QuickTPut (RIGHT$(STR$(CINT(TempElapsed!)),2),0) : _
  1139.                      Temp! = TempElapsed!                 
  1140.      CALL FindFKey
  1141.      IF ZSubParm < 0 THEN _
  1142.         EXIT SUB
  1143. * REPLACING old line(s) by new
  1144. 1545 WasX$ = ZWasY$
  1145. * ------[ first line different ]------
  1146.      IF ZFossil AND NOT IsMore AND ZTurboKey THEN                    ' UG070510/RM030602
  1147.         CALL FosTxPurge(ZComPort)                                    ' UG070510
  1148.         CALL PutCom(ZEmphasizeOff$ + ZEmphasizeOff$)                 ' UG070510
  1149.      END IF                                                          ' UG070510
  1150.      ZAutoLogoffReq = ZFalse
  1151.      IF INSTR(ZLineEditChk$,ZWasY$) > 5 _
  1152.         GOTO 1635
  1153.      IF ZWasY$ < " " AND ZWasY$ <> ZCarriageReturn$ THEN _
  1154.         GOTO 1525
  1155.      IF ZWasY$ = "^" THEN _
  1156.         GOTO 1525
  1157.      IF ZWasY$ = ZCarriageReturn$ THEN _
  1158.         GOTO 1547 _
  1159.      ELSE GOSUB 1550
  1160.      IF ZTurboKey < 1 THEN _
  1161.         GOTO 1546
  1162.      IF ZWasY$ = " " THEN _
  1163.         ZWasY$ = ""
  1164.      IF ZWasY$ <> "/" THEN _
  1165.         ZUserIn$ = ZWasY$ : _
  1166.         ZWasY$ = ZCarriageReturn$ : _
  1167.         WasX$ = ZWasY$ : _
  1168.         GOTO 1547
  1169.      ZTurboKey = 0
  1170.      GOTO 1525
  1171. * REPLACING old line(s) by new
  1172. 1580 ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
  1173.      IF ZAutoLogoffReq OR ZWaitExpired THEN _
  1174.         ZWaitExpired = ZFalse : _
  1175.         IF NOT ZSuspendAutologoff THEN _
  1176. * ------[ first line different ]------
  1177.            ZAutoLogoff! = TIMER + ZAutoLogoffSecTime!                ' RM09169301  30
  1178.      RETURN
  1179. * REPLACING old line(s) by new
  1180. 1636 ' $SUBTITLE: 'RingCaller - sub to use sound + screen emphasis'
  1181. ' $PAGE
  1182. '
  1183. '  NAME    -- RingCaller
  1184. '
  1185. '  INPUTS  --     PARAMETER                    MEANING
  1186. '                 ZOutTxt$                           STRING TO EMPHASIZE
  1187. '
  1188. '  OUTPUTS --  none
  1189. '
  1190. '  PURPOSE --  Rings the users bell before and after string
  1191. '              (but not snooping sysop) and adds emphasis around
  1192. '              message sent.
  1193. '
  1194. * ------[ first line different ]------
  1195.      SUB RingCaller                                                  ' RM11159302
  1196.      WasX$ = LEFT$(ZBellRinger$,-ZLocalUser)
  1197.      CALL PutCom (ZBellRinger$)
  1198.      CALL LPrnt (WasX$,0)
  1199.      ZSubParm = 2
  1200.      ZOutTxt$ = ZEmphasizeOn$ + ZOutTxt$ + ZEmphasizeOff$
  1201.      CALL TPut
  1202.      CALL PutCom (ZBellRinger$)
  1203.      CALL LPrnt (WasX$,0)
  1204.      END SUB
  1205. * REPLACING old line(s) by new
  1206. 1640 ZWasB = INSTR(ZWasA,ZUserIn$,ParseChar$)
  1207.      ZWasC = ZWasB-ZWasA
  1208.      IF ZWasC < 1 THEN _
  1209.         ZEOL = ZTrue : _
  1210.         ZWasC = 128
  1211.      ZWasDF$ = MID$(ZUserIn$,ZWasA,ZWasC)
  1212.      IF ZWasDF$ = "" THEN GOTO 1641
  1213.         ZWasQ = ZWasQ + 1
  1214.         ZStoreParseAt = ZStoreParseAt + 1
  1215.         ZUserIn$(ZStoreParseAt) = ZWasDF$
  1216.         CALL AllCaps(ZWasDF$)
  1217.         WasX = INSTR(";NS;/G;C;",";"+ZWasDF$+";")
  1218.         IF WasX = 0 THEN GOTO 1641
  1219.            ZNonStop = ZNonStop OR (WasX = 1) OR (WasX = 7 AND NOT ZStackC)
  1220.      IF ZStoreParseAt > 1 THEN IF INSTR("Jj",ZUserIn$(ZStoreParseAt-1)) THEN _
  1221.         ZNonStop = (ZPageLength < 1)
  1222. * ------[ first line different ]------
  1223.      ZAutoLogoffReq = ZAutoLogoffReq OR (WasX = 4)
  1224.      IF ZAutoLogoffReq THEN
  1225.         IF ZFileSysParm > 0 AND (ZFF = 2 OR ZFF = 7) THEN _          ' RM02149401          ' RM02149401
  1226.            CALL SkipLine (1)                                         ' RM02149401
  1227.         CALL QuickTPut1 (ZEmphasizeOn$ + "Auto-logoff" + _           ' RM02149401
  1228.                           " requested" + ZEmphasizeOff$)             ' BTCH174
  1229.      END IF                                                          ' RM02149401
  1230.      IF ZWasQ > 0 AND WasX < 7 THEN _
  1231.         ZWasQ = ZWasQ - 1 : _
  1232.         ZStoreParseAt = ZStoreParseAt - 1
  1233. * REPLACING old line(s) by new
  1234. 1654 ' $SUBTITLE: 'SetBaud - sub to set the baud rate in the RS232'
  1235. ' $PAGE
  1236. '
  1237. '  NAME    -- SetBaud
  1238. '
  1239. '  INPUTS  --     PARAMETER                    MEANING
  1240. '             ZBaudRateDivisor   NUMBER TO DIVIDE THE 8250 CHIP'S
  1241. '                                 PROGRAMABLE CLOCK TO ADJUST THE
  1242. '                                 BAUD RATE TO THE USER'S BAUD
  1243. '                                 RATE (INDEPENDENT OF THE BAUD
  1244. '                                 RATE USED TO OPEN THE COMM. PORT)
  1245. '
  1246. '        DESIRED BAUD        DIVISIOR (DECIMAL) TO OBTAIN DESIRED BAUD RATE
  1247. '            RATE              PCjr         PC AND XT
  1248. '              50             2237             2304
  1249. '              75             1491             1536
  1250. '             110             1017             1047
  1251. '             134.5            832              857
  1252. '             150              746              768
  1253. '             300              373              384
  1254. '             600              186              192
  1255. '            1200               93               96
  1256. '            1800               62               64
  1257. '            2000               56               58
  1258. '            2400               47               48
  1259. '            3600               31               32
  1260. '            4800               23               24
  1261. '            7200          not available         16
  1262. '            9600          not available         12
  1263. * ------[ first line different ]------
  1264. '           12000          not available         10                  ' CONN174
  1265. '           14400          not available          8                  ' CONN174
  1266. '           19200          not available          6
  1267. '           21600               "                 5                  ' BB09039301
  1268. '           24000               "                 4                  ' RM11279301
  1269. '           26400               "                 4                  ' RM11279301
  1270. '           28800               "                 4                  ' BB062501
  1271. '           38400               "                 3
  1272. '           57600               "                 2                  ' BB062501
  1273. '          115200               "                 1                  ' BB09039301
  1274. '  OUTPUTS -- BAUD RATE SET IN THE RS232 INTERFACE
  1275. '
  1276. '  PURPOSE -- To set the baud rate in the RS232 interface
  1277. '             inpependent of the baud rate the communications port
  1278. '             was opened at
  1279. '
  1280.       SUB SetBaud STATIC
  1281.      IF ZCBaud$ = "" THEN _
  1282.         IF VAL(ZNetBaud$) > 0 THEN _                                 ' RM120901
  1283.            ZCBaud$ = STR$(ZBaudTest!) : _                            ' RM120901
  1284.            CALL Trim (ZCBaud$) _                                     ' RM120901
  1285.         ELSE _                                                       ' RM120901
  1286.            ZCBaud$ = MID$(ZBaudRates$,(-5 * ZBPS),5) : _             ' BH070401
  1287.            CALL Trim (ZCBaud$)                                       ' BH070401
  1288.      Temp! = VAL(ZCBaud$)
  1289.      IF Temp! > 0 THEN CALL SetBPS (Temp!,ZCBPS)
  1290.      IF (ZCBPS = 0 OR Temp! = 0) THEN ZCBPS = ZBPS
  1291.      IF NOT ZKeepInitBaud THEN _
  1292.         ZTalkToModemAt$ =  MID$(ZBaudRates$,(-5 * ZBPS),5) _
  1293.      ELSE ZTalkToModemAt$ = ZModemInitBaud$
  1294.      CALL Trim (ZTalkToModemAt$)
  1295.      IF LEN(ZTalkToModemAt$) < 5 THEN _
  1296.         ZTalkToModemAt$ = SPACE$(4 - LEN(ZTalkToModemAt$)) + _
  1297.                             ZTalkToModemAt$
  1298.      IF ZEightBit THEN _                                             ' RM041101
  1299.         Parity = 2 : _                                    ' No PARITY
  1300.         DataBits = 3 : _                                  ' 8 DATA BITS
  1301.         StopBits = 0 _                                    ' 1 STOP BIT
  1302.      ELSE Parity = 3 : _                                  ' EVEN PARITY
  1303.           DataBits = 2 : _                                ' 7 DATA BITS
  1304.           StopBits = 0                                    ' 1 STOP BIT
  1305.      ComSpeed! = VAL(ZTalkToModemAt$)
  1306.      IF ComSpeed! > 9600 THEN                                        ' RM09069301
  1307.         IF ZFossil THEN _                                            ' RM09069301
  1308.            IF ComSpeed! = 12000 THEN _                               ' RM09069301
  1309.               WasI = &H2E00 _                                        ' RM09069301
  1310.            ELSE IF ComSpeed! = 14400 THEN _                          ' RM09069301
  1311.               WasI = &H3840 _                                        ' RM09069301
  1312.            ELSE IF ComSpeed! = 16800 THEN _                          ' RM09069301
  1313.               WasI = &H41A0 _                                        ' RM09069301
  1314.            ELSE IF ComSpeed! = 19200 THEN _                          ' RM09069301
  1315.               WasI = &H4B00 _                                        ' RM09069301/BB09199301
  1316.            ELSE IF ComSpeed! = 21600 THEN _                          ' BB09039301
  1317.               WasI = &H5460 _                                        ' BB09039301
  1318.            ELSE IF ComSpeed! = 24000 THEN _                          ' RM11279301
  1319.               WasI = &H5E88 _                                        ' RM11279301
  1320.            ELSE IF ComSpeed! = 26400 THEN _                          ' RM11279301
  1321.               WasI = &H6720 _                                        ' RM11279301
  1322.            ELSE IF ComSpeed! = 28800 THEN _                          ' BB062501
  1323.               WasI = &H7080 _                                        ' BB062501/BB09039301
  1324.            ELSE IF ComSpeed! = 38400 THEN _                          ' RM09069301
  1325.               WasI = &H9600 _                                        ' RM09069301
  1326.            ELSE IF ComSpeed! = 57600 THEN _                          ' BB062501
  1327.               WasI = &HE100 _                                        ' BB062501
  1328.         ELSE WasI = ComSpeed!
  1329.      ENDIF
  1330.      IF ZFossil THEN _
  1331.         CALL FosSpeed(ZComPort,WasI,Parity,DataBits,StopBits) : _
  1332.         EXIT SUB
  1333.      IF ComSpeed! = 2400 THEN _
  1334.         ZBaudRateDivisor = &H30 + (1 * (ZComputerType = 2)) _
  1335.      ELSE IF ComSpeed! = 1200 THEN _
  1336.         ZBaudRateDivisor = &H60 + (3 * (ZComputerType = 2)) _
  1337.      ELSE IF ComSpeed! = 9600 THEN _
  1338.         ZBaudRateDivisor = &HC _
  1339.      ELSE IF ComSpeed! = 300 THEN _
  1340.         ZBaudRateDivisor = &H180 + (11 * (ZComputerType = 2)) _
  1341.      ELSE IF ComSpeed! = 450 THEN _
  1342.         ZBaudRateDivisor = &H100 + (8 * (ZComputerType = 2)) _
  1343.      ELSE IF ComSpeed! = 4800 THEN _
  1344.         ZBaudRateDivisor = &H18 _
  1345.      ELSE IF ComSpeed! = 7200 THEN _                                 ' CONN174
  1346.         ZBaudRateDivisor = &H10 _                                    ' CONN174
  1347.      ELSE IF ComSpeed! = 12000 THEN _                                ' CONN174
  1348.         ZBaudRateDivisor = &HA _                                     ' CONN174
  1349.      ELSE IF ComSpeed! = 14400 THEN _                                ' CONN174
  1350.         ZBaudRateDivisor = &H8 _                                     ' CONN174
  1351.      ELSE IF ComSpeed! = 16800 THEN _                                ' BB062501
  1352.         ZBaudRateDivisor = &H7 _                                     ' BB062501/BB09039301
  1353.      ELSE IF ComSpeed! = 19200 THEN _
  1354.         ZBaudRateDivisor = &H6 _
  1355.      ELSE IF ComSpeed! = 21600 THEN _                                ' BB09039301
  1356.         ZBaudRateDivisor = &H5 _                                     ' BB09039301
  1357.      ELSE IF ComSpeed! = 24000 THEN _                                ' RM11279301
  1358.         ZBaudRateDivisor = &H4 _                                     ' RM11279301
  1359.      ELSE IF ComSpeed! = 26400 THEN _                                ' RM11279301
  1360.         ZBaudRateDivisor = &H4 _                                     ' RM11279301
  1361.      ELSE IF ComSpeed! = 28800 THEN _                                ' BB062501
  1362.         ZBaudRateDivisor = &H4 _                                     ' BB062501
  1363.      ELSE IF ComSpeed! = 38400 THEN _
  1364.         ZBaudRateDivisor = &H3 _                                     ' BB062501
  1365.      ELSE IF ComSpeed! = 57600 THEN _                                ' BB062501
  1366.         ZBaudRateDivisor = &H2                                       ' BB062501
  1367.      MostSignifByte = FIX (ZBaudRateDivisor / 256)
  1368.      LeastSignifByte = ZBaudRateDivisor - (MostSignifByte * 256)
  1369.      LineCntlStatus = INP(ZLineCntlReg)
  1370.      MSBSave = INP(ZMSB)
  1371.      OUT ZMSB,0
  1372.      OUT ZLineCntlReg,LineCntlStatus OR 128
  1373.      OUT ZLSB,LeastSignifByte
  1374.      OUT ZMSB,MostSignifByte
  1375.      OUT ZLineCntlReg,LineCntlStatus
  1376.      OUT ZMSB,MSBSave
  1377.      END SUB
  1378. * REPLACING old line(s) by new
  1379. 2018 ' $SUBTITLE: 'SetWhoTo - subroutine to get who a msg/upload is to'
  1380. ' $PAGE
  1381. '
  1382. '  NAME    -- SetWhoTo
  1383. '
  1384. '  INPUTS  --     PARAMETER                    MEANING
  1385. '              HighestUserRecord
  1386. '
  1387. '  OUTPUTS --  MsgTo$              Who message is to
  1388. '              RcvrRecNum         User record # of who to
  1389. '
  1390. '  PURPOSE --  Asks who a message/upload is to and checks if receiver exists
  1391. '
  1392. * ------[ first line different ]------
  1393.      SUB SetWhoTo (EnableCC,MsgTo$,MsgFrom$,RcvrRecNum,Found,AllowPub) STATIC ' KG012502
  1394.      Temp$ = MsgFrom$
  1395.      CALL Trim (Temp$)
  1396.      ZNumHeaders = 0
  1397.      CALL KillWork (ZNodeWorkFile$)
  1398. * REPLACING old line(s) by new
  1399. * ------[ first line different ]------
  1400. 2021 ZOutTxt$ = "To " + LEFT$("A)ll,",-5*AllowPub) + LEFT$("(S)ysop,",-8*(ZNetConference = ZFalse)) + _  ' KG012502/RM01159402
  1401.                  LEFT$("D)istribution,",-14*EnableCC) + _
  1402.                  " or name (2 Char. Min.)" + ZPressEnterExpert$      ' PEEK174
  1403.      CALL SkipLine (1)
  1404.      ZSemiOnly = ZTrue
  1405.      CALL PopCmdStack
  1406.      IF ZWasQ = 0 OR ZSubParm < 0 THEN _                             ' KG022501
  1407.         GOTO 2034                                                    ' KG022501/RM01309401
  1408.      IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
  1409.         CALL QuickTPut1 ("30 Char. Max") : _
  1410.         GOTO 2021
  1411.      IF LEFT$(ZUserIn$(ZAnsIndex),1) = " " THEN _                    ' PEEK174
  1412.         CALL SkipLine (1) : _                                        ' PEEK174
  1413.         CALL QuickTPut1 ("Name can't begin with a SPACE") : _        ' PEEK174
  1414.         CALL SkipLine (1) : _                                        ' PEEK174
  1415.         GOTO 2021                                                    ' PEEK174
  1416.      Found = ZTrue
  1417.      ZWasDF$ = ZUserIn$(ZAnsIndex)                                   ' KG022501
  1418.      CALL Remove (ZWasDF$,",")                                       ' DD042901
  1419.      CALL AllCaps (ZWasDF$)                                          ' KG022501
  1420.      ZUserIn$(ZAnsIndex) = ZWasDF$                                   ' KG022501
  1421.      IF ZWasDF$ = "A" AND AllowPub THEN _                            ' KG022501
  1422.         MsgTo$ = "ALL" _                                             ' KG022501
  1423.      ELSE IF ZWasDF$ = "S" THEN _                                    ' KG022501
  1424.         MsgTo$ = "SYSOP" _                                           ' KG022501
  1425.      ELSE IF ZWasDF$ = "D" AND EnableCC THEN _                       ' KG022501
  1426.         GOTO 2025 _                                                  ' KG022501
  1427.      ELSE MsgTo$ = ZUserIn$(ZAnsIndex) :_                            ' KG022501
  1428.           CALL AllCaps (MsgTo$)                                      ' KG022501
  1429.      GOTO 2032
  1430. * REPLACING old line(s) by new
  1431. 2026 ZFileName$ = ZDistriPath$ + ZFileName$ + ".LST"
  1432.      CALL FindItX (ZFileName$,7)
  1433.      IF NOT ZOK THEN _
  1434. * ------[ first line different ]------
  1435.         CALL QuickTPUT1 (ZFG7$ + ZUserIn$ + ZFG5$ + " not found!" + ZEmphasizeOff$) : _ ' RM070901
  1436.         GOTO 2024
  1437.      ZNumHeaders = 0
  1438.      CALL OpenWorkA (ZNodeWorkFile$)
  1439.      WHILE NOT EOF(7)
  1440.         CALL ReadDir (7,1)
  1441.         CALL AllCaps (ZOutTxt$)
  1442.         ZWasDF$ = ZOutTxt$
  1443.         CALL WhoCheck (ZOutTxt$, Found, RcvrRecNum)
  1444.         ZNumHeaders = ZNumHeaders + 1
  1445.         CALL PrintWorkA (ZWasDF$ + "," + STR$(-RcvrRecNum*Found))
  1446.      WEND
  1447.      CLOSE 7
  1448.      CLOSE 2                                                         ' RM02289401
  1449.      GOTO 2034                                                       ' RM01309401
  1450. * REPLACING old line(s) by new
  1451. 2032 RcvrRecNum = 0
  1452. * ------[ first line different ]------
  1453.      IF MsgTo$ = "UUCP" AND ZNetConference THEN _                    ' RM01309401
  1454.         GOTO 2033                                                    ' RM01309401
  1455.      IF MsgTo$ <> "ALL" THEN
  1456.         IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN
  1457.            CALL CheckInt (MsgTo$)                                    ' KG082201
  1458.            IF ZTestedIntValue = 0 OR NOT ZSysOp OR (ZSysOp AND ZFileSysParm < 1) THEN     ' KG082201/RM030201
  1459.            ZWasDF = INSTR(MsgTo$+" @"," @")
  1460.            TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1)
  1461.            AliasConf = ZFalse                                        ' RM02129401
  1462.            CALL WhoCheck (TempHashValue$,Found,RcvrRecNum)
  1463.            IF NOT Found THEN _                                       ' RM02129401
  1464.               CALL AliasChk (MsgTo$,Found,TempMsgTo$,AliasConf) : _  ' DGSALIAS/RM070901/RM/GS02129401
  1465.               IF Found THEN _                                        ' RM02129401
  1466.                  ZStartHash = 1 : _                                  ' RM02129401
  1467.                  CALL WhoCheck (TempMsgTo$,Found,RcvrRecNum)         ' RM02129401
  1468.            IF Found AND MsgTo$ = ZSecretName$ THEN _                 ' PEEK174
  1469.               CALL QuickTPut1 (ZFG7$ + MsgTo$ + ZFG4$ + " not active user." + _
  1470.                               ZEmphasizeOff$) : _                    ' PEEK174
  1471.               Found = ZFalse                                         ' PEEK174
  1472.            IF (NOT Found) AND (NOT ZNetConference) AND (NOT AliasConf) THEN ' RM02129401     ' PEEK174/NET174/RM123101
  1473.               ZOutTxt$ = "Send to: "                                 ' RM101801
  1474.               CALL QuickPeek (MsgTo$,Found)                          ' PEEK174/RM02129401
  1475.               IF Found THEN _                                        ' PEEK174
  1476.                  ZStartHash = 1 : _                                  ' PEEK174
  1477.                  CALL WhoCheck (MsgTo$,Found,RcvrRecNum)             ' PEEK174
  1478.            END IF                                                    ' PEEK174
  1479.            IF NOT Found THEN                                         ' PEEK174
  1480.               ZLastIndex = 0                                         ' PEEK174
  1481.               RcvrRecNum = 0                                         ' PEEK174
  1482.               IF NOT ZReply THEN                                     ' PEEK174
  1483.                  CALL QuickTPut (ZFG5$ + "No match found for " + ZFG7$ + _
  1484.                                 MsgTo$ + ZEmphasizeOff$,1)           ' PEEK174
  1485.                  ZOutTxt$ = ZFG6$ + "Send anyway (Y,[N]" + ZFG6$ + ")" + ZEmphasizeOff$ ' PEEK174/RM02129401
  1486.                  ZTurboKey = -ZTurboKeyUser                          ' PEEK174
  1487.                  ZLastIndex = 0                                      ' PEEK174
  1488.                  GOSUB 2035                                          ' PEEK174/RM01309401
  1489.                  IF NOT ZYes THEN _
  1490.                     GOTO 2021
  1491.               END IF                                                 ' PEEK174
  1492.            END IF                                                    ' PEEK174
  1493.            END IF                                                    ' RM030201
  1494.         END IF                                                       ' PEEK174
  1495.      END IF                                                          ' PEEK174
  1496. * REPLACING old line(s) by new
  1497. * ------[ first line different ]------
  1498. 2033 IF MsgTo$ = Temp$ THEN _                                        ' RM01309401
  1499.         ZOutTxt$ = "Really send this to YOURSELF (Y,[N])" : _
  1500.         ZLastIndex = 0 : _
  1501.         GOSUB 2035 : _                                               ' RM01309401
  1502.         IF NOT ZYes THEN _
  1503.            MsgTo$ = ""
  1504.      CALL OpenWorkA (ZNodeWorkFile$)
  1505.      CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
  1506.      CLOSE 2
  1507.      ZNumHeaders = ZNumHeaders + 1
  1508.      IF NOT ZWelcomeAboard THEN _                                    ' NEWU174
  1509.      IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
  1510.         MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
  1511.         (NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
  1512.            ZOutTxt$ = "Carbon copy to another (Y,[N])" : _
  1513.            CALL PopCmdStack : _
  1514.            IF ZYes THEN _
  1515.               GOTO 2021
  1516. * REPLACING old line(s) by new
  1517. * ------[ first line different ]------
  1518. 2034 IF ZNumHeaders < 1 THEN _                                       ' RM01309401
  1519.         MsgTo$ = "" _
  1520.      ELSE IF ZNumHeaders > 1 THEN _
  1521.         MsgTo$ = "(list)"
  1522.      EXIT SUB
  1523. * INSERTING new line(s)
  1524. 2035 ZSubParm = 1                                                    ' RM01309401
  1525.      CALL TGet
  1526.      IF ZSubParm < 0 THEN _
  1527.         EXIT SUB
  1528.      RETURN
  1529.      END SUB
  1530. * REPLACING old line(s) by new
  1531. 2250 ' $SUBTITLE: 'WhoCheck - Checks whether user exists'
  1532. ' $PAGE
  1533. '
  1534. '  NAME    -- WhoCheck
  1535. '
  1536. '  INPUTS  --   PARAMETER                    MEANING
  1537. '              WhoFind$                User to find
  1538. '
  1539. '  OUTPUTS --  WhoFound                Whether user found
  1540. '              UserNumFound           Record # of user
  1541. '
  1542. '  PURPOSE --  Validate that user record exists.  Sysop
  1543. '              counted as found even if lack user record.
  1544. '
  1545.      SUB WhoCheck (WhoFind$,WhoFound,UserNumFound) STATIC
  1546.      UserNumFound = 0
  1547.      IF ZStartHash <> 1 THEN _
  1548.         WhoFound = ZTrue : _
  1549.         EXIT SUB
  1550.      Work128$ = ZUserRecord$
  1551.      WhoFound = ZFalse
  1552.      ToSysop = (INSTR(WhoFind$,"SYSOP") > 0 OR _
  1553.                 INSTR(WhoFind$,ZSysopFirstName$ + " " + ZSysopLastName$) > 0)
  1554.      CALL OpenUser (HighestUserRecord)
  1555.      FIELD 5, 128 AS ZUserRecord$
  1556.      IF ToSysop THEN _
  1557. * ------[ first line different ]------
  1558.         WasX$ = ZSecretName$ : _                                     ' MENU174
  1559.         ZMenuNewSysop = ZMenuNewSysop + 1 _                          ' MENU174
  1560.      ELSE WasX$ = WhoFind$
  1561.      ZWasDF = INSTR(WasX$+"@","@")
  1562.      WasX$ = LEFT$(WasX$,ZWasDF)
  1563.      IF LEN(WasX$) > 1 THEN _
  1564.         CALL FindUser (WasX$,"",ZStartHash,ZLenHash,_
  1565.                        0,0,HighestUserRecord,WhoFound,_
  1566.                        UserNumFound,ZWasSL)
  1567.      LSET ZUserRecord$ = Work128$
  1568.      IF NOT WhoFound THEN _
  1569.         IF ToSysop THEN _
  1570.            WhoFound = ZTrue
  1571.      END SUB
  1572. * REPLACING old line(s) by new
  1573. 3730 IF TabToSpace > 0 THEN _
  1574.         WasX$ = " " : _
  1575.         TabToSpace = TabToSpace - 1 : _
  1576.         GOTO 3750
  1577.      CALL FindFKey
  1578.      IF ZSubParm < 0 THEN _
  1579.         EXIT SUB
  1580.      WasX$ = ZKeyPressed$
  1581.      IF WasX$ = "" THEN _
  1582. * ------[ first line different ]------
  1583.         GOTO 3732 : _                                                ' KG011201
  1584.         IF ZLocalUser THEN _
  1585.            GOTO 3733 _
  1586.         ELSE GOTO 3732
  1587.      IF WasX$ = ZEscape$ THEN _
  1588.         ZKeyPressed$ = WasX$ : _
  1589.         EXIT SUB
  1590.      SendRemote = ZTrue
  1591.      WasZ = INSTR(ZLineEditChk$,WasX$)
  1592.      IF WasZ < 1 THEN _
  1593.         GOTO 3750 _
  1594.      ELSE IF WasZ > 4 THEN _
  1595.              GOTO 3870 _
  1596.      ELSE IF WasZ = 1 THEN _
  1597.              GOTO 3810
  1598.      IF ZLocalUser THEN _
  1599.         GOTO 3730
  1600. * REPLACING old line(s) by new
  1601. 3732 IF ZCommPortStack$ <> "" THEN _
  1602.         WasX$ = LEFT$(ZCommPortStack$,1) : _
  1603.         ZCommPortStack$ = RIGHT$(ZCommPortStack$,LEN(ZCommPortStack$)-1) : _
  1604.         GOTO 3738
  1605. * ------[ first line different ]------
  1606.      IF NOT ZLocalUser THEN _                                        ' KG011201
  1607.         CALL EofComm (Char) : _                                      ' KG011201
  1608.         IF Char <> -1 THEN _                                         ' KG011201
  1609.            GOTO 3736                                                 ' KG011201
  1610. * REPLACING old line(s) by new
  1611. 3733 CALL CheckTime(ZAutoLogoff!, TempElapsed!, 1)
  1612.      IF TempElapsed! <=0 THEN _
  1613.         ZWaitExpired = ZTrue : _
  1614.         Col = Col - 1 : _
  1615.         GOTO 3850
  1616.      CALL Carrier
  1617.      IF ZSubParm THEN _
  1618.         EXIT SUB
  1619. * ------[ first line different ]------
  1620.      CALL GoIdle                                                     ' JM/OS2
  1621.      GOTO 3730
  1622. * REPLACING old line(s) by new
  1623. 4773 ' $SUBTITLE: 'SysopChat - chat with sysop'
  1624. ' $PAGE
  1625. '
  1626. '  NAME    -- SysopChat
  1627. '
  1628. * ------[ first line different ]------
  1629. '                 PARAMETER                    MEANING
  1630. '  INPUTS  --  ChatType                   1 = Line Chat no ANSI      ' CHAT174/RM100101
  1631. '                                         2 = ANSIChat               ' CHAT174/RM100101
  1632. '  OUTPUTS --  ZWasCM                     True if chat active
  1633. '
  1634. '  PURPOSE --  Lets sysop chat interactively with caller
  1635. '
  1636.      SUB SysopChat (ChatType) STATIC                                 ' CHAT174/RM100101
  1637.      ZWasCM = ZTrue
  1638.      TimeChatStarted! = TIMER
  1639.      ZSubParm = 1
  1640.      CALL Line25
  1641.      ZOutTxt$(2) = ""
  1642.      ON ChatType GOTO 4775,4776                                      ' CHAT174/RM100101
  1643. * REPLACING old line(s) by new
  1644. 4775 CALL LineEdit (1,72)
  1645.      IF ZKeyPressed$ = ZEscape$ OR _
  1646.         ZSubParm < 0 THEN _
  1647.         GOTO 4777
  1648.      ZOutTxt$(1) = ""
  1649.      IF ZOutTxt$(2) <> "" THEN _
  1650.         ZOutTxt$ = ZOutTxt$(2) : _
  1651.         ZOutTxt$(1) = ZOutTxt$(2) : _
  1652.         ZOutTxt$(2) = "" _
  1653.      ELSE ZOutTxt$ = ""
  1654.      ZSubParm = 4
  1655.      CALL TPut
  1656.      IF ZSubParm > -1 THEN _
  1657.         GOTO 4775
  1658. * ------[ first line different ]------
  1659.      GOTO 4777                                                       ' CHAT174/RM100101
  1660. * INSERTING new line(s)
  1661. 4776 CALL ANSIChat                                                   ' CHAT174/RM100101
  1662. * REPLACING old line(s) by new
  1663. 5100 ' $SUBTITLE: 'RemNonAlf - removes non-alpha chars from a string'
  1664. ' $PAGE
  1665. '
  1666. '  NAME    -- RemNonAlf
  1667. '
  1668. '  INPUTS  --     PARAMETER                    MEANING
  1669. '                 Strng$                   String to check
  1670. '                 MinChar                  Remove chars with this
  1671. '                                          ASCII value or lower
  1672. '                 MaxChar                  Remove chars with this
  1673. '                                          ASCII value or higher
  1674. '
  1675. '  OUTPUTS --       Strng$                 String returned
  1676. * ------[ first line different ]------
  1677. '  PURPOSE --  Remove chars with ASCII value higher than MaxChar and
  1678. '              lower than MinChar
  1679. '
  1680.      SUB RemNonAlf (Strng$,MinChar,MaxChar)                          ' RM11159302
  1681.      Last = LEN(Strng$)
  1682.      WasJ = 1
  1683.      WHILE WasJ <= Last
  1684.         WasK = ASC(MID$(Strng$,WasJ))
  1685.         IF WasK > MinChar AND WasK < MaxChar THEN _
  1686.            WasJ = WasJ + 1 _
  1687.         ELSE Strng$ = LEFT$(Strng$,WasJ - 1) + _
  1688.                       RIGHT$(Strng$,Last - WasJ) : _
  1689.              Last = Last - 1
  1690.      WEND
  1691.      END SUB
  1692. * REPLACING old line(s) by new
  1693. 5501 CALL TimeRemain(MinsRemaining)
  1694. * ------[ first line different ]------
  1695.      ZOutTxt$ = ZFG7$ + STR$(MinsRemaining) + ZFG5$ + _
  1696.                 " mins left.  " + ZFG7$ + "D" + ZFG5$ + ")eposit, "  ' RM051901
  1697.      IF ZTimeBankInActive = 0 THEN _                                 ' RM09039301
  1698.         ZOutTxt$ = ZOutTxt$ + ZFG7$ + "W" + ZFG5$ + ")ithdraw, "     ' RM051901/RM09039301
  1699.      ZOutTxt$ = ZOutTxt$ + ZFG7$ + "B" + ZFG5$ + ")alance, "         ' RM12179301
  1700.      ZOutTxt$ = ZOutTxt$ + ZFG7$ + "H" + ZFG5$ + ")elp, [Q]" + _     ' RM09039301
  1701.                   ZFG5$ + "uit" + ZEmphasizeOff$                     ' RM051901/RM09039301
  1702.      ZTurboKey = -ZTurboKeyUser
  1703.      CALL PopCmdStack
  1704.      IF ZSubParm = -1 THEN _
  1705.         EXIT SUB
  1706.      ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
  1707.      CALL AllCaps(ZWasZ$)
  1708.      ON INSTR("QDWB?H",ZWasZ$) GOTO 5509,5505,5502,5504,5508,5508    ' RM12179301
  1709.      GOTO 5501
  1710. * REPLACING old line(s) by new
  1711. * ------[ first line different ]------
  1712. 5502 IF ZTimeBankInActive THEN _                                       ' BB09039301
  1713.         CALL SkipLine (1) : _                                        ' RM09039301
  1714.         CALL QuickTPut1 ("Time Bank Withdrawal In-Active at this Time") : _ ' BB09039301/RM09039301
  1715.         CALL SkipLine (1) : _                                        ' RM09039301
  1716.         GOTO 5501                                                    ' BB09039301
  1717.      SignTime = 1        ' withdraw time                             ' BB09039301
  1718.      MaxTime = ZGlobalBankTime
  1719. * REPLACING old line(s) by new
  1720. 5503 IF SignTime = 1 THEN _
  1721.         ZOutTxt$ = "Withdraw" _
  1722.      ELSE ZOutTxt$ = "Deposit"
  1723. * ------[ first line different ]------
  1724.      Temp$ = ZFG7$ + ZOutTxt$ + ZFG5$ + " how many mins" + ZEmphasizeOff$
  1725.      CALL ChangeInt (ZFalse,Temp$,Temp,0,Maxtime)
  1726.      IF ZWasQ = 0 OR ZTestedIntValue = 0 THEN _
  1727.         GOTO 5501
  1728.      ZTestedIntValue = SignTime * ZTestedIntValue
  1729.      CALL ChkAddedTime (ZTestedIntValue)
  1730.      IF ZTestedIntValue = 0 THEN _
  1731.         GOTO 5501
  1732.      ZSecsPerSession! = ZSecsPerSession! + (ZTestedIntValue * 60)
  1733.      IF ZMaxPerDay = 0 THEN _                                        ' KG082101
  1734.         ZTimeCredits! = ZTimeCredits! + ZTestedIntValue * 60         ' KG082101
  1735.      ZElapsedTime = ZElapsedTime - ZTestedIntValue
  1736.      ZGlobalBankTime = ZGlobalBankTime - ZTestedIntValue
  1737.      GOTO 5501
  1738. * INSERTING new line(s)
  1739. 5504 GOSUB 5507
  1740.      GOTO 5501
  1741. * REPLACING old line(s) by new
  1742. 5505 SignTime = -1            ' deposit
  1743.      MaxTime = ZMaxBank - ZGlobalBankTime
  1744.      IF MaxTime <= 0 THEN _
  1745. * ------[ first line different ]------
  1746.         CALL QuickTPut1 (ZFG5$ + "Already deposited max of" + _
  1747.                         ZFG7$ + STR$(ZMaxBank) + ZEmphasizeOff$) : _ ' RM052501
  1748.         ZLastIndex = 0 : _
  1749.         GOTO 5501
  1750.      IF MaxTime > MinsRemaining THEN _
  1751.         MaxTime = MinsRemaining
  1752.      GOTO 5503
  1753. * REPLACING old line(s) by new
  1754. 5507 IF ZAnsIndex < ZLastIndex THEN _
  1755.         RETURN
  1756. * ------[ first line different ]------
  1757.      CALL SkipLine(1)                                                ' DGS092501-DS
  1758.      CALL QuickTPut1 (ZFGB$ + "Time Bank Statistics:" + ZEmphasizeOff$) ' RM12179301
  1759.      CALL SkipLine(1)                                                ' RM12179301
  1760.      CALL QuickTPut1 (ZFGB$ + "  Maximum Allowable:    " + ZFGF$ + _
  1761.                  STR$(ZMaxBank) + ZFGB$ + " Mins" + ZEmphasizeOff$)  ' RM12179301
  1762.      CALL QuickTPut1 (ZFGB$ + "  Current Bank Balance: " + ZFGF$ + _
  1763.                  STR$(ZGlobalBankTime) + ZFGB$ + " Mins" + ZEmphasizeOff$) ' RM052501
  1764.      CALL SkipLine(1)                                                ' RM12179301
  1765.      RETURN
  1766. * REPLACING old line(s) by new
  1767. 5509 END SUB                                                         ' SKO10601
  1768. * REPLACING old line(s) by new
  1769. 9140 ' $SUBTITLE: 'GetTime - subroutine to calculate elapsed time'
  1770. ' $PAGE
  1771. '
  1772. '  NAME    -- GetTime
  1773. '
  1774. '  INPUTS  --     PARAMETER                    MEANING
  1775. '                ZTimeLoggedOn$
  1776. '
  1777. '  OUTPUTS --  ZSessionHour               NUMBER OF HOURS ON
  1778. '              ZSessionMin                NUMBER OF MINUTES ON
  1779. '              ZSessionSec                NUMBER OF SECONDS ON
  1780. '
  1781. '  PURPOSE --  Calculate the elapsed time a user has been on
  1782. '
  1783. * ------[ first line different ]------
  1784.      SUB GetTime                                                     ' RM11159302
  1785.      CALL CheckTime(ZUserLogonTime!, TempElapsed!, 2)
  1786.      ZSessionHour = TempElapsed! / 3600
  1787.      ZSessionMin = (TempElapsed! - ZSessionHour * 3600!) / 60
  1788.      ZSessionSec = TempElapsed! - (ZSessionHour * 3600! + ZSessionMin * 60!)
  1789.      IF ZSessionSec < 0 THEN _
  1790.         ZSessionSec = ZSessionSec + 60 : _
  1791.         ZSessionMin = ZSessionMin - 1
  1792.      IF ZSessionMin < 0 THEN _
  1793.         ZSessionMin = ZSessionMin + 60 : _
  1794.         ZSessionHour = ZSessionHour - 1
  1795.      END SUB
  1796. * REPLACING old line(s) by new
  1797. 9600 ' $SUBTITLE: 'DefaultU - subroutine to update user defauts'
  1798. ' $PAGE
  1799. '
  1800. '  NAME    -- DefaultU
  1801. '
  1802. '  INPUTS  --     PARAMETER                    MEANING
  1803. '             ZAutoDownDesired
  1804. '             ZBoldText$              Ansi bold (0 no, 1 yes)
  1805. '             ZCheckBulletLogon
  1806. '             ZExpertUser
  1807. '             ZWasGR
  1808. '             ZLastMsgRead
  1809. '             ZLineFeeds
  1810. '             ZNulls
  1811. '             ZPageLength
  1812. '             ZPromptBell
  1813. '             ZRegDate$
  1814. '             ZReqQuesAnswered
  1815. '             ZRightMargin
  1816. '             ZSkipFilesLogon
  1817. '             ZTimesLoggedOn
  1818. '             ZUpperCase
  1819. '             ZUserOption$
  1820. '             ZUserTextColor          Ansi of color (31-37)
  1821. '             ZUserXferDefault$
  1822. '
  1823. '  OUTPUTS--  USER.OPTONS$
  1824. '
  1825. '  PURPOSE --  To update the user's record with their options.
  1826. '  Meaning of graphics preference stored is as follows: where # is
  1827. '  value stored for the color.  E.g. if graphics perference for text
  1828. '  files is color, and preference for normal text is light yellow,
  1829. '  graphics preference stored is 38.  Colors are Red, Green, Yellow,
  1830. '  Blue, Purple, Cyan, and White.
  1831. '
  1832. '             normal                  bold
  1833. ' Graphics R  G  Y  B  P  C  W    R  G  Y  B  P  C  W
  1834. '   none  30 33 36 39 42 45 48 | 51 54 57 60 63 66 69
  1835. '   ansi  31 34 37 40 43 46 49 | 52 55 58 61 64 67 70
  1836. '  color  32 35 38 41 44 47 50 | 53 56 59 62 65 68 71
  1837. '
  1838. * ------[ first line different ]------
  1839.      SUB DefaultU                                                    ' RM11159302
  1840.      ZWasA =    -ZPromptBell          -2 * ZExpertUser _
  1841.             -4 * ZNulls               -8 * ZUpperCase _
  1842.            -16 * ZLineFeeds          -32 * ZCheckBulletLogon _
  1843.            -64 * ZSkipFilesLogon    -128 * ZAutoDownDesired _
  1844.           -256 * ZReqQuesAnswered   -512 * ZMailWaiting _
  1845.          -1024 * (NOT ZHiLiteOff)  -2048 * ZTurboKeyUser _
  1846.          -4096 * ZFileWaiting      -8192 * ZAvailableForChat         ' RCHAT0805
  1847.      WasX = 3*ZUserTextColor - 63 + 21*VAL(ZBoldText$) + ZWasGR
  1848.      IF WasX < 1 OR WasX > 255 THEN _
  1849.         WasX = 48
  1850.      LSET ZUserOption$ = _
  1851.         MKI$(ZTimesLoggedOn) + _
  1852.         MKI$(ZLastMsgRead) + _
  1853.         ZUserXferDefault$ + _
  1854.         CHR$(WasX) + _
  1855.         MKI$(ZRightMargin) + _
  1856.         MKI$(ZWasA) + _
  1857.         ZRegDate$ + _
  1858.         CHR$(ZPageLength) + _
  1859.         ZEchoer$
  1860.      END SUB
  1861. * REPLACING old line(s) by new
  1862. 9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
  1863. ' $PAGE
  1864. '
  1865. '  NAME    -- WhosOn
  1866. '
  1867. '  INPUTS  --     PARAMETER                    MEANING
  1868. '                NumNodes                   # of nodes to check
  1869. '                ZActiveMessageFile$        Current message file
  1870. '                ZOrigMsgFile$              Main msg file
  1871. '
  1872. '  OUTPUTS --  None
  1873. '
  1874. '  PURPOSE --  To display who is on each node.
  1875. '
  1876.      SUB WhosOn (NumNodes) STATIC
  1877. * ------[ first line different ]------
  1878.      CALL SkipLine(1)                                                ' RM03049401
  1879.      WasA1$ = ZActiveMessageFile$
  1880.      ZActiveMessageFile$ = ZOrigMsgFile$
  1881.      CALL OpenMsg
  1882.      FIELD 1, 128 AS ZMsgRec$
  1883.      GET 1,1                                                         ' KG012601
  1884.      NumNodes = VAL(MID$(ZMsgRec$,127))                              ' KG012601
  1885.      FOR NodeIndex = 2 TO NumNodes + 1
  1886.         GET 1,NodeIndex
  1887.         ZOutTxt$ = ZFG1$ + "Node" + _
  1888.              STR$(NodeIndex - 1) + ZFG2$
  1889.         WasAX$ = MID$(ZMsgRec$,79,5)                                 ' KG012001
  1890.         CALL Trim (WasAX$)                                           ' KG012001
  1891.         WasAX$ = RIGHT$("     " + WasAX$,5) + _                      ' KG012001
  1892.               " BPS: "
  1893.         IF MID$(ZMsgRec$,55,2) = "-1" AND NOT ZSysop THEN _
  1894.            ZWasY$ = "SYSOP" + SPACE$(21) _
  1895.         ELSE ZWasY$ = MID$(ZMsgRec$,1,26)
  1896.         WasAX$ = WasAX$ + ZFG3$ + ZWasY$
  1897.         IF MID$(ZMsgRec$,40,2) <> "-1" THEN                          ' RCHAT0805
  1898.            CALL SaveUserActivity(WhatTheyDoin$, NodeIndex, ZTrue)    ' RCHAT0813
  1899.            IF WhatTheyDoin$ = "C" THEN                               ' RCHAT0813
  1900.               WasAX$ = WasAX$ + ZFG4$ + "[In Chat System]"           ' RCHAT0906
  1901.            ELSEIF WhatTheyDoin$ = "F" THEN                           ' RCHAT0813
  1902.               WasAX$ = WasAX$ + ZFG4$ + "[In File System]"           ' RCHAT0906
  1903.            ELSEIF WhatTheyDoin$ = "M" THEN                           ' RCHAT0813
  1904.               WasAX$ = WasAX$ + ZFG4$ + "[In Message System]"        ' RCHAT0906
  1905.            ELSE                                                      ' RCHAT0813
  1906.               WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22)         ' RCHAT0813
  1907.            END IF                                                    ' RCHAT0813
  1908.         ELSE                                                         ' RCHAT0805
  1909.            WasAX$ = WasAX$ + ZFG4$ + "[Has Opened a Door]"           ' RCHAT0906
  1910.         END IF                                                       ' RCHAT0805
  1911.         IF MID$(ZMsgRec$,57,1) = "A" THEN _
  1912.            ZOutTxt$ = ZOutTxt$ + "  Online at " + _
  1913.                 WasAX$ _
  1914.         ELSE IF NOT ZSysop THEN _
  1915.                 ZOutTxt$ = ZOutTxt$ + _
  1916.                      " Waiting for next caller" _
  1917.              ELSE ZOutTxt$ = ZOutTxt$ + _
  1918.                        " Offline at " + _
  1919.                        WasAX$
  1920.         CALL QuickTPut1 (ZOutTxt$)
  1921.         CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
  1922.         IF ZNo THEN _
  1923.            NodeIndex = NumNodes + 2
  1924.      NEXT
  1925.      ZActiveMessageFile$ = WasA1$
  1926.      IF NOT ZAllowInternodeChat THEN _                               ' RM03049401
  1927.         CALL SkipLine(1) : _                                         ' RM03049401
  1928.         CALL AskMore ("",ZTrue,ZFalse,ZAnsIndex,ZTrue)               ' RM03049401
  1929.      CALL QuickTPut (ZEmphasizeOff$,0)
  1930.      END SUB
  1931. '
  1932. ' $SUBTITLE: 'AliasChk - Checks whether ALIAS exists'
  1933. '
  1934. ' $PAGE
  1935. '          Alias sub (c) Greg Snyder
  1936. '
  1937. '  SUBROUTINE NAME    -- AliasChk
  1938. '
  1939. '  INPUT PARAMETERS   --     PARAMETER                    MEANING
  1940. '                         WhoFind$                    ALIAS to find
  1941. '
  1942. '  OUTPUT PARAMETERS  --  WhoFound                    Whether ALIAS found
  1943. '                         UserNumFound                Record # of User
  1944. '
  1945. '  SUBROUTINE PURPOSE --  Validate that ALIAS exists.  Get User Record
  1946. '
  1947. * INSERTING new line(s)
  1948. 9900 SUB AliasChk (WhoFind$,WhoFound,TempWhoFind$,AliasConf) STATIC  ' RM02129401
  1949.      IF WhoFound = ZTrue THEN EXIT SUB
  1950.      CALL BreakFileName (ZMainUserFile$,Drive$,Prefix$,Ext$,ZTrue)
  1951.      DGSTemp = INSTR(ZConfName$," ")
  1952.      IF DGSTemp > 0 THEN _
  1953.       DGSFileName$ = Drive$ + LEFT$(ZConfName$,DGSTemp-1) + "A.DEF" _
  1954.      ELSE DGSFileName$ = Drive$ + ZConfName$ + "A.DEF"
  1955.      CALL FindIt (DGSFileName$)
  1956.      IF NOT ZOK THEN _
  1957.         AliasConf = ZFalse : _                                       ' RM02129401
  1958.         EXIT SUB
  1959.      AliasConf = ZTrue                                               ' RM02129401
  1960.      CALL OpenWork (7,DGSFileName$)
  1961.      WhoFound=ZFalse
  1962.      TempWhoFind$ = ""                                               ' RM02129401
  1963.      WHILE TempWhoFind$ = "" AND NOT EOF(7)                          ' RM02129401
  1964.         INPUT #7, DGSUserName$, DGSTempAlias$
  1965.         IF DGSTempAlias$ = ZSecretName$ THEN _                       ' RM02129401
  1966.            GOTO 9950                                                 ' RM02129401/RM03049401
  1967.         IF DGSTempAlias$ = WhoFind$ THEN _                           ' RM02129401
  1968.            TempWhoFind$ = DGSUserName$ : _                           ' RM02129401
  1969.            WhoFound = ZTrue : _                                      ' RM02129401
  1970.            EXIT SUB                                                  ' RM02129401
  1971.         InTo = INSTR(DGSTempAlias$,WhoFind$)                         ' RM02129401
  1972.         IF InTo > 0 THEN                                             ' RM02129401
  1973.           Temp = LEN(WhoFind$)                                       ' RM02129401
  1974.           TempMsgToWork$ = MID$(DGSTempAlias$,1,Into - 1) + ZEmphasizeOn$ + WhoFind$ + _
  1975.                             ZEmphasizeOff$ + ZFG7$ + MID$(DGSTempAlias$,InTo + Temp)
  1976.           ZOutTxt$ = ZFG6$ + "Send to: " + ZFG7$ + TempMsgToWork$ + _
  1977.                      ZFG6$ + " ( " + ZFG7$ + "Y" + ZFG6$ + ")es, [N]" + _
  1978.                      ZFG6$ + ")o, " + ZFG7$ + "A" + ZFG6$ + ")bort )" + ZEmphasizeOff$ ' RM101801
  1979.           ZSubParm = 1
  1980.           Call TGet
  1981.           IF ZSubParm = -1 THEN _
  1982.              EXIT SUB
  1983.           IF ZWasQ = 0 THEN _                                        ' RM02129401
  1984.              GOTO 9950                                               ' RM02129401/RM03049401
  1985.           CALL AllCaps (ZUserIn$)                                    ' RM02129401
  1986.           IF ZUserIn$ = "A" THEN _                                   ' RM02129401
  1987.              CLOSE 7 : _                                             ' RM02129401
  1988.              EXIT SUB                                                ' RM02129401
  1989.           IF ZYes THEN
  1990.              WhoFound = ZTrue                                        ' Pe 04/04/92
  1991.              WhoFind$ = DGSTempAlias$
  1992.              TempWhoFind$ = DGSUserName$                             ' RM02129401
  1993.            END IF
  1994.         END IF
  1995. 9950 WEND
  1996.      CLOSE 7
  1997.      END SUB
  1998. '
  1999. 9960 '$SUBTITLE: 'AliasDGS - Subroutine to Create/Update Alias Info file'
  2000. ' $PAGE
  2001. '
  2002. '  SUBROUTINE NAME    -- DGSAlias
  2003. '
  2004. '  INPUT PARAMETERS   --     PARAMETER                    MEANING
  2005. '                         ZConfName$                  CONFERENCE NAME
  2006. '                         ZOrigUserNameDGS$           USERS - LOG ON NAME
  2007. '                         DGSAlias$                   USERS - ALIAS NAME
  2008. '                         DGSStl$                     NULL FIRST TIME IN
  2009. '                                                     'STILL' IF ALIAS EXISTS
  2010. '                                                        OR REAL NAME
  2011. '                         DGSFileName$                CONFERENCE ALIAS FILE
  2012. '
  2013. '  OUTPUT PARAMETERS  --  ZConfName$ ZOrigUserNameDGS$ DGSAlias$ DGSStl$
  2014. '                         DGSFileName$
  2015. '
  2016. '  SUBROUTINE PURPOSE --  TO Read ConfA.DEF and Get Users ALIAS or
  2017. '                         Create One
  2018. '
  2019.      SUB AliasDGS (ZConfName$,ZOrigUserNameDGS$,DGSAlias$,DGSStl$,DGSFileName$) STATIC
  2020.      ZAliasMode = ZFalse                                             ' RM051401
  2021.      IF DGSStl$ = "" THEN
  2022.         ConfADefFlag = 0
  2023.         CALL BreakFileName (ZMainUserFile$,Drive$,Prefix$,Ext$,ZTrue)
  2024.         DGSFileName$ = Drive$ + ZConfName$ + "A.DEF"
  2025.         CALL FindIt (DGSFileName$)
  2026.         IF ZOK THEN                                                  ' RM051401
  2027.            ConfADefFlag = ZTrue                                      ' RM051401
  2028.            ZAliasMode = ZTrue                                        ' RM051401
  2029.         END IF
  2030.         IF ConfADefFlag = ZTrue THEN
  2031.          Call OpenWork (7,DGSFileName$)
  2032.            DGSAlias$ = ""
  2033.            WHILE DGSAlias$ = "" AND NOT EOF(7)
  2034.               INPUT #7, DGSUserName$, DGSTempAlias$
  2035.               DGSUnl = LEN(DGSUserName$)
  2036.               IF DGSUserName$ = LEFT$(ZOrigUserNameDGS$,DGSUnl) THEN
  2037.                  DGSAlias$ = DGSTempAlias$
  2038.               END IF
  2039.            WEND
  2040.            CLOSE 7
  2041.         ELSE
  2042.            DGSAlias$ = "NO CONFA.DEF"
  2043.            EXIT SUB
  2044.         END IF
  2045.      END IF
  2046.      CALL GoodAls (ZConfName$,ZOrigUserNameDGS$,DGSAlias$,DGSStl$,DGSFileName$)
  2047.      END SUB
  2048. '
  2049. ' $SUBTITLE: 'GoodAls - Subroutine to Make Sure Alias Good'
  2050. ' $PAGE
  2051. '
  2052. '  SUBROUTINE NAME    -- GoodAls
  2053. '
  2054. '  INPUT PARAMETERS   --     PARAMETER                    MEANING
  2055. '                         ZConfName$                  CONFERENCE NAME
  2056. '                         ZOrigUserNameDGS$           USERS - LOG ON NAME
  2057. '                         DGSAlias$                   USERS - ALIAS NAME
  2058. '                         DGSStl$                     NULL FIRST TIME IN
  2059. '                                                      'STILL' IF ALIAS EXISTS
  2060. '                                                         OR REAL NAME
  2061. '                         DGSFileName$                CONFERENCE ALIAS FILE
  2062. '
  2063. '  OUTPUT PARAMETERS  --  ZConfName$ ZOrigUserNameDGS$ DGSAlias$ DGSStl$
  2064. '                         DGSFileName$
  2065. '
  2066. '  SUBROUTINE PURPOSE --  To Read ConfA.DEF and see if Users ALIAS is
  2067. '                         Aready in Use or a Real Name
  2068. '
  2069.      SUB GoodAls (ZConfName$,ZOrigUserNameDGS$,DGSAlias$,DGSStl$,DGSFileName$) STATIC
  2070.      IF DGSAlias$ = "" THEN
  2071.         DGSSfnSln$ = ZSysopFirstName$+" "+ZSysopLastName$
  2072.         ZOutTxt$ = "Do you" +DGSStl$+ " want to use an Alias? (Y,[N])"
  2073.         ZSubParm = 1
  2074.         CALL TGet
  2075.         IF ZYes THEN
  2076.            ABFlg$ = ""
  2077.            ZOutTxt$ = "Enter Alias (31 Char. Max.) "
  2078.            ZSubParm = 1
  2079.            CALL TGet
  2080.            CALL AllCaps (ZUserIn$)
  2081.            IF ZUserIn$ = "" OR INSTR(SPACE$(31),ZUserIn$) > 0 THEN
  2082.               ZUserIn$ = ""
  2083.               ABFlg$ = "Alias Must NOT be Blank"
  2084.            END IF
  2085.            IF LEN(ZUserIn$) > 31 THEN
  2086.               ZUserIn$= ""
  2087.               ABFlg$ = "Length Must NOT Exceed 31 Characters"
  2088.            END IF
  2089.            IF ZUserIn$ = "SYSOP" OR ZUserIn$ = DGSSfnSln$ THEN
  2090.               ZOutTxt$ = CHR$(7)+CHR$(7)
  2091.               ZOutTxt$ = ZOutTxt$ + "Wrong Answer! Alias Request Denied!"
  2092.               ZOutTxt$ = ZOutTxt$ + CHR$(13) + "Contact Sysop for Alias Retry"
  2093.               CALL QuickTPut (ZOutTxt$,2)
  2094.               DGSAlias$ = ZOrigUserNameDGS$+CHR$(250)
  2095.               ZActiveUserName$ = ZOrigUserNameDGS$+CHR$(250)
  2096.               ZFirstName$ = ZOrigUserNameDGS$+CHR$(250)
  2097.            ELSE
  2098.               Call OpenWork (7,DGSFileName$)
  2099.               WHILE ABFlg$ = "" AND NOT EOF(7)
  2100.               INPUT #7, DGSUserName$, DGSTempAlias$
  2101.               IF ZUserIn$ = DGSUserName$ THEN
  2102.                  ABFlg$ = " is a Real User"
  2103.               ELSE
  2104.                  IF ZUserIn$ = DGSTempAlias$ THEN
  2105.                     ABFlg$ = " has Already been Used"
  2106.                  END IF
  2107.               END IF
  2108.               WEND
  2109.               CLOSE 7
  2110.               IF ABFlg$="" THEN
  2111.                  DGSAlias$ = ZUserIn$
  2112.                  ZActiveUserName$ = ZUserIn$
  2113.                  ZFirstName$ = ZUserIn$
  2114.               ELSE
  2115.                  ZOutTxt$="Sorry "+ZFirstName$+" but "+ZUserIn$+ABFlg$
  2116.                  CALL QuickTPut (ZOutTxt$,1)
  2117.                  DGSStl$ = " still"
  2118.                  DGSAlias$ = ""
  2119.               END IF
  2120.           END IF
  2121.         ELSE
  2122.            DGSAlias$ = ZOrigUserNameDGS$
  2123.         END IF
  2124.         IF DGSAlias$ <> "" THEN
  2125.            CLOSE 2
  2126.            FOR I = 1 TO LEN(DGSAlias$)
  2127.               IF MID$(DGSAlias$,I,1)=CHR$(34) THEN MID$(DGSAlias$,I,1)=CHR$(39)
  2128.            NEXT I
  2129.            Call OpenWorkA (DGSFileName$)
  2130.            WRITE #2, ZOrigUserNameDGS$, DGSAlias$
  2131.            CLOSE 2
  2132.         END IF
  2133.       ELSE
  2134.         ZActiveUserName$ = DGSAlias$
  2135.         ZFirstName$ = DGSAlias$
  2136.       END IF
  2137.       END SUB
  2138. * DELETING old line(s)
  2139. 10410
  2140. 10420
  2141. 10440
  2142. 10450
  2143. 10480
  2144. 10485
  2145. 10600
  2146. 10602
  2147. 10604
  2148. 10605
  2149. 10607
  2150. 10935
  2151. 10950
  2152. 10976
  2153. 10978
  2154. 10980
  2155. 10983
  2156. 10985
  2157. 10986
  2158. 10989
  2159. 10991
  2160. 10992
  2161. 10994
  2162. 10996
  2163. 12000
  2164. 12001
  2165. 12005
  2166. 12010
  2167. 12015
  2168. 12020
  2169. 12025
  2170. 12878
  2171. 12880
  2172. 12881
  2173. 12882
  2174. 13660
  2175. 20096
  2176. 20100
  2177. 20105
  2178. 20110
  2179. 20140
  2180. 20141
  2181. 20142
  2182. 20143
  2183. 20144
  2184. 20145
  2185. 20146
  2186. 20147
  2187. 20148
  2188. 20150
  2189. 20235
  2190. 20240
  2191. 20245
  2192. 20246
  2193.