home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
BBS_UTIL
/
BM0406_A.ZIP
/
0406.ZIP
/
RSB20406.MRG
< prev
next >
Wrap
Text File
|
1994-04-06
|
94KB
|
2,193 lines
* ------------[ BLED merge (c) Ken Goosens ]-------------
* Merge this against RBBSSUB2.BAS to produce RBBSSUB2.NEW
* RBBSSUB2.BAS: Date 6-20-1992 Size 140946 bytes
* BusiMod (tm) mods for RBBS v17.4 - (c) 1993,94 by respective authors
* RBBS v17.4 (c) 1986,1992 by D Thomas Mack
* ------------[ Created 04-06-1994 22:00:00 ]------------
* REPLACING old line(s) by new
' $linesize:132
' $title: 'RBBSSUB2.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
' Copyright 1991 by D. Thomas Mack, all rights reserved.
' Name ...............: RBBSSUB2.BAS
' First Released .....: June 21, 1992
' Subsequent Releases.:
' Copyright ..........: 1986 - 1992
' Purpose.............: The Remote Bulletin Board System for the IBM PC,
' RBBS-PC.BAS utilizes a lot of common subroutines. Those that do not
' require error trapping are incorporated within RBBSSUB 2-5 as
' separately callable subroutines in order to free up as much
' code as possible within the 64K code segment used by RBBS-PC.BAS.
' Parameters..........: Most parameters are passed via a COMMON statement.
'
' Subroutine Line Function of Subroutine
' Name Number
' Macro 1320 Check/execute macro
' AnswerIt 200 Answer the telephone when it rings
' ASCIICodes 129 Allow a CONFIG string to have any ASCII value
' BadChar 455 Check user name for invalid characters
* ------[ first line different ]------
' BankTime 5500 Let caller change banked time
' CheckMacro 1242 Checks for macro and processes
' CopyRight 97 Display RBBS-PC's copyright notice
' DEFALTU 9600 Write out the user's defaults
' DenyAccess 1386 Downgrade security so access denied
' EditALine 2618 Edits a single line
' EditDef 120 Edit configuration parameters
' GetCommand 101 Get RBBS-PC's node id from command line
' GetTime 9140 Calculates callers elapsed time (hh,mm,ss)
' GoIdle 90 Release resources when waiting for keyboard input
' KillMsg 3952 Delete old or unnecessary messages
' Line25 945 Build and/or update line 25 of RBBS-PC's local screen
' LineEdit 3700 Edit a line while minimizing string space consumption
' LPrnt 1480 Subroutine to write to local display
' MLInit 8 Handle MultiLink initialization/de-initialization
' MsgProt 2055 Sets protection for a message
' ParseIt 1637 Parses a string
' PassWrd 660 Verify user & message passwords
' PopCmdStack 1650 Get user input, 1st checking command stack
' PScrn 1483 Print to display
' QuickLPrnt 1482 Quickly writes count of blocks on file transfer
' QuickTPut 1478 Fast, but limited, "TPut" equivalent
' QuickTPut1 1478 Outputs short string following by CR LF
' RemNonAlf 5100 Removes non-alpha characters from a string
' RingCaller 1636 Ring caller's bell and put message in emphasis
' SetBaud 1654 Set baud rate in the 8250 chip of the RS232 interface
' SetCrLf 1496 Set up the necessary carriage return/line feed string
' SetThread 4554 Set up request for threading thru messages
' SetWhoTo 2018 Sets who a message/personal upload is to
' SkipLine 1485 Write a # of blank lines to the communications port
' SearchCmd 1238 Searches list of commands in RBBS for a request
' SecViolation 1380 Process a security violation
' SysMenu 112 Displays sysop menu/status
' SysopChat 4773 Sysop and caller chat
' TestRel 336 Tests for Reliable connect
' TGet 1498 Read a line from the communications port
' TPut 1396 Write a line to the communications port
' Trim 105 Strip leading and trailing blanks from a string
' TrimTrail 107 Strip off specified string off end of another string
' VarInit 109 Initialize system variables
' ViewHelp 1330 Processes help command
' WhoCheck 2250 Checks whether a user exists in user file
' WhosOn 9801 Report status of each node - who's on
'
' $INCLUDE: 'RBBS-VAR.BAS'
'
' $SUBTITLE: 'MLInit - MultiLink initialization/deinitialization'
' $PAGE
'
' NAME -- MLInit
'
' INPUTS -- MLParm = 1 INITIALIZE AT STARTUP OR RE-
' CYLCE TIME
' MLParm = 2 DE-INITIALIZE ON EXITING TO
' A DOOR OR DOS REMOTELY
' MLParm = 3 DE-QUEUE COMMUNICATIONS PORTS
' MLParm = 4 CHECK FOR MULTILINK PRESENT
' ZDoorsTermType
' ZBaudTest!
' ZComPort$
' ZComputerType
'
' OUTPUTS -- NONE
'
' PURPOSE -- To test for the presence of multi-link and set
' multi link options to be compatible with RBBS-PC
'
SUB MLInit (MLParm) STATIC
DEF SEG = 0
IF ZComputerType = 1 _
GOTO 10
IF NOT ZMLCom THEN _
IF ZNetworkType <> 1 THEN _
GOTO 10
ZMultiLinkPresent = PEEK(&H1FE) + 256 * PEEK(&H1FF)
IF ZMultiLinkPresent = 0 THEN _
GOTO 10
ON MLParm GOSUB 30,20,60,10
* REPLACING old line(s) by new
90 ' $SUBTITLE: 'GoIdle - release control when waiting'
' $PAGE
'
' NAME -- GoIdle
'
' INPUTS -- ZMLCom
' ZNetworkType
'
' OUTPUTS -- NONE
'
' PURPOSE -- To relinquish control when RBBS-PC is waiting for
' input from the communications port
'
* ------[ first line different ]------
SUB GoIdle ' RM11159302
IF ZMLCom OR ZNetworkType = 1 THEN _
CALL MLInit(5) : _
EXIT SUB
CALL GiveBack
END SUB
* REPLACING old line(s) by new
97 ' $SUBTITLE: 'CopyRight - subroutine to display RBBS-PC copyright'
' $PAGE
'
' NAME -- CopyRight
'
' INPUTS -- NONE
'
' OUTPUTS -- NONE
'
' PURPOSE -- To display RBBS-PC's copyright notice on the local screen
'
* ------[ first line different ]------
SUB CopyRight ' RM11159302
ZWasA = (ZDebug OR ZExitToDoors OR ZCopyrightSecs < 1)
IF ZWasA THEN _
EXIT SUB
WIDTH 80
ZOutTxt$(1) = "If you use RBBS-PC 17.4, please consider contributing to"
ZOutTxt$(2) = " Capital PC User Group"
ZOutTxt$(3) = " 51 Monroe Street"
ZOutTxt$(4) = " Plaza East Two"
ZOutTxt$(5) = " Rockville, Maryland 20850"
ZOutTxt$(6) = ""
ZOutTxt$(7) = "You are free to copy/share RBBS-PC 17.4 provided"
ZOutTxt$(08)= " 1. This program is distributed unmodified"
ZOutTxt$(09)= " 2. No fee or consideration is charged for RBBS-PC itself"
ZOutTxt$(10)= " 3. This notice is not bypassed or removed."
CLS
KEY OFF
LOCATE ,,0
ZWasA = ZSnoop
ZSnoop = -1
CALL LPrnt(SPACE$(60) + "tm",1)
CALL LPrnt(SPACE$(16) + STRING$(15,205) + " U S E R W A R E " + STRING$(15,205),1)
CALL SkipLine(1)
CALL LPrnt(SPACE$(17) + "Capital PC User Group User-Supported Software",1)
CALL SkipLine (1)
CALL LPrnt(SPACE$(5) + CHR$(214) + STRING$(66,196) + CHR$(183),1)
FOR WasI = 1 TO 10
CALL LPrnt(SPACE$(5) + CHR$(186) + " " + ZOutTxt$(WasI) + SPACE$(62 - LEN(ZOutTxt$(WasI))) + CHR$(186),1)
NEXT
CALL LPrnt(SPACE$(5) + CHR$(211) + STRING$(66,196) + CHR$(189),1)
CALL LPrnt(SPACE$(5) + "Copyright (c) 1983-91 Tom Mack, 39 Cranbury Drive, Trumbull, CT 06611",1)
CALL DelayTime (ZCopyrightSecs) ' KG011602
ZSnoop = ZWasA ' KG011002
END SUB
* REPLACING old line(s) by new
105 ' $SUBTITLE: 'Trim - sub to eliminate leading/trailing blanks'
' $PAGE
'
' NAME -- Trim
'
' INPUTS -- PARAMETER MEANING
' TrimParm$ STRING THAT IS TO HAVE LEADING
' AND TRAILING BLANKS ELIMINATED FROM
'
' OUTPUTS -- TrimParm$ STRING WITH NO LEADING OR TRAILING
' BLANKS
'
' PURPOSE -- To strip leading and trailing blanks
'
* ------[ first line different ]------
SUB Trim (TrimParm$) STATIC ' RM11159302
TrimParm$ = LTRIM$(RTRIM$(TrimParm$)) ' RM11159303
END SUB
'
* REPLACING old line(s) by new
107 ' $SUBTITLE: 'TrimTrail - sub to trim off trailing characters'
' $PAGE
'
' NAME -- TrimTrail
'
' INPUTS -- PARAMETER MEANING
' TrimParm$ WHAT STRING TO Trim FROM
' TrimThis$ WHAT CHARACTER TO Trim OFF END
'
' OUTPUTS -- NONE
'
' PURPOSE -- To remove all occurences of a character from end of string
'
* ------[ first line different ]------
SUB TrimTrail (TrimParm$,TrimThis$) ' RM11159302
IF RIGHT$(TrimParm$, 1) <> TrimThis$ THEN _
EXIT SUB
WasJ = LEN(TrimParm$) - 1
* 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
'
* ------[ first line different ]------
SUB VarInit ' RM11159302
DEF SEG ' Point to BASIC
WIDTH 80 ' Set Screen Width
KEY OFF ' Line 25 turned off
' ********************* Variable Definitions *******************************
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 960012000144001680019200216002400026400288003840057600" ' BB062501/BB09039301/RM11279301
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 C5 C6 C7 C8 C0 DD BD DB UB DL " + _ ' COLR174
"UL FI VY VN " + _ ' COLR174
"TY TN BN ND FS LS CN DC " + _ ' DROP174/RM100301
"C9 CA CB CC CD CE CF " + _ ' DD081801/COLR
"G0 G1 G2 G3 G4 G5 G6 G7 " + _ ' DD081801/COLR/RM02089401
"FD FH FC LT BA BT TP " ' DGS011501-DS/RM02089401/GS02119401
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$
ZVersionID$ = "17.4A/BM/040694" ' RM04069401
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$)
ZUseTPut = (ZUpperCase OR ZXOnXOff)
ZOrigCallers$ = ZCallersFile$
ZOrigMsgFile$ = ZMainMsgFile$
ZOrigUserFile$ = ZMainUserFile$
ZOrigSysopFN$ = ZSysopFirstName$
ZOrigSysopLN$ = ZSysopLastName$
ZPromptBell = ZPromptBellDef
ZSecretName$ = ZSysopPswd1$ + " " + ZSysopPswd2$
ZDropChange = ZFalse ' DROP174
ZANSITest = ZFalse ' RM030101/CHAT174/RM08049303
ZRIPTest = ZFalse ' RM08049302/RIP
ZWelcomeAboard = ZFalse ' NEWU174/RM08049304
ZNetConference = ZFalse ' NET174/RM123101/RM08049305
ZRIPReset$ = "!|*!|0000270P01" ' RM09089301/RIP
ZAllowInternodeChat = ZFalse ' RM11199301
ChatFileName$ = ENVIRON$ ("RCHAT") ' RM09119302
CALL AllCaps (ChatFileName$) ' RM10069305
IF ChatFileName$ = "" THEN _ ' RM09249302
ChatFileName$ = ZDiskForDos$ ' RM09249302
IF RIGHT$(ChatFileName$,1) = "\" THEN _ ' RM09119302
ChatFileName$ = LEFT$(ChatFileName$,LEN(ChatFileName$) - 1) ' RM09119302
ChatFileName$ = ChatFileName$ + "\RBBSCHAT.DEF" ' RM09119302
ZTimeBankInActive = ZFalse ' RM12299301
ZAutoLogoffSecTime! = 20 ' RM01159402
ZOnlyOneTimeLockPerDay = ZFalse ' RM02089401
ZUseCDWorkDrive = ZFalse ' RM03299401
END SUB
'
* REPLACING old line(s) by new
112 ' $SUBTITLE: 'SysMenu - sub to display RBBS-PC SYSOP menu'
' $PAGE
'
' NAME -- SysMenu
'
' INPUTS -- PARAMETER MEANING
'
' OUTPUTS -- NONE
'
' PURPOSE -- TO DISPLAY RBBS-PC's SYSOP MENU ON THE LOCAL SCREEN
'
SUB SysMenu STATIC
ZLocalUser = ZTrue
ZSnoop = ZTrue
ZNonStop = ZTrue
CALL CheckTime (TIMER, ZDelay!, 1)
CLS
ZStopInterrupts = ZTrue
ZBypassTimeCheck = ZTrue
CALL BufFile ("MENU0",WasX)
ZNonStop = ZFalse
ZBypassTimeCheck = ZFalse
ZLocalUser = ZFalse
IF NOT ZOK THEN _
CALL LPrnt("MENU0 not on default drive",1)
* ------[ first line different ]------
LOCATE 2,14 ' MENU174/RM040603
IF ZDosANSI THEN _ ' MENU174/RM101303
CALL LPrnt(ZEscape$ + "[1m" + ZVersionID$,0) _ ' MENU174/RM101303/RM040603
ELSE _ ' MENU174/RM101303
CALL LPrnt(ZVersionID$,0) ' RM040603
LOCATE 2,40 ' MENU174
CALL LPrnt(ZNodeID$,0)
LOCATE 2,59 ' MENU174
WasX$ = DATE$
CALL LPrnt(LEFT$(WasX$,6) + RIGHT$(WasX$,2),0)
LOCATE 2,71 ' MENU174
CALL LPrnt(LEFT$(TIME$,5),0)
CALL GetLC ' LAST174
LOCATE 4,2 ' LAST174
CALL LPrnt ("Last Caller: " + ZLastCaller$,0) ' LAST174
IF ZFMSDirectory$ <> "" THEN _
LOCATE 7,27 : _ ' MENU174
CALL LPrnt("YES",0)
IF ZExtendedLogging THEN _
LOCATE 8,27 : _ ' MENU174
CALL LPrnt("YES",0)
IF ZFossil THEN _
LOCATE 9,27 : _ ' MENU174
CALL LPrnt("YES",0)
LOCATE 10,26 : _ ' MENU174
CALL LPrnt(ZComPort$,0)
LOCATE 11,26 ' MENU174
CALL LPrnt (STR$(CINT(FRE("A")/1024)) + "k",0)
IF ZDebug THEN _
LOCATE 12,27 : _ ' MENU174
CALL LPrnt("Yes",0)
LOCATE 15,20 ' MENU174
CALL LPrnt (ZMenuNewDate$,0) ' MENU174
LOCATE 15,32 ' MENU174
CALL LPrnt (ZMenuNewTime$,0) ' MENU174
LOCATE 16,14 ' MENU174
CALL LPrnt (STR$(ZMenuNewCalls),0) ' MENU174
LOCATE 16,33 ' MENU174
CALL LPrnt (STR$(ZMenuNewUpld),0) ' MENU174
LOCATE 17,14 ' MENU174
CALL LPrnt (STR$(ZMenuNewUsers),0) ' MENU174
LOCATE 17,33 ' MENU174
CALL LPrnt (STR$(ZMenuNewSysop),0) ' MENU174
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
200 ' $SUBTITLE: 'AnswerIt - sub to establish connection'
' $PAGE
'
' NAME -- AnswerIt
'
' INPUTS -- PARAMETER MEANING
' ZSubParm = 1 WAIT FOR PHONE TO RING
' = 2 CONTINUE LOOKING FOR CONNECT
' = 3 RENTRY AFTER FUNCTION KEY
' = 4 GO ON LINE IMMEDIATELY
' ZBG LOCAL DISPLAY'S BACKGROUND
' ZBorder LOCAL DISPLAY'S BORDER COLOR
' ZComPort$ COMMUNICATIONS PORT NAME
' ZComputerType TYPE OF COMPUTER RUNNING ON
' ZDumbModem NON-HAYES TYPE MODEM FLAG
' ZExtendedLogging EXTENDED CALLERS LOG FLAG
' ZFG LOCAL DISPLAY'S FOREGROUND
' ZModemAnswerCmd$ COMMAND TO ANSWER PHONE
' ZModemCntlReg LOCATION WasOF MODEM CNTRL. REG
' ZModemCountRingsCmd$ COMMAND TO COUNT PHONE RINGS
' ZModemInitBaud$ BAUD AT WHICH TO OPEN COMM.
' ZModemResetCmd$ COMMAND TO RESET THE MODEM
' ZModemStatusReg LOCATION OF MODEM STATUS REG
' ZPrinter FLAG TO PRINT ON LOCAL PRT.
' ZRequiredRings NUMBER OF RINGS TO ANSWER ON
' ZSnoop FLAG TO DISPLAY ON LOCAL PC
' ZSysopNext FLAG TO GIVE SYSOP CONTROL
'
' OUTPUTSS -- BaudTest! BAUD RATE TO SET RS232 AT
' ZEightBit PARITY INDICATOR
' ZReliableMode INDICATES MODEM-SUPPLIED
' "ERROR-FREE" Protocol ACTIVE
' ZSubParm = 1 Carrier DETECT Found (I.E.
' MODEM AUTO-ANSWERED).
' = 2 ANSWERED THE PHONE AND
' Carrier DETECT OCCURRED.
' = 3 SYSOP HIT "ESC" KEY ON THE
' LOCAL KEYBOARD.
' = 4 ANSWERED THE PHONE BUT NO
' Carrier WAS DETECTED.
' = 5 COMM. BUFFER OVERFLOW.
' = 6 FUNCTION KEY PRESSED ON THE
' LOCAL KEYBOARD.
'
' PURPOSE -- To detect incoming call and establish connection.
'
SUB AnswerIt STATIC
* ------[ first line different ]------
IF (NOT ZExitToDoors) AND (NOT ZSubBoard) THEN _ ' MENU174/RM08079301
CALL GetMenuNew ' MENU174/RM112103/RM050401
ZErrCode = 0
ZReliableMode = ZFalse
ZFF = ZSubParm
ZSubParm = 0
ON ZFF GOTO 201,324,245,320
'
'
' * INITIALIZE MODEM AND ANNOUNCE RBBS-PC IS UP AND READY FOR CALLS
'
'
* REPLACING old line(s) by new
235 ZEightBit = ZTrue
IF ZExitToDoors THEN _
CALL ReadProf
ZSubParm = -10
CALL Carrier
IF ZSubParm = 0 AND _
ZExitToDoors THEN _
ZSubParm = 1 : _
GOTO 335
IF ZSubParm = 0 AND _
ZExpectActiveModem THEN _
ZBaudTest! = VAL(ZNetBaud$) : _
CALL TestRel (ZNetReliable$) : _
GOTO 328
IF ZExpectActiveModem OR _
ZExitToDoors THEN _
ZSubParm = 4 : _
ZExitToDoors = ZFalse : _
EXIT SUB
IF ZSubParm = 0 THEN _
ConnectDelay! = TIMER + ZMaxCarrierWait : _
GOTO 324
CALL SysMenu
CALL ModemPut (ZModemResetCmd$)
CALL DelayTime (ZModemInitWaitTime)
CALL ModemPut (ZModemInitCmd$)
RingBack = ZFalse
* ------[ first line different ]------
LOCATE 20,23 ' MENU174
IF ZRequiredRings = 0 THEN _
CALL LPrnt("WAITING FOR CARRIER",0) : _
GOTO 237
IF MID$(ZModemInitCmd$, _
INSTR(ZModemInitCmd$,"S0") + 3,3) = "255" THEN _
CALL LPrnt("RING BACK SYSTEM",0) : _
RingBack = ZTrue : _
GOTO 236
CALL LPrnt("WAITING FOR RING ",0) ' MENU174
* REPLACING old line(s) by new
* ------[ first line different ]------
236 LOCATE 20,40 : _ ' MENU174
CALL LPrnt(MID$(STR$(ZRequiredRings),2),0)
* REPLACING old line(s) by new
* ------[ first line different ]------
237 LOCATE 19,23 ' MENU174
IF ZDosANSI THEN _
CALL LPrnt(ZEscape$ + "[05m" + "YES" + ZEscape$ + "[00m",0) _
ELSE CALL LPrnt ("YES",0)
COLOR ZFG,ZBG,ZBorder
LOCATE 21,23 ' MENU174
'
'
' * GET READY TO ANSWER INCOMMING CALL:
' * 1. LET THE MODEM "AUTO-ANSWER" FOR RBBS-PC.
' * REQUIRED RINGS = 0 AND S0 = 1 IN MODEM INIT COMMAND.
' * 2. ANSWER THE MODEM ON A SPECIFIED NUMBER OF RINGS.
' * REQUIRED RINGS > 0 AND S0 = 254 IN MODEM Init COMMAND.
' * 3. ANSWER THE MODEM ON A SPECIFIED NUMBER OF RINGS AFTER A USER
' * First CALLS AND THEN HANGS UP (I.E. RING-BACK).
' * REQUIRED RINGS > 0 AND S0 = 255 IN MODEM INIT COMMAND.
'
'
WasQQ = 255
WasI = INSTR(ZModemInitCmd$,"S0")
IF WasI = 0 THEN _
GOTO 239
Sreg = VAL(MID$(ZModemInitCmd$,WasI + 3,3)) ' JR070102
IF Sreg = 255 THEN ' JR070103
WasQQ = 0 : _ ' JR070103
ZBlk = WasQQ ' JR070103
END IF ' JR070103
ZSecsUsedSession! = TIMER
ZSubParm = 1
CALL Line25
RingAnswer = ZTrue
IF RingBack THEN _
RingAnswer = ZFalse
* REPLACING old line(s) by new
260 IF RingBackWaitStart! > 0 THEN _
CALL CheckTime(RingBackWaitStart!, TempElapsed!, 2) : _
IF TempElapsed! > 45 THEN _
RingBackWaitStart! = 0 : _
RingBackCount = 0 : _
RingAnswer = ZFalse: _
IF RingBack THEN _
* ------[ first line different ]------
LOCATE 21,23 : _ ' MENU174
CALL LPrnt("Ringback timeout" + ZPagingPtrSupport$,1)
* REPLACING old line(s) by new
266 IF (INP(ZModemStatusReg) AND &H40) > 0 AND _
* ------[ first line different ]------
ZRequiredRings > 0 THEN ' JR070107
IF Sreg = 252 OR Sreg = 253 THEN ' JR070107
PAnswer = 0 ' JR070107
CALL PersonalRing(PAnswer, Sreg) ' JR070107
IF PAnswer = 1 THEN ' JR070107
GOTO 276 ' JR070107
END IF ' JR070107
ELSE ' JR070107
GOTO 276 ' JR070107
END IF ' JR070107
END IF ' JR070107
* REPLACING old line(s) by new
270 IF ZRecycleWait > 0 THEN _
CALL CheckTime(InactiveDelay!, TempElapsed!, 1) : _
IF TempElapsed! <= 0 THEN _
ZSubParm = 8 : _
EXIT SUB
* ------[ first line different ]------
IF Sreg = 252 OR Sreg = 253 THEN ' JR070117
IF PAnswer = 0 THEN ' JR070118
CALL GoIdle ' JR070119
GOTO 247 ' JR070120
ELSE ' JR070121
GOTO 276 ' JR070122
END IF ' JR070123
END IF ' JR070123
CALL FlushCom (WasX$)
IF LEN(WasX$) > 0 THEN _
ModemResponse$ = ModemResponse$ + WasX$ : _
RingDetected = (INSTR(ModemResponse$,"RING") > 0) : _
ConnectDetected = (INSTR(ModemResponse$,"ONNECT") > 0) : _
NoCall = (NOT RingDetected) AND (NOT ConnectDetected)
IF RingDetected AND ZRequiredRings > 0 THEN _
MID$(ModemResponse$, INSTR(ModemResponse$,"RING")+1,1) = "A" : _
RingDetected = ZFalse : _
GOTO 276
CALL GoIdle
GOTO 247
* REPLACING old line(s) by new
* ------[ first line different ]------
305 LOCATE 21,23 ' MENU174
IF ZDosANSI THEN _ ' MENU174/RM101303
CALL LPrnt(ZEscape$ + "[1;40;31m" + TIME$ + " Ring " + _ ' MENU174/RM101303
STR$(ZWasQ) + ZEscape$ + "[00m",0) _ ' MENU174/RM101303
ELSE _ ' MENU174/RM101303
CALL LPrnt(TIME$ + " Ring " + STR$(ZWasQ),0) ' MENU174/RM101303
* REPLACING old line(s) by new
336 ' $SUBTITLE: 'TestRel - Test for Reliable mode connection'
' $PAGE
'
' NAME -- TestRel
'
' INPUTS -- PARAMETER MEANING
' Strng$ String to check for reliable
'
' OUTPUTS -- ZReliableMode Reliable mode indicator
'
' PURPOSE -- To test for reliable connect
'
* ------[ first line different ]------
SUB TestRel (Strng$) ' RM11159302
ZReliableMode = ZFalse
IF Strng$ = "" THEN _
EXIT SUB
IF INSTR(Strng$,"REL") OR _
INSTR(Strng$,"R C") OR _
INSTR(Strng$,"ARQ") OR _
INSTR(Strng$,"LAP") OR _
INSTR(Strng$,"ECL") OR _
INSTR(Strng$,"AFT") OR _
INSTR(Strng$,"MNP") THEN _
ZReliableMode = -1
ZWasZ = INSTR(Strng$,"ARRIER ")
IF ZWasZ > 0 THEN _
IF VAL(MID$(Strng$,ZWasZ+6)) > 0 THEN _
ZCBaud$ = STR$(VAL(MID$(Strng$,ZWasZ+6))) : _
CALL Trim (ZCBaud$)
END SUB
* REPLACING old line(s) by new
455 ' $SUBTITLE: 'BadChar - sub to check user names for bad characters'
' $PAGE
'
' NAME -- BadChar
'
' INPUTS -- PARAMETER MEANING
' PassedName$ USER NAME
'
' OUTPUTS -- PassedName$ USER NAME WILL CONTAIN ""
' IF BAD CHARACTERS Found
'
' PURPOSE -- To check user names for invalid characters
'
* ------[ first line different ]------
SUB BadChar (PassedName$) ' RM11159302
WasJ = 1
WasXX = LEN(PassedName$)
* REPLACING old line(s) by new
675 ZOutTxt$ = "Enter Password"
ZHidden = ZTrue
CALL PopCmdStack
IF ZSubParm < 0 THEN _
ZPswdFailed = ZTrue : _
EXIT SUB
ZHidden = ZFalse
ZWasZ$ = ZUserIn$
* ------[ first line different ]------
ZOldPassword$ = ZUserIn$ ' PSWD174
* REPLACING old line(s) by new
949 ZLine25$ = "Node " + _
ZNodeID$ + " " + _
ZPageStatus$ + " " + _
MID$("AVL ",1, -4 * ZSysopAvail) + _
* ------[ first line different ]------
MID$("PAGE ",1, -5 * ZSysopAnnoy) + _ ' ST081503/MENU174
MID$("LPT ",1, -4 * ZPrinter) + _
MID$("SN ",1, -3 * ZSnoop) + _ ' ST081503/MENU174
MID$("SYS ",1, -4 * ZSysopNext) + _
MID$("XOFF ",1,-5 * ZXOffEd) + _
MID$("CTS ",1,-4 * ZNotCTS) + _
SPACE$(1) + ZCBaud$ ' DGS060401-DS
'
'
' * LINE 25 UPDATE ROUTINE
'
'
* REPLACING old line(s) by new
950 IF NOT ZSnoop THEN _
EXIT SUB
ZCursorLine = CSRLIN
ZCursorRow = POS(0)
ZWasHH = LEN(ZActiveUserName$) + _
LEN(ZWasCI$) + _
LEN(ZLine25$) + _
* ------[ first line different ]------
LEN(STR$(ZUserSecLevel)) + _ 'Dgs-008
LEN(STR$(INT(MinsRemaining))) + 2 'Dgs-008
LOCATE 25,1
IF ZNetworkType = 0 THEN _
IF ZAutoDownYes THEN _
ZLockStatus$ = " AD " + _
ZTimeLoggedOn$ _
ELSE ZLockStatus$ = SPACE$(4) + _
ZTimeLoggedOn$
IF ZWasHH > 63 THEN _
ZWasHH = 0 _
ELSE _
ZWasHH = 64 - ZWasHH
ZLine25Hold$ = ZLine25$ + _
SPACE$(ZWasHH) + _
STR$(ZUserSecLevel) + _
" " + _
ZActiveUserName$ + _
" " + _
ZWasCI$ + _
" " + _ 'Dgs-008
STR$(INT(MinsRemaining)) + _ 'Dgs-008
" "
ZLine25Hold$ = LEFT$(ZLine25Hold$, 66) + " " + ZLockStatus$
IF ZDosANSI THEN _
ZLine25Hold$ = ZEscape$ + "[1;36;44m" + ZLine25Hold$ + _ ' DD071003
+ ZEscape$ + "[K" + ZColorReset$ + ZEmphasizeOff$ ' RM03149401
' IF ZDosANSI THEN _
' ZLine25Hold$ = ZColorReset$ + ZLine25Hold$ + ZEmphasizeOff$
CALL LPrnt(ZLine25Hold$,0)
LOCATE ZCursorLine,ZCursorRow
END SUB
* REPLACING old line(s) by new
1380 ' $SUBTITLE: 'VIOLATION - handles all security violations'
' $PAGE
'
' NAME -- SecViolation
'
' INPUTS -- PARAMETER MEANING
'
' OUTPUTS -- ZCursorLine CURRENT LINE ON SCREEN
' ZCursorRow CURRENT ROW ON ZCursorLine
'
' PURPOSE -- Inform caller of security violation, augment count of
' violations and determine whether too many occurred.
'
* ------[ first line different ]------
SUB SecViolation ' RM11159302
CALL FlushKeys
CALL BufFile (ZSecVioHelp$,WasX)
IF NOT ZOK THEN _
CALL QuickTPut1 ("Sorry, " + ZFirstName$ + ", action not permitted")
CALL UpdtCalr ("SV!-" + ZViolation$,2)
ZLastIndex = 0
CALL Muzak (3)
ZViolationsThisSession = ZViolationsThisSession + 1
IF ZMaxViolations = 0 OR ZViolationsThisSession <= ZMaxViolations THEN _
EXIT SUB
* REPLACING old line(s) by new
1386 ' $SUBTITLE: 'DenyAccess - sub to permanently deny access'
' $PAGE
'
' NAME -- DenyAccess
'
' INPUTS -- PARAMETER MEANING
'
' OUTPUTS -- (USER'S RECORD)
'
' PURPOSE -- Permanently resets user's security level when access denied
'
* ------[ first line different ]------
SUB DenyAccess ' RM11159302
CALL TPut
ZLogonErrorIndex = 5
ZSubParm = 6
CALL FileLock
CALL OpenUser (ZHighestUserRecord)
FIELD 5, 128 AS ZUserRecord$
GET 5,ZUserFileIndex
MID$(ZUserRecord$,47,2) = MKI$(ZUserSecLevel)
PUT 5,ZUserFileIndex
ZSubParm = 8
CALL FileLock
END SUB
* REPLACING old line(s) by new
* ------[ first line different ]------
1476 IF ASC(ZWasY$) < 127 THEN ' UG070509
ZCommPortStack$ = ZCommPortStack$ + ZWasY$
IF ZTurboKey THEN ' UG070509/RM030602
ZRet = ZTrue ' UG070509
END IF ' UG070509
END IF ' UG070509
RETURN
END SUB
* REPLACING old line(s) by new
1478 ' $SUBTITLE: 'QuickTPut - subroutine to quickly write to terminal'
' $PAGE
'
' NAME -- QuickTPut
'
' INPUTS -- PARAMETER MEANING
' Strng$ STRING TO WRITE OUT
' NumReturns NUMBER OF CARRIAGE RETURNS
'
' OUTPUTS -- NONE
'
' PURPOSE -- Subroutine to quickly write to the terminal. This is
' different from "TPut" in the things it doesn't do:
' A.) No function key check,
' B.) No conversion to upper case,
' C.) No check for carrier present
' D.) No check for imbedded carriage return in "Strng$"
' E.) No support for XON/XOff
'
* ------[ first line different ]------
SUB QuickTPut (Strng$,NumReturns) ' RM11159302
IF ZSubParm < 0 THEN _
EXIT SUB
IF ZUseTPut THEN _
ZOutTxt$ = Strng$ : _
ZSubParm = 4 : _
CALL TPut : _
CALL SkipLine (NumReturns) : _
EXIT SUB
CALL PutCom (Strng$)
LOCATE ,,1
CALL LPrnt (Strng$,0)
CALL SkipLine (NumReturns)
END SUB
SUB QuickTPut1 (Strng$) ' RM11159302
CALL QuickTPut (Strng$,1)
END SUB
* REPLACING old line(s) by new
1480 ' $SUBTITLE: 'LPrnt - subroutine to write to display'
' $PAGE
'
' NAME -- LPrnt
'
' INPUTS -- PARAMETER MEANING
' Strng$ STRING TO WRITE OUT
' NumReturns NUMBER OF CARRIAGE RETURNS
'
' OUTPUTS -- NONE
'
' PURPOSE -- Subroutine to write to the display.
'
* ------[ first line different ]------
SUB LPrnt (Strng$,NumReturns) ' RM11159302
IF NOT ZSnoop THEN _
EXIT SUB
CALL PScrn (Strng$)
IF ZVoiceType <> 0 AND ZTalkAll THEN _
CALL Talk (65,Strng$)
IF ZUseBASICWrites THEN _
FOR WasI = 1 TO NumReturns : _
PRINT : _
NEXT : _
ELSE FOR WasI = 1 TO NumReturns : _
LOCATE ,,1 : _
CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
LOCATE ZWasCL,ZWasCC : _
NEXT
END SUB
* REPLACING old line(s) by new
1482 ' $SUBTITLE: 'QuickLPrnt - subroutine to quickly write to display'
' $PAGE
'
' NAME -- QuickLPrnt
'
' INPUTS -- PARAMETER MEANING
' Strng$ STRING TO WRITE OUT
' Num NUMBER OF CARRIAGE RETURNS
'
' OUTPUTS -- NONE
'
' PURPOSE -- Subroutine to quickly write to the display.
' Overwrites, and puts up count
* ------[ first line different ]------
SUB QuickLPrnt (Strng$,Num) ' RM11159302
IF ZSnoop THEN _
LOCATE ,1,1 : _
CALL Pscrn (Strng$ + STR$(Num))
END SUB
* REPLACING old line(s) by new
1483 ' $SUBTITLE: 'PScrn - subroutine to print to the screen'
' $PAGE
'
' NAME -- PScrn
'
' INPUTS -- PARAMETER MEANING
' Strng$ STRING TO WRITE OUT
'
' OUTPUTS -- NONE
'
' PURPOSE -- Writes to local screen regardless of whether you have
' carrier. Assumes have positioned cursor where you want.
'
* ------[ first line different ]------
SUB PScrn (Strng$) ' RM11159302
IF Strng$ = "" THEN _
EXIT SUB
IF ZUseBASICWrites THEN _
PRINT Strng$; _
ELSE CALL ANSI (Strng$,ZWasCL,ZWasCC) : _
LOCATE ZWasCL,ZWasCC
END SUB
* REPLACING old line(s) by new
1485 ' $SUBTITLE: 'SkipLine - sub to write a blank line to user'
' $PAGE
'
' NAME -- SkipLine
'
' INPUTS -- PARAMETER MEANING
' ZLocalUser
' ZModemStatusReg
' NumReturns
' ZReturnLineFeed$
' ZSnoop
'
' OUTPUTS -- NONE
'
' PURPOSE -- Skip lines on the user's terminal
'
* ------[ first line different ]------
SUB SkipLine (NumReturns) ' RM11159302
FOR WasI=1 TO NumReturns
CALL PutCom (ZReturnLineFeed$)
NEXT
IF NOT ZSnoop THEN _
GOTO 1486
IF ZUseBASICWrites THEN _
FOR WasI = 1 TO NumReturns : _
PRINT : _
NEXT _
ELSE FOR WasI = 1 TO NumReturns : _
LOCATE ,,1 : _
CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
LOCATE ZWasCL,ZWasCC : _
NEXT
* REPLACING old line(s) by new
1496 ' $SUBTITLE: 'SetCrLf -- sub to set up nulls/lf's for output'
' $PAGE
'
' NAME -- SetCrLf
'
' INPUTS -- PARAMETER MEANING
' ZCarriageReturn$ CARRIAGE RETURN CHARACTER
' ZLineFeed$ LINE FEED CHARACTER
' ZLineFeeds LINE FEED Switch
' ZNul$ NULL CHARACTER
'
' OUTPUTS -- ZReturnLineFeed$ END-OF-LINE STRING
'
' PURPOSE -- Set up the necessary nulls/line feeds to end
' each output to the communications port with.
'
* ------[ first line different ]------
SUB SetCrLf ' RM11159302
ZReturnLineFeed$ = _
MID$(ZCarriageReturn$,1, - (NOT ZLocalUser)) + _
ZNul$ + _
MID$(ZLineFeed$,1, - (ZLineFeeds <> 0))
END SUB
* REPLACING old line(s) by new
1500 CALL Carrier
IF ZSubParm = -1 THEN _
EXIT SUB
ZLinesPrinted = 0
ZDisplayAsUnit = ZFalse
InStack = ZFalse
GOSUB 1580
ZWasA = 0
ZWasB = 0
ZWasC = 0
ZWasQ = 1
ZStoreParseAt = 1
ZYes = ZFalse
ZUserIn$ = ""
SleepWarn = ZTrue
ZNo = ZFalse
ZNonStop = (ZPageLength < 1)
IF ZOutTxt$ = "" THEN _
GOTO 1525
* ------[ first line different ]------
IsMore = (LEFT$(ZOutTxt$,4) = "More") OR (LEFT$(ZOutTxt$,6) = "Press ") ' UG070510
IF ZHidden THEN _
ZOutTxt$ = ZOutTxt$ + " (dots will echo)" ' UG070510
IF (NOT ZVerifying) OR HoldA$ = "" THEN _
CALL ColorPrompt (ZOutTxt$) : _
ZOutTxt$ = ZOutTxt$ + _
MID$("? ! ",2*ZTurboKey+1,2) : _
HoldA$ = ZOutTxt$ _
ELSE ZOutTxt$ = HoldA$
ZSubParm = 4
StopSave = ZStopInterrupts
ZStopInterrupts = ZTrue
CALL TPut
ZStopInterrupts = StopSave
IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
EXIT SUB
* REPLACING old line(s) by new
1523 IF ZPromptBell THEN _
IF ZLocalUser THEN _
* ------[ first line different ]------
BEEP _ ' RM041101
ELSE CALL PutCom(ZBellRinger$)
* 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
1537 CALL CheckTime(ZAutoLogoff!, TempElapsed!, 3)
* ------[ first line different ]------
IF TempElapsed! < ZAutoLogoffSecTime! THEN _ ' RM09169301 30
IF TempElapsed! <= 0 THEN _
CALL SkipLine (1) : _
ZSubParm = -1 : _
ZNo = ZTrue : _
ZRet = ZTrue : _
ZSleepDisconnect = NOT ZAutoLogoffReq : _
IF ZAutoLogoffReq THEN _
CALL UpdtCalr ("Auto-logoff",1): _
EXIT SUB _
ELSE CALL UpdtCalr ("Sleep disconnect",1) : _
EXIT SUB _
ELSE IF SleepWarn THEN _
SleepWarn = ZFalse : _
Temp! = TempElapsed! : _
ZOutTxt$ = "Auto-Logoff in " + STR$(ZAutoLogoffSecTime!) + " seconds..." : _ ' RM09169301 30
CALL RingCaller : _
CALL QuickTput ("Press Enter to cancel " + STR$(ZAutoLogoffSecTime!),0) _ ' RM09169301 30
ELSE IF Temp! - TempElapsed! > 1.0 THEN _
CALL QuickTPut (ZBackSpace$+ZBackSpace$,0) : _
CALL QuickTPut (RIGHT$(STR$(CINT(TempElapsed!)),2),0) : _
Temp! = TempElapsed!
CALL FindFKey
IF ZSubParm < 0 THEN _
EXIT SUB
* REPLACING old line(s) by new
1545 WasX$ = ZWasY$
* ------[ first line different ]------
IF ZFossil AND NOT IsMore AND ZTurboKey THEN ' UG070510/RM030602
CALL FosTxPurge(ZComPort) ' UG070510
CALL PutCom(ZEmphasizeOff$ + ZEmphasizeOff$) ' UG070510
END IF ' UG070510
ZAutoLogoffReq = ZFalse
IF INSTR(ZLineEditChk$,ZWasY$) > 5 _
GOTO 1635
IF ZWasY$ < " " AND ZWasY$ <> ZCarriageReturn$ THEN _
GOTO 1525
IF ZWasY$ = "^" THEN _
GOTO 1525
IF ZWasY$ = ZCarriageReturn$ THEN _
GOTO 1547 _
ELSE GOSUB 1550
IF ZTurboKey < 1 THEN _
GOTO 1546
IF ZWasY$ = " " THEN _
ZWasY$ = ""
IF ZWasY$ <> "/" THEN _
ZUserIn$ = ZWasY$ : _
ZWasY$ = ZCarriageReturn$ : _
WasX$ = ZWasY$ : _
GOTO 1547
ZTurboKey = 0
GOTO 1525
* REPLACING old line(s) by new
1580 ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
IF ZAutoLogoffReq OR ZWaitExpired THEN _
ZWaitExpired = ZFalse : _
IF NOT ZSuspendAutologoff THEN _
* ------[ first line different ]------
ZAutoLogoff! = TIMER + ZAutoLogoffSecTime! ' RM09169301 30
RETURN
* REPLACING old line(s) by new
1636 ' $SUBTITLE: 'RingCaller - sub to use sound + screen emphasis'
' $PAGE
'
' NAME -- RingCaller
'
' INPUTS -- PARAMETER MEANING
' ZOutTxt$ STRING TO EMPHASIZE
'
' OUTPUTS -- none
'
' PURPOSE -- Rings the users bell before and after string
' (but not snooping sysop) and adds emphasis around
' message sent.
'
* ------[ first line different ]------
SUB RingCaller ' RM11159302
WasX$ = LEFT$(ZBellRinger$,-ZLocalUser)
CALL PutCom (ZBellRinger$)
CALL LPrnt (WasX$,0)
ZSubParm = 2
ZOutTxt$ = ZEmphasizeOn$ + ZOutTxt$ + ZEmphasizeOff$
CALL TPut
CALL PutCom (ZBellRinger$)
CALL LPrnt (WasX$,0)
END SUB
* REPLACING old line(s) by new
1640 ZWasB = INSTR(ZWasA,ZUserIn$,ParseChar$)
ZWasC = ZWasB-ZWasA
IF ZWasC < 1 THEN _
ZEOL = ZTrue : _
ZWasC = 128
ZWasDF$ = MID$(ZUserIn$,ZWasA,ZWasC)
IF ZWasDF$ = "" THEN GOTO 1641
ZWasQ = ZWasQ + 1
ZStoreParseAt = ZStoreParseAt + 1
ZUserIn$(ZStoreParseAt) = ZWasDF$
CALL AllCaps(ZWasDF$)
WasX = INSTR(";NS;/G;C;",";"+ZWasDF$+";")
IF WasX = 0 THEN GOTO 1641
ZNonStop = ZNonStop OR (WasX = 1) OR (WasX = 7 AND NOT ZStackC)
IF ZStoreParseAt > 1 THEN IF INSTR("Jj",ZUserIn$(ZStoreParseAt-1)) THEN _
ZNonStop = (ZPageLength < 1)
* ------[ first line different ]------
ZAutoLogoffReq = ZAutoLogoffReq OR (WasX = 4)
IF ZAutoLogoffReq THEN
IF ZFileSysParm > 0 AND (ZFF = 2 OR ZFF = 7) THEN _ ' RM02149401 ' RM02149401
CALL SkipLine (1) ' RM02149401
CALL QuickTPut1 (ZEmphasizeOn$ + "Auto-logoff" + _ ' RM02149401
" requested" + ZEmphasizeOff$) ' BTCH174
END IF ' RM02149401
IF ZWasQ > 0 AND WasX < 7 THEN _
ZWasQ = ZWasQ - 1 : _
ZStoreParseAt = ZStoreParseAt - 1
* 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
* ------[ first line different ]------
' 12000 not available 10 ' CONN174
' 14400 not available 8 ' CONN174
' 19200 not available 6
' 21600 " 5 ' BB09039301
' 24000 " 4 ' RM11279301
' 26400 " 4 ' RM11279301
' 28800 " 4 ' BB062501
' 38400 " 3
' 57600 " 2 ' BB062501
' 115200 " 1 ' BB09039301
' 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 _
IF VAL(ZNetBaud$) > 0 THEN _ ' RM120901
ZCBaud$ = STR$(ZBaudTest!) : _ ' RM120901
CALL Trim (ZCBaud$) _ ' RM120901
ELSE _ ' RM120901
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 _ ' RM041101
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! > 9600 THEN ' RM09069301
IF ZFossil THEN _ ' RM09069301
IF ComSpeed! = 12000 THEN _ ' RM09069301
WasI = &H2E00 _ ' RM09069301
ELSE IF ComSpeed! = 14400 THEN _ ' RM09069301
WasI = &H3840 _ ' RM09069301
ELSE IF ComSpeed! = 16800 THEN _ ' RM09069301
WasI = &H41A0 _ ' RM09069301
ELSE IF ComSpeed! = 19200 THEN _ ' RM09069301
WasI = &H4B00 _ ' RM09069301/BB09199301
ELSE IF ComSpeed! = 21600 THEN _ ' BB09039301
WasI = &H5460 _ ' BB09039301
ELSE IF ComSpeed! = 24000 THEN _ ' RM11279301
WasI = &H5E88 _ ' RM11279301
ELSE IF ComSpeed! = 26400 THEN _ ' RM11279301
WasI = &H6720 _ ' RM11279301
ELSE IF ComSpeed! = 28800 THEN _ ' BB062501
WasI = &H7080 _ ' BB062501/BB09039301
ELSE IF ComSpeed! = 38400 THEN _ ' RM09069301
WasI = &H9600 _ ' RM09069301
ELSE IF ComSpeed! = 57600 THEN _ ' BB062501
WasI = &HE100 _ ' BB062501
ELSE WasI = ComSpeed!
ENDIF
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! = 7200 THEN _ ' CONN174
ZBaudRateDivisor = &H10 _ ' CONN174
ELSE IF ComSpeed! = 12000 THEN _ ' CONN174
ZBaudRateDivisor = &HA _ ' CONN174
ELSE IF ComSpeed! = 14400 THEN _ ' CONN174
ZBaudRateDivisor = &H8 _ ' CONN174
ELSE IF ComSpeed! = 16800 THEN _ ' BB062501
ZBaudRateDivisor = &H7 _ ' BB062501/BB09039301
ELSE IF ComSpeed! = 19200 THEN _
ZBaudRateDivisor = &H6 _
ELSE IF ComSpeed! = 21600 THEN _ ' BB09039301
ZBaudRateDivisor = &H5 _ ' BB09039301
ELSE IF ComSpeed! = 24000 THEN _ ' RM11279301
ZBaudRateDivisor = &H4 _ ' RM11279301
ELSE IF ComSpeed! = 26400 THEN _ ' RM11279301
ZBaudRateDivisor = &H4 _ ' RM11279301
ELSE IF ComSpeed! = 28800 THEN _ ' BB062501
ZBaudRateDivisor = &H4 _ ' BB062501
ELSE IF ComSpeed! = 38400 THEN _
ZBaudRateDivisor = &H3 _ ' BB062501
ELSE IF ComSpeed! = 57600 THEN _ ' BB062501
ZBaudRateDivisor = &H2 ' BB062501
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) + LEFT$("(S)ysop,",-8*(ZNetConference = ZFalse)) + _ ' KG012502/RM01159402
LEFT$("D)istribution,",-14*EnableCC) + _
" or name (2 Char. Min.)" + ZPressEnterExpert$ ' PEEK174
CALL SkipLine (1)
ZSemiOnly = ZTrue
CALL PopCmdStack
IF ZWasQ = 0 OR ZSubParm < 0 THEN _ ' KG022501
GOTO 2034 ' KG022501/RM01309401
IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
CALL QuickTPut1 ("30 Char. Max") : _
GOTO 2021
IF LEFT$(ZUserIn$(ZAnsIndex),1) = " " THEN _ ' PEEK174
CALL SkipLine (1) : _ ' PEEK174
CALL QuickTPut1 ("Name can't begin with a SPACE") : _ ' PEEK174
CALL SkipLine (1) : _ ' PEEK174
GOTO 2021 ' PEEK174
Found = ZTrue
ZWasDF$ = ZUserIn$(ZAnsIndex) ' KG022501
CALL Remove (ZWasDF$,",") ' DD042901
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
2026 ZFileName$ = ZDistriPath$ + ZFileName$ + ".LST"
CALL FindItX (ZFileName$,7)
IF NOT ZOK THEN _
* ------[ first line different ]------
CALL QuickTPUT1 (ZFG7$ + ZUserIn$ + ZFG5$ + " not found!" + ZEmphasizeOff$) : _ ' RM070901
GOTO 2024
ZNumHeaders = 0
CALL OpenWorkA (ZNodeWorkFile$)
WHILE NOT EOF(7)
CALL ReadDir (7,1)
CALL AllCaps (ZOutTxt$)
ZWasDF$ = ZOutTxt$
CALL WhoCheck (ZOutTxt$, Found, RcvrRecNum)
ZNumHeaders = ZNumHeaders + 1
CALL PrintWorkA (ZWasDF$ + "," + STR$(-RcvrRecNum*Found))
WEND
CLOSE 7
CLOSE 2 ' RM02289401
GOTO 2034 ' RM01309401
* REPLACING old line(s) by new
2032 RcvrRecNum = 0
* ------[ first line different ]------
IF MsgTo$ = "UUCP" AND ZNetConference THEN _ ' RM01309401
GOTO 2033 ' RM01309401
IF MsgTo$ <> "ALL" THEN
IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN
CALL CheckInt (MsgTo$) ' KG082201
IF ZTestedIntValue = 0 OR NOT ZSysOp OR (ZSysOp AND ZFileSysParm < 1) THEN ' KG082201/RM030201
ZWasDF = INSTR(MsgTo$+" @"," @")
TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1)
AliasConf = ZFalse ' RM02129401
CALL WhoCheck (TempHashValue$,Found,RcvrRecNum)
IF NOT Found THEN _ ' RM02129401
CALL AliasChk (MsgTo$,Found,TempMsgTo$,AliasConf) : _ ' DGSALIAS/RM070901/RM/GS02129401
IF Found THEN _ ' RM02129401
ZStartHash = 1 : _ ' RM02129401
CALL WhoCheck (TempMsgTo$,Found,RcvrRecNum) ' RM02129401
IF Found AND MsgTo$ = ZSecretName$ THEN _ ' PEEK174
CALL QuickTPut1 (ZFG7$ + MsgTo$ + ZFG4$ + " not active user." + _
ZEmphasizeOff$) : _ ' PEEK174
Found = ZFalse ' PEEK174
IF (NOT Found) AND (NOT ZNetConference) AND (NOT AliasConf) THEN ' RM02129401 ' PEEK174/NET174/RM123101
ZOutTxt$ = "Send to: " ' RM101801
CALL QuickPeek (MsgTo$,Found) ' PEEK174/RM02129401
IF Found THEN _ ' PEEK174
ZStartHash = 1 : _ ' PEEK174
CALL WhoCheck (MsgTo$,Found,RcvrRecNum) ' PEEK174
END IF ' PEEK174
IF NOT Found THEN ' PEEK174
ZLastIndex = 0 ' PEEK174
RcvrRecNum = 0 ' PEEK174
IF NOT ZReply THEN ' PEEK174
CALL QuickTPut (ZFG5$ + "No match found for " + ZFG7$ + _
MsgTo$ + ZEmphasizeOff$,1) ' PEEK174
ZOutTxt$ = ZFG6$ + "Send anyway (Y,[N]" + ZFG6$ + ")" + ZEmphasizeOff$ ' PEEK174/RM02129401
ZTurboKey = -ZTurboKeyUser ' PEEK174
ZLastIndex = 0 ' PEEK174
GOSUB 2035 ' PEEK174/RM01309401
IF NOT ZYes THEN _
GOTO 2021
END IF ' PEEK174
END IF ' PEEK174
END IF ' RM030201
END IF ' PEEK174
END IF ' PEEK174
* REPLACING old line(s) by new
* ------[ first line different ]------
2033 IF MsgTo$ = Temp$ THEN _ ' RM01309401
ZOutTxt$ = "Really send this to YOURSELF (Y,[N])" : _
ZLastIndex = 0 : _
GOSUB 2035 : _ ' RM01309401
IF NOT ZYes THEN _
MsgTo$ = ""
CALL OpenWorkA (ZNodeWorkFile$)
CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
CLOSE 2
ZNumHeaders = ZNumHeaders + 1
IF NOT ZWelcomeAboard THEN _ ' NEWU174
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
* ------[ first line different ]------
2034 IF ZNumHeaders < 1 THEN _ ' RM01309401
MsgTo$ = "" _
ELSE IF ZNumHeaders > 1 THEN _
MsgTo$ = "(list)"
EXIT SUB
* INSERTING new line(s)
2035 ZSubParm = 1 ' RM01309401
CALL TGet
IF ZSubParm < 0 THEN _
EXIT SUB
RETURN
END SUB
* REPLACING old line(s) by new
2250 ' $SUBTITLE: 'WhoCheck - Checks whether user exists'
' $PAGE
'
' NAME -- WhoCheck
'
' INPUTS -- PARAMETER MEANING
' WhoFind$ User to find
'
' OUTPUTS -- WhoFound Whether user found
' UserNumFound Record # of user
'
' PURPOSE -- Validate that user record exists. Sysop
' counted as found even if lack user record.
'
SUB WhoCheck (WhoFind$,WhoFound,UserNumFound) STATIC
UserNumFound = 0
IF ZStartHash <> 1 THEN _
WhoFound = ZTrue : _
EXIT SUB
Work128$ = ZUserRecord$
WhoFound = ZFalse
ToSysop = (INSTR(WhoFind$,"SYSOP") > 0 OR _
INSTR(WhoFind$,ZSysopFirstName$ + " " + ZSysopLastName$) > 0)
CALL OpenUser (HighestUserRecord)
FIELD 5, 128 AS ZUserRecord$
IF ToSysop THEN _
* ------[ first line different ]------
WasX$ = ZSecretName$ : _ ' MENU174
ZMenuNewSysop = ZMenuNewSysop + 1 _ ' MENU174
ELSE WasX$ = WhoFind$
ZWasDF = INSTR(WasX$+"@","@")
WasX$ = LEFT$(WasX$,ZWasDF)
IF LEN(WasX$) > 1 THEN _
CALL FindUser (WasX$,"",ZStartHash,ZLenHash,_
0,0,HighestUserRecord,WhoFound,_
UserNumFound,ZWasSL)
LSET ZUserRecord$ = Work128$
IF NOT WhoFound THEN _
IF ToSysop THEN _
WhoFound = ZTrue
END SUB
* 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
3733 CALL CheckTime(ZAutoLogoff!, TempElapsed!, 1)
IF TempElapsed! <=0 THEN _
ZWaitExpired = ZTrue : _
Col = Col - 1 : _
GOTO 3850
CALL Carrier
IF ZSubParm THEN _
EXIT SUB
* ------[ first line different ]------
CALL GoIdle ' JM/OS2
GOTO 3730
* REPLACING old line(s) by new
4773 ' $SUBTITLE: 'SysopChat - chat with sysop'
' $PAGE
'
' NAME -- SysopChat
'
* ------[ first line different ]------
' PARAMETER MEANING
' INPUTS -- ChatType 1 = Line Chat no ANSI ' CHAT174/RM100101
' 2 = ANSIChat ' CHAT174/RM100101
' OUTPUTS -- ZWasCM True if chat active
'
' PURPOSE -- Lets sysop chat interactively with caller
'
SUB SysopChat (ChatType) STATIC ' CHAT174/RM100101
ZWasCM = ZTrue
TimeChatStarted! = TIMER
ZSubParm = 1
CALL Line25
ZOutTxt$(2) = ""
ON ChatType GOTO 4775,4776 ' CHAT174/RM100101
* REPLACING old line(s) by new
4775 CALL LineEdit (1,72)
IF ZKeyPressed$ = ZEscape$ OR _
ZSubParm < 0 THEN _
GOTO 4777
ZOutTxt$(1) = ""
IF ZOutTxt$(2) <> "" THEN _
ZOutTxt$ = ZOutTxt$(2) : _
ZOutTxt$(1) = ZOutTxt$(2) : _
ZOutTxt$(2) = "" _
ELSE ZOutTxt$ = ""
ZSubParm = 4
CALL TPut
IF ZSubParm > -1 THEN _
GOTO 4775
* ------[ first line different ]------
GOTO 4777 ' CHAT174/RM100101
* INSERTING new line(s)
4776 CALL ANSIChat ' CHAT174/RM100101
* REPLACING old line(s) by new
5100 ' $SUBTITLE: 'RemNonAlf - removes non-alpha chars from a string'
' $PAGE
'
' NAME -- RemNonAlf
'
' INPUTS -- PARAMETER MEANING
' Strng$ String to check
' MinChar Remove chars with this
' ASCII value or lower
' MaxChar Remove chars with this
' ASCII value or higher
'
' OUTPUTS -- Strng$ String returned
* ------[ first line different ]------
' PURPOSE -- Remove chars with ASCII value higher than MaxChar and
' lower than MinChar
'
SUB RemNonAlf (Strng$,MinChar,MaxChar) ' RM11159302
Last = LEN(Strng$)
WasJ = 1
WHILE WasJ <= Last
WasK = ASC(MID$(Strng$,WasJ))
IF WasK > MinChar AND WasK < MaxChar THEN _
WasJ = WasJ + 1 _
ELSE Strng$ = LEFT$(Strng$,WasJ - 1) + _
RIGHT$(Strng$,Last - WasJ) : _
Last = Last - 1
WEND
END SUB
* REPLACING old line(s) by new
5501 CALL TimeRemain(MinsRemaining)
* ------[ first line different ]------
ZOutTxt$ = ZFG7$ + STR$(MinsRemaining) + ZFG5$ + _
" mins left. " + ZFG7$ + "D" + ZFG5$ + ")eposit, " ' RM051901
IF ZTimeBankInActive = 0 THEN _ ' RM09039301
ZOutTxt$ = ZOutTxt$ + ZFG7$ + "W" + ZFG5$ + ")ithdraw, " ' RM051901/RM09039301
ZOutTxt$ = ZOutTxt$ + ZFG7$ + "B" + ZFG5$ + ")alance, " ' RM12179301
ZOutTxt$ = ZOutTxt$ + ZFG7$ + "H" + ZFG5$ + ")elp, [Q]" + _ ' RM09039301
ZFG5$ + "uit" + ZEmphasizeOff$ ' RM051901/RM09039301
ZTurboKey = -ZTurboKeyUser
CALL PopCmdStack
IF ZSubParm = -1 THEN _
EXIT SUB
ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
CALL AllCaps(ZWasZ$)
ON INSTR("QDWB?H",ZWasZ$) GOTO 5509,5505,5502,5504,5508,5508 ' RM12179301
GOTO 5501
* REPLACING old line(s) by new
* ------[ first line different ]------
5502 IF ZTimeBankInActive THEN _ ' BB09039301
CALL SkipLine (1) : _ ' RM09039301
CALL QuickTPut1 ("Time Bank Withdrawal In-Active at this Time") : _ ' BB09039301/RM09039301
CALL SkipLine (1) : _ ' RM09039301
GOTO 5501 ' BB09039301
SignTime = 1 ' withdraw time ' BB09039301
MaxTime = ZGlobalBankTime
* REPLACING old line(s) by new
5503 IF SignTime = 1 THEN _
ZOutTxt$ = "Withdraw" _
ELSE ZOutTxt$ = "Deposit"
* ------[ first line different ]------
Temp$ = ZFG7$ + ZOutTxt$ + ZFG5$ + " how many mins" + ZEmphasizeOff$
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
GOTO 5501
* INSERTING new line(s)
5504 GOSUB 5507
GOTO 5501
* REPLACING old line(s) by new
5505 SignTime = -1 ' deposit
MaxTime = ZMaxBank - ZGlobalBankTime
IF MaxTime <= 0 THEN _
* ------[ first line different ]------
CALL QuickTPut1 (ZFG5$ + "Already deposited max of" + _
ZFG7$ + STR$(ZMaxBank) + ZEmphasizeOff$) : _ ' RM052501
ZLastIndex = 0 : _
GOTO 5501
IF MaxTime > MinsRemaining THEN _
MaxTime = MinsRemaining
GOTO 5503
* REPLACING old line(s) by new
5507 IF ZAnsIndex < ZLastIndex THEN _
RETURN
* ------[ first line different ]------
CALL SkipLine(1) ' DGS092501-DS
CALL QuickTPut1 (ZFGB$ + "Time Bank Statistics:" + ZEmphasizeOff$) ' RM12179301
CALL SkipLine(1) ' RM12179301
CALL QuickTPut1 (ZFGB$ + " Maximum Allowable: " + ZFGF$ + _
STR$(ZMaxBank) + ZFGB$ + " Mins" + ZEmphasizeOff$) ' RM12179301
CALL QuickTPut1 (ZFGB$ + " Current Bank Balance: " + ZFGF$ + _
STR$(ZGlobalBankTime) + ZFGB$ + " Mins" + ZEmphasizeOff$) ' RM052501
CALL SkipLine(1) ' RM12179301
RETURN
* REPLACING old line(s) by new
5509 END SUB ' SKO10601
* REPLACING old line(s) by new
9140 ' $SUBTITLE: 'GetTime - subroutine to calculate elapsed time'
' $PAGE
'
' NAME -- GetTime
'
' INPUTS -- PARAMETER MEANING
' ZTimeLoggedOn$
'
' OUTPUTS -- ZSessionHour NUMBER OF HOURS ON
' ZSessionMin NUMBER OF MINUTES ON
' ZSessionSec NUMBER OF SECONDS ON
'
' PURPOSE -- Calculate the elapsed time a user has been on
'
* ------[ first line different ]------
SUB GetTime ' RM11159302
CALL CheckTime(ZUserLogonTime!, TempElapsed!, 2)
ZSessionHour = TempElapsed! / 3600
ZSessionMin = (TempElapsed! - ZSessionHour * 3600!) / 60
ZSessionSec = TempElapsed! - (ZSessionHour * 3600! + ZSessionMin * 60!)
IF ZSessionSec < 0 THEN _
ZSessionSec = ZSessionSec + 60 : _
ZSessionMin = ZSessionMin - 1
IF ZSessionMin < 0 THEN _
ZSessionMin = ZSessionMin + 60 : _
ZSessionHour = ZSessionHour - 1
END SUB
* REPLACING old line(s) by new
9600 ' $SUBTITLE: 'DefaultU - subroutine to update user defauts'
' $PAGE
'
' NAME -- DefaultU
'
' INPUTS -- PARAMETER MEANING
' ZAutoDownDesired
' ZBoldText$ Ansi bold (0 no, 1 yes)
' ZCheckBulletLogon
' ZExpertUser
' ZWasGR
' ZLastMsgRead
' ZLineFeeds
' ZNulls
' ZPageLength
' ZPromptBell
' ZRegDate$
' ZReqQuesAnswered
' ZRightMargin
' ZSkipFilesLogon
' ZTimesLoggedOn
' ZUpperCase
' ZUserOption$
' ZUserTextColor Ansi of color (31-37)
' ZUserXferDefault$
'
' OUTPUTS-- USER.OPTONS$
'
' PURPOSE -- To update the user's record with their options.
' Meaning of graphics preference stored is as follows: where # is
' value stored for the color. E.g. if graphics perference for text
' files is color, and preference for normal text is light yellow,
' graphics preference stored is 38. Colors are Red, Green, Yellow,
' Blue, Purple, Cyan, and White.
'
' normal bold
' Graphics R G Y B P C W R G Y B P C W
' none 30 33 36 39 42 45 48 | 51 54 57 60 63 66 69
' ansi 31 34 37 40 43 46 49 | 52 55 58 61 64 67 70
' color 32 35 38 41 44 47 50 | 53 56 59 62 65 68 71
'
* ------[ first line different ]------
SUB DefaultU ' RM11159302
ZWasA = -ZPromptBell -2 * ZExpertUser _
-4 * ZNulls -8 * ZUpperCase _
-16 * ZLineFeeds -32 * ZCheckBulletLogon _
-64 * ZSkipFilesLogon -128 * ZAutoDownDesired _
-256 * ZReqQuesAnswered -512 * ZMailWaiting _
-1024 * (NOT ZHiLiteOff) -2048 * ZTurboKeyUser _
-4096 * ZFileWaiting -8192 * ZAvailableForChat ' RCHAT0805
WasX = 3*ZUserTextColor - 63 + 21*VAL(ZBoldText$) + ZWasGR
IF WasX < 1 OR WasX > 255 THEN _
WasX = 48
LSET ZUserOption$ = _
MKI$(ZTimesLoggedOn) + _
MKI$(ZLastMsgRead) + _
ZUserXferDefault$ + _
CHR$(WasX) + _
MKI$(ZRightMargin) + _
MKI$(ZWasA) + _
ZRegDate$ + _
CHR$(ZPageLength) + _
ZEchoer$
END SUB
* REPLACING old line(s) by new
9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
' $PAGE
'
' NAME -- WhosOn
'
' INPUTS -- PARAMETER MEANING
' NumNodes # of nodes to check
' ZActiveMessageFile$ Current message file
' ZOrigMsgFile$ Main msg file
'
' OUTPUTS -- None
'
' PURPOSE -- To display who is on each node.
'
SUB WhosOn (NumNodes) STATIC
* ------[ first line different ]------
CALL SkipLine(1) ' RM03049401
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 ' RCHAT0805
CALL SaveUserActivity(WhatTheyDoin$, NodeIndex, ZTrue) ' RCHAT0813
IF WhatTheyDoin$ = "C" THEN ' RCHAT0813
WasAX$ = WasAX$ + ZFG4$ + "[In Chat System]" ' RCHAT0906
ELSEIF WhatTheyDoin$ = "F" THEN ' RCHAT0813
WasAX$ = WasAX$ + ZFG4$ + "[In File System]" ' RCHAT0906
ELSEIF WhatTheyDoin$ = "M" THEN ' RCHAT0813
WasAX$ = WasAX$ + ZFG4$ + "[In Message System]" ' RCHAT0906
ELSE ' RCHAT0813
WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22) ' RCHAT0813
END IF ' RCHAT0813
ELSE ' RCHAT0805
WasAX$ = WasAX$ + ZFG4$ + "[Has Opened a Door]" ' RCHAT0906
END IF ' RCHAT0805
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$
IF NOT ZAllowInternodeChat THEN _ ' RM03049401
CALL SkipLine(1) : _ ' RM03049401
CALL AskMore ("",ZTrue,ZFalse,ZAnsIndex,ZTrue) ' RM03049401
CALL QuickTPut (ZEmphasizeOff$,0)
END SUB
'
' $SUBTITLE: 'AliasChk - Checks whether ALIAS exists'
'
' $PAGE
' Alias sub (c) Greg Snyder
'
' SUBROUTINE NAME -- AliasChk
'
' INPUT PARAMETERS -- PARAMETER MEANING
' WhoFind$ ALIAS to find
'
' OUTPUT PARAMETERS -- WhoFound Whether ALIAS found
' UserNumFound Record # of User
'
' SUBROUTINE PURPOSE -- Validate that ALIAS exists. Get User Record
'
* INSERTING new line(s)
9900 SUB AliasChk (WhoFind$,WhoFound,TempWhoFind$,AliasConf) STATIC ' RM02129401
IF WhoFound = ZTrue THEN EXIT SUB
CALL BreakFileName (ZMainUserFile$,Drive$,Prefix$,Ext$,ZTrue)
DGSTemp = INSTR(ZConfName$," ")
IF DGSTemp > 0 THEN _
DGSFileName$ = Drive$ + LEFT$(ZConfName$,DGSTemp-1) + "A.DEF" _
ELSE DGSFileName$ = Drive$ + ZConfName$ + "A.DEF"
CALL FindIt (DGSFileName$)
IF NOT ZOK THEN _
AliasConf = ZFalse : _ ' RM02129401
EXIT SUB
AliasConf = ZTrue ' RM02129401
CALL OpenWork (7,DGSFileName$)
WhoFound=ZFalse
TempWhoFind$ = "" ' RM02129401
WHILE TempWhoFind$ = "" AND NOT EOF(7) ' RM02129401
INPUT #7, DGSUserName$, DGSTempAlias$
IF DGSTempAlias$ = ZSecretName$ THEN _ ' RM02129401
GOTO 9950 ' RM02129401/RM03049401
IF DGSTempAlias$ = WhoFind$ THEN _ ' RM02129401
TempWhoFind$ = DGSUserName$ : _ ' RM02129401
WhoFound = ZTrue : _ ' RM02129401
EXIT SUB ' RM02129401
InTo = INSTR(DGSTempAlias$,WhoFind$) ' RM02129401
IF InTo > 0 THEN ' RM02129401
Temp = LEN(WhoFind$) ' RM02129401
TempMsgToWork$ = MID$(DGSTempAlias$,1,Into - 1) + ZEmphasizeOn$ + WhoFind$ + _
ZEmphasizeOff$ + ZFG7$ + MID$(DGSTempAlias$,InTo + Temp)
ZOutTxt$ = ZFG6$ + "Send to: " + ZFG7$ + TempMsgToWork$ + _
ZFG6$ + " ( " + ZFG7$ + "Y" + ZFG6$ + ")es, [N]" + _
ZFG6$ + ")o, " + ZFG7$ + "A" + ZFG6$ + ")bort )" + ZEmphasizeOff$ ' RM101801
ZSubParm = 1
Call TGet
IF ZSubParm = -1 THEN _
EXIT SUB
IF ZWasQ = 0 THEN _ ' RM02129401
GOTO 9950 ' RM02129401/RM03049401
CALL AllCaps (ZUserIn$) ' RM02129401
IF ZUserIn$ = "A" THEN _ ' RM02129401
CLOSE 7 : _ ' RM02129401
EXIT SUB ' RM02129401
IF ZYes THEN
WhoFound = ZTrue ' Pe 04/04/92
WhoFind$ = DGSTempAlias$
TempWhoFind$ = DGSUserName$ ' RM02129401
END IF
END IF
9950 WEND
CLOSE 7
END SUB
'
9960 '$SUBTITLE: 'AliasDGS - Subroutine to Create/Update Alias Info file'
' $PAGE
'
' SUBROUTINE NAME -- DGSAlias
'
' INPUT PARAMETERS -- PARAMETER MEANING
' ZConfName$ CONFERENCE NAME
' ZOrigUserNameDGS$ USERS - LOG ON NAME
' DGSAlias$ USERS - ALIAS NAME
' DGSStl$ NULL FIRST TIME IN
' 'STILL' IF ALIAS EXISTS
' OR REAL NAME
' DGSFileName$ CONFERENCE ALIAS FILE
'
' OUTPUT PARAMETERS -- ZConfName$ ZOrigUserNameDGS$ DGSAlias$ DGSStl$
' DGSFileName$
'
' SUBROUTINE PURPOSE -- TO Read ConfA.DEF and Get Users ALIAS or
' Create One
'
SUB AliasDGS (ZConfName$,ZOrigUserNameDGS$,DGSAlias$,DGSStl$,DGSFileName$) STATIC
ZAliasMode = ZFalse ' RM051401
IF DGSStl$ = "" THEN
ConfADefFlag = 0
CALL BreakFileName (ZMainUserFile$,Drive$,Prefix$,Ext$,ZTrue)
DGSFileName$ = Drive$ + ZConfName$ + "A.DEF"
CALL FindIt (DGSFileName$)
IF ZOK THEN ' RM051401
ConfADefFlag = ZTrue ' RM051401
ZAliasMode = ZTrue ' RM051401
END IF
IF ConfADefFlag = ZTrue THEN
Call OpenWork (7,DGSFileName$)
DGSAlias$ = ""
WHILE DGSAlias$ = "" AND NOT EOF(7)
INPUT #7, DGSUserName$, DGSTempAlias$
DGSUnl = LEN(DGSUserName$)
IF DGSUserName$ = LEFT$(ZOrigUserNameDGS$,DGSUnl) THEN
DGSAlias$ = DGSTempAlias$
END IF
WEND
CLOSE 7
ELSE
DGSAlias$ = "NO CONFA.DEF"
EXIT SUB
END IF
END IF
CALL GoodAls (ZConfName$,ZOrigUserNameDGS$,DGSAlias$,DGSStl$,DGSFileName$)
END SUB
'
' $SUBTITLE: 'GoodAls - Subroutine to Make Sure Alias Good'
' $PAGE
'
' SUBROUTINE NAME -- GoodAls
'
' INPUT PARAMETERS -- PARAMETER MEANING
' ZConfName$ CONFERENCE NAME
' ZOrigUserNameDGS$ USERS - LOG ON NAME
' DGSAlias$ USERS - ALIAS NAME
' DGSStl$ NULL FIRST TIME IN
' 'STILL' IF ALIAS EXISTS
' OR REAL NAME
' DGSFileName$ CONFERENCE ALIAS FILE
'
' OUTPUT PARAMETERS -- ZConfName$ ZOrigUserNameDGS$ DGSAlias$ DGSStl$
' DGSFileName$
'
' SUBROUTINE PURPOSE -- To Read ConfA.DEF and see if Users ALIAS is
' Aready in Use or a Real Name
'
SUB GoodAls (ZConfName$,ZOrigUserNameDGS$,DGSAlias$,DGSStl$,DGSFileName$) STATIC
IF DGSAlias$ = "" THEN
DGSSfnSln$ = ZSysopFirstName$+" "+ZSysopLastName$
ZOutTxt$ = "Do you" +DGSStl$+ " want to use an Alias? (Y,[N])"
ZSubParm = 1
CALL TGet
IF ZYes THEN
ABFlg$ = ""
ZOutTxt$ = "Enter Alias (31 Char. Max.) "
ZSubParm = 1
CALL TGet
CALL AllCaps (ZUserIn$)
IF ZUserIn$ = "" OR INSTR(SPACE$(31),ZUserIn$) > 0 THEN
ZUserIn$ = ""
ABFlg$ = "Alias Must NOT be Blank"
END IF
IF LEN(ZUserIn$) > 31 THEN
ZUserIn$= ""
ABFlg$ = "Length Must NOT Exceed 31 Characters"
END IF
IF ZUserIn$ = "SYSOP" OR ZUserIn$ = DGSSfnSln$ THEN
ZOutTxt$ = CHR$(7)+CHR$(7)
ZOutTxt$ = ZOutTxt$ + "Wrong Answer! Alias Request Denied!"
ZOutTxt$ = ZOutTxt$ + CHR$(13) + "Contact Sysop for Alias Retry"
CALL QuickTPut (ZOutTxt$,2)
DGSAlias$ = ZOrigUserNameDGS$+CHR$(250)
ZActiveUserName$ = ZOrigUserNameDGS$+CHR$(250)
ZFirstName$ = ZOrigUserNameDGS$+CHR$(250)
ELSE
Call OpenWork (7,DGSFileName$)
WHILE ABFlg$ = "" AND NOT EOF(7)
INPUT #7, DGSUserName$, DGSTempAlias$
IF ZUserIn$ = DGSUserName$ THEN
ABFlg$ = " is a Real User"
ELSE
IF ZUserIn$ = DGSTempAlias$ THEN
ABFlg$ = " has Already been Used"
END IF
END IF
WEND
CLOSE 7
IF ABFlg$="" THEN
DGSAlias$ = ZUserIn$
ZActiveUserName$ = ZUserIn$
ZFirstName$ = ZUserIn$
ELSE
ZOutTxt$="Sorry "+ZFirstName$+" but "+ZUserIn$+ABFlg$
CALL QuickTPut (ZOutTxt$,1)
DGSStl$ = " still"
DGSAlias$ = ""
END IF
END IF
ELSE
DGSAlias$ = ZOrigUserNameDGS$
END IF
IF DGSAlias$ <> "" THEN
CLOSE 2
FOR I = 1 TO LEN(DGSAlias$)
IF MID$(DGSAlias$,I,1)=CHR$(34) THEN MID$(DGSAlias$,I,1)=CHR$(39)
NEXT I
Call OpenWorkA (DGSFileName$)
WRITE #2, ZOrigUserNameDGS$, DGSAlias$
CLOSE 2
END IF
ELSE
ZActiveUserName$ = DGSAlias$
ZFirstName$ = DGSAlias$
END IF
END SUB
* DELETING old line(s)
10410
10420
10440
10450
10480
10485
10600
10602
10604
10605
10607
10935
10950
10976
10978
10980
10983
10985
10986
10989
10991
10992
10994
10996
12000
12001
12005
12010
12015
12020
12025
12878
12880
12881
12882
13660
20096
20100
20105
20110
20140
20141
20142
20143
20144
20145
20146
20147
20148
20150
20235
20240
20245
20246