home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / BBS / RBBS_PC / MRG0619.ZIP / BULLET6 < prev    next >
Encoding:
Text File  |  1990-06-19  |  117.7 KB  |  3,024 lines

  1.  
  2. =====[ Test Version - Changes to RBBS-PC 17.3 ]========
  3.  
  4. Last Mod:  KG061501
  5.  
  6. Note:  BASE is the release of 17.3.
  7.  
  8. CONVENTIONS:
  9.     The changes are assigned numbers that  correspond  to  the
  10.     month,  day, and order in which they were made.  Any mods
  11.     are dated following the modification  description.   The
  12.     lines   of   source   code  that  are  changed/modified/added  are
  13.     designated by the comment beginning in column 70 of "' iiMMDD#"
  14.     where ii is the initials of the person providing the change.
  15.  
  16. The latest set of merges available is:  RFIX0518.ZIP
  17.  
  18. -------------------------------------------------------------------
  19. RBBS-PC.EXE         02-11-90  7:00 PM EST  Release of CPC17.3
  20. --------------------------------------------------------------------
  21.                             Summary
  22.  
  23. EXE   MOD       Short Description
  24. ---- --------   -----------------
  25. RBBS KG061501  Stacked commands wrongly executed during a timelock
  26. RBBS EC061301  Not correctly analyzing all file names
  27. CNFG EC060601  Untrapped error when set required protocol for pers. dwld
  28. RBBS KG061001  Error condition on individuation not handled properly
  29. RBBS KG060903  Person with sysop status not notified of mail to sysop
  30. RBBS KG060902  Msg to public name of sysop says user not found
  31. RBBS KG060901  In msg entry, says will notify even when who to not found
  32. CNFG KG060103  Check wrong for conflict btw individuation & dwnld ratios
  33. RBBS KG060102  Version name of MiteSized version keeps getting longer
  34. RBBS KG060101  Remote sysop name wrongly logged to callers file
  35. RBBS MB052101  Color spilling over into "min left"
  36. RBBS RC050901  Individuation not being restored on return from Doors
  37. RBBS KG052901  Macros sometimes not working in PUI's
  38. RBBS KG052702  Logging to callers file improved in local mode
  39. RBBS KG052701  Time logged on not right in caller's file
  40. RBBS KG052401  RBBS overwrites callers file entry on shell to door
  41. RBBS KG052201  Support info stored in name field but not part of name
  42. RBBS DA042401  Possible to get infinite loop in FMS search
  43. RBBS KG051702  K)ill can be in msg prompt even though can't kill
  44. RBBS TC051701  Join back to main from subboard in V)iew not working
  45. RBBS MB051601  Subject of msg sometimes not prompted for
  46. RBBS KG051501  Subject of msg not treated right when has lower case
  47. RBBS KG042501  Block print in macros not working right
  48. CNFG KG041702  Quote for command symbol messes up DEF file
  49. RBBS KG041701  Doors not getting executed
  50. RBBS ML041401  Infinite loop possible under NetBios
  51. RBBS KG040902  Log of file transfers not right when dooring
  52. RBBS KG040901  Not pausing when screen full on directory scans
  53. RBBS KG032801  Macros associated with protocol not being executed
  54. RBBS KG032601  Possible to get untrapped errors when have new user
  55. RBBS KG032502  Adds support for hidden doors not on menu if in DOORS.DEF
  56. RBBS KG032501  Registration door control ignored in DOORS.DEF
  57. RBBS KG031801  Wrong directory sometimes shown
  58. RBBS KG031501  Unable to cancel an upload
  59. RBBS KK030901  Sometimes get overflow error
  60. RBBS KG030801  Stops reporting in personal mail scan after a screen pause
  61. RBBS KG030601  Constant recycling with "Connect Timeout"
  62. CNFG KG030301  Confusing prompt for name of file shown on sec violation
  63. RBBS KG030203  Msg scan reporting personal mail may not pause on full screen
  64. RBBS KG030202  Color spills over into a prompt in personal download
  65. RBBS KG030201  Display of message cannot be paused
  66. RBBS KG030101  Mail V)iew function can show mail waiting wrong in current conf.
  67. RBBS KG022702  Untrapped errors in LIT version with MIMPORT OFF
  68. RBBS KG022701  Stacked commands sometimes not working properly
  69. RBBS RH022501  Autodownload sometimes not reporting name properly
  70. RBBS KG022301  Add support for macro processing for online files
  71. RBBS KG022205  File name reported wiped out by macro processing
  72. RBBS KG022204  Add ability to vary FFS macro processing
  73. RBBS KG022203  Colors graphics door menu MENU05C bleeds on the right
  74. RBBS KG022202  Up and downloads in distributed RBBS-PC.DEF may not work
  75. RBBS KG022201  Jump no longer an option when V)iew in dir listing
  76. RBBS KG022103  LIT merges not assigning new user security right
  77. RBBS KG022102  LIT merges give compile error if SURVEY is OFF
  78. RBBS KG022101  Not correctly tracking bytes downloaded when dooring
  79. RBBS KG022001  Autodownload not working when extension not specified
  80. RBBS KG021803  Macro assign sometimes picks up wrong value
  81. RBBS KG021802  Macros in Fast File Search executed too frequently
  82. RBBS KG021801  Internal code documentation missing some cases
  83. RBBS KG021502  Logon into a conference can pick up a macro
  84. RBBS KG021501  Prompt after end of macro is repeated twice
  85. RBBS RH021501  Autodownload not working
  86.  
  87. Contributors include:
  88.  
  89.     DA - Doug Azzarito
  90.     EC - Ezra Conger
  91.     KG - Ken Goosens
  92.     KK - Kim Kodde
  93.     MB - Mathew Briggs
  94.     ML - Mark Lautenschlager
  95.     RC - Richard Couture
  96.     RH - Ray Horton
  97.     TC - Tom Collins
  98.  
  99. ------------------------[ KG061501 ]-------------------------
  100.  
  101. Problem:  When have a timelock on downloads and stack the
  102. files to download, the file names are misinterpreted as commands.
  103.  
  104. Solution:  Change RBBSSUB4.BAS as follows:
  105.  
  106. (line 60180)
  107.  
  108.       SUB TimeLock STATIC
  109.       CALL TimeRemain(MinsRemaining)
  110.       IF ZSecsUsedSession! >= ZTimeLockSet THEN _
  111.          ZOK = ZTrue : _
  112.          EXIT SUB
  113.       ZOutTxt$ = ZFirstName$
  114.       CALL NameCaps(ZOutTxt$)
  115.       CALL QuickTPut1 ("Sorry, " + ZOutTxt$ + ", function locked" + _
  116.                    STR$(INT((ZTimeLockSet-ZSecsUsedSession!)/60)) + _' DA11102
  117.                    " more minutes" + _
  118.                    STR$(INT(ZTimeLockSet-ZSecsUsedSession!) MOD 60) + " seconds")
  119.       CALL BufFile(ZHelpPath$+"TIMELOCK"+ZHelpExtension$,WasX)
  120.       ZOK = ZFalse
  121.       ZLastIndex = 0                                                 ' KG061501
  122.       END SUB
  123.  
  124. ------------------------[ EC061301 ]-------------------------
  125.  
  126. Problem:  File names not broken correctly into components when they
  127. contain a period before the extension (e.g. "C:..\RBBS\AX.ZIP").
  128.  
  129. Solution:  Change RBBSSUB5.BAS as follows:
  130.  
  131. (line 63300)
  132.  
  133.       SUB BreakFileName (FileSpec$,DrvPath$,Prefix$,Extension$,ForJoining) STATIC
  134.       CALL AllCaps (FileSpec$)
  135.       DrvPath$ = ""
  136.       Prefix$ = ""
  137.       Extension$ = ""
  138.       CALL TrimTrail (FileSpec$,"\")
  139.       WasL = LEN(FileSpec$)
  140.       IF WasL < 1 THEN _
  141.          EXIT SUB
  142.       CALL FindLast (FileSpec$,"\",WasX,WasY)
  143.       IF WasX < 1 THEN _
  144.          IF MID$(FileSpec$,2,1) = ":" THEN _
  145.             DrvPath$ = LEFT$(FileSpec$,1) : _
  146.             ZWasS = 3 _
  147.          ELSE ZWasS = 1 _
  148.       ELSE DrvPath$ = LEFT$(FileSpec$,WasX-1) : _
  149.            ZWasS = WasX + 1 : _
  150.            IF WasY = 1 THEN _
  151.               DrvPath$ = DrvPath$ + "\"
  152.       WasX = INSTR(ZWasS,FileSpec$ + ".",".")                        ' EC061301
  153.       IF WasX < WasL THEN _
  154.          Extension$ = MID$(FileSpec$,WasX + 1)
  155.       IF ZWasS <= WasL THEN _
  156.          IF WasX >= ZWasS THEN _
  157.             Prefix$ = MID$(FileSpec$,ZWasS,WasX - ZWasS)
  158.       IF NOT ForJoining THEN _
  159.          EXIT SUB
  160.       IF LEN(DrvPath$) = 1 THEN _
  161.          IF DrvPath$ <> "\" THEN _
  162.             DrvPath$ = DrvPath$ + _
  163.                        ":"
  164.       IF INSTR(DrvPath$,"\") > 0 AND RIGHT$(DrvPath$,1) <> "\" THEN _
  165.          DrvPath$ = DrvPath$ + _
  166.                     "\"
  167.       IF LEN(Extension$) > 0 THEN _
  168.          Extension$ = "." + _
  169.                       Extension$
  170.       END SUB
  171.  
  172. ------------------------[ EC060601 ]-------------------------
  173.  
  174. Problem:  When set a required protocol for personal downloads in
  175. configuration, can get illegal function call.
  176.  
  177. Solution:  Change CNFG-SUB.BAS as follows:
  178.  
  179. 12466 DISPLAYED.PAGE.NUMBER = 8
  180.       GOSUB 24800
  181.       LOCATE  3,1
  182.       PRINT "141. Call-back verification ----------------------- " + NOT.YET.IN$ ' CALLBACK.VERIFICATION$
  183.       PRINT "142. Drive/path where personal files & dir stored - " + PERSONAL.DRVPATH$
  184.       PRINT "143. Name of Personal Directory ------------------- " + PERSONAL.DIR$
  185.       PRINT "144. Protocol required for personal downloads ----- " + MID$("<other><none> Ascii  XMODEM Xm/CRC Kermit Ymodem Im■dem YmodemGWxmodem", 7 * INSTR("NAXCKYIGW",PERSONAL.PROTOCOL$) + 1,7)  ' EC060601
  186.       PRINT "145. Files with download security are listed in --- " + FILESEC.FILE$
  187.       PRINT "146. File name with privileged group passwords is - " + PASSWORD.FILE$
  188.       PRINT "147. Concatenate multi-file ASCII downloads ------- " + FNYESNO$(PERSONAL.CONCAT)
  189.       PRINT "148. Min SECURITY to CATEGORIZE uploads -----------" + STR$(SL.CATEGORIZE.UPLOADS)
  190.       PRINT "149. Min security level to view new uploads -------" + STR$(MIN.SEC.TO.VIEW)
  191.       PRINT "150. Security level exempt from 'epi-log' file ----" + STR$(SECURITY.EXEMPT.FROM.EPILOG)
  192.       PRINT "151. Min. security to 'AUTO ADD' conference user --" + AUTO.ADD.SECURITY$
  193.       PRINT "152. Min. security for old caller to turbo logon --" + STR$(ALLOW.CALLER.TURBO)
  194.       PRINT "153. Min. security to describe an existing file ---" + STR$(ADD.DIR.SECURITY)
  195.       PRINT "154. Help file to display for a security violation- " + SECVIO.HLP$
  196.       TIME.LOCK$ = MID$("<none> DOORS  DOWNLDSBOTH   ",TIME.LOCK*7+1,7)
  197.       PRINT "155. Time lock on DOORS and DOWNLOADS ------------- "; TIME.LOCK$
  198.       PRINT "156. Min. sec level exempt from auto-update of sec-" ; AUTO.UPGRADE.SEC
  199.       PRINT "157. Min security to READ & KILL all messages -----" ; SEC.KILL.ANY
  200.       PRINT "158. Do not display lines in msgs beginning with -- "; SCREEN.OUT.MSG$ ' KG041101
  201.       PRINT "159. Min. sec level to do personal uploads --------" ; ZMinSecPersUpld ' nc030101
  202.       PRINT "160. Let messages have multiple recipients -------- " ; FNYESNO$(ZEnableCC) ' nc030101
  203.       GOTO 12580
  204.  
  205. ------------------------[ KG060903 ]-------------------------
  206.  
  207. Problem:  When have sysop status but not using remote sysop name,
  208. message scan does not identify mail to/from "SYSOP" as belonging
  209. to the caller.   Mail to "SYSOP" should be shared by everyone with
  210. sysop status.
  211.  
  212. Solution:  Change RBBS-PC.BAS as follows:
  213.  
  214. 4660 IF RemoteSysop THEN _
  215.         CALL MsgNameMatch ("SYSOP",SysopFullName$,6,MsgFromCaller) : _
  216.         CALL MsgNameMatch ("SYSOP",SysopFullName$,37,MsgToCaller) _
  217.      ELSE WasX$ = LEFT$("SYSOP",-5*ZSysop) : _                       ' KG060903
  218.           CALL MsgNameMatch (MsgUserName$,WasX$,6,MsgFromCaller) : _ ' KG060903
  219.           CALL MsgNameMatch (MsgUserName$,WasX$,37,MsgToCaller)      ' KG060903
  220.      UserInHeader = (MsgFromCaller OR MsgToCaller)
  221.      RETURN
  222.  
  223. ------------------------[ KG060902 ]-------------------------
  224.  
  225. Problem:  When leave a msg to public name of sysop, can say the user not
  226. found and caution against leaving mail.
  227.  
  228. Solution:  Change RBBSSUB2.BAS as follows:
  229.  
  230. 2250 ' $SUBTITLE: 'WhoCheck - Checks whether user exists'
  231. ' $PAGE
  232. '
  233. '  NAME    -- WhoCheck
  234. '
  235. '  INPUTS  --   PARAMETER                    MEANING
  236. '              WhoFind$                User to find
  237. '
  238. '  OUTPUTS --  WhoFound                Whether user found
  239. '              UserNumFound           Record # of user
  240. '
  241. '  PURPOSE --  Validate that user record exists.  Sysop
  242. '              counted as found even if lack user record.
  243. '
  244.      SUB WhoCheck (WhoFind$,WhoFound,UserNumFound) STATIC
  245.      UserNumFound = 0
  246.      IF ZStartHash <> 1 THEN _
  247.         WhoFound = ZTrue : _
  248.         EXIT SUB
  249.      Work128$ = ZUserRecord$
  250.      WhoFound = ZFalse
  251.      ToSysop = (INSTR(WhoFind$,"SYSOP") > 0 OR _
  252.                 INSTR(WhoFind$,ZSysopFirstName$ + " " + ZSysopLastName$) > 0) ' KG060902
  253.      CALL OpenUser (HighestUserRecord)
  254.      FIELD 5, 128 AS ZUserRecord$
  255.      IF ToSysop THEN _
  256.         WasX$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _
  257.      ELSE WasX$ = WhoFind$
  258.      IF LEN(WasX$) > 1 THEN _
  259.         CALL FindUser (WasX$,"",ZStartHash,ZLenHash,_
  260.                        0,0,HighestUserRecord,WhoFound,_
  261.                        UserNumFound,ZWasSL)
  262.      LSET ZUserRecord$ = Work128$
  263.      IF NOT WhoFound THEN _
  264.         IF ToSysop THEN _
  265.            WhoFound = ZTrue _
  266.         ELSE CALL QuickTPut1 (WhoFind$ + " not active user")
  267.      END SUB
  268.  
  269. ------------------------[ KG060901 ]-------------------------
  270.  
  271. Problem:  When leave mail to person not found because not in user file,
  272. will still say the receiver "will be notified" has mail waiting, even though
  273. can't and won't.
  274.  
  275. Solution:  Change RBBSUB2.BAS as follows:
  276.  
  277. 2032 IF MsgTo$ <> "ALL" THEN _
  278.         IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _
  279.            ZWasDF = INSTR(MsgTo$+" @"," @") : _                      ' KG052201
  280.            TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _               ' KG052201
  281.            CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
  282.            IF NOT Found THEN _
  283.               ZLastIndex = 0 : _
  284.               RcvrRecNum = 0 : _                                     ' KG060901
  285.               IF NOT ZReply THEN _
  286.                  ZOutTxt$ = "[R]e-enter name, Q)uit, C)ontinue" : _
  287.                  ZTurboKey = -ZTurboKeyUser : _
  288.                  ZLastIndex = 0 : _
  289.                  GOSUB 2033 : _
  290.                  ZWasZ$ = ZUserIn$(1) : _
  291.                  CALL AllCaps (ZWasZ$) : _
  292.                  IF ZWasZ$ <> "C" THEN _
  293.                     MsgTo$ = "" : _
  294.                     IF ZWasZ$ <> "Q" THEN _
  295.                        GOTO 2020
  296.      IF MsgTo$ = Temp$ THEN _
  297.         ZOutTxt$ = "Msg would be from and to SAME PERSON!  Really do this (Y,[N])" : _
  298.         ZLastIndex = 0 : _
  299.         GOSUB 2033 : _
  300.         IF NOT ZYes THEN _
  301.            MsgTo$ = ""
  302.      EXIT SUB
  303.  
  304. ------------------------[ KG060103 ]-------------------------
  305.  
  306. Problem:  Valid individuation fields are rejected by CONFIG was
  307. conflicting with download ratios.   E.g. begin at 63, length 2,
  308. should be ok (1st two characters of location) but is rejected.
  309.  
  310. Solution:  Change CONFIG.BAS as follows:
  311.  
  312. 18102 IF START.INDIV = 0 OR LEN.INDIV = 0 THEN_
  313.         INDIV.ID$ = NONE.PICKED$ _
  314.       ELSE INDIV.ID$ = "(nonstandard)"
  315.       START.WRITE = START.INDIV
  316.       LEN.WRITE = LEN.INDIV                                          ' KG060103
  317.       GOSUB 17805
  318.       IF NOT OK THEN _
  319.          START.INDIV = 0 : _
  320.          LEN.INDIV = 31 : _
  321.          GOTO 18102
  322.       START.WRITE = START.INDIV
  323.       RETURN
  324.  
  325. ------------------------[ KG060102 ]-------------------------
  326.  
  327. Problem:  When use MiteSized version of RBBS, version name grows
  328. by "/MITESIZE" every time enter a subboard.
  329.  
  330. Solution:  Replace RBBSLIT.MRG and MITEVER.LIT by the enclosed
  331. new ones.
  332.  
  333. ------------------------[ KG060101 ]-------------------------
  334.  
  335. Problem:  (fix to a fix)  Remote SysOp name logged to callers
  336. file when it should not be.
  337.  
  338. Solution:  Change RBBS-PC.BAS as follows:
  339.  
  340. (line 800)
  341.  
  342.        .
  343.        .
  344.        .
  345.     CALL SetCrLf
  346.     CALL SetPrompt
  347.     CALL XferType (2,ZTrue)
  348.     IF NOT SubBoard THEN _
  349.        BoardCheckDate$ = PrevLastOn$
  350.     GOSUB 5370                                                       ' KG060101
  351.     IF ZWasA THEN _                                                  ' KG060101
  352.        ZActiveUserName$ = "SYSOP"                                    ' KG060101
  353.     IF ZExitToDoors OR SubBoard THEN _                               ' KG052701
  354.        GOTO 815
  355.     GOSUB 465
  356.     IF (ZEightBit AND _
  357.        ZAutoDownDesired) OR _
  358.        ZAskID THEN _
  359.        CALL TestUser
  360.        .
  361.        .
  362.        .
  363.  
  364. 819 CALL Trim (ZWasCI$)                                              ' KG060101
  365.     IF (ZNodeRecIndex < 2) THEN _
  366.        GOTO 821
  367.     GOSUB 4910
  368.     GOSUB 24000
  369.     GET 1,ZNodeRecIndex
  370.     MID$(ZMsgRec$,1,31) = ZActiveUserName$ + _
  371.                                  SPACE$(31 - LEN(ZActiveUserName$))
  372.     MID$(ZMsgRec$,40,2) = " 0"
  373.     MID$(ZMsgRec$,44,2) = STR$(ZBPS)
  374.     MID$(ZMsgRec$,55,2) = " 0"
  375.     MID$(ZMsgRec$,57,1) = "A"
  376.     MID$(ZMsgRec$,60,5) = ZTalkToModemAt$ + _
  377.                                  SPACE$(5 - LEN(ZTalkToModemAt$))
  378.     MID$(ZMsgRec$,72,2) = " 0"
  379.     MID$(ZMsgRec$,93,24) = ZWasCI$ + _
  380.                                   SPACE$(24)
  381.     PUT 1,ZNodeRecIndex
  382.     GOSUB 12985
  383.  
  384. ------------------------[ MB052101 ]-------------------------
  385.  
  386. Problem:  When have colorization active, color from prior context
  387. will sometimes spill into the report of # of minutes left.
  388.  
  389. Solution:  Change RBBSSUB3.BAS as follows:
  390.  
  391. 41032 ' $SUBTITLE: 'DispTimeRemain - Display users time remaining'
  392. ' $PAGE
  393. '
  394. '  NAME    -- DispTimeRemain
  395. '
  396. '  INPUTS  --     PARAMETER                    MEANING
  397. '              MinsRemaining
  398. '
  399. '  OUTPUTS --     PARAMETER                    MEANING
  400. '                MinsRemaining               TIME IN MINUTES LEFT IN SESSION
  401. '
  402.       SUB DispTimeRemain (MinsRemaining) STATIC
  403.       CALL TimeRemain (MinsRemaining)
  404.       CALL QuickTPut1 (ZEmphasizeOff$ + STR$(MinsRemaining) + " min left") ' MB052101
  405.       END SUB
  406.  
  407. ------------------------[ RC050901 ]-------------------------
  408.  
  409. Problem:  When return from a door and individuating callers
  410. with same name, the individuation field is always asked,
  411. whereas it should never ask for individuation (just like it
  412. never asks again for name, just password at most).
  413.  
  414. Solution:  Add the following variable to RBBS-VAR.BAS:  ZIndivValue$.
  415. Change RBBS-PC.BAS as follows:
  416.  
  417. 725 IF ZUserSecLevel < ZMinLogonSec THEN _
  418.        ZLogonErrorIndex = 1 : _
  419.        GOTO 460
  420.     IF ZFirstName$ = ZLastName$ THEN _
  421.        CALL QuickTPut1 (ZFirstNamePrompt$+"/"+ZLastNamePrompt$+" cannot be same") : _
  422.        ZLogonErrorIndex = 3 : _
  423.        GOTO 10620
  424.     IF NOT ZRememberNewUsers THEN _
  425.        GOSUB 13700 : _
  426.        ZUserFileIndex = 0 : _
  427.        GOSUB 12960: _
  428.        PrevLastOn$ = "00-00-00": _
  429.        GOTO 735
  430.     ZNewUser = ZTrue
  431.     CALL OpenUser (HighestUserRecord)
  432.     GOSUB 9450
  433.     GOSUB 12630
  434.     MID$(ZUserRecord$,ZStartHash,ZLenHash) = LEFT$("NEWUSER",ZLenHash)
  435.     IF ZStartIndiv > 0 THEN _                                        ' RC050901
  436.        MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$       ' RC050901
  437.     GOSUB 9440
  438.  
  439. (line 800)
  440.       .
  441.       .
  442.       .
  443. '
  444. ' *  ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT
  445. '
  446.      WasX$ = "{" + _                                                 ' KG052701
  447.           HashValue$ + _                                             ' KG052701
  448.           "/" + _                                                    ' KG052701
  449.           ZIndivValue$ + _                                           ' RC050901
  450.           "}"                                                        ' KG052701
  451.      IF LEN(ZWasZ$) < 65 THEN _                                      ' KG052701
  452.         WasX = 65 _                                                  ' KG052701
  453.      ELSE WasX = LEN(ZWasZ$) + 2                                     ' KG052701
  454.      MID$(ZWasNG$,WasX) = WasX$                                      ' KG052701
  455.      CALL Printit ("  " + ZWasZ$)                                    ' KG052701
  456.      IF ZNewUser THEN _                                              ' KG052701
  457.         CALL UpdtCalr ("NEWUSER",1) : _                              ' KG052701
  458.         CALL Muzak (2)                                               ' KG052701
  459. '
  460. ' *****  NOTIFY CALLER IF ABLE TO "AUTODOWN"  ****
  461. '
  462.        .
  463.        .
  464.        .
  465.  
  466. 815 ZDnlds = CVI(ZUserDnlds$)
  467.     ZUplds = CVI(ZUserUplds$)
  468.     IF ZEnforceRatios THEN _
  469.        ZDLToday! = CVS(ZTodayDl$) : _
  470.        ZBytesToday! = CVS(ZTodayBytes$) : _
  471.        ZDLBytes! = CVS(ZDlBytes$) : _
  472.        ZULBytes! = CVS(ZULBytes$)
  473.     IF ZCurDate$ <> LEFT$(ZLastDateTimeOnSave$,8) THEN  _
  474.        ZDLToday! = 0 : _
  475.        ZBytesToday! = 0
  476.     IF NOT GlobalsSet THEN _
  477.        GlobalsSet = ZTrue : _
  478.        ZGlobalDnlds = ZDnlds : _
  479.        ZGlobalUplds = ZUplds : _
  480.        ZGlobalDLToday! = ZDLToday! : _
  481.        ZGlobalBytesToday! = ZBytesToday! : _
  482.        ZGlobalDLBytes! = ZDLBytes! : _
  483.        ZGlobalULBytes! = ZULBytes!
  484.     'IF ZRatioRestrict# > 0 AND ZEnforceRatios THEN _
  485.     '   IF ZByteMethod = 0 AND ZUplds < ZInitialCredit# THEN _
  486.     '      ZUplds = ZInitialCredit# _
  487.     '   ELSE IF ZByteMethod = 1 AND ZULBytes! < ZInitialCredit# THEN _
  488.     '           ZULBytes! = ZInitialCredit#
  489.     GOSUB 827
  490.     LSET ZUserOption$ = MKI$(ZTimesLoggedOn) + _
  491.                          MID$(ZUserOption$,3)
  492.     LSET ZLastDateTimeOn$ = ZCurDate$ + _
  493.                               " " + _
  494.                               ZTimeLoggedOn$
  495.     MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$
  496.     IF ZStartIndiv > 0 THEN _
  497.        MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$       ' RC050901
  498.     LSET ZUserName$ = ZOrigUserName$
  499.     IF (NOT ZExitToDoors) AND NOT (ZOrigMsgFile$ = ZActiveMessageFile$ AND SubBoard) THEN _
  500.        CALL AutoPage
  501.     IF NOT SubBoard THEN _
  502.        ZOrigUserFileIndex = ZUserFileIndex
  503.     GOSUB 9440
  504.     GOSUB 12991
  505.     CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  506.     IF TurboLogon THEN _
  507.        GOTO 819
  508.     IF SkipWelcomeScreen AND _
  509.        (ZUserSecLevel >= ZAllowCallerTurbo) THEN _
  510.        GOTO 816
  511.     IF NOT SameUser THEN _
  512.        ZStopInterrupts = NOT ZWelcomeInterruptable : _
  513.        ZBypassTimeCheck = ZTrue : _
  514.        ZFileName$ = ZWelcomeFile$ : _
  515.        ZDisplayAsUnit = ZTrue : _
  516.        GOSUB 1790 : _
  517.        ZDisplayAsUnit = ZFalse
  518.     ZBypassTimeCheck = ZFalse
  519.     ZStopInterrupts = ZTrue
  520.  
  521. 12300 WasA1$ = ""
  522.       Attempts = 0
  523.       UserSecLevelSave = ZUserSecLevel
  524.       FirstNameSave$ = ZFirstName$
  525.       LastNameSave$ = ZLastName$
  526.       ActiveUserNameSave$ = ZActiveUserName$
  527.       CityStateSave$ = ZWasCI$
  528.       HashValueSave$ = HashValue$
  529.       IndivValueSave$ = ZIndivValue$                                 ' RC050901
  530.       GOSUB 12500
  531.       GOSUB 12840
  532.       GOSUB 12850
  533.       GOSUB 12598
  534.       IF ZUserFileIndex = 0 THEN _
  535.          GOSUB 12984 : _
  536.          GOTO 12330
  537.       IF Found THEN _
  538.          WasD$ = "User already exists" : _
  539.          GOSUB 1315 : _
  540.          GOSUB 12984 : _
  541.          GOTO 12330
  542.  
  543. 12310 GOSUB 12630
  544.       GOSUB 12800
  545.       GOSUB 11395
  546.       ZTempSecLevel = WasOF
  547.       GOSUB 12900
  548.       LSET ZLastDateTimeOn$ = ZCurDate$ + _
  549.                                 " " + _
  550.                                 ZTimeLoggedOn$
  551.       GOSUB 12960
  552.       CALL AllCaps (ZUserIn$)
  553.       LSET ZCityState$ = ZUserIn$
  554.       LSET ZElapsedTime$ = MKI$(0)
  555.       IF ZStartHash > 1 THEN _
  556.          MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$
  557.       IF ZStartIndiv > 1 THEN _
  558.          MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$     ' RC050901
  559.       GOSUB 9440
  560.  
  561. 12330 ZUserSecLevel = UserSecLevelSave
  562.       ZFirstName$ = FirstNameSave$
  563.       ZLastName$ = LastNameSave$
  564.       ZActiveUserName$ = ActiveUserNameSave$
  565.       ZWasCI$ = CityStateSave$
  566.       HashValue$ = HashValueSave$
  567.       ZIndivValue$ = IndivValueSave$                                 ' RC050901
  568.       ZUserFileIndex = WasTU
  569.       LSET ZUserRecord$ = UserRecordHold$
  570.       GOTO 11001
  571.  
  572. 12598 TempHashValue$ = HashValue$
  573.       TempIndivValue$ = ZIndivValue$                                 ' RC050901
  574.  
  575. 12850 IF ZStartIndiv < 1 THEN _
  576.          RETURN
  577.       IF ZStartIndiv = 1 THEN _
  578.          ZIndivValue$ = ZActiveUserName$ : _                         ' RC050901
  579.          RETURN
  580.       IF ZExitToDoors THEN _                                         ' RC050901
  581.          RETURN                                                      ' RC050901
  582.       WasX$ = WasA1$ + _
  583.            ZPromptIndiv$
  584.       CALL UntilRight (WasX$,ZIndivValue$,2,ZLenIndiv)               ' RC050901
  585.       RETURN
  586.  
  587. Change RBBSSUB3.BAS as follows:
  588.  
  589. 43070 ZActiveMessageFile$ = ZOrigMsgFile$
  590.       ZSubParm = 3
  591.       CALL FileLock
  592.       CALL OpenMsg
  593.       FIELD 1, 128 AS ZMsgRec$
  594.       GET 1,ZNodeRecIndex
  595.       IF ZGlobalSysop THEN _
  596.          MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25)
  597.       MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors)
  598.       MID$(ZMsgRec$,42,2) = STR$(ZEightBit)
  599.       MID$(ZMsgRec$,44,2) = STR$(ZBPS)
  600.       MID$(ZMsgRec$,46,2) = STR$(ZUpperCase)
  601.       MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2) ' KG022101
  602.       MID$(ZMsgRec$,53,2) = STR$(ZWasGR)
  603.       MID$(ZMsgRec$,55,2) = STR$(ZSysop)
  604.       MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZTimeLoggedOn$,2))) + _
  605.                                    CHR$(VAL(MID$(ZTimeLoggedOn$,4,2))) + _
  606.                                    CHR$(VAL(MID$(ZTimeLoggedOn$,7,2)))
  607.       MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor)
  608.       MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1)
  609.       MID$(ZMsgRec$,75,1) = ZWasFT$
  610.       MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60)
  611.       MID$(ZMsgRec$,79,8) = LEFT$(ZDooredTo$+"        ",8)
  612.       MID$(ZMsgRec$,91,2) = STR$(ZReliableMode)
  613.       CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse)
  614.       MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$))
  615.       IF ZLocalUser THEN _
  616.          ZWasZ$ = ZCarriageReturn$ + ZCarriageReturn$ _              ' KG030601
  617.       ELSE ZWasZ$ = " 0"                                             ' KG030601
  618.       MID$(ZMsgRec$,101,2) = ZWasZ$                                  ' KG030601
  619.       MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode)                    ' KG030601
  620.       ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + " "," ") - 1)
  621.       MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$))
  622.       MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1)
  623.       MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex)
  624.       MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2)
  625.       MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2)
  626.       MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2)
  627.       MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2)
  628.       MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2)
  629. ' ***   Save additional parameters for door restoral
  630.       CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  631.       CALL PrintWorkA (STR$(ZLimitMinsPerSession))
  632.       CALL PrintWorkA (ZWasNG$)                                      ' KG052701
  633.       CALL PrintWorkA (ZIndivValue$)                                 ' NC050901
  634.       CLOSE 2
  635.  
  636. 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _               ' KK030901
  637.                         VAL(MinLoggedOn$) * 60! + _                  ' KK030901
  638.                         VAL(SecLoggedOn$)
  639.       HourLoggedOn$ = ""
  640.       MinLoggedOn$ = ""
  641.       SecLoggedOn$ = ""
  642.       IF ZMinsPerSession < 1 THEN _
  643.          ZMinsPerSession = 3
  644.       IF NOT ZEightBit THEN _
  645.          OUT ZLineCntlReg,&H1A
  646.       IF LEFT$(ZMsgRec$,7) = "SYSOP  " THEN _
  647.          ZFirstName$ = ZSysopPswd1$ : _
  648.          ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _
  649.       ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _
  650.            ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " ","  ") : _
  651.            ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _
  652.            ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _
  653.            ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31)
  654.       ZWasZ$ = ZFirstName$
  655.       CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  656.       CALL ReadDir (2,1)
  657.       ZLimitMinsPerSession = VAL (ZOutTxt$)
  658.       CALL ReadDir (2,1)                                             ' KG052701
  659.       ZWasNG$ = ZOutTxt$                                             ' KG052701
  660.       CALL ReadDir (2,1)                                             ' RC050901
  661.       ZIndivValue$ = ZOutTxt$                                        ' RC050901
  662.       CLOSE 2
  663.       END SUB
  664.  
  665. ------------------------[ KG052901 ]-------------------------
  666.  
  667. Problem:  When using Programmable User Interface, macros will not
  668. work after do a join to a conference that does not exist or after
  669. execute conference view and go to end of list without joining
  670. anything.  Problem reported by Ken Humrich.
  671.  
  672. Solution:  Change RBBS-PC.BAS as follows:
  673.  
  674. 1232 MID$(ZLastCommand$,2,1) = " "                                   ' KG052901
  675.      IF ZCustomPUI THEN _                                            ' KG052901
  676.         CALL UserFace (ZUserGraphicDefault$) : _
  677.         GOSUB 12997 : _
  678.         GOTO 1235                                                    ' KG052901
  679.      ZOutTxt$ = ZCmdPrompt$
  680.      GOSUB 12930
  681.      IF ZWasQ = 0 THEN _
  682.         GOTO 1230
  683.  
  684. ------------------------[ KG052702 ]-------------------------
  685.  
  686. Problem:  In local mode, when log to printer, not logging to
  687. caller's file.   This messages up caller analysis on networks.
  688. Also, unnecessary code check when entering/exiting a conference
  689. because check is done in logging routine.   Finally,
  690. entrance/exit to conference made to log all the time and not just
  691. on extended logging.
  692.  
  693. Solution:  Change RBBS-PC.BAS as follows:
  694.  
  695. 4900 CALL UpdtCalr ("Entered " + ZConfName$,2)                       ' KG052702
  696.      CALL QuickTPut1 ("Welcome to " + ZConfName$)
  697.  
  698. 5350 IF ZConfName$ <> "MAIN" THEN _
  699.         CALL QuickTPut1 ("Rejoining " + OrigMsgName$)
  700.      ZConfName$ = "MAIN"
  701.      ConfFileName$ = OrigMsgName$
  702.      ZNewsFileName$ = OrigNewsFileName$
  703.      TurboLogon = ZTrue
  704.      ZWasQ = 0
  705.      ZInConfMenu = ZTrue
  706.      IF ZActiveUserName$ = "SYSOP" THEN _
  707.         ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ : _
  708.         CALL Trim (ZActiveUserName$)
  709.      ZConfigFileName$ = ZOrigCnfg$
  710.      CALL ReadDef (ZConfigFileName$)
  711.      IF ZOrigMsgFile$ <> ZActiveMessageFile$ THEN _
  712.         ZActiveMessageFile$ = ZOrigMsgFile$ : _
  713.         GOSUB 5343
  714.      IF ZOrigUserFile$ <> ZActiveUserFile$ THEN _
  715.         GOSUB 5380 : _
  716.         ZActiveUserFile$ = ZOrigUserFile$ : _
  717.         ZActiveUserName$ = ZOrigUserName$ : _
  718.         GOSUB 12598 : _
  719.         GOSUB 12990 : _
  720.         IF Found THEN _
  721.            GOSUB 9500 : _
  722.            ZMainUserFileIndex = ZUserFileIndex : _
  723.            CALL SetPrompt : _
  724.            CALL XferType (2,ZTrue) _
  725.         ELSE ZUserFileIndex = 0 : _
  726.              ZMainUserFileIndex = 0
  727.      CALL UpdtCalr ("Exited Conference",2)                           ' KG052702
  728.      GOSUB 2350
  729.      ZUplds = ZGlobalUplds
  730.      ZDnlds = ZGlobalDnlds
  731.      ZDLToday! = ZGlobalDLToday!
  732.      ZBytesToday! = ZGlobalBytesToday!
  733.      ZDLBytes! = ZGlobalDLBytes!
  734.      ZULBytes! = ZGlobalULBytes!
  735.  
  736. Change RBBSSUB1.BAS as follows:
  737.  
  738. 13670 LSET ZCallersRecord$ = WasX$
  739.       CALL Printit (ZCallersRecord$)                                 ' KG052702
  740.       ZCallersFileIndex! = ZCallersFileIndex! + 1
  741.  
  742. ------------------------[ KG052701 ]-------------------------
  743.  
  744. Problem:  When join subboards, the time shown in callers file
  745. for logon is the time joined last subboard rather than original
  746. time logged on.
  747.  
  748. Solution:  Change RBBS-PC.BAS as follows:
  749.  
  750. Omit code at line 837.
  751.  
  752. 800 CALL DoorReturn
  753.     IF ZAdjustedSecurity THEN _
  754.        GOSUB 5135
  755.     IF ZOrigCnfg$ = ZCurDef$ THEN _
  756.        ZMainUserFileIndex = ZUserFileIndex : _
  757.        ZOrigSec = ZUserSecLevel : _
  758.        ZUserSecSave = ZUserSecLevel : _
  759.        ZOrigUserName$ = ZActiveUserName$
  760.     ZTimesLoggedOn = CVI(MID$(ZUserOption$,1,2)) - _
  761.        ((ZOrigCnfg$ <> ZCurDef$ OR NOT SubBoard) AND _
  762.         (NOT ZPrivateDoor) AND (NOT ZExitToDoors))
  763.     GOSUB 9500
  764.     IF (NOT ZExitToDoors) AND (NOT SubBoard) THEN _
  765.        CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _
  766.                  " Lvl" + STR$(ZUserSecLevel) + " " + TIME$,2)
  767.     PrevLastOn$ = ZLastDateTimeOn$
  768.     IF ZLocalUser THEN _
  769.        ZTalkToModemAt$ = "9600" : _
  770.        ZBaudParity$ = "9600 BAUD,N,8,1" : _
  771.        ZModemInitBaud$ = "9600" : _
  772.        ZSnoop = ZTrue : _
  773.        ZLineFeeds = ZTrue
  774.     CALL SetCrLf
  775.     CALL SetPrompt
  776.     CALL XferType (2,ZTrue)
  777.     IF NOT SubBoard THEN _
  778.        BoardCheckDate$ = PrevLastOn$
  779.     IF ZExitToDoors OR SubBoard THEN _                               ' KG052701
  780.        GOTO 815
  781.     GOSUB 465
  782.     IF (ZEightBit AND _
  783.        ZAutoDownDesired) OR _
  784.        ZAskID THEN _
  785.        CALL TestUser
  786.     CALL QuickTPut1 ("Logging " + ZActiveUserName$)
  787.     CALL Talk (1,ZOutTxt$)
  788.     CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " NODE " + ZNodeID$ + _
  789.                 ", OPERATING AT " + ZBaudParity$)
  790.     CALL SkipLine (1)
  791.     Attempts = 0
  792.     ZWasZ$ = ZActiveUserName$ + _                                    ' KG052701
  793.             " on at " + _                                            ' KG052701
  794.             ZCurDate$ + _                                            ' KG052701
  795.             ", " + _                                                 ' KG052701
  796.             ZTime$ + _                                               ' KG052701
  797.             " from " + _                                             ' KG052701
  798.             ZWasCI$ + _                                              ' KG052701
  799.             ", " + _                                                 ' KG052701
  800.             ZBaudParity$                                             ' KG052701
  801.      ZWasNG$ = ZWasZ$ + SPACE$(128 - LEN(ZWasZ$))                    ' KG052701
  802.      MsgUserName$ = LEFT$(ZActiveUserName$+"  ",22)                  ' KG052701
  803. '
  804. ' *  ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT
  805. '
  806.      WasX$ = "{" + _                                                 ' KG052701
  807.           HashValue$ + _                                             ' KG052701
  808.           "/" + _                                                    ' KG052701
  809.           IndivValue$ + _                                            ' KG052701
  810.           "}"                                                        ' KG052701
  811.      IF LEN(ZWasZ$) < 65 THEN _                                      ' KG052701
  812.         WasX = 65 _                                                  ' KG052701
  813.      ELSE WasX = LEN(ZWasZ$) + 2                                     ' KG052701
  814.      MID$(ZWasNG$,WasX) = WasX$                                      ' KG052701
  815.      CALL Printit ("  " + ZWasZ$)                                    ' KG052701
  816.      IF ZNewUser THEN _                                              ' KG052701
  817.         CALL UpdtCalr ("NEWUSER",1) : _                              ' KG052701
  818.         CALL Muzak (2)                                               ' KG052701
  819. '
  820. ' *****  NOTIFY CALLER IF ABLE TO "AUTODOWN"  ****
  821. '
  822.     IF ZEightBit AND ZAutoDownYes THEN _
  823.        ZOutTxt$ = CHR$(9) + _
  824.             ZReturnLineFeed$ + _
  825.             "You may use AUTODOWNLOADing!" : _
  826.        CALL RingCaller : _
  827.        CALL DelayTime(4)
  828.  
  829. Change RBBSSUB3.BAS as follows:
  830.  
  831. (line 43070)
  832.            .
  833.            .
  834.            .
  835. ' ***   Save additional parameters for door restoral
  836.       CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  837.       CALL PrintWorkA (STR$(ZLimitMinsPerSession))
  838.       CALL PrintWorkA (ZWasNG$)                                      ' KG052701
  839.       CLOSE 2
  840.  
  841. 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _               ' KK030901
  842.                         VAL(MinLoggedOn$) * 60! + _                  ' KK030901
  843.                         VAL(SecLoggedOn$)
  844.       HourLoggedOn$ = ""
  845.       MinLoggedOn$ = ""
  846.       SecLoggedOn$ = ""
  847.       IF ZMinsPerSession < 1 THEN _
  848.          ZMinsPerSession = 3
  849.       IF NOT ZEightBit THEN _
  850.          OUT ZLineCntlReg,&H1A
  851.       IF LEFT$(ZMsgRec$,7) = "SYSOP  " THEN _
  852.          ZFirstName$ = ZSysopPswd1$ : _
  853.          ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _
  854.       ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _
  855.            ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " ","  ") : _
  856.            ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _
  857.            ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _
  858.            ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31)
  859.       ZWasZ$ = ZFirstName$
  860.       CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  861.       CALL ReadDir (2,1)
  862.       ZLimitMinsPerSession = VAL (ZOutTxt$)
  863.       CALL ReadDir (2,1)                                             ' KG052701
  864.       ZWasNG$ = ZOutTxt$                                             ' KG052701
  865.       CLOSE 2
  866.       END SUB
  867. ------------------------[ KG052401 ]-------------------------
  868.  
  869. Problem:  When shell to a door and it writes information to
  870. the callers file, the entries are overwritten when returns to
  871. RBBS.
  872.  
  873. Solution:  Add the following variable to RBBS-VAR.BAS:
  874. ZPrevCaller$.   Change RBBSSUB1.BAS as follows:
  875.  
  876. (line 108)
  877.  
  878.     SUB SetCall STATIC
  879.     ON ERROR GOTO 65000
  880.     IF ZPrevCaller$ = ZCallersFile$ OR ZCallersFilePrefix$ = "" THEN _ ' KG052401
  881.        EXIT SUB
  882.     ZPrevCaller$ = ZCallersFile$                                     ' KG052401
  883.     ZCallersFileIndex! = 1
  884.     CLOSE 2
  885.     CLOSE 4
  886.     IF ZShareIt THEN _
  887.        OPEN ZCallersFile$ FOR RANDOM SHARED AS #4 LEN=64 _
  888.     ELSE OPEN "R",4,ZCallersFile$,64
  889.     FIELD 4,64 AS ZCallersRecord$
  890.     IF LOF(4) > 0 THEN _
  891.        ZCallersFileIndex! = LOF(4) / 64
  892.     IF ZCallersFileIndex! < 1 THEN _
  893.        ZCallersFileIndex! = 0
  894.     ZUserIn$ = STRING$(13,0)
  895.  
  896. Change RBBSUB2.BAS as follows:
  897.  
  898. 10989 IF ZTransferFunction = 3 THEN _
  899.          ZWasY$ = "Registration" _
  900.       ELSE ZWasY$ = ZDooredTo$
  901.       ZOutTxt$ = ZWasY$ + _
  902.            " door opened at " + _
  903.            TIME$ + _
  904.            " on " + _
  905.            DATE$
  906.       ZSubParm = 5
  907.       CALL TPut
  908.       CALL UpdtCalr (ZDooredTo$ + " door opened!",2)
  909.       CLOSE 2
  910.       OPEN "O",2,"DORINFO" + _
  911.                  ZNodeFileID$ + _
  912.                  ".DEF"
  913.       PRINT #2,ZRBBSName$
  914.       PRINT #2,ZSysopFirstName$
  915.       PRINT #2,ZSysopLastName$
  916.       IF ZLocalUser THEN _
  917.          PRINT #2,"COM0" _
  918.       ELSE PRINT #2,ZComPort$
  919.       ZUserIn$ = MID$(ZBaudParity$,INSTR(ZBaudParity$," B"))
  920.       PRINT #2,ZTalkToModemAt$;ZUserIn$
  921.       PRINT #2,ZNetworkType
  922.       IF ZGlobalSysop THEN _
  923.          PRINT #2,"SYSOP" : _
  924.          PRINT #2,"" _
  925.       ELSE PRINT #2,ZFirstName$ : _
  926.            PRINT #2,ZLastName$
  927.       PRINT #2,ZCityState$
  928.       PRINT #2,ZWasGR
  929.       PRINT #2,ZUserSecLevel
  930.       CALL TimeRemain (MinsRemaining)
  931.       CALL CheckInt (DoorTime$)
  932.       IF ZErrCode = 0 AND ZTestedIntValue > 0 THEN _
  933.          IF MinsRemaining > ZTestedIntValue THEN _
  934.             MinsRemaining = ZTestedIntValue
  935.       PRINT #2,INT(MinsRemaining)
  936.       PRINT #2,ZFossil
  937.       IF ExitMethod$ = "S" THEN _
  938.          CLOSE 4 : _                                                 ' KG052401
  939.          CALL ShellExit (ExitTemplate$) : _
  940.          ZPrevCaller$ = "" : _                                       ' KG052401
  941.          CALL SetCall : _                                            ' KG052401
  942.          ZExitToDoors = ZTrue : _
  943.          CALL BufFile (ZDoorDisplay$,WasX) : _
  944.          CALL DoorReturn _
  945.       ELSE ZOutTxt$(1) = ZDiskForDos$ + _
  946.                   "COMMAND /C " + _
  947.                   ExitTo$ : _
  948.            ZOutTxt$(2) = ZRBBSBat$ : _
  949.            CALL RBBSExit (ZOutTxt$(),2)
  950.       END SUB
  951.  
  952. ------------------------[ KG052201 ]-------------------------
  953.  
  954. Problem:  Set echomail processors want to add "@ <node#>" after the
  955. name of the person sending mail.   But then, when person replies,
  956. name is never found for setting mail waiting.
  957.  
  958. Solution:  Reguard name as terminated with first "@".
  959.  
  960. Change RBBSSUB2.BAS as follows:
  961.  
  962. 2032 IF MsgTo$ <> "ALL" THEN _
  963.         IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _
  964.            ZWasDF = INSTR(MsgTo$+" @"," @") : _                      ' KG052201
  965.            TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _               ' KG052201
  966.            CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
  967.            IF NOT Found THEN _
  968.               ZLastIndex = 0 : _
  969.               IF NOT ZReply THEN _
  970.                  ZOutTxt$ = "[R]e-enter name, Q)uit, C)ontinue" : _
  971.                  ZTurboKey = -ZTurboKeyUser : _
  972.                  ZLastIndex = 0 : _
  973.                  GOSUB 2033 : _
  974.                  ZWasZ$ = ZUserIn$(1) : _
  975.                  CALL AllCaps (ZWasZ$) : _
  976.                  IF ZWasZ$ <> "C" THEN _
  977.                     MsgTo$ = "" : _
  978.                     IF ZWasZ$ <> "Q" THEN _
  979.                        GOTO 2020
  980.      IF MsgTo$ = Temp$ THEN _
  981.         ZOutTxt$ = "Msg would be from and to SAME PERSON!  Really do this (Y,[N])" : _
  982.         ZLastIndex = 0 : _
  983.         GOSUB 2033 : _
  984.         IF NOT ZYes THEN _
  985.            MsgTo$ = ""
  986.      EXIT SUB
  987.  
  988. Change RBBSSUB5.BAS as follows:
  989.  
  990. 63540 ' Match Name to one in message file
  991.       SUB MsgNameMatch (PrimeName$,AltName$,SearchPos,Found) STATIC
  992.       WasX$ = LEFT$(PrimeName$+"  ",22-8*(SearchPos < 7))
  993.       GOSUB 63542                                                    ' KG052201
  994.       IF Found OR AltName$ = "" THEN _                               ' KG052201
  995.          EXIT SUB                                                    ' KG052201
  996.       WasX$ = LEFT$(AltName$ + "  ",22-8*(SearchPos < 7))
  997.       GOSUB 63542                                                    ' KG052201
  998.       EXIT SUB                                                       ' KG052201
  999. 63542 WasY$ = MID$(ZMsgRec$,SearchPos,LEN(WasX$))                    ' KG052201
  1000.       ZWasDF = INSTR(WasY$,"@")                                      ' KG052201
  1001.       IF ZWasDF > 0 THEN _                                           ' KG052201
  1002.          MID$(WasY$,ZWasDF) = "      "                               ' KG052201
  1003.       Found = (WasY$ = WasX$)                                        ' KG052201
  1004.       RETURN                                                         ' KG052201
  1005.       END SUB
  1006.  
  1007. ------------------------[ DA042401 ]-------------------------
  1008.  
  1009. Problem:  Get an infinite loop when do an file S)earch and hit a
  1010. string in the extended description you have insufficient suecurity
  1011. to view because is protected by a security level (= in front of name).
  1012.  
  1013. Solution:  Change RBBSSUB3.BAS as follows:
  1014.  
  1015. 58169 CALL CheckInt (MID$(PartToPrint$,34))
  1016.       IF ZUserSecLevel < ZTestedIntValue THEN _
  1017.          LastOK = ZFalse : _
  1018.          FailedSearch = ZFalse : _                                   ' DA042401
  1019.          GOTO 58168
  1020.       MID$(PartToPrint$,1,13) = MID$(PartToPrint$,2,12) + " "
  1021.       ZWasA = LEN(STR$(ZTestedIntValue))
  1022.       MID$(PartToPrint$,34) = MID$(PartToPrint$,34 + ZWasA) + SPACE$(ZWasA)
  1023.       GOTO 58172
  1024.  
  1025. ------------------------[ KG051702 ]-------------------------
  1026.  
  1027. Problem:  When security for K)ill command set too high to use,
  1028. caller still presented with K option in msg read when reading own
  1029. mail.
  1030.  
  1031. Solution:  Change RBBS-PC.BAS as follows:
  1032.  
  1033. 4600   IF ScanMsgs THEN _
  1034.           GOSUB 8020 : _
  1035.           GOTO 4630
  1036.        IF NOT JustSearching THEN _
  1037.           GOSUB 8000 : _
  1038.           IF QuotedReply THEN _
  1039.              QuotedReply = ZFalse : _
  1040.              GOTO 4610
  1041.        IF ZRet THEN _
  1042.           GOTO 4630
  1043.        CanChangeSec = (ZUserSecLevel => ZSecChangeMsg)
  1044.        WasI =  - ((ZUserSecLevel >= ZOptSec(9)) AND (UserInHeader OR CanKill)) ' KG051702
  1045.        IF ZExpertUser THEN _
  1046.           WasA1$ = ",R,T,=,+,-" + _
  1047.                 MID$(",F",1,- (UserInHeader OR CanChangeSec) * 2) + _
  1048.                 MID$(",K",1,WasI * 2) + _                            ' KG051702
  1049.                 MID$(",U",1,- (ZUserSecLevel >= ZOptSec(54)) * 2) + _
  1050.                 MID$(",S",1, - CanChangeSec * 2) _
  1051.        ELSE WasA1$ = ",R)eply,T)hread,=)again,+,-" + _
  1052.                   MID$(",F)wd",1, - (UserInHeader OR CanChangeSec) * 5) + _
  1053.                   MID$(",K)ill",1, WasI * 6) + _                     ' KG051702
  1054.                   MID$(",U)ser",1,- (ZUserSecLevel >= ZOptSec(54)) * 6) + _
  1055.                   MID$(",S)ec",1, - CanChangeSec * 5)
  1056.        ZTurboKey = -ZTurboKeyUser
  1057.        IF JustSearching OR NOT JustReplied THEN _
  1058.           GOTO 4610
  1059.        JustReplied = ZFalse
  1060.        CALL AskMore (WasA1$,ZTrue,ZFalse,ZAnsIndex,ZFalse)
  1061.        CALL SkipLine (1)
  1062.        IF ZNo THEN _
  1063.           RETURN
  1064.        CALL AllCaps (ZUserIn$)
  1065.        ZReply = (ZReply OR ZUserIn$ = "R")
  1066.        IF ZUserIn$ <> "=" THEN _
  1067.           GOTO 4618
  1068.        CALL SkipLine (1)
  1069.  
  1070. ------------------------[ KG051701 ]-------------------------
  1071.  
  1072. Problem:  When in a subboard, do a V)iew conference, and use
  1073. join suboption to rejoin main, stays inside the subboard.
  1074.  
  1075. Solution:  Change RBBS-PC.BAS as follows:
  1076.  
  1077. 1205 IF ZSubParm < 0 THEN _
  1078.         GOTO 202
  1079.      ZSubParm = 1
  1080.      ZStopInterrupts = ZFalse
  1081.      ZNonStop = (ZPageLength < 1)
  1082.      ZWasQ = 0
  1083.      IF ConfMailJoin OR (ZHomeConf$ <> "" AND ZHomeConf$ <> "MAIN") THEN _ ' TC051701
  1084.         TurboLogon = (NOT ConfMailJoin) : _
  1085.         ConfMailJoin = ZFalse : _
  1086.         ZFF = 8 : _
  1087.         ZUserIn$(2) = ZHomeConf$ : _
  1088.         ZHomeConf$ = "" : _
  1089.         ZWasQ = 1 : _
  1090.         ZAnsIndex = 1 : _
  1091.         ZLastIndex = 2 : _
  1092.         ZStoreParseAt = 1 : _
  1093.         ZLastCommand$ = "MJ" : _                                     ' KG021502
  1094.         GOTO 1240
  1095.      CALL SkipLine (1)
  1096.  
  1097. ------------------------[ KG051601 ]-------------------------
  1098.  
  1099. Problem:  When SysOp declines to leave a comment because it would
  1100. be to same person msg would be from, and then E)nters another
  1101. message, is not prompted for the subject ("comment" is used).
  1102.  
  1103. Change RBBS-PC.BAS as follows:
  1104.  
  1105. 2000 QuotedReply = ZFalse
  1106.      MsgFrom$ = ZActiveUserName$
  1107.      SysopMsg = ZFalse                                               ' MB051601
  1108.  
  1109. ------------------------[ KG051501 ]-------------------------
  1110.  
  1111. Problem:  Some BBS's allow lower case in a msg subject.   When mail from
  1112. them gets added to RBBS, it may remain in lower case.   Then thread
  1113. and text search will not match properly.
  1114.  
  1115. Solution:  Always make the subject upper case when it is read into
  1116. RBBS.   Change RBBS-PC.BAS as follows:
  1117.  
  1118. 8040 IF LEN(MsgTo$) < 23 THEN _
  1119.         MsgTo$ = MsgTo$ + _
  1120.                       SPACE$(23 - LEN(MsgTo$))
  1121.      Subject$ = MID$(ZMsgRec$,76,25)
  1122.      CALL Trim (Subject$)
  1123.      CALL AllCaps (Subject$)                                         ' KG051501
  1124.      OrigSubject$ = Subject$
  1125.      IF ZPswdFailed THEN _
  1126.         Subject$ = WasSJ$
  1127.  
  1128. ------------------------[ KG042501 ]-------------------------
  1129.  
  1130. Problem:  When execute macros with block print to screen that
  1131. has empty lines in it, prompts repeated on the screen and macro
  1132. works irregulary.
  1133.  
  1134. Solution:  Change RBBSSUB5.BAS as follows:
  1135.  
  1136. 63336 GOSUB 63395
  1137.       IF NOT ZMacroActive THEN _
  1138.          ZMacroEcho = ZTrue : _
  1139.          EXIT SUB                                                    ' KG042501
  1140.       IF CompareVar > 0 THEN _
  1141.          IF NOT CaseExecute THEN _
  1142.             IF LEFT$(ZOutTxt$,3) = ZSmartTextCode$+"==" THEN _
  1143.                WasX$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3) : _          ' KG042501
  1144.                GOTO 63370 _
  1145.             ELSE IF LEFT$(ZOutTxt$,7) = ZSmartTextCode$ + "END ON" THEN _
  1146.                     CompareVar = 0 : _
  1147.                     GOTO 63336 _
  1148.                   ELSE GOTO 63336
  1149.       IF LEN(ZOutTxt$) < 3 THEN _                                    ' KG042501
  1150.          GOTO 63398                                                  ' KG042501
  1151.       WasX$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3)                       ' KG042501
  1152.       IF LEFT$(ZOutTxt$,1) <> ZSmartTextCode$ THEN _
  1153.          GOTO 63398
  1154.       CALL CheckInt (MID$(ZOutTxt$,2))
  1155.       IF ZErrCode > 0 THEN _
  1156.          GOTO 63398
  1157.             .
  1158.             .
  1159.             .
  1160.  
  1161. ------------------------[ KG041702 ]-------------------------
  1162.  
  1163. Problem:  CONFIG accepts a quote for a command symbol but this
  1164. choice messes up the entire configuration file.
  1165.  
  1166. Solution:  Do not allow quote as a choice.   Change CNFG-SUB.BAS
  1167. as follows:
  1168.  
  1169. 61892 CALL ASKRO("New command for " + _
  1170.                   MID$(COMMANDS$(FF,1),1,INSTR(COMMANDS$(FF,1),"  ")) + _
  1171.                  "is?",24,HK$)
  1172.       IF HK$ = CHR$(34) THEN _                                       ' KG041702
  1173.          GOTO 61892                                                  ' KG041702
  1174.       X$ = MID$(HK$,1,1)
  1175.       CALL ALLCAPS (X$)
  1176.       IF LEN(HK$) > 1 THEN _
  1177.          HK$ = X$ + MID$(HK$,2)
  1178.       IF LEN (HK$) = 1 THEN _
  1179.          HK$ = X$
  1180.       COMMANDS$(FF,2) = HK$
  1181.       MID$(SECTION.COMMANDS$,FF,1) = HK$
  1182.       GOTO 61880
  1183.  
  1184. ------------------------[ KG041701 ]-------------------------
  1185.  
  1186. Problem:  Door may exist but fail to be executed.
  1187.  
  1188. Solution:  Line was left out of a subprogram.  Change RBBSSUB4.BAS
  1189. as follows:
  1190.  
  1191. 59510 ZFileName$ = CurMenu$
  1192.       InMenu = ZTrue                                                 ' KG041701
  1193.       CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue)
  1194.       MenuFront$ = MenuDrv$ + WasX$
  1195.       CALL Graphic (GRDefault$,ZFileName$)
  1196.       CurMenuVer$ = ZFileName$
  1197.       ZStopInterrupts = ZFalse
  1198.       IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _
  1199.          GOTO 59520
  1200.  
  1201. ------------------------[ KG041401 ]-------------------------
  1202.  
  1203. Problem:  Possible to get an infinite loop under NetBios.
  1204.  
  1205. Solution:  Caused by trying to unlock a file not locked.  Change
  1206. RBBSSUB1.BAS as follows:
  1207.  
  1208. 29920 ZErrCode = 0
  1209.       IF IBMFileLock = 6 AND IBMRecLock = 3 THEN _
  1210.          IBMCount = IBMCount - 1 : _
  1211.          IF IBMCount > 0 THEN _
  1212.             EXIT SUB _
  1213.          ELSE IBMCount = 0
  1214.       UNLOCK IBMFileLock, IBMRecLock TO IBMRecLock
  1215.       IF ZErrCode = 70 THEN _                                        ' ML041401
  1216.          EXIT SUB                                                    ' ML041401
  1217.       IF ZErrCode <> 0 THEN _
  1218.          GOTO 29920
  1219.       END SUB
  1220.  
  1221. ------------------------[ KG040902 ]-------------------------
  1222.  
  1223. Problem:  When dooring to external protocols that append to the
  1224. log file used by DSZ, the log file can grow rather than contain
  1225. only the latest transfer, causing RBBS to read the wrong entry.
  1226.  
  1227. Solution:   Change RBBSSUB5.BAS as follows:
  1228.  
  1229. 20263 IF ZPrivateDoor THEN _
  1230.          ZCmdTransfer$ = ZWasFT$ : _
  1231.          CALL XferType (2,ZTrue) : _
  1232.          ZCmdTransfer$ = ""
  1233.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")
  1234.       IF ZErrCode <> 0 THEN _
  1235.          GOTO 20267
  1236.       CALL ReadParms (ZWorkAra$(), ZFailureParm, 1)
  1237.       IF ZErrCode <> 0 THEN _
  1238.          GOTO 20267
  1239.       CLOSE 2                                                        ' KG040902
  1240.       CALL KillWork ("XFER-" + ZNodeID$ + ".DEF")
  1241.  
  1242. ------------------------[ KG040901 ]-------------------------
  1243.  
  1244. Problem:  If screen happens to fill with msg "Scanning directory...",
  1245. will not pause but scroll lines away.
  1246.  
  1247. Solution:  Change RBBSSUB5.BAS as follows:
  1248.  
  1249. 20120 ZOutTxt$ = "Scanning Directory " + _
  1250.            ZFileNameHold$
  1251.       IF WasRS$ <> "" THEN _
  1252.          ZOutTxt$ = ZOutTxt$ + " for " + WasRS$
  1253.       GOSUB 21650
  1254.       IF ZFileSysParm > 1 THEN _
  1255.          RETURN
  1256.       CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)                 ' KG040901
  1257.       IF ZNo THEN _                                                  ' KG040901
  1258.          ZErrCode = 0 : _                                            ' KG040901
  1259.          RETURN                                                      ' KG040901
  1260.       WasPG = ZTrue
  1261.  
  1262. ------------------------[ KG032801 ]-------------------------
  1263.  
  1264. Problem:  Documentation says a macro can be executed before any
  1265. file transfer by putting it in PROTO.DEF.   But macro is ignored.
  1266.  
  1267. Solution:  Change RBBSSUB5.BAS as follows:
  1268.  
  1269. 20330 IF ZAutoDownInProgress THEN _
  1270.          RETURN
  1271.       GOSUB 20337                                                    ' KG032801
  1272.       ZOutTxt$ = ZProtoPrompt$ + _
  1273.             " " + WasA1$ + _
  1274.             " of " + _
  1275.             ZFileNameHold$ + _
  1276.             " ready.  <Ctrl X> aborts"
  1277.       GOSUB 21650
  1278.  
  1279. 20337 IF ZProtoMacro$ <> "" THEN _                                   ' KG032801
  1280.          ZGSRAra$(1) = MID$("DU ",ZTransferFunction,1) : _           ' KG032801
  1281.          CALL MacroExe (ZProtoMacro$)                                ' KG032801
  1282.       RETURN                                                         ' KG032801
  1283.  
  1284. 20340 IF ZWasDF THEN _
  1285.          ZOutTxt$ = "Switch to a non-ascii protocol" : _
  1286.          GOSUB 21650 : _
  1287.          GOTO 21700
  1288.       GOSUB 20750
  1289.       IF ZFileSysParm > 1 OR NOT ZOK THEN _
  1290.          RETURN
  1291.       CALL OpenWork (2,ZFileName$)
  1292.       IF (ZAnsIndex = FirstDnld OR NOT ZConcatFIles) THEN _
  1293.          GOSUB 20337 : _                                             ' KG032801
  1294.          ZOutTxt$ = "^X aborts.  ^S suspends ^Q resumes" : _
  1295.          GOSUB 21640 : _
  1296.          IF ZFileSysParm > 1 THEN _
  1297.             RETURN _
  1298.          ELSE ZOutTxt$ = ZProtoPrompt$ + " SEND of " + _
  1299.               ZFileNameHold$ + _
  1300.               " ready. Press Any Key to start" : _
  1301.          ZTurboKey = 2 : _
  1302.          ZForceKeyboard = ZTrue : _
  1303.          ZSuspendAutologoff = ZTrue : _
  1304.          GOSUB 21660 : _
  1305.          ZSuspendAutologoff = ZFalse : _
  1306.          GOSUB 20335 : _
  1307.          IF ZFileSysParm > 1 THEN _
  1308.             RETURN
  1309.  
  1310. 20560 LineACK = (ZDefaultLineACK$ <> "")
  1311.       IF LineACK THEN _
  1312.          ZOutTxt$ = "Acknowledge each line ([Y],N)" : _
  1313.          ZTurboKey = - ZTurboKeyUser : _
  1314.          LineACK = NOT ZNo : _
  1315.          GOSUB 21660 : _
  1316.          IF ZFileSysParm > 1 THEN _
  1317.             RETURN
  1318.       GOSUB 20337                                                    ' KG032801
  1319.       CALL QuickTPut1 ("Transfer MUST end with a <Ctrl-K>")
  1320.       CALL QuickTPut1 (ZProtoPrompt$+" RECEIVE of " + ZFileNameHold$ + " ready")
  1321.       ZOK = ZFalse
  1322.       XOff = ZFalse
  1323.       CALL OpenOutW(ZFileName$)
  1324.       IF ZErrCode <> 0 AND ZErrCode <> 53 THEN _
  1325.          ZWasEL = 20560 : _
  1326.          GOTO 21900
  1327.       GOSUB 20510
  1328.       IF ZFileSysParm > 1 THEN _
  1329.          RETURN
  1330.  
  1331. ------------------------[ KG032601 ]-------------------------
  1332.  
  1333. Problem:   When have a problem reading TRASHCAN file other than
  1334. file not found, such as when TRASHCAN is a dos subdirectory,
  1335. will get untrapped errors when new user tries to log on.
  1336.  
  1337. Solution:  Change RBBS-PC.BAS as follows:
  1338.  
  1339. 12570 Found = ZFalse
  1340.       CALL OpenWork (2,ZTrashcanFile$)
  1341.       IF ZErrCode <> 0 THEN _                                        ' KG032601
  1342.          ZErrCode = 0 : _                                            ' KG032601
  1343.          RETURN                                                      ' KG032601
  1344.  
  1345. ------------------------[ KG032502 ]-------------------------
  1346.  
  1347. Problem:  Any door listed in DOORS.DEF should be executable if
  1348. caller has sufficient security.   But only SysOp can executed
  1349. doors not listed on the menu.
  1350.  
  1351. Solution:  To allow "hidden" doors, change RBBS-PC.BAS as
  1352. follows:
  1353.  
  1354. 821 IF ZExitToDoors THEN _
  1355.        IF ZTransferFunction = 3 THEN _
  1356.           ZNewUser = ZTrue : _
  1357.           TurboLogon = ZFalse : _
  1358.           SameUser = ZFalse : _
  1359.           ZTransferFunction = 0 : _
  1360.           GOTO 832 _
  1361.        ELSE GOTO 832
  1362.     GOSUB 1241
  1363.     IF (SubBoard AND (ZOrigMsgFile$ = ZActiveMessageFile$)) _
  1364.        OR ((ZUserSecLevel > ZMaxRegSec) AND (NOT ZNewUser)) THEN _
  1365.        GOTO 832
  1366.     ZWasZ$ = ZRegProgram$
  1367.     ZTransferFunction = 3
  1368.     CALL DoorExit (ZFalse)                                           ' KG032502
  1369.     ZTransferFunction = 0
  1370.     GOTO 832
  1371.  
  1372. 1401 ZStackC = ZTrue
  1373.      CALL SubMenu ("Which questionnaire(s), L)ist" + ZPressEnterExpert$, _
  1374.         WasA1$,ZQuesPath$,".DEF","",ZUserGraphicDefault$,ZTrue,ZFalse,ZTrue,"",WasX) ' KG032502
  1375.      IF ZWasQ = 0 THEN _
  1376.         RETURN
  1377.      IF ZSubParm = -1 THEN _
  1378.         RETURN 10595
  1379.      QuestHold$ = ZWasZ$
  1380.      GOSUB 11520
  1381.      CLOSE 2
  1382.      CALL UpdtCalr (QuestHold$ + " questionnaire " + _
  1383.         MID$("answeredaborted",1 - 8 * ZQuestAborted,8),2)
  1384.      IF ReturnToPrompt THEN _
  1385.         RETURN
  1386.      GOTO 1401
  1387.  
  1388. 5301 ZStackC = ZTrue
  1389.      CALL SubMenu ("What conference, L)ist, M)ain ([ENTER] quits)",_
  1390.          WasA1$,MsgDrvPath$,_
  1391.          "M.DEF","M",ZUserGraphicDefault$,ZTrue,ZFalse,ZFalse,"C.DEF",WasX) ' KG032502
  1392.      IF ZWasQ = 0 THEN _
  1393.         RETURN
  1394.      IF ZSubParm = -1 THEN _
  1395.         RETURN 10595
  1396.  
  1397. 9701 CALL SubMenu ("Read what bulletin(s), L)ist, S)ince, N)ews ([ENTER] = none)",_
  1398.                    WasA1$, ZBulletinPrefix$,"",ReturnOn$,_
  1399.                    ZUserGraphicDefault$,ZFalse,ZFalse,ZFalse,"",WasX) ' KG032502
  1400.      IF ZWasQ = 0 THEN _
  1401.         RETURN
  1402.      CALL CheckCarrier
  1403.      IF ZSubParm = -1 THEN _
  1404.         RETURN 10595
  1405.      IF (ZWasZ$ = "*" OR ZWasZ$ = "S") THEN _
  1406.         ZPrevPrefix$ = "" : _
  1407.         GOTO 9760
  1408.      ZStopInterrupts = ZFalse
  1409.      IF ZWasZ$ = "N" THEN _
  1410.         GOSUB 1242 : _
  1411.         IF WasZ <> 0 THEN _
  1412.            CALL QuickTPut1 ("No NEWS available") : _
  1413.            GOTO 9701 _
  1414.         ELSE GOTO 9703
  1415.      CALL BufFile (ZFileName$,ZAnsIndex)
  1416.  
  1417. 10974 WasA1$ = ZMenu$(5)
  1418.       CALL Talk (5,ZOutTxt$)
  1419.       ZStackC = ZTrue
  1420.       CALL SubMenu ("Open which door, L)ist" + ZPressEnterExpert$, _
  1421.                     WasA1$,"",".BAT","",_
  1422.                     ZUserGraphicDefault$,ZTrue,ZFalse,ZFalse,"",InMenu) ' KG032502
  1423.       IF ZWasQ = 0 THEN _
  1424.          RETURN
  1425.       IF ZSubParm = -1 THEN _
  1426.          RETURN 10595
  1427.  
  1428. 10986 ZWasZ$ = ZFileName$
  1429.       CALL DoorExit (NOT InMenu)                                     ' KG032502
  1430.       GOTO 10974                                                     ' KG032502
  1431.  
  1432. Change RBBSSUB2.BAS as follows:
  1433.  
  1434. (line 10983)
  1435.  
  1436.       SUB DoorExit (ReqDoorsDef) STATIC                              ' KG032502
  1437.       IF ZWasZ$ = "" OR _
  1438.          ZWasZ$ = "NONE" THEN _
  1439.          EXIT SUB
  1440.       CALL FindIt (ZWasZ$)
  1441.       IF NOT ZOK THEN _
  1442.          GOTO 10986
  1443.       CALL BreakFileName (ZWasZ$,WasX$,ExitTo$,ExitMethod$,ZFalse)   ' KG032501
  1444.       ExitMethod$ = ""
  1445.       ZDooredTo$ = ExitTo$
  1446.       CALL FindIt (ZDoorsDef$)
  1447.       IF NOT ZOK THEN _
  1448.          IF ReqDoorsDef THEN _                                       ' KG032502
  1449.             EXIT SUB _                                               ' KG032502
  1450.          ELSE ExitTo$ = ExitTo$ + " " + ZNodeID$ : _                 ' KG032502
  1451.               GOTO 10989                                             ' KG032502
  1452. 10985 CALL ReadParms (ZOutTxt$(),8,1)
  1453.       IF ZErrCode > 0 THEN _
  1454.          IF ReqDoorsDef THEN _                                       ' KG032502
  1455.             EXIT SUB _                                               ' KG032502
  1456.          ELSE ExitTo$ = ExitTo$ + " " + ZNodeID$ : _                 ' KG032502
  1457.               GOTO 10989                                             ' KG032502
  1458.       IF ExitTo$ <> ZOutTxt$(1) THEN _
  1459.          GOTO 10985
  1460.       CALL CheckInt (ZOutTxt$(2))
  1461.       IF ZErrCode > 0 THEN _
  1462.          ZErrCode = 0 : _
  1463.          GOTO 10985
  1464.       IF ZUserSecLevel < ZTestedIntValue THEN _
  1465.          CALL QuickTPut1 ("Insufficient security for door") : _
  1466.          EXIT SUB
  1467.       WasX$ = LEFT$(ZOutTxt$(5),INSTR(ZOutTxt$(5)+" "," ")-1)
  1468.       CALL FindIt (WasX$)
  1469.       IF NOT ZOK THEN _
  1470.          GOTO 10986
  1471.       ZFileName$ = ZOutTxt$(3)
  1472.       ExitMethod$ = ZOutTxt$(4)
  1473.       ExitTemplate$ = ZOutTxt$(5)
  1474.       ZDoorDisplay$ = ZOutTxt$(7)
  1475.       DoorTime$ = ZOutTxt$(8)
  1476.       CALL AskUsers
  1477.       CALL SmartText (ExitTemplate$,ZFalse,ZFalse)
  1478.       CALL MetaGSR (ExitTemplate$,ZFalse)
  1479.       ExitTo$ = ExitTemplate$
  1480.       GOTO 10989
  1481.  
  1482. Change RBBSSUB4.BAS as follows:
  1483.  
  1484. (line 59500)
  1485.  
  1486.       SUB SubMenu (PassedPrompt$,CurMenu$,FrontOpt$, _
  1487.                   BackOpt$,ReturnOn$,GRDefault$,VerifyInMenu, _
  1488.                   AllMenuOK,RequireInMenu,BackOpt2$,InMenu) STATIC   ' KG032502
  1489.  
  1490. 59538 FilName$ = FPre$ + ZWasZ$
  1491.       CALL BadFile (FilName$,WasBF)
  1492.       IF WasBF > 1 THEN _
  1493.          ZOK = ZFalse : _
  1494.          RETURN
  1495.       ZFileName$ = FilName$ + _
  1496.                    BackOpt$
  1497.       CALL Graphic (GRDefault$,ZFileName$)
  1498.       IF NOT ZOK THEN _
  1499.          IF BackOpt2$ <> "" THEN _
  1500.             ZFileName$ = FilName$ + _
  1501.                          BackOpt2$ : _
  1502.             CALL Graphic (GRDefault$,ZFileName$)
  1503.       IF ZOK THEN _
  1504.          IF ZSysop OR (NOT RequireInMenu) THEN _
  1505.             RETURN _
  1506.          ELSE CALL WordInFile (CurMenu$,ZWasZ$,InMenu) : _           ' KG032502
  1507.               IF InMenu THEN _                                       ' KG032502
  1508.                  RETURN _
  1509.               ELSE GOTO 59540
  1510.       IF (NOT VerifyInMenu) THEN _
  1511.          GOTO 59540
  1512.       CALL WordInFile (CurMenu$,ZWasZ$,InMenu)  'verify against menu itself ' KG032502
  1513.       IF InMenu THEN _                                               ' KG032502
  1514.          IF AllMenuOK THEN _
  1515.             RETURN
  1516. 59540 WasX$ = FPre$ + _
  1517.            ZWasZ$ + _
  1518.            ".MNU" 'check whether option is a menu
  1519.       ZFileName$ = WasX$
  1520.       CALL Graphic (GRDefault$,ZFileName$)
  1521.       IF ZOK THEN _
  1522.          NewMenu = ZTrue : _
  1523.          CurMenuVer$ = ZFileName$ : _
  1524.          CurMenu$ = WasX$ : _
  1525.          CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue) : _
  1526.          MenuFront$ = MenuDrv$ + WasX$ : _
  1527.          RETURN
  1528.       IF VerifyInMenu AND InMenu AND NOT RequireInMenu THEN _        ' KG032502
  1529.          CALL UpdtCalr("Option " + ZWasZ$ + " on menu " + _
  1530.                        CurMenu$ + " but not found",1)
  1531.       RETURN
  1532.  
  1533. ------------------------[ KG032501 ]-------------------------
  1534.  
  1535. Problem:  When put registration door control in DOORS.DEF, it
  1536. is being ignored.
  1537.  
  1538. Solution:  Change RBBSSUB2.BAS as follows:
  1539.  
  1540. (line 10983)
  1541.  
  1542.       SUB DoorExit STATIC
  1543.       IF ZWasZ$ = "" OR _
  1544.          ZWasZ$ = "NONE" THEN _
  1545.          EXIT SUB
  1546.       CALL FindIt (ZWasZ$)
  1547.       IF NOT ZOK THEN _
  1548.          GOTO 10986
  1549.       CALL BreakFileName (ZWasZ$,WasX$,ExitTo$,ExitMethod$,ZFalse)   ' KG032501
  1550.       ExitMethod$ = ""
  1551.          .
  1552.          .
  1553.          .
  1554.  
  1555. ------------------------[ KG031801 ]-------------------------
  1556.  
  1557. Problem:  When has main and auxiliary FMS directories, and list an
  1558. auxiliary, abort, then list main, get auxiliary instead.
  1559.  
  1560. Solution:  Change RBBSSUB3.BAS as follows:
  1561.  
  1562. 58183 CLOSE 2
  1563.       ZNonStop = (ZPageLength < 1)
  1564.       ZStopInterrupts = ZFalse
  1565.       ZOutTxt$ = ""
  1566.       ZActiveFMSDir$ = ""                                            ' KG031801
  1567.       ZJumpSupported = ZFalse
  1568.       EXIT SUB
  1569.  
  1570. ------------------------[ KG031501 ]-------------------------
  1571.  
  1572. Problem:  Sometimes get endless looping where keeps trying to download
  1573. same file after upload is aborted.
  1574.  
  1575. Solution:  Change RBBSSUB5.BAS as follows:
  1576.  
  1577. 20735 CALL KillWork (ZFileName$)
  1578.       IF ZErrCode <>0 THEN _
  1579.          ZWasEL = 20736 : _
  1580.          GOTO 21900
  1581.       ZAnsIndex = ZLastIndex + 1                                     ' KG031501
  1582.       ZLastIndex = 0
  1583.       RETURN
  1584.  
  1585. ------------------------[ KK030901 ]-------------------------
  1586.  
  1587. Problem:  Possible to get untrapped overflow error in intermediate
  1588. variables in an integer calculation.
  1589.  
  1590. Solution:  Change RBBS-PC.BAS as follows:
  1591.  
  1592. 135 IF ZCurDef$ = ZOrigCnfg$ THEN _
  1593.        ZActiveMessageFile$ = ZMainMsgFile$ : _
  1594.        ZActiveUserFile$ = ZMainUserFile$
  1595.     GOSUB 4910
  1596.     IF ZConfMode THEN _
  1597.        GOTO 150
  1598.     ZLocalUserMode = (RIGHT$(ZComPort$,1) < "1")
  1599.     GET 1,ZNodeRecIndex
  1600.     ZWasY$ = MID$(ZMsgRec$,77,2)
  1601.     CALL UnPackDate (ZWasY$,WasX,WasL,WasI,ZOldDate$)
  1602.     ZOldDate$ = LEFT$(ZOldDate$,6) + MID$(STR$(WasX),2)
  1603.     ZHourMinToDropToDos = - (ZHourMinToDropToDos > 0) * ZHourMinToDropToDos
  1604.     Hour = INT(ZHourMinToDropToDos / 100)
  1605.     WasMN = ZHourMinToDropToDos - Hour * 100
  1606.     ZTimeToDropToDos! = Hour * 3600! + WasMN * 60!                   ' KK030901
  1607.  
  1608. 175 GOSUB 5344
  1609.     CALL CountLines (MaxEntries)
  1610.     REDIM ZCategoryName$(MaxEntries),ZCategoryCode$(MaxEntries),_
  1611.           ZCategoryDesc$(MaxEntries) : _
  1612.     CALL InitFMS (ZCategoryName$(),ZCategoryCode$(), _
  1613.                   ZCategoryDesc$(),ZNumCategories)
  1614.     ZMaxMsgLines = ZMaxMsgLinesDef
  1615.     ZLocalUser = (ZLocalUser OR ZLocalUserMode)
  1616.     IF (NOT ZLocalUser) AND (NOT SubBoard) THEN _
  1617.        CALL OpenCom (ZModemInitBaud$,",N,8,1")
  1618.     IF NOT SubBoard THEN _
  1619.        CALL SetEcho (ZDefaultEchoer$)
  1620.     ZNodeWorkFile$ = ZNodeWorkDrvPath$ + _
  1621.                       "NODE" + _
  1622.                       ZNodeFileID$ + _
  1623.                       "WRK"
  1624.     ZSecsPerSession! = ZMinsPerSession * 60!                         ' KK030901
  1625.     IF NOT ZLocalUserMode THEN _
  1626.        IF NOT ZExitToDoors THEN _
  1627.           GOTO 180 _
  1628.        ELSE IF NOT ZLocalUser THEN _
  1629.                GOTO 180
  1630.     ZLocalUser = ZTrue
  1631.     ZBPS = -6
  1632.     ZBaudTest! = 9600
  1633.     ZEightBit = ZTrue
  1634.     ZSnoop = ZTrue
  1635.     IF ZExitToDoors THEN _
  1636.        CALL AMorPM : _
  1637.        CALL ReadProf : _
  1638.        GOTO 410
  1639.     GOSUB 178
  1640.     GOTO 345
  1641.  
  1642. 459 GOSUB 9500
  1643.     ZLastDateTimeOnSave$ = ZLastDateTimeOn$
  1644.     IF ZExitToDoors THEN _
  1645.        TempHoldTime! = VAL(LEFT$(ZTime$,2))*3600! + _                ' KK030901
  1646.                          VAL(MID$(ZTime$,4,2))*60! : _               ' KK030901
  1647.        CALL CheckTime(TempHoldTime!, TempTime!, 2) : _
  1648.        MinsInDoors = TempTime! / 60 : _
  1649.        CALL TimeRemain (MinsRemaining)
  1650.     ZUserFileIndex = LOC(5)
  1651.     GOSUB 5135
  1652. '
  1653. ' ***  COMPUTE THE NUMBER OF DAYS REMAINING UNTIL REGISTRATION EXPIRES **
  1654. '
  1655.     IF ZRestrictByDate AND ZDaysInRegPeriod > 0 THEN _
  1656.        CALL CompDate (UserRegYY,UserRegMM,UserRegDD,UserComputeDate!) : _
  1657.        ZRegDaysRemaining = UserComputeDate! + _
  1658.                             ZDaysInRegPeriod - _
  1659.                             TodayComputeDate! : _
  1660.        CALL ExpireDate (UserComputeDate!,ZDaysInRegPeriod,ZExpirationDate$) _
  1661.     ELSE ZDaysInRegPeriod = 0
  1662.     IF NOT ZPrivateDoor THEN _
  1663.        IF ZRegDaysRemaining < 0 AND ZDaysInRegPeriod > 0 THEN _
  1664.        IF ZUserSecLevel > ZExpiredSec THEN _
  1665.           CALL QuickTPut1 (ZWasLG$(9) + _
  1666.                       " - security reset to " + _
  1667.                       STR$(ZExpiredSec)) : _
  1668.           CALL BufFile(ZHelpPath$+"RGXPIRD"+ZHelpExtension$,WasX) : _
  1669.           ZLogonErrorIndex = 9 : _
  1670.           ZUserSecLevel = ZExpiredSec : _
  1671.           LSET ZSecLevel$ = MKI$(ZUserSecLevel) : _
  1672.           GOSUB 5135
  1673.  
  1674. Change RBBSSUB3.BAS as follows:
  1675.  
  1676. (line 44000)
  1677.  
  1678.       SUB ReadProf STATIC
  1679.       FIELD 1, 128 AS ZMsgRec$
  1680.       GET 1,ZNodeRecIndex
  1681.       ZReliableMode = VAL(MID$(ZMsgRec$,91,2))
  1682.       MID$(ZMsgRec$,40,2) = "00"
  1683.       ZEightBit = VAL(MID$(ZMsgRec$,42,2))
  1684.       ZBPS = VAL(MID$(ZMsgRec$,44,2))
  1685.       CALL CommInfo
  1686.       ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5))
  1687.       ZUpperCase = VAL(MID$(ZMsgRec$,46,2))
  1688.       ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4))                      ' KG022101
  1689.       ZBatchTransfer = (MID$(ZMsgRec$,52,1) = "1")
  1690.       ZWasGR = VAL(MID$(ZMsgRec$,53,2))
  1691.       HourLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2)
  1692.       MinLoggedOn$  = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2)
  1693.       SecLoggedOn$  = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2)
  1694.       ZTimeLoggedOn$ = HourLoggedOn$ + _
  1695.                         ":" + _
  1696.                         MinLoggedOn$ + _
  1697.                         ":" + _
  1698.                         SecLoggedOn$
  1699.       ZTransferFunction = VAL(MID$(ZMsgRec$,74,1))
  1700.       ZWasFT$ = MID$(ZMsgRec$,75,1)
  1701.       ZTimeCredits! = 60!*CVI(MID$(ZMsgRec$,113,2))                  ' KKG030901
  1702.       ZDooredTo$ = MID$(ZMsgRec$,79,8)
  1703.       CALL Trim (ZDooredTo$)
  1704.           .
  1705.           .
  1706.           .
  1707.  
  1708. 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _               ' KK030901
  1709.                         VAL(MinLoggedOn$) * 60! + _                  ' KK030901
  1710.                         VAL(SecLoggedOn$)
  1711.       HourLoggedOn$ = ""
  1712.       MinLoggedOn$ = ""
  1713.       SecLoggedOn$ = ""
  1714.       IF ZMinsPerSession < 1 THEN _
  1715.          ZMinsPerSession = 3
  1716.       IF NOT ZEightBit THEN _
  1717.          OUT ZLineCntlReg,&H1A
  1718.       IF LEFT$(ZMsgRec$,7) = "SYSOP  " THEN _
  1719.          ZFirstName$ = ZSysopPswd1$ : _
  1720.          ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _
  1721.       ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _
  1722.            ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " ","  ") : _
  1723.            ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _
  1724.            ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _
  1725.            ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31)
  1726.       ZWasZ$ = ZFirstName$
  1727.       CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  1728.       CALL ReadDir (2,1)
  1729.       ZLimitMinsPerSession = VAL (ZOutTxt$)
  1730.       CLOSE 2
  1731.       END SUB
  1732.  
  1733. (line 58140)
  1734.  
  1735.       SUB LoadNew (Ara(2)) STATIC
  1736.       IF ZFMSDirectory$ = "" THEN _
  1737.          EXIT SUB
  1738.       ZPrevBase$ = ""
  1739.       IF PrevLoadNew$ = ZFMSDirectory$ THEN _
  1740.          Ara(1,1) = 0 : _
  1741.          EXIT SUB
  1742.       PrevLoadNew$ = ZFMSDirectory$
  1743.       CALL OpenFMS (LastRec)
  1744.       FIELD 2, 23 AS PreDate$, _
  1745.                 2 AS WasMM$, _
  1746.                 1 AS Fill1$, _
  1747.                 2 AS WasDD$, _
  1748.                 1 AS Fill2$, _
  1749.                 2 AS Year$, _
  1750.                 (2 + ZMaxDescLen) AS Fill3$, _
  1751.                 3 AS Category$, _
  1752.                 2 AS Fill4$
  1753.       MaxRecs = UBOUND(Ara,1)
  1754.       IF MaxRecs < 1 THEN _
  1755.          MaxRecs = 1 _
  1756.       ELSE IF MaxRecs > 23 THEN _
  1757.               MaxRecs = 23
  1758.       WasL = 0
  1759.       WasK = LastRec
  1760.       WHILE WasK > 0 AND WasL < MaxRecs
  1761.          GET #2,WasK
  1762.          IF INSTR("\= ",LEFT$(PreDate$,1)) > 0 THEN _
  1763.             GOTO 58142
  1764.          IF (ZCanDnldFromUp OR Category$ <> ZDefaultCatCode$) THEN _
  1765.             WasL = WasL + 1 : _
  1766.             Ara(WasL,1) = 372! * (VAL(Year$) - 80!) + 31! * VAL(WasMM$) + VAL(WasDD$) ' KK030901
  1767.          IF NOT ZCanDnldFromUp THEN _
  1768.             WasX = ZMinSecToView _
  1769.          ELSE IF Category$ = "***" THEN _
  1770.                  WasX = ZSysopSecLevel _
  1771.               ELSE IF Category$ = ZDefaultCatCode$ THEN _
  1772.                       WasX = ZMinSecToView _
  1773.                    ELSE WasX = ZOptSec(19)
  1774.          Ara(WasL,2) = WasX
  1775.  
  1776. ------------------------[ KG030801 ]-------------------------
  1777.  
  1778. Problem:  When screen pauses in midst of personal mail scan, will no
  1779. longer show rest of mail scan on the screen.
  1780.  
  1781. Solution:  Change RBBS-PC.BAS as follows:
  1782.  
  1783. 1900 GOSUB 5344
  1784.      IF ZPrivateDoor THEN _
  1785.         ActionFlag = ZTrue
  1786.      ZPrevBase$ = ZActiveMessageFile$
  1787.      ShowActive = ZFalse
  1788.      IF NOT ActionFlag THEN _
  1789.         CALL QuickTPut ("Checking messages in " + ConfFileName$,0) : _
  1790.         ShowActive = ZTrue _
  1791.      ELSE CALL QuickTPut ("Loading messages",0)
  1792.      WasA1$ = ""                                                     ' KG030801
  1793.      MsgCt = 0                                                       ' KG030203
  1794.      MsgsFromUser = ZFalse
  1795.      ActiveMessages = 0
  1796.      MailReported = ActionFlag
  1797.      FirstOld = ZTrue
  1798.      GOSUB 23000
  1799.      MsgRec = FirstMsgRecord
  1800.      MaxMsgs = VAL(MID$(ZMsgRec$,89,7))
  1801.      IF MaxMsgs > WasMM THEN _
  1802.         MaxMsgs = WasMM
  1803.      REDIM ZMsgPtr(MaxMsgs,2)
  1804.      NumDots = 0
  1805.  
  1806. 1940 IF MsgsFromUser < ZMsgDim THEN _
  1807.         MsgsFromUser = MsgsFromUser + 1 : _
  1808.         WasA1$ = WasA1$ + LEFT$(ZMsgRec$,5)                          ' KG030801
  1809.  
  1810. 1960 WasK = 1
  1811.      FOR MsgCt = 1 TO MsgsFromUser                                   ' KG030203
  1812.         ZOutTxt$ = MID$(WasA1$,WasK,5)                               ' KG030801
  1813.         WasK = WasK + 5
  1814.         GOSUB 12978
  1815.         IF MsgCt MOD 15 = 0 THEN _                                   ' KG030203
  1816.            CALL SkipLine (1) : _                                     ' KG030203
  1817.            CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)                  ' KG030203
  1818.      NEXT
  1819.      WasA1$ = ""                                                     ' KG030801
  1820.      CALL SkipLine (1)
  1821.      CALL QuickTPut1 ("Please K)ill old/unneeded msgs")
  1822.  
  1823. ------------------------[ KG030601 ]-------------------------
  1824.  
  1825. Problem:  Sometimes RBBS will get in a state where it constantly
  1826. recycles.   Callers file says "Connect Timeout".
  1827.  
  1828. Solution:  Caused usually by storing a telephone number in place of
  1829. where from, or by failing to give password right in local mode, then
  1830. bringing up remotely.   Change RBBS-PC.BAS as follows:
  1831.  
  1832. 150 IF SubBoard THEN _
  1833.        GOSUB 12987 : _
  1834.        GOSUB 5135 : _
  1835.        GOTO 170
  1836.     ZSysopAvail = VAL(MID$(ZMsgRec$,32,2))
  1837.     ZSysopAnnoy = VAL(MID$(ZMsgRec$,34,2))
  1838.     ZSysopNext = VAL(MID$(ZMsgRec$,36,2))
  1839.     MID$(ZMsgRec$,36,2) = STR$(ZFalse)
  1840.     ZPrinter = VAL(MID$(ZMsgRec$,38,2))
  1841.     IF ZTurnPrinterOff THEN _
  1842.        ZPrinter = ZFalse
  1843.     ZExitToDoors = (MID$(ZMsgRec$,40,2) = "-1" AND ZNetBaud$ = "")
  1844.     ZEightBit = VAL(MID$(ZMsgRec$,42,2))
  1845.     ZBPS = VAL(MID$(ZMsgRec$,44,2))
  1846.     ZSnoop = VAL(MID$(ZMsgRec$,58,2))
  1847.     MID$(ZMsgRec$,57,1) = "I"
  1848.     ZPrivateDoor = (MID$(ZMsgRec$,72,2) = "-1")
  1849.     IF ZPrivateDoor THEN _
  1850.        ZHasPrivDoor = ZTrue
  1851.     MID$(ZMsgRec$,72,2) = STR$(ZFalse)
  1852.     ZLocalUser = (MID$(ZMsgRec$,101,2) = ZCarriageReturn$+ZCarriageReturn$) ' KG030601
  1853.     IF ZExitToDoors OR ZPrivateDoor THEN _
  1854.        ZHasDoored = ZTrue : _
  1855.        TurboLogon = ZTrue
  1856.     PUT 1,ZNodeRecIndex
  1857.     GOSUB 12985
  1858. '
  1859. ' *****  INITIALIZE VOICE SYNTHESIZER   ****
  1860. '
  1861.     CALL Talk (Init,ZOutTxt$)
  1862. '
  1863. ' *****  TEST FOR MULTI LINK PRESENT IF NOT COMPAQ COMPUTER   ****
  1864. '
  1865.  
  1866. 13555 ZActiveMessageFile$ = ZOrigMsgFile$
  1867.       GOSUB 12986
  1868.       GOSUB 5344
  1869.       GET 1,ZNodeRecIndex
  1870.       MID$(ZMsgRec$,57,1) = "I"
  1871.       MID$(ZMsgRec$,40,2) = " 0"
  1872.       MID$(ZMsgRec$,72,2) = " 0"
  1873.       IF MID$(ZMsgRec$,101,2) = ZCarriageReturn$+ZCarriageReturn$ THEN _ ' KG030602
  1874.          MID$(ZMsgRec$,101,2) = " 0"                                 ' KG030602
  1875.       PUT 1,ZNodeRecIndex
  1876.       GOSUB 12985
  1877.       CLOSE 1,2,4,5
  1878.       IF NOT ZFossil THEN _
  1879.          CLOSE 3
  1880.       IF ZRecycleToDos THEN _
  1881.          GOTO 203
  1882.       RUN 100
  1883.  
  1884. Change RBBSSUB3.BAS as follows:
  1885.  
  1886. 43070 ZActiveMessageFile$ = ZOrigMsgFile$
  1887.       ZSubParm = 3
  1888.       CALL FileLock
  1889.       CALL OpenMsg
  1890.       FIELD 1, 128 AS ZMsgRec$
  1891.       GET 1,ZNodeRecIndex
  1892.       IF ZGlobalSysop THEN _
  1893.          MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25)
  1894.       MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors)
  1895.       MID$(ZMsgRec$,42,2) = STR$(ZEightBit)
  1896.       MID$(ZMsgRec$,44,2) = STR$(ZBPS)
  1897.       MID$(ZMsgRec$,46,2) = STR$(ZUpperCase)
  1898.       MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2) ' KG022101
  1899.       MID$(ZMsgRec$,53,2) = STR$(ZWasGR)
  1900.       MID$(ZMsgRec$,55,2) = STR$(ZSysop)
  1901.       MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZTimeLoggedOn$,2))) + _
  1902.                                    CHR$(VAL(MID$(ZTimeLoggedOn$,4,2))) + _
  1903.                                    CHR$(VAL(MID$(ZTimeLoggedOn$,7,2)))
  1904.       MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor)
  1905.       MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1)
  1906.       MID$(ZMsgRec$,75,1) = ZWasFT$
  1907.       MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60)
  1908.       MID$(ZMsgRec$,79,8) = LEFT$(ZDooredTo$+"        ",8)
  1909.       MID$(ZMsgRec$,91,2) = STR$(ZReliableMode)
  1910.       CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse)
  1911.       MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$))
  1912.       IF ZLocalUser THEN _
  1913.          ZWasZ$ = ZCarriageReturn$ + ZCarriageReturn$ _              ' KG030601
  1914.       ELSE ZWasZ$ = " 0"                                             ' KG030601
  1915.       MID$(ZMsgRec$,101,2) = ZWasZ$                                  ' KG030601
  1916.       MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode)                    ' KG030601
  1917.       ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + " "," ") - 1)
  1918.       MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$))
  1919.       MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1)
  1920.       MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex)
  1921.       MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2)
  1922.       MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2)
  1923.       MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2)
  1924.       MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2)
  1925.       MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2)
  1926. ' ***   Save additional parameters for door restoral
  1927.       CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  1928.       CALL PrintWorkA (STR$(ZLimitMinsPerSession))
  1929.       CLOSE 2
  1930.  
  1931. (line 44000)
  1932.  
  1933.       SUB ReadProf STATIC
  1934.       FIELD 1, 128 AS ZMsgRec$
  1935.       GET 1,ZNodeRecIndex
  1936.       ZReliableMode = VAL(MID$(ZMsgRec$,91,2))
  1937.       MID$(ZMsgRec$,40,2) = "00"
  1938.       ZEightBit = VAL(MID$(ZMsgRec$,42,2))
  1939.       ZBPS = VAL(MID$(ZMsgRec$,44,2))
  1940.       CALL CommInfo
  1941.       ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5))
  1942.       ZUpperCase = VAL(MID$(ZMsgRec$,46,2))
  1943.       ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4))                      ' KG022101
  1944.       ZBatchTransfer = (MID$(ZMsgRec$,52,1) = "1")
  1945.       ZWasGR = VAL(MID$(ZMsgRec$,53,2))
  1946.       HourLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2)
  1947.       MinLoggedOn$  = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2)
  1948.       SecLoggedOn$  = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2)
  1949.       ZTimeLoggedOn$ = HourLoggedOn$ + _
  1950.                         ":" + _
  1951.                         MinLoggedOn$ + _
  1952.                         ":" + _
  1953.                         SecLoggedOn$
  1954.       ZTransferFunction = VAL(MID$(ZMsgRec$,74,1))
  1955.       ZWasFT$ = MID$(ZMsgRec$,75,1)
  1956.       ZTimeCredits! = 60*CVI(MID$(ZMsgRec$,113,2))
  1957.       ZDooredTo$ = MID$(ZMsgRec$,79,8)
  1958.       CALL Trim (ZDooredTo$)
  1959.       IF ZExitToDoors AND ZDooredTo$ <> "" THEN _
  1960.          CALL OpenWork (2,ZDoorsDef$) : _
  1961.          IF ZErrCode = 0 THEN _
  1962.             CALL ReadParms (ZOutTxt$(),8,1) : _
  1963.             WHILE ZErrCode = 0 AND ZOutTxt$(1) <> ZDooredTo$ : _
  1964.                CALL ReadParms (ZOutTxt$(),8,1) : _
  1965.             WEND : _
  1966.             IF ZOutTxt$(1) = ZDooredTo$ THEN _
  1967.                ZDoorSkipsPswd = (ZOutTxt$(6) <> "Y") : _
  1968.                CALL BufFile (ZOutTxt$(7),WasX)
  1969.       ZErrCode = 0
  1970.       ZMenuIndex = VAL(MID$(ZMsgRec$,117,2))
  1971.       ZCurPUI$ = MID$(ZMsgRec$,93,8)
  1972.       CALL Remove (ZCurPUI$," ")
  1973.       IF ZCurPUI$ <> "" THEN _
  1974.          CALL BreakFileName (ZMainPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZTrue) : _
  1975.          ZCurPUI$ = ZOutTxt$ + ZCurPUI$ + ZWasZ$
  1976.       ZCustomPUI = (ZCurPUI$ <> "")
  1977.       ZLocalUser = (MID$(ZMsgRec$,101,2) = ZCarriageReturn$ + ZCarriageReturn$) ' KG030601
  1978.       ZLocalUserMode = VAL(MID$(ZMsgRec$,103,2))
  1979.       ZHomeConf$ = MID$(ZMsgRec$,105,8)
  1980.       ZAutoLogoffReq = (VAL(MID$(ZMsgRec$,115,1)) <> 0)
  1981.       CALL Trim (ZHomeConf$)
  1982.       IF ZRequiredRings > 0 AND _
  1983.          INSTR(ZModemInitCmd$,"S0=255") THEN _
  1984.          COLOR 7,0,0 _
  1985.       ELSE COLOR ZFG,ZBG,ZBorder
  1986.       IF ZLocalUserMode THEN _
  1987.          GOTO 44003
  1988.       CALL SetBaud
  1989.  
  1990. ------------------------[ KG030301 ]-------------------------
  1991.  
  1992. Problem:  prompt for file displayed on security violation confusing
  1993. people because it wants only the file prefix and refuses to accept
  1994. extension or drive/path without making that clear.
  1995.  
  1996. Solution:  Change CONFIG.BAS as follows:
  1997.  
  1998. 17280 CALL ASKRO("Name of file shown for security breaches (prefix ONLY)",24,HJ$) ' KG030301
  1999.       IF LEN(HJ$) > 8 OR INSTR(HJ$,".") > 0 THEN _
  2000.          GOTO 17280
  2001.       IF LEN(HJ$) < 1 THEN _
  2002.          SECVIO.HLP$ = NONE.PICKED$ : _
  2003.          RETURN
  2004.       CALL ALLCAPS (HJ$)
  2005.       SECVIO.HLP$ = HELP.PATH$ + HJ$ + "." + HELP.EXTENSION$
  2006.       RETURN
  2007.  
  2008. ------------------------[ KG030203 ]-------------------------
  2009.  
  2010. Problem:  If caller happened to have many msgs, display of them in
  2011. msg scan may fail to pause when screen is full.   Also, # of messages
  2012. listed on a line was inconsistent between new and old messages.
  2013.  
  2014. Solution:  Change RBBS-PC.BAS as follows:
  2015.  
  2016. 1900 GOSUB 5344
  2017.      IF ZPrivateDoor THEN _
  2018.         ActionFlag = ZTrue
  2019.      ZPrevBase$ = ZActiveMessageFile$
  2020.      ShowActive = ZFalse
  2021.      IF NOT ActionFlag THEN _
  2022.         CALL QuickTPut ("Checking messages in " + ConfFileName$,0) : _
  2023.         ShowActive = ZTrue _
  2024.      ELSE CALL QuickTPut ("Loading messages",0)
  2025.      ZUserIn$ = ""
  2026.      MsgCt = 0                                                       ' KG030203
  2027.      MsgsFromUser = ZFalse
  2028.      ActiveMessages = 0
  2029.      MailReported = ActionFlag
  2030.      FirstOld = ZTrue
  2031.      GOSUB 23000
  2032.      MsgRec = FirstMsgRecord
  2033.      MaxMsgs = VAL(MID$(ZMsgRec$,89,7))
  2034.      IF MaxMsgs > WasMM THEN _
  2035.         MaxMsgs = WasMM
  2036.      REDIM ZMsgPtr(MaxMsgs,2)
  2037.      NumDots = 0
  2038.  
  2039. 1925 ZWasA = VAL(MID$(ZMsgRec$,2,4))
  2040.      IF LogonMailNew THEN _
  2041.         IF ZWasA <= ZLastMsgRead THEN _
  2042.            GOTO 1935
  2043.      IF NOT ShowActive THEN _
  2044.         GOTO 1930
  2045.      MailReported = ZTrue
  2046.      FirstNew = (ZWasA > ZLastMsgRead)
  2047.      IF FirstNew THEN _
  2048.         MsgCt = 0 : _                                                ' KG030203
  2049.         CALL SkipLine (1) : _
  2050.         CALL QuickTPut1 ("NEW Mail for YOU (* = Private)") _
  2051.      ELSE IF FirstOld THEN _
  2052.              CALL SkipLine (1) : _
  2053.              CALL QuickTPut1 ("OLD Mail for YOU (* = Private)") : _
  2054.              FirstOld = ZFalse
  2055.      ShowActive = NOT FirstNew
  2056.  
  2057. 1930 CALL QuickTPut (LEFT$(ZMsgRec$,5),0)
  2058.      MsgCt = MsgCt + 1                                               ' KG030203
  2059.      IF MsgCt MOD 15 = 0 THEN _                                      ' KG030203
  2060.         CALL SkipLine (1) : _                                        ' KG030203
  2061.         CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)                     ' KG030203
  2062. 1960 WasK = 1
  2063.      FOR MsgCt = 1 TO MsgsFromUser                                   ' KG030203
  2064.         ZOutTxt$ = MID$(ZUserIn$,WasK,5)
  2065.         WasK = WasK + 5
  2066.         GOSUB 12978
  2067.         IF MsgCt MOD 15 = 0 THEN _                                   ' KG030203
  2068.            CALL SkipLine (1) : _                                     ' KG030203
  2069.            CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)                  ' KG030203
  2070.      NEXT
  2071.      ZUserIn$ = ""
  2072.      CALL SkipLine (1)
  2073.      CALL QuickTPut1 ("Please K)ill old/unneeded msgs")
  2074.  
  2075. ------------------------[ KG030202 ]-------------------------
  2076.  
  2077. Problem:  In personal download, when have color graphics on,
  2078. color of description spills over into prompt to download what.
  2079.  
  2080. Solution:  Change RBBSSUB4.BAS as follows:
  2081.  
  2082. 59303 CALL QuickTPut (ZEmphasizeOff$,0)                              ' KG030202
  2083.       ZOutTxt$ = "Download what: L)ist, * = new, or file(s)" + _
  2084.            ZPressEnterExpert$
  2085.       ZMacroMin = 99
  2086.       ZStackC = ZTrue
  2087.       CALL PopCmdStack
  2088.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  2089.          ZLastIndex = 0 : _
  2090.          EXIT SUB
  2091.  
  2092. ------------------------[ KG030201 ]-------------------------
  2093.  
  2094. Problem:  When remote called does Xoff (Control-S), display of
  2095. a message does not pause until after display of full screen or
  2096. end of message.
  2097.  
  2098. Solution:  Change RBBS-PC.BAS as follows:
  2099.  
  2100. 9085    IF LEFT$(ZOutTxt$,1) = ZStartOfHeader$ OR _
  2101.            LEFT$(ZOutTxt$,LEN(ZScreenOutMsg$)) = ZScreenOutMsg$ THEN _
  2102.            GOTO 9050
  2103.         ZOutTxt$(ZLinesInMsg) = ZOutTxt$
  2104.         IF Bracketed THEN _
  2105.            Bracketed = ZFalse : _
  2106.            HiLitedLine = ZLinesInMsg
  2107.         ZLinesInMsg = ZLinesInMsg + 1
  2108.         IF ZLinesInMsg > MsgDimXtra THEN _
  2109.            ZLinesInMsg = ZLinesInMsg - 1 : _
  2110.            CALL SkipLine (1) : _
  2111.            CALL QuickTPut1 ("Message too long.  Truncated to " + STR$(MsgDimXtra) + " lines!") : _
  2112.            ZOutTxt$ = "" : _
  2113.            RETURN
  2114.         IF NOT DontPrint THEN _                                      ' KG030201
  2115.            GOSUB 12979 : _                                           ' KG030201
  2116.            IF ZRet THEN _
  2117.               ZOutTxt$ = "" : _
  2118.               RETURN _                                               ' KG030201
  2119.            ELSE CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse) : _   ' KG030201
  2120.                 IF ZNo THEN _                                        ' KG030201
  2121.                    DontPrint = ZTrue                                 ' KG030201
  2122.         GOTO 9050
  2123.  
  2124. ------------------------[ KG030101 ]-------------------------
  2125.  
  2126. Problem:  When having mail waiting in current confernce, and
  2127. read all the new mail, and then do a V)iew conference, the
  2128. mail waiting flag is still shown as on in the current conference.
  2129.  
  2130. Solution:  Change RBBSSUB4.BAS as follows:
  2131.  
  2132. 59852 IF EOF(2) OR NOT ZOK THEN _
  2133.          GOTO 59854
  2134.          CALL ReadAny
  2135.          ZActiveUserFile$ = ZOutTxt$
  2136.          CALL ReadAny
  2137.          IF ZErrCode > 0 THEN _
  2138.             GOTO 59854
  2139.          ZActiveMessageFile$ = ZOutTxt$
  2140.          CALL FindFile (ZActiveUserFile$,ZOK)
  2141.          IF NOT ZOK THEN _
  2142.             GOTO 59854
  2143.          CALL OpenUser (HighestUserRecord)
  2144.          FIELD 5, 128 AS ZUserRecord$
  2145.          CALL FindFile (ZActiveMessageFile$,ZOK)
  2146.          IF NOT ZOK THEN _
  2147.             GOTO 59854
  2148.          CALL FindUser (ZOrigUserName$,"",ZStartHash,ZLenHash,_
  2149.                         0,0,HighestUserRecord,_
  2150.                         Found,HoldUserFileIndex,ZWasSL)
  2151.          IF NOT Found THEN _
  2152.             GOTO 59852
  2153.          CALL OpenMsg
  2154.          FIELD 1, 128 AS ZMsgRec$
  2155.          GET 1,1
  2156.          AnyMail = ZTrue
  2157.          WasX = CVI(MID$(ZUserRecord$,57,2))
  2158.          WasX = (WasX AND 512) > 0
  2159.          CALL BreakFileName (ZActiveUserFile$,WasX$,CurPre$,CurExt$,ZFalse)
  2160.          InCur = (CurPre$ = NowInPre$ AND CurExt$ = NowInExt$)
  2161.          IF InCur THEN _
  2162.             WasX = ZMailWaiting : _                                  ' KG030101
  2163.             ZWasA = ZLastMsgRead _
  2164.          ELSE ZWasA = CVI(MID$(ZUserRecord$,51,2))
  2165.                .
  2166.                .
  2167.                .
  2168.  
  2169. ------------------------[ KG022702 ]-------------------------
  2170.  
  2171. Problem:  When using LIT version with message import off
  2172. (MIMPORT OFF), get untrapped errors when message margin of
  2173. user set lower than that used by the message.
  2174.  
  2175. Solution:  Use new MIMPORT.LIT.
  2176.  
  2177. ------------------------[ KG022701 ]-------------------------
  2178.  
  2179. Problem:  Command stacking not always working right in msg
  2180. read.  E.g. "j xxx r test" will look for messages with text "r".
  2181.  
  2182. Solution:  Change RBBS-PC.BAS as follows:
  2183.  
  2184. 4330 QuickScanMsgs = ZFalse
  2185.      ReadMsgs = ZTrue
  2186.      HiLiteRec = -1
  2187.      ScanMsgs = ZFalse
  2188.      MsgStart = 6
  2189.      MsgEnd = 100
  2190.      IF ZLocalUserMode OR NOT ZLocalUser THEN _
  2191.         IF ReadMsgIn$ <> ZActiveMessageFile$ THEN _
  2192.            ReadMsgIn$ = ZActiveMessageFile$ : _
  2193.            CALL UpdtCalr ("Read Messages in " + ReadMsgIn$,1)
  2194.      GOSUB 1300
  2195.      GOTO 4350                                                       ' KG022701
  2196.  
  2197. 4360 ZWasLG$(11) = ZWasZ$
  2198.      NumMsgsSelected = ZLastIndex
  2199.      MsgIndex = ZAnsIndex                                            ' KG022701
  2200.      ZLastIndex = 0
  2201.      ToRequested = ZFalse
  2202.      FromRequested = ZFalse
  2203.      IF ZPageLength < 1 THEN _
  2204.         ZNonStop = ZTrue
  2205. 4370 MsgIndex = MsgIndex  + 1                                        ' KG022701
  2206. 4371 IF MsgIndex <= NumMsgsSelected THEN _                           ' KG022701
  2207.         IF LEN(ZUserIn$(ZAnsIndex)) = 1 AND _
  2208.            INSTR("Cc",ZUserIn$(MsgIndex)) > 0 THEN _                 ' KG022701
  2209.            GOTO 4370 _
  2210.         ELSE _
  2211.         CALL CheckInt (ZUserIn$(MsgIndex)) : _                       ' KG022701
  2212.         IF ZErrCode <> 0 THEN _
  2213.            ZWasEL = 4371 : _
  2214.            GOTO 13000 _
  2215.         ELSE CurMsg = ZTestedIntValue : _
  2216.              ZAnsIndex = MsgIndex : _                                ' KG022701
  2217.              GOTO 4415
  2218.  
  2219. 4400 GOSUB 12932                                                     ' KG022701
  2220.      IF ZWasQ = 0 THEN _
  2221.         RETURN
  2222. 4402 IF LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _                          ' KG022701
  2223.         IF INSTR("Qq",ZUserIn$) THEN _
  2224.            RETURN _
  2225.         ELSE IF INSTR("Hh",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _      ' KG022701
  2226.                 ZFileName$ = ZHelpPath$ + "MR" + ZHelpExtension$ : _
  2227.                 GOSUB 1790 : _
  2228.                 GOTO 4390
  2229.      MsgIndex = 0                                                    ' KG022701
  2230.      NumMsgsSelected = ZWasQ
  2231.      GOTO 4370
  2232.  
  2233. 4416 IF INSTR("Mm",ZUserIn$(ZAnsIndex)) THEN _
  2234.         AddressedToUser = ZTrue : _
  2235.         GOTO 4370
  2236.      ZWasA = INSTR("FfTt",ZUserIn$(ZAnsIndex))
  2237.      IF ZWasA > 0 THEN _
  2238.         ToRequested = (ZWasA > 2) : _
  2239.         FromRequested = (ZWasA < 3) : _
  2240.         GOTO 4370
  2241.      IF CurMsg = 0 THEN _
  2242.         IF SearchHeader$ <> "" THEN _
  2243.            GOTO 4370 _
  2244.         ELSE SearchString$ = ZUserIn$(ZAnsIndex) : _                 ' KG022701
  2245.              CALL AllCaps (SearchString$) : _
  2246.              CALL Remove (SearchString$,CHR$(34) + CHR$(39)) : _
  2247.              SearchHeader$ = SearchString$ : _
  2248.              SubInHeader$ = SearchHeader$ : _
  2249.              GOTO 4370
  2250.      CALL SkipLine (1)
  2251.  
  2252. ------------------------[ RH022501 ]-------------------------
  2253.  
  2254. Problem:  in autodownload, the name displayed to the user is wrong
  2255. when default extension is added by rbbs.
  2256.  
  2257. Change RBBS-PC.BAS as follows:
  2258.  
  2259. 20247 ZWasDF = 0
  2260.       CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse)
  2261.       IF ZAutoDownInProgress THEN _
  2262.          ZUserIn$(ZAnsIndex) = WasX$ + "." + Extension$ : _          ' RH022501
  2263.          ZOutTxt$ = "Transferring -- " + _
  2264.               ZUserIn$(ZAnsIndex) : _                                ' RH022501
  2265.          GOSUB 21640 : _
  2266.          IF ZFileSysParm > 1 THEN _
  2267.             RETURN
  2268.       IF INSTR("...WRK.FW .ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.LZH.","."+Extension$+".") > 2 OR _
  2269.          MID$(Extension$,2,1) = "Q" OR _
  2270.          (ZRequireNonASCII AND Extension$ = "BAS") THEN _
  2271.             ZWasDF = ZTrue
  2272.  
  2273. ------------------------[ KG022301 ]-------------------------
  2274.  
  2275. Problem:  no way to trigger macro processing for on-line files.
  2276. Either not found or macro.  Now can have both.
  2277.  
  2278. Solution:  Add the following variable to RBBS-VAR.BAS:  ZFileLocations$
  2279.  
  2280. Change RBBSSUB4.BAS as follows:
  2281.  
  2282. (line 58700)
  2283.  
  2284.       SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC ' KG022204
  2285.       ZOK = ZFalse
  2286.       ZDotFlag = ZFalse
  2287.       IF MarkingTime THEN _
  2288.          CALL QuickTPut ("Searching for "+FilName$,0)
  2289.       IF ZMenuIndex = 6 THEN _
  2290.          GOTO 58705
  2291.       NumSearch = 1
  2292.       WasX = 0
  2293.       WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _
  2294.          SDirAra$(NumSearch) <> ""
  2295.          IF MarkingTime THEN _
  2296.             CALL MarkTime (WasX)
  2297.          WasX$ = SDirAra$(NumSearch) + _
  2298.               FilName$
  2299.          CALL FindFile (WasX$,ZOK)
  2300.          NumSearch = NumSearch + 1
  2301.       WEND
  2302.       IF ZOK OR NOT ZFastFileSearch THEN _                           ' KG022301
  2303.          GOTO 58710                                                  ' KG022301
  2304.       CALL OpenRSeq (ZFastFileList$,HighRec,WasX,18)                 ' KG022301
  2305.       IF ZErrCode <> 0 THEN _                                        ' KG022301
  2306.          GOTO 58710                                                  ' KG022301
  2307.       CALL TrimTrail (FilName$,".")
  2308.       CALL BinSearch (FilName$,1,12,18,HighRec,RecFoundAt, RecFound$)
  2309.       ZOK = (RecFoundAt > 0)
  2310.       IF NOT ZOK THEN _                                              ' KG022301
  2311.          GOTO 58710                                                  ' KG022301
  2312.       ZOK = ZFalse
  2313.       CALL CheckInt (MID$(RecFound$,13,4))
  2314.       IF ZTestedIntValue < 1 THEN _                                  ' KG022301
  2315.          GOTO 58710                                                  ' KG022301
  2316.       CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66)
  2317.       IF ZErrCode <> 0 OR ZTestedIntValue > HighRec THEN _           ' KG022301
  2318.          GOTO 58710                                                  ' KG022301
  2319.       FIELD 2, 66 AS LocatorRec$
  2320.       GET 2, ZTestedIntValue
  2321.       WasX$ = LEFT$(LocatorRec$,63)
  2322.       CALL Trim (WasX$)
  2323.       IF LEFT$(WasX$,2) = "M!" THEN _
  2324.          ZOK = ZFalse : _                                            ' KG022301
  2325.          ZGSRAra$(1) = PassToMacro$ : _                              ' KG022204
  2326.          WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _                      ' KG022204
  2327.          CALL Trim (WasX$) : _                                       ' KG022204
  2328.          ZFileLocation$ = "" : _                                     ' KG022301
  2329.          CALL MacroExe (WasX$) : _                                   ' KG022204
  2330.          IF ZFileLocation$ = "" THEN _                               ' KG022301
  2331.             ZOK = ZFalse : _                                         ' KG022204
  2332.             GOTO 58711 _                                             ' KG022301
  2333.          ELSE WasX$ = ZFileLocation$                                 ' KG022301
  2334.       WasX$ = WasX$ + FilName$                                       ' KG022301
  2335.       CALL FindFile (WasX$,ZOK)                                      ' KG022301
  2336.       GOTO 58710                                                     ' KG022301
  2337.  
  2338. Change RBBSSUB5.BAS as follows:
  2339.  
  2340. 63336 GOSUB 63395
  2341.       IF NOT ZMacroActive THEN _
  2342.          ZMacroEcho = ZTrue : _
  2343.          EXIT SUB
  2344.       IF LEN(ZOutTxt$) < 3 THEN _
  2345.          GOTO 63398
  2346.       WasX$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3)
  2347.       IF CompareVar > 0 THEN _
  2348.          IF NOT CaseExecute THEN _
  2349.             IF LEFT$(ZOutTxt$,3) = ZSmartTextCode$+"==" THEN _
  2350.                GOTO 63370 _
  2351.             ELSE IF LEFT$(ZOutTxt$,7) = ZSmartTextCode$ + "END ON" THEN _
  2352.                     CompareVar = 0 : _
  2353.                     GOTO 63336 _
  2354.                   ELSE GOTO 63336
  2355.       IF LEFT$(ZOutTxt$,1) <> ZSmartTextCode$ THEN _
  2356.          GOTO 63398
  2357.       CALL CheckInt (MID$(ZOutTxt$,2))
  2358.       IF ZErrCode > 0 THEN _
  2359.          GOTO 63398
  2360.       IF ZTestedIntValue > 0 AND ZTestedIntValue <= ZMaxWorkVar THEN _
  2361.          ZOutTxt$ = WasX$ : _  ' Macro command ask
  2362.          ZForceKeyboard = ZTrue : _
  2363.          ZMacroSave = ZTestedIntValue : _
  2364.          ZLinesPrinted = 1 : _
  2365.          ZNonStop = (ZPageLength < 1) : _
  2366.          EXIT SUB
  2367.       ON (1+INSTR("*0*1*B*FWT>>STON==M!M@EYEN/*TK<<:=LVNVCVLO",MID$(ZOutTxt$,2,2)))\2 GOTO _ ' KG022301
  2368.          63345, _  ' Display with no Carriage Return
  2369.          63347, _  ' Display with Carriage Return
  2370.          63340, _  ' Display Block
  2371.          63348, _  ' Display File
  2372.          63343, _  ' Wait # of seconds
  2373.          63350, _  ' Append to file
  2374.          63355, _  ' Stack
  2375.          63360, _  ' Case
  2376.          63370, _  ' Case Comparison
  2377.          63375, _  ' Macro execute
  2378.          63380, _  ' Macro Abort
  2379.          63383, _  ' Macro Echo on
  2380.          63385, _  ' Macro Echo off
  2381.          63336, _  ' Macro Comment
  2382.          63387, _  ' Turbo Key allowed
  2383.          63390, _  ' Form read
  2384.          63362, _  ' Assign value to work var
  2385.          63363, _  ' LV list verify
  2386.          63364, _  ' NV number verify
  2387.          63364, _  ' CV character verify                             ' KG022301
  2388.          63367     ' LO assign file location                         ' KG022301
  2389.       GOTO 63398
  2390.  
  2391. 63367 CALL TRIM (WasX$)                                              ' KG022301
  2392.       ZFileLocation$ = WasX$                                         ' KG022301
  2393.       GOTO 63336                                                     ' KG022301
  2394.  
  2395. ------------------------[ KG022205 ]-------------------------
  2396.  
  2397. Problem:  In arc view, if file invokes macro processing, the file
  2398. name was no longer correct when came back and reported file not
  2399. found.
  2400.  
  2401. 20143 ZWasZ$ = ZUserIn$(ZAnsIndex)
  2402.       WasZ$ = ZWasZ$                                                 ' KG022205
  2403.       CALL AllCaps (ZWasZ$)
  2404.       CALL BreakFileName (ZWasZ$,Drive$,Prefix$,Ext$,ZFalse)
  2405.       IF Ext$ = "" THEN _
  2406.          Ext$ = ZDefaultExtension$ : _
  2407.          ZWasZ$ = ZWasZ$ + "." + ZDefaultExtension$
  2408.       ZFileNameHold$ = ZWasZ$
  2409.       ZFileName$ = ZWasZ$
  2410.       CALL BadFile (Prefix$,BadFileNameIndex)
  2411.       ON BadFileNameIndex GOTO 20144,20146,20147
  2412.  
  2413. 20146 ZWasZ$ = WasZ$ + _                                             ' KG022205
  2414.            " not found!"
  2415.       CALL UpdtCalr (ZWasZ$,2)
  2416.       ZOutTxt$ = ZWasZ$ + _
  2417.            " Type correct filename" + ZPressEnterExpert$
  2418.       ZSubParm = 1
  2419.       CALL TGet
  2420.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  2421.          RETURN
  2422.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  2423.       GOTO 20143
  2424.  
  2425. ------------------------[ KG022204 ]-------------------------
  2426.  
  2427. Problem:  SysOps off-line files might want to process differently
  2428. when get an upload, view, or download rather than execute macro
  2429. only on download.
  2430.  
  2431. Solution:  pass D, V, or U to macro in first work variable so
  2432. can alter processing.
  2433.  
  2434. Change RBBSSUB2.BAS as follows:
  2435.  
  2436. 20145 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,"V") ' KG022204
  2437.       IF ZOK THEN _
  2438.          GOTO 20148
  2439.  
  2440. Change RBBSSUB4.BAS as follows:
  2441.  
  2442. (line 58700)
  2443.  
  2444.       SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC ' KG022204
  2445.       ZOK = ZFalse
  2446.       ZDotFlag = ZFalse
  2447.       IF MarkingTime THEN _
  2448.          CALL QuickTPut ("Searching for "+FilName$,0)
  2449.       IF ZMenuIndex = 6 THEN _
  2450.          GOTO 58705
  2451.       NumSearch = 1
  2452.       WasX = 0
  2453.       WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _
  2454.          SDirAra$(NumSearch) <> ""
  2455.          IF MarkingTime THEN _
  2456.             CALL MarkTime (WasX)
  2457.          WasX$ = SDirAra$(NumSearch) + _
  2458.               FilName$
  2459.          CALL FindFile (WasX$,ZOK)
  2460.          NumSearch = NumSearch + 1
  2461.       WEND
  2462.       IF ZOK OR NOT ZFastFileSearch THEN _                           ' KG022301
  2463.          GOTO 58710                                                  ' KG022301
  2464.       CALL OpenRSeq (ZFastFileList$,HighRec,WasX,18)                 ' KG022301
  2465.       IF ZErrCode <> 0 THEN _                                        ' KG022301
  2466.          GOTO 58710                                                  ' KG022301
  2467.       CALL TrimTrail (FilName$,".")
  2468.       CALL BinSearch (FilName$,1,12,18,HighRec,RecFoundAt, RecFound$)
  2469.       ZOK = (RecFoundAt > 0)
  2470.       IF NOT ZOK THEN _                                              ' KG022301
  2471.          GOTO 58710                                                  ' KG022301
  2472.       ZOK = ZFalse
  2473.       CALL CheckInt (MID$(RecFound$,13,4))
  2474.       IF ZTestedIntValue < 1 THEN _                                  ' KG022301
  2475.          GOTO 58710                                                  ' KG022301
  2476.       CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66)
  2477.       IF ZErrCode <> 0 OR ZTestedIntValue > HighRec THEN _           ' KG022301
  2478.          GOTO 58710                                                  ' KG022301
  2479.       FIELD 2, 66 AS LocatorRec$
  2480.       GET 2, ZTestedIntValue
  2481.       WasX$ = LEFT$(LocatorRec$,63)
  2482.       CALL Trim (WasX$)
  2483.       IF LEFT$(WasX$,2) = "M!" THEN _
  2484.          ZOK = ZFalse : _                                            ' KG022301
  2485.          ZGSRAra$(1) = PassToMacro$ : _                              ' KG022204
  2486.          WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _                      ' KG022204
  2487.          CALL Trim (WasX$) : _                                       ' KG022204
  2488.          ZFileLocation$ = "" : _                                     ' KG022301
  2489.          CALL MacroExe (WasX$) : _                                   ' KG022204
  2490.          IF ZFileLocation$ = "" THEN _                               ' KG022301
  2491.             ZOK = ZFalse : _                                         ' KG022204
  2492.             GOTO 58711 _                                             ' KG022301
  2493.          ELSE WasX$ = ZFileLocation$                                 ' KG022301
  2494.       WasX$ = WasX$ + FilName$                                       ' KG022301
  2495.       CALL FindFile (WasX$,ZOK)                                      ' KG022301
  2496.       GOTO 58710                                                     ' KG022301
  2497.  
  2498. 59336 ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1)
  2499.       CALL FindFile (ZPersonalDrvPath$ + ZUserIn$(WasI),ZOK)
  2500.       IF ZOK THEN _
  2501.          ZUserIn$(WasI) = ZPersonalDrvPath$ + ZUserIn$(WasI) _
  2502.       ELSE CALL RotorsDir (ZUserIn$(WasI),ZSubDir$(),ZSubDirCount + _
  2503.                       ((ZUserSecLevel < ZMinSecToView) OR _
  2504.                        NOT ZCanDnldFromUp),ZTrue,"D") : _            ' KG022204
  2505.            GOSUB 59338
  2506.       RETURN
  2507.  
  2508. Change RBBSSUB5.BAS as follows:
  2509.  
  2510. 20222 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _
  2511.                       ((ZUserSecLevel < ZMinSecToView) OR _
  2512.                        NOT ZCanDnldFromUp),MarkingTime,"D")          ' KG022204
  2513.  
  2514. 20440 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,"U")  ' KG022204
  2515.  
  2516. ------------------------[ KG022203 ]-------------------------
  2517.  
  2518. Problem:  When locally viewing the distributed color graphics
  2519. door menu (MENU05C), the colors will bleed over to the right
  2520. side of the boundary of the menu.   The display looks fine
  2521. remotely.
  2522.  
  2523. Solution:  Replace MENU05C with the new one distributed in
  2524. the latest merge file.
  2525.  
  2526. ------------------------[ KG022202 ]-------------------------
  2527.  
  2528. Problem:  When installing RBBS-PC for the first time and use
  2529. the distributed def file RBBS-PC.DEF, the up and downloads do
  2530. not work properly unless RBBS-PC is installed in a subdirectory
  2531. called RBBS.
  2532.  
  2533. Solution:  In CONFIG, change the subdirectory for uploads from
  2534. "C:\RBBS\FILES" to "C:FILES", and change the two subdirectories
  2535. available for downloading from "C:\RBBS\FILES" to "C:FILES" and
  2536. from "C:\RBBS\BULLETINS" to "C:BULLETINS".
  2537.    These are changed in parameter 208.
  2538.  
  2539. ------------------------[ KG022201 ]-------------------------
  2540.  
  2541. Problem:  When doing a directory listing and V)iew archieve,
  2542. J)ump is no longer an option after listing resumes.
  2543.  
  2544. Solution:  Change RBBSSUB3.BAS as follows:
  2545.  
  2546. 58180 ZTurboKey = -ZTurboKeyUser
  2547.       ZStackC = ZTrue
  2548.       CALL AskMore (ExtraPrompt$, ZTrue, ZFalse,AbortIndex,ZFalse)
  2549.       IF ZSubParm = -1 THEN _
  2550.          GOTO 58183
  2551.       IF ZNo THEN _
  2552.          GOTO 58183
  2553.       CALL AllCaps (ZUserIn$(1))
  2554.       IF ZUserIn$(1) = "V" THEN _
  2555.          ZLastIndex = ZWasQ : _
  2556.          ZAnsIndex = 1 : _
  2557.          CALL GetArc : _
  2558.          ZJumpSupported = ZTrue : _                                  ' KG022201
  2559.          ZWasA = UpldIndex : _
  2560.          GOSUB 58185 : _
  2561.          UpldIndex = ZWasA : _
  2562.          GOTO 58180
  2563.       IF ZUserIn$(1) = "D" THEN _
  2564.          ZOutTxt$ = "Download what file(s)" : _
  2565.          ZStackC = ZTrue : _
  2566.          CALL PopCmdStack : _
  2567.          IF ZWasQ = 0 THEN _
  2568.             GOTO 58180
  2569.       IF ZJumpSearching THEN _
  2570.          PrevSearch$ = SearchFor$ : _
  2571.          SearchFor$ = ZJumpTo$ _
  2572.       ELSE SearchFor$ = SearchString$ : _
  2573.            IF LEN(ZUserIn$(1)) > 1 THEN _
  2574.            IF NOT ZYes AND CanDnld THEN _
  2575.               CALL SkipLine (1) : _
  2576.               DnldFlag = UpldIndex : _
  2577.               ZLastIndex = ZWasQ : _
  2578.               ZAnsIndex = 1 : _
  2579.               EXIT SUB
  2580.       IF ZNonStop THEN IF UpldIndex > 999 THEN _
  2581.          IF (SearchDate$ = "" OR NOT ZExpertUser) THEN _
  2582.             ZOutTxt$ = STR$(UpldIndex) + _
  2583.                " lines left to search.  Really go non-stop? (Y/[N])" : _
  2584.             ZNoAdvance = ZTrue : _
  2585.             ZTurboKey = -ZTurboKeyUser : _
  2586.             ZSubParm = 1 : _
  2587.             CALL TGet : _
  2588.             CALL WipeLine (79) : _
  2589.             ZNonStop = ZYes
  2590.       FMSCheckPoint = 0
  2591.       GOTO 58168
  2592.  
  2593. ------------------------[ KG022103 ]-------------------------
  2594.  
  2595. Problem:  LIT merges not assigned security right for new
  2596. users.
  2597.  
  2598. Solution:  Replace the file INDEF.LIT by the new one in the lastest
  2599. fix file merges.
  2600.  
  2601. ------------------------[ KG022102 ]-------------------------
  2602.  
  2603. Problem:  LIT merge generates a compile error when SURVEY 
  2604. metavariable is set to OFF.
  2605.  
  2606. Solution:  Replace the file SURVEY.LIT by the new one in
  2607. the latest fix file merges.
  2608.  
  2609. ------------------------[ KG022101 ]-------------------------
  2610.  
  2611. Problem:  When door to external protocols, not correctly tracking
  2612. bytes downloaded.   Caused by misspelled variable names.
  2613.  
  2614. Change RBBSSUB3.BAS as follows:
  2615.  
  2616. 43070 ZActiveMessageFile$ = ZOrigMsgFile$
  2617.       ZSubParm = 3
  2618.       CALL FileLock
  2619.       CALL OpenMsg
  2620.       FIELD 1, 128 AS ZMsgRec$
  2621.       GET 1,ZNodeRecIndex
  2622.       IF ZGlobalSysop THEN _
  2623.          MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25)
  2624.       MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors)
  2625.       MID$(ZMsgRec$,42,2) = STR$(ZEightBit)
  2626.       MID$(ZMsgRec$,44,2) = STR$(ZBPS)
  2627.       MID$(ZMsgRec$,46,2) = STR$(ZUpperCase)
  2628.       MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2) ' KG022101
  2629.       MID$(ZMsgRec$,53,2) = STR$(ZWasGR)
  2630.       MID$(ZMsgRec$,55,2) = STR$(ZSysop)
  2631.       MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZTimeLoggedOn$,2))) + _
  2632.                                    CHR$(VAL(MID$(ZTimeLoggedOn$,4,2))) + _
  2633.                                    CHR$(VAL(MID$(ZTimeLoggedOn$,7,2)))
  2634.       MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor)
  2635.       MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1)
  2636.       MID$(ZMsgRec$,75,1) = ZWasFT$
  2637.       MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60)
  2638.       MID$(ZMsgRec$,79,8) = LEFT$(ZDooredTo$+"        ",8)
  2639.       MID$(ZMsgRec$,91,2) = STR$(ZReliableMode)
  2640.       CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse)
  2641.       MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$))
  2642.       MID$(ZMsgRec$,101,2) = STR$(ZLocalUser)
  2643.       MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode)
  2644.       ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + " "," ") - 1)
  2645.       MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$))
  2646.       MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1)
  2647.       MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex)
  2648.       MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2)
  2649.       MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2)
  2650.       MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2)
  2651.       MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2)
  2652.       MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2)
  2653. ' ***   Save additional parameters for door restoral
  2654.       CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  2655.       CALL PrintWorkA (STR$(ZLimitMinsPerSession))
  2656.       CLOSE 2
  2657.  
  2658. (line 44000)
  2659.  
  2660.       SUB ReadProf STATIC
  2661.       FIELD 1, 128 AS ZMsgRec$
  2662.       GET 1,ZNodeRecIndex
  2663.       ZReliableMode = VAL(MID$(ZMsgRec$,91,2))
  2664.       MID$(ZMsgRec$,40,2) = "00"
  2665.       ZEightBit = VAL(MID$(ZMsgRec$,42,2))
  2666.       ZBPS = VAL(MID$(ZMsgRec$,44,2))
  2667.       CALL CommInfo
  2668.       ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5))
  2669.       ZUpperCase = VAL(MID$(ZMsgRec$,46,2))
  2670.       ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4))                      ' KG022101
  2671.       ZBatchTransfer = (MID$(ZMsgRec$,52,1) = "1")
  2672.       ZWasGR = VAL(MID$(ZMsgRec$,53,2))
  2673.       HourLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2)
  2674.       MinLoggedOn$  = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2)
  2675.       SecLoggedOn$  = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2)
  2676.       ZTimeLoggedOn$ = HourLoggedOn$ + _
  2677.                         ":" + _
  2678.                         MinLoggedOn$ + _
  2679.                         ":" + _
  2680.                         SecLoggedOn$
  2681.       ZTransferFunction = VAL(MID$(ZMsgRec$,74,1))
  2682.       ZWasFT$ = MID$(ZMsgRec$,75,1)
  2683.       ZTimeCredits! = 60*CVI(MID$(ZMsgRec$,113,2))
  2684.       ZDooredTo$ = MID$(ZMsgRec$,79,8)
  2685.       CALL Trim (ZDooredTo$)
  2686.       IF ZExitToDoors AND ZDooredTo$ <> "" THEN _
  2687.          CALL OpenWork (2,ZDoorsDef$) : _
  2688.          IF ZErrCode = 0 THEN _
  2689.             CALL ReadParms (ZOutTxt$(),8,1) : _
  2690.             WHILE ZErrCode = 0 AND ZOutTxt$(1) <> ZDooredTo$ : _
  2691.                CALL ReadParms (ZOutTxt$(),8,1) : _
  2692.             WEND : _
  2693.             IF ZOutTxt$(1) = ZDooredTo$ THEN _
  2694.                ZDoorSkipsPswd = (ZOutTxt$(6) <> "Y") : _
  2695.                CALL BufFile (ZOutTxt$(7),WasX)
  2696.       ZErrCode = 0
  2697.       ZMenuIndex = VAL(MID$(ZMsgRec$,117,2))
  2698.       ZCurPUI$ = MID$(ZMsgRec$,93,8)
  2699.       CALL Remove (ZCurPUI$," ")
  2700.       IF ZCurPUI$ <> "" THEN _
  2701.          CALL BreakFileName (ZMainPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZTrue) : _
  2702.          ZCurPUI$ = ZOutTxt$ + ZCurPUI$ + ZWasZ$
  2703.       ZCustomPUI = (ZCurPUI$ <> "")
  2704.       ZLocalUser = VAL(MID$(ZMsgRec$,101,2))
  2705.       ZLocalUserMode = VAL(MID$(ZMsgRec$,103,2))
  2706.       ZHomeConf$ = MID$(ZMsgRec$,105,8)
  2707.       ZAutoLogoffReq = (VAL(MID$(ZMsgRec$,115,1)) <> 0)
  2708.       CALL Trim (ZHomeConf$)
  2709.       IF ZRequiredRings > 0 AND _
  2710.          INSTR(ZModemInitCmd$,"S0=255") THEN _
  2711.          COLOR 7,0,0 _
  2712.       ELSE COLOR ZFG,ZBG,ZBorder
  2713.       IF ZLocalUserMode THEN _
  2714.          GOTO 44003
  2715.       CALL SetBaud
  2716.  
  2717. ------------------------[ KG022001 ]-------------------------
  2718.  
  2719. Problem:  When using autodownload and do not specify an extension,
  2720. and default is appended, file name transmitted has no extension.
  2721.  
  2722. Solution:  Change RBBSSUB5.BAS as follows:
  2723.  
  2724. 20247 ZWasDF = 0
  2725.       CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse)
  2726.       IF ZAutoDownInProgress THEN _
  2727.          ZOutTxt$ = "Transferring -- " + _
  2728.               WasX$ + "." + Extension$ : _                           ' KG022001
  2729.          GOSUB 21640 : _
  2730.          IF ZFileSysParm > 1 THEN _
  2731.             RETURN
  2732.       IF INSTR("...WRK.FW .ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.LZH.","."+Extension$+".") > 2 OR _
  2733.          MID$(Extension$,2,1) = "Q" OR _
  2734.          (ZRequireNonASCII AND Extension$ = "BAS") THEN _
  2735.             ZWasDF = ZTrue
  2736.  
  2737.  
  2738. ------------------------[ KG021803 ]-------------------------
  2739.  
  2740. Problem:  In macro initialization of a variable, value includes the
  2741. variable number if a space separates the command and number.   Should
  2742. not matter whether say "{:=1" or "{:= 1", for example.
  2743.  
  2744. Solution:  Change RBBSSUB5.BAS as follows:
  2745.  
  2746. 63362 CALL Trim (WasX$)                                              ' KG021803
  2747.       CALL CheckInt (WasX$)
  2748.       WasX = INSTR(WasX$," ")
  2749.       IF WasX > 0 AND ZTestedIntValue > 0 AND ZTestedIntValue <= ZMaxWorkVar THEN _
  2750.          ZGSRAra$(ZTestedIntValue) = RIGHT$(WasX$,LEN(WasX$)-WasX)   ' KG021803
  2751.       GOTO 63336
  2752.  
  2753. ------------------------[ KG021802 ]-------------------------
  2754.  
  2755. Problem:  When implement macros in the Fast File System, the macros
  2756. are executed on more than download requests - including uploads and
  2757. file v)iew archive.
  2758.  
  2759. Change RBBSSUB2.BAS as follows:
  2760.  
  2761. 20145 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,ZFalse) ' KG021802
  2762.       IF ZOK THEN _
  2763.          GOTO 20148
  2764.  
  2765. Change RBBSSUB4.BAS as follows:
  2766.  
  2767. (line 58700)
  2768.  
  2769.       SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,DoMacro) STATIC ' KG021802
  2770.       ZOK = ZFalse
  2771.       ZDotFlag = ZFalse
  2772.       IF MarkingTime THEN _
  2773.          CALL QuickTPut ("Searching for "+FilName$,0)
  2774.       IF ZMenuIndex = 6 THEN _
  2775.          GOTO 58705
  2776.       NumSearch = 1
  2777.       WasX = 0
  2778.       WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _
  2779.          SDirAra$(NumSearch) <> ""
  2780.          IF MarkingTime THEN _
  2781.             CALL MarkTime (WasX)
  2782.          WasX$ = SDirAra$(NumSearch) + _
  2783.               FilName$
  2784.          CALL FindFile (WasX$,ZOK)
  2785.          NumSearch = NumSearch + 1
  2786.       WEND
  2787.       IF ZFastFileSearch AND NOT ZOK THEN _
  2788.          CALL OpenRSeq (ZFastFileList$,HighRec,WasX,18) : _
  2789.          IF ZErrCode = 0 THEN _
  2790.             CALL TrimTrail (FilName$,".") : _
  2791.             CALL BinSearch (FilName$,1,12,18,HighRec,RecFoundAt, RecFound$) : _
  2792.             ZOK = (RecFoundAt > 0) : _
  2793.             IF ZOK THEN _
  2794.                ZOK = ZFalse : _
  2795.                CALL CheckInt (MID$(RecFound$,13,4)) : _
  2796.                IF ZTestedIntValue > 0 THEN _
  2797.                   CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66) : _
  2798.                   IF ZErrCode = 0 AND ZTestedIntValue <= HighRec THEN _
  2799.                      FIELD 2, 66 AS LocatorRec$ : _
  2800.                      GET 2, ZTestedIntValue : _
  2801.                      WasX$ = LEFT$(LocatorRec$,63) : _
  2802.                      CALL Trim (WasX$) : _
  2803.                      IF LEFT$(WasX$,2) = "M!" THEN _
  2804.                         ZOK = ZFalse : _                             ' KG021802
  2805.                         ZDotFlag = ZTrue : _                         ' KG021802
  2806.                         IF DoMacro THEN _                            ' KG021802
  2807.                            WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _
  2808.                            CALL Trim (WasX$) : _
  2809.                            CALL MacroExe (WasX$) : _
  2810.                            ZOK = ZFalse : _                          ' KG021802
  2811.                            GOTO 58711 _                              ' KG021802
  2812.                         ELSE GOTO 58711 _                            ' KG021802
  2813.                      ELSE WasX$ = WasX$ + FilName$ : _
  2814.                           CALL FindFile (WasX$,ZOK)
  2815.       GOTO 58710
  2816.  
  2817. 58711 CALL SkipLine (-MarkingTime)                                   ' KG021802
  2818.       END SUB
  2819.  
  2820. 59336 ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1)
  2821.       CALL FindFile (ZPersonalDrvPath$ + ZUserIn$(WasI),ZOK)
  2822.       IF ZOK THEN _
  2823.          ZUserIn$(WasI) = ZPersonalDrvPath$ + ZUserIn$(WasI) _
  2824.       ELSE CALL RotorsDir (ZUserIn$(WasI),ZSubDir$(),ZSubDirCount + _
  2825.                       ((ZUserSecLevel < ZMinSecToView) OR _
  2826.                        NOT ZCanDnldFromUp),ZTrue,ZFalse) : _         ' KG021802
  2827.            GOSUB 59338
  2828.       RETURN
  2829.  
  2830. Change RBBSSUB5.BAS as follows:
  2831.  
  2832. 20222 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _
  2833.                       ((ZUserSecLevel < ZMinSecToView) OR _
  2834.                        NOT ZCanDnldFromUp),MarkingTime,ZTrue)        ' KG021802
  2835.  
  2836. 20440 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,ZFalse) ' KG021802
  2837. 20450 IF Extension$ <> Check$ THEN _
  2838.          CALL RotorsDir (WasX$ + "." + Check$,ZSubDir$(),ZSubDirCount,ZTrue,ZFalse) : _ ' KG021802
  2839.          IF ZOK THEN _
  2840.             GOTO 20452
  2841.       GOTO 20447
  2842.  
  2843. ------------------------[ KG021801 ]-------------------------
  2844.  
  2845. Problem:  internal code documentation for SmartText omits notes
  2846. on what command invokes processing.
  2847.  
  2848. Change RBBSSUB4.BAS as follows:
  2849.  
  2850. 58266 SmartHold$ = DATE$                         ' DT Date           ' KG021801
  2851.       RETURN
  2852. 58267 CALL AMorPM
  2853.       SmartHold$ = ZTime$                        ' TM Time           ' KG021801
  2854.       RETURN
  2855.  
  2856. ------------------------[ KG021502 ]-------------------------
  2857.  
  2858. Problem:  When restrict a macro to the main prompt, and have a macro
  2859. with same name as a conference (to join it), "j <conf>" works but
  2860. "fn;ln;pswd;!<conf>" does not.  The macro gets substituted for
  2861. "<conf>".
  2862.  
  2863. Solution:  Change RBBS-PC.BAS as follows:
  2864.  
  2865. 1205 IF ZSubParm < 0 THEN _
  2866.         GOTO 202
  2867.      ZSubParm = 1
  2868.      ZStopInterrupts = ZFalse
  2869.      ZNonStop = (ZPageLength < 1)
  2870.      ZWasQ = 0
  2871.      IF ZHomeConf$ <> "" AND ZHomeConf$ <> "MAIN" THEN _
  2872.         TurboLogon = (NOT ConfMailJoin) : _
  2873.         ConfMailJoin = ZFalse : _
  2874.         ZFF = 8 : _
  2875.         ZUserIn$(2) = ZHomeConf$ : _
  2876.         ZHomeConf$ = "" : _
  2877.         ZWasQ = 1 : _
  2878.         ZAnsIndex = 1 : _
  2879.         ZLastIndex = 2 : _
  2880.         ZStoreParseAt = 1 : _
  2881.         ZLastCommand$ = "MJ" : _                                     ' KG021502
  2882.         GOTO 1240
  2883.      CALL SkipLine (1)
  2884.  
  2885. ------------------------[ KG021502 ]-------------------------
  2886.  
  2887. Problem:  the prompt after a macro ends is repeated twice.
  2888.  
  2889. Solution:  Change RBBSSUB2.BAS as follows:
  2890.  
  2891. 1628 CALL VerifyAns
  2892.      IF NOT ZOK THEN _
  2893.         CALL QuickTPut1 ("Invalid answer <" + ZUserIn$(1) + ">") : _
  2894.         GOTO 1500
  2895.      HoldA$ = ""
  2896.      ZForceKeyboard = ZFalse
  2897.      IF ZMacroSave > 0 THEN _
  2898.         ZGSRAra$(ZMacroSave) = ZUserIn$ : _
  2899.         ZMacroSave = 0 : _
  2900.         GOTO 1632
  2901.      IF (ZDistantTGet > 0) OR (ZMacroTemplate$ <> "") THEN _
  2902.         CALL WipeLine (38) : _
  2903.         IF NOT ZNo THEN _
  2904.            GOTO 1632 _
  2905.         ELSE ZWasQ = 0 : _
  2906.              ZMacroTemplate$ = "" : _
  2907.              ZDistantTGet = 0 : _
  2908.              ZNo = ZFalse : _
  2909.              GOTO 1633
  2910.      IF ZMacroActive THEN _
  2911.         ZLastIndex = ZWasQ : _
  2912.         FirstIndex = 1: _
  2913.         ZMacroActive = NOT EOF(6) : _                                ' KG021501
  2914.         EXIT SUB
  2915.      IF ZAnsIndex > 255 OR ((NOT InStack) AND INSTR(ZUserIn$,".") > 0) THEN _
  2916.         EXIT SUB
  2917.      IF MacroIndex THEN _
  2918.         MacroIndex = 1 _
  2919.      ELSE MacroIndex = ZAnsIndex
  2920.      CALL NoPath (ZUserIn$(MacroIndex),Found)
  2921.      IF Found THEN _
  2922.         EXIT SUB
  2923.      CALL CheckMacro (ZUserIn$(MacroIndex),Found)
  2924.      IF Found THEN _
  2925.         ZStoreParseAt = ZAnsIndex : _
  2926.         GOTO 1525
  2927.      EXIT SUB
  2928.  
  2929. ------------------------[ RH021501 ]-------------------------
  2930.  
  2931. Problem:  autodownload just does not work.
  2932.  
  2933. Solution:  Change RBBSSUB3.BAS as follows:
  2934.  
  2935. 20296 CALL FlushCom(ZWasY$)              ' CLEAR THE COMM BUFFER OF GARBAGE
  2936.       IF ZSubParm = -1 THEN _
  2937.          EXIT SUB
  2938.       CALL PutCom (ZEscape$+"OD")         ' SEND "ALERT" STRING
  2939.       IF ZSubParm = -1 THEN _
  2940.          EXIT SUB
  2941.       IF ZAbort = ZTrue THEN _
  2942.          GOTO 20306
  2943.       CALL LPrnt("Sending FILENAME -- ",1)
  2944.       CALL LPrnt(ZReturnLineFeed$ + CHR$(9),0)
  2945.       CALL DelayTime (1)                   ' WAIT 1 SECOND FOR SETUP
  2946. '
  2947. '               SEND ONE CHARACTER AT A TIME
  2948. '
  2949.       CALL BreakFileName (ZUserIn$(ZAnsIndex),WasX$,ZOutTxt$,ZWasY$,ZTrue) ' RH021501
  2950.       ZOutTxt$ = ZOutTxt$ + ZWasY$ + "=X"                            ' RH021501
  2951.       FOR WasX = 1 TO LEN(ZOutTxt$)
  2952.          CALL PutCom (MID$(ZOutTxt$,WasX,1))     ' SEND 1 CHARACTER
  2953.          IF ZSubParm = -1 THEN _
  2954.             EXIT SUB
  2955.          IF ZAbort = ZTrue THEN _
  2956.             GOTO 20306
  2957.          CALL LPrnt(MID$(ZOutTxt$,WasX,1),0)     ' DISPLAY IF NEEDED
  2958.          ZDelay! = TIMER + 10            ' SET MAXIMUM TIME TO WAIT FOR Reply
  2959.          Char = ZTrue
  2960.          WHILE Char = -1
  2961.             CALL CheckTime(ZDelay!, TempElapsed!, 1)
  2962.             IF TempElapsed! <= 0 THEN _
  2963.                GOTO 20300     ' IF ZNo ECHO, CANCEL FILENAME Transfer
  2964.             CALL EofComm (Char)
  2965.          WEND                 ' JUMP OUT IF CHARACTER IS RECEIVED
  2966.  
  2967. Change RBBSSUB4.BAS as follows:
  2968.  
  2969. (line 59400)
  2970.       SUB LogPDown (PrivateDnld,DwnIndex) STATIC                     ' RH021501
  2971.       IF NOT PrivateDnld THEN _
  2972.          EXIT SUB
  2973.       ZWasEN$ = ZPersonalDir$
  2974.       WasBX = &H4
  2975.       ZSubParm = 9
  2976.       CALL FileLock
  2977.       WasL = 36 + ZMaxDescLen + ZPersonalLen
  2978.       CLOSE 2
  2979.       IF ZShareIt THEN _
  2980.          OPEN ZWasEN$ FOR RANDOM SHARED AS #2 LEN=WasL _
  2981.       ELSE OPEN "R",2,ZPersonalDir$,WasL
  2982.       FIELD #2,WasL AS PersonalRec$
  2983.       ZWasA = VAL(MID$(ZUserIn$(0),5 * (DwnIndex - 1) + 1,5))        ' RH021501
  2984.       GET #2,ZWasA
  2985.       MID$(PersonalRec$,WasL-2,1) = "!"
  2986.       PUT #2,ZWasA
  2987.       CALL UnLockAppend
  2988.       END SUB 
  2989.  
  2990. Change RBBSSUB3.BAS as follows:
  2991.  
  2992. 20296 CALL FlushCom(ZWasY$)              ' CLEAR THE COMM BUFFER OF GARBAGE
  2993.       IF ZSubParm = -1 THEN _
  2994.          EXIT SUB
  2995.       CALL PutCom (ZEscape$+"OD")         ' SEND "ALERT" STRING
  2996.       IF ZSubParm = -1 THEN _
  2997.          EXIT SUB
  2998.       IF ZAbort = ZTrue THEN _
  2999.          GOTO 20306
  3000.       CALL LPrnt("Sending FILENAME -- ",1)
  3001.       CALL LPrnt(ZReturnLineFeed$ + CHR$(9),0)
  3002.       CALL DelayTime (1)                   ' WAIT 1 SECOND FOR SETUP
  3003. '
  3004. '               SEND ONE CHARACTER AT A TIME
  3005. '
  3006.       CALL BreakFileName (ZUserIn$(ZAnsIndex),WasX$,ZOutTxt$,ZWasY$,ZTrue) ' RH021501
  3007.       ZOutTxt$ = ZOutTxt$ + ZWasY$ + "=X"                            ' RH021501
  3008.       FOR WasX = 1 TO LEN(ZOutTxt$)
  3009.          CALL PutCom (MID$(ZOutTxt$,WasX,1))     ' SEND 1 CHARACTER
  3010.          IF ZSubParm = -1 THEN _
  3011.             EXIT SUB
  3012.          IF ZAbort = ZTrue THEN _
  3013.             GOTO 20306
  3014.          CALL LPrnt(MID$(ZOutTxt$,WasX,1),0)     ' DISPLAY IF NEEDED
  3015.          ZDelay! = TIMER + 10            ' SET MAXIMUM TIME TO WAIT FOR Reply
  3016.          Char = ZTrue
  3017.          WHILE Char = -1
  3018.             CALL CheckTime(ZDelay!, TempElapsed!, 1)
  3019.             IF TempElapsed! <= 0 THEN _
  3020.                GOTO 20300     ' IF ZNo ECHO, CANCEL FILENAME Transfer
  3021.             CALL EofComm (Char)
  3022.          WEND                 ' JUMP OUT IF CHARACTER IS RECEIVED
  3023.  
  3024.