home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / CDOR0811.ZIP / CDORMRGS.ZIP / RSB3CDOR.MRG < prev    next >
Encoding:
Text File  |  1993-08-11  |  222.3 KB  |  4,069 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against RBBSSUB3.BAS to produce RBBSSUB3.NEW
  3. * RBBSSUB3.BAS:  Date 6-20-92  Size 129071 bytes
  4. * ------------[ Created 08-11-1993 19:35:20 ]------------
  5. * REPLACING old line(s) by new
  6. * ------[ first line different ]------
  7. ' $segment
  8. ' $linesize:132
  9. ' $title: 'RBBSSUB3.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  10. '  Copyright 1990 by D. Thomas Mack, all rights reserved.
  11. '  Name ...............: RBBSSUB3.BAS
  12. '  First Released .....: June 21, 1992
  13. '  Subsequent Releases.: 
  14. '  Copyright ..........: 1986 - 1992
  15. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  16. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  17. '     require error trapping are incorporated within RBBSSUB 2-5 as
  18. '     separately callable subroutines in order to free up as much
  19. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  20. '  Parameters..........: Most parameters are passed via a COMMON statement.
  21. '
  22. ' Subroutine  Line               Function of Subroutine
  23. '   Name     Number
  24. '  AllCaps         58050 Convert a string to all upper case characters
  25. '  AMorPM          41498 Calculate the current time as AM or PM
  26. '  AskGraphics     43004 Determine users graphic default
  27. '  BadFile         20741 Check for system crash attempt with bad device name
  28. '  Carrier         42000 Test for whether to continue in RBBS
  29. '  CheckRatio      20096 Test upload/download ratio
  30. '  CheckTime       58070 Test to insure that users don't exceed their time
  31. '  CheckCarrier    42005 Checks whether still have carrier
  32. '  CheckNewBul     58110 Check for new bulletins based on their file creation date
  33. '  CheckTimeRemain 41007 Set up to log off if time exceeded          'Lk 10/24/91
  34. '  CommInfo        44020 Get users baud rate and parity in a string format
  35. '  CountLines      58160 Count categories a file can be classified into
  36. '  CountNewFiles   58150 Check for number of files uploaded after a specific date
  37. '  DelayTime       50495 Wait number of seconds specified before returning
  38. '  DispCall        57001 Display callers file
  39. '  DispTimeRemain  41032 Compute and display time remaining
  40. '  DispUpDir       58165 Display the shared directory of the FMS mng. sys.
  41. '  FileLock        21993 Allow files to be shared among multiple RBBS-PC's
  42. '  FindFKey        30595 Handle local keyboard's function & ZSysop's keys
  43. '  FindLast        58600 Finds last occurence of a string in a string
  44. '  FlushKeys       35000  Completely flush all user input
  45. '  Graphic         43031 Determines if graphic ver of file exists, opens as #2
  46. '  GraphicX        43031 Determines if graphic ver of file exists, any file #
  47. '  HashRBBS        58080 "Hash" to a user's record in the USERS file
  48. '  InitFMS         58162 Initialize the RBBS-PC's File Management System
  49. '  InitIBM         30000 Open/create NetBIOS semaphore file
  50. '  AddCommas       58130 Format commands in the command prompt
  51. '  Library         21105 Provide support for "library" drives
  52. '  LinesInFile     58161 Counts lines in a file
  53. '  LoadNew         58140 Find the latest uploads
  54. '  ModemPut        52070 Write a modem command string to the modem
  55. '  NameCaps        58060 Convert a string to Proper Case (for name output)
  56. '  OpenMsg         30500 Open the messages file as file number 1
  57. '  PageUp          33202 Display user info. on local screen for ZSysop
  58. '  ReadProf        44000 Read user's profile on return from a "door"
  59. '  SaveProf        43068 Save the user's provile when exiting to "doors" or DOS
  60. '  SendName        20293 Send filename via EXEC-PC protocol during autodownload
  61. '  SetOpts         58100 Set correct prompt line for each subsystem
  62. '  SortString      58120 Sort characters in a string
  63. '  TestUser        20310 Check if user's software can do auto downloading
  64. '  TimeRemain      41010 Compute time remaining in minutes
  65. '  UpdtUpload      20705 Updates upload directory file
  66. '  WildFile        20290 Determines whether string matches a pattern
  67. '  XferType        21600 Identify the file transfer protocol
  68. '
  69. '  $INCLUDE: 'RBBS-VAR.BAS'
  70. '
  71. * REPLACING old line(s) by new
  72. 20290 ' $SUBTITLE: 'WildFile -- Matches file to a filespec'
  73. ' $PAGE
  74. '  NAME    -- WildFile
  75. '
  76. '  INPUTS  -- PARAMETER             MEANING
  77. '             Pattern$           PATTERN TO CHECK AGAINST
  78. '             ItemToMatch$       FILE NAME TO MATCH
  79. '
  80. '  OUTPUTS -- DoesMatch         WHETHER MATCHES
  81. '
  82. '  PURPOSE  Determine whether a file name is an instance of
  83. '    a file specification.  Exactly like DOS except that ? must have a
  84. '    character.
  85. '
  86.       SUB WildFile (Pattern$,ItemToMatch$,DoesMatch) STATIC
  87.       IF Pattern$ <> PrevPattern$ THEN _
  88.          CALL BreakFileName (Pattern$,PDrive$,PPrefix$,PExt$,ZFalse) : _
  89.          PrevPattern$ = Pattern$
  90.       CALL BreakFileName (ItemToMatch$,IDrive$,IPrefix$,IExt$,ZFalse)
  91.       DoesMatch = ZFalse
  92.       IF PDrive$ <> "" AND PDrive$ <> IDrive$ THEN _
  93.          EXIT SUB
  94.       CALL WildCard (PPrefix$,IPrefix$)
  95.       IF NOT ZOK THEN _
  96.          EXIT SUB
  97.       CALL WildCard (PExt$,IExt$)
  98.       DoesMatch = ZOK
  99.       END SUB
  100. * ------[ first line different ]------
  101. '20293 $SUBTITLE: 'SendName - send FILENAME using EXEC-PC protocol'  ' DD062304
  102. ' $PAGE
  103. '
  104. '  NAME    -- SendName
  105. '
  106. '  INPUTS  --  PARAMETER                    MEANING
  107. '              ZUserIn$()                ARRAY OF FILENAME FOR AUTODOWNLOAD
  108. '              ZAnsIndex                 Index OF FILENAME TO Transfer
  109. '
  110. '  OUTPUTS --  ZAbort                    -1 FOR AN ABORTED ATTEMPT
  111. '
  112. '  PURPOSE -- Send the download filename to user during an autodownload
  113. '
  114. '     SUB SendName STATIC                                            ' DD122601
  115. '
  116. '
  117. ' *  Transfer FILENAME TO USER
  118. ' *         PROCESS - SEND USER THE "ALERT" CHARACTER SEQUENCE -- <ESC>OD
  119. ' *                   THEN THIS IS FOLLOWED BY CHARACTER-BY-CHARACTER
  120. ' *                   TRANSMISSION OF THE FILENAME WITH ECHO.  IF ANY OF THE
  121. ' *                   CHARACTERS OF THE FILENMAE ARE GARBLED A SERIES OF
  122. ' *                   <CAN> ARE SENT, OTHERWISE AN <ACK> IS SENT AT
  123. ' *                   COMPLETION AND FILE Transfer BEGINS.
  124. '
  125. '
  126. '     ZAbort = ZFalse                    ' RESET ABORT FLAG          ' DD122601
  127. '     Attempts = 0                       ' RESET COUNT FOR # OF TRANS Attempts' DD122601
  128. '20295 CALL DelayTime (1)                 ' ONE SECOND DELAY         ' DD062304
  129. '20296 CALL FlushCom(ZWasY$)              ' CLEAR THE COMM BUFFER OF GARBAGE' DD062304
  130. '     IF ZSubParm = -1 THEN _                                        ' DD122601
  131. '        EXIT SUB                                                    ' DD122601
  132. '     CALL PutCom (ZEscape$+"OD")         ' SEND "ALERT" STRING      ' DD122601
  133. '     IF ZSubParm = -1 THEN _                                        ' DD122601
  134. '        EXIT SUB                                                    ' DD122601
  135. '     IF ZAbort = ZTrue THEN _                                       ' DD122601
  136. '        GOTO 20306                                                  ' DD122601
  137. '     CALL LPrnt("Sending FILENAME -- ",1)                           ' DD122601
  138. '     CALL LPrnt(ZReturnLineFeed$ + CHR$(9),0)                       ' DD122601
  139. '     CALL DelayTime (1)                   ' WAIT 1 SECOND FOR SETUP ' DD122601
  140. '
  141. '               SEND ONE CHARACTER AT A TIME
  142. '
  143. '     CALL BreakFileName (ZUserIn$(ZAnsIndex),WasX$,ZOutTxt$,ZWasY$,ZTrue)' DD122601
  144. '     ZOutTxt$ = ZOutTxt$ + ZWasY$ + "=X"                            ' DD122601
  145. '     FOR WasX = 1 TO LEN(ZOutTxt$)                                  ' DD122601
  146. '        CALL PutCom (MID$(ZOutTxt$,WasX,1))     ' SEND 1 CHARACTER  ' DD122601
  147. '        IF ZSubParm = -1 THEN _                                     ' DD122601
  148. '           EXIT SUB                                                 ' DD122601
  149. '        IF ZAbort = ZTrue THEN _                                    ' DD122601
  150. '           GOTO 20306                                               ' DD122601
  151. '        CALL LPrnt(MID$(ZOutTxt$,WasX,1),0)     ' DISPLAY IF NEEDED ' DD122601
  152. '        ZDelay! = TIMER + 10            ' SET MAXIMUM TIME TO WAIT FOR Reply' DD122601
  153. '        Char = ZTrue                                                ' DD122601
  154. '        WHILE Char = -1                                             ' DD122601
  155. '           CALL CheckTime(ZDelay!, TempElapsed!, 1)                 ' DD122601
  156. '           IF TempElapsed! <= 0 THEN _                              ' DD122601
  157. '              GOTO 20300     ' IF ZNo ECHO, CANCEL FILENAME Transfer' DD122601
  158. '           CALL EofComm (Char)                                      ' DD122601
  159. '        WEND                 ' JUMP OUT IF CHARACTER IS RECEIVED    ' DD122601
  160. '20298   CALL FlushCom(ZWasY$)    ' COLLECT CHARACTER(ZWasS) USER ECHOED' DD062304
  161. '        IF ZSubParm = -1 THEN _                                     ' DD122601
  162. '           EXIT SUB                                                 ' DD122601
  163. '        IF MID$(ZOutTxt$,WasX,1) = ZWasY$ THEN _                    ' DD122601
  164. '           GOTO 20305         ' IF CORRECTLY ECHOED, THEN CONTINUE  ' DD122601
  165. '        IF INSTR(ZWasY$,ZCancel$) THEN _                            ' DD122601
  166. '           ZAbort = ZTrue : _                                       ' DD122601
  167. '           GOTO 20306          ' CHECK FOR USER ZAbort              ' DD122601
  168. '20300   CALL PutCom (STRING$(5,24)) ' TELL USER THAT FILE NAME IS GARBLED' DD062304
  169. '        IF ZSubParm = - 1 THEN _                                    ' DD122601
  170. '           EXIT SUB                                                 ' DD122601
  171. '        IF ZAbort = ZTrue THEN _                                    ' DD122601
  172. '           GOTO 20306                                               ' DD122601
  173. '        CALL LPrnt("Name Trans Failure",1) ' DISPLAY FAILURE ON SCREEN' DD122601
  174. '        Attempts = Attempts + 1  ' INCREMENT COUNTER FOR # WasOF TRIES' DD122601
  175. '        IF Attempts < 6 THEN _   ' TRY IT FIVE TIMES, THEN GIVE UP  ' DD122601
  176. '           GOTO 20295                                               ' DD122601
  177. '        CALL PutCom (STRING$(50,24)) ' GUARANTEE CANCELLATION WasOF USER' DD122601
  178. '        IF ZSubParm = -1 THEN _                                     ' DD122601
  179. '           EXIT SUB                                                 ' DD122601
  180. '        IF ZAbort = ZTrue THEN _                                    ' DD122601
  181. '           GOTO 20306                                               ' DD122601
  182. '        IF ZSnoop THEN _                                            ' DD122601
  183. '           CALL LPrnt("ABORTING AUTODOWNLOAD!",1) : _               ' DD122601
  184. '           ZAbort = ZTrue : _                                       ' DD122601
  185. '           GOTO 20306                                               ' DD122601
  186. '
  187. '20305 NEXT                               ' LOOP BACK FOR NEXT CHARACTER' DD062304
  188. '
  189. '     CALL PutCom (ZAcknowledge$)    ' WHEN FILENAME SENT, ACKNOWLEDGE' DD122601
  190. '     IF ZSubParm = -1 THEN _                                        ' DD122601
  191. '        EXIT SUB                                                    ' DD122601
  192. '     CALL SkipLine(1)              ' CLEAN UP Sysop's DISPLAY       ' DD122601
  193. '
  194. '                COMPLETION OF AUTODOWNLOAD FILENAME Transfer
  195. '
  196. '20306 END SUB                                                       ' DD062304
  197. '20310 $SUBTITLE: 'TestUser - interrogate user for AUTO-Downloading support' ' DD062304
  198. ' $PAGE
  199. '
  200. '  NAME    -- TestUser
  201. '
  202. '  INPUTS  -- NONE
  203. '
  204. '  OUTPUTS -- ZAutoDownYes         -1 IF USER'S COMMUNICATION
  205. '                                  SOFTWARE CAN DO AUTODOWNLOADING
  206. '
  207. '             ZAutoDownVerified    TRUE IF COMMUNICATIONS PGM
  208. '                                  EVER CHECKED
  209. '
  210. '  PURPOSE -- Send the user an <ESCAPE><XON> and if response
  211. '             is a recognized package, set appropriate flag.
  212. '
  213. '     SUB TestUser STATIC                                            ' DD090502
  214. '
  215. '
  216. ' *    TEST FOR COMMUNICATIONS USING WasN,8,1 Protocol AND EXECPC Talk VER 2.0+
  217. ' *     TO SEE IF CALLER CAN USE THE AUTODOWNLOAD FEATURE
  218. '
  219. '
  220. '     ZAbort = ZFalse                                                ' DD090502
  221. '     ZAutoDownVerified = ZTrue                                      ' DD090502
  222. '     CALL FlushCom(ZWasY$)                          ' FLUSH THE COMM BUFFER' DD090502
  223. '     IF ZSubParm = -1 THEN _                                        ' DD090502
  224. '        EXIT SUB                                                    ' DD090502
  225. '     CALL PutCom (ZEscape$ + ZXOn$)                                 ' DD090502
  226. '     IF ZAbort = ZTrue THEN _                                       ' DD090502
  227. '        GOTO 20315                                                  ' DD090502
  228. '     CALL DelayTime (2)                         ' WAIT TWO SECONDS FOR Reply' DD090502
  229. '20313 CALL FlushCom(ZWasY$)                      ' GET CONTENTS OF COMM BUFFER' DD062304
  230. '     IF ZSubParm = -1 THEN _                                        ' DD090502
  231. '        EXIT SUB                                                    ' DD090502
  232. '     IF INSTR(ZWasY$,"EXECPC") THEN _                               ' DD090502
  233. '        ZComProgram = 1                                             ' DD090502
  234. '     IF INSTR(ZWasY$,"PIBTERM") THEN _                              ' DD090502
  235. '        ZComProgram = 2                                             ' DD090502
  236. '     IF INSTR(ZWasY$,"PROCOMM") THEN _                              ' DD090502
  237. '        ZComProgram = 3                                             ' DD090502
  238. '     IF INSTR(ZWasY$,"QMODEM") THEN _                               ' DD090502
  239. '        ZComProgram = 4                                             ' DD090502
  240. '     ZAutoDownYes = (ZComProgram > 0 AND ZComProgram < 3)           ' DD090502
  241. '20315 END SUB                                                       ' DD062304
  242. * DELETING old line(s)
  243. 20293
  244. 20295
  245. 20296
  246. 20298
  247. 20300
  248. 20305
  249. 20306
  250. 20310
  251. 20313
  252. 20315
  253. * REPLACING old line(s) by new
  254. 20705 ' $SUBTITLE: 'UpdtUpload -- Updates upload directory'
  255. ' $PAGE
  256. '  NAME    -- UpdtUpload
  257. '
  258. '  INPUTS  -- PARAMETER             MEANING
  259. '             ZFileName$
  260. '             ZUpldDir$
  261. '             ZFileNameHold$
  262. '             ZShareIt
  263. '             ZFMSDirectory$
  264. '             ZWasQ!
  265. '             ZSecsUsedSession!
  266. '
  267. '  OUTPUTS -- ZBytesInFile#
  268. '             ZSecsPerSession!
  269. '
  270. '  PURPOSE -- Upon a successful upload, add entry to the upload
  271. '             directory and give any session time credit.
  272. '
  273. * ------[ first line different ]------
  274.       SUB UpdtUpload (ZCategoryName$(1),ZCategoryCode$(1),LinesInDesc,WasFF) STATIC 'Mpl090202
  275.       ON WasFF GOTO 20710,20724,20722                                'Pe 11/20/89
  276. * DELETING old line(s)
  277. 20708
  278. 20709
  279. * REPLACING old line(s) by new
  280. * ------[ first line different ]------
  281. 20710 ZAlreadyGiven = ZFalse                                         'Pe BatchUp Mod
  282.       ZAbort = ZFalse                                                ' PE ZAbort MOD
  283.       CALL BreakFileName (ZFileNameHold$,Pre$,Body$,Ext$,ZFalse)     ' DD011002/GIF
  284.       IF Ext$ = "GIF" THEN                                           ' DD011002/GIF
  285.          DescLen = ZMaxDescLen + (5 * ZShowTimesDownloaded) - 15     ' DD062303
  286.          CALL QuickTPut1(ZFG2$ + "Dimensions will automatically " + _' DD031205/GIF
  287.                          "be placed in description" + ZEmphasizeOff$)' DD011002/GIF
  288.       ELSE                                                           ' DD011002/GIF
  289.          DescLen = ZMaxDescLen + (5 * ZShowTimesDownloaded)          ' DD011002/GIF
  290.       END IF                                                         ' DD011002/GIF
  291. * INSERTING new line(s)
  292. 20711 CALL QuickTput1 (ZFG2$ + "Describe " + ZFGB$ + _               ' DD031205
  293.                        ZFileNameHold$)                               ' DD031205
  294.       CALL QuickTPut1 (ZFG2$ + "(Enter " + ZFGB$ + ZBG1$ + _         ' DD031205
  295.                        "ABORT" + ZFG2$ + ZBG0$ + " to cancel!)")     ' DD031205
  296.       CALL QuickTPut1 (ZFGE$ + _                                     ' DD031205
  297.            (LEFT$("|-----<" + ZFGC$ + "Min" + ZFGE$ + _              ' DD031205
  298.                   "----+---2+0---+---3+0---+---4+0---+-", _          ' DD031205
  299.                    DescLen - 4 + LEN(ZFGE$) + LEN(ZFGC$)) + _        ' DD032501
  300.                    ZFGC$ + "Max" + ZFGE$ + ">" + ZEmphasizeOff$))    ' DD031205
  301.       ZOutTxt$ = ""
  302.       ZSubParm = 1
  303.       ZParseOff = ZTrue
  304.       CALL TGet
  305.       CALL Carrier
  306.       IF ZSubParm = -1 THEN _                                        'Pe 11/20/89
  307.          EXIT SUB                                                    'Pe 11/20/89
  308.       TempUserIn$ = ZUserIn$                                         'Pe 02/17/90
  309.       CALL AllCaps (TempUserIn$)                                     'Pe 02/17/90
  310.       IF TempUserIn$ = "ABORT" THEN _                                'Pe 02/17/90
  311.          ZAbort = ZTrue : _                                          ' Mpl090202
  312.          TempUserIn$ = "" : _                                        'Pe 02/17/90
  313.          EXIT SUB
  314.       IF LEN(ZUserIn$) > DescLen OR LEN(ZUserIn$) < 7 THEN _         ' DD011002/GIF
  315.          CALL QuickTput1 (ZFGE$ + "Description must be " + _         ' DD031205
  316.                          ZFGC$ + "7 " + ZFGE$ + "chars minimum," + _ ' DD031205
  317.               ZFGC$ + STR$(DescLen) + ZFGE$ + " chars maximum") : _  ' DD031205
  318.          GOTO 20711                                                  ' DD031205
  319. * REPLACING old line(s) by new
  320. * ------[ first line different ]------
  321. 20712 ZDesc$ = ZUserIn$                                              ' Mpl090202
  322.       CALL NameCaps (ZDesc$)                                         ' DD031101
  323.       IF NOT ZLimitSearchToFMS THEN _
  324.          IF ZFMSDirectory$ <> ZUpldDir$ THEN _
  325.       IF LEFT$(ZUserIn$,1) = CHR$(47) OR LEFT$(ZUserIn$,1) = CHR$(92) THEN _ ' DD021301
  326.          GOTO 20719 _                                                ' Mpl090202
  327.       ELSE GOTO 20716                                                ' Mpl090202
  328. * REPLACING old line(s) by new
  329. * ------[ first line different ]------
  330. 20715 IF LEFT$(ZUserIn$,1) = CHR$(47) OR LEFT$(ZUserIn$,1) = CHR$(92) THEN _ ' DD021301
  331.          ZUCat$ = STRING$(3,42) : _                          '*      ' DD021301
  332.          GOTO 20719                                                  ' Mpl090202
  333. * INSERTING new line(s)
  334. 20716 ZUCat$ = ZDefaultCatCode$                                      ' Mpl090202
  335.       IF ZSubParm = -1 OR ZUserSecLevel < ZSLCategorizeUplds THEN _  ' Mpl090202
  336.          GOTO 20719                                                  ' Mpl090202
  337.       IF ZMplPersUpload = Ztrue THEN _                               'Pe 06/08/91
  338.          GOTO 20719                                                  ' Mpl090202
  339. * REPLACING old line(s) by new
  340. * ------[ first line different ]------
  341. 20717 TempIndex = ZLastIndex                                         'Pe 09/14/91
  342.       IF NOT ZExpertUser THEN _                                      ' DD011001
  343.          CALL Graphic (ZUpcatHelp$) : _                              ' DD011001
  344.          CALL BufFile (ZUpcatHelp$,WasX)                             ' DD011001
  345.       ZLastIndex = TempIndex                                         'Pe 09/14/91
  346. * REPLACING old line(s) by new
  347. * ------[ first line different ]------
  348. 20718 ZOutTxt$ = ZFG2$ + "Select Upload Category " + _               ' DD062304
  349.                  "(D=default,L=list)" + ZEmphasizeOff$               ' DD062304
  350.       ZSubParm = 1                                                   ' Mpl090202
  351.       CALL TGet                                                      ' Mpl090202
  352.       CALL SkipLine (1)                                              ' DD082501
  353.       CALL AraAllCaps (ZUserIn$(),1)                                 ' Mpl090202
  354.       IF ZSubParm = -1 THEN _                                        ' Mpl090202
  355.          EXIT SUB                                                    'Pe 11/20/89
  356.       IF ZWasQ = 0 THEN _
  357.          GOTO 20718                                                  ' DD032501
  358.       IF ZUserIn$(1) = CHR$(76) OR _                    'L           ' DD062304
  359.          ZUserIn$(1) = CHR$(42) OR _                    '*           ' DD021301
  360.          ZUserIn$(1) = CHR$(63) THEN                    '?           ' DD021301
  361.          TempIndex = ZLastIndex                                      ' DD032501
  362.          CALL Graphic (ZUpcatHelp$) : _                              ' DD032501
  363.          CALL BufFile (ZUpcatHelp$,WasX)                             ' DD032501
  364.          ZLastIndex = TempIndex                                      ' DD032501
  365.          GOTO 20718                                                  ' DD032501
  366.       END IF                                                         ' DD032501
  367.       IF ZUserIn$(1) = CHR$(68) THEN _                  'D           ' DD032501
  368.          ZUserIn$(1) = ZDefaultCatCode$                              ' DD032501
  369.       CALL SearchArray (ZUserIn$(1),ZCategoryName$(),ZNumCategories,Found)' Mpl090202
  370.       IF Found > 0 THEN _                                            ' Mpl090202
  371.          ZUCat$ = ZCategoryCode$(Found) : _                          ' Mpl090202
  372.          IF LEN(ZUCat$) > 0 AND LEN(ZUCat$) < 4 AND INSTR(ZUCat$,CHR$(44)) = 0 THEN _ ' DD021301
  373.             GOTO 20719                                               ' Mpl090202
  374.       ZUCat$ = ""                                                    ' Mpl090202
  375.       IF NOT ZLimitSearchToFMS THEN _                                ' Mpl090202
  376.          StrewTo$ = ZDirPath$ + _                                    ' Mpl090202
  377.                      ZUserIn$(1) + _                                 ' Mpl090202
  378.                      CHR$(46) + _                                    ' DD021301
  379.                      ZDirExtension$ : _                              ' Mpl090202
  380.          CALL FindIt (StrewTo$) : _                                  'Pe 11/21/89
  381.          IF ZOK THEN _                                               ' Mpl090202
  382.             GOTO 20719                                               ' DD070701
  383. '        ELSE CALL WORDInFile (ZUpcatHelp$,ZUserIn$(1),ZOK) : _      ' DD070701
  384. '           IF ZOK THEN _                                            ' DD070701
  385. '              GOTO 20719                                            ' DD070701
  386.       StrewTo$ = ""                                                  ' Mpl090202
  387.       CALL QuickTPut (ZFGB$ + "No such category " + _                ' DD031704
  388.                       ZFGE$ + ZUserIn$(1) + CHR$(33) + _             ' DD031704
  389.                       ZEmphasizeOff$,2)                              ' DD031704
  390.       GOTO 20717                                                     'Pe 11/21/89
  391. * REPLACING old line(s) by new
  392. * ------[ first line different ]------
  393. 20719 IF ZUpBatchTransfer Then _                                     ' Mpl090202
  394.          CALL BatchUpLoad (ZDesc$,ZUCat$,1) : _                      ' Mpl090202
  395.          GOTO 20720                                                  ' Mpl090202
  396.       IF ZMplPersUpload = ZTrue THEN _                               ' Mpl090202
  397.          ZMplPersUpload = ZFalse                                     ' Mpl090202
  398. '         GOTO 20720                                                  ' Mpl090202
  399.       IF ZUserSecLevel >= ZAskExtendedDesc AND _                     ' Mpl090202
  400.          ZMaxExtendedLines > 0 AND ZSubParm <> -1 THEN _             ' Mpl090202
  401.          ZOutTxt$ = ZFG2$ + "Add an extended description of " + _    ' DD082501
  402.               ZFGB$ + ZFileNameHold$ + ZFG2$ + CHR$(63) + _          ' DD021301
  403.               ZEmphasizeOff$ + ZNoPrompt$ : _                        ' DD082501
  404.          ZTurboKey = -ZTurboKeyUser : _                              ' Mpl090202
  405.          ZSubParm = 1 : _                                            ' Mpl090202
  406.          CALL TGet : _                                               ' Mpl090202
  407.          IF ZSubParm <> -1 THEN _                                    ' Mpl090202
  408.             IF  ZYes THEN _                                          ' Mpl090202
  409.                CALL SkipLine (1) : _                                 ' Mpl090202
  410.                CALL PutCom (ZBellRinger$) : _                        ' DD070402
  411.                CALL QuickTPut (ZFGE$ + ZBG1$ + _                     ' DD070402
  412.                     " Description must be entered " + _              ' DD082501
  413.                     "AFTER the upload is Completed! " + _            ' DD082501
  414.                     ZEmphasizeOff$,2) : _                            ' DD031302
  415.                     CALL DelayTime (2) : _                           ' Mpl090202
  416.                ZGetExtDesc = ZTrue                                   ' Mpl090202
  417. * REPLACING old line(s) by new
  418. * ------[ first line different ]------
  419. 20720 CALL OpenOutW (ZNodeWorkDrvPath$ + "UPDESC" +ZNodeID$ +".LST") ' DD032501
  420.       Print #2, ZFileName$                                           ' Mpl090202
  421.       Print #2, ZFileNameHold$                                       ' Mpl090202
  422.       Print #2, ZDesc$                                               ' Mpl090202
  423.       Print #2, ZUCat$                                               ' Mpl090202
  424.       Print #2, ZActiveFMSDir$                                       ' Mpl090202
  425.       Print #2, ZFMSDirectory$                                       ' Mpl090202
  426.       Print #2, ZAbort                                               ' Mpl090202
  427.       Print #2, ZGetExtDesc                                          ' Mpl090202
  428.       Print #2, StrewTo$                                             ' Mpl090202
  429.       Print #2, ZAllwaysStrewTo$                                     ' Mpl090202
  430.       Print #2, ZUpldDir$                                            ' Mpl090202
  431.       Close 2                                                        ' Mpl090202
  432.       EXIT SUB                                                       ' Mpl090202
  433. ' *** routine AFTER the Upload is successfull and Extended = True ***' Mpl090202
  434. * REPLACING old line(s) by new
  435. * ------[ first line different ]------
  436. 20722 GOSUB 20760                                                    'Pe 09/12/91
  437.       GOTO 20732                                                     'Pe 09/12/91
  438. ' *** ENTRY POINT WHEN UPLOAD is Finished ***                        ' Mpl090202
  439. * DELETING old line(s)
  440. 20723
  441. * INSERTING new line(s)
  442. 20724 IF ZPrivateDoor THEN                                           ' Mpl090202
  443.           CALL OpenWork (2,ZNodeWorkDrvPath$ + "UPDESC" +ZNodeID$ +".LST") ' DD032501
  444.           While Not EOF(2)                                           ' Mpl090202
  445.              Input #2, ZFileName$                                    ' Mpl090202
  446.              Input #2, ZFileNameHold$                                ' Mpl090202
  447.              Input #2, ZDesc$                                        ' Mpl090202
  448.              Input #2, ZUCat$                                        ' Mpl090202
  449.              Input #2, ZActiveFMSDir$                                ' Mpl090202
  450.              Input #2, ZFMSDirectory$                                ' Mpl090202
  451.              Input #2, ZAbort                                        ' Mpl090202
  452.              Input #2, ZGetExtDesc                                   ' Mpl090202
  453.              Input #2, StrewTo$                                      ' Mpl090202
  454.              Input #2, ZAllwaysStrewTo$                              ' Mpl090202
  455.              InPut #2, ZUpldDir$                                     ' Mpl090202
  456.           WEND                                                       ' Mpl090202
  457. '         CLOSE 2            'KillWork Closes #2                     ' DD060703
  458.        END IF                                                        ' Mpl090202
  459.        CALL KillWork (ZNodeWorkDrvPath$ + "UPDESC" +ZNodeID$ +".LST")' DD051502
  460.        IF ZErrCode > 0 THEN _                                        'Pe 06/10/92
  461.           ZErrCode = 0                                               'Pe 06/10/92
  462.        GOSUB 20738        'find uploaded file                        ' Mpl090202
  463.        IF NOT ZAlreadyGiven THEN                                     ' Mpl090202
  464.           CALL TimeRemain (MinsRemaining)                            ' Mpl090202
  465.           IF ZPrivateDoor THEN _                                     ' Mpl090202
  466.              WasX! = ZUpldTimeFactor! * ZWasQ! _                     ' Mpl090202
  467.           ELSE WasX! = ZUpldTimeFactor! * (ZSecsUsedSession! - ZWasQ!)' Mpl090202
  468.        END IF                                                        ' Mpl090202
  469.        IF ZAbort = ZTrue THEN _     'Corrects aborted uploads        ' Mpl090202
  470.           EXIT SUB                  'corrects aborted uploads        ' Mpl090202
  471.        CALL BreakFileName (ZFileName$, WDR$, WZZ$, WX$, ZTrue)       'Pe 11/26/89
  472.        Ext$ = WX$                                                    ' Mpl090202
  473.        CALL BreakFileName (ZFileName$,Pre$,Body$,Ext$,ZFalse)        ' Mpl090202
  474.        WasX$ = ZDiskForDos$ + CHR$(84) + Ext$ + ".BAT"          'T   ' DD021301
  475.        CALL FindIt (WasX$)                                           ' Mpl090202
  476.        IF ZOK THEN                                                   ' Mpl090202
  477.           IF ZSysop OR ZUserSecLevel >= ZAddDirSecurity THEN         ' DD120201
  478.              CALL QuickTPut (ZFG2$ + "Test " + ZFGB$ + _             ' DD041804
  479.                              ZFileName$ + ZFG2$ + CHR$(63) + _       ' DD041804
  480.                              ZEmphasizeOff$,0)                       ' DD041804
  481.              ZSubParm = 1                                            ' DD120201
  482.              ZOutTxt$ = ZYesPrompt$                                  ' DD080804
  483.              ZTurboKey = -ZTurboKeyUser                              ' DD120201
  484.              CALL TGet                                               ' DD120201
  485.              IF ZSubParm = -1 THEN _                                 ' DD120201
  486.                 EXIT SUB                                             ' DD120201
  487.              IF ZNO THEN _                                           ' DD080804
  488.                 GOTO 20727                                           ' DD120201
  489.           END IF                                                     ' DD120201
  490.           CALL QuickTPut1 (ZFGB$ + "Testing " + ZFGE$ + _            ' DD041804
  491.                            ZFileName$ + ZEmphasizeOff$)              ' DD041804
  492.        CALL ReadDir (2,1)                                            ' Mpl090202
  493.        ZGSRAra$(2) = ZNodeWorkDrvPath$ + "VCHK" + ZNodeFileID$       ' Mpl090202
  494.        IF EOF(2) THEN _                                              ' Mpl090202
  495.           WasX$ = ZOutTxt$ : _                                       ' Mpl090202
  496.           ZGSRAra$(1) = ZFileName$ _                                 ' Mpl090202
  497.        ELSE WasX$ = WasX$ + SPACE$(1) + _                            ' DD021301
  498.                     ZFileName$ + SPACE$(1) + ZGSRAra$(2)             ' DD021301
  499.        CALL ShellExit (WasX$)                                        ' Mpl090202
  500.        CALL Line25                                                   ' DD032702
  501.        CALL FindIt (ZGSRAra$(2))                                     ' Mpl090202
  502.        IF ZOK THEN _                                                 ' Mpl090202
  503.           IF LOF(2) > 2 THEN _                                       ' Mpl090202
  504.              ZBytesInFile# = 0.0 : _                                 ' Mpl090202
  505.              WasX$ = "Deleting BAD upload " + ZFileNameHold$ : _     ' Mpl090202
  506.              CALL QuickTPut1 (WasX$) : _                             ' Mpl090202
  507.              CALL UpdtCalr (WasX$,2) : _                             ' Mpl090202
  508.              CALL KillWork (ZFileName$) : _                          ' Mpl090202
  509.              ZGetExtDesc = ZFalse : _                                ' DD050602
  510.              EXIT SUB                                                ' Mpl090202
  511.           GOTO 20727                                                 ' Mpl090202
  512.        END IF                                                        ' Mpl090202
  513.        WasX$ = ZDiskForDos$ + CHR$(67) + Ext$ + ZDefaultExtension$ + ".BAT" ' DD021301
  514.        CALL FindIt (WasX$)                                           ' Mpl090202
  515.        IF NOT ZOK THEN _                                             ' Mpl090202
  516.           GOTO 20727                                                 ' Mpl090202
  517.        TooZip$ = ZDirPath$+"X2ZIP" + ZNodeID$ + ".LST"               'Pe 06/01/92
  518.        CALL FindIt (TooZip$)                                         ' Mpl090202
  519.        IF NOT ZOK THEN _                                             'Pe 06/01/92
  520.           GOTO 20726                                                 ' Mpl090202
  521.        CALL OpenWork (2,TooZip$)                                     ' Mpl090202
  522.        WHILE NOT EOF(2)                                              ' Mpl090202
  523.           INPUT #2, Check$                                           ' Mpl090202
  524.           IF UCASE$(Check$) = "YES" THEN _                           ' DD062304
  525.              AskToConvert = Ztrue :_                                 ' Mpl090202
  526.              CLOSE 2 : _                                             ' Mpl090202
  527.              GOTO 20725                                              ' Mpl090202
  528.           IF WX$ = Check$ THEN _                                     ' Mpl090202
  529.              CLOSE 2 : _                                             ' Mpl090202
  530.              GOTO 20727                                              ' Mpl090202
  531.        WEND                                                          ' Mpl090202
  532.        CLOSE 2                                                       ' Mpl090202
  533. 20725 IF ZAutoEnd = 1 THEN                                           'Pe 01/24/90
  534.          IF WX$ = Check$ THEN GOTO 20727 ELSE GOTO 20726             'Pe 01/24/90
  535.       END IF                                                         ' Mpl090202
  536.       IF ZSysop OR (ZUserSecLevel > = ZAddDirSecurity AND _          ' DD091003
  537.       AskToConvert = ZTrue) THEN                                     ' DD091003
  538.          CALL QuickTPut (ZFG2$ + "Convert or verify " + ZFGB$ + _    ' DD041804
  539.                          ZFileName$ + ZFG2$ + CHR$(63) + _           ' DD041804
  540.                          ZEmphasizeOff$,0)                           ' DD041804
  541.          AskToConvert = ZFalse                                       ' Mpl090202
  542.          ZSubParm = 1                                                ' Mpl090202
  543.          ZOutTxt$ = ZYesPrompt$                                      ' DD080804
  544.          ZTurboKey = -ZTurboKeyUser                                  ' Mpl090202
  545.          CALL TGet                                                   ' Mpl090202
  546.          IF ZSubParm = -1 THEN _                                     ' Mpl090202
  547.             EXIT SUB                                                 ' Mpl090202
  548.          IF ZNO THEN _                                               ' DD080804
  549.             GOTO 20727                                               ' Mpl090202
  550.       END IF                                                         ' Mpl090202
  551. * REPLACING old line(s) by new
  552. * ------[ first line different ]------
  553. 20726 ZOutTxt$ = "Converting"                                        'Pe 01/26/92
  554.       IF Ext$ = ZDefaultExtension$ THEN _                            ' Mpl090202
  555.          ZOutTxt$ = "Re-" + ZOutTxt$                                 ' DD031302
  556.       CALL SkipLine (1)                                              ' DD031302
  557.       CALL QuickTPut1 (ZFGB$ + ZOutTxt$ + " upload to " + _          ' DD031302
  558.            ZFGE$ + ZDefaultExtension$ + CHR$(46) + ZFGE$ + _         ' DD021301
  559.            SPACE$(2) + "Please wait!" + ZEmphasizeOff$)              ' DD082501
  560.       CALL OpenWork (2,WasX$)                                        'Pe 09/25/91
  561.       CALL ReadDir (2,1)                                             ' Mpl090202
  562.       IF EOF(2) THEN _                                               ' Mpl090202
  563.          WasX$ = ZOutTxt$                                            ' Mpl090202
  564.       ZGSRAra$(1) = ZFileName$                                       ' Mpl090202
  565.       CALL BreakFileName (ZFileName$,Pre$,Body$,Ext$,ZTrue)          ' Mpl090202
  566.       ZFileNameHold$ = Body$ + CHR$(46) + ZDefaultExtension$         ' DD021301
  567.       ZUserIn$(0) = ZFileName$                                       ' Mpl090202
  568.       ZFileName$ = Pre$ + ZFileNameHold$                             ' Mpl090202
  569.       CALL ShellExit (WasX$ + SPACE$(1) + Body$ + SPACE$(1) + ZNodeID$ + _ ' DD021301
  570.            SPACE$(1) + Pre$)                                         ' DD021301
  571.       CALL Line25                                                    ' DD032702
  572.       CALL FindIt (ZFileName$)                                       ' Mpl090202
  573.       IF NOT ZOK THEN _                                              ' Mpl090202
  574.          CALL UpdtCalr (ZFileName$ + " < ABORTED in Cnvt >",2) : _   ' Mpl090202
  575.          ZGetExtDesc = ZFalse : _                                    ' DD050602
  576.          ZFileName$ = ZGSRAra$(1) : _                                ' Mpl090202
  577.          CALL FindIt (ZFileName$) : _                                ' Mpl090202
  578.          ZFileNameHold$ = Body$ + Ext$ : _                           ' Mpl090202
  579.          IF ZOK THEN _                                               ' Mpl090202
  580.             ZFileName$ = ZFileNameHold$                              ' Mpl090202
  581. * REPLACING old line(s) by new
  582. * ------[ first line different ]------
  583. 20727 GOSUB 20738                                                    ' Mpl090202
  584.       CALL CheckNovell (ZOK)                                         ' Mpl090202
  585.       IF ZOK <> -1 THEN _                                            ' Mpl090202
  586.          CALL SetSharedAttr (ZFileName$, ZOK) : _                    ' Mpl090202
  587.          IF ZOK <> 0 THEN _                                          ' Mpl090202
  588.             CALL PScrn ("Error setting shared attribute")            ' Mpl090202
  589.       IF ZGetExtDesc THEN _                                          ' Mpl090202
  590.         EXIT SUB                                                     ' Mpl090202
  591.       GOSUB 20760                                                    'Pe 09/12/91
  592. * DELETING old line(s)
  593. 20728
  594. 20729
  595. 20731
  596. * REPLACING old line(s) by new
  597. * ------[ first line different ]------
  598. 20732 IF ZLogUploader = 0 THEN                                       ' DD090501
  599.          IF LEFT$(ZUserIn$,1) = CHR$(47) OR LEFT$(ZUserIn$,1) = CHR$(92) OR _ ' DD021301
  600.             NumPersonals > 0 THEN _                                  ' Mpl090202
  601.             WX$ = WX$+CHR$(42)                                       ' DD021301
  602.             CALL AMorPM                                              'Pe 11/25/89
  603.          IF ZActiveUserName$ = ZSysopPswd1$ + _                      ' Mpl090202
  604.          SPACE$(1) + ZSysopPswd2$ THEN _                             ' DD021301
  605.             ULBYNAME$ = "Sysop" _                                    'Pe 06/05/91
  606.          ELSE ULBYNAME$ = ZActiveUserName$                           'Pe 11/25/89
  607.             ULXXX$ = WZZ$+WX$+SPACE$(13-(LEN(WZZ$)+LEN(WX$)))        'Pe 01/24/90
  608.             UPLOADLG$ = "{C2"+ ULXXX$ + _                            ' DD083003
  609.                        "{CE"+ ULBYNAME$+SPACE$(34-LEN(ULBYNAME$)) + _' DD083003
  610.                        "{C5"+ DATE$ + SPACE$(3) + _                  ' DD021301
  611.                        "{CB"+ ZTime$+" {C0"                          ' DD083003
  612.             CALL OpenWorkA (2,ZDirPath$ +"UPLOADLG.DEF")             ' DD040601
  613.             CALL PrintWorkA (2,UPLOADLG$)                            ' DD040601
  614.             CLOSE 2                                                  'Pe 01/18/90
  615.       END IF                                                         'Pe 03/13/92
  616.       IF ZFMSDirectory$ <> ZUpldDir$ THEN _                          ' Mpl090202
  617.          IF LEFT$(ZUserIn$,1) = CHR$(47) OR LEFT$(ZUserIn$,1) = CHR$(92) THEN _ ' DD021301
  618.             CALL UpdtCalr (ZUserIn$,2): _                            ' Mpl090202
  619.             GOTO 20733                                               ' Mpl090202
  620.       IF NumPersonals <> 0 THEN _                                    ' Mpl090202
  621.          GOTO 20733                                                  ' Mpl090202
  622.       IF ZPrivateDoor THEN _                                         ' Mpl090202
  623.          ZWasEN$ = ZUpldDoor$ _                                      ' Mpl090202
  624.       ELSE ZWasEN$ = ZUpldDir$                                       ' Mpl090202
  625.       GOSUB 20734                                                    ' Mpl090202
  626. * INSERTING new line(s)
  627. 20733 ZWasDF$ = " >> uploaded << "                                   ' Mpl090202
  628.       CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZTrue)     ' Mpl090202
  629.       ZWasZ$ = WasX$ + _                                             ' Mpl090202
  630.            Extension$ + _                                            ' Mpl090202
  631.            ZWasDF$ + _                                               ' Mpl090202
  632.            " at " + _                                                ' Mpl090202
  633.            ZTime$ + _                                                ' Mpl090202
  634.            " using " + _                                             ' Mpl090202
  635.            ZWasFT$ + _                                               ' Mpl090202
  636.            STR$(ZBytesInFile#)                                       ' Mpl090202
  637.       CALL UpdtCalr (ZWasZ$,2)                                       ' Mpl090202
  638.       ZUplds = ZUplds + 1                                            ' Mpl090202
  639.       ZGlobalUplds = ZGlobalUplds + 1                                ' Mpl090202
  640.       ZULBytes! = ZULBytes! + ZBytesInFile#                          ' Mpl090202
  641.       ZGlobalULBytes! = ZGlobalULBytes! + ZBytesInFile#              ' Mpl090202
  642.       IF NOT ZAlreadyGiven THEN                                      ' Mpl090202
  643.          CALL TimeRemain (MinsRemaining!)                            ' Mpl090202
  644.          MinsToAdd = WasX! / 60                                      ' Mpl090202
  645.          CALL ChkAddedTime (MinsToAdd)                               ' Mpl090202
  646.          WasX! = MinsToAdd * 60!                                     ' Mpl090202
  647.          ZTimeCredits! = ZTimeCredits! + WasX!                       ' Mpl090202
  648.          ZSecsPerSession! = ZSecsPerSession! + WasX!                 ' Mpl090202
  649.          IF ZPrivateDoor THEN _                                      ' Mpl090202
  650.             WasX! = (WasX! - ZWasQ!) / 60.0 _                        ' Mpl090202
  651.          ELSE WasX! = (WasX! - ZSecsUsedSession! + ZWasQ!)/60.0      ' Mpl090202
  652.          WasX$ = STR$(FIX(WasX!*10.0))                               ' Mpl090202
  653.          WasX$ = LEFT$(WasX$,LEN(WasX$)-1) + CHR$(46) + RIGHT$(WasX$,1) ' DD021301
  654.          IF WasX! > 1.0 THEN _                                       ' Mpl090202
  655.             CALL QuickTPut1 ("Session time increased by"+WasX$+" minutes")' Mpl090202
  656.       END IF                                                         ' Mpl090202
  657.       CALL SkipLine (1)                                              ' DD031302
  658.       CALL QuickTPut1 ("Upload successful, " + _                     ' DD031302
  659.            "Thanks for the upload " + ZFirstName$)                   ' DD031302
  660.       ZMenuNewUpld = ZMenuNewUpld + 1                                ' DD090101/MENU0
  661.       CALL DelayTime (2)                                             'Pe 02/23/90
  662.       ZGetExtDesc = ZFalse                                           ' Mpl090202
  663.       EXIT SUB                                                       ' Mpl090202
  664. * REPLACING old line(s) by new
  665. * ------[ first line different ]------
  666. 20734 '          ---[ lock file ]---                                 ' Mpl090202
  667.       IF ZWasEN$ = "" THEN _                                         ' Mpl090202
  668.          RETURN                                                      ' Mpl090202
  669.       IF NOT ZPrivateDoor THEN                                       ' DD120501
  670. '                                                                    ' DD070702
  671. ' * DOZ file processing                                              ' DD070702
  672. '                                                                    ' DD070702
  673.          IF ZDOZFile$ <> "" THEN                                     ' DD070702
  674.             CALL BreakFileName (ZFileName$,Drive$,Body$,Ext$,ZTrue)  ' DD070702
  675.             tempfile$ = ZUpldSubDir$ + CHR$(92) + ZDOZFile$          ' DD070702
  676.             CALL FindItX (tempfile$,7)                               ' DD070702
  677.             IF ZOK THEN                                              ' DD070702
  678.                DO                                                    ' DD070702
  679.                   IF NOT EOF(7) THEN                                 ' DD070702
  680.                      LINE INPUT #7, DOZLine$                         ' DD070702
  681.                      DOZLine$ = RIGHT$(DOZLine$,LEN(DOZLine$) - 4)   ' DD070702
  682.                      EndDOZName = INSTR(DOZLine$,SPACE$(1)) - 1      ' DD070702
  683.                      DOZName$ = LEFT$(DOZLine$,EndDOZName)           ' DD070702
  684.                      IF DOZName$ = Body$ + Ext$ THEN                 ' DD070702
  685.                         EXIT DO                                      ' DD070702
  686.                      END IF                                          ' DD070702
  687.                   END IF                                             ' DD070702
  688.                LOOP WHILE NOT EOF(7)                                 ' DD070702
  689.                IF DOZName$ = Body$ + Ext$ AND NOT EOF(7) THEN        ' DD070702
  690.                   DOZDescLen = ZMaxDescLen + (5 * ZShowTimesDownloaded) ' DD070702
  691.                   IF Ext$ = ".GIF" THEN                              ' DD070702
  692.                      DOZDescLen = DescLen                            ' DD070702
  693.                   END IF                                             ' DD070702
  694.                   LINE INPUT #7, DOZLine$                            ' DD070702
  695.                   IF LEN(DOZLine$) > DOZDescLen THEN                 ' DD070702
  696.                      ZOutTxt$(1) = DOZLine$                          ' DD070702
  697.                      CALL WordWrap (DOZDescLen,2,ZOutTxt$())         ' DD070702
  698.                      ZDesc$ = ZOutTxt$(1)                            ' DD070702
  699.                      Extra$ = ZOutTxt$(2)                            ' DD070702
  700.                   ELSE                                               ' DD070702
  701.                      ZDesc$ = LTRIM$(DOZLine$)                       ' DD070702
  702.                      Extra$ = ""                                     ' DD070702
  703.                   END IF                                             ' DD070702
  704.                   WasLL = ZRightMargin                               ' DD070702
  705.                   ZRightMargin = 30 + ZMaxDescLen + _                ' DD070702
  706.                                  (5 * ZShowTimesDownloaded)          ' DD070702
  707.                   IF ZRightMargin > 74 THEN _                        ' DD070702
  708.                   ZRightMargin = 74                                  ' DD070702
  709.                   LinesInDesc = 0                                    ' DD070702
  710.                   DO                                                 ' DD070702
  711.                      LinesInDesc = LinesInDesc + 1                   ' DD070702
  712.                      IF NOT EOF(7) THEN                              ' DD070702
  713.                         LINE INPUT #7,ZOutTxt$(LinesInDesc)          ' DD070702
  714.                      ELSE                                            ' DD070702
  715.                         EXIT DO                                      ' DD070702
  716.                      END IF                                          ' DD070702
  717.                      IF LEFT$(ZOutTxt$(LinesInDesc),3) = "{FI" THEN  ' DD070702
  718.                         ZOutTxt$(LinesInDesc) = ""                   ' DD070702
  719.                         LinesInDesc = LinesInDesc - 1                ' DD070702
  720.                         EXIT DO                                      ' DD070702
  721.                      END IF                                          ' DD070702
  722.                      IF Extra$ <> "" THEN                            ' DD070702
  723.                         ZOutTxt$(LinesInDesc) = Extra$ + _           ' DD070702
  724.                                                 SPACE$(1) + _        ' DD070702
  725.                                                 ZOutTxt$(LinesInDesc)' DD070702
  726.                         Extra$ = ""                                  ' DD070702
  727.                      END IF                                          ' DD070702
  728.                      CALL RemNonAlf (ZOutTxt$(LinesInDesc),31,127)   ' DD070702
  729.                      CALL Trim (ZOutTxt$(LinesInDesc))               ' DD070702
  730.                      IF LEN(ZOutTxt$(LinesInDesc - 1)) < (ZRightMargin - 10) AND _ ' DD070702
  731.                         LinesInDesc > 1 THEN _                       ' DD070702
  732.                         ZOutTxt$(LinesInDesc - 1) = ZOutTxt$(LinesInDesc - 1) + _ ' DD070702
  733.                            SPACE$(1) + ZOutTxt$(LinesInDesc) : _     ' DD070702
  734.                         ZOutTxt$(LinesInDesc) = "" : _               ' DD070702
  735.                         ZOutTxt$(LinesInDesc + 1) = "" : _           ' DD070702
  736.                         LinesInDesc = LinesInDesc - 1                ' DD070702
  737.                   LOOP WHILE NOT EOF(7) AND LinesInDesc < ZMaxExtendedLines ' DD070702
  738.                   ZGetExtDesc = ZTrue                                ' DD070702
  739.                   CALL WordWrap (ZRightMargin,LinesInDesc,ZOutTxt$())' DD070702
  740.                   CALL PutCom (ZBellRinger$)                         ' DD070702
  741.                   CALL QuickTPut1 (ZCRLf$ + ZEmphasizeOn$ + _        ' DD070702
  742.                        " Using " + ZDOZFile$ + " for Upload Description " + _ ' DD070702
  743.                        ZEmphasizeOff$)                               ' DD070702
  744.                   ZRightMargin = WasLL                               ' DD070702
  745.                END IF                                                ' DD070702
  746.                CLOSE 7                                               ' DD070702
  747.             END IF                                                   ' DD070702
  748.          END IF                                                      ' DD070702
  749. '                                                                    ' DD070702
  750. ' * FILE_ID.DIZ file processing                                      ' DD070702
  751. '                                                                    ' DD070702
  752.          tempfile$ = ZNodeWorkDrvPath$ + "FILE_ID.DIZ"               ' DD120501
  753.          CALL FindItX (tempfile$,7)                                  ' DD120501
  754.          IF ZOK THEN                                                 ' DD120501
  755.             ZGetExtDesc = ZTrue                                      ' DD120501
  756.             IF LEFT$(ZDesc$,1) <> CHR$(47) AND LEFT$(ZDesc$,1) <> CHR$(92) THEN ' DD021301
  757.                LINE INPUT #7, ZDesc$                                 ' DD021201
  758.                CALL RemNonAlf (ZDesc$,31,127)                        ' DD021201
  759.                ZDesc$ = LEFT$(ZDesc$,ZMaxDescLen + (5 * ZShowTimesDownloaded)) ' DD052301
  760.             END IF                                                   ' DD120501
  761.             WasLL = ZRightMargin                                     ' DD120501
  762.             ZRightMargin = 30 + ZMaxDescLen + _                      ' DD052301
  763.                            (5 * ZShowTimesDownloaded)                ' DD052301
  764.             IF ZRightMargin > 74 THEN _                              ' DD120501
  765.                ZRightMargin = 74                                     ' DD120501
  766.             LinesInDesc = 0                                          ' DD120501
  767.             WHILE NOT EOF(7) AND LinesInDesc < ZMaxExtendedLines     ' DD120501
  768.                LinesInDesc = LinesInDesc + 1                         ' DD120501
  769.                LINE INPUT #7,ZOutTxt$(LinesInDesc)                   ' DD120501
  770.                CALL RemNonAlf (ZOutTxt$(LinesInDesc),31,127)         ' DD021201
  771.                CALL Trim (ZOutTxt$(LinesInDesc))                     ' DD031704
  772.                IF LEN(ZOutTxt$(LinesInDesc - 1)) < (ZRightMargin - 10) AND _' DD120501
  773.                   LinesInDesc > 1 THEN _                             ' DD120501
  774.                   ZOutTxt$(LinesInDesc - 1) = ZOutTxt$(LinesInDesc - 1) + _' DD120501
  775.                      SPACE$(1) + ZOutTxt$(LinesInDesc) : _           ' DD021301
  776.                   ZOutTxt$(LinesInDesc) = "" : _                     ' DD120501
  777.                   ZOutTxt$(LinesInDesc + 1) = "" : _                 ' DD120501
  778.                   LinesInDesc = LinesInDesc - 1                      ' DD120501
  779.             WEND                                                     ' DD120501
  780.             CLOSE 7                                                  ' DD120501
  781.             CALL WordWrap (ZRightMargin,LinesInDesc,ZOutTxt$())      ' DD120501
  782.             CALL PutCom (ZBellRinger$)                               ' DD070402
  783.             CALL QuickTPut1 (ZEmphasizeOn$ + _                       ' DD070402
  784.                  " Using FILE_ID.DIZ for Upload Description " + _    ' DD120501
  785.                 ZEmphasizeOff$)                                      ' DD120501
  786.             CALL KillWork (tempfile$)                                ' DD120501
  787.             ZRightMargin = WasLL                                     ' DD120501
  788.          END IF                                                      ' DD120501
  789. '                                                                    ' DD070702
  790. ' * .GIF file processing                                             ' DD070702
  791. '                                                                    ' DD070702
  792.          CALL BreakFileName (ZFileName$,Pre$,Body$,Ext$,ZFalse)      ' DD011002/GIF
  793.          IF Ext$ = "GIF" THEN                                        ' DD011002/GIF
  794.             GIFHeader$ = STRING$(3,42)                               ' DD021301/GIF
  795.             numstr$ = CHR$(42)                                       ' DD021301/GIF
  796.             IF ZShareIt THEN                                         ' DD062801
  797.                OPEN ZFileName$ FOR BINARY ACCESS READ SHARED AS #7   ' DD062801
  798.             ELSE                                                     ' DD062801
  799.                OPEN ZFileName$ FOR BINARY AS #7                      ' DD062801
  800.             END IF                                                   ' DD062801
  801.             SEEK #7, 1                                               ' DD011002/GIF
  802.             GIFHeader$ = INPUT$(6, #7)                               ' DD011002/GIF
  803.             numstr$ = INPUT$(1,#7)                                   ' DD011002/GIF
  804.             i1 = ASC(numstr$)                                        ' DD011002/GIF
  805.             numstr$ = INPUT$(1,#7)                                   ' DD011002/GIF
  806.             i2 = ASC(numstr$)                                        ' DD011002/GIF
  807.             i2 = i2 * 256                                            ' DD051501/GIF
  808.             GIFWidth = i2 OR i1                                      ' DD011002/GIF
  809.             numstr$ = INPUT$(1,#7)                                   ' DD011002/GIF
  810.             i1 = ASC(numstr$)                                        ' DD011002/GIF
  811.             numstr$ = INPUT$(1,#7)                                   ' DD011002/GIF
  812.             i2 = ASC(numstr$)                                        ' DD011002/GIF
  813.             i2 = i2 * 256                                            ' DD021501/GIF
  814.             GIFHeight = i2 OR i1                                     ' DD011002/GIF
  815.             numstr$ = INPUT$(1,#7)                                   ' DD011002/GIF
  816.             byte1 = ASC(numstr$)                                     ' DD011002/GIF
  817.             CLOSE 7                                                  ' DD011002/GIF
  818.             BitsPerPixel = byte1 AND 7                               ' DD011002/GIF
  819.             BitsPerPixel = BitsPerPixel + 1                          ' DD011002/GIF
  820.             GIFColors = 1                                            ' DD011002/GIF
  821.             GIFColors = GIFColors * 2^BitsPerPixel                   ' DD021501/GIF
  822.             GIFWidth$ = STR$(GIFWidth)                               ' DD011002/GIF
  823.             CALL Trim(GIFWidth$)                                     ' DD011002/GIF
  824.             GIFHeight$ = STR$(GIFHeight)                             ' DD011002/GIF
  825.             CALL Trim(GIFHeight$)                                    ' DD011002/GIF
  826.             GIFColors$ = STR$(GIFColors)                             ' DD011002/GIF
  827.             CALL Trim(GIFColors$)                                    ' DD011002/GIF
  828.             IF GIFHeader$ = "GIF87a" THEN                            ' DD011002/GIF
  829.                ZDesc$ = CHR$(40) + GIFWidth$ + CHR$(120) + GIFHeight$ + _ ' DD021301/GIF
  830.                         CHR$(120) + GIFColors$ + CHR$(41) + SPACE$(1) + ZDesc$ ' DD021301/GIF
  831.             END IF                                                   ' DD011002/GIF
  832.          END IF                                                      ' DD011002/GIF
  833.       END IF                                                         ' DD120501
  834.       FMSFormat = ZFalse                                             ' Mpl090202
  835.       IF (ZWasEN$ = ZFMSDirectory$ OR ZLimitSearchToFMS _            ' Mpl090202
  836.          OR NumPersonals > 0 OR (ZPrivateDoor AND ZFMSDoor)) THEN _  ' Mpl090202
  837.          FMSFormat = ZTrue _                                         ' Mpl090202
  838.       ELSE CALL FindIt (ZWasEN$) : _                                 ' Mpl090202
  839.          IF ZOK THEN _                                               ' Mpl090202
  840.             CALL ReadDir (2,1) : _                                   'Pe 11/22/89
  841.             IF ZErrCode = 0 THEN _                                   ' Mpl090202
  842.                FMSFormat = (LEFT$(ZOutTxt$,4) = "\FMS")              ' Mpl090202
  843.       IF NOT FMSFormat THEN _                                        ' Mpl090202
  844.          ReadBackwards = ZFalse : _                                  ' Mpl090202
  845.          FixedLen = 0 : _                                            ' Mpl090202
  846.          ZUserIn$ = ZDesc$ : _                                       ' Mpl090202
  847.          GOTO 20735                                                  'Pe 06/08/91
  848.       FixedLen = 34 + ZMaxDescLen + (5 * ZShowTimesDownloaded)       ' DD052301
  849.       IF NumPersonals > 0 THEN _                                     ' Mpl090202
  850.          WasX$ = CHR$(42) : _                          '*            ' DD021301
  851.          TempLen = ZMaxDescLen + (5 * ZShowTimesDownloaded) : _      ' DD052301
  852.          MaxLen = ZPersonalLen _                                     ' Mpl090202
  853.       ELSE MaxLen = 3 : _                                            ' Mpl090202
  854.          TempLen = ZMaxDescLen : _                                   ' DD052301
  855.          WasX$ = ""                                                  ' Pe060891
  856.       ZUCat$ = LEFT$(ZUCat$,MaxLen)                                  ' Mpl090202
  857.       ZUCat$ = ZUCat$ + SPACE$(MaxLen - LEN(ZUCat$))                 ' Mpl090202
  858.       ZUserIn$ = ZDesc$ + _                                          ' Mpl090202
  859.                  SPACE$(TempLen - LEN(ZDesc$)) + _                   ' DD052301
  860.                  ZUCat$ + WasX$                                      ' Pe060891
  861.       IF ZShowTimesDownloaded AND NumPersonals = 0 THEN              ' DD052301
  862.          ZUserIn$ = ZDesc$ + _                                       ' DD052301
  863.                     SPACE$((ZMaxDescLen-5) - LEN(ZDesc$)) + _        ' DD052301
  864.                     "00000" + _                                      ' DD052301
  865.                     ZUCat$ + WasX$                                   ' DD052301
  866.       END IF                                                         ' DD052301
  867.       ReadBackwards = ZTrue : _                                      ' Mpl090202
  868.       CALL FindIt (ZWasEN$) : _                                      ' Mpl090202
  869.       IF ZOK THEN _                                                  ' Mpl090202
  870.          CALL ReadDir (2,1) : _                                      ' Mpl090202
  871.          IF ZErrCode = 0 THEN _                                      ' Mpl090202
  872.             ReadBackwards = (INSTR(ZOutTxt$," TOP ") = 0)            ' Mpl090202
  873. * INSERTING new line(s)
  874. 20735 CALL LockAppend                                                ' Mpl090202
  875.       IF ZErrCode <> 0 THEN _                                        ' Mpl090202
  876.          GOTO  20736                                                 ' Mpl090202
  877.       IF ZAddNameToDir <> 0 THEN                                     ' DD052301
  878.          IF ReadBackwards and NumPersonals = 0 THEN                  ' DD052301
  879.             IF ZShowTimesDownloaded THEN                             ' DD052301
  880.                tempstr$ = "    ." + "  ."                            ' DD052301
  881.             ELSE                                                     ' DD052301
  882.                tempstr$ = "  ."                                      ' DD052301
  883.             END IF                                                   ' DD052301
  884.             PRINT #2, using LEFT$(CHR$(92) + _                       ' DD052301
  885.                     SPACE$(79 - (5 * ZShowTimesDownloaded)), _       ' DD052301
  886.                     ZMaxDescLen + 32 + (5 * ZShowTimesDownloaded)) + _ ' DD052301
  887.                     CHR$(92) + tempstr$; _                           ' DD052301
  888.                     "  Uploaded by "+ ZActiveUserName$               'BH042091
  889.      '          ---[ append ]---                                     ' Mpl090202
  890.          END IF
  891.          IF ZGetExtDesc THEN _                                       ' Mpl090202
  892.             IF ReadBackwards THEN _                                  ' Mpl090202
  893.                FOR WasI = LinesInDesc TO 1 STEP -1 : _               ' Mpl090202
  894.                   GOSUB 20737 : _                                    ' Mpl090202
  895.                NEXT                                                  ' Mpl090202
  896.          PRINT #2,USING CHR$(92) + SPACE$(11) + CHR$(92) + _         ' DD021301
  897.                         STRING$(8,35) + SPACE$(2) + CHR$(38) + _     ' DD021301
  898.                         SPACE$(2) + CHR$(38); _                      ' DD021301
  899.                         ZFileNameHold$; _                            ' Mpl090202
  900.                         ZBytesInFile#; _                             ' Mpl090202
  901.                         ZWasZ$; _                                    ' Mpl090202
  902.                         ZUserIn$                                     ' Mpl090202
  903.          IF ZGetExtDesc THEN _                                       ' Mpl090202
  904.             IF NOT ReadBackwards THEN _                              ' Mpl090202
  905.                FOR WasI = 1 TO LinesInDesc : _                       ' Mpl090202
  906.                   GOSUB 20737 : _                                    ' Mpl090202
  907.                NEXT                                                  ' Mpl090202
  908.          IF NOT ReadBackwards and NumPersonals = 0 THEN _            'Pe 10/27/91
  909.             PRINT #2, using LEFT$(CHR$(92) + SPACE$(79), _           ' DD041901
  910.                       ZMaxDescLen + 32) + CHR$(92) + SPACE$(2) + CHR$(46); _ ' DD021301
  911.                       "  Uploaded by "+ ZActiveUserName$             'BH042091
  912.          GOTO 20736                                                  ' Mpl090202
  913.       END IF                                                         'Pe 05/29/92
  914.       IF ZGetExtDesc THEN _                                          ' Mpl090202
  915.          IF ReadBackwards THEN _                                     ' Mpl090202
  916.             FOR WasI = LinesInDesc TO 1 STEP -1 : _                  ' Mpl090202
  917.                GOSUB 20737 : _                                       ' Mpl090202
  918.             NEXT                                                     ' Mpl090202
  919.       PRINT #2,USING CHR$(92) + SPACE$(11) + CHR$(92) + STRING$(8,35) + _ ' DD021301
  920.                      SPACE$(2) + CHR$(38) + SPACE$(2) + CHR$(38); _  ' DD021301
  921.                      ZFileNameHold$; _                               ' Mpl090202
  922.                      ZBytesInFile#; _                                ' Mpl090202
  923.                      ZWasZ$; _                                       ' Mpl090202
  924.                      ZUserIn$                                        ' Mpl090202
  925.       IF ZGetExtDesc THEN _                                          ' Mpl090202
  926.          IF NOT ReadBackwards THEN _                                 ' Mpl090202
  927.             FOR WasI = 1 TO LinesInDesc : _                          ' Mpl090202
  928.                GOSUB 20737 : _                                       ' Mpl090202
  929.             NEXT                                                     ' Mpl090202
  930. * REPLACING old line(s) by new
  931. * ------[ first line different ]------
  932. 20736 CALL UnLockAppend                                              'Pe 06/08/91
  933.       FixedLen = 0                                                   ' Mpl090202
  934.       RETURN                                                         ' Mpl090202
  935. * INSERTING new line(s)
  936. 20737 WasX$ = ZOutTxt$(WasI)                                         'Pe 06/08/91
  937.       CALL Trim (WasX$)                                              ' Mpl090202
  938.       IF WasX$ = "" THEN _                                           ' Mpl090202
  939.          RETURN                                                      ' Mpl090202
  940.       IF NOT FMSFormat THEN _                                        ' Mpl090202
  941.          PRINT #2,SPACE$(2);ZOutTxt$(WasI) : _                       ' DD021301
  942.          RETURN                                                      ' Mpl090202
  943.       IF FixedLen > LEN(ZOutTxt$(WasI)) THEN                         ' DD052301
  944.          IF ZShowTimesDownloaded AND NumPersonals = 0 THEN           ' DD052301
  945.             WasX$ = SPACE$(FixedLen - 1 - LEN(ZOutTxt$(WasI))) + _   ' DD052301
  946.                     "  .  " + "."                                    ' DD052301
  947.          ELSE                                                        ' DD052301
  948.             WasX$ = SPACE$(FixedLen - 1 - LEN(ZOutTxt$(WasI))) + CHR$(46) ' DD052301
  949.          END IF                                                      ' DD052301
  950.       ELSE                                                           ' DD052301
  951.          WasX$ = ""                                                  ' DD052301
  952.       END IF                                                         ' DD052301
  953.       IF NumPersonals = 0 THEN _                                     ' DD031403
  954.          PRINT #2, SPACE$(2);LEFT$(ZOutTxt$(WasI),FixedLen);WasX$ _  ' DD031403
  955.       ELSE _                                                         ' DD031403
  956.          PRINT #2, SPACE$(2);LEFT$(ZOutTxt$(WasI),FixedLen);SPACE$(ZPersonalLen-2);WasX$ ' DD031304
  957.       RETURN                                                         ' Mpl090202
  958. 20738 CALL FindIt (ZFileName$)                                       ' Mpl090202
  959. 20739 IF NOT ZOK THEN _                                              'Pe 06/08/91
  960.          ZBytesInFile# = 0.0_                                        ' Mpl090202
  961.       ELSE ZBytesInFile# = LOF(2)                                    ' Mpl090202
  962.       IF ZBytesInFile# < 2.0 THEN _                                  ' Mpl090202
  963.          ZAutoLogOffReq = ZFalse : _                                 'Pe 10/20/91
  964.          EXIT SUB                                                    ' Mpl090202
  965.       RETURN                                                         ' Mpl090202
  966. * DELETING old line(s)
  967. 20741
  968. 20742
  969. * INSERTING new line(s)
  970. 20760 CALL FindItX (ZNodeWorkFile$,17)                               ' DD051101
  971.       ZUserIn$ = ZDesc$                                              ' Mpl090202
  972.       WasX$ = DATE$                                                  ' Mpl090202
  973.       ZWasZ$ = LEFT$(WasX$,6) + _                                    ' Mpl090202
  974.            RIGHT$(WasX$,2)                                           ' Mpl090202
  975.       ZWasEN$ = ZPersonalDir$                                        ' Mpl090202
  976.       NumPersonals = 0                                               ' Mpl090202
  977.       IF NOT ZOK THEN _                                              'Pe 06/10/92
  978.          GOTO 20781                                                  'Pe 06/10/92
  979.       UserFileIndexSave = ZUserFileIndex                             ' Mpl090202
  980.       UserRecordHold$ = ZUserRecord$                                 ' Mpl090202
  981.       WHILE NOT EOF(17)                                              ' DD051101
  982.          CALL ReadParmsX (17,ZWorkAra$(),2,1)                        ' DD051101
  983.          IF LEFT$(ZWorkAra$(1),4) <> "ALL " AND _                    ' Mpl090202
  984.          ZWorkAra$(1) <> "ALL" AND VAL (ZWorkAra$(2)) > 0 THEN _     'Pe 06/10/92
  985.             NumPersonals = NumPersonals + 1 : _                      ' Mpl090202
  986.             ZUCat$ = ZWorkAra$(1) : _                                ' Mpl090202
  987.             GOSUB 20734 : _                                          ' Mpl090202
  988.             RcvrRecNum = VAL (ZWorkAra$(2)) : _                      ' Mpl090202
  989.             CALL SetUserFlag (RcvrRecNum,4096,"file")                ' Mpl090202
  990.          IF LEFT$(ZWorkAra$(1),4) <> "ALL " AND _                    ' DD012101
  991.          ZWorkAra$(1) <> "ALL" AND VAL(ZWorkAra$(2)) = 0 THEN _      ' DD012101
  992.             CALL CheckInt(ZWorkAra$(1)) : _                          ' DD012101
  993.             IF ZTestedIntValue > 0 THEN _                            ' DD012101
  994.                NumPersonals = Numpersonals + 1 : _                   ' DD012101
  995.                ZUCat$ = SPACE$(1) + ZWorkAra$(1) : _                 ' DD021301
  996.                GOSUB 20734                                           ' DD012101
  997.       WEND                                                           ' Mpl090202
  998.       CLOSE 17                                                       ' DD051101
  999.       IF NumPersonals > 0 THEN _                                     ' Mpl090202
  1000.          ZUserFileIndex = UserFileIndexSave : _                      ' Mpl090202
  1001.          LSET ZUserRecord$ = UserRecordHold$                         ' Mpl090202
  1002. 20781 ZUserIn$ = ZDesc$                                              ' Mpl090202
  1003.       WasX$ = DATE$                                                  ' Mpl090202
  1004.       ZWasZ$ = LEFT$(WasX$,6) + _                                    ' Mpl090202
  1005.                RIGHT$(WasX$,2)                                       ' Mpl090202
  1006.       ZWasEN$ = StrewTo$                                             ' Mpl090202
  1007.       GOSUB 20734                                                    ' Mpl090202
  1008.       ZWasEN$ = ZAllwaysStrewTo$                                     ' Mpl090202
  1009.       GOSUB 20734                                                    ' Mpl090202
  1010.       RETURN                                                         ' Mpl090202
  1011.       END SUB
  1012. 20841 ' $SUBTITLE: 'BadFile - subroutine to find bad file names'     ' Mpl090202
  1013. ' $PAGE
  1014. '
  1015. '  NAME    -- BadFile
  1016. '
  1017. '  INPUTS  --     PARAMETER                    MEANING
  1018. '               ZViolation$
  1019. '               ZViolationsThisSession
  1020. '               FilName$                      NAME OF FILE
  1021. '
  1022. '  OUTPUTS -- Result                      1 = FILE NAME IS OK
  1023. '                                         2 = CHARACTER NOT ALLOWED
  1024. '                                         3 = SYSTEM CRASH ATTEMPT
  1025. '             ZViolationsThisSession     NUMBER OF VIOLATIONS
  1026. '             FilName$                    Gets capitalized
  1027. '
  1028. '  PURPOSE -- To protect RBBS-PC against the use of bad file names
  1029. '             to either crash the system or to breach RBBS-PC's security.
  1030. '
  1031.       SUB BadFile (FilName$,Result) STATIC
  1032. '
  1033. '
  1034. ' *  TEST FOR INVALID CHARACTERS IN FILENAME
  1035. '
  1036. '
  1037.       BadStr1$ = "PRN:CON:AUX:NUL:"                                  ' DD062304
  1038.       BadStr2$ = "COM1:COM2:LPT1:LPT2:LPT3:SCRN:KYBD:CONS:"          ' DD062304
  1039.       Result = 2
  1040.       IF LEN(FilName$) < 1 THEN _
  1041.          EXIT SUB
  1042.       CALL BadFileChar (FilName$,ZOK)
  1043.       IF NOT ZOK THEN _
  1044.          EXIT SUB
  1045.       CALL AllCaps (FilName$)
  1046.       WasXX = INSTR(FilName$,CHR$(46))                               ' DD021301
  1047.       IF WasXX > 0 THEN _
  1048.          IF WasXX < LEN(FilName$) THEN _
  1049.             WasXX = INSTR(WasXX + 1,FilName$,CHR$(46)) : _           ' DD021301
  1050.             IF WasXX > 0 THEN _
  1051.                EXIT SUB
  1052.       WasXX = LEN(FilName$)
  1053.       IF WasXX => 3 THEN _
  1054.          IF INSTR(BadStr1$,FilName$) THEN _                          ' DD062304
  1055.             GOTO 20842                                               ' Mpl090202
  1056.       IF WasXX => 4 THEN _
  1057.          IF INSTR(BadStr2$,FilName$) THEN _                          ' DD)62304
  1058.             GOTO 20842                                               ' Mpl090202
  1059.       IF WasXXX => 6 THEN _                                          'Pe022093
  1060.          IF INSTR("CLOCK$",FilName$) THEN _                          'Pe022093
  1061.             GOTO 20842                                               'Pe022093
  1062.       CALL BreakFileName (FilName$,Pre$,Body$,Ext$,ZFalse)
  1063.       IF LEN(Pre$) > 64 OR LEN(Body$) > 8 OR LEN(Body$) < 1 OR LEN(Ext$) > 3 THEN _
  1064.          EXIT SUB
  1065.       WasXX = LEN(Body$)
  1066.       IF WasXX => 3 THEN _
  1067.          IF INSTR(BadStr1$,Body$) THEN _                             ' DD062304
  1068.             GOTO 20842                                               ' Mpl090202
  1069.       IF WasXX => 4 THEN _
  1070.          IF INSTR(BadStr2$,Body$) THEN _                             ' DD062304
  1071.             GOTO 20842                                               ' Mpl090202
  1072.       IF WasXX = 6 THEN _                                            ' DD092002
  1073.          IF INSTR("CLOCK$",Body$) THEN _                             ' DD092002
  1074.             GOTO 20842                                               ' DD092002
  1075.       Result = 1
  1076.       EXIT SUB
  1077. 20842 ZViolationsThisSession = ZMaxViolations                        ' Mpl090202
  1078.       ZViolation$ = ZViolation$ + _
  1079.                    FilName$
  1080.       Result = 3
  1081.       END SUB
  1082. '
  1083. '21105 ' $SUBTITLE: 'Library - sub to support Library downloads'     ' DD062304
  1084. ' $PAGE
  1085. '
  1086. '  NAME    -- Library
  1087. '
  1088. '  INPUTS  --     PARAMETER                    MEANING
  1089. '              ZSubParm                 1 = DISPLAY ACTIVE AREA
  1090. '                                       2 = CHANGE ACTIVE AREA
  1091. '                                       3 = DISPLAY PC-SIG
  1092. '                                           DISCLAIMER
  1093. '                                       4 = ARCHIVE Library DISK
  1094. '                                       5 = DOWNLOAD COMPLETED
  1095. '              ZLibType                 0 = No Library ACTIVE
  1096. '                                       1 = Library FROM PC-SIG
  1097. '              ZLibDrive$                   Library DRIVE ID
  1098. '
  1099. '  OUTPUTS -- NONE
  1100. '
  1101. '  PURPOSE -- To provide access support for library drives
  1102. '
  1103. '     SUB Library STATIC                                             ' DD122601
  1104. '     STATIC LibSubdirName$(1)                                       ' DD122601
  1105. '     STATIC DiskTitle$                                              ' DD122601
  1106. '     ZErrCode = 0                                                   ' DD122601
  1107. '     IF ZLibType = 0 THEN _                                         ' DD122601
  1108. '        EXIT SUB                                                    ' DD122601
  1109. '     IF ZLibDiskChar$ = "" THEN _                                   ' DD122601
  1110. '        ZLibDiskChar$ = "0000"                                      ' DD122601
  1111. '     ON ZSubParm GOTO 21110, 21115, 21130, 21140, 21159             ' DD122601
  1112. '21110 IF ZLibDiskChar$ = "0000" THEN _                              ' DD062304
  1113. '        ZOutTxt$ = "No Library disk currently selected" _           ' DD122601
  1114. '     ELSE ZOutTxt$ = "Library disk " + _                            ' DD122601
  1115. '               ZLibDiskChar$ + _                                    ' DD122601
  1116. '               " selected - " + _                                   ' DD122601
  1117. '               DiskTitle$                                           ' DD122601
  1118. '     CALL QuickTPut1 (ZOutTxt$)                                     ' DD122601
  1119. '     IF LibDiskArc$ = "" THEN _                                     ' DD122601
  1120. '        EXIT SUB                                                    ' DD122601
  1121. '     IF INSTR(ZLibArcProgram$,"ARC") THEN _                         ' DD122601
  1122. '        Extension$ = "ARC" _                                        ' DD122601
  1123. '     ELSE IF INSTR(ZLibArcProgram$,"ZIP") THEN _                    ' DD122601
  1124. '        Extension$ = "ZIP" _                                        ' DD122601
  1125. '     ELSE IF INSTR(ZLibArcProgram$,"LHA") THEN _                    ' DD122601
  1126. '        Extension$ = "LZH" _                                        ' DD122601
  1127. '     ELSE IF INSTR(ZLibArcProgram$,"ARJ") THEN _                    ' DD122601
  1128. '        Extension$ = "ARJ" _                                        ' DD122601
  1129. '     ELSE Extension$ = ZDefaultExtension$                           ' DD122601
  1130. '     FOR LibDisplayCount = 0 TO LibLoopCount - 1                    ' DD122601
  1131. '        IF LibSubdirName$(LibDisplayCount) <> "" THEN _             ' DD122601
  1132. '           CALL QuickTPut1 (LibSubdirName$(LibDisplayCount) + _     ' DD122601
  1133. '                      "." + Extension$ + " ready for transmission!")' DD122601
  1134. '     NEXT                                                           ' DD122601
  1135. '     EXIT SUB                                                       ' DD122601
  1136. '21115 IF ZWasQ = 1 THEN _                                           ' DD062304
  1137. '        ZOutTxt$ = "Change Library disk from " + _                  ' DD122601
  1138. '             ZLibDiskChar$ + _                                      ' DD122601
  1139. '             " to (1 -" + _                                         ' DD122601
  1140. '             STR$(ZLibMaxDisk) + _                                  ' DD122601
  1141. '             ")" : _                                                ' DD122601
  1142. '        ZSubParm = 1 : _                                            ' DD122601
  1143. '        CALL TGet : _                                               ' DD122601
  1144. '        IF ZSubParm = -1 THEN _                                     ' DD122601
  1145. '           EXIT SUB _                                               ' DD122601
  1146. '        ELSE IF ZWasQ = 0 THEN _                                    ' DD122601
  1147. '                ZLibDiskChar$ = "0000" : _                          ' DD122601
  1148. '                ChdirLib$ = ZLibDrive$ + _                          ' DD122601
  1149. '                                 "\" : _                            ' DD122601
  1150. '                GOTO 21126                                          ' DD122601
  1151. '21117 IF VAL(ZUserIn$(ZWasQ)) < 1 OR VAL(ZUserIn$(ZWasQ)) > ZLibMaxDisk THEN _' DD062304
  1152. '        ZWasQ = 1 : _                                               ' DD122601
  1153. '        GOTO 21115                                                  ' DD122601
  1154. '21120 ZLibDiskChar$ = ZUserIn$(ZWasQ)                               ' DD062304
  1155. '     CLOSE 2                                                        ' DD122601
  1156. '     ZLibDiskChar$ = RIGHT$("0000" + ZLibDiskChar$,4)               ' DD122601
  1157. '21121 CALL FindIt("RBBS-CDR.DEF")                                   ' DD062304
  1158. '     IF NOT ZOK THEN _                                              ' DD122601
  1159. '        EXIT SUB                                                    ' DD122601
  1160. '21122 IF EOF(2) THEN _                                              ' DD062304
  1161. '        ZLibDiskChar$ = "" : _                                      ' DD122601
  1162. '        EXIT SUB                                                    ' DD122601
  1163. '     INPUT #2,WorkSubdir$,ChdirLib$                                 ' DD122601
  1164. '     LINE INPUT #2,DiskTitle$                                       ' DD122601
  1165. '     IF ZLibDiskChar$ = WorkSubdir$ THEN _                          ' DD122601
  1166. '        ChdirLib$ = ZLibDrive$ + _                                  ' DD122601
  1167. '                         ChdirLib$ : _                              ' DD122601
  1168. '        GOTO 21126                                                  ' DD122601
  1169. '     GOTO 21122                                                     ' DD122601
  1170. '21126 ZErrCode = 0                                                  ' DD062304
  1171. '     CALL ChangeDir (ChdirLib$)                                     ' DD122601
  1172. '     IF ZErrCode <> 0 THEN _                                        ' DD122601
  1173. '        ZLibDiskChar$ = "0000" : _                                  ' DD122601
  1174. '        ChdirLib$ = ZLibDrive$ + _                                  ' DD122601
  1175. '                         "\" : _                                    ' DD122601
  1176. '        GOTO 21126                                                  ' DD122601
  1177. '     EXIT SUB                                                       ' DD122601
  1178. '21130 IF ZLibType <> 1 THEN _                                       ' DD062304
  1179. '        EXIT SUB                                                    ' DD122601
  1180. '     CALL SkipLine(1)                                               ' DD122601
  1181. '     ZOutTxt$ = "The PC-SIG Library file that you are about to"     ' DD122601
  1182. '     CALL QuickTPut1 (ZOutTxt$)                                     ' DD122601
  1183. '     ZOutTxt$ = "download can also be ordered as DISK " + _         ' DD122601
  1184. '          ZLibDiskChar$                                             ' DD122601
  1185. '     CALL QuickTPut1 (ZOutTxt$)                                     ' DD122601
  1186. '     ZOutTxt$ = "from PC-SIG, 1030D East Duane Ave. Sunnyvale, Ca. 94086"' DD122601
  1187. '     CALL QuickTPut (ZOutTxt$,2)                                    ' DD122601
  1188. '     EXIT SUB                                                       ' DD122601
  1189. '21140 IF ZLibDiskChar$ = "0000" THEN _                              ' DD062304
  1190. '        CALL QuickTPut1 ("First select a Library disk!") : _        ' DD122601
  1191. '        EXIT SUB                                                    ' DD122601
  1192. '     ZOutTxt$ = "Archive files in Library disk - " + _              ' DD122601
  1193. '          ZLibDiskChar$ + _                                         ' DD122601
  1194. '          " for download" + ZNoPrompt$                              ' DD091202
  1195. '     ZSubParm = 1                                                   ' DD122601
  1196. '     CALL TGet                                                      ' DD122601
  1197. '     IF NOT ZLocalUser THEN _                                       ' DD122601
  1198. '        IF ZSubParm = -1 THEN _                                     ' DD122601
  1199. '           EXIT SUB                                                 ' DD122601
  1200. '     IF NOT ZYes THEN _                                             ' DD122601
  1201. '        EXIT SUB                                                    ' DD122601
  1202. '21145 CALL KillWork (ZLibWorkDiskPath$ + _                          ' DD062304
  1203. '                   ZLibNodeID$ + _                                  ' DD122601
  1204. '                   "DK*." + Extension$)                             ' DD122601
  1205. '21150 CALL QuickTPut1 ("Work/RAM disk purged")                      ' DD062304
  1206. '     CALL QuickTPut1 ("Archiving with " + _                         ' DD122601
  1207. '                 ZLibArcProgram$ + _                                ' DD122601
  1208. '                 " Please be patient!")                             ' DD122601
  1209. '     REDIM LibSubdirName$(10)                                       ' DD122601
  1210. '     LibSubdirChar$ = ""                                            ' DD122601
  1211. '     LibLoopCount = 0                                               ' DD122601
  1212. '     GOSUB 21157                                                    ' DD122601
  1213. '     ZOutTxt$ = "Contents of Library disk - " + _                   ' DD122601
  1214. '          ZLibDiskChar$ + _                                         ' DD122601
  1215. '          " now archived for download"                              ' DD122601
  1216. '     CALL QuickTPut1 (ZOutTxt$)                                     ' DD122601
  1217. '     ZOutTxt$ = "Searching for Sub-directories"                     ' DD122601
  1218. '     CALL QuickTPut1 (ZOutTxt$)                                     ' DD122601
  1219. '     GOSUB 21158                                                    ' DD122601
  1220. '     LibDiskArc$ = ZLibDiskChar$                                    ' DD122601
  1221. '                                                                    ' DD122601
  1222. ' SEARCH AND ARCHIVE ANY SUBDIRECTORIES                              ' DD122601
  1223. '                                                                    ' DD122601
  1224. '     Treedir$ = ZLibWorkDiskPath$ + _                               ' DD122601
  1225. '                ZLibNodeID$ + _                                     ' DD122601
  1226. '                "DKDIR.LST"                                         ' DD122601
  1227. '     DirCmd$ = "DIR " + _                                           ' DD122601
  1228. '               ZLibDrive$ + _                                       ' DD122601
  1229. '               " | FIND " +  _                                      ' DD122601
  1230. '               CHR$(34) + _                                         ' DD122601
  1231. '               " <DIR> " + _                                        ' DD122601
  1232. '               CHR$(34) + _                                         ' DD122601
  1233. '               "  > " + _                                           ' DD122601
  1234. '               Treedir$                                             ' DD122601
  1235. '21151 SHELL DirCmd$                                                 ' DD062304
  1236. '     CALL SkipLine (2)                                              ' DD122601
  1237. '     LOCATE 24,1                                                    ' DD122601
  1238. '     ZErrCode = 0                                                   ' DD122601
  1239. '21152 CLOSE 2                                                       ' DD062304
  1240. '21153 CALL OpenWork (2,Treedir$)                                    ' DD062304
  1241. '     LibSubdirCount = 0                                             ' DD122601
  1242. '     WHILE NOT EOF(2)                                               ' DD122601
  1243. '        LINE INPUT #2, Dirrec$                                      ' DD122601
  1244. '        IF LEFT$(Dirrec$,1) <> "." THEN _                           ' DD122601
  1245. '           LibSubdirCount = LibSubdirCount + 1 : _                  ' DD122601
  1246. '           LibSubdirName$(LibSubdirCount) = _                       ' DD122601
  1247. '           LEFT$(Dirrec$,8)                                         ' DD122601
  1248. '     WEND                                                           ' DD122601
  1249. '     CLOSE 2                                                        ' DD122601
  1250. '     LibLoopCount = 1                                               ' DD122601
  1251. '     IF LibSubdirCount = 0 THEN _                                   ' DD122601
  1252. '        GOTO 21156                                                  ' DD122601
  1253. '     ZOutTxt$ = STR$(LibSubdirCount) + _                            ' DD122601
  1254. '          " Subdirectories on Library disk - " + _                  ' DD122601
  1255. '          ZLibDiskChar$                                             ' DD122601
  1256. '     CALL QuickTPut1 (ZOutTxt$)                                     ' DD122601
  1257. '     FOR LibLoopCount = 1 TO LibSubdirCount                         ' DD122601
  1258. '        IF NOT ZLocalUser THEN _                                    ' DD122601
  1259. '           CALL Carrier : _                                         ' DD122601
  1260. '           IF ZSubParm THEN _                                       ' DD122601
  1261. '              GOTO 21155                                            ' DD122601
  1262. '        LibSubdirChar$ = MID$("ABCDEFGHI",LibLoopCount,1)           ' DD122601
  1263. '        ZOutTxt$ = "Creating " + _                                  ' DD122601
  1264. '             ZLibNodeID$ + _                                        ' DD122601
  1265. '             "DK" + _                                               ' DD122601
  1266. '             ZLibDiskChar$ + _                                      ' DD122601
  1267. '             LibSubdirChar$ + "." + Extension$ + _                  ' DD122601
  1268. '             " using " + ZLibArcProgram$                            ' DD122601
  1269. '        CALL QuickTPut1 (ZOutTxt$)                                  ' DD122601
  1270. '        CHDIR ChdirLib$ + _                                         ' DD122601
  1271. '              "\" + _                                               ' DD122601
  1272. '              LibSubdirName$(LibLoopCount)                          ' DD122601
  1273. '        GOSUB 21157                                                 ' DD122601
  1274. '        ZOutTxt$ = "Disk - " + _                                    ' DD122601
  1275. '             ZLibDiskChar$ + _                                      ' DD122601
  1276. '             "; Subdirectory" + _                                   ' DD122601
  1277. '             " -" + _                                               ' DD122601
  1278. '             STR$(LibLoopCount) + _                                 ' DD122601
  1279. '             " archived for download"                               ' DD122601
  1280. '        CALL QuickTPut1 (ZOutTxt$)                                  ' DD122601
  1281. '        GOSUB 21158                                                 ' DD122601
  1282. '21155 NEXT LibLoopCount                                             ' DD062304
  1283. '21156 CALL Carrier                                                  ' DD062304
  1284. '     ZOutTxt$ = ""                                                  ' DD122601
  1285. '     EXIT SUB                                                       ' DD122601
  1286. '21157 LibArc$ = ZLibArcPath$ + _                                    ' DD062304
  1287. '                      ZLibArcProgram$ + _                           ' DD122601
  1288. '                      SPACE$(1) + _                                 ' DD021301
  1289. '                      ZLibWorkDiskPath$ + _                         ' DD122601
  1290. '                      ZLibNodeID$ + _                               ' DD122601
  1291. '                      "DK" + _                                      ' DD122601
  1292. '                      ZLibDiskChar$ + _                             ' DD122601
  1293. '                      LibSubdirChar$ + _                            ' DD122601
  1294. '                      SPACE$(1) + _                                 ' DD021301
  1295. '                      ZLibDrive$ + _                                ' DD122601
  1296. '                      "*.*"                                         ' DD122601
  1297. '     IF ZUseDeviceDriver$ <> "" AND ZFossil AND NOT ZLocalUser THEN _' DD122601
  1298. '        LibArc$ = ZDiskForDos$ + _                                  ' DD122601
  1299. '                           "COMMAND /C " + _                        ' DD122601
  1300. '                           LibArc$ + _                              ' DD122601
  1301. '                           " > " + _                                ' DD122601
  1302. '                           ZUseDeviceDriver$                        ' DD122601
  1303. '     SHELL LibArc$                                                  ' DD122601
  1304. '     CALL SkipLine (2)                                              ' DD122601
  1305. '     LOCATE 24,1                                                    ' DD122601
  1306. '     RETURN                                                         ' DD122601
  1307. '21158 LibSubdirName$(LibLoopCount) = ZLibNodeID$ + _                ' DD062304
  1308. '                                            "DK" + _                ' DD122601
  1309. '                                            ZLibDiskChar$ + _       ' DD122601
  1310. '                                            LibSubdirChar$          ' DD122601
  1311. '     RETURN                                                         ' DD122601
  1312. '21159 FOR LibDisplayCount = 0 TO LibLoopCount - 1                   ' DD062304
  1313. '        IF LibSubdirName$(LibDisplayCount) = ZOutTxt$ THEN _        ' DD122601
  1314. '           LibSubdirName$(LibDisplayCount) = ""                     ' DD122601
  1315. '     NEXT                                                           ' DD122601
  1316. '     END SUB                                                        ' DD122601
  1317. * DELETING old line(s)
  1318. 21105
  1319. 21110
  1320. 21115
  1321. 21117
  1322. 21120
  1323. 21121
  1324. 21122
  1325. 21126
  1326. 21130
  1327. 21140
  1328. 21145
  1329. 21150
  1330. 21151
  1331. 21152
  1332. 21153
  1333. 21155
  1334. 21156
  1335. 21157
  1336. 21158
  1337. 21159
  1338. * REPLACING old line(s) by new
  1339. 21598 ' $SUBTITLE: 'XferType - sub to identify file xfer protocol'
  1340. ' $PAGE
  1341. '
  1342. '  NAME    -- XferType
  1343. '
  1344. '  INPUTS  --     PARAMETER                    MEANING
  1345. '               Index            = 1       Manual select for up/download
  1346. '                                = 2       Default select
  1347. '                                = 3       Set transfer default
  1348. '               ZOutTxt$
  1349. '               ZUserIn$(1)
  1350. '               ZWasQ
  1351. '               ZReliableMode
  1352. '               ZTransferOption$
  1353. '               ZUserXferDefault$
  1354. '               ZXferSupport
  1355. '
  1356. '  OUTPUTS   -- ZCheckSum
  1357. '               ZFLen
  1358. '               ZWasFT$
  1359. '
  1360. '  PURPOSE -- To identify the file transfer protocol (either
  1361. '             from the user's default or via explicit selection)
  1362. '
  1363.       SUB XferType (Index,SkipHelp) STATIC
  1364.       IF ZTransferOption$ = "" OR ZUserSecLevel <> PrevUSL OR PrevDef$ <> ZProtoDef$ THEN _
  1365.          CALL Protocol : _
  1366.          PrevDef$ = ZProtoDef$ : _
  1367.          PrevUSL = ZUserSecLevel
  1368. * ------[ first line different ]------
  1369.       WasX$ = ZOutTxt$ + ZFGE$ + "Protocols Available:" + _          ' DD082501
  1370.               ZEmphasizeOff$                                         ' DD082501
  1371.       ON Index GOTO 21600,21620,21600
  1372. '
  1373. '
  1374. ' *  MANUAL SELECT OF Transfer Protocol
  1375. '
  1376. '
  1377. * REPLACING old line(s) by new
  1378. 21604 ZStopInterrupts = ZTrue
  1379.       IF Index = 3 THEN _
  1380.          IF ZAnsIndex < ZLastIndex THEN _
  1381.             GOTO 21605
  1382. * ------[ first line different ]------
  1383.       ProtoMenu$ = ZWelcomeFileDrvPath$ + "PROTO.MNU"                ' DD062201
  1384.       CALL Graphic (ProtoMenu$)                                      ' DD062201
  1385.       CALL FindIt (ProtoMenu$)                                       ' DD062201
  1386.       IF ZOK THEN                                                    ' DD062201
  1387.          CALL BufFile (ProtoMenu$,WasX)                              ' DD062201
  1388.          promptstr$ = ZFGB$ + "Select Protocol" + _                  ' DD070801
  1389.                       ZEmphasizeOff$ + ZPressEnterExpert$            ' DD070801
  1390.          CALL ColorPrompt (promptstr$)                               ' DD070801
  1391.          CALL QuickTPut (promptstr$ + ZEmphasizeOff$,0)              ' DD070801
  1392.       ELSE                                                           ' DD062201
  1393.          CALL QuickTPut (WasX$,0)                                    ' DD062201
  1394.          CALL BufString (ZTransferOption$,4096,WasX)                 ' DD062201
  1395.       END IF                                                         ' DD070801
  1396.       CALL QuickTPut (MID$("?!",1-ZTurboKeyUser,1)+SPACE$(1),0)      ' DD070801
  1397. * REPLACING old line(s) by new
  1398. 21605 ZOutTxt$ = ""
  1399.       ZTurboKey = -ZTurboKeyUser
  1400.       ZMacroMin = 2
  1401.       ZSubParm = 1
  1402.       ZSuspendAutoLogoff = ZTrue
  1403.       ZStackC = ZTrue
  1404.       IF Index = 3 THEN _
  1405.          CALL PopCmdStack : _
  1406.          WasX = ZAnsIndex _
  1407.       ELSE ZSubParm = 1 : _
  1408.            CALL TGet : _
  1409.            WasX = 1
  1410.       ZSuspendAutoLogoff = ZFalse
  1411.       IF ZSubParm = -1 THEN _
  1412.          EXIT SUB
  1413. * ------[ first line different ]------
  1414. '                                                                    ' DD070801
  1415. ' * USE [ENTER] to Cancel instead on "N"one                          ' DD070801
  1416. '                                                                    ' DD070801
  1417.       IF ZWasQ = 0 THEN                                              ' DD070801
  1418.           ZAnsIndex = 1                                              ' DD070801
  1419.           WasX = 1                                                   ' DD070801
  1420.           ZWasZ$ = ZUserXferDefault$                                 ' DD070801
  1421.           ZUserIn$(WasX) = "N"                                       ' DD070801
  1422.           GOTO 21610                                                 ' DD070801
  1423. '         GOTO 21604                                                 ' DD070801
  1424.       END IF                                                         ' DD070801
  1425. * REPLACING old line(s) by new
  1426. 21620 ZFF = -1
  1427.       IF ZCmdTransfer$ <> "" THEN _
  1428.          ZWasZ$ = ZCmdTransfer$ : _
  1429.          GOTO 21610
  1430.       WasX = INSTR(ZDefaultXfer$,ZUserXferDefault$)
  1431.       IF WasX > 0 THEN _
  1432. * ------[ first line different ]------
  1433.          IF MID$(ZInternalEquiv$,WasX,1) <> CHR$(78) THEN _   'N     ' DD021301
  1434.             ZWasZ$ = ZUserXferDefault$ : _
  1435.             GOTO 21610
  1436.       ZProtoPrompt$ = "None"
  1437.       ZFF = 0
  1438.       EXIT SUB
  1439. * REPLACING old line(s) by new
  1440. 21621 IF ZFF = PrevFF AND PrevProtoDef$ = ZProtoDef$ THEN _
  1441.          ZProtoPrompt$ = PrevProtoPrompt$ : _
  1442. * ------[ first line different ]------
  1443.          GOSUB 21630 : _                                             ' DD082204
  1444.          EXIT SUB
  1445.       PrevFF = ZFF
  1446.       PrevProtoDef$ = ZProtoDef$
  1447.       ZInternalProt$ = MID$(ZInternalEquiv$,ZFF,1)
  1448.       ZCheckSum = (ZInternalProt$ = CHR$(88))                 'X     ' DD021301
  1449.       CALL FindIt (ZProtoDef$)
  1450.       IF ZOK THEN _
  1451.          GOTO 21623
  1452.       WasX = INSTR("AXCYN",ZInternalProt$)
  1453.       IF WasX < 1 THEN _
  1454.          ZInternalProt$ = CHR$(78)                            'N     ' DD021301
  1455.       ZProtoPrompt$ = MID$("Ascii     Xmodem    Xmodem/CRCYmodem    None",10*INSTR("AXCYN",ZInternalProt$)-9,10)
  1456.       CALL TrimTrail (ZProtoPrompt$,SPACE$(1))                       ' DD021301
  1457.       ZCheckSum = (ZInternalProt$ = CHR$(88))                 'X     ' DD021301
  1458.       ZFLen = 128 - 896 * (ZInternalProt$ = CHR$(89))         'Y     ' DD021301
  1459.       ZBlockSize = ZFLen
  1460.       IF ZInternalProt$ = CHR$(89) THEN _                            ' DD021301
  1461.          ZSpeedFactor! = 0.87 _
  1462.       ELSE IF ZInternalProt$ = CHR$(65) THEN _                'A     ' DD021301
  1463.          ZSpeedFactor! = 0.92 _
  1464.       ELSE ZSpeedFactor! = 0.78
  1465.       GOTO 21625
  1466. * REPLACING old line(s) by new
  1467. 21623 CALL ReadParms (ZWorkAra$(),13,ZFF)
  1468.       IF ZErrCode > 0 THEN _
  1469.          ZFF = LEN(ZDefaultXfer$) : _
  1470.          ZProtoPrompt$ = "None" : _
  1471.          GOTO 21625
  1472.       ZProtoPrompt$ = ZWorkAra$(1)
  1473.       IF LEN(ZProtoPrompt$) > 2 THEN _
  1474. * ------[ first line different ]------
  1475.          IF MID$(ZProtoPrompt$,2,1) = CHR$(41) THEN _         ')     ' DD021301
  1476.             ZProtoPrompt$ = LEFT$(ZProtoPrompt$,1) + MID$(ZProtoPrompt$,3)
  1477.       WasX = INSTR(ZProtoPrompt$+ZCrLf$,ZCrLf$)
  1478.       ZProtoPrompt$ = LEFT$(ZProtoPrompt$,WasX-1)
  1479.       GOSUB 21630                                                    ' DD082204
  1480.       CALL Trim (ZProtoPrompt$)
  1481.       ZProtoMethod$ = LEFT$(ZWorkAra$(3),2)                          ' DD031501
  1482.       CALL AllCaps (ZProtoMethod$)
  1483.       ZReq8Bit = (LEFT$(ZWorkAra$(4),1) = CHR$(56))           '8     ' DD021301
  1484.       ZDownTemplate$ = ZWorkAra$(12)
  1485.       ZUpTemplate$ = ZWorkAra$(13)
  1486.       WasX$ = ZWorkAra$(11)
  1487.       WasX = INSTR(WasX$,CHR$(61))                            '=     ' DD021301
  1488.       ZAdvanceProtoWrite = ZFalse
  1489.       IF WasX < 2 OR WasX >= LEN(WasX$) THEN _
  1490.          ZFailureParm = 4 : _
  1491.          ZFailureString$ = CHR$(70) _                         'F     ' DD021301
  1492.       ELSE ZFailureParm = VAL(LEFT$(WasX$,WasX-1)) : _
  1493.            ZFailureString$ = MID$(WasX$,WasX+1) : _
  1494.            WasX = INSTR(ZFailureString$,CHR$(61)) : _                ' DD021301
  1495.            IF WasX > 0 THEN _
  1496.               ZAdvanceProtoWrite = (MID$(ZFailureString$,WasX) = "=A") : _
  1497.               ZFailureString$ = LEFT$(ZFailureString$,WasX-1)
  1498.       ZProtoMacro$ = ZWorkAra$(10)
  1499.       ZFakeXRpt = (LEFT$(ZWorkAra$(8),1) = CHR$(70))                 ' DD021301
  1500.       ZBatchProto = (LEFT$(ZWorkAra$(6),1) = CHR$(66))        'B     ' DD021301
  1501.       ZSpeedFactor! = VAL(ZWorkAra$(9))
  1502.       IF ZSpeedFactor! < 0.1 THEN _
  1503.          ZSpeedFactor! = 0.87
  1504.       ZBlockSize = VAL(ZWorkAra$(7))
  1505.       ZFLen = ZBlockSize
  1506.       IF ZFLen < 1 THEN _
  1507.          ZFLen = 128
  1508. * REPLACING old line(s) by new
  1509. 21625 PrevProtoPrompt$ = ZProtoPrompt$
  1510. * ------[ first line different ]------
  1511.       EXIT SUB
  1512. * INSERTING new line(s)
  1513. 21630 Delimit = INSTR(ZProtoPrompt$,ZSmartTextCode$)                 ' DD082204
  1514.       IF Delimit = 0 THEN _                                          ' DD082204
  1515.          RETURN                                                      ' DD082204
  1516.       ZProtoPrompt$ = LEFT$(ZProtoPrompt$,Delimit-1) + _             ' DD082204
  1517.                   RIGHT$(ZProtoPrompt$,LEN(ZProtoPrompt$)-Delimit-2) ' DD082204
  1518.       GOTO 21630                                                     ' DD082204
  1519.       END SUB
  1520. * REPLACING old line(s) by new
  1521. 21993 ' $SUBTITLE: 'FileLock - subroutine to share RBBS-PC files'
  1522. ' $PAGE
  1523. '
  1524. '  NAME    -- FileLock
  1525. '
  1526. '  INPUTS  --     PARAMETER                    MEANING
  1527. '             ZSubParm               = 1 UNLOCK USERS AND MESSAGES
  1528. '                                      2 FLUSH MESSAGE RECORD TO DISK
  1529. '                                        AND UNLOCK MESSAGES
  1530. '                                      3 LOCK MESSAGE FILE
  1531. '                                      4 UNLOCK MESSAGE FILE
  1532. '                                      5 LOCK USER FILE
  1533. '                                      6 LOCK 4 RECORD BLOCK IN USER
  1534. '                                        FILE
  1535. '                                      7 UNLOCK USER FILE
  1536. '                                      8 UNLOCK 4 RECORD BLOCK IN USER
  1537. '                                        FILE
  1538. '                                      9 LOCK UPLOAD DIRECTORY OR
  1539. '                                        COMMENTS FILE
  1540. '                                     10 UNLOCK UPLOAD DIRECTORY OR
  1541. '                                        COMMENTS FILE
  1542. '               ACTIVE.MESSAGE FILE$     NAME OF MESSAGE FILE
  1543. '               ZActiveUserFile$         NAME OF USER FILE
  1544. '               CONFIG.FILE.NAME$        FILE NAME TO FLUSH RECORD FROM
  1545. '               ZWasEN$                  UPLOAD DIRECTORY OR COMMENTS
  1546. '                                        FILE NAME TO LOCK/UNLOCK
  1547. '               ZNetworkType             TYPE OF NETWORK LOCKING TO USE
  1548. '
  1549. '  OUTPUTS -- ZSubParm = -1 TERMINATE RBBS-PC IMMEDATELY
  1550. '             ZBlk
  1551. '             ZLockDrive
  1552. '             ZLockFileName$
  1553. '             ZLockStatus$
  1554. '             ZMsgFileLock
  1555. '             ZUserBlockLock
  1556. '             ZUserFileLock
  1557. '             ZUserFileIndex
  1558. '
  1559. '  PURPOSE -- To lock and unlock the shared RBBS-PC files when
  1560. '             multiple copies of RBBS-PC are sharing the same
  1561. '             files in either a multi-tasking DOS environment or
  1562. '             in a local area network environment
  1563. '
  1564.       SUB FileLock STATIC
  1565. * ------[ first line different ]------
  1566.       IF ZNetworkType = 0 THEN _                                     'Pe 06/26/92
  1567.          EXIT SUB                                                    'Pe 06/26/92
  1568.       ON ZSubParm GOSUB 21995,21996,22000,25000,26000, _
  1569.                                     26500,27000,27500,29000,29500
  1570.       EXIT SUB
  1571. '
  1572. '
  1573. ' *  UNLOCK USERS AND MESSAGES
  1574. '
  1575. '
  1576. * REPLACING old line(s) by new
  1577. 22000 IF ZMsgFileLock = ZTrue THEN _
  1578.          RETURN
  1579.       ZMsgFileLock = ZTrue
  1580.       MID$(ZLockStatus$,1,2) = "LM"
  1581.       ZSubParm = 2
  1582.       CALL Line25
  1583.       ZLockFileName$ = ZActiveMessageFile$
  1584.       ON ZNetworkType GOTO 22100,22200,22300,22400,22500,29700
  1585.       RETURN
  1586. '
  1587. '
  1588. ' *  LOCK MESSAGE FILE (MULTI-LINK)
  1589. '
  1590. '
  1591. * ------[ first line different ]------
  1592. 22100'WasAX = &H0                                                    ' DD090401
  1593. '     WasBX = &H1                                                    ' DD090401
  1594. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1595. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1596.       RETURN
  1597. '
  1598. '
  1599. ' *  LOCK MESSAGE FILE (OMNINET)
  1600. '
  1601. '
  1602. * DELETING old line(s)
  1603. 22100
  1604. * REPLACING old line(s) by new
  1605. 25000 IF NOT ZMsgFileLock THEN _
  1606.          RETURN
  1607.       ZMsgFileLock = ZFalse
  1608.       MID$(ZLockStatus$,1,2) = "UM"
  1609.       ZSubParm = 2
  1610.       CALL Line25
  1611.       ZLockFileName$ = ZActiveMessageFile$
  1612.       ON ZNetworkType GOTO 25100,25200,25300,25400,25500,29800
  1613.       RETURN
  1614. '
  1615. '
  1616. ' *  UNLOCK MESSAGE FILE (MULTI-LINK)
  1617. '
  1618. '
  1619. * ------[ first line different ]------
  1620. 25100'WasAX = &H100                                                  ' DD090401
  1621. '     WasBX = &H1                                                    ' DD090401
  1622. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1623. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1624.       RETURN
  1625. '
  1626. '
  1627. ' *  UNLOCK MESSAGE FILE (OMNINET)
  1628. '
  1629. '
  1630. * DELETING old line(s)
  1631. 25100
  1632. * REPLACING old line(s) by new
  1633. 26000 IF ZUserFileLock = ZTrue THEN _
  1634.          RETURN
  1635.       ZUserFileLock = ZTrue
  1636.       MID$(ZLockStatus$,4,2) = "LU"
  1637.       ZSubParm = 2
  1638.       CALL Line25
  1639.       ZLockFileName$ = ZActiveUserFile$
  1640.       ON ZNetworkType GOTO 26100,26200,22300,26300,22500,29720
  1641.       RETURN
  1642. '
  1643. '
  1644. ' *  LOCK USER FILE (MULTI-LINK)
  1645. '
  1646. '
  1647. * ------[ first line different ]------
  1648. 26100'WasAX = &H0                                                    ' DD090401
  1649. '     WasBX = &H2                                                    ' DD090401
  1650. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1651. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1652.       RETURN
  1653. '
  1654. '
  1655. ' *  LOCK USER FILE (OMNINET)
  1656. '
  1657. '
  1658. * DELETING old line(s)
  1659. 26100
  1660. * REPLACING old line(s) by new
  1661. 26500 IF ZUserBlockLock = ZTrue THEN _
  1662.          RETURN
  1663.       ZUserBlockLock = ZTrue
  1664.       ZBlk = (ZUserFileIndex / 4) + .26
  1665.       MID$(ZLockStatus$,7,2) = "LB"
  1666.       ZSubParm = 2
  1667.       CALL Line25
  1668.       ON ZNetworkType GOTO 26600,26700,26800,26750,26900,29730
  1669.       RETURN
  1670. '
  1671. '
  1672. ' *  LOCK 4 RECORD BLOCK IN USER FILE (MULTI-LINK)
  1673. '
  1674. '
  1675. * ------[ first line different ]------
  1676. 26600'WasAX = &H0                                                    ' DD090401
  1677. '     WasBX = ZBlk + 10                                              ' DD090401
  1678. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1679. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1680.       RETURN
  1681. '
  1682. '
  1683. ' *  LOCK 4 RECORD BLOCK IN USER FILE (OMNINET)
  1684. '
  1685. '
  1686. * DELETING old line(s)
  1687. 26600
  1688. * REPLACING old line(s) by new
  1689. 26700 WasCC$ = CHR$(1) + _
  1690.             "BLK" + _
  1691. * ------[ first line different ]------
  1692.             RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5)             ' DD021301
  1693.       GOSUB 28000
  1694.       IF WasCT = 0 THEN _
  1695.          RETURN
  1696.       CALL DelayTime (1)
  1697.       GOTO 26700
  1698. '
  1699. '
  1700. ' *  LOCK 4 RECORD BLOCK IN USER FILE (DESKVIEW)
  1701. '
  1702. '
  1703. * REPLACING old line(s) by new
  1704. * ------[ first line different ]------
  1705. 26750 CALL DVLock("BLK" + RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5)) ' DD021301
  1706.       RETURN
  1707. '
  1708. '
  1709. ' *  LOCK 4 RECORD BLOCK IN USER FILE (ORCHID PC-NET)
  1710. '
  1711. '
  1712. * REPLACING old line(s) by new
  1713. 26800 ZLockFileName$ = LEFT$(ZActiveUserFile$,2) + _
  1714.                         "BLK" + _
  1715. * ------[ first line different ]------
  1716.                         RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5) ' DD021301
  1717.       GOTO 22300
  1718. '
  1719. '
  1720. ' *  LOCK 4 RECORD BLOCK IN USER FILE (10 NET)
  1721. '
  1722. '
  1723. * REPLACING old line(s) by new
  1724. 26900 ZLockFileName$ = LEFT$(ZActiveUserFile$,2) + _
  1725.                         "BLK" + _
  1726. * ------[ first line different ]------
  1727.                         RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5) ' DD021301
  1728.       GOTO 22500
  1729. '
  1730. '
  1731. ' *  UNLOCK USER FILE
  1732. '
  1733. '
  1734. * REPLACING old line(s) by new
  1735. 27000 IF NOT ZUserFileLock THEN _
  1736.          RETURN
  1737.       ZUserFileLock = ZFalse
  1738.       MID$(ZLockStatus$,4,2) = "UU"
  1739.       ZSubParm = 2
  1740.       CALL Line25
  1741.       ZLockFileName$ = ZActiveUserFile$
  1742.       ON ZNetworkType GOTO 27100,27200,25300,27300,25500,29820
  1743.       RETURN
  1744. '
  1745. '
  1746. ' *  UNLOCK USER FILE (MULTI-LINK)
  1747. '
  1748. '
  1749. * ------[ first line different ]------
  1750. 27100'WasAX = &H100                                                  ' DD090401
  1751. '     WasBX = &H2                                                    ' DD090401
  1752. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1753. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1754.       RETURN
  1755. '
  1756. '
  1757. ' *  UNLOCK USER FILE (OMNINET)
  1758. '
  1759. '
  1760. * DELETING old line(s)
  1761. 27100
  1762. * REPLACING old line(s) by new
  1763. 27500 IF NOT ZUserBlockLock THEN _
  1764.          RETURN
  1765.       ZUserBlockLock = ZFalse
  1766.       ZBlk = (ZUserFileIndex / 4) + .26
  1767.       MID$(ZLockStatus$,7,2) = "UB"
  1768.       ZSubParm = 2
  1769.       CALL Line25
  1770.       ON ZNetworkType GOTO 27600,27700,27800,27750,27900,29830
  1771.       RETURN
  1772. '
  1773. '
  1774. ' *  UNLOCK 4 RECORD BLOCK IN USER FILE (MULTI-LINK)
  1775. '
  1776. '
  1777. * ------[ first line different ]------
  1778. 27600'WasAX = &H100                                                  ' DD090401
  1779. '     WasBX = ZBlk + 10                                              ' DD090401
  1780. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1781. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1782.       RETURN
  1783. '
  1784. '
  1785. ' *  UNLOCK 4 RECORD BLOCK IN USER FILE (OMNINET)
  1786. '
  1787. '
  1788. * DELETING old line(s)
  1789. 27600
  1790. * REPLACING old line(s) by new
  1791. 27700 WasCC$ = CHR$(17) + _
  1792.             "BLK" + _
  1793. * ------[ first line different ]------
  1794.             RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5)             ' DD021301
  1795.       GOSUB 28000
  1796.       IF WasCT = 128 THEN _
  1797.          RETURN
  1798.       CALL DelayTime (1)
  1799.       GOTO 27700
  1800. '
  1801. '
  1802. ' *  UNLOCK 4 RECORD BLOCK IN USER FILE (DESQVIEW)
  1803. '
  1804. '
  1805. * REPLACING old line(s) by new
  1806. * ------[ first line different ]------
  1807. 27750 CALL DVUnlock("BLK" + RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5)) ' DD021301
  1808.       RETURN
  1809. '
  1810. '
  1811. ' *  UNLOCK 4 RECORD BLOCK IN USER FILE (ORCHID PC-NET)
  1812. '
  1813. '
  1814. * REPLACING old line(s) by new
  1815. 27800 ZLockFileName$ = LEFT$(ZActiveUserFile$,2) + _
  1816.                         "BLK" + _
  1817. * ------[ first line different ]------
  1818.                         RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5) ' DD021301
  1819.       GOTO 25300
  1820. '
  1821. '
  1822. ' *  UNLOCK 4 RECORD BLOCK IN USER FILE (10-NET)
  1823. '
  1824. '
  1825. * REPLACING old line(s) by new
  1826. 27900 ZLockFileName$ = LEFT$(ZActiveUserFile$,2) + _
  1827.                         "BLK" + _
  1828. * ------[ first line different ]------
  1829.                         RIGHT$(STRING$(4,48) + MID$(STR$(ZBlk),2),5) ' DD021301
  1830.       GOTO 25500
  1831. '
  1832. '
  1833. ' *  CORVUS OMNINET INTERFACE
  1834. '
  1835. '
  1836. * REPLACING old line(s) by new
  1837. 29000 IF LockedEn$ = ZWasEN$ THEN _
  1838.          RETURN
  1839.       LockedEn$ = ZWasEN$
  1840. * ------[ first line different ]------
  1841. '     MID$(ZLockStatus$,10,2) = "LD"                                 ' JM092401/RCHAT
  1842. '     ZSubParm = 2                                                   ' JM092401/RCHAT
  1843. '     CALL Line25                                                    ' JM092401/RCHAT
  1844.       ZLockFileName$ = ZWasEN$
  1845.       ON ZNetworkType GOTO 29100,29010,22300,29300,22500,29710
  1846. * REPLACING old line(s) by new
  1847. 29010 RETURN
  1848. '
  1849. '
  1850. ' *  LOCK UPLOAD DIRECTORY OR COMMENTS BASED ON ZWasEN$ (MULTI-LINK)
  1851. '
  1852. '
  1853. * ------[ first line different ]------
  1854. 29100'WasAX = &H0                                                    ' DD090401
  1855. '     WasBX = &H3                                                    ' DD090401
  1856. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1857. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1858.       RETURN
  1859. '
  1860. '
  1861. ' *  LOCK UPLOAD DIRECTORY AND COMMENTS (DESQVIEW)
  1862. '
  1863. '
  1864. * DELETING old line(s)
  1865. 29100
  1866. * REPLACING old line(s) by new
  1867. 29500 IF LockedEn$ <> ZWasEN$ THEN _
  1868.          RETURN
  1869.       LockedEn$ = ""
  1870. * ------[ first line different ]------
  1871. '     MID$(ZLockStatus$,10,2) = "UD"                                 ' JM092401/RCHAT
  1872. '     ZSubParm = 2                                                   ' JM092401/RCHAT
  1873. '     CALL Line25                                                    ' JM092401/RCHAT
  1874.       ZLockFileName$ = ZWasEN$
  1875.       ON ZNetworkType GOTO 29600,29510,25300,29650,25500,29810
  1876. * REPLACING old line(s) by new
  1877. 29510 RETURN
  1878. '
  1879. '
  1880. ' *  UNLOCK UPLOAD DIRECTORY OR COMMENTS BASED ON ZWasEN$ (MULTI-LINK)
  1881. '
  1882. '
  1883. * ------[ first line different ]------
  1884. 29600'WasAX = &H100                                                  ' DD090401
  1885. '     WasBX = &H3                                                    ' DD090401
  1886. '     IF ZMultiLinkPresent > 0 THEN _                                ' DD090401
  1887. '        CALL RBBSML(WasAX,WasBX)                                    ' DD090401
  1888.       EXIT SUB
  1889. '
  1890. '
  1891. ' *  UNLOCK UPLOAD DIRECTORY AND COMMENTS (DESQVIEW)
  1892. '
  1893. '
  1894. * DELETING old line(s)
  1895. 29600
  1896. * REPLACING old line(s) by new
  1897. 30595 ' $SUBTITLE: 'FindFKey - sub to handle local keyboard functions'
  1898. ' $PAGE
  1899. '
  1900. '  NAME    -- FindFKey
  1901. '
  1902. '  INPUTS  --  PARAMETER                 MEANING
  1903. '             ZActiveMenu$              INDICATOR OF ACTIVE MENU
  1904. '             ZAdjustedSecurity         Switch INDICATING TEMP. SECURITY CHANGE
  1905. * ------[ first line different ]------
  1906. '             ZFullScreenEditor         USER'S PREFERENCE FOR ANSIed ' AnsiEd
  1907. '             ZCallersFile$             NAME OF CALLERS FILE
  1908. '             ZChatAvail                Toggle INDICATING IF Sysop WILL CHAT
  1909. '             ZCheckBulletLogon         USER'S PREFERENCE FOR BULLETIN CHECK
  1910. '             ZConfMode                 INDICATOR THAT USER IS IN A CONFERENCE
  1911. '             ZCursorLine               LINE THAT THE CURSOR IS AT
  1912. '             ZCursorRow                ROW THAT THE CURSOR IS AT
  1913. '             ZDiskForDos$              DISK TO LOAD COMMAND.COM FROM
  1914. '             ZDiskFullGoOffline        INDICATOR OF WHAT TO DO WHEN DISK FULL
  1915. '             ZExitToDoors              FLAG INDICATING EXITING TO DOORS
  1916. '             ZExpertUser               FLAG FOR EXPERT/NOVICE USER MODE
  1917. '             ZFirstName$               LOGGED ON USER'S First NAME
  1918. '             ZF1Key                    FUNCTION KEY ONE VALUE
  1919. '             ZF10Key                   FUNCTION KEY TEN VALUE
  1920. '             ZWasGR                    GRAPHICS PREFERENCE OF USER
  1921. '             ZLineFeeds                SWTICH FOR USER'S LINE FEED PREFERENCE
  1922. '             ZLocalUser                FLAG INDICATING USER IS LOCAL
  1923. '             ZMinLogonSec              MINIMUM SECURITY TO LOGON
  1924. '             ZModemGoOffHookCmd$       COMMAND TO TAKE MODEM OFF-HOOK
  1925. '             ZModemInitBaud$           BAUD TO INITIALIZE MODEM AT
  1926. '             ZNodeID$                  NODE IDENTIFIER
  1927. '             ZNodeRecIndex             NODE RECORD Index FOR THIS NODE
  1928. '             ZNulls                    Switch FOR USER'S PREFERENCE FOR Nulls
  1929. '             ZPrinter                  Toggle INDICATING Printer IS AVAILABLE
  1930. '             ZPromptBell               USER'S PREFERENCE FOR BELLS ON PROMPTS
  1931. '             SECONDS.PER.SESSION       TIME LEFT IN CURRENT USER SESSION
  1932. '             ZSkipFilesLogon           USER'S LOGON NOTIFICIATION PREFERENCE
  1933. '             ZSnoop                    Toggle INDICATING Snoop STATUS
  1934. '             ZSubParm                  -8  = Sysop'S OPTION 6 REMOTELY
  1935. '                                       -9  = GOT TO DOS
  1936. '                                       -10 = Sysop GET'S SYSTEM NEXT
  1937. '             ZSysop                    INDICATOR THAT USER IS Sysop
  1938. '             ZSysopAnnoy               Toggle INDICATING Sysop IS AVAILABLE
  1939. '             ZSysopNext                Toggle SO Sysop GETS SYSTEM NEXT
  1940. '             ZUpperCase                USER'S PREFERENCE FOR UPPER/LOWER CASE
  1941. '             ZUserFileIndex            Index INTO THE USER FILE FOR CALLER
  1942. '             ZUserSecLevel             USER'S SECURITY LEVEL
  1943. '             USERT.TRANSFER.DEFAULT    USER'S FILE Transfer DEFAULT PREFERENCE
  1944. '
  1945. '  OUTPUTS --
  1946. '             ZAdjustedSecurity         Switch INDICATING TEMP. SECURITY CHANGE
  1947. '             ZChatAvail                Toggle INDICATING IF Sysop WILL CHAT
  1948. '             ZFunctionKey              VALUE 1 TO 10 CORRESPONDING TO
  1949. '                                       THE FUNCTION KEY THAT WAS PRESSED
  1950. '             ZKeyPressed$              CHARACTER STRING GENERATED BY KEY
  1951. '             ZPrinter                  TOGGLE INDICATING Printer IS AVAILABLE
  1952. '             ZSnoop                    Toggle INDICATING Snoop STATUS
  1953. '             ZSysop                    INDICATOR THAT USER IS Sysop
  1954. '             ZSysopAnnoy               Toggle INDICATING Sysop IS AVAILABLE
  1955. '             ZSysopNext                Toggle SO Sysop GETS SYSTEM NEXT
  1956. '             ZSubParm                  -1 Carrier LOST
  1957. '                                       -2 CHAT MODE ACTIVATED
  1958. '                                       -3 FORCE CALLER ON-LINE
  1959. '                                       -4 EXIT TO SYSTEM IMMEDIATELY
  1960. '                                       -5 EXIT TO SYSTEM AFTER MULTI-LINK CALL
  1961. '                                       -6 TELL USER ACCESS IS DENIED
  1962. '                                       -7 UPDATE CALLERS FILE AND DENY ACCESS
  1963. '             ZUserSecLevel      USER'S SECURITY LEVEL
  1964. '
  1965. '  PURPOSE -- To determine if a function has been pressed on
  1966. '             the PC'S keyboard that is running RBBS-PC.
  1967. '
  1968.       SUB FindFKey STATIC
  1969.       LookUp = ZSubParm
  1970.       IF ZSubParm < -1 THEN _
  1971.          ZSubParm = 0 : _
  1972.          IF LookUp = - 8 THEN _
  1973.             GOTO 33070 _
  1974.          ELSE IF LookUp = - 9 THEN _
  1975.                  GOTO 31000 _
  1976.               ELSE IF LookUp = - 10 THEN _
  1977.                       GOTO 33090
  1978. '
  1979. '
  1980. ' *  TEST FOR FUNCTION KEY PRESSED
  1981. '
  1982. '
  1983. * REPLACING old line(s) by new
  1984. 30600 IF ZKeyboardStack$ = "" THEN _
  1985.          ZKeyPressed$ = INKEY$ _
  1986.       ELSE ZKeyPressed$ = ZKeyboardStack$ : _
  1987.            ZKeyboardStack$ = ""
  1988.       ZFunctionKey = 0
  1989.       IF LEN(ZKeyPressed$) <> 2 THEN _
  1990.          GOTO 33970
  1991.       ZKeyPressed = ASC(RIGHT$(ZKeyPressed$,1))
  1992.       IF ZLocalUser AND NOT ZSysop THEN _
  1993.          ZKeyPressed$ = "" : _
  1994.          GOTO 33970
  1995. * ------[ first line different ]------
  1996.       IF ZKeyPressed => 59 AND _                                     ' DD062304
  1997.          ZKeyPressed <= 68 THEN _                                    ' DD062304
  1998.              ZFunctionKey = ZKeyPressed - 58 : _
  1999.              GOTO 30610
  2000.       IF ZKeyPressed = 117 THEN _    'Ctrl-End
  2001.          ZFunctionKey = 11
  2002.       IF ZKeyPressed = 73 THEN _     'PgUp
  2003.          ZFunctionKey = 12
  2004.       IF ZKeyPressed = 72 THEN _     'up arrow
  2005.          ZFunctionKey = 13
  2006.       IF ZKeyPressed = 80 THEN _     'Down arrow
  2007.          ZFunctionKey = 14
  2008.       IF ZKeyPressed = 81 THEN _     'PgDn
  2009.          ZFunctionKey = 15
  2010.       IF ZKeyPressed = 75 THEN _     'left arrow
  2011.          ZFunctionKey = 16
  2012.       IF ZKeyPressed = 77 THEN _     'Right arrow
  2013.          ZFunctionKey = 17
  2014.       IF ZKeyPressed = 141 THEN _    'CTRL-up arrow
  2015.          ZFunctionKey = 18
  2016.       IF ZKeyPressed = 132 THEN _    'CTRL-PgUp (same as CTRL-UP)
  2017.          ZFunctionKey = 18
  2018.       IF ZKeyPressed = 145 THEN _    'CTRL-down arrow
  2019.          ZFunctionKey = 19
  2020.       IF ZKeyPressed = 118 THEN _    'CTRL-PgDn (same as CTRL-DOWN)
  2021.          ZFunctionKey = 19
  2022.       IF ZKeyPressed = 115 THEN _    'CTRL-left arrow
  2023.          ZFunctionKey = 20
  2024.       IF ZKeyPressed = 116 THEN _    'CTRL-right arrow
  2025.          ZFunctionKey = 21
  2026.       IF ZKeyPressed = 79 THEN _     'End (a nice way to kick user off)
  2027.          ZFunctionKey = 22
  2028.       IF ZKeyPressed = 159 THEN _    'Alt-End (kick user off with Line Noise)' DD092303/LINENOISE
  2029.          ZFunctionKey = 23                                           ' DD092303/LINENOISE
  2030.       IF ZKeyPressed = 113 THEN _    'Alt-F10 Toggle between ANSIChat and Line Chat ' DD021902
  2031.          ZFunctionKey = 24
  2032.       IF ZKeyPressed = 110 THEN _    'Alt-F7 Toggle 'LOG OFF NOW' message ' DD041802
  2033.          ZFunctionKey = 25                                           ' DD041802
  2034.       IF ZKeyPressed = 104 THEN _                                    ' DD050601
  2035.          ZFunctionKey = 26           'Alt-F1 Sysop Help Screen       ' DD050601
  2036. * REPLACING old line(s) by new
  2037. 30610 ZKeyPressed$ = ""
  2038. * ------[ first line different ]------
  2039.       IF ZFunctionKey < 1 OR ZFunctionKey > 26 THEN _                ' DD050601
  2040.          GOTO 33970
  2041.       IF ZFunctionKey < 10 AND (ZFunctionKey <> 8) THEN _
  2042.          GOTO 30620
  2043.       IF ZToggleOnly THEN _
  2044.          ZSubParm = 1 : _
  2045.          GOTO 33970
  2046. * REPLACING old line(s) by new
  2047. 30620 ON ZFunctionKey GOTO  31000, _            '  1 =  F1
  2048.                             32000, _            '  2 =  F2
  2049.                             33000, _            '  3 =  F3
  2050.                             33040, _            '  4 =  F4
  2051.                             33060, _            '  5 =  F5
  2052.                             33070, _            '  6 =  F6
  2053.                             33090, _            '  7 =  F7
  2054.                             33110, _            '  8 =  F8
  2055.                             33130, _            '  9 =  F9
  2056.                             33150, _            ' 10 = F10
  2057.                             31398, _            ' 11 = CTRL END
  2058.                             33200, _            ' 12 = PGUP
  2059.                             33170, _            ' 13 = UP ARROW
  2060.                             33180, _            ' 14 = DOWN ARROW
  2061.                             33220, _            ' 15 = PGDN
  2062.                             33240, _            ' 16 = LEFT ARROW
  2063.                             33250, _            ' 17 = RIGHT ARROW
  2064.                             33170, _            ' 18 = CTRL-UP ARROW
  2065.                             33180, _            ' 19 = CTRL-DOWN
  2066.                             33245, _            ' 20 = CTRL-LEFT
  2067.                             33255, _            ' 21 = CTRL-RIGHT
  2068. * ------[ first line different ]------
  2069.                             31398, _            ' 22 = END           ' DD092303/LINENOISE
  2070.                             31398, _            ' 23 = ALT-END       ' DD092303/LINENOISE
  2071.                             31400, _            ' 24 = Toggle Chat mode ' DD041802
  2072.                             33091, _            ' 25 = ALT-F7        ' D050601
  2073.                             31100               ' 26 = ALT-F1 Sysop Help ' DD050601
  2074. '
  2075. '
  2076. ' * F1 - COMMAND FROM LOCAL KEYBOARD (IMMEDIATE EXIT TO DOS)
  2077. '
  2078. '
  2079. * REPLACING old line(s) by new
  2080. 31000 ZSubParm = -10
  2081.       CALL Carrier
  2082.       IF ZSubParm = 0 THEN _
  2083.          GOTO 33970
  2084.       ZFileName$ = ZNodeWorkDrvPath$ + "RBBS" + ZNodeFileID$ + "F1.DEF"
  2085.       CLOSE 2
  2086.       CALL OpenOutW (ZFileName$)
  2087.       PRINT #2,MID$(ZFileName$,3,7)
  2088.       IF ZExitToDoors THEN _
  2089.          ZSubParm = -4 : _
  2090.          GOTO 33970
  2091.       CALL OpenCom(ZModemInitBaud$,",N,8,1")
  2092.       CALL TakeOffHook
  2093.       ZSubParm = -5
  2094.       GOTO 33970
  2095. * ------[ first line different ]------
  2096. '                                                                    ' DD050601
  2097. '                                                                    ' DD050601
  2098. ' * ALT-F1 Display Sysop Help Screen                                 ' DD050601
  2099. '                                                                    ' DD050601
  2100. * INSERTING new line(s)
  2101. 31100 IF NOT ZLocalUser THEN _                                       ' DD050601
  2102.          CALL Carrier : _                                            ' DD050601
  2103.          IF ZSubParm = -1 THEN _                                     ' DD050601
  2104.             GOTO 33970                                               ' DD050601
  2105.       CALL OpenWork (13,ZHelpPath$ + "SYSOP.HLP")                    ' DD050601
  2106.       IF ZErrCode <> 0 THEN                                          ' DD050601
  2107.          GOTO 33970                                                  ' DD050601
  2108.       END IF                                                         ' DD050601
  2109.       WHILE NOT EOF(13)                                              ' DD050601
  2110.          LINE INPUT #13, WasD$                                       ' DD050601
  2111.          CALL SmartText (WasD$,ZTrue,ZFalse,ZFalse)                  ' DD050601
  2112.          CALL LPrnt(WasD$,1)                                         ' DD050601
  2113.       WEND                                                           ' DD050601
  2114.       CLOSE 13                                                       ' DD050601
  2115.       GOTO 33970                                                     ' DD050601
  2116. '
  2117. ' *  END KEY - FORCE CURRENT USER OFF AND LOCK THEM OUT
  2118. '
  2119. '
  2120. * REPLACING old line(s) by new
  2121. 31398 IF NOT ZLocalUser THEN _
  2122.          CALL Carrier : _
  2123.          IF ZSubParm = -1 THEN _
  2124.             GOTO 33970
  2125.       IF INSTR("MUF",ZActiveMenu$) > 0 THEN _
  2126.          GOTO 31399
  2127.       ZCursorLine = CSRLIN
  2128.       ZCursorRow = POS(0)
  2129. * ------[ first line different ]------
  2130.       LOCATE ZLocalPageLength,1                                      ' DD021903/VGA
  2131.       WasD$ = SPACE$(79)
  2132.       GOSUB 33210
  2133.       LOCATE ZLocalPageLength,1                                      ' DD021903
  2134.       WasD$ ="Cannot FORCE OFF until user reaches MAIN menu"
  2135.       GOSUB 33210
  2136.       CALL DelayTime (1)
  2137.       LOCATE ZCursorLine,ZCursorRow
  2138.       ZSubParm = 1
  2139.       CALL Line25
  2140.       GOTO 33970
  2141. * REPLACING old line(s) by new
  2142. 31399 IF ZFunctionKey = 22 THEN _
  2143.          CALL SkipLine (2) : _
  2144.          CALL QuickTPut1 ("Sorry, " + ZFirstName$ + ", SysOp needs the system") : _
  2145.          CALL DelayTime (8 + ZBPS) : _
  2146.          ZSubParm = -6 : _
  2147.          GOTO 33970
  2148. * ------[ first line different ]------
  2149.       IF ZFunctionKey = 23 THEN                                      ' DD092303/LINENOISE
  2150.          CALL DelayTime (8 + ZBPS)                                   ' DD092303/LINENOISE
  2151.          CALL QuickTPut ("√√ ÃŸâ–ŒΘπ âˆšâˆš4",0)                          ' DD092303/LINENOISE
  2152.          CALL DelayTime (2)                                          ' DD092303/LINENOISE
  2153.          CALL QuickTPut ("sΘ╓╟",0)                                   ' DD092303/LINENOISE
  2154.          CALL DelayTime (1)                                          ' DD092303/LINENOISE
  2155.          CALL QuickTPut ("√ âˆš",0)                                    ' DD092303/LINENOISE
  2156.          CALL DelayTime (2)                                          ' DD092303/LINENOISE
  2157.          CALL QuickTPut (" âˆš âˆš âˆšÏ„√√√   ",0)                          ' DD092303/LINENOISE
  2158.          CALL DelayTime (4)                                          ' DD092303/LINENOISE
  2159.          ZSubParm = -6                                               ' DD092303/LINENOISE
  2160.          GOTO 33970                                                  ' DD092303/LINENOISE
  2161.       END IF                                                         ' DD092303/LINENOISE
  2162.       CALL QuickTPut1 (ZFirstName$ + ", goodbye and don't call back")
  2163.       CALL DelayTime (8 + ZBPS) : _
  2164.       IF ZUserFileIndex < 1 THEN _
  2165.          ZSubParm = -6 : _
  2166.          GOTO 33970
  2167.       ZUserSecLevel = ZMinLogonSec - 1
  2168.       CALL DenyAccess
  2169.       ZSubParm = -7
  2170.       GOTO 33970
  2171. '                                                                    ' DD021902
  2172. '                                                                    ' DD021902
  2173. ' * Toggle between ANSIChat and Line Chat                            ' DD021902
  2174. '                                                                    ' DD021902
  2175. * INSERTING new line(s)
  2176. 31400 ZCanANSIChat = NOT ZCanANSIChat                                ' DD021902
  2177.       GOTO 33150                                                     ' DD021902
  2178. '
  2179. '
  2180. ' * F2 - COMMAND FROM LOCAL KEYBOARD (SYSOP EXIT TO DOS AND RETURN)
  2181. '
  2182. '
  2183. * REPLACING old line(s) by new
  2184. 32000 IF NOT ZLocalUser THEN _
  2185.          CALL SkipLine (1) : _
  2186.          CALL QuickTPut1 ("Sysop exiting to DOS. Please wait...") : _
  2187.          ZFunctionKey = 0 : _
  2188.          CALL DelayTime (3)
  2189.       CALL ShellExit (ZDiskForDos$ + "COMMAND")
  2190.       'SHELL ZDiskForDos$ + _
  2191.       '      "COMMAND"
  2192.       CLS
  2193.       IF NOT ZLocalUser THEN _
  2194.          CALL Carrier : _
  2195.          IF ZSubParm = -1 THEN _
  2196.             GOTO 33970
  2197.       ZSubParm = 2
  2198.       CALL Line25
  2199.       CALL QuickTPut1 ("Sysop back from DOS.  Returning control to you.")
  2200.       ZCommPortStack$ = ZCarriageReturn$
  2201. * ------[ first line different ]------
  2202.       ZWasCM = 0                                                     ' DD062901/ANSICHAT
  2203.       GOTO 33970
  2204. '
  2205. '
  2206. ' * F3 - COMMAND FROM LOCAL KEYBOARD (Printer Toggle)
  2207. '
  2208. '
  2209. * REPLACING old line(s) by new
  2210. 33090 IF ERR=61 AND NOT ZDiskFullGoOffline THEN _
  2211.          GOTO 33970
  2212.       ZSysopNext = NOT ZSysopNext
  2213.       ChangeValue = ZSysopNext
  2214.       FieldPosition = 36
  2215.       GOTO 33950
  2216. * ------[ first line different ]------
  2217. '                                                                    ' DD041802
  2218. '                                                                    ' DD041802
  2219. ' * ALT-F7 Display Message to Caller to Log off                      ' DD041802
  2220. '                                                                    ' DD041802
  2221. * INSERTING new line(s)
  2222. 33091 ZLogOffPlease = NOT ZLogOffPlease                              ' DD041802
  2223.       GOTO 33970                                                     ' DD041802
  2224. '
  2225. '
  2226. ' * F8 - COMMAND FROM LOCAL KEYBOARD (ASSIGN USER TEMPORARY Sysop SECURITY)
  2227. '
  2228. '
  2229. * REPLACING old line(s) by new
  2230. 33110 ZSysop = NOT ZSysop
  2231.       ZCursorLine = CSRLIN
  2232.       ZCursorRow = POS(0)
  2233. * ------[ first line different ]------
  2234.       LOCATE ZLocalPageLength,1                                      ' DD021903/VGA
  2235.       WasD$ = SPACE$(79)
  2236.       NumReturns = 0
  2237.       CALL LPrnt (WasD$,NumReturns)
  2238.       LOCATE ZLocalPageLength,1                                      ' DD021903/VGA
  2239.       ZUserSecLevel = (1 + ZSysop) * _
  2240.                             ZUserSecSave  - _
  2241.                             ZSysop * _
  2242.                             ZSysopSecLevel
  2243.       WasD$ = "Sysop Privileges " + FNOffOn$(ZSysop)
  2244.       CALL LPrnt (WasD$,NumReturns)
  2245.       CALL DelayTime (3)
  2246.       LOCATE ZCursorLine,ZCursorRow
  2247.       ZSubParm = 1
  2248.       CALL Line25
  2249.       CALL SetPrompt
  2250.       GOTO 33970
  2251. '
  2252. '
  2253. ' * F9 - COMMAND FROM LOCAL KEYBOARD (Snoop Toggle)
  2254. '
  2255. '
  2256. * REPLACING old line(s) by new
  2257. 33130 IF NOT ZSnoop THEN _
  2258.          ZSnoop = ZTrue : _
  2259. * ------[ first line different ]------
  2260.          LOCATE ZLocalPageLength-1,1,0 : _                           ' DD021903
  2261.          WasD$ = "SNOOP ON" : _
  2262.          NumReturns = 0 : _
  2263.          CALL LPrnt (WasD$,NumReturns) : _
  2264.          ZSubParm = 2 : _
  2265.          CALL Line25 _
  2266.       ELSE LOCATE ,,0 : _
  2267.            ZSnoop = ZFalse : _
  2268.            CLS : _                                                   ' DD031503
  2269.            PRINT "Snoop is OFF, Press <F9> To ReActivate"            ' DD031503
  2270. * REPLACING old line(s) by new
  2271. * ------[ first line different ]------
  2272. 33150 IF ZWasCM = ZTrue THEN _                                       ' DD070401/ANSICHAT
  2273.          GOTO 33970                                                  ' DD070401/ANSICHAT
  2274.       GOTO 33160
  2275. * REPLACING old line(s) by new
  2276. 33160 CALL UpdtCalr ("Sysop began chat",1)
  2277.       ZPageStatus$ = ""
  2278. * ------[ first line different ]------
  2279.       ZSysopGreeting$ = "Hi " + ZFirstName$ + ", this is " + _       ' DD062801/ANSICHAT
  2280.                         ZSysopFirstName$ + _                         ' DD121401/ANSICHAT
  2281.                         ".  Sorry to break in and CHAT but..."       ' DD062801/ANSICHAT
  2282.       IF NOT ZLimitMinsPerSession THEN _                             ' LK 08/17/91
  2283.       CALL TimeBack (1)
  2284. * INSERTING new line(s)
  2285. 33162 IF ZCanANSIChat THEN                                           ' DD062801/ANSICHAT
  2286.          CALL ResetGraphics                                          ' DD062301
  2287.          CALL ANSIChat                                               ' DD062801/ANSICHAT
  2288.       ELSE                                                           ' DD062801/ANSICHAT
  2289.          CALL SkipLine (1)                                           ' DD062801/ANSICHAT
  2290.          CALL QuickTPut1 (ZSysopGreeting$)                           ' DD062801/ANSICHAT
  2291.          CALL SysopChat                                              ' DD062801/ANSICHAT
  2292.       END IF                                                         ' DD062801/ANSICHAT
  2293.       IF NOT ZLimitMinsPerSession THEN _                             ' LK 08/17/91
  2294.          CALL TimeBack (2)                                           ' Mpl090202
  2295.       ZCommPortStack$ = CHR$(13)
  2296.       GOTO 33155
  2297. '
  2298. '
  2299. ' * UP / CTRL-UP: INCREASE THE ON-LINE USER'S SECURITY BY ONE / FIVE
  2300. '
  2301. '
  2302. * REPLACING old line(s) by new
  2303. 33200 IF NOT ZLocalUser THEN _
  2304.          CALL Carrier : _
  2305.          IF ZSubParm = -1 THEN _
  2306.             GOTO 33970
  2307. * ------[ first line different ]------
  2308.       CALL OpenWork (13,ZWelcomeFileDrvPath$ + "USERINFO")           ' DD080801
  2309.       IF ZErrCode <> 0 THEN                                          ' DD080801
  2310.          ZErrCode = 0                                                ' DD080801
  2311.          EXIT SUB                                                    ' DD080801
  2312.       END IF                                                         ' DD080801
  2313.       WHILE NOT EOF(13)                                              ' DD080801
  2314.          LINE INPUT #13, WasD$                                       ' DD080801
  2315.          CALL SmartText (WasD$,ZTrue,ZFalse,ZFalse)                  ' DD080801
  2316.          CALL LPrnt(WasD$,1)                                         ' DD080801
  2317.       WEND                                                           ' DD080801
  2318.       CLOSE 13                                                       ' DD080801
  2319.       GOTO 33970
  2320. * REPLACING old line(s) by new
  2321. 33220 IF NOT ZLocalUser THEN _
  2322.          CALL Carrier : _
  2323.          IF ZSubParm = -1 THEN _
  2324.             GOTO 33970
  2325.       CLS
  2326. * ------[ first line different ]------
  2327.       ZWasCM = 0                                                     ' DD070401/ANSICHAT
  2328.       GOTO 33155
  2329. '
  2330. '
  2331. ' * LEFT ARROW - DECREASE THE ON-LINE USER'S TIME BY ONE MINUTE
  2332. '
  2333. '
  2334. * REPLACING old line(s) by new
  2335. * ------[ first line different ]------
  2336. 33970 IF ZFunctionKey < 22 AND ZFunctionKey > 15 THEN _               ' DD092303/LINENOISE
  2337.          MinsRemaining = _                                            ' Mpl090202
  2338.            (ZSecsPerSession! - ZSecsUsedSession!) / 60 : _            'DGS-L25
  2339.          CALL Line25                                                  'DGS-L25
  2340.       END SUB
  2341. * DELETING old line(s)
  2342. 33990
  2343. * INSERTING new line(s)
  2344. 41005 ' $SUBTITLE: 'CheckTimeRemain - Kicks off if no time remaining'' Mpl090202
  2345. ' $PAGE
  2346. '
  2347. '  NAME    -- CheckTimeRemain
  2348. '
  2349. '  INPUTS  -- PARAMETER                 MEANING
  2350. '
  2351. '  OUTPUTS -- PARAMETER                 MEANING
  2352. '             MinsRemaining         TIME IN MINUTES LEFT IN SESSION
  2353. '             ZSecsUsedSession!     TIME USED IN SECONDS
  2354. '             ZSubParm              -1 IF No TIME LEFT
  2355. '
  2356.       SUB CheckTimeRemain (MinsRemaining) STATIC
  2357.       CALL TimeRemain (MinsRemaining)
  2358.       IF ZBypassTimeCheck THEN _
  2359.          EXIT SUB
  2360.       IF MinsRemaining <= 3 AND NOT ZNonStop THEN                    ' DD071704
  2361.          CALL QuickTPut1 (ZFGE$ + ZBG4$ + _                          ' DD071704
  2362.                           "Automatic LogOff in " + _                 ' DD071704
  2363.                           LTRIM$(STR$(MinsRemaining)) + _            ' DD071704
  2364.                           " minute(s)!" + ZEmphasizeOff$)            ' DD071704
  2365.          CALL PutCom (ZBellRinger$)                                  'ST119201
  2366.       END IF                                                         ' DD071704
  2367.       GOTO 41009                                                     ' Mpl090202
  2368. 41007 IF MinsRemaining < 1 THEN                                      ' DD031004
  2369.          IF ZDnldCompleted AND ZAutoEnd = 1 AND _                    ' DD051102
  2370.             ZAutoLogOffReq = ZTrue THEN                              ' DD051102
  2371.             ZSubParm = -1                                            ' DD051102
  2372.             RETURN                                                   ' DD051102
  2373.          END IF                                                      ' DD051102
  2374.          CALL SkipLine (1)                                           ' DD031302
  2375.          CALL QuickTPut1 (ZFGF$ + ZBG4$ + _                          ' DD031302
  2376.               "Your Time has Expired!"+ ZEmphasizeOff$)              ' DD082202
  2377.       END IF                                                         ' DD051102
  2378.       IF ZTempMaxBank <= 0 THEN _                                    ' DD051102
  2379.          ZSubParm = -1 : _                                           ' DD082202
  2380.          RETURN                                                      ' DD082202
  2381.       ZSubParm = 1                                                   ' DD082202
  2382.       CALL SkipLine (1)                                              ' DD031302
  2383.       ZOutTxt$ = ZFGF$ + ZBG5$ + "Access The Time Bank?" + _         ' DD031302
  2384.                  ZEmphasizeOff$+ ZYesPrompt$                         ' DD060101
  2385.       ZTurboKey = -ZTurboKeyUser                                     ' Mpl090202
  2386.       CALL TGet                                                      ' Mpl090202
  2387.       IF ZSubParm = -1 THEN _                                        ' Mpl090202
  2388.          RETURN                                                      ' DD082202
  2389.       IF ZNo THEN _                                                  ' DD082202
  2390.          ZSubParm = -1 : _                                           ' DD082202
  2391.          RETURN                                                      ' DD082202
  2392.       CALL BankTime                                                  ' DD082202
  2393.       IF MinsRemaining < 1 THEN _                                    ' DD082202
  2394.          ZSubParm = -1 : _                                           ' DD082202
  2395.          RETURN                                                      ' DD082202
  2396. * DELETING old line(s)
  2397. 41008
  2398. * INSERTING new line(s)
  2399. 41009 IF MinsRemaining < 1 THEN _                                    ' DD082202
  2400.          GOSUB 41007                                                 ' Mpl090202
  2401.       IF ZSubParm = -1 THEN _                                        ' Mpl090202
  2402.          EXIT SUB                                                    ' DD082202
  2403.       END SUB
  2404. '
  2405. * REPLACING old line(s) by new
  2406. 41032 ' $SUBTITLE: 'DispTimeRemain - Display users time remaining'
  2407. ' $PAGE
  2408. '
  2409. '  NAME    -- DispTimeRemain
  2410. '
  2411. '  INPUTS  --     PARAMETER                    MEANING
  2412. '              MinsRemaining
  2413. '
  2414. '  OUTPUTS --     PARAMETER                    MEANING
  2415. '                MinsRemaining               TIME IN MINUTES LEFT IN SESSION
  2416. '
  2417.       SUB DispTimeRemain (MinsRemaining) STATIC
  2418.       CALL TimeRemain (MinsRemaining)
  2419. * ------[ first line different ]------
  2420.       CALL QuickTPut1 (ZFGB$ + STR$(MinsRemaining) + ZFG6$ + _       ' DD082401
  2421.            " min left" + ZEmphasizeOff$)                             ' DD082401
  2422.       Call Line25                                                    'Pe 05/30/91
  2423.       END SUB
  2424. * REPLACING old line(s) by new
  2425. 42020 ZSubParm = -1
  2426.       IF Speedy < -8 THEN _
  2427.          EXIT SUB
  2428.       IF AlreadyWritten = -9 THEN _
  2429.          EXIT SUB
  2430.       CALL TakeOffHook
  2431.       ZModemOffHook = -1
  2432.       AlreadyWritten = -9
  2433. * ------[ first line different ]------
  2434.       IF ZDoorCarrierDropOK$ = CHR$(89) THEN _                       ' DD021301/DOORCARRIERDROP
  2435.          CALL UpdtCalr ("Logged off from door",1) : _                ' DD011801/DOORCARRIERDROP
  2436.          EXIT SUB                                                    ' DD011801/DOORCARRIERDROP
  2437.       CALL UpdtCalr ("Carrier dropped",1)
  2438.       CALL SkipLine (1)                                              ' DD081701
  2439.       PRINT "Carrier Dropped!"                                       ' DD081701
  2440.       CALL DropCarrier                                               ' DD091401/DROP
  2441.       ZMenuCarriers = ZMenuCarriers + 1                              ' DD090901/MENU0
  2442.       IF ZFirstName$ = "" OR ZLastName$ = "" THEN _                  ' DD121501/CARR
  2443.          EXIT SUB                                                    ' DD121501/CARR
  2444.       OrigFirstName$ = ZFirstName$                                   ' DD121502/CARR
  2445.       IF ZDropIncrement > 0 OR ZDropIncrement = -1 THEN              ' NW061101
  2446.          CALL FindIt ("CARRIER.BAT")                                 ' DD121502/CARR
  2447.             IF NOT ZOK THEN _                                        ' DD121502/CARR
  2448.                EXIT SUB                                              ' DD121502/CARR
  2449.          ZDoorDropFile$ = CHR$(68)           'D                      ' DD021301
  2450.          CALL DoorInfo                                               ' DD121502/CARR
  2451.          CALL ShellExit ("CARRIER.BAT")                              ' DD121502/CARR
  2452.          ZMailWaiting = ZTrue                                        ' DD071101
  2453.       END IF                                                         ' DD121502/CARR
  2454.       END SUB
  2455. * REPLACING old line(s) by new
  2456. 43004 ' $SUBTITLE: 'AskGraphics -- sub to ask users graphic preference'
  2457. ' $PAGE
  2458. '
  2459. '  NAME    -- AskGraphics
  2460. '
  2461. '  INPUTS  --    PARAMETER                    MEANING
  2462. '                ZUserGraphicDefault$        USER Graphic DEFAULT
  2463. '
  2464. '  OUTPUTS --
  2465. '
  2466. '  PURPOSE --  To determine users graphics default
  2467. '
  2468.       SUB AskGraphics STATIC
  2469. * ------[ first line different ]------
  2470.       IF ZEmphasizeOn$ = "" THEN _                                   ' DD083101/BGCOLOR
  2471.          ZEmphasizeOn$ = ZEmphasizeOnDef$                            ' DD083101/BGCOLOR
  2472.       IF ZEmphasizeOff$ = "" THEN _                                  ' DD083101/BGCOLOR
  2473.          ZEmphasizeOff$ = ZEmphasizeOffDef$                          ' DD083101/BGCOLOR
  2474.       IF ZExpertUser THEN _
  2475.          GOTO 43007
  2476. * REPLACING old line(s) by new
  2477. 43007 CALL QuickTPut1 ("GRAPHICS for text files and menus")
  2478. * ------[ first line different ]------
  2479.       ZOutTxt$ = "Change from " + MID$("NMCAR",ZWasGR+1,1) + _       ' DD061301
  2480.                  " to N)one, M)ono, C)olor, " + _                    ' DD040201
  2481.                  "A)vatar, R)IP, H)elp" + _                          ' DD061301
  2482.                  ZPressEnterExpert$                                  ' DD083003
  2483.       ZSubParm = 1                                                   ' Mpl090202
  2484.       ZTurboKey = -ZTurboKeyUser
  2485. '     CALL PopCmdStack                                               ' Mpl090202
  2486.       CALL TGet                                                      ' Mpl090202
  2487.       IF ZSubParm = -1 THEN _
  2488.          EXIT SUB
  2489.       IF ZWasQ = 0 THEN _
  2490.          CALL QuickTPut1 ("Unchanged") : _
  2491.          EXIT SUB
  2492.       CALL AraAllCaps (ZUserIn$(),1)                                 ' Mpl090202
  2493.       WasGR = INSTR("NMCAR",ZUserIn$(1))                             ' DD061301
  2494.       IF WasGR > 1 AND NOT ZEightBit THEN _                          ' DD040201
  2495.          CALL QuickTPut1 ("COLOR unavailable.  Requires 8-N-1!") : _ ' DD032301
  2496.          GOTO 43007
  2497.       IF WasGR = 0 THEN _                                            ' DD040201
  2498.          GOTO 43006
  2499.       ZWasGR = WasGR - 1                                             ' DD040201
  2500.       CALL SetGraphic (ZWasGR)
  2501.       END SUB
  2502. '
  2503. * REPLACING old line(s) by new
  2504. 43031 ' $SUBTITLE: 'GraphicX - sub to find graphic version of a file'
  2505. ' $PAGE
  2506. '
  2507. '  NAME    -- GraphicX
  2508. '
  2509. '  INPUTS  --     PARAMETER                    MEANING
  2510. '                 Default$              USERS Graphic DEFAULT
  2511. '                 ZWasGR                WHETHER GRAPHICS ARE AVAILABLE
  2512. '                 FilName$              FILE TO CHECK
  2513. '                 FileNum               # of file to use
  2514. '
  2515. '  OUTPUTS --     FilName$              SUBSTITUTES NAME OF GRAPHICS
  2516. '                                       FILE (IF IT EXISTS).
  2517. '
  2518. '  PURPOSE -- Checks whether there is a graphics version of
  2519. '             a file, based on users graphics perference.
  2520. '             Sets file name to graphics file if it exists,
  2521. '             Otherwise leaves file name intact.  Returns file
  2522. '             name to use.
  2523. '
  2524.       SUB GraphicX (FilName$,FileNum) STATIC
  2525.       ZOK = ZFalse
  2526. * ------[ first line different ]------
  2527.       IF ZWasGR THEN                                                 ' DD040201
  2528.          CALL BreakFileName (FilName$,DR$,WasX$,Extension$,ZTrue)    ' DD040201
  2529.          IF LEN(WasX$) < 8 THEN                                      ' DD040201
  2530.             ZWasDF$ = DR$ + _
  2531.                   WasX$ + _
  2532.                   ZUserGraphicDefault$ + _
  2533.                   Extension$                                         ' DD040201
  2534.             CALL FINDITX (ZWasDF$,FileNum)                           ' DD040201
  2535.             IF NOT ZOK AND ZWasGR > 2 THEN                           ' DD061301
  2536.                ZWasDF$ = DR$ + _                                     ' DD040201
  2537.                      WasX$ + _                                       ' DD040201
  2538.                      CHR$(67) + _                                    ' DD040201
  2539.                      Extension$                                      ' DD040201
  2540.                CALL FINDITX(ZWasDF$,FileNum)                         ' DD040201
  2541.             END IF                                                   ' DD040201
  2542.             IF ZOK THEN                                              ' DD040201
  2543.                FilName$ = ZWasDF$ : _                                ' DD040201
  2544.                IF ZUserGraphicDefault$ = CHR$(67) OR _     'C        ' DD040201
  2545.                   ZUserGraphicDefault$ = CHR$(86) OR _     'V        ' DD061301
  2546.                   ZUserGraphicDefault$ = CHR$(82) THEN _   'R        ' DD061301
  2547.                   ZLinesPrinted = 0                                  ' DD040201
  2548.             END IF                                                   ' DD040201
  2549.          END IF                                                      ' DD040201
  2550.       END IF                                                         ' DD040201
  2551.       IF NOT ZOK THEN _
  2552.          CALL FINDITX (FilName$,FileNum)
  2553.       END SUB
  2554. ' Sets Graphic version but uses file # 2 always
  2555.       SUB Graphic (FilName$) STATIC
  2556.       CALL GraphicX (FilName$,2)
  2557.       END SUB
  2558. * REPLACING old line(s) by new
  2559. 43068 ' $SUBTITLE: 'SaveProf - subroutine to read a user profile'
  2560. ' $PAGE
  2561. '
  2562. '  NAME    -- SaveProf
  2563. '
  2564. '  INPUTS  --     PARAMETER                    MEANING
  2565. '              ZBPS
  2566. '              ZEightBit
  2567. '              ZExitToDoors
  2568. '              ZWasGR
  2569. '              ZMsgRec$
  2570. '              ZNodeRecIndex
  2571. '              ZSysop
  2572. '              ZUpperCase
  2573. '              ZTimeLoggedOn$
  2574. '              ZPrivateDoor
  2575. '              ZReliableMode
  2576. '
  2577. '  OUTPUTS -- NONE
  2578. '
  2579. '  PURPOSE -- Saves a user's options and communications parameters
  2580. '             in the node record when a user exits to a "door" so
  2581. '             that he is in the same status as when he exited.
  2582. '
  2583.       SUB SaveProf (IParm) STATIC
  2584. * ------[ first line different ]------
  2585.       ON IParm GOTO 43070,43080,43075                                ' Mpl122301
  2586. * REPLACING old line(s) by new
  2587. 43070 ZActiveMessageFile$ = ZOrigMsgFile$
  2588.       ZSubParm = 3
  2589.       CALL FileLock
  2590.       CALL OpenMsg
  2591.       FIELD 1, 128 AS ZMsgRec$
  2592.       GET 1,ZNodeRecIndex
  2593.       IF ZGlobalSysop THEN _
  2594.          MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25)
  2595.       MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors)
  2596.       MID$(ZMsgRec$,42,2) = STR$(ZEightBit)
  2597.       MID$(ZMsgRec$,44,2) = RIGHT$(STR$(-ZBPS),2)
  2598.       MID$(ZMsgRec$,46,2) = STR$(ZUpperCase)
  2599.       MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2)
  2600.       MID$(ZMsgRec$,53,2) = STR$(ZWasGR)
  2601.       MID$(ZMsgRec$,55,2) = STR$(ZSysop)
  2602.       MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZOrigTimeLoggedOn$,2))) + _
  2603.                             CHR$(VAL(MID$(ZOrigTimeLoggedOn$,4,2))) + _
  2604.                             CHR$(VAL(MID$(ZOrigTimeLoggedOn$,7,2)))
  2605.       MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor)
  2606.       MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1)
  2607.       MID$(ZMsgRec$,75,1) = ZWasFT$
  2608.       MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60)
  2609. * ------[ first line different ]------
  2610.       MID$(ZMsgRec$,91,2) = STR$(ZReliableMode)
  2611.       CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse)
  2612.       MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$))
  2613.       IF ZLocalUser THEN _
  2614.          ZWasZ$ = ZCarriageReturn$ + ZCarriageReturn$ _
  2615.       ELSE ZWasZ$ = " 0"
  2616.       MID$(ZMsgRec$,101,2) = ZWasZ$
  2617.       MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode)
  2618.       ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + SPACE$(1),SPACE$(1)) - 1) ' DD021301
  2619.       MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$))
  2620.       MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1)
  2621.       MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex)
  2622.       MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2)
  2623.       MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2)
  2624.       MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2)
  2625.       MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2)
  2626.       MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2)
  2627. ' ***   Save additional parameters for door restoral
  2628. * INSERTING new line(s)
  2629. 43075 CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")   ' Mpl122301
  2630.       CALL PrintWorkA (2,STR$(ZLimitMinsPerSession))                 ' DD040601
  2631.       CALL PrintWorkA (2,ZWasNG$)                                    ' DD040601
  2632.       CALL PrintWorkA (2,ZIndivValue$)                               ' DD040601
  2633.       CALL PrintWorkA (2,ZOrigDateTimeOn$)                           ' DD040601
  2634.       CALL PrintWorkA (2,ZOrigTimeLoggedOn$)                         ' DD040601
  2635.       CALL PrintWorkA (2,STR$(ZUserFileIndex))                       ' DD040601
  2636.       CALL PrintWorkA (2,ZUpldDir$)                                  ' DD040601
  2637.       ZOutTxt$ = STR$(ZUpldDir$ = ZFMSDirectory$ OR ZLimitSearchToFMS)
  2638.       CALL PrintWorkA (2,ZOutTxt$)                                   ' DD040601
  2639.       CALL PrintWorkA (2,ZCBaud$)                                    ' DD040601
  2640.       CALL PrintWorkA (2,ZDooredTo$)                                 ' DD040601
  2641.       CALL PrintWorkA (2,STR$(ZCanANSIChat))                         ' DD040601/ANSICHAT
  2642.       CALL PrintWorkA (2,ZMarkedFiles$)                              ' DD052101
  2643.  
  2644.       CLOSE 2
  2645.       CALL PutMenu0Info                                              ' DD021601/MENU0
  2646.       IF IParm = 3 THEN _                                            ' Mpl122301
  2647.          EXIT SUB                                                    ' Mpl122301
  2648. * REPLACING old line(s) by new
  2649. 44000 ' $SUBTITLE: 'ReadProf - subroutine to restore a user profile'
  2650. ' $PAGE
  2651. '
  2652. '  NAME    -- ReadProf
  2653. '
  2654. '  INPUTS  --     PARAMETER                    MEANING
  2655. '              ZNodeRecIndex               NODE RECORD TO USE
  2656. '              ZSysopPswd1$               Sysop'S PSEUDONYM 1
  2657. '              ZSysopPswd2$               Sysop'S PSEUDONYM 2
  2658. '
  2659. '  OUTPUTS -- USER'S OPTIONS AND COMMUNICATIONS PARAMETERS
  2660. '             UPON EXITING RBBS-PC TO A "DOOR"
  2661. '
  2662. '  PURPOSE -- Reset a user's options and communications parameters
  2663. '             that were saved in the node record when a user exited
  2664. '             to a "door" so that he is in the same status as when
  2665. '             he exited.
  2666. '
  2667.       SUB ReadProf STATIC
  2668.       FIELD 1, 128 AS ZMsgRec$
  2669.       GET 1,ZNodeRecIndex
  2670.       ZReliableMode = VAL(MID$(ZMsgRec$,91,2))
  2671. * ------[ first line different ]------
  2672.       MID$(ZMsgRec$,40,2) = STRING$(2,48)                            ' DD021301
  2673.       ZEightBit = VAL(MID$(ZMsgRec$,42,2))
  2674.       ZBPS = -VAL(MID$(ZMsgRec$,44,2))
  2675.       CALL CommInfo
  2676.       ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5))
  2677.       ZUpperCase = VAL(MID$(ZMsgRec$,46,2))
  2678.       ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4))
  2679.       ZBatchTransfer = (MID$(ZMsgRec$,52,1) = CHR$(49))              ' DD021301
  2680.       ZWasGR = VAL(MID$(ZMsgRec$,53,2))
  2681.       HourLoggedOn$ = RIGHT$(CHR$(48)+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2) ' DD021301
  2682.       MinLoggedOn$  = RIGHT$(CHR$(48)+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2) ' DD021301
  2683.       SecLoggedOn$  = RIGHT$(CHR$(48)+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2) ' DD021301
  2684.       ZTimeLoggedOn$ = HourLoggedOn$ + _
  2685.                         CHR$(58) + _                                 ' DD021301
  2686.                         MinLoggedOn$ + _
  2687.                         CHR$(58) + _                                 ' DD021301
  2688.                         SecLoggedOn$
  2689.       ZTransferFunction = VAL(MID$(ZMsgRec$,74,1))
  2690.       ZWasFT$ = MID$(ZMsgRec$,75,1)
  2691.       ZTimeCredits! = 60!*CVI(MID$(ZMsgRec$,113,2))                  ' KKG030901
  2692.       ZMenuIndex = VAL(MID$(ZMsgRec$,117,2))
  2693.       ZCurPUI$ = MID$(ZMsgRec$,93,8)
  2694.       CALL Remove (ZCurPUI$,SPACE$(1))                               ' DD021301
  2695.       IF ZCurPUI$ <> "" THEN _
  2696.          CALL BreakFileName (ZMainPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZTrue) : _
  2697.          ZCurPUI$ = ZOutTxt$ + ZCurPUI$ + ZWasZ$
  2698.       ZCustomPUI = (ZCurPUI$ <> "")
  2699.       ZLocalUser = (MID$(ZMsgRec$,101,2) = ZCarriageReturn$ + ZCarriageReturn$)
  2700.       ZLocalUserMode = VAL(MID$(ZMsgRec$,103,2))
  2701.       ZHomeConf$ = MID$(ZMsgRec$,105,8)
  2702.       ZAutoLogoffReq = (VAL(MID$(ZMsgRec$,115,1)) <> 0)
  2703.       CALL Trim (ZHomeConf$)
  2704.       IF ZHomeConf$ = "MAIN" THEN _
  2705.          ZHomeConf$ = ""
  2706. '     IF ZRequiredRings > 0 AND _
  2707. '        INSTR(ZModemInitCmd$,"S0=255") THEN _
  2708.       COLOR 7,0,0                                                    ' DD070204
  2709. '     ELSE COLOR ZFG,ZBG,ZBorder                                     ' DD070204
  2710.       IF ZLocalUserMode THEN _
  2711.          GOTO 44003
  2712.       CALL SetBaud
  2713. * REPLACING old line(s) by new
  2714. 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _
  2715.                         VAL(MinLoggedOn$) * 60! + _
  2716.                         VAL(SecLoggedOn$)
  2717.       HourLoggedOn$ = ""
  2718.       MinLoggedOn$ = ""
  2719.       SecLoggedOn$ = ""
  2720.       IF ZMinsPerSession < 1 THEN _
  2721.          ZMinsPerSession = 3
  2722.       IF NOT ZEightBit THEN _
  2723.          OUT ZLineCntlReg,&H1A
  2724.       IF LEFT$(ZMsgRec$,7) = "SYSOP  " THEN _
  2725.          ZFirstName$ = ZSysopPswd1$ : _
  2726. * ------[ first line different ]------
  2727.          ZActiveUserName$ = ZSysopPswd1$ + SPACE$(1) + ZSysopPswd2$ _ ' DD021301
  2728.       ELSE ZFirstNameEnd = INSTR(ZMsgRec$,SPACE$(1)) : _             ' DD021301
  2729.            ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + SPACE$(1),SPACE$(2)) : _ ' DD021301
  2730.            ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _
  2731.            ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _
  2732.            ZActiveUserName$ = MID$(ZFirstName$ + SPACE$(1) + ZLastName$,1,31) ' DD021301
  2733.       ZWasZ$ = ZFirstName$
  2734.       CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
  2735.       CALL ReadDir (2,1)
  2736.       ZLimitMinsPerSession = VAL (ZOutTxt$)
  2737.       CALL ReadDir (2,1)
  2738.       ZWasNG$ = ZOutTxt$
  2739.       CALL ReadDir (2,1)
  2740.       ZIndivValue$ = ZOutTxt$
  2741.       CALL ReadDir (2,1)
  2742.       ZOrigDateTimeOn$ = ZOutTxt$
  2743.       CALL ReadDir (2,1)
  2744.       ZOrigTimeLoggedOn$ = ZOutTxt$
  2745.       CALL ReadDir (2,1)
  2746.       ZUserFileIndex = VAL(ZOutTxt$)
  2747.       CALL ReadDir (2,1)
  2748.       ZUpldDoor$ = ZOutTxt$
  2749.       CALL ReadDir (2,1)
  2750.       ZFMSDoor = VAL(ZOutTxt$)
  2751.       CALL ReadDir (2,1)
  2752.       ZCBaud$ = ZOutTxt$
  2753.       CALL ReadDir (2,1)                                             ' KG012803
  2754.       ZDooredTo$ = ZOutTxt$                                          ' KG012803
  2755.       CALL ReadDir (2,1)                                             ' DD071901/ANSICHAT
  2756.       ZCanANSIChat = VAL(ZOutTxt$)                                   ' DD071901/ANSICHAT
  2757.       CALL ReadDir (2,1)                                             ' DD052101
  2758.       IF ZOutTxt$ <> "" THEN                                         ' DD052101
  2759.          CALL Trim (ZOutTxt$)                                        ' DD052101
  2760.          ZMarkedFiles$ = ZOutTxt$ + CHR$(13)                         ' DD052101
  2761.          DO WHILE NOT EOF(2)                                         ' DD052101
  2762.             CALL ReadDir (2,1)                                       ' DD052101
  2763.             IF ZOutTxt$ = "" THEN                                    ' DD052101
  2764.                EXIT DO                                               ' DD052101
  2765.             END IF                                                   ' DD052101
  2766.             CALL Trim (ZOutTxt$)                                     ' DD052101
  2767.             ZMarkedFiles$ = ZMarkedFiles$ + ZOutTxt$ + CHR$(13)      ' DD052101
  2768.          LOOP                                                        ' DD052101
  2769.       END IF                                                         ' DD052101
  2770. '     CLOSE 2               ' KillWork Closes #2                     ' DD060703
  2771.       CALL KillWork (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")   ' DD032602
  2772.       CALL Trim (ZDooredTo$)                                         ' DD031501
  2773.       IF ZExitToDoors AND ZDooredTo$ <> "" THEN _                    ' DD031501
  2774.          CALL OpenWork (2,ZDoorsDef$) : _                            ' DD031501
  2775.          IF ZErrCode = 0 THEN _                                      ' DD031501
  2776.             CALL ReadParms (ZOutTxt$(),10,1) : _                     ' DD031501/DOORS
  2777.             WHILE ZErrCode = 0 AND ZOutTxt$(1) <> ZDooredTo$ : _     ' DD031501
  2778.                CALL ReadParms (ZOutTxt$(),10,1) : _                  ' DD031501/DOORS
  2779.             WEND : _                                                 ' DD031501
  2780.             IF ZOutTxt$(1) = ZDooredTo$ THEN _                       ' DD031501
  2781.                ZDoorSkipsPswd = (ZOutTxt$(6) <> CHR$(89))   'Y       ' DD031501
  2782.             ZDoorCarrierDropOK$ = ZOutTxt$(10)                       ' DD031501/DOORCARRIERDROP
  2783.             ZDoorDropFile$ = ZoutTxt$(9)                             ' DD131501/DOORSYS
  2784.       ZErrCode = 0                                                   ' DD031501
  2785.       CALL GetMenu0Info                                              ' DD122101/MENU0
  2786.       CALL DoorReturn
  2787.       END SUB
  2788. * REPLACING old line(s) by new
  2789. 44020 ' $SUBTITLE: 'CommInfo - sub for variable of users baud/parity'
  2790. ' $PAGE
  2791. '
  2792. '  NAME    -- CommInfo
  2793. '
  2794. '  INPUTS  --     PARAMETER                    MEANING
  2795. '                 ZBPS                BAUD RATE INDICATOR
  2796. '                 ZEightBit           INDICATE FOR N/8/1
  2797. '
  2798. '  OUTPUTS -- ZBaudParity$
  2799. '
  2800. '  PURPOSE -- Create a string that shows a users baud rate and parity
  2801. '
  2802.       SUB CommInfo STATIC
  2803. '
  2804. '
  2805. ' *  DETERMINE BAUD AND PARITY
  2806. '
  2807. '
  2808.   IF ZReliableMode THEN _
  2809.      ReliableMode$ = "-R," _
  2810. * ------[ first line different ]------
  2811.   ELSE ReliableMode$ = CHR$(44)                                      ' DD021301
  2812.   ZBaudParity$ = MID$(ZBaudRates$,(-5 * ZBPS),5) + _
  2813.                  " BAUD" + _                                         'Pe 07/18/91
  2814.                  ReliableMode$ + _
  2815.                  MID$("N,8,1E,7,1",6 + 5 * ZEightBit,5)
  2816.   ZBaudTest! = VAL(ZBaudParity$)
  2817.   END SUB
  2818. * REPLACING old line(s) by new
  2819. 50500 CALL CheckTime(ZDelay!, TempElapsed!, 1)
  2820.       IF TempElapsed! > 0 THEN _
  2821. * ------[ first line different ]------
  2822.          CALL GoIdle : _                                             ' DD081701
  2823.          GOTO 50500
  2824.       END SUB
  2825. * REPLACING old line(s) by new
  2826. 52080 CALL DelayTime (ZModemCmdDelayTime)
  2827. * ------[ first line different ]------
  2828.       WasX$ = SPACE$(1)                                              ' DD021301
  2829.       FOR WasI = 1 TO LEN(Strng$)
  2830.          LSET WasX$ = MID$(Strng$,WasI,1)
  2831.          ON INSTR("{~",WasX$) GOTO 52082,52084
  2832.             GOTO 52085
  2833. * REPLACING old line(s) by new
  2834. 57001 ' $SUBTITLE: 'DispCall - subroutine to display callers file'
  2835. ' $PAGE
  2836. '
  2837. '  NAME    -- DispCall
  2838. '
  2839. '  INPUTS  --     PARAMETER           MEANING
  2840. '
  2841. '  OUTPUTS --  (NONE)
  2842. '
  2843. '  PURPOSE -- Displays callers file to sysops and callers
  2844. '
  2845.       SUB DispCall STATIC
  2846.       IF ZCallersFilePrefix$ = "" THEN _
  2847.          EXIT SUB
  2848.       PrevCal$ = ZCallersFile$
  2849.       OrigCal$ = ZCallersFile$
  2850. * ------[ first line different ]------
  2851. '     FullDisplay = ZSysOp OR (RIGHT$(ZLastCommand$,1) = "2")        ' Mpl090202
  2852.       IF (ZUserSecLevel < ZSysopSecLevel) THEN _                     ' Mpl090202
  2853.          GOTO 57004
  2854.       CALL LinesInFile (ZCallersLst$,NumItems)
  2855.       IF NumItems < 1 THEN _
  2856.          GOTO 57004
  2857.       IF ZAnsIndex < ZLastIndex THEN _
  2858.          GOTO 57003
  2859. * REPLACING old line(s) by new
  2860. 57002 CALL QuickTPut1 ("Caller's logs available are:")
  2861.       ZNo = ZFalse
  2862.       LineCt = 0
  2863.       CALL OpenWork (2, ZCallersLst$)
  2864.       WHILE (NOT ZNo) AND (NOT EOF(2))
  2865.          LineCt = LineCt + 1
  2866.          CALL ReadDir (2,1)
  2867. * ------[ first line different ]------
  2868.          Temp = INSTR(ZOutTxt$,SPACE$(1))                            ' DD021301
  2869.          IF Temp = 0 THEN _
  2870.             ZOutTxt$ = SPACE$(1) + STRING$(3,63) _                   ' DD021301
  2871.          ELSE ZOutTxt$ = MID$(ZOutTxt$,Temp)
  2872.          ZOutTxt$ = SPACE$(2) + STR$(LineCt) + SPACE$(2) + _         ' DD021301
  2873.                     CHR$(45) + SPACE$(1) + ZOutTxt$                  ' DD021301
  2874.          ZSubParm = 5
  2875.          CALL TPut
  2876.          CALL AskMore ("",ZTrue,ZTrue,WasX,ZFalse)
  2877.       WEND
  2878. * REPLACING old line(s) by new
  2879. * ------[ first line different ]------
  2880. 57003 ZOutTxt$ = "# of caller's log ([Q]uit, L)ist, 1," + _          ' DD021301
  2881.                  STRING$(3,46) + CHR$(44) + _                        ' DD021301
  2882.                  MID$(STR$(NumItems),2) + CHR$(41)                   ' DD021301
  2883.       CALL PopCmdStack
  2884.       WasDF$ = ZUserIn$(ZAnsIndex)
  2885.       CALL AllCaps (WasDF$)
  2886.       IF WasDF$ = CHR$(76) THEN _                         'L         ' DD021301
  2887.          GOTO 57002
  2888.       CALL CheckInt (WasDF$)
  2889.       IF ZTestedIntValue <= 0 THEN _
  2890.          GOTO 57102
  2891.       IF ZTestedIntValue > NumItems THEN _
  2892.             GOTO 57003
  2893.       CALL OpenWork (2,ZCallersLst$)
  2894.       CALL ReadDir (2, ZTestedIntValue)
  2895.       ZCallersFile$ = LEFT$(ZOutTxt$,INSTR(ZOutTxt$+SPACE$(1),SPACE$(1))-1) ' DD021301
  2896.       CALL FindIt (ZCallersFile$)
  2897.       CLOSE 2
  2898.       IF NOT ZOK THEN _
  2899.          Call QuickTPut1 ("No caller's log <"+ZCallersFile$+"> found") : _
  2900.          ZCallersFile$ = PrevCal$ : _
  2901.          GOTO 57003
  2902.       IF PrevCal$ <> ZCallersFile$ THEN _
  2903.          CALL SetCall
  2904. * REPLACING old line(s) by new
  2905. 57005 IF CallersFileIndexTemp! < 1 OR ZRet THEN _
  2906. * ------[ first line different ]------
  2907.          CLOSE 4 : _                                                 ' Pe 07/09/92
  2908.          GOTO 57101
  2909. * REPLACING old line(s) by new
  2910. 57010 GET 4,CallersFileIndexTemp!
  2911.       ZOutTxt$ = ZCallersRecord$
  2912. * ------[ first line different ]------
  2913.       IF LEFT$(ZOutTxt$,3) = SPACE$(3) OR _                          ' DD021301
  2914.          INSTR(ZOutTxt$,"on at") = 0 THEN _
  2915.          GOTO 57030
  2916. * REPLACING old line(s) by new
  2917. 57025 CallersFileIndexTemp! = CallersFileIndexTemp! - 1
  2918.       GET 4,CallersFileIndexTemp!
  2919. * ------[ first line different ]------
  2920.       WasZ = INSTR(ZCallersRecord$,CHR$(123))               '{       ' DD021301
  2921.       IF WasZ < 1 OR WasZ > 15 THEN _
  2922.          WasZ = 15
  2923.       IF ZSysop OR _                                                 ' Mpl090202
  2924.          LEFT$(ZOutTxt$,3) <> SPACE$(3) THEN _                       ' DD021301
  2925.          ZOutTxt$ = ZOutTxt$ + LEFT$(ZCallersRecord$,WasZ - 1)
  2926.       GOSUB 57100
  2927.       IF ZSysop THEN _                                               ' Mpl090202
  2928.          ZOutTxt$ = MID$(ZCallersRecord$,WasZ) : _                   ' Mpl090202
  2929.          GOSUB 57100                                                 ' Mpl090202
  2930.       GOTO 57045
  2931. * REPLACING old line(s) by new
  2932. * ------[ first line different ]------
  2933. 57030 IF ZSysop THEN _                                               ' Mpl090202
  2934.          GOSUB 57100
  2935. * REPLACING old line(s) by new
  2936. * ------[ first line different ]------
  2937. 57100 IF INSTR(ZOutTxt$,"LOGON DENIED") THEN _                       ' Mpl090202
  2938.          IF NOT ZSysOp THEN _
  2939.             RETURN
  2940.       IF ZJumpSearching THEN _
  2941.          ZWasDF$ = ZOutTxt$ : _
  2942.          CALL AllCaps (ZWasDF$) : _
  2943.          IF INSTR(ZWasDF$,ZJumpTo$) = 0 THEN _
  2944.             RETURN _
  2945.          ELSE CALL CheckColor (ZOutTxt$,ZJumpTo$,"") : _
  2946.               ZJumpSearching = ZFalse
  2947.       ZSubParm = 5
  2948.       CALL TPut
  2949.       WasX = 1
  2950.       CALL AskMore ("",ZTrue,ZTrue,WasX,ZFalse)
  2951.       IF ZSubParm = -1 THEN _                                        ' RH070402
  2952.          GOTO 57102 _                                                ' RH070402
  2953.       ELSE IF ZNo THEN _                                             ' RH070402
  2954.          GOTO 57101                                                  ' RH070402
  2955.       RETURN
  2956. * REPLACING old line(s) by new
  2957. * ------[ first line different ]------
  2958. 57101 IF WasX < 999 AND ZSysOp AND NumItems > 1 THEN _               ' Mpl090202
  2959.          PrevCal$ = ZCallersFile$ : _
  2960.          GOTO 57003
  2961. * REPLACING old line(s) by new
  2962. 57102 ZJumpSupported = ZFalse
  2963. * ------[ first line different ]------
  2964.       IF OrigCal$ <> ZCallersFile$ THEN _                            ' RH070401
  2965.          ZCallersFile$ = OrigCal$ : _
  2966.          CALL SetCall
  2967.       END SUB
  2968. * REPLACING old line(s) by new
  2969. 58050 ' $SUBTITLE: 'AllCaps - sub to convert string to upper case'
  2970. ' $PAGE
  2971. '
  2972. '  NAME    -- AllCaps
  2973. '
  2974. '  INPUTS  --     PARAMETER           MEANING
  2975. '              ConvertField$    STRING TO MAKE UPPER CASE
  2976. '
  2977. '  OUTPUTS --  ConvertField$    CONVERTED STRINGS
  2978. '
  2979. '  PURPOSE -- Subroutine to convert a string to upper case
  2980. '
  2981.       SUB AllCaps (ConvertField$) STATIC
  2982. * ------[ first line different ]------
  2983.       ConvertField$ = UCASE$(ConvertField$)                          ' DD062304
  2984. '     CALL RBBSULC (ConvertField$)                                   ' DD062304
  2985.       END SUB
  2986. * REPLACING old line(s) by new
  2987. 58060 ' $SUBTITLE: 'NameCaps - sub to convert name string to Proper Case'
  2988. ' $PAGE
  2989. '
  2990. '  NAME    -- NameCaps
  2991. '
  2992. '  INPUTS  --     PARAMETER           MEANING
  2993. '              ConvertField$    STRING TO CONVERT
  2994. '
  2995. '  OUTPUTS --  ConvertField$    CONVERTED STRINGS
  2996. '
  2997. '  PURPOSE -- Subroutine to convert a string to Proper Case (1st char upper)
  2998. '
  2999.       SUB NameCaps (ConvertField$) STATIC
  3000.       CALL AllCaps(ConvertField$)
  3001.       FOR WasZ = 2 TO LEN(ConvertField$)
  3002. * ------[ first line different ]------
  3003.          IF MID$(ConvertField$,WasZ,1) > CHR$(64) AND _      '@      ' DD021301
  3004.             MID$(ConvertField$,WasZ,1) < CHR$(91) AND _      '[      ' DD021301
  3005.             MID$(ConvertField$,WasZ-1,1) <> SPACE$(1) THEN _         ' DD021301
  3006.             MID$(ConvertField$,WasZ,1) = CHR$(ASC(MID$(ConvertField$,WasZ,1)) OR 32)
  3007.       NEXT
  3008.       END SUB
  3009. * REPLACING old line(s) by new
  3010. 58100 ' $SUBTITLE: 'SetOpts - sub to set prompts based on user security'
  3011. ' $PAGE
  3012. '
  3013. '  NAME    -- SetOpts
  3014. '
  3015. '  INPUTS  --     PARAMETER           MEANING
  3016. '                   First             POSITION WHERE START LOOKING
  3017. '                   Last              POSITION WHERE QUIT LOOKING
  3018. '                   ZUserSecLevel     SECURITY OF USER
  3019. '
  3020. '  OUTPUTS -- Options$              LIST OF COMMANDS USER CAN DO
  3021. '
  3022. '  PURPOSE -- String together what commands user can do in a section
  3023. '
  3024.       SUB SetOpts (Options$,InvalidOptions$,First,Last) STATIC
  3025.       Options$ = ""
  3026.       InvalidOptions$ = ""
  3027.       FOR WasI = First TO Last
  3028.          IF ZUserSecLevel < ZOptSec(WasI) THEN _
  3029.             InvalidOptions$ = InvalidOptions$ + _
  3030.                                MID$(ZAllOpts$,WasI,1) _
  3031. * ------[ first line different ]------
  3032.          ELSE IF MID$(ZAllOpts$,WasI,1) <> SPACE$(1) THEN _          ' DD021301
  3033.                  Options$ = Options$ + _
  3034.                             MID$(ZAllOpts$,WasI,1)
  3035.       NEXT
  3036.       CALL SortString (Options$)
  3037.       CALL SortString (InvalidOptions$)
  3038.       END SUB
  3039. * REPLACING old line(s) by new
  3040. 58110 ' $SUBTITLE: 'CheckNewBul - sub to check whether got new bulletins'
  3041. ' $PAGE
  3042. '
  3043. '  NAME    -- CheckNewBul
  3044. '
  3045. '  INPUTS  --     PARAMETER           MEANING
  3046. '                 LastOn$             Last DATE OF LOGON
  3047. '                                   FORMAT MM/DD/YY
  3048. '                 ZActiveBulletins  # OF BULLETING
  3049. '                 ZBulletinPrefix$  FILESPEC FOR BULLETINS
  3050. '
  3051. '  OUTPUTS --     NumNewBullets   NUMBER OF NEW BULLETINS
  3052. '                 NewBullets$      LIST OF NEW BULLET #'S
  3053. '                 ZWasQ            WHERE Last BULLETIN STORED
  3054. '                                  IN ZUserIn$()
  3055. '                 ZOutTxt$()       BULLETINS #'S THAT ARE NEW
  3056. '                                    (2,3,4,...)
  3057. '
  3058. '  PURPOSE -- Checks how many bulletins have system date
  3059. '             at or later than date caller last logged on
  3060. '
  3061.       SUB CheckNewBul (LastOn$,NumNewBullets,NewBullets$) STATIC
  3062.       IF ZExitToDoors OR ZBulletinPrefix$ = ZPrevPrefix$ THEN _
  3063.          EXIT SUB
  3064.       ZPrevPrefix$ = ZBulletinPrefix$
  3065.       NumNewBullets = 0
  3066.       NewBullets$ = ""
  3067.       BaseDate# = VAL(MID$(LastOn$,4,2)) + (100 * VAL(MID$(LastOn$,1,2))) + _
  3068.                    (10000# * (1900 + VAL(MID$(LastOn$,7,2))))
  3069.       CALL FindIt (ZBulletinPrefix$ + ".FCK")
  3070.       WasX = 0
  3071. * ------[ first line different ]------
  3072.       IF ZOK THEN _
  3073.          NumDots = 0 : _                                             ' DD082602
  3074.          CALL SkipLine (2) : _                                       ' DD031302
  3075.          CALL QuickTPut (ZFGC$ + "Checking new bulletins" + _        ' DD031302
  3076.                          ZEmphasizeOff$,0) : _                       ' DD031302
  3077.          WHILE NOT EOF(2) : _
  3078.             INPUT #2,WasBN$ : _
  3079.             GOSUB 58112 : _
  3080.             CALL MarkTime (NumDots) : _                              ' DD082602
  3081.          WEND _
  3082.       ELSE FOR WasI = 1 TO ZActiveBulletins : _
  3083.               WasBN$ = MID$(STR$(WasI),2) : _
  3084.               GOSUB 58112 : _
  3085.            NEXT
  3086.       CALL QuickTPut (ZBackSpace$,0)                                 ' DD041304
  3087.       ZWasQ = NumNewBullets + 1
  3088.       IF NumNewBullets < 1 THEN _
  3089.          NewBullets$ = "" : _                                        ' DD082602
  3090.          CALL SkipLine (1) : _                                       ' DD031302
  3091.          CALL QuickTPut1 (ZFG5$ + "No New Bulletins!" + _            ' DD031302
  3092.               ZEmphasizeOff$)                                        ' DD082602
  3093. '     CALL SkipLine (1)                                              ' DD090606
  3094.       ZOutTxt$ = STR$(NumNewBullets)                                 ' DD063001
  3095.       CALL Trim (ZOutTxt$)                                           ' DD063001
  3096.       ZOutTxt$ = ZCRLf$ + ZFGF$ + ZOutTxt$ + ZFGE$ + _               ' DD090703
  3097.                  " New bulletin(s) since last call" + ZEmphasizeOff$ ' DD082103
  3098.       IF NumNewBullets >= 1 THEN _                                   ' DD081901
  3099.          CALL QuickTPut (ZOutTxt$,2) : _                             ' DD081901
  3100.          CALL BufString (NewBullets$,4096,WasX) : _                  ' DD081901
  3101.          CALL SkipLine (1)                                           ' DD081901
  3102.       EXIT SUB
  3103. * REPLACING old line(s) by new
  3104. 58112 FirstWord$ = WasBN$
  3105.       CALL Trim (FirstWord$)
  3106. * ------[ first line different ]------
  3107.       FirstWord$ = LEFT$(FirstWord$,INSTR(FirstWord$+SPACE$(1),SPACE$(1))-1) ' DD021301
  3108.       IF FirstWord$ = CHR$(78) THEN _                        'N     ' DD021301
  3109.          WasX$ = ZNewsFileName$ + CHR$(0) _
  3110.       ELSE WasX$ = ZBulletinPrefix$ + FirstWord$ + CHR$(0)
  3111. '     CALL MarkTime (WasX)                                          ' DD081901
  3112.       CALL RBBSFind (WasX$,WasIX,Year,WasMM,WasDD)
  3113.       IF WasIX = 0 THEN _
  3114.          FDate# = WasDD + (100 * WasMM) + (10000# * (Year + 1980)) : _
  3115.          IF BaseDate# <= FDate# THEN _
  3116.             NumNewBullets = NumNewBullets + 1 : _
  3117.             ZOutTxt$(NumNewBullets + 1) = FirstWord$ : _
  3118.             NewBullets$ = NewBullets$ + SPACE$(1) + WasBN$           ' DD021301
  3119.       RETURN
  3120.       END SUB
  3121. * REPLACING old line(s) by new
  3122. 58120 ' $SUBTITLE: 'SortString - sub to sort characters in a string'
  3123. ' $PAGE
  3124. '
  3125. '  NAME    -- SortString
  3126. '
  3127. '  INPUTS  --     PARAMETER           MEANING
  3128. '                 Strng$           STRING TO SORT
  3129. '
  3130. '  OUTPUTS --     Strng$           SORTED STRING
  3131. '
  3132. '  PURPOSE -- Sorts characters in passed string.
  3133. '
  3134.       SUB SortString (Strng$) STATIC
  3135.       Sort0 = LEN(Strng$)
  3136.       Sort1 = Sort0
  3137. * ------[ first line different ]------
  3138.       WasX$ = CHR$(33)                                     '!        ' DD021301
  3139. * REPLACING old line(s) by new
  3140. 58130 ' $SUBTITLE: 'AddCommas - sub to format commands in command prompt'
  3141. ' $PAGE
  3142. '
  3143. '  NAME    -- AddCommas
  3144. '
  3145. '  INPUTS  --     PARAMETER           MEANING
  3146. '                 Strng$           STRING TO REPLACE
  3147. '
  3148. '  OUTPUTS --     Strng$           REPLACED STRING
  3149. '
  3150. '  PURPOSE -- Inserts commands between each letter in Strng$
  3151. '             and encloses in pointed brackets
  3152. '
  3153.       SUB AddCommas (Strng$) STATIC
  3154.       WasL = LEN(Strng$)
  3155.       IF WasL < 1 THEN _
  3156.          EXIT SUB
  3157.       LSET ZLineMes$ = " <" + _
  3158.                       LEFT$(Strng$,1)
  3159.       FOR WasK = 2 TO WasL
  3160. * ------[ first line different ]------
  3161.          MID$(ZLineMes$,2 * WasK,2) = CHR$(44) + _                   ' DD021301
  3162.                                   MID$(Strng$,WasK,1)
  3163.       NEXT
  3164.       Strng$ = LEFT$(ZLineMes$,2 * WasL + 1) + _
  3165.                CHR$(62)                                     '>       ' DD021301
  3166.       END SUB
  3167. * REPLACING old line(s) by new
  3168. 58140 ' $SUBTITLE: 'LoadNew - subroutine to get latest uploads'
  3169. ' $PAGE
  3170. '
  3171. '  NAME    -- LoadNew
  3172. '
  3173. '  INPUTS  --     PARAMETER           MEANING
  3174. '               ZUpldDir$             LIST OF FILES UPLOADED
  3175. '
  3176. '  OUTPUTS --   ZOutTxt$              LATEST UPLOADS
  3177. '
  3178. '  PURPOSE -- Loads table of most recent number of uploads by date
  3179. '
  3180.       SUB LoadNew (Ara(2)) STATIC
  3181.       IF ZFMSDirectory$ = "" THEN _
  3182.          EXIT SUB
  3183.       ZPrevBase$ = ""
  3184.       FirstWarning = ZTrue
  3185.       IF PrevLoadNew$ = ZFMSDirectory$ THEN _
  3186.          Ara(1,1) = 0 : _
  3187.          EXIT SUB
  3188. * ------[ first line different ]------
  3189.       Lmonth$ = RIGHT$(STR$(ASC(MID$(ZListNewDate$,2))),2)           ' DD060701
  3190.       Lday$ = RIGHT$(STR$(ASC(MID$(ZListNewDate$,3))),2)             ' DD060701
  3191.       Lyear$ = RIGHT$(STR$(ASC(ZListNewDate$)),2)                    ' DD060701
  3192.       StopSearchingDate! = 372! * (VAL(Lyear$) - 80!) + 31! * VAL(Lmonth$) + VAL (Lday$) ' DD060701
  3193.       CALL QuickTPut (ZFG9$ + "Checking new files" + _               ' DGS050501/DS
  3194.                       ZEmphasizeOff$,0)                              ' DGS050501/DS
  3195. * REPLACING old line(s) by new
  3196. 58141 PrevLoadNew$ = ZFMSDirectory$
  3197.       CALL OpenFMS (LastRec,WasL)
  3198.       FIELD 2, 23 AS PreDate$, _
  3199.                 2 AS WasMM$, _
  3200.                 1 AS Fill1$, _
  3201.                 2 AS WasDD$, _
  3202.                 1 AS Fill2$, _
  3203.                 2 AS Year$, _
  3204. * ------[ first line different ]------
  3205.                 (2 + ZMaxDescLen) AS ZDesc$, _                       ' Mpl090202
  3206.                 3 AS Category$, _
  3207.                 2 AS Fill4$
  3208.       MaxRecs = UBOUND(Ara,1)
  3209.       IF MaxRecs < 1 THEN _
  3210.          MaxRecs = 1 _
  3211.       ELSE IF MaxRecs > 999 THEN _                                   ' DD012603
  3212.               MaxRecs = 999                                          ' DD012603
  3213.       WasL = 0
  3214.       WasK = LastRec
  3215.       numdots = 0                                                    ' DD050801
  3216.       WHILE WasK > 0 AND WasL < MaxRecs
  3217.          CALL MarkTime (NumDots)                                     ' DGS050501/DS
  3218.          GET #2,WasK
  3219.          IF INSTR("*\ ",LEFT$(PreDate$,1)) > 0 THEN                  ' DD060701
  3220.             GOTO 58142
  3221.          END IF                                                      ' DD060701
  3222.          IF (ZCanDnldFromUp OR Category$ <> ZDefaultCatCode$) THEN
  3223.             IF VAL(Year$) > 79 THEN                                  ' DD060701
  3224.                WasL = WasL + 1                                       ' DD060701
  3225.                Ara(WasL,1) = 372! * (VAL(Year$) - 80!) + 31! * VAL(WasMM$) + VAL(WasDD$) ' DD060701
  3226.                IF ZDateOrderedFMS AND StopSearchingDate! > Ara(WasL,1) THEN ' DD060701
  3227.                   Ara(WasL,1) = 0                                    ' DD060701
  3228.                   WasL = WasL - 1                                    ' DD060701
  3229.                   GOTO 58143                                         ' DD060701
  3230.                END IF                                                ' DD060701
  3231.             ELSEIF FirstWarning THEN                                 ' DD060701
  3232.                FirstWarning = ZFalse                                 ' DD060701
  3233.                ZWasZ$ = "Invalid FMS format " + ZFMSDirectory$       ' DD060701
  3234.                ZSnoop = ZTrue                                        ' DD060701
  3235.                CALL LPrnt (ZWasZ$,1)                                 ' DD060701
  3236.                CALL UpdtCalr (ZWasZ$,2)
  3237.             END IF                                                   ' DD060701
  3238.          END IF                                                      ' DD060701
  3239.          IF NOT ZCanDnldFromUp THEN _
  3240.             WasX = ZMinSecToView _
  3241.          ELSE IF Category$ = STRING$(3,42) THEN _                    ' DD021301
  3242.                  WasX = ZSysopSecLevel _
  3243.               ELSE IF Category$ = ZDefaultCatCode$ THEN _
  3244.                       WasX = ZMinSecToView _
  3245.               ELSE IF LEFT$(PreDate$,1) = CHR$(61) THEN _     '=     ' DD021301
  3246.                       CALL CheckInt (ZDesc$) : _                     ' Mpl090202
  3247.                       WasX = ZTestedIntValue _
  3248.               ELSE WasX = ZOptSec(19)
  3249.          Ara(WasL,2) = WasX
  3250. * REPLACING old line(s) by new
  3251. 58142    WasK = WasK - 1
  3252.       WEND
  3253. * ------[ first line different ]------
  3254. * INSERTING new line(s)
  3255. 58143 CALL QuickTPut1 (ZBackSpace$)                                  ' DD060701
  3256.       CLOSE 2
  3257.       IF ZUpInc > 0 AND ZChainedDir$ <> "" THEN _
  3258.          ZActiveFMSDir$ = ZChainedDir$ : _
  3259.          GOTO 58141
  3260.       END SUB
  3261. * REPLACING old line(s) by new
  3262. 58150 ' $SUBTITLE: 'CountNewFiles - sub to count how many files new'
  3263. ' $PAGE
  3264. '
  3265. '  NAME    -- CountNewFiles
  3266. '
  3267. '  INPUTS  --     PARAMETER           MEANING
  3268. * ------[ first line different ]------
  3269. '                  LastOn$          Date to start search             ' DD050303
  3270. '                  UPLDS$            Latest uploads
  3271. '
  3272. '  OUTPUTS --    NumNewFiles       How many after last logon
  3273. '                RptPrefix$         Set to "At least " if
  3274. '                                    above is a minimum
  3275. '                ListSearchDate$   Date to search FMS for            ' DD050303
  3276. '
  3277. '  PURPOSE -- Checks how many files in UPLDS$ were uploaded on or
  3278. '             after date of last dir search that the user can        ' DD050303
  3279. '             download                                               ' DD050303
  3280. '
  3281.       SUB CountNewFiles (LastOn$,Upld(2),NumUserFiles,ReturnDate$) STATIC ' DD052005
  3282.       ReturnDate$ = MID$(LastOn$,3,2) + MID$(LastOn$,5,2) + _
  3283.                     MID$(LastOn$,1,2)
  3284.       BaseDate! = 372! * (VAL(MID$(LastOn$,1,2)) - 80!) + _          ' DD060701
  3285.                   31! * (VAL(MID$(LastOn$,3,2))) + _                 ' DD060701
  3286.                   VAL(MID$(LastOn$,5,2))                             ' DD050303
  3287.       NumNewFiles = 1
  3288.       NumUserFiles = 0
  3289.       WHILE (BaseDate! <= Upld(NumNewFiles,1) AND _                  ' DD060701
  3290.                 Upld(NumNewFiles,1) > 0 AND _
  3291.                 NumNewFiles < UBOUND(Upld,1))
  3292.          IF ZUserSecLevel => Upld(NumNewFiles,2) THEN _
  3293.             NumUserFiles = NumUserFiles + 1
  3294.          NumNewFiles = NumNewFiles + 1
  3295.       WEND
  3296.       IF Upld(NumNewFiles,1) < 1 THEN _
  3297.          NumNewFiles = NumNewFiles - 1
  3298. '     IF BaseDate! <= Upld(NumNewFiles,1) THEN _                     ' DD060701
  3299. '        RptPrefix$ = "At least" _                                   ' DD052005
  3300. '     ELSE RptPrefix$ = ""                                           ' DD052005
  3301.       END SUB
  3302. * REPLACING old line(s) by new
  3303. 58162 ' $SUBTITLE: 'InitFMS - sub to initialize file management system'
  3304. ' $PAGE
  3305. '
  3306. '  NAME    -- InitFMS
  3307. '
  3308. '  INPUTS  -- PARAMETER             MEANING
  3309. '             ZFMSDirectory$
  3310. '
  3311. '  OUTPUTS -- ZCategoryName$()  ELEMENTS 1,2, POSSIBLY MORE
  3312. '             ZCategoryCode$()  ELEMENTS 1,2, POSSIBLY MORE
  3313. '             ZCategoryDesc$()  ELEMENTS 1,2, POSSIBLY MORE
  3314. '             CategoryIndex     COUNT OF # ELEMENTS IN THE FILE
  3315. '                               MANAGMENT SYSTEM
  3316. '
  3317. '  PURPOSE -- Subroutine to initialize the RBBS-PC File Management System
  3318. '
  3319.       SUB InitFMS (CategoryIndex) STATIC
  3320. * ------[ first line different ]------
  3321.       Blank$ = SPACE$(1)                                             ' DD021301
  3322.       CategoryIndex = 1
  3323.       ZCategoryName$(1) = CHR$(80)                       'P          ' DD021301
  3324.       ZCategoryCode$(1) = CHR$(80)                       'P          ' DD021301
  3325.       ZCategoryDesc$(1) = "Personals"
  3326.       IF ZFMSDirectory$ <> "" THEN _
  3327.          CategoryIndex = CategoryIndex + 1 : _
  3328.          CatN$ = ZCategoryName$(CategoryIndex) : _
  3329.          CALL BreakFileName (ZFMSDirectory$,DrvPath$,CatN$,Extension$,ZFalse) : _
  3330.          ZCategoryName$(CategoryIndex) = CatN$ : _
  3331.          ZCategoryCode$(CategoryIndex) = "" : _
  3332.          ZCategoryDesc$(CategoryIndex) = "All uploads"_
  3333.       ELSE ZLimitSearchToFMS = ZFalse : _
  3334.            EXIT SUB
  3335.       IF ZLimitSearchToFMS OR ZMasterDirName$ = ZMainFMSDir$ THEN _
  3336.          CategoryIndex = CategoryIndex + 1 : _
  3337.          ZCategoryName$(CategoryIndex) = "ALL" : _
  3338.          ZCategoryCode$(CategoryIndex) = "" : _
  3339.          ZCategoryDesc$(CategoryIndex) = "All files"
  3340.       CALL FindIt (ZDirCatFile$)
  3341.       IF NOT ZOK THEN _
  3342.          EXIT SUB
  3343.       WHILE NOT EOF(2)
  3344.          CALL ReadParms (ZWorkAra$(),3,1)
  3345.          IF ZErrCode > 0 THEN _
  3346.             ZErrCode = 0 : _
  3347.             CALL PScrn (ZDirCatFile$+" invalid.  Line" + STR$(CategoryIndex) + " needs 3 parms") : _
  3348.             CALL DelayTime (4) _
  3349.          ELSE CategoryIndex = CategoryIndex + 1 : _
  3350.               ZCategoryName$(CategoryIndex) = ZWorkAra$(1) : _
  3351.               CALL AraAllCaps (ZCategoryName$(),CategoryIndex) : _
  3352.               ZCategoryCode$(CategoryIndex) = ZWorkAra$(2) : _
  3353.               ZCategoryDesc$(CategoryIndex) = ZWorkAra$(3) : _
  3354.               CatR$ = ZCategoryCode$(CategoryIndex) : _
  3355.               CALL Remove (CatR$,Blank$) : _
  3356.               ZCategoryCode$(CategoryIndex) = CatR$
  3357.       WEND
  3358.       CLOSE 2
  3359.       END SUB
  3360. * REPLACING old line(s) by new
  3361. 58165 ' $SUBTITLE: 'DispUpDir - sub to display FMS directory'
  3362. ' $PAGE
  3363. '
  3364. '  NAME    -- DispUpDir
  3365. '
  3366. '  INPUTS  -- PARAMETER             MEANING
  3367. '             PassedCats$         FILE "CATEGORIES" TO BE INCLUDED IN
  3368. '                                 THE SEARCH.
  3369. '             SearchString$       STRING TO SEARCH ON WITHIN THE
  3370. '                                 FILE "CATEGORIES" SELECTED
  3371. '             SearchDate$         DATE EQUAL TO OR GREATER THAN TO BE
  3372. '                                 SEARCHED FOR WITH THE "CATEGORIES"
  3373. '                                 AND THE STRING TO SEARCH.
  3374. '             DnldFlag            SET TO RECORD # OF LINE TO BEGIN
  3375. '                                 VIEWING - 0 IF AT END
  3376. '
  3377. '  OUTPUTS -- DnldFlag            WHENEVER DOWNLOAD REQUESTED, SETS
  3378. '                                 TO 1.  OTHERWISE LEAVES AT ZERO
  3379. '  PURPOSE -- Display the files that meet the criteria selected in
  3380. '             RBBS-PC upload management system on the users screen.
  3381. '
  3382.       SUB DispUpDir (PassedCats$,SearchString$, _
  3383.                     SearchDate$,DnldFlag,AbortIndex) STATIC
  3384.       IF AtEndList THEN _
  3385.          AtEndList = ZFalse : _
  3386.          IF DnldFlag > 0 THEN _
  3387.             GOSUB 58185 : _
  3388.             GOTO 58184
  3389.       CALL AllCaps (SearchString$)
  3390. * ------[ first line different ]------
  3391.       Blank$ = SPACE$(1)                                             ' DD021301
  3392.       ZStopInterrupts = ZFalse
  3393.       Categories$ = CHR$(44) + _                         ',          ' DD021301
  3394.                     PassedCats$ + _
  3395.                     CHR$(44)                                         ' DD021301
  3396.       CanDnld = (ZUserSecLevel => ZOptSec(19))
  3397.       CanView = (ZUserSecLevel => ZOptSec(26))
  3398.       ZJumpSupported = ZTrue
  3399.       ZJumpSearching = ZFalse
  3400.       GOSUB 58185
  3401.       OrigDir$ = ZActiveFMSDir$
  3402.       InList = (RelistAt > 0 AND ReListAt <= LastRec)
  3403.       IF InList AND DnldFlag > 0 THEN _
  3404.          UpldIndex = RelistAt : _
  3405.          DnldFlag = 0 : _
  3406.          GOTO 58179
  3407.       ZJumpLast$ = ""
  3408.       SearchFor$ = SearchString$
  3409.       ExtraPrompt$ = LEFT$(",T)ype",6+4*ZExpertUser)                 'Pe 10/21/89
  3410.       ExtraPrompt$ = ExtraPrompt$ + LEFT$(",V)iew",6+4*ZExpertUser)  'Pe 10/21/89
  3411.       IF ZPersonalDnld THEN _
  3412.          ExtraPrompt$ = ExtraPrompt$ + ",*)new"                      ' DD063004
  3413.       IF CanDnld THEN _
  3414.          ExtraPrompt$ = ExtraPrompt$ + ",E)xtend+/-,M)ark,D)nld"     ' DD080802
  3415.       MaxPrint = ZPageLength - 1
  3416.       BelowMinSec = (ZUserSecLevel < ZMinSecToView)
  3417.       ZNonStop = ZNonStop OR (ZPageLength < 1)
  3418.       FMSCheckPoint = 0
  3419.       WildSearch = (INSTR(SearchString$,CHR$(63)) > 0) _      '?     ' DD021301
  3420.                      OR (INSTR(SearchString$,CHR$(42)) > 0)   '*     ' DD021301
  3421.       CALL AraAllCaps (ZUserIn$(),ZAnsIndex)
  3422. 'print "zansindex=";zansindex;" zlastindex=";zlastindex;:for ii=zansindex to zlastindex: print "<";zuserin$(ii);">";:next:print " zlc=<";zlastcommand$;">";:print:INPUT XXX$
  3423.      IF ZAnsIndex > 0 THEN _
  3424.         IF ZLastCommand$ = "FP" AND INSTR("Ll",ZUserIn$(ZLastIndex)) = 0 THEN _
  3425.             ZUserIn$(ZAnsIndex) = CHR$(68) : _                'D     ' DD021301
  3426.             IF (UpldIndex > 0 AND UpldIndex <= LastRec) THEN _
  3427.                GOTO 58180 _
  3428.             ELSE Temp$ = "" : _
  3429.                  GOTO 58196
  3430. * REPLACING old line(s) by new
  3431. 58169 CALL CheckInt (MID$(PartToPrint$,34))
  3432.       IF ZUserSecLevel < ZTestedIntValue THEN _
  3433.          LastOK = ZFalse : _
  3434.          FailedSearch = ZFalse : _
  3435.          GOTO 58168
  3436. * ------[ first line different ]------
  3437.       MID$(PartToPrint$,1,13) = MID$(PartToPrint$,2,12) + SPACE$(1)  ' DD021301
  3438.       ZWasA = LEN(STR$(ZTestedIntValue))
  3439.       MID$(PartToPrint$,34) = MID$(PartToPrint$,34 + ZWasA) + SPACE$(ZWasA)
  3440.       GOTO 58172
  3441. * REPLACING old line(s) by new
  3442. * ------[ first line different ]------
  3443. 58171 IF Category$ = STRING$(3,42) THEN _   ' display line           ' DD021301
  3444.          GOTO 58176 _
  3445.       ELSE HoldCat$ = CHR$(44) + Category$ + CHR$(44) : _     ',     ' DD021301
  3446.            IF INSTR(Categories$,HoldCat$) > 0 THEN _
  3447.               GOTO 58176 _
  3448.            ELSE GOTO 58168
  3449. * REPLACING old line(s) by new
  3450. 58172 LastOK = ZFalse           ' normal file entry display
  3451.       FailedSearch = ZFalse
  3452.       LastFName = UpldIndex
  3453. * ------[ first line different ]------
  3454.       IF Category$ = STRING$(3,42) THEN _                            ' DD021301
  3455.          IF ZUserSecLevel < ZSysopSecLevel THEN _                    ' DD021101
  3456.             GOTO 58178
  3457.       IF Category$ = ZDefaultCatCode$ THEN _
  3458.          IF BelowMinSec THEN _
  3459.             GOTO 58178
  3460. * REPLACING old line(s) by new
  3461. 58173 IF LEN(Categories$) > 2 THEN _
  3462.          GOSUB 58191 : _
  3463.          IF NOT CanGet THEN _
  3464. * ------[ first line different ]------
  3465.             IF CatLen < 4 OR ZUserSecLevel < ZSysopSecLevel THEN _   ' DD021101
  3466.                GOTO 58178
  3467.       IF ZJumpSearching OR SearchString$ <> "" THEN _
  3468.          ZOutTxt$ = PartToPrint$ : _
  3469.          IF WildSearch THEN _
  3470.             Temp$ = LEFT$(PartToPrint$,INSTR(PartToPrint$,SPACE$(1))-1) : _ ' DD021301
  3471.             Temp$ = MID$(Temp$,1-(LEFT$(Temp$,1)=CHR$(61))) : _  '=  ' DD021301
  3472.             CALL WildFile (SearchString$,Temp$,ZOK) : _
  3473.             IF ZOK THEN _
  3474.                FoundString$ = SearchString$ : _
  3475.                GOTO 58175 _
  3476.             ELSE GOTO 58178 _
  3477.          ELSE CALL AllCaps (ZOutTxt$) : _
  3478.               HiLitePos = INSTR(ZOutTxt$,SearchFor$) : _
  3479.               IF HiLitePos = 0 THEN _
  3480.                  FailedSearch = ZTrue : _
  3481.                  GOTO 58178 _
  3482.               ELSE HiLiteRec = UpldIndex : _
  3483.                    FoundString$ = SearchFor$ : _
  3484.                    IF ZJumpSearching THEN _
  3485.                       ZJumpSearching = ZFalse : _
  3486.                       SearchFor$ = PrevSearch$
  3487. * REPLACING old line(s) by new
  3488. 58176 ZWasA = EndDesc
  3489. * ------[ first line different ]------
  3490.       IF LEFT$(PartToPrint$,5) = SPACE$(5) THEN _                    ' DD021301
  3491.          GOTO 58178
  3492.       IF ZShowTimesDownloaded AND NOT ZPersonalDnld THEN             ' DD052301
  3493.          ZOutTxt$ = LEFT$(PartToPrint$,LEN(PartToPrint$)-5)          ' DD052301
  3494.          TimesDL$ = STR$(VAL(RIGHT$(PartToPrint$,5)))                ' DD052301
  3495.       ELSE                                                           ' DD052301
  3496.          ZOutTxt$ = PartToPrint$                                     ' DD052301
  3497.       END IF                                                         ' DD052301
  3498.       IF PersonalStatus$ = CHR$(42) AND LEFT$(ZOutTxt$,1) <> SPACE$(1) THEN _ ' DD021301
  3499.          MID$(ZOutTxt$, INSTR(ZOutTxt$,SPACE$(1))) = CHR$(42)        ' DD021301
  3500.       CALL TrimTrail (ZOutTxt$,SPACE$(1))                            ' DD021301
  3501.       XferTime$ = ""                                                 ' DD052301
  3502.       IF INSTR("\ *",LEFT$(ZOutTxt$,1)) = 0 AND _                    ' DD052301
  3503.          NOT ZExtendedOff AND _                                      ' DD052301
  3504.          (ZShowXferTime OR ZShowTimesDownloaded) THEN                ' DD052301
  3505.          Description$ = SPACE$(2) + MID$(ZoutTxt$,34,ZMaxDescLen)    ' DD052301
  3506.          ZOutTxt$ = LEFT$(ZOutTxt$,33)                               ' DD052301
  3507.          FileSize# = VAL(MID$(ZOutTxt$,14,9))                        ' DD052301
  3508.          FLen = ZFlen                                                ' DD052301
  3509.          IF FLen < 1 THEN                                            ' DD052301
  3510.             FLen = 1024                                              ' DD052301
  3511.          END IF                                                      ' DD052301
  3512.          Blocks# = FIX(FileSize#/Flen)                               ' DD052301
  3513.          Blocks# = Blocks# / _                                       ' DD052301
  3514.          VAL(MID$("000003000450120024004800720096012001440168019203840", -4 * ZCBPS, 4)) ' DD052301
  3515.          Speed! = ZSpeedFactor!                                      ' DD052301
  3516.          IF Speed! < 1 THEN                                          ' DD052301
  3517.             Speed! = 0.95                                            ' DD052301
  3518.          END IF                                                      ' DD052301
  3519.          Blocks# = Blocks# * Flen / Speed!                           ' DD052301
  3520.          mins$ = STR$(INT(Blocks# / 60))                             ' DD052301
  3521.          CALL Trim (mins$)                                           ' DD052301
  3522.          IF VAL(mins$) < 10 THEN                                     ' DD052301
  3523.             mins$ = "0" + mins$                                      ' DD052301
  3524.          END IF                                                      ' DD052301
  3525.          secs$ = STR$(INT(Blocks# - (INT(Blocks# / 60) * 60)))       ' DD052301
  3526.          CALL Trim (secs$)                                           ' DD052301
  3527.          IF VAL(secs$) < 10 THEN                                     ' DD052301
  3528.             secs$ = "0" + secs$                                      ' DD052301
  3529.          END IF                                                      ' DD052301
  3530.          IF ZShowXferTime THEN                                       ' DD052301
  3531.             XferTime$ = ZFG9$ + "DL Time: " + _                      ' DD052301
  3532.                      ZFG4$ + mins$ + _                               ' DD052301
  3533.                      ZFG7$ + ":" + _                                 ' DD052301
  3534.                      ZFG4$ + secs$ + _                               ' DD052301
  3535.                      SPACE$(2)                                       ' DD052301
  3536.          END IF                                                      ' DD052301
  3537.          IF ZShowTimesDownloaded AND NOT ZPersonalDnld THEN          ' DD052301
  3538.             XferTime$ = XferTime$ + _                                ' DD052301
  3539.                   ZFGD$ + _                                          ' DD052301
  3540.                   "DownLoads:" + _                                   ' DD052301
  3541.                   ZFG3$ + _                                          ' DD052301
  3542.                   TimesDL$                                           ' DD052301
  3543.          END IF                                                      ' DD052301
  3544.          XferTime$ = XferTime$ + ZEmphasizeOff$                      ' DD052301
  3545.       ELSE                                                           ' DD052301
  3546.          XferTime$ = ""                                              ' DD052301
  3547.       END IF                                                         ' DD052301
  3548.       CALL ColorDir (ZOutTxt$,CHR$(89))    'Y                        ' DD021301
  3549.       CALL CheckColor (ZOutTxt$,FoundString$,"")                     ' DD052301
  3550.       CALL CheckColor (Description$,FoundString$,ZDR4$)              ' DD070203
  3551. * REPLACING old line(s) by new
  3552. * ------[ first line different ]------
  3553. 58177 IF ZLocalUser THEN                                             ' DD052301
  3554.          IF XferTime$ <> "" THEN                                     ' DD052301
  3555.             CALL SkipLine (1)                                        ' DD052301
  3556.             CALL QuickTPut1 (ZOutTxt$ + XferTime$)                   ' DD052301
  3557.             CALL QuickTPut1 (ZDR4$ + Description$ + ZEmphasizeOff$)  ' DD070203
  3558.          ELSE                                                        ' DD052301
  3559.             CALL QuickTPut1 (ZOutTxt$)                               ' DD052301
  3560.          END IF                                                      ' DD052301
  3561.          GOTO 58178
  3562.       END IF                                                         ' DD052301
  3563.       CALL EofComm (Char)
  3564.       IF Char = -1 THEN                                              ' DD052301
  3565.          IF XferTime$ <> "" THEN                                     ' DD052301
  3566.             CALL SkipLine (1)                                        ' DD052301
  3567.             CALL QuickTPut1 (ZOutTxt$ + XferTime$)                   ' DD052301
  3568.             CALL QuickTPut1 (ZDR4$ + Description$ + ZEmphasizeOff$)  ' DD070203
  3569.          ELSE                                                        ' DD052301
  3570.             CALL QuickTPut1 (ZOutTxt$)                               ' DD052301
  3571.          END IF                                                      ' DD052301
  3572.       ELSE ZSubParm = 5                                              ' DD052301
  3573.            CALL TPut                                                 ' DD052301
  3574.            IF ZRet THEN                                              ' DD052301
  3575.               GOTO 58198                                             ' DD052301
  3576.            END IF                                                    ' DD052301
  3577.       END IF                                                         ' DD052301
  3578. * REPLACING old line(s) by new
  3579. 58178 IF ZLinesPrinted <= MaxPrint AND (FMSCheckPoint MOD 1000 <> 0) THEN _
  3580.          GOTO 58168
  3581.       CALL CheckCarrier
  3582.       IF ZSubParm = -1 THEN _
  3583.          GOTO 58198
  3584.       CALL TimeRemain (MinsRemaining)
  3585.       IF MinsRemaining <= 0 THEN _
  3586.          ZSubParm = -1 : _
  3587.          GOTO 58198
  3588.       IF ZNonStop THEN _
  3589.          GOTO 58168
  3590. * ------[ first line different ]------
  3591.       IF ZLinesPrinted <= MaxPrint THEN                              ' DD052301
  3592.          IF ZShowXferTime OR ZShowTimesDownloaded THEN               ' DD052301
  3593.             CALL SkipLine (1)                                        ' DD052301
  3594.          END IF                                                      ' DD052301
  3595.          IF ZDateOrderedFMS THEN                                     ' DD052301
  3596.             CALL QuickTPut1 (ZFGB$ + _                               ' DD092502
  3597.                "Files checked thru " + _                             ' DD092502
  3598.                ZFG9$ + MID$(PartToPrint$,24,8) + _                   ' DD092502
  3599.                ZEmphasizeOff$)                                       ' DD052301
  3600.          ELSE                                                        ' DD052301
  3601.             CALL QuickTPut1 (ZFG2$ + STR$(FMSCheckPoint) + _         ' DD092502
  3602.                ZFGA$ + " files checked" + ZEmphasizeOff$)            ' DD092502
  3603.          END IF                                                      ' DD052301
  3604.       END IF                                                         ' DD)52301
  3605. * REPLACING old line(s) by new
  3606. 58180 WasX$ = ZUserIn$(ZAnsIndex)
  3607.       CALL AllCaps (WasX$)
  3608. * ------[ first line different ]------
  3609.       IF InList AND (ZAnsIndex >= ZLastIndex OR WasX$ <> CHR$(68)) THEN _ ' DD021301
  3610.          ZTurboKey = -ZTurboKeyUser : _
  3611.          ZStackC = ZTrue : _
  3612.          CALL AskMore (ExtraPrompt$, ZTrue, ZFalse,AbortIndex,ZFalse) : _
  3613.          IF ZSubParm = -1 THEN _
  3614.             EXIT SUB _
  3615.          ELSE ZLastIndex = ZWasQ : _                                 ' DD021301
  3616.               IF NOT ZNo THEN _
  3617.                  ZAnsIndex = 1
  3618.       IF ZSubParm = -1 THEN _
  3619.          GOTO 58198
  3620.       IF ZNo THEN _
  3621.          ZLastIndex = 0 : _
  3622.          GOTO 58198
  3623.       WasX$ = ZUserIn$(ZAnsIndex)
  3624.       CALL AllCaps (WasX$)
  3625. 'print "WASX$=<";WASX$;"> zansindex=";zansindex;" zlastindex=";zlastindex;:for ii=zansindex to zlastindex: print "<";zuserin$(ii);">";:next:print:INPUT XXX$
  3626.       IF WasX$ = CHR$(84) THEN _                          'T         ' DD021301
  3627.          CALL TypeFile : _                                           ' Mpl090202
  3628.          ZwasA = UpldIndex : _                                       ' Mpl090202
  3629.          GOSUB 58185 : _                                             ' Mpl090202
  3630.          UpldIndex = ZwasA : _                                       ' Mpl090202
  3631.          GOTO 58180                                                  ' Mpl090202
  3632.       IF WasX$ = CHR$(86) THEN IF CanView THEN _          'V         ' DD021301
  3633.          CALL GetArc : _
  3634.          ZJumpSupported = ZTrue : _
  3635.          ZWasA = UpldIndex : _
  3636.          GOSUB 58185 : _
  3637.          UpldIndex = ZWasA : _
  3638.          GOTO 58180
  3639.       IF WasX$ = CHR$(69) THEN _                          'E         ' DD021301
  3640.          ZExtendedOff=NOT ZExtendedOff : _                           'Pe 11/07/91
  3641.          CALL QuickTPut1 (ZFGE$ + "Extended directory display " + _  ' DD092502
  3642.               ZFGB$ + FNOffOn$(NOT ZExtendedOff) + ZEmphasizeOff$) : _' DD092502
  3643.          GOTO 58168
  3644. 'print "wasx$=<";wasx$;"> candnld=";candnld;" zlc=<";zlastcommand$;"> inlist=";inlist
  3645. * REPLACING old line(s) by new
  3646. 58181 MarkingFiles = ZFalse
  3647. * ------[ first line different ]------
  3648.       IF ((WasX$ = CHR$(68) OR WasX$ = CHR$(77)) AND CanDnld) OR (WasX$ = CHR$(86) AND CanView) THEN _ ' DD021301
  3649.          MarkingFiles = (WasX$ = CHR$(77)) : _            'M         ' DD021301
  3650.          AtEndList = ZFalse : _                                      'PE 08/04/91
  3651.          CALL AskItems ("DMV",WasX$,ZTrue,"file",ZMarkedFiles$) : _  ' KG091001
  3652.          IF ZWasQ = 0 THEN _
  3653.             GOTO 58183
  3654.       IF WasX$ = CHR$(42) THEN IF ZPersonalDnld THEN _    '*         ' DD021301
  3655.          GOTO 58193
  3656. * REPLACING old line(s) by new
  3657. 58183 IF ZJumpSearching THEN _
  3658.          PrevSearch$ = SearchFor$ : _
  3659.          SearchFor$ = ZJumpTo$ _
  3660.       ELSE SearchFor$ = SearchString$ : _
  3661.            IF NOT ZYes AND CanDnld THEN _
  3662.               GOSUB 58188 : _
  3663. * ------[ first line different ]------
  3664.               IF WasX$ = CHR$(86) AND CanView AND ZLastIndex >= ZAnsIndex THEN _ ' DD021301
  3665.                  ZAnsIndex = ZAnsIndex - 1 : _                       ' KG091001
  3666.                  CALL GetArc : _                                     ' KG091001
  3667.                  ZJumpSupported = ZTrue : _                          ' KG091001
  3668.                  ZWasA = UpldIndex : _                               ' KG091001
  3669.                  GOSUB 58185 : _                                     ' KG091001
  3670.                  UpldIndex = ZWasA : _                               ' KG091001
  3671.                  GOTO 58180 _                                        ' KG091001
  3672.               ELSE IF WasX$ <> CHR$(76) AND ZLastIndex >= ZAnsIndex AND _ ' DD021301
  3673.                    NOT MarkingFiles AND NOT AtEndList THEN _         ' DD012303
  3674.                  CALL SkipLine (1) : _
  3675.                  DnldFlag = 1 : _
  3676.                  ReListAt = UpldIndex : _
  3677.                  EXIT SUB _      ' exit for downloading
  3678.               ELSE IF UpldIndex = CutoffRec THEN _
  3679.                       GOTO 58184
  3680.       IF ZNonStop THEN IF UpldIndex > 999 THEN _
  3681.          IF (SearchDate$ = "" OR NOT ZExpertUser) THEN _
  3682.             ZOutTxt$ = STR$(UpldIndex) + _
  3683.                " lines left to search.  Really go non-stop?" + ZNoPrompt$ : _' DD091202
  3684.             ZNoAdvance = ZTrue : _
  3685.             ZTurboKey = -ZTurboKeyUser : _
  3686.             ZSubParm = 1 : _
  3687.             CALL TGet : _
  3688.             CALL WipeLine (79) : _
  3689.             ZNonStop = ZYes
  3690.       GOTO 58168
  3691. * REPLACING old line(s) by new
  3692. 58184 IF ZChainedDir$ <> "" THEN _
  3693.          ZActiveFMSDir$ = ZChainedDir$ : _
  3694.          GOSUB 58185 : _
  3695.          LastFName = 0 : _
  3696.          GOTO 58168
  3697. 'print "58184 ZNo=";zno;" zlistonly=";zlistonly
  3698.       IF ZNo THEN _
  3699.          GOTO 58198
  3700. * ------[ first line different ]------
  3701.       Temp$ = ZFG2$ + CHR$(45) + ZFG3$ + CHR$(61) + ZFGE$ + "End list" + _ ' DD021301
  3702.               ZFG3$ + CHR$(61) + ZFG2$ + CHR$(45) + ZEmphasizeOff$ + ZCrLf$' DD021301
  3703.       AtEndList = ZTrue
  3704.       UpldIndex = CutOffRec - ZUpInc
  3705.       ZLastIndex = 0
  3706.       GOTO 58196
  3707. * REPLACING old line(s) by new
  3708. * ------[ first line different ]------
  3709. 58185 IF PassedCats$ = CHR$(80) THEN _                      'P       ' DD021301
  3710.          ZActiveFMSDir$ = ZPersonalDir$
  3711.       CALL OpenFMS (UpldIndex,CatLen)
  3712.       LastRec = UpldIndex
  3713.       EndDesc = 33 + ZMaxDescLen
  3714.       IF ZPersonalDnld THEN                                          ' DD052301
  3715.          EndDesc = EndDesc + (5 * ZShowTimesDownloaded)              ' DD052301
  3716.       END IF                                                         ' DD052301
  3717.       IF CatLen > 3 THEN _
  3718.          Categories$ = ZActiveUserName$ : _
  3719.          CALL Trim (Categories$) : _
  3720.          Categories$ = CHR$(44) + Categories$ + CHR$(44) + LEFT$(",SYSOP,",-7*ZSysOp) : _ ' DD021301
  3721.          CanDnld = ZTrue : _
  3722.          StatLen = 1 _
  3723.       ELSE StatLen = 0
  3724. 'print "58185 enddesc=";enddesc;" catlen=";catlen;" statlen=";statlen
  3725.       FIELD 2, EndDesc AS PartToPrint$, _
  3726.                CatLen AS Category$, _
  3727.                StatLen AS PersonalStatus$, _
  3728.                2 AS Filler$
  3729.       PrevFMS$ = ZActiveFMSDir$
  3730. * REPLACING old line(s) by new
  3731. 58188 IF ProcessedNew OR MarkingFiles OR NOT ZListOnly THEN _
  3732.          ProcessedNew = ZFalse : _
  3733.          RETURN
  3734.       ZUserIn$(0) = ""
  3735.       WasI = ZAnsIndex              ' check whether in dir
  3736.       WHILE WasI <= ZLastIndex
  3737.          CALL AraAllCaps (ZUserIn$(),WasI)
  3738.          ZWasZ$ = ZUserIn$(WasI)
  3739.          CALL UnMarkItems (ZMarkedFiles$,WasI,ZLastIndex,WasX,ZTrue)
  3740.          Temp$ = ZUserIn$(WasI)
  3741. * ------[ first line different ]------
  3742.          CALL AllCaps (Temp$)                                        ' KG062401
  3743. 'print "wasi=";wasi;" temp$=<";temp$;"> Zdef=<";zdefaultxfer$;">"
  3744.          IsProto = (LEN(Temp$) = 1 AND _
  3745.                     INSTR(ZDefaultXfer$,Temp$) > 0)
  3746.          ZOK = IsProto
  3747.          WasJ = LastRec + 1
  3748.          WasX = INSTR(Temp$,CHR$(46))                                ' DD021301
  3749.          AltTemp$ = ""
  3750.          IF NOT IsProto THEN _
  3751.             IF WasX = 0 THEN _
  3752.                AltTemp$ = Temp$ + CHR$(46) + ZDefaultExtension$ _    ' DD021301
  3753.             ELSE IF WasX = LEN(Temp$) THEN _
  3754.                     AltTemp$ = LEFT$(Temp$,WasX-1)
  3755. 'print "58188 b4 while zok=";zok;" wasj=";wasj;" looking for <";temp$;">"
  3756.          WHILE WasJ > 1 AND NOT ZOK
  3757.             WasJ = WasJ - 1
  3758.             GET #2,WasJ
  3759.             GOSUB 58191
  3760. 'print "bk 58191 canget=";catget;" ptp<";parttoprint$;">";:input xx$
  3761.             IF CanGet THEN _
  3762.                MID$(PartToPrint$,13,1) = SPACE$(1) : _               ' DD021301
  3763.                ZWasY$ = LEFT$(PartToPrint$,INSTR(PartToPrint$,SPACE$(1)) - 1) : _ ' DD021301
  3764.                ZOK = (Temp$ = ZWasY$) : _                            ' KG091001
  3765.                IF NOT ZOK THEN _
  3766.                   IF AltTemp$ <> "" THEN _
  3767.                      ZOK = (AltTemp$ = ZWasY$)                       ' KG091001
  3768.          WEND
  3769. 'print "58188 aft while zok=";zok;" wasj=";wasj;" looking for <";temp$;">":input xxx$
  3770.          IF ZOK THEN _
  3771.             GOSUB 58189 : _
  3772.             IF ZOK OR IsProto THEN _
  3773.                ZWasY$ = MID$(STR$(WasJ),2) : _                       ' KG091001
  3774.                ZUserIn$(0) = ZUserIn$(0) + _
  3775.                        ZWasY$ + _                                    ' KG091001
  3776.                        SPACE$(5 - LEN(ZWasY$))                       ' KG091001
  3777.          IF NOT ZOK AND NOT IsProto THEN _
  3778.             CALL QuickTPut1 (ZWasZ$ + " not found - omitted") : _
  3779.             FOR WasK = WasI + 1 TO ZLastIndex : _
  3780.                ZUserIn$(WasK - 1) = ZUserIn$(WasK) : _
  3781.             NEXT : _
  3782.             ZLastIndex = ZLastIndex - 1 : _
  3783.             WasI = WasI - 1
  3784.          WasI = WasI + 1
  3785.       WEND
  3786.       ZWasQ = ZLastIndex
  3787. 'print "end 58188 zlastindex=";zlastindex;" zok=";zok
  3788.       RETURN
  3789. * REPLACING old line(s) by new
  3790. 58189 IF IsProto THEN _
  3791.          RETURN
  3792. * ------[ first line different ]------
  3793.       ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$,SPACE$(1)) - 1) ' DD021301
  3794.       CALL FindFile (ZPersonalDrvPath$ + ZUserIn$(WasI),ZOK)
  3795.       IF ZOK THEN _
  3796.          ZUserIn$(WasI) = ZPersonalDrvPath$ + ZUserIn$(WasI) _
  3797.       ELSE CALL RotorsDir (ZUserIn$(WasI),ZSubDir$(),ZSubDirCount + _
  3798.                       ((ZUserSecLevel < ZMinSecToView) OR _
  3799.                        NOT ZCanDnldFromUp),ZTrue,CHR$(68)) : _       ' DD021301
  3800.            GOSUB 58185
  3801.       RETURN
  3802. * REPLACING old line(s) by new
  3803. 58191 IF LEN(Categories$) < 3 THEN _
  3804.          CanGet = ZTrue : _
  3805.          RETURN
  3806.       HoldCat$ = Category$
  3807. * ------[ first line different ]------
  3808.       CALL TrimTrail (HoldCat$,SPACE$(1))                            ' DD021301
  3809.       CALL AllCaps (HoldCat$)
  3810.       HoldCat$ = CHR$(44) + HoldCat$ + CHR$(44)                      ' DD021301
  3811.       CanGet = (INSTR(Categories$,HoldCat$) > 0)
  3812.       IF NOT CanGet THEN _
  3813.          IF ZPersonalDnld AND ZUserSecLevel >= ZSysopSecLevel THEN _ ' DD021101
  3814.             CanGet = ZTrue
  3815.       IF NOT CanGet THEN _
  3816.          IF ASC(Category$) = 32 THEN _
  3817.             IF LEN(HoldCat$) > 2 THEN _
  3818.                CALL CheckInt (Category$) : _
  3819.                CanGet = (ZUserSecLevel >= ZTestedIntValue)
  3820.       RETURN
  3821. * REPLACING old line(s) by new
  3822. 58193 GOSUB 58185                ' handle new files
  3823.       PersIndex = LastRec
  3824.       ProcessedNew = ZTrue
  3825.       ZLastIndex = 0
  3826.       ZUserIn$(0) = ""
  3827.       WHILE PersIndex > 0 AND  ZLastIndex < UBOUND(ZUserIn$)
  3828.          GET 2,PersIndex
  3829.          GOSUB 58191
  3830.          IF NOT CanGet THEN _
  3831.             GOTO 58194
  3832. * ------[ first line different ]------
  3833.          IF PersonalStatus$ <> CHR$(42) THEN _           '*          ' DD021301
  3834.             GOTO 58194
  3835.          ZLastIndex = ZLastIndex + 1
  3836.          WasI = ZLastIndex
  3837.          GOSUB 58189
  3838.          IF ZOK THEN _
  3839.             WasX$ = MID$(STR$(PersIndex),2) : _
  3840.             ZUserIn$(0) = ZUserIn$(0) + _
  3841.                     WasX$ + _
  3842.                     SPACE$(5 - LEN(WasX$)) _
  3843.          ELSE ZLastIndex = ZLastIndex - 1
  3844. * REPLACING old line(s) by new
  3845. 58196 CALL QuickTPut (ZEmphasizeOff$,0)
  3846. * ------[ first line different ]------
  3847.       ZOutTxt$ = Temp$ + "L)ist,A)bort,T)ype," + _                   ' DD012303
  3848.                  LEFT$("*)new,",-6*ZPersonalDnld) + _                ' DD063004
  3849.                  "M)ark" + LEFT$(",D)nld",-6*CanDnld) + _
  3850.                   LEFT$(",V)iew",-6*CanView) + _                     ' DD063004
  3851.                   ",E)xtend+/-,H)elp" + _                            ' DD080802
  3852.                   ZPressEnterExpert$                                 ' DD050302
  3853.       ZTurboKey = -ZTurboKeyUser
  3854.       IF ZDnldCompleted and ZAutoEnd = 1 THEN _                      'Pe 10/22/91
  3855.          ZNonStop = ZTrue : _                                        ' DD092501
  3856.          ZStopInterrupts = ZTrue : _                                 ' DD092501
  3857.          ZAutoLogOffReq = ZTrue : _                                  ' DD092501
  3858.          GOTO 58199                                                  ' DD092501
  3859.       CALL PopCmdStack
  3860.       WasX$ = ZUserIn$(ZAnsIndex)
  3861.       CALL AllCaps (WasX$)
  3862.       IF WasX$ = CHR$(65) THEN _                            'A       ' DD021301
  3863.          ZLastIndex = 0 : _                                          ' DD012304
  3864.          ZRet = ZTrue                                                ' DD012304
  3865.       IF ZWasQ = 0 OR ZRet OR ZSubParm < 0 THEN _
  3866.          GOTO 58198
  3867.       IF WasX$ = CHR$(69) THEN                              'E       ' DD063004
  3868.          ZExtendedOff = NOT ZExtendedOff                             ' DD063004
  3869.          GOTO 58196                                                  ' DD063004
  3870.       END IF                                                         ' DD063004
  3871.       IF WasX$ = CHR$(76) THEN _                            'L       ' DD021301
  3872.          ZActiveFMSDir$ = OrigDir$ : _
  3873.          GOSUB 58185 : _
  3874.          AtEndList = ZFalse : _
  3875.          GOTO 58168   
  3876.       IF WasX$ = CHR$(84) THEN _                            'T       ' DD021301
  3877.          CALL TypeFile : _                                           ' Mpl090202
  3878.          ZwasA = UpldIndex : _                                       ' Mpl090202
  3879.          GOSUB 58185 : _                                             ' Mpl090202
  3880.          UpldIndex = ZwasA : _                                       ' Mpl090202
  3881.          GOTO 58180                                                  ' Mpl090202
  3882.       IF WasX$ = "H" THEN                                            ' DD050302
  3883.          IF ZPersonalDnld THEN                                       ' DD050302
  3884.             temp$ = "FP"                                             ' DD050302
  3885.          ELSE                                                        ' DD050302
  3886.             temp$ = "FILE"                                           ' DD050302
  3887.          END IF                                                      ' DD050302
  3888.          CALL BufFile (ZHelpPath$ + temp$ + ZHelpExtension$,WasX) : _ ' DD050302
  3889.          ZLastIndex = 0 : _                                          ' DD050302
  3890.          GOSUB 58185 : _                                             ' DD050302
  3891.          ZYes = ZFalse : _                                           ' DD050302
  3892.          GOTO 58196                                                  ' DD050302
  3893.       END IF                                                         ' DD050302
  3894.       IF WasX$ = CHR$(86) THEN IF CanView THEN _            'V       ' DD021301
  3895.          CALL GetArc : _
  3896.          ZJumpSupported = ZTrue : _                                  ' Mpl090202
  3897.          ZWasA = UpldIndex : _                                       ' Mpl090202
  3898.          GOSUB 58185 : _                                             ' Mpl090202
  3899.          UpldIndex = ZWasA : _                                       ' Mpl090202
  3900.          GOTO 58180                                                  ' Mpl090202
  3901.       ZYes = ZFalse
  3902.       GOTO 58181
  3903. * REPLACING old line(s) by new
  3904. 58198 CLOSE 2
  3905.       ZNonStop = (ZPageLength < 1)
  3906.       ZStopInterrupts = ZFalse
  3907. * ------[ first line different ]------
  3908. * INSERTING new line(s)
  3909. 58199 ZOutTxt$ = ""                                                  ' DD092501
  3910.       ZActiveFMSDir$ = ""
  3911.       ZJumpSupported = ZFalse
  3912.       DnldFlag = 0
  3913.       EXIT SUB
  3914.       END SUB
  3915. '                                                                    ' Mpl090202
  3916. ' $SUBTITLE: 'TypeFile - subroutine to TYPE an ASCII FILE'           ' Mpl090202
  3917. ' $PAGE                                                              ' Mpl090202
  3918. '                                                                    ' Mpl090202
  3919. '  NAME    -- TYPEAFILE                                              ' Mpl090202
  3920. '                                                                    ' Mpl090202
  3921. '  PARAMETERs                                                        ' Mpl090202
  3922. '                                                                    ' Mpl090202
  3923. '                                                                    ' Mpl090202
  3924. '                                                                    ' Mpl090202
  3925. '                                                                    ' Mpl090202
  3926. '  PURPOSE -- Type a ASCII file to screen                            ' Mpl090202
  3927. '                                                                    ' Mpl090202
  3928.       SUB TypeFile STATIC                                            ' Mpl090202
  3929. 59141 CALL SkipLine (1)                                              ' Mpl090202
  3930.       ZOutTxt$ = "What ASCII file(s) to type? "+ZPressEnterExpert$   ' DD060101
  3931.       CALL PopCmdStack                                               ' Mpl090202
  3932.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _                           ' Mpl090202
  3933.          EXIT SUB                                                    ' Mpl090202
  3934. 59142 ZViolation$ = "TYPE File"                                      ' Mpl090202
  3935.       TypeVio = ZFalse                                               ' DD040101
  3936.       WasX = ZAnsIndex                                               ' Mpl090202
  3937.       FOR ZAnsIndex = WasX TO ZLastIndex                             ' Mpl090202
  3938.          GOSUB 59143                                                 ' Mpl090202
  3939.          IF ZSubParm < 0 THEN _                                      ' Mpl090202
  3940.             ZAnsIndex = ZLastIndex + 1                               ' Mpl090202
  3941.       NEXT ZAnsIndex                                                 ' Mpl090202
  3942.       IF ZLastIndex > 1 THEN _                                       ' Mpl090202
  3943.          EXIT SUB _                                                  ' Mpl090202
  3944.       ELSE GOTO 59141                                                ' Mpl090202
  3945. 59143 WasZ$ = ZUserIn$(ZAnsIndex)                                    ' Mpl090202
  3946.       CALL AllCaps (WasZ$)                                           ' Mpl090202
  3947.       IF INSTR(WasZ$,CHR$(42)) OR INSTR(WasZ$,CHR$(63)) THEN _ '*?   ' DD021301
  3948.          CALL QuickTPut ("Wildcards NOT allowed!",1) : _             ' DD062304
  3949.          RETURN                                                      ' Mpl090202
  3950.       ZFileName$ = WasZ$                                             ' Mpl090202
  3951.       ZFileNameHold$ = WasZ$                                         ' Mpl090202
  3952.       CALL BadFile (ZFileNameHold$,BadFileNameIndex)                 ' Mpl090202
  3953.       ON BadFileNameIndex GOTO 59145,59148,59150                     ' Mpl090202
  3954. 59145 CALL BadName (BadFileNameIndex,ZTrue)                          'Pe 06/03/91
  3955.       ON BadFileNameIndex GOTO 59146,59150                           ' Mpl090202
  3956. 59146 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _         ' Mpl090202
  3957.            (NOT ZSysop),ZTrue,CHR$(86))                              ' DD040101
  3958.       CALL FilSecChk (ZViolation$,ZFileName$,ZOK)                    ' DD040101
  3959.       IF NOT ZOK THEN _                                              ' DD040101
  3960.          TypeVio = ZTrue : _                                         ' DD040101
  3961.          GOTO 59150                                                  ' DD040101
  3962.       IF ZPersonalDnld THEN                                          ' DD040101
  3963.          ZFileName$ = ZPersonalDrvPath$ + WasZ$                      ' DD040101
  3964.          CALL PersFilSecChk (ZViolation$,ZFileName$,ZOK)             ' DD040101
  3965.          IF NOT ZOK THEN                                             ' DD040101
  3966.             TypeVio = ZTrue                                          ' DD040101
  3967.             GOTO 59150                                               ' DD040101
  3968.          END IF                                                      ' DD040101
  3969.          CALL FindFile (ZFileName$,ZOK)                              ' Mpl090202
  3970.          IF ZOK THEN _                                               ' DD040101
  3971.             GOTO 59158                                               ' DD040101
  3972.       END IF                                                         ' DD040101
  3973.       GOTO 59158                                                     ' DD040101
  3974. 59148 WasZ$ = ZUserIn$(ZAnsIndex) + _                                ' Mpl090202
  3975.            " not found!"                                             ' Mpl090202
  3976.       CALL UpdtCalr (WasZ$,2)                                        ' Mpl090202
  3977.       ZOutTxt$ = WasZ$ + _                                           ' Mpl090202
  3978.            " Type correct filename" + ZPressEnterExpert$             ' Mpl090202
  3979.       ZSubParm = 1                                                   ' Mpl090202
  3980.       CALL TGet                                                      ' Mpl090202
  3981.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _                           ' Mpl090202
  3982.          RETURN                                                      ' Mpl090202
  3983.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)                              ' Mpl090202
  3984.       GOTO 59143                                                     ' Mpl090202
  3985. 59150 CALL SecViolation                                              ' Mpl090202
  3986.       IF ZDenyAccess THEN _                                          ' Mpl090202
  3987.          EXIT SUB                                                    ' Mpl090202
  3988.       IF TypeVio THEN _                                              ' DD040101
  3989.          EXIT SUB                                                    ' DD040101
  3990.       GOTO 59148                                                     ' Mpl090202
  3991. 59158 CALL BreakFileName (WasZ$,Drive$,Prefix$,Ext$,ZFalse)          ' Mpl090202
  3992.       IF Ext$ = "" THEN _                                            ' Mpl090202
  3993.         GOTO 59160                                                   ' Mpl090202
  3994.       IF INSTR("DWC,COM,EXE,GIF,PIC,DAT,BIN,ZIP,ARC,LZH,ZOO,PAK,ARJ,",Ext$+CHR$(44)) > 0 THEN _ ' DD021301
  3995.          CALL QuickTPut ("Not an ASCII File, Cannot Type files with " + _' Mpl090202
  3996.               Ext$ + " Extensions",1) : _                            ' Mpl090202
  3997.          RETURN                                                      ' Mpl090202
  3998. 59160 CALL BufFile (ZFileName$,WasX)                                 ' Mpl090202
  3999.       RETURN                                                         ' Mpl090202
  4000.       END SUB                                                        ' Mpl090202
  4001. ' $SUBTITLE: 'WhoDidIt - subroutine to Display Who Uploaded that file'' Mpl090202
  4002. ' $PAGE                                                              ' Mpl090202
  4003. '                                                                    ' Mpl090202
  4004. '  NAME    -- WhoDidIt                                               ' Mpl090202
  4005. '                                                                    ' Mpl090202
  4006. '  PARAMETERs None                                                   ' Mpl090202
  4007. '                                                                    ' Mpl090202
  4008. '                                                                    ' Mpl090202
  4009. '                                                                    ' Mpl090202
  4010. '                                                                    ' Mpl090202
  4011. 'PURPOSE - Maple Version of RBBS creates a file Called Uploadlg.def  ' Mpl090202
  4012. '          this file keeps track of who Uploaded what file           ' Mpl090202
  4013. '          File location is Drive/Path were *.DIR files are stored   'Pe 03/13/92
  4014. '          Allows reading UPLOADLG.DEF file in reverse order         ' Mpl090202
  4015. '                                                                    ' Mpl090202
  4016.       SUB WhoDidIt STATIC                                            ' Mpl090202
  4017. 59500 CALL SkipLine (3)                                              ' Mpl090202
  4018.                                                                      ' Mpl090202
  4019.       ZOutTxt$ = STRING$(72,45) + ZCrLF$ + SPACE$(1) + _             ' DD021301
  4020.                  "File Name" + SPACE$(4) + "Uploader" + _            ' DD021301
  4021.                  SPACE$(26) + "Date" + SPACE$(9) + "Time" + _        ' DD021301
  4022.                  ZCrLf$ + STRING$(72,45)                             ' DD021301
  4023.       Call QuickTput1 (ZOutTxt$)                                     ' Mpl090202
  4024.       CLOSE 7                                                        ' DD012502
  4025.       IF ZShareIt THEN _                                             ' Mpl090202
  4026.          OPEN ZDirPath$ + "UPLOADLG.DEF" FOR RANDOM SHARED AS #7 LEN=86 _' DD012502
  4027.       ELSE OPEN "R",7,ZDirPAth$ +"UPLOADLG.DEF",86                   ' DD012502
  4028.       FIELD 7,84 AS ShowUp$, 2 AS fill$                              ' DD012502
  4029.       RecordNum! = FIX(LOF(7) / 86)                                  ' DD012502
  4030.       ZJumpSupported = ZTrue                                         ' Mpl090202
  4031.       ZJumpSearching = ZFalse                                        ' Mpl090202
  4032.       ZJumpLast$ = ""                                                ' Mpl090202
  4033. 59502 IF RecordNum! < 1 OR ZRet THEN  _                              ' Mpl090202
  4034.          GOTO 59560                                                  ' Mpl090202
  4035.       GET #7, RecordNum!                                             ' DD012502
  4036.       ZOutTxt$ = ShowUp$                                             ' Mpl090202
  4037.       RecordNum! = RecordNum! - 1                                    ' Mpl090202
  4038.       IF INSTR(ZOutTxt$,CHR$(42)) > 0 and NOT ZSysop THEN _   '*     ' DD021301
  4039.          GOTO 59502                                                  ' Mpl090202
  4040.       GOSUB 59550                                                    ' Mpl090202
  4041.       GOTO 59502                                                     ' Mpl090202
  4042.                                                                      ' Mpl090202
  4043. 59550 IF ZJumpSearching THEN _                                       ' Mpl090202
  4044.          ZWasDF$ = ZOutTxt$ : _                                      ' Mpl090202
  4045.          CALL AllCaps (ZWasDF$) : _                                  ' Mpl090202
  4046.          IF INSTR(ZWasDF$,ZJumpTo$) = 0 THEN _                       ' Mpl090202
  4047.             RETURN _                                                 ' Mpl090202
  4048.          ELSE CALL CheckColor (ZOutTxt$,ZJumpTo$,"") : _             ' Mpl090202
  4049.             ZJumpSearching = ZFalse                                  ' Mpl090202
  4050.          ZSubParm = 5                                                ' Mpl090202
  4051.          CALL SmartText (ZOutTxt$,ZTrue,ZFalse,ZFalse)               ' Mpl020601
  4052.          CALL Tput                                                   ' Mpl090202
  4053.          WasX=1                                                      ' Mpl090202
  4054.          CALL AskMore ("",ZTrue,ZTrue,WasX,ZFalse)                   ' Mpl090202
  4055.          IF ZNo OR ZSubParm = -1 THEN _                              ' Mpl090202
  4056.             ZJumpSupported = ZFalse : _                              ' Mpl090202
  4057.             ZJumpSearching = ZFalse : _                              ' Mpl090202
  4058.             ZJumpLast$ = "" : _                                      ' Mpl090202
  4059.             CLOSE 7 : _                                              ' DD012502
  4060.             EXIT SUB                                                 ' Mpl090202
  4061.       RETURN                                                         ' Mpl090202
  4062. 59560 IF ZJumpSearching THEN _                                       ' Mpl090202
  4063.          CALL QuickTput ("Search string NOT found",2)                ' DD031302
  4064.          ZJumpSupported = ZFalse                                     ' Mpl090202
  4065.          ZJumpSearching = ZFalse                                     ' Mpl090202
  4066.          ZJumpLast$ = ""                                             ' Mpl090202
  4067.          CLOSE 7                                                     ' DD012502
  4068.       END SUB                                                        ' Mpl090202
  4069.