home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS - Coast to Coast
/
simteldosarchivecoasttocoast2.iso
/
rbbs_pc
/
rfix0312.zip
/
RSB20312.MRG
< prev
next >
Wrap
Text File
|
1993-03-12
|
23KB
|
573 lines
* ------------[ BLED merge (c) Ken Goosens ]-------------
* Merge this against C:\174\RBBSSUB2.BAS to produce D:\SOURCE\RBBSSUB2.BAS
* C:\174\RBBSSUB2.BAS: Date 6-20-1992 Size 140946 bytes
* ------------[ Created 03-12-1993 21:23:21 ]------------
* REPLACING old line(s) by new
109 ' $SUBTITLE: 'VarInit - subroutine to initialize system variables'
' $PAGE
'
' NAME -- VarInit
'
' INPUTS -- PARAMETER MEANING
' NONE
'
' OUTPUTS -- NONE
'
' PURPOSE -- To initialize system variable
'
SUB VarInit STATIC
DEF SEG ' Point to BASIC
WIDTH 80 ' Set Screen Width
KEY OFF ' Line 25 turned off
' ********************* Variable Definitions *******************************
ZMsgDim = 99
WasMM = 999
WasBX = 75
WasJ = 60
REDIM ZOptSec(WasJ)
DIM ZWorkAra$(WasJ)
DIM ZGSRAra$(WasJ)
DIM ZCategoryName$(WasBX),ZCategoryCode$(WasBX),ZCategoryDesc$(WasBX)
DIM ZOutTxt$(ZMsgDim) ' Message line table
DIM ZUserIn$(ZMsgDim) ' Message line table
DIM ZMsgPtr(WasMM,2) ' Message pointers
ZAcknowledge$ = CHR$(6)
ZAckChar$ = "C" + _
ZAcknowledge$
ZActiveMenu$ = "B"
ZActiveMessage$ = CHR$(225)
ZBackSpace$ = CHR$(8) + _
CHR$(32) + _
CHR$(8)
ZBackArrow$ = CHR$(29) + _
CHR$(32) + _
CHR$(29)
ZBaudRates$ = " 300 450 1200 2400 4800 7200 96001200014400168001920038400"
ZBellRinger$ = CHR$(7)
ZBulletinMenu$ = ""
ZWasCL = 24
ZCancel$ = CHR$(24)
ZColorReset$ = CHR$(27) + _
"[00;37;40m"
ZConfigFileName$ = "RBBS-PC.DEF"
ZCarriageReturn$ = CHR$(13)
ZDeletedMsg$ = CHR$(226)
ZEndTransmission$ = CHR$(4)
ZEscape$ = CHR$(27)
ZExpectActiveModem = 0
ZFalse = 0
ZF1Key = 59
ZF10Key = 68
ZConfName$ = "MAIN"
CALL SetHiLite (ZTrue)
ZHomeConf$ = ""
ZInConfMenu = -1
ZLastCommand$ = "M "
ZLimitMinsPerSession = 0
ZLineFeed$ = CHR$(10)
ZLineFeeds = NOT ZFalse
ZLineEditChk$ = CHR$(9) + _
ZLineFeed$ + _
CHR$(11) + _
CHR$(12) + _
CHR$(127) + _
CHR$(8) + _
ZBellRinger$ + _
CHR$(26) + _
CHR$(227)
ZLineMes$ = SPACE$(78) ' fixed length string workspace
ZLockStatus$ = "UM UU UB UD"
ZMenuIndex = 2
ZNAK$ = CHR$(21)
ZNoAdvance = ZFalse
ZPageLength = 23
ZParseOff = ZFalse
ZPressEnter$ = " (Press [ENTER] to quit)"
ZPressEnterExpert$ = " ([ENTER] quits)"
ZPressEnterNovice$ = ZPressEnter$
ZPrivateDoor = ZFalse
ZRightMargin = 72
ZReturnLineFeed$ = ZCarriageReturn$ + _
ZLineFeed$
ZSmartTable$ = "CS PB NS FN LN SL DT TM TR TE TL RP RR CT " + _
"C1 C2 C3 C4 C0 DD BD DB UB DL UL FI VY VN " + _
"TY TN BN ND FS LS CN"
ZStartOfHeader$ = CHR$(1)
ZTimeLoggedOn$ = SPACE$(8)
ZTrue = NOT ZFalse
ZUpInc = -1
ZXOff$ = CHR$(19)
ZXOn$ = CHR$(17)
ZInterrupOn$ = CHR$(11) + ZCancel$ + ZXOff$ + ZXOn$ + ZCarriageReturn$
ZOptionEnd$ = ZReturnLineFeed$ + " ,("
ZCrLf$ = ZCarriageReturn$ + ZLineFeed$
* ------[ first line different ]------
ZVersionID$ = "17.4A/0312"
ZWasLG$(1) = "Registration Check Failed"
ZWasLG$(2) = "Sysop name attempted"
ZWasLG$(3) = "Locked out attempt"
ZWasLG$(4) = "Password Attempt Failed"
ZWasLG$(5) = "Auto Lockout done"
ZWasLG$(6) = "Name in use on another Node!"
ZWasLG$(7) = ""
ZWasLG$(8) = "Locked reason read!"
ZWasLG$(9) = "Expired Registration"
CALL GetCommand (ZDebug,ZNetTime$,ZNetBaud$,ZNetReliable$)
ZSubParm = 1
CALL ReadDef (ZConfigFileName$)
REDIM ZWorkAra$(ZMaxWorkVar)
REDIM ZGSRAra$(ZMaxWorkVar)
ZUseTPut = (ZUpperCase OR ZXOnXOff)
ZOrigCallers$ = ZCallersFile$
ZOrigMsgFile$ = ZMainMsgFile$
ZOrigUserFile$ = ZMainUserFile$
ZOrigSysopFN$ = ZSysopFirstName$
ZOrigSysopLN$ = ZSysopLastName$
ZPromptBell = ZPromptBellDef
ZSecretName$ = ZSysopPswd1$ + " " + ZSysopPswd2$
END SUB
'
* REPLACING old line(s) by new
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
* ------[ first line different ]------
ZMinsPerSessionDef = ZMinsPerSession ' KG082101
ZAllOpts$ = ZMainCmds$ + _
ZFileCmd$ + _
ZUtilCmds$ + _
ZLibCmds$ + _
ZGlobalCmnds$ + _
ZSysopCmds$
ZHelpExtension$ = "." + _
ZHelpExtension$
ZCompressedExt$ = ZDefaultExtension$
ZWasQ = INSTR(ZDefaultExtension$,".")
IF ZWasQ > 0 THEN _
ZDefaultExtension$ = LEFT$(ZDefaultExtension$, ZWasQ-1)
ZCurDirPath$ = ZDirPath$
ZTempExpiredSec = ZExpiredSec
ZBegMain = 1
ZBegFile = LEN(ZMainCmds$) + ZBegMain
ZBegUtil = LEN(ZFileCmd$) + ZBegFile
ZBegLibrary = LEN(ZUtilCmds$) + ZBegUtil
ZHelp$(3) = ZHelpPath$ + _
ZHelp$(3)
ZHelp$(4) = ZHelpPath$ + _
ZHelp$(4)
ZHelp$(7) = ZHelpPath$ + _
ZHelp$(7)
ZHelp$(9) = ZHelpPath$ + _
ZHelp$(9)
CALL BreakFileName (ZWelcomeFile$,ZWelcomeFileDrvPath$,Prefix$,_
Extension$,ZTrue)
CALL ASCIICodes ("[","]",ZDefaultLineACK$)
CALL ASCIICodes ("[","]",ZHostEchoOn$)
CALL ASCIICodes ("[","]",ZHostEchoOff$)
CALL ASCIICodes ("[","]",ZEmphasizeOffDef$)
CALL ASCIICodes ("[","]",ZEmphasizeOnDef$)
ZDR1$ = ZFG1Def$
ZDR2$ = ZFG2Def$
ZDR3$ = ZFG3Def$
ZDR4$ = ZFG4Def$
IF ZSubParm = -62 THEN _
EXIT SUB
ZLocalUserMode = (RIGHT$(ZComPort$,1) < "1")
IF ZLocalUserMode THEN _
ZRecycleToDos = ZTrue
ZEchoer$ = ZDefaultEchoer$
IF LEN(ZScreenOutMsg$) < 2 THEN _
ZScreenOutMsg$ = ZStartOfHeader$
ZSmartTextCode$ = CHR$(ZSmartTextCode)
IF ZMaxWorkVar < 13 THEN _
ZMaxWorkVar = 13
'
' *** ESTABLISH RBBS-PC'S DOS SUBDIRECTORIES USAGE ***
'
IF ZMainFMSDir$ <> "" THEN _
ZFMSDirectory$ = ZDirPath$ + _
ZMainFMSDir$ + _
"." + _
ZMainDirExtension$ : _
ZActiveFMSDir$ = ZFMSDirectory$ : _
ZLibDir$ = ZLibDirPath$ + _
ZMainFMSDir$ + _
"." + _
ZLibDirExtension$
ZUpcatHelp$ = ZHelpPath$ + _
ZUpcatHelp$ + _
ZHelpExtension$
IF ZSubDirCount < 1 THEN _
GOTO 123
FOR ZSubDirIndex = 1 TO ZSubDirCount
INPUT #2,ZSubDir$
IF RIGHT$(ZSubDir$,1) <> "\" THEN _
ZSubDir$(ZSubDirIndex) = ZSubDir$ + _
"\" _
ELSE ZSubDir$(ZSubDirIndex) = ZSubDir$
NEXT
GOTO 125
* REPLACING old line(s) by new
1534 ZUserIn$ = ZOutTxt$ ' Not Macro command - pass to normal processing
* ------[ first line different ]------
' * 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
* REPLACING old line(s) by new
1654 ' $SUBTITLE: 'SetBaud - sub to set the baud rate in the RS232'
' $PAGE
'
' NAME -- SetBaud
'
' INPUTS -- PARAMETER MEANING
' ZBaudRateDivisor NUMBER TO DIVIDE THE 8250 CHIP'S
' PROGRAMABLE CLOCK TO ADJUST THE
' BAUD RATE TO THE USER'S BAUD
' RATE (INDEPENDENT OF THE BAUD
' RATE USED TO OPEN THE COMM. PORT)
'
' DESIRED BAUD DIVISIOR (DECIMAL) TO OBTAIN DESIRED BAUD RATE
' RATE PCjr PC AND XT
' 50 2237 2304
' 75 1491 1536
' 110 1017 1047
' 134.5 832 857
' 150 746 768
' 300 373 384
' 600 186 192
' 1200 93 96
' 1800 62 64
' 2000 56 58
' 2400 47 48
' 3600 31 32
' 4800 23 24
' 7200 not available 16
' 9600 not available 12
' 19200 not available 6
' 38400 " 3
' OUTPUTS -- BAUD RATE SET IN THE RS232 INTERFACE
'
' PURPOSE -- To set the baud rate in the RS232 interface
' inpependent of the baud rate the communications port
' was opened at
'
SUB SetBaud STATIC
IF ZCBaud$ = "" THEN _
* ------[ first line different ]------
ZCBaud$ = MID$(ZBaudRates$,(-5 * ZBPS),5) : _ ' BH070401
CALL Trim (ZCBaud$) ' BH070401
Temp! = VAL(ZCBaud$)
IF Temp! > 0 THEN CALL SetBPS (Temp!,ZCBPS)
IF (ZCBPS = 0 OR Temp! = 0) THEN ZCBPS = ZBPS
IF NOT ZKeepInitBaud THEN _
ZTalkToModemAt$ = MID$(ZBaudRates$,(-5 * ZBPS),5) _
ELSE ZTalkToModemAt$ = ZModemInitBaud$
CALL Trim (ZTalkToModemAt$)
IF LEN(ZTalkToModemAt$) < 5 THEN _
ZTalkToModemAt$ = SPACE$(4 - LEN(ZTalkToModemAt$)) + _
ZTalkToModemAt$
IF ZEightBit THEN_
Parity = 2 : _ ' No PARITY
DataBits = 3 : _ ' 8 DATA BITS
StopBits = 0 _ ' 1 STOP BIT
ELSE Parity = 3 : _ ' EVEN PARITY
DataBits = 2 : _ ' 7 DATA BITS
StopBits = 0 ' 1 STOP BIT
ComSpeed! = VAL(ZTalkToModemAt$)
IF ComSpeed! > 19200 THEN _
IF ZFossil THEN _
WasI = &H9600 _
ELSE WasI = 19200 _
ELSE WasI = ComSpeed!
IF ZFossil THEN _
CALL FosSpeed(ZComPort,WasI,Parity,DataBits,StopBits) : _
EXIT SUB
IF ComSpeed! = 2400 THEN _
ZBaudRateDivisor = &H30 + (1 * (ZComputerType = 2)) _
ELSE IF ComSpeed! = 1200 THEN _
ZBaudRateDivisor = &H60 + (3 * (ZComputerType = 2)) _
ELSE IF ComSpeed! = 9600 THEN _
ZBaudRateDivisor = &HC _
ELSE IF ComSpeed! = 300 THEN _
ZBaudRateDivisor = &H180 + (11 * (ZComputerType = 2)) _
ELSE IF ComSpeed! = 450 THEN _
ZBaudRateDivisor = &H100 + (8 * (ZComputerType = 2)) _
ELSE IF ComSpeed! = 4800 THEN _
ZBaudRateDivisor = &H18 _
ELSE IF ComSpeed! = 19200 THEN _
ZBaudRateDivisor = &H6 _
ELSE IF ComSpeed! = 38400 THEN _
ZBaudRateDivisor = &H3
MostSignifByte = FIX (ZBaudRateDivisor / 256)
LeastSignifByte = ZBaudRateDivisor - (MostSignifByte * 256)
LineCntlStatus = INP(ZLineCntlReg)
MSBSave = INP(ZMSB)
OUT ZMSB,0
OUT ZLineCntlReg,LineCntlStatus OR 128
OUT ZLSB,LeastSignifByte
OUT ZMSB,MostSignifByte
OUT ZLineCntlReg,LineCntlStatus
OUT ZMSB,MSBSave
END SUB
* REPLACING old line(s) by new
2018 ' $SUBTITLE: 'SetWhoTo - subroutine to get who a msg/upload is to'
' $PAGE
'
' NAME -- SetWhoTo
'
' INPUTS -- PARAMETER MEANING
' HighestUserRecord
'
' OUTPUTS -- MsgTo$ Who message is to
' RcvrRecNum User record # of who to
'
' PURPOSE -- Asks who a message/upload is to and checks if receiver exists
'
* ------[ first line different ]------
SUB SetWhoTo (EnableCC,MsgTo$,MsgFrom$,RcvrRecNum,Found,AllowPub) STATIC ' KG012502
Temp$ = MsgFrom$
CALL Trim (Temp$)
ZNumHeaders = 0
CALL KillWork (ZNodeWorkFile$)
* REPLACING old line(s) by new
* ------[ first line different ]------
2021 ZOutTxt$ = "To " + LEFT$("A)ll,",-5*AllowPub) + "(S)ysop," + _ ' KG012502
LEFT$("D)istribution,",-14*EnableCC) + _
" or name" + ZPressEnterExpert$
CALL SkipLine (1)
ZSemiOnly = ZTrue
CALL PopCmdStack
IF ZWasQ = 0 OR ZSubParm < 0 THEN _ ' KG022501
GOTO 2033 ' KG022501
IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
CALL QuickTPut1 ("30 Char. Max") : _
GOTO 2021
Found = ZTrue ' KG022501
ZWasDF$ = ZUserIn$(ZAnsIndex) ' KG022501
CALL AllCaps (ZWasDF$) ' KG022501
ZUserIn$(ZAnsIndex) = ZWasDF$ ' KG022501
IF ZWasDF$ = "A" AND AllowPub THEN _ ' KG022501
MsgTo$ = "ALL" _ ' KG022501
ELSE IF ZWasDF$ = "S" THEN _ ' KG022501
MsgTo$ = "SYSOP" _ ' KG022501
ELSE IF ZWasDF$ = "D" AND EnableCC THEN _ ' KG022501
GOTO 2025 _ ' KG022501
ELSE MsgTo$ = ZUserIn$(ZAnsIndex) :_ ' KG022501
CALL AllCaps (MsgTo$) ' KG022501
GOTO 2032
* REPLACING old line(s) by new
2032 RcvrRecNum = 0
* ------[ first line different ]------
IF MsgTo$ <> "ALL" OR NOT AllowPub THEN _ ' KG012502
IF ((LEFT$(MsgTo$,4) <> "ALL " OR NOT AllowPub) AND ZStartHash = 1) THEN _ ' KG012502
CALL CheckInt (MsgTo$) : _ ' KG082201
IF ZTestedIntValue = 0 OR NOT ZSysOp OR (ZSysOp AND ZFileSysParm < 1) THEN _ ' RM030201
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
* REPLACING old line(s) by new
3730 IF TabToSpace > 0 THEN _
WasX$ = " " : _
TabToSpace = TabToSpace - 1 : _
GOTO 3750
CALL FindFKey
IF ZSubParm < 0 THEN _
EXIT SUB
WasX$ = ZKeyPressed$
IF WasX$ = "" THEN _
* ------[ first line different ]------
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
* ------[ first line different ]------
IF NOT ZLocalUser THEN _ ' KG011201
CALL EofComm (Char) : _ ' KG011201
IF Char <> -1 THEN _ ' KG011201
GOTO 3736 ' KG011201
* REPLACING old line(s) by new
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)
* ------[ first line different ]------
IF ZMaxPerDay = 0 THEN _ ' KG082101
ZTimeCredits! = ZTimeCredits! + ZTestedIntValue * 60 ' KG082101
ZElapsedTime = ZElapsedTime - ZTestedIntValue
ZGlobalBankTime = ZGlobalBankTime - ZTestedIntValue
GOSUB 5507
GOTO 5501
* REPLACING old line(s) by new
9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
' $PAGE
'
' NAME -- WhosOn
'
' INPUTS -- PARAMETER MEANING
* ------[ first line different ]------
' ZActiveMessageFile$ Current message file
' ZOrigMsgFile$ Main msg file
'
' OUTPUTS -- None
'
' PURPOSE -- To display who is on each node.
'
SUB WhosOn STATIC ' KG012601
WasA1$ = ZActiveMessageFile$
ZActiveMessageFile$ = ZOrigMsgFile$
CALL OpenMsg
FIELD 1, 128 AS ZMsgRec$
GET 1,1 ' KG012601
NumNodes = VAL(MID$(ZMsgRec$,127)) ' KG012601
FOR NodeIndex = 2 TO NumNodes + 1
GET 1,NodeIndex
ZOutTxt$ = ZFG1$ + "Node" + _
STR$(NodeIndex - 1) + ZFG2$
WasAX$ = MID$(ZMsgRec$,79,5) ' KG012001
CALL Trim (WasAX$) ' KG012001
WasAX$ = RIGHT$(" " + WasAX$,5) + _ ' KG012001
" BPS: "
IF MID$(ZMsgRec$,55,2) = "-1" AND NOT ZSysop THEN _
ZWasY$ = "SYSOP" + SPACE$(21) _
ELSE ZWasY$ = MID$(ZMsgRec$,1,26)
WasAX$ = WasAX$ + ZFG3$ + ZWasY$
IF MID$(ZMsgRec$,40,2) <> "-1" THEN _
WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22)
IF MID$(ZMsgRec$,57,1) = "A" THEN _
ZOutTxt$ = ZOutTxt$ + " Online at " + _
WasAX$ _
ELSE IF NOT ZSysop THEN _
ZOutTxt$ = ZOutTxt$ + _
" Waiting for next caller" _
ELSE ZOutTxt$ = ZOutTxt$ + _
" Offline at " + _
WasAX$
CALL QuickTPut1 (ZOutTxt$)
CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
IF ZNo THEN _
NodeIndex = NumNodes + 2
NEXT
ZActiveMessageFile$ = WasA1$
CALL QuickTPut (ZEmphasizeOff$,0)
END SUB
* REPLACING old line(s) by new
10605 LSET ZUserDnlds$ = MKI$(ZDnlds)
LSET ZUserUplds$ = MKI$(ZUplds)
IF ZEnforceRatios THEN _
LSET ZTodayDl$ = MKS$(ZDLToday!) : _
LSET ZTodayBytes$ = MKS$(ZBytesToday!) : _
LSET ZDlBytes$ = MKS$(ZDLBytes!) : _
LSET ZULBytes$ = MKS$(ZULBytes!)
CALL CheckTime (ZUserLogonTime!, ZSecsUsedSession!, 2)
IF (NOT ZExitToDoors) AND LoggingOff THEN _
TempElapsed! = ZElapsedTime + _
(ZSecsUsedSession! - ZTimeCredits!) / 60 : _
ZTimeCredits! = 0 _
ELSE TempElapsed! = ZElapsedTime - ZExitToDoors*ZMinsInDoors
IF TempElapsed! < -32767 THEN _
TempElapsed! = -32767 _
ELSE IF TempElapsed! > 32767 THEN _
TempElapsed! = 32767
LSET ZElapsedTime$ = MKI$(TempElapsed!)
IF ZAdjustedSecurity THEN _
LSET ZSecLevel$ = MKI$(ZUserSecLevel)
PUT 5,ZUserFileIndex
ZSubParm = 8
CALL FileLock
IF ZActiveUserFile$ <> ZOrigUserFile$ AND LoggingOff THEN _
ZActiveUserFile$ = ZOrigUserFile$ : _
ZUserFileIndex = ZOrigUserFileIndex : _
UpdateDefaults = ZFalse : _
* ------[ first line different ]------
ZAdjustedSecurity = ZFalse : _ ' KG022502
LSET ZLastDateTimeOn$ = ZOrigDateTimeOn$ : _
GOTO 10602
* REPLACING old line(s) by new
20142 IF ZAnsIndex > ZLastIndex THEN _
* ------[ first line different ]------
IF ZLastIndex > 1 OR Drive$ <> "" THEN _ ' KG091001
EXIT SUB _
ELSE GOTO 20141
GOSUB 20143
IF ZSubParm < 0 THEN _
EXIT SUB
ZAnsIndex = ZAnsIndex + 1
GOTO 20142
* REPLACING old line(s) by new
* ------[ first line different ]------
20145 IF Drive$ <> "" THEN _ ' KG091001
ZFileNameHold$ = Prefix$ + "." + Ext$ : _ ' KG091001
CALL FindFile (ZFileName$,ZOK) _ ' KG091001
ELSE CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,"V") ' KG091001
IF ZOK THEN _
GOTO 20148