====[ Fixes to RBBS-PC 17.4  ]========

Last Mod:  KG012301

Note:  BASE is RBBS 17.4

CONVENTIONS:
    The changes are assigned numbers that  correspond  to  the
    month,  day, and order in which they were made.  Any mods
    are dated following the modification  description.   The
    lines   of   source   code  that  are  changed/modified/added  are
    designated by the comment beginning in column 70 of "' iiMMDDnn"
    where ii is the initials of the person providing the change
    and nn is the number of the change (01, 02, ...).

Latest Downloadable Fixes:  RFIX0704.ZIP
-------------------------------------------------------------------
RBBS-PC.EXE         06-21-92   9:00 PM EST  Release of 17.4
--------------------------------------------------------------------
                            Summary

EXE   MOD       Short Description
---- --------   -----------------
RBBS KG012301   Stacked commands not working right on conf join
RBBS KG012001  In who command, show line speed   *** Not Implemented in
                                                     STUNY ***
RBBS KG011501  Don't automatically show menu when no such entry found
RBBS KG011201  Allow CR's and message entry to be stacked in macros
RBBS KG100701  Subboard allowed to change network type
RBBS KG092301  Makes macros tolerate whether in turbo key mode
RBBS KG092201  Records Line Speed that RBBS uses
RBBS KG091002  Makes code more tolerant when reading FMS directories
RBBS KG091001  Allows download personal files to be viewed  *** Not Implemented
                                                                in STUNY ***
RBBS KG082201  Lets SysOp make pers upload to a security level  *** Modified in
                                                                    STUNY ***
RBBS KG082101  Possible for caller to regain banked time
RBBS KG070401  UTIL.HLP refers to "B)aud change" not "B)ank time"
RBBS RH070402  Get untrapped error when timeout looking at callers file
RBBS RH070401  Possible for activity to be logged to wrong callers file
RBBS BH070401  [CBAUD] sometimes not working with external protocol
RBBS KG062401  Unable to download marked files in personal directory
RBBS KG062301  Msg scan/topic scan not operating same as Read

Contributors include:

     BH - Bob Hampton
     KG - Ken Goosens
     RH - Ray Horton

------------------------[ KG012301]-------------------------

Problem:  When join a conference, reading continuuously, being
asked if want to check messages.  It is not possible to stack any
answer to this prompt.

Solution:  Change RBBS-PC.BAS as follows:

1895 IF TurboLogon OR ZNonStop THEN _                                ' KG012301
        RETURN
     ZOutTxt$ = "Check mail in " + ZConfName$ + " ([Y],N)"
     GOSUB 12930                                                     ' KG012301
     IF ZNo THEN _
        SkipMain = ZTrue : _
        RETURN
     ZUserIn$(0) = LEFT$("NEW ",-4*LogonMailNew)

------------------------[ KG012001]-------------------------

Problem:  Who command showing the speed of caller as the pc-to-modem
speed, rather than the line speed.


*** Not implemented in the STUNY mods since this problem doesn't seem
    to exist.  Could be due to two of the other mods incorporated...
    the CONN174 or the FE174V10 mods. ***

------------------------[ KG011501]-------------------------

Problem:  menu for an option is shown automatically when an option
picked that does not exist, such as a conference.  The mistake is
usually a misspelling versus ignorance of what options exist.  Therefore,
don't automatically put the menu up.  If novice, put it up.  If expert,
don't.  Caller can ask for a L)ist to get the list of options.  Was
penalizing the misspeller too much.

Change RBBSSUB4.BAS as follows.

59510 ZFileName$ = CurMenu$
      InMenu = ZTrue
      CALL BreakFileName (FrontOpt$,WasX$,FrontPre$,ZWasDF$,ZTrue)
      CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue)
      MenuFront$ = MenuDrv$ + LEFT$(WasX$,LEN(WasX$)-LEN(PreSuf$))
      IF CurMenu$ = LastSubMenu$ THEN _
         MenuFront$ = LEFT$(MenuFront$,LEN(MenuFront$)-1)
      CALL Graphic (ZFileName$)
      CurMenuVer$ = ZFileName$
      ZStopInterrupts = ZFalse
59514 IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _                ' KG011501
         GOTO 59520

59532 GOSUB 59547
      GOTO 59514                                                     ' KG011501

------------------------[ KG011201]-------------------------

Enhancement:  Enhancements macro stack command ({ST) to stack carriage-
returns using the "|" symbol.  Also, enhances the message section to
support entering a message thru the macro stack.  This allows messages
to be automatically generated by macros.

Change RBBS-PC.BAS as follows:

2010 IF NOT QuotedReply THEN _
        ZLinesInMsg = 0 : _                                          ' KG011201
        WasL = 0 : _
        WasX = 0 : _
        REDIM ZOutTxt$(ZMsgDim)
     IF ZGetExtDesc THEN _
        GOTO 2100
     GOSUB 1893
     RcvrRecNum = 0

Change RBBSSUB2.BAS as follows:

3730 IF TabToSpace > 0 THEN _
        WasX$ = " " : _
        TabToSpace = TabToSpace - 1 : _
        GOTO 3750
     CALL FindFKey
     IF ZSubParm < 0 THEN _
        EXIT SUB
     WasX$ = ZKeyPressed$
     IF WasX$ = "" THEN _
        GOTO 3732 : _                                                ' KG011201
        IF ZLocalUser THEN _
           GOTO 3733 _
        ELSE GOTO 3732
     IF WasX$ = ZEscape$ THEN _
        ZKeyPressed$ = WasX$ : _
        EXIT SUB
     SendRemote = ZTrue
     WasZ = INSTR(ZLineEditChk$,WasX$)
     IF WasZ < 1 THEN _
        GOTO 3750 _
     ELSE IF WasZ > 4 THEN _
             GOTO 3870 _
     ELSE IF WasZ = 1 THEN _
             GOTO 3810
     IF ZLocalUser THEN _
        GOTO 3730
* REPLACING old line(s) by new
3732 IF ZCommPortStack$ <> "" THEN _
        WasX$ = LEFT$(ZCommPortStack$,1) : _
        ZCommPortStack$ = RIGHT$(ZCommPortStack$,LEN(ZCommPortStack$)-1) : _
        GOTO 3738
     IF NOT ZLocalUser THEN _                                        ' KG011201
        CALL EofComm (Char) : _                                      ' KG011201
        IF Char <> -1 THEN _                                         ' KG011201
           GOTO 3736                                                 ' KG011201

Change RBBSSUB5.BAS as follows:

63355 CALL GlobalSrchRepl (WasX$,"|",ZCarriageReturn$,ZTrue)        ' KG011201
      ZCommPortStack$ = ZCommPortStack$ + WasX$ + ZCarriageReturn$  ' STack
      GOTO 63336

------------------------[ KG100701]-------------------------

Problem:  Subboard def file is allowed to change the network
type.

Solution:  Change RBBSSUB1.BAS as follows:

117 IF ZSubParm <> -62 THEN _
       IF PrevRead$ = ConfigFile$ THEN _
          EXIT SUB _
       ELSE PrevRead$ = ConfigFile$
    CLOSE 2
    ZBulletinSave$ = ZBulletinMenu$
    CALL OpenWork (2,ConfigFile$)
    ZCurDef$ = ConfigFile$
    INPUT #2,ZWasDF$, _
             ZDnldDrives$, _
             ZSysopPswd1$, _
             ZSysopPswd2$, _
             ZSysopFirstName$, _
             ZSysopLastName$, _
             ZRequiredRings, _
             ZStartOfficeHours, _
             ZEndOfficeHours, _
             ZMinsPerSession, _
             ZWasDF, _
             ZWasDF, _
             ZUpldDir$, _
             ZExpertUserDef, _
             ZActiveBulletins, _
             ZPromptBellDef, _
             ZWasDF, _
             ZMenusCanPause, _
             ZMenu$(1), _
             ZMenu$(2), _
             ZMenu$(3), _
             ZMenu$(4), _
             ZMenu$(5), _
             ZMenu$(6), _
             ZConfMenu$, _
             ZTestANSITime, _
             ZWelcomeInterruptable, _
             ZRemindFileXfers, _
             ZPageLengthDef, _
             ZMaxMsgLinesDef, _
             ZDoorsAvail, _
             ZWasDF$, _
             ZMainMsgFile$, _
             ZMainMsgBackup$
    INPUT #2, WasX$, _
              ZCmntsFile$, _
              ZMainUserFile$, _
              ZWelcomeFile$, _
              ZNewUserFile$, _
              ZMainDirExtension$
    CALL BreakFileName (WasX$,ZWasY$,ZWasDF$,ZWasZ$,ZFalse)
    IF ZWasDF$ <> "" THEN _
       ZCallersFile$ = WasX$
    INPUT #2, ZWasDF$
    IF ZComPort$ <> "COM0" THEN _
       IF NOT ZConfMode THEN _
          ZComPort$ = ZWasDF$
    INPUT #2, ZBulletinsOptional, _
              ZModemInitCmd$, _
              ZRTS$, _
              ZCallersLst$, _
              ZFG, _
              ZBG, _
              ZBorder
    IF ZConfMode THEN _
       INPUT #2, ZWasDF$, _
                 ZWasDF$ _
    ELSE INPUT #2, ZRBBSBat$ , _
                   ZRCTTYBat$
    INPUT #2,ZOmitMainDir$, _
             ZFirstNamePrompt$, _
             ZHelp$(3), _
             ZHelp$(4), _
             ZHelp$(7), _
             ZHelp$(9), _
             ZBulletinMenu$, _
             ZBulletinPrefix$, _
             ZWasDF$, _
             ZMsgReminder, _
             ZRequireNonASCII, _
             ZAskExtendedDesc, _
             ZMaxNodes                                               ' KG100701
    IF ZConfMode THEN _                                              ' KG100701
       INPUT #2, ZwasDF, ZwasDF _                                    ' KG100701
    ELSE INPUT #2, ZNetworkType, _                                   ' KG100701
                   ZRecycleToDos
    INPUT #2,ZWasDF, _
             ZWasDF, _
             ZTrashcanFile$
                .
                .
                .

------------------------[ KG092301]-------------------------

Enhancement.  This makes it possible to write macros so that they
work the same reguardless of whether the user is in turbo-key mode.
When passing keystrokes in a macro, simply begin them with "/".
When the user is in turbo-key mode, this will simply suspend it
for that line.   When not in turbo-key mode, this change will
strip out a leading "/".   The effect will make the line work
exactly the same.  Note:  if you want the macro to pass the "/"
as a keystroke, simply add a space (" /" will have the
same effect as "/" prior to this change).

Change RBBSSUB2.BAS as follows:

1534 ZUserIn$ = ZOutTxt$   ' Not Macro command - pass to normal processing
' * strip off leading slash when not in turbokey mode so macros can be
' * written to work in both turbo and non-turbo-key mode
     IF LEFT$(ZUserIn$,1) = "/" THEN IF NOT ZTurboKeyUser THEN _     ' KG092301
        ZUserIn$ = RIGHT$(ZUserIn$,LEN(ZUserIn$)-1) : _              ' KG092301
        ZTurboKey = ZFalse                                           ' KG092301
     IF ZMacroEcho THEN _
        ZSubParm = 4 : _
        CALL TPut
     WasX$ = ZCarriageReturn$
     GOTO 1547

------------------------[ KG092201]-------------------------

Problem:  RBBS gets the line speed but doesn't report it to the
caller or log it to callers file.

Change RBBS-PC.BAS as follows:

800 IF ZAdjustedSecurity THEN _
       GOSUB 5135
    IF ZOrigCnfg$ = ZCurDef$ THEN _
       ZMainUserFileIndex = ZUserFileIndex : _
       ZOrigSec = ZUserSecLevel : _
       ZUserSecSave = ZUserSecLevel : _
       ZOrigUserName$ = ZActiveUserName$
    ZTimesLoggedOn = CVI(MID$(ZUserOption$,1,2)) - _
       ((ZOrigCnfg$ <> ZCurDef$ OR NOT ZSubBoard) AND _
        (NOT ZPrivateDoor) AND (NOT ZExitToDoors))
    GOSUB 9500
    IF (NOT ZExitToDoors) AND (NOT ZSubBoard) THEN _
       CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _
                 " Lvl" + STR$(ZUserSecLevel) + " " + TIME$,2) : _   ' KG092201
       CALL UpdtCalr ("Line Speed " + ZCBaud$,2)                     ' KG092201
    PrevLastOn$ = ZLastDateTimeOn$
    IF ZLocalUser THEN _
       ZTalkToModemAt$ = "9600" : _
       ZBaudParity$ = "9600 BPS,N,8,1" : _
       ZModemInitBaud$ = "9600" : _
       ZSnoop = ZTrue : _
       ZLineFeeds = ZTrue
    CALL SetCrLf
    CALL SetPrompt
    CALL XferType (2,ZTrue)
    IF NOT ZSubBoard THEN _
       BoardCheckDate$ = PrevLastOn$
    CALL SetSysOp
    IF ZWasA THEN _
       ZActiveUserName$ = "SYSOP" : _
       ZFirstName$ = "SysOp"
    IF ZExitToDoors OR ZSubBoard THEN _
       GOTO 815
    GOSUB 465
    IF (ZEightBit AND _
       ZAutoDownDesired) OR _
       ZAskID THEN _
       CALL TestUser
    CALL QuickTPut1 ("Logging " + ZActiveUserName$)
    CALL Talk (1,ZOutTxt$)
    Temp$ = STR$(ZBaudTest!) + MID$(ZBaudParity$,INSTR(ZBaudParity$," B"))
    CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$) ' KG092201
    CALL QuickTPut1 ("Line speed " + ZCBaud$  + "  Host operating at" + Temp$) ' KG092201
    CALL SkipLine (1)
    Attempts = 0
    ZWasZ$ = ZActiveUserName$ + _
            " on at " + _
            ZCurDate$ + _
            ", " + _
            ZTime$ + _
            " from " + _
            ZWasCI$ + _
            "," + Temp$
     ZWasNG$ = ZWasZ$ + SPACE$(128 - LEN(ZWasZ$))
'
' *  ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT
'
     WasX$ = "{" + _
          HashValue$ + _
          "/" + _
          ZIndivValue$ + _
          "}"
     IF LEN(ZWasZ$) < 65 THEN _
        WasX = 65 _
     ELSE WasX = LEN(ZWasZ$) + 2
     MID$(ZWasNG$,WasX) = WasX$
     CALL Printit ("  " + ZWasZ$)
     IF ZNewUser THEN _
        CALL UpdtCalr ("NEWUSER",1) : _
        CALL Muzak (2)
'
' *****  NOTIFY CALLER IF ABLE TO "AUTODOWN"  ****
'
    IF ZEightBit AND ZAutoDownYes THEN _
       ZOutTxt$ = CHR$(9) + _
            ZReturnLineFeed$ + _
            "You may use AUTODOWNLOADing!" : _
       CALL RingCaller : _
       CALL DelayTime(4)

------------------------[ KG091002]-------------------------

Problem:  Possible to get an untrapped error when the FMS directory 
being read does not match in length that specified in CONFIG.  This
changes makes the FMS directory readable without error even when it
does not match.

58190 ' $SUBTITLE: 'OpenFMS - subroutine to open the FMS directory'
' $PAGE
'
'  NAME    -- OpenFMS
'
'  INPUTS  -- PARAMETER                      MEANING
'             ZShareIt                DOS SHARING FLAG
'             ZFMSDirectory$          NAME OF FMS DIRECTORY
'
'  OUTPUTS -- LastRec                NUMBER OF THE Last
'                                    RECORD IN THE FILE
'             CatLen                 Length of the category code
'
'  PURPOSE -- To open the upload directory as a random file and find
'             the number of the last record in the file.
'
      SUB OpenFMS (LastRec,CatLen) STATIC
      ON ERROR GOTO 65000
      CLOSE 2
      IF ZActiveFMSDir$ = "" THEN _
         IF ZMenuIndex = 6 THEN _
            ZActiveFMSDir$ = ZLibDir$ _
         ELSE ZActiveFMSDir$ = ZFMSDirectory$
      OldFile = (ZActiveFMSDir$ = PrevFMS$)
      IF OldFile THEN _
         GOTO 58192
      CALL OpenWork (2,ZActiveFMSDir$)
      CALL ReadDir (2,1)
      IF ZErrCode > 0 OR LEN(ZOutTxt$) < 37 THEN _                   ' KG091002
         IF ZActiveFMSDir$ = ZPersonalDir$ THEN _
            ZFMSFileLength = 36 + ZMaxDescLen + ZPersonalLen _
         ELSE ZFMSFileLength = 38 + ZMaxDescLen _
      ELSE ZFMSFileLength = LEN(ZOutTxt$) + 2
      IF ZFMSFileLength < 86 THEN _                                  ' KG091002
         CalcCatLen = 3 : _                                          ' KG091002
         ZMaxDescLen = ZFMSFileLength - 38 _                         ' KG091002
      ELSE CalcCatLen = ZPersonalLen : _                             ' KG091002
           ZMaxDescLen = ZFMSFileLength - 36 - ZPersonalLen          ' KG091002
      CLOSE 2

------------------------[ KG091001]-------------------------

Problem:  When personal files are stored in the drive/path for personal
files, and this drive/path is not in download areas, then the file can
be downloaded but not viewed.   This makes those personal files viewed,
but subject to the same constaints as downloading, so that when in
the personal directory callers can view only those files listed and to
them.   Note:  this change is an improvement on one submitted by
Tom Hansen and Dan Shore.

*** Not implemented in STUNY - caused all sorts of problems with personal
    uploads. ***


------------------------[ KG082201]-------------------------

Enhancement:  Lets the SysOp upload to a security level.

Change RBBSSUB2.BAS as follows:

2032 RcvrRecNum = 0
     IF MsgTo$ <> "ALL" THEN _
        IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _
           CALL CheckInt (MsgTo$) : _                                ' KG082201
           IF ZTestedIntValue = 0 OR NOT ZSysOp THEN _               ' KG082201
              ZWasDF = INSTR(MsgTo$+" @"," @") : _
              TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _
              CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
              IF NOT Found THEN _
                 ZLastIndex = 0 : _
                 RcvrRecNum = 0 : _
                 IF NOT ZReply THEN _
                    ZOutTxt$ = "Send anyway (Y,[N])" : _
                    ZTurboKey = -ZTurboKeyUser : _
                    ZLastIndex = 0 : _
                    GOSUB 2034 : _
                    IF NOT ZYes THEN _
                       GOTO 2021
     IF MsgTo$ = Temp$ THEN _
        ZOutTxt$ = "Really send this to YOURSELF (Y,[N])" : _
        ZLastIndex = 0 : _
        GOSUB 2034 : _
        IF NOT ZYes THEN _
           MsgTo$ = ""
     CALL OpenWorkA (ZNodeWorkFile$)
     CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
     CLOSE 2
     ZNumHeaders = ZNumHeaders + 1
     IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
        MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
        (NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
           ZOutTxt$ = "Carbon copy to another (Y,[N])" : _
           CALL PopCmdStack : _
           IF ZYes THEN _
              GOTO 2021

Change RBBSSUB3.BAS as follows:

20717 CALL FindItX (ZNodeWorkFile$,7)
      ZUserIn$ = Desc$
      WasX$ = DATE$
      ZWasZ$ = LEFT$(WasX$,6) + _
           RIGHT$(WasX$,2)
      ZWasEN$ = ZPersonalDir$
      NumPersonals = 0
      IF NOT ZOK THEN _
         GOTO 20718
      UserFileIndexSave = ZUserFileIndex
      UserRecordHold$ = ZUserRecord$
      WHILE NOT EOF(7)
         CALL ReadParmsX (7,ZWorkAra$(),2,1)
         IF LEFT$(ZWorkAra$(1),4) <> "ALL " AND ZWorkAra$(1) <> "ALL" THEN _
            NumPersonals = NumPersonals + 1 : _
            UCat$ = ZWorkAra$(1) : _
            GOSUB 20737 : _                                          ' KG082201
            GOSUB 20728 : _
            RcvrRecNum = VAL (ZWorkAra$(2)) : _
            CALL SetUserFlag (RcvrRecNum,4096,"file")
      WEND
      CLOSE 7
      IF NumPersonals > 0 THEN _
         ZUserFileIndex = UserFileIndexSave : _
         LSET ZUserRecord$ = UserRecordHold$ : _
         GOTO 20723

20736 IF NOT ZOK THEN _
         ZBytesInFile# = 0.0_
      ELSE ZBytesInFile# = LOF(2)
      IF ZBytesInFile# < 2.0 THEN _
         EXIT SUB
      RETURN                                                         ' KG082201
20737 CALL CheckInt (UCat$)                                          ' KG082201
      IF ZTestedIntValue > 0 THEN _                                  ' KG082201
         UCat$ = " " + UCat$                                         ' KG082201
      RETURN                                                         ' KG082201
      END SUB


*** Modified in STUNY to prevent the SysOp from entering messages to a user
    named as a security level. ***


------------------------[ KG082101]-------------------------

Problem:  Possible for caller to regain banked time.   Also, the
session limit specified in a subboard config may fail to get
applied.

Solution:  Change RBBSSUB2.BAS as follows:

120 '  $SUBTITLE: 'EditDef - sub to edit config parameters'
'  $PAGE
'
'  NAME    -- EditDef
'
'  INPUTS  --     PARAMETER                    MEANING
'
'  OUTPUTS --                          OUTPUT STRING
'
'  PURPOSE -- Interpretes and adjusts stored configuration parameters
'
      SUB EditDef STATIC
      ZMinsPerSessionDef = ZMinsPerSession                           ' KG082101
      ZAllOpts$ = ZMainCmds$ + _
                  ZFileCmd$ + _
                  ZUtilCmds$ + _
                  ZLibCmds$ + _
                  ZGlobalCmnds$ + _
                  ZSysopCmds$
                     .
                     .
                     .

5503 IF SignTime = 1 THEN _
        ZOutTxt$ = "Withdraw" _
     ELSE ZOutTxt$ = "Deposit"
     Temp$ = ZOutTxt$ + " how many mins"
     CALL ChangeInt (ZFalse,Temp$,Temp,0,Maxtime)
     IF ZWasQ = 0 OR ZTestedIntValue = 0 THEN _
        GOTO 5501
     ZTestedIntValue = SignTime * ZTestedIntValue
     CALL ChkAddedTime (ZTestedIntValue)
     IF ZTestedIntValue = 0 THEN _
        GOTO 5501
     ZSecsPerSession! = ZSecsPerSession! + (ZTestedIntValue * 60)
     IF ZMaxPerDay = 0 THEN _                                        ' KG082101
        ZTimeCredits! = ZTimeCredits! + ZTestedIntValue * 60         ' KG082101
     ZElapsedTime = ZElapsedTime - ZTestedIntValue
     ZGlobalBankTime = ZGlobalBankTime - ZTestedIntValue
     GOSUB 5507
     GOTO 5501

------------------------[ KG070401]-------------------------

Problem:  The UTIL.HLP refers to "B)aud change" when this has
become "B)ank time".

Solution:  a replacement UTIL.HLP is provided.

------------------------[ RH070402]-------------------------

Problem:  When viewing a callers file and timeout at the More prompt,
get untrapped error.

Solution:  Change RBBSSUB3.BAS as follows:

57100 IF INSTR(ZOutTxt$,"LOGON DENIED") OR INSTR(ZOutTxt$,"Lvl ")THEN _
         IF NOT ZSysOp THEN _
            RETURN
      IF ZJumpSearching THEN _
         ZWasDF$ = ZOutTxt$ : _
         CALL AllCaps (ZWasDF$) : _
         IF INSTR(ZWasDF$,ZJumpTo$) = 0 THEN _
            RETURN _
         ELSE CALL CheckColor (ZOutTxt$,ZJumpTo$,"") : _
              ZJumpSearching = ZFalse
      ZSubParm = 5
      CALL TPut
      WasX = 1
      CALL AskMore ("",ZTrue,ZTrue,WasX,ZFalse)
      IF ZSubParm = -1 THEN _                                        ' RH070402
         GOTO 57102 _                                                ' RH070402
      ELSE IF ZNo THEN _                                             ' RH070402
         GOTO 57101                                                  ' RH070402
      RETURN

------------------------[ RH070401]-------------------------

Problem:  When SysOp views callers file on another node, thereafter
his own logging to caller's file goes to the other node's callers.

Solution:  Change RBBSSUB3.BAS as follows:

57102 ZJumpSupported = ZFalse
      IF OrigCal$ <> ZCallersFile$ THEN _                            ' RH070401
         ZCallersFile$ = OrigCal$ : _
         CALL SetCall
      END SUB

------------------------[ BH070401]-------------------------

Problem:  "[CBAUD]" can include a leading blank, which causes it not
to work with some external protocols, like HSLink.

Solution:  Change RBBSSUB2.BAS as follows:

(line 1654)

            .
            .
            .
      SUB SetBaud STATIC
     IF ZCBaud$ = "" THEN _
        ZCBaud$ = MID$(ZBaudRates$,(-5 * ZBPS),5) : _                ' BH070401
        CALL Trim (ZCBaud$)                                          ' BH070401
     Temp! = VAL(ZCBaud$)
            .
            .
            .

------------------------[ KG062401]-------------------------

Problem:  When say to download marked files in a personal directory,
says unable to find "M".

Solution:  Change RBBSSUB3.BAS as follows:

58181 MarkingFiles = ZFalse
      IF (WasX$ = "D" OR WasX$ = "M") THEN IF CanDnld THEN _
         MarkingFiles = (WasX$ = "M") : _
         CALL AskItems ("DM",WasX$,ZTrue,"file",ZMarkedFiles$) : _   ' KG062401
         IF ZWasQ = 0 THEN _
            GOTO 58183
      IF WasX$ = "*" THEN IF ZPersonalDnld THEN _
         GOTO 58193

58188 IF ProcessedNew OR MarkingFiles OR NOT ZListOnly THEN _
         ProcessedNew = ZFalse : _
         RETURN
      ZUserIn$(0) = ""
      WasI = ZAnsIndex              ' check whether in dir
      WHILE WasI <= ZLastIndex
         CALL AraAllCaps (ZUserIn$(),WasI)
         ZWasZ$ = ZUserIn$(WasI)
         CALL UnMarkItems (ZMarkedFiles$,WasI,ZLastIndex,WasX,ZTrue)
         Temp$ = ZUserIn$(WasI)
         CALL AllCaps (Temp$)                                        ' KG062401
'print "wasi=";wasi;" temp$=<";temp$;"> Zdef=<";zdefaultxfer$;">"
         IsProto = (LEN(Temp$) = 1 AND _
                    INSTR(ZDefaultXfer$,Temp$) > 0)
         ZOK = IsProto
         WasJ = LastRec + 1
         WasX = INSTR(Temp$,".")
         AltTemp$ = ""
         IF NOT IsProto THEN _
            IF WasX = 0 THEN _
               AltTemp$ = Temp$ + "." + ZDefaultExtension$ _
            ELSE IF WasX = LEN(Temp$) THEN _
                    AltTemp$ = LEFT$(Temp$,WasX-1)
'print "58188 b4 while zok=";zok;" wasj=";wasj;" looking for <";temp$;">"
         WHILE WasJ > 1 AND NOT ZOK
            WasJ = WasJ - 1
            GET #2,WasJ
            GOSUB 58191
'print "bk 58191 canget=";catget;" ptp<";parttoprint$;">";:input xx$
            IF CanGet THEN _
               MID$(PartToPrint$,13,1) = " " : _
               WasX$ = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1) : _
               ZOK = (Temp$ = WasX$) : _
               IF NOT ZOK THEN _
                  IF AltTemp$ <> "" THEN _
                     ZOK = (AltTemp$ = WasX$)
         WEND
'print "58188 aft while zok=";zok;" wasj=";wasj;" looking for <";temp$;">":input xxx$
         IF ZOK THEN _
            GOSUB 58189 : _
            IF ZOK OR IsProto THEN _
               WasX$ = MID$(STR$(WasJ),2) : _
               ZUserIn$(0) = ZUserIn$(0) + _
                       WasX$ + _
                       SPACE$(5 - LEN(WasX$))
         IF NOT ZOK AND NOT IsProto THEN _
            CALL QuickTPut1 (ZWasZ$ + " not found - omitted") : _
            FOR WasK = WasI + 1 TO ZLastIndex : _
               ZUserIn$(WasK - 1) = ZUserIn$(WasK) : _
            NEXT : _
            ZLastIndex = ZLastIndex - 1 : _
            WasI = WasI - 1
         WasI = WasI + 1
      WEND
      ZWasQ = ZLastIndex
'print "end 58188 zlastindex=";zlastindex;" zok=";zok
      RETURN

------------------------[ KG062301]-------------------------

Problem:  When you stack message numbers, Read reads exactly those
messages.   But S)can and T)opic do not confine themselves to the
numbers.  Instead, "s 5" acts like "s 5+".

Solution:  Change RBBS-PC.BAS as follows:

4380 WasA1$ = "Msg #" + _
           STR$(LowMsgNumber) + _
           "-" + _
           MID$(STR$(ZMsgPtr(ActiveMessages,2)),2) + _
           " (H)lp,S)ince,L)ast" + _
           LEFT$(",G)lobal",8*(ZLinkedConf$ ="" OR ZGlobalRead)+8)
     CALL SkipLine (-QuickScanMsgs)                                  ' KG062301
     IF ZGlobalRead THEN _
        CALL QuickTPut1 ("Reading globally")
     IF AddressedToUser OR ToRequested OR FromRequested THEN _
        ZWasY$ = LEFT$("TO",-2*(ToRequested OR AddressedToUser)) + _
             LEFT$("/",-AddressedToUser) + _
             LEFT$("FROM",-4*(FromRequested OR AddressedToUser)) : _
        CALL QuickTPut1 ("Include only msgs "+ZWasY$+" you.  Read what msgs (? for help)") _
     ELSE WasA1$ = WasA1$ + ",T)o,F)rom,M)" : _
          IF ReadMsgs AND ZMarkedMsgs$ <> "" THEN _
             WasA1$ = WasA1$ + "arked" _
          ELSE WasA1$ = WasA1$ + "ine"
     IF SearchString$ = "" THEN _
        WasA1$ = WasA1$ + _
             ", text" _
     ELSE CALL QuickTPut1 ("Include only msgs with text " + SearchString$ + ".  Read what msgs (? for help)")

4418 ZWasA = INSTR("FfTt",ZUserIn$(ZAnsIndex))
     IF ZWasA > 0 THEN _
        ToRequested = (ZWasA > 2) : _
        FromRequested = (ZWasA < 3) : _
        GOTO 4370
     IF CurMsg = 0 THEN _
        IF SearchHeader$ <> "" THEN _
           GOTO 4370 _
        ELSE SearchString$ = ZUserIn$(ZAnsIndex) : _
             SearchCt = 0 : _
             CALL AllCaps (SearchString$) : _
             CALL Remove (SearchString$,CHR$(34) + CHR$(39)) : _
             SearchHeader$ = SearchString$ : _
             SubInHeader$ = SearchHeader$ : _
             GOTO 4370
     CALL SkipLine (-ReadMsgs)                                       ' KG062301

4630   CALL AskMore (",M)ark, #(s) to read",ZTrue,ZTrue,WasXX,ZFalse)
       IF ZWasQ = 0 OR ZYes THEN _
          GOTO 4631
       IF ZNo THEN _
          RETURN
       IF ZSubParm = -1 THEN _
          RETURN 10595
       IF ZRet THEN _
          RETURN
       ZWasZ$ = ZUserIn$(1)
       CALL AllCaps (ZWasZ$)
       IF ZWasZ$ = "M" THEN _
          ZLastIndex = ZWasQ : _
          ZAnsIndex = 1 : _
          CALL AskItems ("M",ZWasZ$,ZTrue,"msg",ZMarkedMsgs$)
       IF VAL(ZWasZ$) > 0 THEN _
          FOR WasI = ZWasQ TO 1 STEP -1 : _
             ZUserIn$(WasI + 1) = ZUserIn$(WasI) : _
          NEXT : _
          ZUserIn$(1) = MID$(ZAllOpts$,INSTR(ZOrigCommands$,"R"),1) : _
          ZLastIndex = ZWasQ + 1 : _
          ZAnsIndex = 1 : _
          RETURN 1235                                                ' KG062301
4631   IF NOT Forward AND NOT Reverse THEN _                         ' KG062301
          GOTO 4370                                                  ' KG062301
        CALL CheckCarrier                                            ' KG062301
       IF ZSubParm THEN _
          RETURN 10595
       IF ZRet THEN _
          RETURN

========================[ STUNY ]=========================

Original BULLET6 file dated 012493

