home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / BBS_UTIL / BM0406_A.ZIP / 0406.ZIP / RSB40406.MRG < prev    next >
Text File  |  1994-04-06  |  110KB  |  2,276 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against RBBSSUB4.BAS to produce RBBSSUB4.BAS
  3. * RBBSSUB4.BAS:  Date 6-20-1992  Size 120885 bytes
  4. * BusiMod (tm) mods for RBBS v17.4 - (c) 1993,94 by respective authors
  5. * RBBS v17.4 (c) 1986,1992 by D Thomas Mack
  6. * ------------[ Created 04-06-1994 22:00:00 ]------------
  7. * REPLACING old line(s) by new
  8. ' $linesize:132
  9. ' $title: 'RBBSSUB4.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  10. '  Copyright 1992 by D. Thomas Mack, all rights reserved.
  11. '  Name ...............: RBBSSUB4.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. '  AnyBut         59760  Determine where a "word" begins
  25. '  AskUsers       64003  Ask users questions based on a script and save answers
  26. '  AskMore        59858  Check whether screen full
  27. '  AutoPage       60300  Check whether to notify sysop caller is on
  28. ' BadFileChar     59800  Check file name for bad character
  29. '  Bracket        59960  Puts strings around a substring
  30. '  BufFile        58400  Write a file to the user quickly
  31. '  BufString      58300  Write a string with imbedded CR/LF to the user quickly
  32. '  CheckColor     59930  Highlighting based on search string
  33. '  CmndToggle     64635  Processes user command to T)oggle preferences
  34. '  CmndSysopXfer  64640  Sysop function to change Xfer counts
  35. '  ColorDir       59920  Adds colorization to FMS directory entry
  36. '  ColorPrompt    59940  Colorizes prompts
  37. '  CompDate       59880+ Produces a computational data from YY, MM, DD
  38. '  ConfMail       59850  Check conference mail waiting
  39. '  ConvertDir     58950  Checks for U & A (shorthand) and converts appropriately
  40. '  PackDate       59201  Compress date in string format to 2 characters
  41. '  EofComm        60000  Determine whether any chars in comm port buffer
  42. '  ExpireDate     59890  Calculate registration expiration date
  43. '  FakeXRpt       62650  Write out file transfer report for protocols that don't
  44. '  FindEnd        58770  Find where a "word" ends
  45. '  FindFile       58790  Determine whether a file exists without opening it
  46. '  FindLast       58600  Find last occurence of a string
  47. '  FMS            58200  Search the upload management system for entries
  48. * ------[ first line different ]------
  49. '  FMSHedr        58203  Draws header when listing files             ' RM11229301
  50. '  GetAll         59780  Get list of all directories to display
  51. '  GetDirs        58895  Prompts for directories for file list/new/search cmds
  52. '  GetMsgAttr     62530  Restore attributes of original message
  53. '  GetYMD         59204  Pulls YY, MM, or DD from a 2 byte stored date
  54. '  GlobalSrchRepl 60100  Global search and replace
  55. '  LogPDown       59400  Records download in private directory
  56. '  MarkTime       60200  Give visual feedback during lengthy process
  57. '  MetaGSR        60130  Meta statement global search and replace
  58. '  MsgImport      59698  Allow local user to import a text file to a message
  59. '  Muzak          59100  Play musical themes for different RBBS functions
  60. '  NewPassword    60668  Get a new password
  61. '  PersFile       59300  processes requests for personal files       ' RM01199401
  62. '  Protocol       62600  Determine if external protocols are available
  63. '  PutMsgAttr     62520  Save attributes of original message
  64. '  Remove         58210  Remove characters from within strings
  65. '  RotorsDir      58700  Searches for a file using list of subdirs
  66. '  RptTime        62540  Report date/time and time on
  67. '  SearchArray    58190  Check for the occurance of a string in an array
  68. '  SetEcho        59600  Set RBBS properly for who is to echo
  69. '  SetHiLite      59934  Set user preference on highlighting
  70. '  SetGraphic     59980  Sets graphic preference for text file display
  71. '  SetNewUserDef  64645  Sets new user defaults
  72. '  SmartText      58250  Process SMART TEXT control strings
  73. '  SubMenu        59500  Processes options that have sub-menus
  74. '  TimedOut       63000  Write timed exit semaphore file
  75. '  TimeLock       60180  Check for TIME LOCK on certain features
  76. '  Transfer       62620  RBBS-PC support for external protocols for file transfer ' BTCH174
  77. '  Toggle         57000  Toggles or views user options
  78. ' TwoByteDate     59200  Reduces a data to 2 byte string for space compression
  79. '  UnPackDate     59902  Uncompresses a 2 byte date
  80. '  UserColor      59965  Lets user set color for text and whether bold
  81. '  UserFace       59450  Processes programmable user interface
  82. '  ViewArc        64600  Display .ARC file contents to user
  83. '  PrivDoorRtn    62629  Private door exit routine
  84. '  WipeLine       58800  Wipes away a line so next prints in its place
  85. '  WordWrap       59710  Adjust a msg -- wrap lines and perserve paragraphs
  86. '
  87. '  $INCLUDE: 'RBBS-VAR.BAS'
  88. '
  89. * REPLACING old line(s) by new
  90. 57000 ' $SUBTITLE: 'Toggle - Toggle User Preferences'
  91. ' $PAGE
  92. '
  93. '  NAME    -- Toggle
  94. '
  95. '  INPUTS  -- ToggleOption      Option to toggle or view
  96. '                               according to the following:
  97. '    ToggleOption         PREFERENCE
  98. '   Toggle   VIEW
  99. '     1       -1           Autodownload
  100. '     2       -2           Bulletin review on logon
  101. '     3       -3           Case change
  102. '     4       -4           File review on logon
  103. '     5       -5           Highlight
  104. '     6       -6           Line feeds
  105. '     7       -7           Nulls
  106. '     8       -8           TurboKey
  107. '     9       -9           Expert
  108. '    10      -10           Bell
  109. * ------[ first line different ]------
  110. '    11      -11           Chat Availability                         ' RCHAT401
  111. '
  112. '  OUTPUTS -- ZSubParm   passed from TPut
  113. '
  114. '  PURPOSE -- Sets or views any single user preference value
  115. '
  116.       SUB Toggle (ToggleOption) STATIC
  117.       ZSubParm = 0
  118.       IF ToggleOption < 0 THEN _
  119.          GOTO 57005
  120.       ON ToggleOption GOSUB _
  121.          57010, _         'Autodownload
  122.          57120, _         'Bulletin review on logon
  123.          57260, _         'Case change
  124.          57150, _         'File review on logon
  125.          57040, _         'Highlight
  126.          57100, _         'Line feeds
  127.          57210, _         'Nulls
  128.          57230, _         'TurboKey
  129.          57190, _         'Expert
  130.          57170, _         'Bell                                      ' RCHAT401
  131.          57300            'Internode Chat Availability               ' RCHAT401
  132.       EXIT SUB
  133. * REPLACING old line(s) by new
  134. 57005 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  135.       ON -ToggleOption GOSUB _
  136.          57030, _         'Autodownload
  137.          57130, _         'Bulletin review on logon
  138.          57270, _         'Case change
  139.          57160, _         'File review on logon
  140.          57050, _         'Highlight
  141.          57110, _         'Line feeds
  142.          57220, _         'Nulls
  143.          57240, _         'TurboKey
  144.          57200, _         'Expert
  145. * ------[ first line different ]------
  146.          57180, _         'Bell                                      ' RCHAT401
  147.          57310            'Internode Chat Availability               ' RCHAT401
  148.       EXIT SUB
  149. * REPLACING old line(s) by new
  150. 57280 ZUseTPut = (ZUpperCase OR ZXOnXOff)
  151.       RETURN
  152. * ------[ first line different ]------
  153. * INSERTING new line(s)
  154. 57300 ZAvailableForChat = NOT ZAvailableForChat                      ' RCHAT401
  155. 57310 ZOutTxt$ = "Availability for node chat: " + MID$("NO YES", 1 -3 * ZAvailableForChat, 3) ' RCHAT401
  156.       CALL QuickTPut1 (ZOutTxt$)                                     ' RCHAT401
  157.       RETURN                                                         ' RCHAT401
  158.       END SUB
  159. '
  160. * REPLACING old line(s) by new
  161. 58200 ' $SUBTITLE: 'FMS - subroutine to search the upload management system'
  162. ' $PAGE
  163. '
  164. '  NAME    -- FMS
  165. '
  166. '  INPUTS  -- PARAMETER                      MEANING
  167. '             DirToSearch$          RBBS-PC "DIR" CATEGORY TO LOOK
  168. '                                     FOR
  169. '             SearchString$          STRING TO SEARCH FOR
  170. '             SearchDate$            DATE TO SEARCH FOR
  171. '             ZCategoryName$()
  172. '             ZCategoryCode$()
  173. '             ZCategoryDesc$()
  174. '             CatFound
  175. '             ZNumCategories
  176. '
  177. '  OUTPUTS -- ProcessedInFMS
  178. '             DnldFlag
  179. '
  180. '  PURPOSE -- To search the file management system and display the
  181. '             files being searched for as well as the catetory descriptions
  182. '
  183.       SUB FMS (DirToSearch$,SearchString$,SearchDate$, _
  184.                ProcessedInFMS,ZCategoryName$(1),ZCategoryCode$(1), _
  185.                ZCategoryDesc$(1),DnldFlag,CatFound,AbortIndex) STATIC
  186.       DnldFlag = 0
  187.       CALL SearchArray (DirToSearch$,ZCategoryName$(),ZNumCategories,CatFound)
  188.       ProcessedInFMS = ProcessedInFMS OR (CatFound > 0)
  189. * ------[ first line different ]------
  190.       SpaceLen% = 68 - LEN(DirToSearch$)                             ' HEDR174/RM11229301
  191.       SpaceLen% = SpaceLen% - LEN(ZCategoryDesc$(CatFound))          ' HEDR174/RM11229301
  192.       IF ProcessedInFMS THEN
  193.          ZSubParm = 5
  194.          FilName$ = ZDirPath$ + "FMSHEAD.TXT"
  195.          CALL Graphic2 (FilName$)                                    ' DGS011501-DS/RM03169401/RM03199402
  196.          IF ZOK THEN                                                 ' RM03169401
  197.             GOSUB 58202                                              ' RM03169401/RM03259402
  198.             ZDirToSearch$ = DirToSearch$                             ' DGS011501-DS
  199.             ZHDR$ = HDR$                                             ' DGS011501-DS
  200.             ZCatDesc$ = ZCategoryDesc$(CatFound)                     ' DGS011501-DS
  201.             IF ZRIPTest = ZTrue THEN _                               ' CJQ020794
  202.                CALL BufFile2 (ZHelpPath$ + "FILESCAN.RIP",WasX) : _  ' CJQ020794/RM03199402
  203.                ZLinesPrinted = 0                                     ' DGS/DS04069403
  204.             CALL BufFile2 (FilName$,ZWasX)                           ' DGS011501-DS/RM03169401/RM03199402
  205.          ELSE                                                        ' RM03169401
  206.             GOSUB 58202
  207.             CALL FMSHedr (DirToSearch$,HDR$,SrchDir$,SpaceLen%,ZCategoryDesc$(CatFound)) ' RM11229301
  208.          END IF
  209.          Cat$ = ZCategoryCode$(CatFound)
  210.          CALL DispUpDir (Cat$,SearchString$,SearchDate$,DnldFlag,AbortIndex)
  211.       END IF
  212.       EXIT SUB
  213. * REPLACING old line(s) by new
  214. * ------[ first line different ]------
  215. 58202 HDR$ = ""                                                      ' HEDR174/SG081502
  216.       ZOutTxt$ = SearchDate$                                         ' HEDR174
  217.       IF LEN(ZOutTxt$) > 0 THEN _
  218.          ZOutTxt$ = MID$(ZOutTxt$,3) + LEFT$(ZOutTxt$,2)
  219.       SrchDir$ = SearchString$ + ZOutTxt$                 ' HEDR174
  220.       IF SrchDir$ <> "" THEN                                         ' HEDR174/RM11019301
  221.          IF ZWasGR > 1 THEN                                          ' HEDR174/RM11019301
  222.             HDR$ = ZDR4$ + " - Scanning for " + ZDR3$ + "══> "       ' HEDR174/SG081502/RM11159301
  223.             SpaceLen% = SpaceLen% - LEN(HDR$ + SrchDir$)             ' HEDR174/SG081502/RM11019301/RM11229301
  224.             IF ZEmphasizeOn$ <> "" THEN _                            ' HEDR174/SG081502
  225.                SpaceLen% = SpaceLen% + 20 _                          ' HEDR174/SG081502/RM11229301
  226.             ELSE _                                                   ' HEDR174/SG081502
  227.                HDR$ = HDR$ + ZDR2$ : _                               ' HEDR174/SG081502/RM11159301
  228.                SpaceLen% = SpaceLen% - LEN(ZDR2$) + 30               ' HEDR174/SG081502/RM11159301/RM11229301
  229.          ELSE                                                        ' HEDR174/RM11019301
  230.             HDR$ = " - Scanning for --> "                            ' HEDR174/SG081502
  231.             SpaceLen% = SpaceLen% - LEN(HDR$ + SrchDir$)             ' HEDR174/RM11229301
  232.          ENDIF                                                       ' RM11019301
  233.       ENDIF                                                          ' RM11019301
  234.       RETURN                                 ' HEDR174
  235.       END SUB
  236. ' $SUBTITLE: 'FMSHedr - subroutine to display File Listing Header' ' RM11229301
  237. ' $PAGE
  238. '
  239. '  NAME     -- FMSHedr
  240. '
  241. '  INPUTS   -- HDR$
  242. '              SrchDir$
  243. '              SpaceLen%
  244. '
  245. '  OUTPUTS  --
  246. '
  247. '  PURPOSE  -- Draws a colorful File Listing Header when listing files
  248. '
  249. '
  250.       SUB FMSHedr (DirToSearch$,HDR$,SrchDir$,SpaceLen%,CategoryDesc$) ' RM11229301
  251.       LineLen% = 52 - LEN(ZRBBSName$ + ZConfName$)                   ' HEDR174/RM11229301
  252.       CALL SkipLine (1)                                              ' RM11229301
  253.       IF ZRIPTest = ZTrue THEN _                                     ' CJQ020794
  254.          CALL BufFile2 (ZHelpPath$ + "FILESCAN.RIP",WasX) : _        ' CJQ020794/RM03199402
  255.          ZLinesPrinted = 0                                           ' DGS/DS04069403
  256.       IF ZWasGR = 0 THEN _                                           ' HEDR174/SG081502
  257.          GOTO 58204                                                  ' HEDR174/SG081502
  258.       CALL QuickTPut(ZDR5$ + "╔═ " + ZDR7$ + ZRBBSName$ + ZDR5$ +" ═════ " + _ ' HEDR174/RM11159301
  259.                      ZDR4$ + "File Area: " + ZDR7$ + ZConfName$ + " " + ZDR5$ + _ ' HEDR174/RM11159301
  260.                      STRING$(LineLen%,205) + "╗", 1)                 ' HEDR174/RM11229301/RM03119401
  261.       OutTxt$ = ZDR5$ + "║  " + ZDR3$ + DirToSearch$ + " : " + _     ' HEDR174/SG081502/RM11159301
  262.                 ZDR2$ + CategoryDesc$ + HDR$ + _                     ' HEDR174/SG081502/RM11159301/RM11229301
  263.                 ZEmphasizeOn$ + SrchDir$                             ' HEDR174/SG081502
  264.       GOSUB 58205                                                    ' HEDR174/SG081502
  265.       CALL QuickTPut(OutTxt$ + ZDR5$ + "║", 1)                       ' HEDR174/SG081502/RM11159301
  266.       CALL QuickTPut(ZDR5$ + "╠════════════╦════════╦════════╦═════" + _ ' HEDR174/RM11159301
  267.                      "═════════════════════════════════════╣", 1)    ' HEDR174
  268.       CALL QuickTPut(ZDR5$ + "║ " + ZDR1$ + "File Name" + ZDR5$ + _  ' HEDR174/RM11159301
  269.                      "  ║  " + ZDR2$ + "Size" + ZDR5$ + "  ║  ", 0)  ' HEDR174/RM11159301
  270.       CALL QuickTPut(ZDR3$ + "Date" + ZDR5$ + _                      ' HEDR174/RM11159301
  271.                      "  ║ " + ZDR4$ + "Description" + ZDR5$ + _      ' HEDR174/RM11159301
  272.                      "                              ║", 1) : _       ' HEDR174
  273.       CALL QuickTPut(ZDR5$ + "╚════════════╩════════╩════════╩═════" + _ ' HEDR174/RM11159301
  274.                      "═════════════════════════════════════╝" + ZEmphasizeOff$, 1) ' HEDR174
  275.       GOTO 58208                                                     ' RM11229301
  276. * INSERTING new line(s)
  277. 58204 CALL QuickTPut("+- " + ZRBBSName$ + " ----- File Area: " + _   ' HEDR174
  278.                      ZConfName$ + " " + _                            ' HEDR174
  279.                      STRING$(LineLen%,45) + "+", 1)                  ' HEDR174/RM11229301/RM03119401
  280.       OutTxt$ = "|  " + DirToSearch$ + " : " + CategoryDesc$ + HDR$ + _ ' HEDR174/SG081502/RM11229301
  281.                  ZEmphasizeOn$ + SrchDir$                            ' HEDR174/SG081502
  282.       GOSUB 58205                                                    ' HEDR174/SG081502
  283.       CALL QuickTPut(OutTxt$ + "|", 1)                               ' HEDR174/SG081502
  284.       CALL QuickTPut("|------------+--------+--------+-------" + _   ' HEDR174
  285.                      "-----------------------------------|", 1)      ' HEDR174
  286.       CALL QuickTPut("| File Name  |  Size  |  ", 0)                 ' HEDR174
  287.       CALL QuickTPut("Date  | Description"+ _                        ' HEDR174
  288.                      "                              |", 1)           ' HEDR174
  289.       CALL QuickTPut("+------------+--------+--------+--------" + _  ' HEDR174
  290.                      "----------------------------------+", 1)       ' HEDR174
  291.       GOTO 58208                                                     ' RM11229301
  292. 58205 IF SpaceLen% < 0 THEN _                                        ' HEDR174/SG081502/RM11229301
  293.          OutTxt$ = LEFT$(OutTxt$, LEN(OutTxt$) + SpaceLen%) + _      ' HEDR174/SG081502/RM11229301
  294.            ZEmphasizeOff$ _                     ' HEDR174/SG081502
  295.       ELSE _                                 ' HEDR174/SG081502
  296.      OutTxt$ = OutTxt$ + ZEmphasizeOff$ + _                 ' HEDR174/SG081502
  297.                    STRING$(SpaceLen%,32)                             ' HEDR174/SG081502/RM11229301/RM03119401
  298.       RETURN                                 ' HEDR174/SG081502
  299. 58208 END SUB                                                        ' RM11229301
  300. * REPLACING old line(s) by new
  301. 58210 ' $SUBTITLE: 'Remove - subroutine to delete a string from within a string'
  302. ' $PAGE
  303. '
  304. '  NAME    -- Remove
  305. '
  306. '  INPUTS  -- PARAMETER                      MEANING
  307. '             BADSTRING$              STRING CONTAINING CHARACTERS
  308. '                                     TO BE DELETED FROM "WasL$"
  309. '             WasL$                      STRING TO BE ALTERED
  310. '
  311. '  OUTPUTS -- WasL$                      WITH THE CHARACTERS IN
  312. '                                     "BADSTRING#" DELETED FROM IT
  313. '
  314. '  PURPOSE -- To remove all instances of the characters in
  315. '                        "BADSTRING$" from "WasL$"
  316. '
  317. * ------[ first line different ]------
  318.       SUB Remove (WasL$,BadString$)                                  ' RM11159302
  319.       WasJ = 0
  320.       FOR WasI=1 TO LEN(WasL$)
  321.          IF INSTR(BadString$,MID$(WasL$,WasI,1)) = 0 THEN _
  322.             WasJ = WasJ + 1 : _
  323.             MID$(WasL$,WasJ,1) = MID$(WasL$,WasI,1)
  324.       NEXT WasI
  325.       WasL$ = LEFT$(WasL$,WasJ)
  326.       END SUB
  327. '
  328. * REPLACING old line(s) by new
  329. 58250 ' $SUBTITLE: 'SmartText - smart text substitution'
  330. ' $PAGE
  331. '
  332. '  NAME    -- SmartText   (WRITTEN BY DOUG AZZARITO)
  333. '
  334. '  INPUTS  -- StringWork$        string to scan for Smart Text
  335. '             CRFound            Does this line contain a CR?
  336. '             ZSmartTextCode     Smart Text control code
  337. '
  338. '  OUTPUTS -- StringWork$        Input string with Smart replaced
  339. '
  340. '  PURPOSE -- Smart Text allows control strings in text files
  341. '             to be replaced at runtime with user info or other
  342. '             data.  The Smart Text control code is a 1-byte
  343. '             code (configurable) with a 2-byte action code.
  344. '
  345.       SUB SmartText (StringWork$, CRFound, OverStrike) STATIC
  346.       IF SmartCarry$<>"" THEN _
  347.          StringWork$ = SmartCarry$+StringWork$
  348.       Index = INSTR(StringWork$, ZSmartTextCode$)
  349.       WHILE Index > 0 AND Index < LEN(StringWork$)-1
  350.          IF INSTR(MID$(StringWork$, Index+1,2)," ") THEN _
  351.             SmartAct = 0 _
  352.          ELSE _
  353.             SmartAct = INSTR(ZSmartTable$, MID$(StringWork$, Index+1, 2))
  354.          IF SmartAct = 0 THEN _
  355.             WasI = 1 : _
  356.             GOTO 58254
  357.          SmartAct = (SmartAct+2)/3
  358. * ------[ first line different ]------
  359.          IF SmartAct > 50 THEN _                                     ' DGS
  360.             GOTO 58251                                               ' DGS
  361.          ON SmartAct GOSUB 58260, 58261, 58262, 58263, 58264, 58265, _
  362.                            58266, 58267, 58268, 58269, 58270, _
  363.                            58271, 58272, 58273, 58274, 58275, _
  364.                            58276, 58277, 58296, 58297, 58298, _      ' COLR174
  365.                            58299, 58278, 58279, 58280, _             ' COLR174
  366.                            58281, 58282, 58283, 58284, 58285, _
  367.                            58286, 58287, 58289, 58290, 58291, _
  368.                            58292, 58293, 58294, 58295, 58255, _      ' DROP174/RM100301
  369.                            58300, 58301, 58302, 58303, 58304, _      ' DD052302
  370.                            58305, 58306, 58307, 58308, 58309         ' DD052302
  371.          GO TO 58253                                                 ' DGS
  372. * INSERTING new line(s)
  373. 58251    SmartActTemp = SmartAct - 50
  374.          ON SmartActTemp GOSUB _
  375.                            58310, 58311, 58312, 58313, 58314, _      ' RM02089401/GS02119401
  376.                            58315, 58316, 58317, 58319, 58318, _      ' DGS
  377.                            58320, 58321                              ' DGS
  378. 58253    GOSUB 58256                                                 ' DGS
  379.          WasI = LEN(SmartHold$)
  380.          ReplaceLen = 3
  381.          IF OverStrike OR Overlay THEN _
  382.             IF WasI > 2 THEN _
  383.                ReplaceLen = WasI _
  384.             ELSE _
  385.                SmartHold$ = SmartHold$ + SPACE$(3 - WasI)
  386.          StringWork$ = LEFT$(StringWork$, Index-1) + SmartHold$ + _
  387.                        MID$(StringWork$,Index+ReplaceLen)
  388. * INSERTING new line(s)
  389. 58255 SmartHold$ = STR$(ZDropTimes)         ' DC Carrier Drops       ' DROP174/RM100301/DGS092401-DS
  390.       CALL Trim (SmartHold$)                                         ' DROP174/RM100301
  391.       RETURN                                                         ' DROP174/RM100301
  392. * REPLACING old line(s) by new
  393. * ------[ first line different ]------
  394. 58265 SmartHold$ = STR$(ZUserSecLevel)      ' SL Security level
  395.       CALL Trim (SmartHold$)
  396.       RETURN
  397. * REPLACING old line(s) by new
  398. * ------[ first line different ]------
  399. 58266 SmartHold$ = DATE$                    ' DT Date
  400.       RETURN
  401. * REPLACING old line(s) by new
  402. 58267 CALL AMorPM
  403. * ------[ first line different ]------
  404.       SmartHold$ = ZTime$                   ' TM Time
  405.       RETURN
  406. * REPLACING old line(s) by new
  407. * ------[ first line different ]------
  408. 58269 CALL TimeRemain(MinsRemaining)        ' TE Time elapsed (mm:ss)
  409.       SmartHold$ = MID$(STR$(INT(ZSecsUsedSession!/60)),2)+":"+ _
  410.          MID$(STR$((ZSecsUsedSession! MOD 60)+100),3)
  411.       RETURN
  412. * REPLACING old line(s) by new
  413. * ------[ first line different ]------
  414. 58270 SmartHold$ = MID$(STR$(INT((ZTempTimeLock+0.5)/60)),2) ' TL - Time Lock period ' RM02089401
  415.       SmartHold$ = SmartHold$ + ":"+ MID$(STR$((ZTempTimeLock MOD 60)+100),3) ' RM02089401
  416.       RETURN
  417. * REPLACING old line(s) by new
  418. * ------[ first line different ]------
  419. 58293 SmartHold$ = ZSysopFirstName$         ' FS Sysops First Name
  420.       CALL NameCaps(SmartHold$)
  421.       RETURN
  422. * REPLACING old line(s) by new
  423. * ------[ first line different ]------
  424. 58294 SmartHold$ = ZSysopLastName$          ' LS Sysops Last Name    ' RM051701
  425.       CALL NameCaps(SmartHold$)
  426.       RETURN
  427. * REPLACING old line(s) by new
  428. 58295 SmartHold$ = ZConfName$               ' CN Conference Name
  429.       RETURN
  430. * ------[ first line different ]------
  431. * INSERTING new line(s)
  432. 58296 SmartHold$ = ZFG5$                    ' C5 Color 5             ' COLR174
  433.       GOTO 58258                                                     ' COLR174
  434. 58297 SmartHold$ = ZFG6$                    ' C6 Color 6             ' COLR174
  435.       GOTO 58258                                                     ' COLR174
  436. 58298 SmartHold$ = ZFG7$                    ' C7 Color 7             ' COLR174
  437.       GOTO 58258                                                     ' COLR174
  438. 58299 SmartHold$ = ZFG8$                    ' C8 Color 8             ' COLR174
  439.       GOTO 58258                                                     ' COLR174
  440. * REPLACING old line(s) by new
  441. * ------[ first line different ]------
  442. 58300 SmartHold$ = ZFG9$                    ' C9 Color 9             ' DD061303
  443.       GOTO 58258                                                     ' DD061303
  444. * REPLACING old line(s) by new
  445. * ------[ first line different ]------
  446. 58301 SmartHold$ = ZFGA$                    ' CA Color 10            ' DD061303
  447.       GOTO 58258                                                     ' DD061303
  448. * REPLACING old line(s) by new
  449. * ------[ first line different ]------
  450. 58302 SmartHold$ = ZFGB$                    ' CB Color 11            ' DD061303
  451.       GOTO 58258                                                     ' DD061303
  452. * REPLACING old line(s) by new
  453. * ------[ first line different ]------
  454. 58303 SmartHold$ = ZFGC$                    ' CC Color 12            ' DD061303
  455.       GOTO 58258                                                     ' DD061303
  456. * REPLACING old line(s) by new
  457. * ------[ first line different ]------
  458. 58304 SmartHold$ = ZFGD$                    ' CD Color 13            ' DD061303
  459.       GOTO 58258                                                     ' DD061303
  460. * REPLACING old line(s) by new
  461. * ------[ first line different ]------
  462. 58305 SmartHold$ = ZFGE$                    ' CE Color 14            ' DD061303
  463.       GOTO 58258                                                     ' DD061303
  464. * INSERTING new line(s)
  465. 58306 SmartHold$ = ZFGF$                    ' CF Color 15            ' DD061303
  466.       GOTO 58258                                                     ' DD061303
  467. * REPLACING old line(s) by new
  468. * ------[ first line different ]------
  469. 58307 SmartHold$ = ZBG0$                    ' G0 Background Color 1  ' DD081801/BGCOLOR
  470.       GOTO 58258                                                     ' DD081801/BGCOLOR
  471. * INSERTING new line(s)
  472. 58308 SmartHold$ = ZBG1$                    ' G1 Background Color 2  ' DD081801/BGCOLOR
  473.       GOTO 58258                                                     ' DD081801/BGCOLOR
  474. 58309 SmartHold$ = ZBG2$                    ' G2 Background Color 3  ' DD081801/BGCOLOR
  475.       GOTO 58258                                                     ' DD081801/BGCOLOR
  476. 58310 SmartHold$ = ZBG3$                    ' G3 Background Color 4  ' DD081801/BGCOLOR
  477.       GOTO 58258                                                     ' DD081801/BGCOLOR
  478. 58311 SmartHold$ = ZBG4$                    ' G4 Background Color 5  ' DD081801/BGCOLOR
  479.       GOTO 58258                                                     ' DD081801/BGCOLOR
  480. 58312 SmartHold$ = ZBG5$                    ' G5 Background Color 6  ' DD081801/BGCOLOR
  481.       GOTO 58258                                                     ' DD081801/BGCOLOR
  482. 58313 SmartHold$ = ZBG6$                    ' G6 Background Color 7  ' DD081801/BGCOLOR
  483.       GOTO 58258                                                     ' DD081801/BGCOLOR
  484. 58314 SmartHold$ = ZBG7$                    ' G7 Background Color 8  ' DD081801/BGCOLOR
  485.       GOTO 58258                                                     ' DD081801/BGCOLOR
  486. 58315 SmartHold$ = ZDirToSearch$         'FD                         ' DGS011501-DS
  487.       RETURN                                                         ' DGS011501-DS
  488. 58316 SmartHold$ = ZHDR$                 'FH                         ' DGS011501-DS
  489.       RETURN                                                         ' DGS011501-DS
  490. 58317 SmartHold$ = ZCatDesc$             'FC                         ' DGS011501-DS
  491.       RETURN                                                         ' DGS011501-DS
  492. 58318 SmartHold$ = STR$(ZBaudTest!)         ' BA Baud Rate           ' GS021194
  493.       RETURN                                                         ' GS021194
  494. 58319 IF ZOnlyOneTimeLockPerDay AND LEFT$(ZLastDateTimeOnSave$,8) = ZCurDate$ THEN _                     ' RM02089401/RM02099401
  495.          CALL TimeRemain(MinsRemaining) : _ ' LT - Time Lock period elapsed ' RM02089401
  496.          Temp = INT(ZSecsUsedSession!/60) : _                        ' RM02089401
  497.          Temp = Temp + CVI(ZElapsedTime$) : _                        ' RM02089401
  498.          SmartHold$ = MID$(STR$(Temp),2) + ":" + _                   ' RM02089401
  499.          MID$(STR$((ZSecsUsedSession! MOD 60) + 100),3) : _          ' RM02089401
  500.          RETURN _                                                    ' RM02089401
  501.       ELSE _                                                         ' RM02089401
  502.          GOTO 58269                                                  ' RM02089401
  503. 58320 SmartHold$ = STR$(ZGlobalBankTime)    ' BT Banked Time         ' DGS
  504.       RETURN                                                         ' DGS
  505. 58321 SmartHold$ = ZUserXferDefault$        ' TP Transfer Protocol   ' DGS
  506.       RETURN                                                         ' DGS
  507.       END SUB
  508. '
  509. 58350 ' $SUBTITLE: 'BufString - write a string with imbedded ZCR/LF' ' DD
  510. ' $PAGE
  511. '
  512. '  NAME    -- BufString
  513. '
  514. '  INPUTS  -- PARAMETER                      MEANING
  515. '             PassedStrng$           STRING TO BE WRITTEN OUT
  516. '             DataSize               LENGTH OF STRING - # LEFT
  517. '                                        CHARS TO OUTPUT
  518. '
  519. '  OUTPUTS -- PassedStrng$           IS WRITTEN TO THE USER
  520. '
  521. '  PURPOSE -- To search the string, PassedStrng$, for embedded carriage
  522. '             returns and line feeds and write out each line with
  523. '             the appropriate substitution (cr/lf if to the local
  524. '             screen or cr/nulls/lf if to the communications port).
  525. '
  526.       SUB BufString (PassedStrng$,PassedDataSize,AbortIndex) STATIC
  527. 'print "^";passedstrng$;"^"
  528.       WasL = LEN(PassedStrng$)
  529. 'print "passed length=";wasl;" pds=";passeddatasize
  530.       IF PassedDataSize < WasL THEN _
  531.          WasL = PassedDataSize
  532.       IF WasL = 0 THEN _
  533.          EXIT SUB
  534.       Temp = LEN(Hold$)
  535.       IF WasL = -1 THEN _         ' Clear Buffer
  536.          IF Temp < 1 THEN _
  537.             EXIT SUB _
  538.          ELSE WasL = 0
  539.       IF LEN(Strng$) >= WasL+Temp THEN _
  540.          LSET Strng$ = Hold$ : _
  541.          MID$(Strng$,Temp+1) = PassedStrng$ _
  542.       ELSE Strng$ = Hold$ + PassedStrng$
  543. 'if len(hold$) > 0 then print "adding <";hold$;">":input xxx$
  544. 'print "hold len=";temp;" wasl=";wasl
  545.       WasL = WasL + LEN(Hold$)
  546.       Hold$ = ""
  547. '     IF ZDeleteInvalid THEN IF PassedDateSize > 0 THEN _            ' RM02109401
  548. '        CALL FindLast (LEFT$(PassedStrng$,WasL),"[",Temp,ZWasZ) : _
  549. '        IF Temp > 0 THEN _
  550. '           Hold$ = MID$(PassedStrng$,Temp) : _
  551. '           WasL = WasL - LEN(Hold$)
  552.       ZFF = ZPageLength - 1
  553.       StartByte = 1
  554.       ZRet = ZFalse
  555.       IF CarryOver THEN _
  556.          IF ASC(Strng$) = 10 THEN _
  557.             StartByte = 2 : _
  558.             CALL SkipLine (1+ZJumpSearching)
  559.       CarryOver = (MID$(Strng$,WasL,1) = ZCarriageReturn$)
  560.       WasL = WasL + CarryOver
  561. 58351 CRat = INSTR(StartByte,Strng$,ZCarriageReturn$)                ' DD
  562.       IF CRat > 0 AND CRat < WasL THEN _
  563.          CRFound = (MID$(Strng$,CRat + 1,1) = ZLineFeed$) _
  564.       ELSE CRFound = ZFalse
  565.       EOLlen = -2 * CRFound
  566.       IF CRFound THEN _
  567.          EOD = CRat _
  568.       ELSE EOD = WasL + 1
  569.       NumBytes = EOD - StartByte
  570.       StringWork$ = MID$(Strng$,StartByte,NumBytes)
  571.       IF NOT ZDeleteInvalid THEN _
  572.          GOTO 58352                                                  ' DD
  573.       Index = INSTR(StringWork$,"[")
  574.       WasJ = LEN(StringWork$) - 1
  575.       WHILE Index > 0 AND Index < WasJ
  576.          IF MID$(StringWork$,Index + 2,1) = "]" THEN _
  577.             IF INSTR (ZInvalidOpts$,MID$(StringWork$,Index + 1,1)) THEN _
  578.                MID$(StringWork$,Index + 1,1) = "*"
  579.          Index = INSTR(Index + 1,StringWork$,"[")
  580.       WEND
  581. 58352 IF ZJumpSearching THEN _                                       ' DD
  582.          Temp$ = StringWork$ : _
  583.          CALL AllCaps (Temp$) : _
  584.          HiLitePos = INSTR (Temp$,ZJumpTo$) : _
  585.          IF HiLitePos = 0 THEN _
  586.             GOTO 58357 _                                             ' DD
  587.          ELSE CALL Bracket (StringWork$,HiLitePos,HiLitePos+LEN(ZJumpTo$)-1,ZEmphasizeOn$,ZEmphasizeOff$) : _
  588.               ZJumpSearching = ZFalse
  589.       IF ZSmartTextCode THEN _
  590.          CALL SmartText (StringWork$, CRFound, ZFalse)
  591.       IF NOT ZLocalUser THEN _
  592.          CALL EofComm (Char) : _
  593.          IF Char <> -1 THEN _
  594.             GOTO 58353            ' comm port input                  ' DD
  595.       ZKeyboardStack$ = INKEY$ : _
  596.       IF ZKeyboardStack$ <> "" THEN _  ' keyboard input
  597.          GOTO 58353                                                  ' DD
  598.       CALL QuickTPut (StringWork$, - (CRFound))
  599.       GOTO 58354                                                     ' DD
  600. 58353 ZOutTxt$ = StringWork$                                         ' DD
  601.       ZSubParm = 4
  602.       IF CRFound THEN ZSubParm = 5
  603.       CALL TPut
  604. 58354 IF ZRet THEN                                                   ' UG070509/DD
  605.          IF ZFossil THEN                                             ' UG070509
  606.             CALL FosTxPurge(ZComPort)                                ' UG070509
  607.             CALL SkipLine (1)                                        ' UG070509
  608.             CALL QuickTPut (ZEmphasizeOff$,0)                        ' UG070509
  609.          END IF                                                      ' UG070509
  610.          EXIT SUB
  611.       END IF                                                         ' UG070509
  612.       IF ZLinesPrinted < ZFF THEN _
  613.          GOTO 58357                                                  ' DD
  614. 58355 CALL CheckTimeRemain (MinsRemaining)                           ' DD
  615.       CALL CheckCarrier
  616.       IF ZSubParm = -1 THEN _
  617.          EXIT SUB
  618.       IF ZNonStop THEN _
  619.          GOTO 58357                                                  ' DD
  620.       IF NOT CRFound THEN _
  621.          GOTO 58357                                                  ' DD
  622.       ZForceKeyboard = ZTrue
  623.       CALL AskMore ("",ZTrue,ZFalse,AbortIndex,ZStopInterrupts)
  624.       IF ZNo THEN _
  625.          ZRet = ZTrue : _
  626.          EXIT SUB
  627. 58357 StartByte = EOD + EOLlen                                       ' DD
  628.       IF StartByte <= WasL THEN _
  629.          GOTO 58351                                                  ' DD
  630.       END SUB
  631. * REPLACING old line(s) by new
  632. 58400 ' $SUBTITLE: 'BufFile - subroutine to write a sequential file to the user'
  633. ' $PAGE
  634. '
  635. '  NAME    -- BufFile
  636. '
  637. '  INPUTS  -- PARAMETER                      MEANING
  638. '             FileSpec$               NAME OF THE FILE TO WRITE TO
  639. '                                                OUT TO THE USER
  640. '
  641. '  OUTPUTS -- NONE                    FILE IS WRITTEN TO THE USER
  642. '
  643. '  PURPOSE -- To display a sequential file to the user
  644. '
  645.       SUB BufFile (FilName$,AbortIndex) STATIC
  646.       CALL FindIt (FilName$)
  647.       IF NOT ZOK THEN _
  648.          GOTO 58419
  649.       ZNo = ZFalse
  650. * ------[ first line different ]------
  651.       CALL OpenRSeq (FilName$,NumRecs,LenLastRec,ZBufferSize,2)      ' RM01139402
  652.       IF ZErrCode > 0 THEN _
  653.          GOTO 58419
  654.       DataSize = ZBufferSize
  655.       FIELD 2, DataSize AS SeqRec$
  656.       ZNonStop = ZNonStop OR (ZPageLength < 1)
  657.       ZJumpLast$ = ""
  658.       ZJumpSearching = ZFalse
  659.       ZJumpSupported = ZTrue
  660. '     IF NOT ZStopInterrupts THEN _                                  ' RM01289401
  661. '        IF NOT ZConcatFIles THEN _                                  ' RM01289401
  662. '           IF NOT ZNonStop THEN _                                   ' RM01289401
  663. '              ZOutTxt$ = "* Ctrl-K(^K) / ^X aborts. ^S suspends ^Q resumes *" : _ ' RM01289401
  664. '              ZSubParm = 2 : _                                      ' RM01289401
  665. '              CALL TPut                                             ' RM01289401
  666.       WasTU = 0
  667. * INSERTING new line(s)
  668. 58500 ' $SUBTITLE: 'BufFile2 - subroutine to write a sequential file to the user'
  669. ' $PAGE
  670. '
  671. '  NAME    -- BufFile2
  672. '
  673. '  INPUTS  -- PARAMETER                      MEANING
  674. '             FileSpec$               NAME OF THE FILE TO WRITE TO
  675. '                                                OUT TO THE USER
  676. '
  677. '  OUTPUTS -- NONE                    FILE IS WRITTEN TO THE USER
  678. '
  679. '  PURPOSE -- To display a sequential file to the user.  Uses file number
  680. '             generated by system.                                   ' RM03199402
  681. '
  682.       SUB BufFile2 (FilName$,AbortIndex) STATIC                      ' RM03199402
  683.       CALL FindFile (FilName$,ZOK)                                   ' RM03199402
  684.       IF NOT ZOK THEN _
  685.          GOTO 58519
  686.       FilNum = FREEFILE                                              ' RM03199402
  687.       ZNo = ZFalse
  688.       CALL OpenRSeq (FilName$,NumRecs,LenLastRec,ZBufferSize,FilNum) ' RM01139402/RM03199401
  689.       IF ZErrCode > 0 THEN _
  690.          GOTO 58519
  691.       DataSize = ZBufferSize
  692.       FIELD FilNum, DataSize AS SeqRec$                              ' RM03199402
  693.       ZNonStop = ZNonStop OR (ZPageLength < 1)
  694.       ZJumpLast$ = ""
  695.       ZJumpSearching = ZFalse
  696.       ZJumpSupported = ZTrue
  697.       WasTU = 0
  698. 58505 WasTU = WasTU + 1
  699.       IF WasTU < NumRecs THEN _
  700.          GET FilNum,WasTU _                                          ' RM03199402
  701.       ELSE IF WasTU = NumRecs THEN _
  702.               GET FilNum,WasTU : _                                   ' RM03199402
  703.               WasX = INSTR(SeqRec$,CHR$(26)) : _
  704.               IF WasX = 0 OR WasX > LenLastRec THEN _
  705.                  DataSize = LenLastRec _
  706.               ELSE DataSize = WasX - 1 _
  707.            ELSE GOTO 58519
  708.       CALL BufString (SeqRec$,DataSize,AbortIndex)
  709. 58508 IF ZSubParm <> -1 AND NOT ZRet THEN _
  710.          GOTO 58505
  711. 58519 CLOSE FilNum                                                   ' RM03199402
  712.       CALL BufString ("",-1,AbortIndex)
  713.       ZBypassTimeCheck = ZFalse
  714.       ZStopInterrupts = ZFalse
  715.       CALL QuickTPut (ZEmphasizeOff$,0)
  716.       ZJumpSupported = ZFalse
  717.       END SUB
  718. * REPLACING old line(s) by new
  719. 58600 ' $SUBTITLE: 'FindLast - find last occurence of a string'
  720. ' $PAGE
  721. '
  722. '  NAME    -- FindLast
  723. '
  724. '  INPUTS  -- PARAMETER             MEANING
  725. '              LookIn$           STRING TO LOOK INTO
  726. '              LookFor$          STRING TO SEARCH FOR
  727. '
  728. '  OUTPUTS -- WhereFound        POSITION IN LookIn$ THAT
  729. '                                   LookFor$ Found
  730. '             NumFinds          HOW MANY OCCURENCES IN LookIn$
  731. '
  732. '  PURPOSE -- Finds last occurence of LookFor$ in LookIn$ and
  733. '             returns count of # of occurences.  If none found,
  734. '             both returned parameters are set to 0.
  735. '
  736. * ------[ first line different ]------
  737.       SUB FindLast (LookIn$,LookFor$,WhereFound,NumFinds)            ' RM11159302
  738.       WhereFound = INSTR(LookIn$,LookFor$)
  739.       NumFinds = -(WhereFound > 0)
  740.       NextFound = INSTR(WhereFound + 1,LookIn$,LookFor$)
  741.       WHILE NextFound > 0
  742.          NumFinds = NumFinds + 1
  743.          WhereFound = NextFound
  744.          NextFound = INSTR(WhereFound + 1,LookIn$,LookFor$)
  745.       WEND
  746.       END SUB
  747. * REPLACING old line(s) by new
  748. 58700 ' $SUBTITLE: 'RotorsDir - search thru a list of subdirs for a file'
  749. ' $PAGE
  750. '
  751. '  NAME    -- RotorsDir
  752. '
  753. '  INPUTS  --     PARAMETER                    MEANING
  754. '             FilName$                  FILE NAME TO LOOK FOR
  755. '             SDIR.ARA                  ARRAY OF SUBDIRECTORIES
  756. '             MaxSearch                 MAX # OF SUBDIRECTORIES
  757. '             MarkingTime               WHETHER TO MARK TIME
  758. '
  759. '  OUTPUTS -- FNAME$                    ADD SUBDIRECTORY TO THE
  760. '                                       FILE NAME IF FOUND.  OTHER-
  761. '                                       WISE DON'T.
  762. '             ZOK                       TRUE IF FILE WAS Found
  763. '
  764. '  PURPOSE -- Hunt through a list of subdirectories to determine
  765. '             if a file is in any of them.  If file is found, open
  766. '             the file as file #2, add the drive/path to the file
  767. '             name, and sets ZOK to true.  If file isn't found, set
  768. '             file name to the last subdirectory searched -- which
  769. '             should be the upload subdirectory.
  770. '
  771. '             If the library menu is selected (ZMenuIndex = 6), then
  772. '             only 2 subdirectories are searched. The first being
  773. '             the work disk and the second being the selected
  774. '             library disk.
  775. '
  776.       SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC
  777. * ------[ first line different ]------
  778.       FilNum = FREEFILE                                              ' RM01229401
  779.       ZOK = ZFalse
  780.       ZDotFlag = ZFalse
  781.       IF ZMenuIndex = 6 AND ZCDRom AND ZUseCDWorkDrive THEN          ' RM04099401
  782.          NoticeSent = ZFalse                                         ' RM04099401
  783.          X = 1                                                       ' RM04099401
  784.          WasX = 0                                                    ' RM04099401
  785. 58701    CALL FindFile ("CDWORK" + ZLibDrive$ + ".WRK",Found)        ' RM04099401
  786.          IF Found THEN                                               ' RM04099401
  787.             CALL Carrier                                             ' RM04099401
  788.             IF ZSubParm = -1 THEN _                                  ' RM04099401
  789.                EXIT SUB                                              ' RM04099401
  790.             IF NOT NoticeSent THEN _                                 ' RM04099401
  791.                CALL QuickTPut (ZFG1$ + "CD ROM Drive is busy...please wait" + _
  792.                                  ZEmphasizeOff$,0) : _               ' RM04099401
  793.                NoticeSent = ZTrue                                    ' RM04099401
  794.             CALL Delaytime (1)                                       ' RM04099401
  795.             CALL MarkTime (WasX)                                     ' RM04099401
  796.             X = X + 1                                                ' RM04099401
  797.             IF X = 30 THEN _          ' Allow 30 seconds for clear   ' RM04099401
  798.                CALL SkipLine (1) : _                                 ' RM04099401
  799.                CALL QuickTPut1 (ZEmphasizeOn$ + "File " + FilName$ + _
  800.                                 " currently unavailable...please try again!" + _
  801.                                  ZEmphasizeOff$) : _                 ' RM04099401
  802.                ZDotFlag = ZTrue : _                                  ' RM04099401
  803.                GOTO 58710                                            ' RM04099401
  804.             GOTO 58701                                               ' RM04099401
  805.          END IF                                                      ' RM04099401
  806.       END IF                                                         ' RM04099401
  807.       IF MarkingTime THEN _
  808.          CALL QuickTPut (ZFG5$ + "Searching for " + ZFG7$ + FilName$ + ZEmphasizeOff$,0) ' RM051801
  809.       IF ZMenuIndex = 6 AND NOT ZCDRom THEN _                        ' RM03259401
  810.          GOTO 58705
  811.       NumSearch = 1
  812.       WasX = 0
  813.       WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _
  814.          SDirAra$(NumSearch) <> ""
  815.          IF MarkingTime THEN _
  816.             CALL MarkTime (WasX)
  817.          WasX$ = SDirAra$(NumSearch) + _
  818.               FilName$
  819.          CALL FindFile (WasX$,ZOK)
  820.          NumSearch = NumSearch + 1
  821.       WEND
  822.       IF ZOK OR NOT ZFastFileSearch THEN _
  823.          GOTO 58710
  824.       FSize = 21                                                     ' Mpl
  825.       CALL OpenRSeq (ZFastFileList$,HighRec&,WasX,FSize,FilNum)      ' LRGE174/YB102001/WM050501/RM01139402/RM01229401
  826.       FIELD FilNum, 12 AS SearchFile$, _                             ' WM050501/RM01229401
  827.                  4 AS SearchPath$, _                                 ' WM050501
  828.                  3 AS SearchDate$, _                                 ' WM050501
  829.                  2 AS SearchCrLf$                                    ' WM050501
  830.       GET FilNum,1                                                   ' Mpl/RM01229401
  831.       IF SearchCrLf$ <> ZCrLf$ THEN _                                ' Mpl
  832.          CLOSE FilNum : _                                            ' RM10309301/RM01229401
  833.          FSize = 18 : _                                              ' Mpl
  834.          CALL OpenRSeq (ZFastFileList$,HighRec&,WasX,FSize,FilNum)   ' RM10309301/RM01139402/RM01229401
  835.       IF ZErrCode <> 0 THEN _
  836.          GOTO 58710
  837.       CALL TrimTrail (FilName$,".")
  838.       CALL BinSearch (FilName$,1,12,FSize,HighRec&,RecFoundAt&,RecFound$,FilNum) ' LRGE174/YB102001/WM050501/RM10309301/RM01229401
  839.       ZOK = (RecFoundAt& > 0)                                        ' LRGE174/YB102001
  840.       IF NOT ZOK THEN _
  841.          GOTO 58710
  842.       ZOK = ZFalse
  843.       CALL CheckInt (MID$(RecFound$,13,4))
  844.       IF ZTestedIntValue < 1 THEN _
  845.          GOTO 58710
  846.       Temp$ = WasX$                                                  ' RM03219401
  847.       IF FSize = 21 THEN                                             ' RM03279401
  848.          WasX$ = DATE$                                               ' WM050501
  849.          LSET SearchDate$ = CHR$ (VAL (MID$ (WasX$, 9, 2)) - 48) + _ ' WM050501
  850.                             CHR$ (VAL (MID$ (WasX$, 1, 2)) + 31) + _ ' WM050501
  851.                             CHR$ (VAL (MID$ (WasX$, 4, 2)) + 31)     ' WM050501
  852.          PUT FilNum, RecFoundAt&                                     ' WM050501/RM01229401
  853.       END IF                                                         ' RM03279401
  854.       CLOSE FilNum                                                   ' RM01229401
  855.       CALL OpenRSeq (ZFastFileLocator$,HighRec&,WasX,66,FilNum)      ' LRGE174/YB102001/RM01139402/RM01229401
  856.       IF ZErrCode <> 0 OR ZTestedIntValue > HighRec& THEN _          ' LRGE174/YB102001
  857.          GOTO 58710
  858.       FIELD FilNum, 66 AS LocatorRec$                                ' RM01229401
  859.       GET FilNum, ZTestedIntValue                                    ' RM01229401
  860.       WasX$ = LEFT$(LocatorRec$,63)
  861.       CALL Trim (WasX$)
  862.       IF LEFT$(WasX$,2) = "M!" THEN                                  ' RM03279401
  863.          IF ZFoundExtra THEN                                         ' BTCH174/RM111201
  864.             ZOK = ZTrue                                              ' BTCH174/RM111201
  865.             GOTO 58710                                               ' BTCH174/RM111201
  866.          ELSE                                                        ' BTCH174/RM111201
  867.             ZOK = ZFalse
  868.             ZGSRAra$(1) = PassToMacro$
  869.             WasX$ = RIGHT$(WasX$,LEN(WasX$)-2)
  870.             CALL Trim (WasX$)
  871.             ZFileLocation$ = ""
  872.             CALL MacroExe (WasX$)
  873.             IF ZFileLocation$ = "" THEN
  874.                ZOK = ZFalse
  875.                WasX$ = Temp$
  876.                GOTO 58710
  877.             ELSE
  878.                WasX$ = ZFileLocation$
  879.             END IF                                                   ' RM03279401
  880.          END IF                                                      ' RM03279401
  881.       END IF                                                         ' RM03279401
  882.       WasX$ = WasX$ + FilName$
  883.       CALL FindFile (WasX$,ZOK)
  884.       IF NOT ZOK THEN _
  885.          WasX$ = SDirAra$(MaxSearch) + FilName$
  886.       GOTO 58710
  887. * REPLACING old line(s) by new
  888. 58711 CALL SkipLine (-MarkingTime)
  889. * ------[ first line different ]------
  890.       CLOSE FilNum                                                   ' RM01229401
  891.       END SUB
  892. * REPLACING old line(s) by new
  893. 58800 ' $SUBTITLE: 'WipeLine - Wipe away a line so next overprints'
  894. ' $PAGE
  895. '
  896. '  NAME    -- WipeLine
  897. '
  898. '  INPUTS  --     PARAMETER                    MEANING
  899. '                 ZCarriageReturn$
  900. '                 CharsToWipe            # OF CHARACTERS TO BLANK
  901. '                 ZNulls
  902. '
  903. '  OUTPUTS -- NONE
  904. '
  905. '  PURPOSE -- Wipe away a line and leave cursor at beginning of the
  906. '             same line so that the next line will print in its place
  907. '
  908. * ------[ first line different ]------
  909.       SUB WipeLine (CharsToWipe)                                     ' RM11159302
  910.       IF ZNulls OR CharsToWipe > 79 THEN _
  911.          CALL SkipLine (1) : _
  912.          EXIT SUB
  913.       IF NOT ZLocalUser THEN _
  914.          Strng$ = ZCarriageReturn$ + SPACE$(CharsToWipe) + ZCarriageReturn$ : _
  915.          CALL PutCom (Strng$)
  916.       IF ZSnoop THEN _
  917.          LOCATE ,1 :  _
  918.          CALL LPrnt(SPACE$(CharsToWipe),0) : _
  919.          LOCATE ,1
  920.       IF ZF7Msg$ = "" OR _
  921.          ZF7Msg$ = "NONE" OR _
  922.          NOT ZSysopNext THEN _
  923.          EXIT SUB
  924.       ZBypassTimeCheck = ZTrue
  925.       CALL BufFile (ZF7Msg$,WasX)
  926.       END SUB
  927. * REPLACING old line(s) by new
  928. 58950 ' $SUBTITLE: 'ConvertDir -- Converts coded response to right directory'
  929. ' $PAGE
  930. '
  931. '  NAME    -- ConvertDir
  932. '
  933. '  INPUTS  --     PARAMETER                    MEANING
  934. '                 Start               ELEMENT TO BEGIN WITH
  935. '                 ZUserIn$            ARRAY TO CONVERT
  936. '                 ZWasQ               Last ELEMENT TO CONVERT
  937. '
  938. '  OUTPUTS --     ZUserIn$            CONVERTED DIRECTORY LIST
  939. '
  940. '  PURPOSE -- Let the user put in a short standard string for a directory
  941. '
  942. '
  943. * ------[ first line different ]------
  944.       SUB ConvertDir (Start)                                         ' RM11159302
  945.       FOR WasI=Start TO ZLastIndex
  946.          CALL AraAllCaps (ZUserIn$(),WasI)
  947.          IF ZUserIn$(WasI)="U" THEN _
  948.             ZUserIn$(WasI) = ZUpldDirCheck$
  949.          IF ZUserIn$(WasI) = "A" THEN _
  950.             ZUserIn$(WasI) = "ALL"
  951.       NEXT
  952.       END SUB
  953. * REPLACING old line(s) by new
  954. 59100 ' $SUBTITLE: 'Muzak - subroutine to PLAY ZMusic'
  955. ' $PAGE
  956. '
  957. '  NAME    -- Muzak
  958. '
  959. '  INPUTS  --   PARAMETER     MEANING
  960. '                       1   PLAY CONSIDER YOURSELF(OPENING SCREEN)
  961. '                       2   PLAY WALK RIGHT IN(NEW USERS)
  962. '                       3   PLAY DRAGNET (SECURITY VIOLATION)
  963. '                       4   PLAY GOODBYE CHARLIE (GOODBYE)
  964. '                       5   PLAY TAPS (ACCESS DENIED)
  965. '                       6   PLAY OOM PAH PAH (DOWNLOAD)
  966. '                       7   PLAY THNKS FOR MEMORIES(UPLOAD)
  967. '
  968. '  OUTPUTS -- NONE
  969. '
  970. '  PURPOSE -- Provide sysops and the visually impaired with
  971. '             auditory feedback on what RBBS-PC is doing
  972. '
  973. * ------[ first line different ]------
  974.       SUB Muzak (PassedArg)                                          ' RM11159302
  975.       ZFF = PassedArg
  976.       ZSubParm = 0
  977.       IF (NOT ZSnoop) OR (NOT ZMusic) OR ZLocalUserMode THEN _
  978.          EXIT SUB
  979.       ON ZFF GOTO 59102,59104,59106,59108,59110,59112,59114
  980.       EXIT SUB
  981. * REPLACING old line(s) by new
  982. 59200 ' $SUBTITLE: 'TwoByteDate -- subroutine to put date in 2 bytes'
  983. ' $PAGE
  984. '
  985. '  NAME    -- TwoByteDate
  986. '
  987. '  INPUTS  --   PARAMETER     MEANING
  988. * ------[ first line different ]------
  989. '                  TYear      FOUR DIGIT YEAR (I.E. 1987)            ' MSVB/RM041101
  990. '                  WasMM      MONTH
  991. '                  WasDD      DAY
  992. '                Result$      LOCATION TO PLACE THE Result
  993. '
  994. '  OUTPUTS -- Result$       TWO BYTE COMPRESSED DATE FOR USE IN
  995. '                           A RANDOM RECORD
  996. '
  997. '  PURPOSE -- Compress a WasY,ZMsgPtr,WasD date into two characters
  998. '
  999.       SUB TwoByteDate (TYear,WasMM,WasDD,Result$)                    ' MSVB/RM041101/RM11159302
  1000.       Result$ = CHR$(((TYear - 1980) * 2) OR - ((WasMM AND 8) <> 0)) + _ ' MSVB/RM041101
  1001.                 CHR$((WasMM AND NOT 8) * 32 + WasDD)
  1002.       END SUB
  1003. * REPLACING old line(s) by new
  1004. 59201 ' $SUBTITLE: 'PackDate -- subroutine to Compress STRING DATE'
  1005. ' $PAGE
  1006. '
  1007. '  NAME    -- PackDate
  1008. '
  1009. '  INPUTS  --   PARAMETER     MEANING
  1010. '                 Strng$    String Date (mm-dd-yyyy)
  1011. '
  1012. '  OUTPUTS --    Result$    TWO BYTE COMPRESSED DATE FOR USE IN
  1013. '                                      A RANDOM RECORD
  1014. '
  1015. '  PURPOSE -- Compress an 8-character date into two characters
  1016. '
  1017. * ------[ first line different ]------
  1018.       SUB PackDate (Strng$,Result$)                                  ' RM11159302
  1019.       IF LEN(Strng$) < 8 THEN _
  1020.          EXIT SUB
  1021.       TYear = VAL(MID$(Strng$,7))                                    ' MSVB/RM041101
  1022.       WasMM = VAL(Strng$)
  1023.       WasDD = VAL(MID$(Strng$,4))
  1024.       CALL TwoByteDate (TYear,WasMM,WasDD,Result$)                   ' MSVB/RM041101
  1025.       END SUB
  1026. * REPLACING old line(s) by new
  1027. 59202 ' $SUBTITLE: 'UnPackDate -- subroutine to UNCompress DATE'
  1028. ' $PAGE
  1029. '
  1030. '  NAME    -- UnPackDate
  1031. '
  1032. '  INPUTS  --   PARAMETER      MEANING
  1033. '             CompressedDate$ Date in 2 byte compressed form
  1034. '
  1035. * ------[ first line different ]------
  1036. '  OUTPUTS --     TYear          Year of compressed date             ' MSVB/RM041101
  1037. '                 WasMM          Month of compressed date
  1038. '                 WasDD          Day of compressed date
  1039. '             DisplayDate$       8 char display date (mm-dd-yyyy)
  1040. '
  1041. '  PURPOSE -- Uncompress a 2 char date to get Y,M,D & display
  1042. '
  1043.       SUB UnPackDate (CompressedDate$,TYear,WasMM,WasDD,DisplayDate$) ' MSVB/RM041101/RM11159302
  1044.       CALL GetYMD (CompressedDate$,1,TYear)                          ' MSVB/RM041101
  1045.       CALL GetYMD (CompressedDate$,2,WasMM)
  1046.       CALL GetYMD (CompressedDate$,3,WasDD)
  1047.       DisplayDate$ = RIGHT$("00" + MID$(STR$(WasMM),2),2) + _
  1048.                       "-" + _
  1049.                       RIGHT$("00" + MID$(STR$(WasDD),2),2) + _
  1050.                       "-" + _
  1051.                       RIGHT$(STR$(TYear),2)                          ' MSVB/RM041101
  1052.       END SUB
  1053. * REPLACING old line(s) by new
  1054. 59204 ' $SUBTITLE: 'GetYMD -- subroutine to unpack a two-byte date'
  1055. ' $PAGE
  1056. '
  1057. '  NAME    -- GetYMD
  1058. '
  1059. '  INPUTS  --   PARAMETER     MEANING
  1060. '                 TwoByte$    PACKED TWO-BYTE DATE FIELD
  1061. '                   YMD       1 = YEAR
  1062. '                             2 = MONTH
  1063. '                             3 = DAY
  1064. '                 Result      LOCATION TO PLACE THE Result
  1065. '
  1066. '  OUTPUTS -- Result        FOUR DIGIT Result OF UNPAKING THE DATE
  1067. '
  1068. '  PURPOSE -- Unpack a compressed two-byte date field
  1069. '
  1070. * ------[ first line different ]------
  1071.       SUB GetYMD (TwoByte$,YMD,Result)                               ' RM11159302
  1072.       ON YMD GOTO 59206,59210,59215
  1073.       EXIT SUB
  1074. * INSERTING new line(s)
  1075. 59300 ' $SUBTITLE: 'PersFile - processes requests for personal files'
  1076. ' $PAGE
  1077. '
  1078. '  NAME    -- PersFile
  1079. '
  1080. '  INPUTS  --     PARAMETER           MEANING
  1081. '                 PersonalCat$     CATEGORY IN DIR FOR CALLER
  1082. '                 ZPersonalLen      # CHARS IN PERSONAL CATEGORY
  1083. '  OUTPUTS -- NONE UP ZDnlds
  1084. '
  1085. '  PURPOSE -- Show caller what personal files have for downloading,
  1086. '             verify and process requests for downloads
  1087. '
  1088.       SUB PersFile (PersonalCat$,DnldFlag) STATIC
  1089.       CALL FindIt (ZPersonalDir$)
  1090. 59302 IF NOT ZOK THEN _
  1091.          CALL QuickTPut1 (ZEmphasizeOn$ + "No personal files available" +_
  1092.                           ZEmphasizeOff$) : _                        ' RM01179401
  1093.          ZLastIndex = 0 : _
  1094.          EXIT SUB
  1095.       CALL Line25                                                    ' RM01199401
  1096.       GOSUB 59338
  1097.       IF LOF(2) < WasL THEN _
  1098.         ZOK = ZFalse : _
  1099.         GOTO 59302
  1100.       ZUserIn$(0) = ""
  1101.       MaxPrint = ZPageLength - 1
  1102.       ZNonStop = ZNonStop OR (ZPageLength < 1)
  1103.       ZStopInterrupts = ZFalse
  1104.       IF Downloading THEN _
  1105.          Downloading = ZFalse : _
  1106.          PersIndex = DnldFlag : _
  1107.          DnldFlag = 0 : _
  1108.          WasL = ZTrue : _                                            ' RM02049406
  1109.          GOTO 59306
  1110.       GOTO 59305                                                     ' RM01179401
  1111. 59303 CALL QuickTPut (ZEmphasizeOff$,0)
  1112.       CALL Line25                                                    ' RM01179401
  1113.       ZOutTxt$ = "End list. " + "(" + LEFT$("L)ist",-4 * (NOT ZExpertUser) + 1) + LEFT$(",V)iew",-4 * (NOT ZExpertUser) + 2) + _ ' RM02219401
  1114.                  LEFT$(",M)ark",-4 * (NOT ZExpertUser) + 2) + LEFT$(",D)nld file(s)",-12 * (NOT ZExpertUser) + 2) + _
  1115.                  ",* = new)" + ZPressEnterExpert$                   ' RM01179401/RM01189401/RM01199401/RM02189401
  1116.       ZMacroMin = 99
  1117.       ZLastIndex = 1                                                 ' RM03169401
  1118.       ZStackC = ZTrue
  1119.       ZTurboKey = -ZTurboKeyUser                                     ' DS02119401
  1120.       CALL PopCmdStack
  1121.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  1122.          GOTO 59335                                                  ' RM01199401
  1123. 59304 CALL AllCaps (ZUserIn$(ZAnsIndex))                             ' RM01199401
  1124.       ON INSTR("LDMV*",ZUserIn$(ZAnsIndex)) GOTO 59342,59330,59326,59350,59327 ' RM01179401/RM01189401/RM01199401/RM01279401
  1125.       GOTO 59303
  1126. 59305 PersIndex = PersIndex + ZUpInc                                 ' RM01229401
  1127.       WasL = ZFalse
  1128. 59306 IF PersIndex < 1 OR PersIndex > LastRec THEN _                 ' RM01229401
  1129.          IF WasL THEN _
  1130.             GOTO 59303 _
  1131.          ELSE _
  1132.             CALL QuickTPut1 (ZFG5$ + "No Files For You" + ZEmphasizeOff$) : _ ' RM01179401/RM02179401
  1133.             GOTO 59303
  1134.       GET #2,PersIndex
  1135.       PersIndex = PersIndex + ZUpInc                                 ' RM01229401
  1136.       IF INSTR(PartToPrint$,"\FMS") > 0 THEN _                       ' RM01229401
  1137.          GOTO 59306                                                  ' RM01229401
  1138.       IF ASC(PrivateCat$) = 32 THEN _
  1139.          IF ZUserSecLevel < VAL(PrivateCat$) THEN _
  1140.             GOTO 59306 _
  1141.          ELSE GOTO 59308
  1142.       IF INSTR(PrivateCat$,PersonalCat$) = 0 AND NOT ZSysOp THEN _   ' RM02059401
  1143.          GOTO 59306                                                  ' RM02059401
  1144. 59308 WasL = ZTrue
  1145. 59320 ZOutTxt$ = PartToPrint$
  1146.       IF PersonalStatus$ = "*" AND LEFT$(ZOutTxt$,1) <> " " THEN _
  1147.          MID$(ZOutTxt$, INSTR(ZOutTxt$," ")) = "*"
  1148.       CALL TrimTrail (ZOutTxt$," ")                                  ' RM01179401
  1149.       CALL ColorDir (ZOutTxt$,"Y")
  1150.       IF ZLocalUser THEN _
  1151.          GOTO 59322
  1152.       CALL EofComm (Char)
  1153.       IF Char <> -1 THEN _
  1154.          GOTO 59323            ' comm port input
  1155. 59322 ZKeyboardStack$ = INKEY$
  1156. 59323 ZSubParm = 5
  1157.       CALL TPut
  1158.       IF ZRet THEN _
  1159.          GOTO 59303
  1160.       IF ZSubParm = -1 THEN _
  1161.          GOTO 59335
  1162. 59324 IF ZLinesPrinted <= MaxPrint THEN _
  1163.          GOTO 59306
  1164.       CALL TimeRemain (MinsRemaining)
  1165.       IF MinsRemaining <= 0 THEN _
  1166.          ZSubParm = -1 : _
  1167.          GOTO 59335
  1168.       CALL Carrier
  1169.       IF ZSubParm = -1 THEN _
  1170.          GOTO 59335
  1171.       IF ZNonStop THEN _
  1172.          GOTO 59306
  1173. 59325 IF PersIndex > 0 THEN _
  1174.          ExtraPrompt$ = LEFT$(",V)iew",-4 * (NOT ZExpertUser) + 2) + LEFT$(",M)ark",-4 * (NOT ZExpertUser) + 2) + _
  1175.               LEFT$(",D)nld",-4 * (NOT ZExpertUser) + 2) + LEFT$(",* = New",-6 * (NOT ZExpertUser) + 2) : _ ' RM01179401/RM01189401/RM02049401/RM02189401
  1176.       ELSE GOTO 59303
  1177.       ZStackC = ZTrue
  1178.       ZTurboKey = -ZTurboKeyUser                                     ' DS02119401
  1179.       CALL AskMore (ExtraPrompt$,ZTrue,ZFalse,AbortIndex,ZFalse)     ' RM01179401
  1180.       IF ZSubParm = -1 THEN _
  1181.          GOTO 59335 _                                                ' RM01239401
  1182.       ELSE _                                                         ' RM01239401
  1183.          ZLastIndex = ZWasQ : _                                      ' RM01239401
  1184.          IF NOT ZNo THEN _                                           ' RM01239401
  1185.             ZAnsIndex = 1                                            ' RM01239401
  1186.       ZNonStop = (ZNonStop OR INSTR(" Cc",ZUserIn$) > 1)
  1187.       IF (PersIndex < 1 OR PersIndex > LastRec) AND ZWasQ = 0 THEN _ ' RM01229401
  1188.          GOTO 59335
  1189.       CALL WipeLine (78)
  1190.       IF ZNo THEN _
  1191.          ZLastIndex = 0 : _                                          ' RM01239401
  1192.          GOTO 59303
  1193.       IF ZUserIn$(1) = "*" THEN _                                    ' RM02049401
  1194.          GOTO 59327                                                  ' RM02049401
  1195.       CALL AllCaps (ZUserIn$(1))                                     ' RM01179401
  1196.       IF ZUserIn$(1) = "V" THEN _                                    ' RM01179401
  1197.          GOTO 59350                                                  ' RM01179401
  1198.       IF ZUserIn$(1) = "M" THEN _                                    ' RM01199401
  1199.          GOTO 59326                                                  ' RM01199401
  1200.       IF ZUserIn$(1) = "D" THEN _                                    ' RM01189401
  1201.          GOTO 59330                                                  ' RM01189401
  1202.       ZLastIndex = 0                                                 ' RM01189401
  1203.       GOTO 59306
  1204. 59326 Temp$ = ZUserIn$(1)                                            ' RM01199401
  1205.       IsMarking = ZTrue                                              ' RM01209401
  1206.       GOSUB 59345                                                    ' RM01199401
  1207.       IF ZFileSysParm = 4 THEN _                                     ' RM01209401
  1208.          GOTO 59335                                                  ' RM01209401
  1209.       GOTO 59306                                                     ' RM01199401/RM01239401
  1210. 59327 GOSUB 59340                ' handle new files                  ' RM02049405
  1211.       ZLastIndex = 0
  1212.       WHILE PersIndex > 0 AND ZLastIndex < UBOUND(ZUserIn$)
  1213.          GET 2,PersIndex
  1214.          IF PersonalCat$ <> PrivateCat$ THEN _
  1215.             GOTO 59329
  1216.          IF PersonalStatus$ <> "*" THEN _
  1217.             GOTO 59329
  1218.          ZLastIndex = ZLastIndex + 1
  1219.          WasI = ZLastIndex
  1220.          GOSUB 59336
  1221.          IF ZOK THEN _
  1222.             WasX$ = MID$(STR$(PersIndex),2) : _
  1223.             ZUserIn$(0) = ZUserIn$(0) + _
  1224.                     WasX$ + _
  1225.                     SPACE$(5 - LEN(WasX$)) _
  1226.          ELSE ZLastIndex = ZLastIndex - 1
  1227. 59329    PersIndex = PersIndex - 1
  1228.       WEND
  1229.       IF ZLastIndex = 0 THEN _
  1230.          ZOutTxt$ = ZEmphasizeOn$ + "No new files for you" + ZEmphasizeOff$ : _ ' RM01179401
  1231.          CALL QuickTPut1 (ZOutTxt$) : _
  1232.          GOTO 59303
  1233.       ZAnsIndex = 1
  1234.       GOTO 59332
  1235. 59330 Temp$ = "D"                                                    ' RM01189401
  1236.       IsMarking = ZFalse                                             ' RM01209401
  1237.       GOSUB 59345                                                    ' RM01199401
  1238.       IF ZFileSysParm = 4 THEN _                                     ' RM01209401
  1239.          GOTO 59335                                                  ' RM01209401
  1240.       IF ZWasQ = 0 THEN _                                            ' RM01189401
  1241.          GOTO 59306                                                  ' RM01189401
  1242.       CALL AllCaps (ZUserIn$(ZAnsIndex))                             ' RM01189401
  1243.       IF ZUserIn$(ZAnsIndex) = "M" THEN _                            ' RM01199401
  1244.          ZWasZ$ = ZUserIn$(ZAnsIndex) : _                            ' RM01199401
  1245.          CALL UnMarkItems (PrivMarkedFiles$,ZAnsIndex,ZLastIndex,FoundMarked,ZTrue) ' RM01199401
  1246.       SelectedProtocol$ = ""                                         ' RM01199401
  1247.        IF ZLastIndex > 1 THEN _                                      ' RM01199401
  1248.           IF LEN(ZUserIn$(ZLastIndex)) = 1 THEN _                    ' RM01199401
  1249.              SelectedProtocol$ = ZUserIn$(ZLastIndex) : _            ' RM01199401
  1250.              CALL AllCaps (SelectedProtocol$) : _                    ' RM01199401
  1251.              IF INSTR(ZDefaultXfer$,SelectedProtocol$) = 0 THEN _    ' RM01199401
  1252.                 SelectedProtocol$ = "" _                             ' RM01199401
  1253.              ELSE ZLastIndex = ZLastIndex - 1                        ' RM01199401
  1254.       WasI = ZAnsIndex              ' handle list of files           ' RM01189401
  1255.       WHILE WasI <= ZLastIndex
  1256.          ZOK = ZFalse
  1257.          WasJ = LastRec + 1
  1258.          CALL AllCaps (ZUserIn$(WasI))
  1259.          WasX = INSTR(ZUserIn$(WasI),".")
  1260.          IF WasX = 0 THEN _
  1261.             ZUserIn$(WasI) = ZUserIn$(WasI) + "." + ZDefaultExtension$ _
  1262.          ELSE IF WasX = LEN(ZUserIn$(WasI)) THEN _
  1263.                  ZUserIn$(WasI) = LEFT$(ZUserIn$(WasI),WasX-1)
  1264.          WHILE WasJ > 1 AND NOT ZOK
  1265.             WasJ = WasJ - 1
  1266.             GET #2,WasJ
  1267.             IF (PersonalCat$ = PrivateCat$ OR ZSysop OR _            ' RM01179401
  1268.                (ASC(PrivateCat$) = 32 AND _
  1269.                 ZUserSecLevel => VAL(PrivateCat$))) THEN _
  1270.                 MID$(PartToPrint$,13,1) = " " : _
  1271.                    ZOK = (ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1))
  1272.          WEND
  1273.          IF ZOK THEN _
  1274.             GOSUB 59336 : _
  1275.             IF ZOK THEN _
  1276.                WasX$ = MID$(STR$(WasJ),2) : _
  1277.                ZUserIn$(0) = ZUserIn$(0) + _
  1278.                        WasX$ + _
  1279.                        SPACE$(5 - LEN(WasX$))
  1280.          IF NOT ZOK THEN _
  1281.             CALL QuickTPut1 (ZFG7$ + ZUserIn$(WasI) + ZFG5$ + " not found - omitted" + _ ' RM01199401
  1282.                              ZEmphasizeOff$) : _                     ' RM01179401
  1283.             FOR WasK = WasI + 1 TO ZLastIndex : _
  1284.                ZUserIn$(WasK - 1) = ZUserIn$(WasK) : _
  1285.             NEXT : _
  1286.             ZLastIndex = ZLastIndex - 1 : _
  1287.             WasI = WasI - 1
  1288.          WasI = WasI + 1
  1289.       WEND
  1290.       IF ZLastIndex = 0 THEN _
  1291.          GOTO 59306                                                  ' RM01199401
  1292. 59332 DnldFlag = PersIndex          ' set protocol
  1293.       Downloading = ZTrue
  1294.       ZWasB = 1
  1295.       IF SelectedProtocol$ = "" THEN _
  1296.          IF ZPersonalProtocol$ <> " " THEN _
  1297.             SelectedProtocol$ = ZPersonalProtocol$
  1298.       IF SelectedProtocol$ <> "" THEN _
  1299.          ZLastIndex = ZLastIndex + 1 : _
  1300.          ZUserIn$(ZLastIndex) = SelectedProtocol$
  1301.       EXIT SUB
  1302. 59335 CLOSE 2
  1303.       ZLastIndex = 0                                                 ' RM01199401
  1304.       PrivMarkedFiles$ = ""                                          ' RM01199401
  1305.       EXIT SUB
  1306. 59336 ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1)
  1307.       CALL FindFile (ZPersonalDrvPath$ + ZUserIn$(WasI),ZOK)
  1308.       IF ZOK THEN _
  1309.          ZUserIn$(WasI) = ZPersonalDrvPath$ + ZUserIn$(WasI) _
  1310.       ELSE _                                                         ' RM01199401
  1311.          CALL RotorsDir (ZUserIn$(WasI),ZSubDir$(),ZSubDirCount + _
  1312.                          ((ZUserSecLevel < ZMinSecToView) OR _
  1313.                           NOT ZCanDnldFromUp),ZTrue,"D")
  1314.       RETURN
  1315. 59338 CLOSE 2
  1316.       CALL OpenFMS (LastRec,ZPersonalLen)                            ' RM01179401
  1317.       FIELD #2,33 + ZMaxDescLen AS PartToPrint$, _
  1318.                ZPersonalLen    AS PrivateCat$, _
  1319.                1               AS PersonalStatus$, _
  1320.                2               AS Filler$
  1321. 59340 IF ZUpInc = -1 THEN _                                          ' RM01229401
  1322.          PersIndex = LastRec + 1 _                                   ' RM01229401
  1323.       ELSE _                                                         ' RM01229401
  1324.          PersIndex = 0                                               ' RM01229401
  1325.       RETURN
  1326. 59342 GOSUB 59340                                                    ' RM01279401
  1327.       GOTO 59305                                                     ' RM01279401
  1328. 59345 ZLastIndex = ZWasQ                                             ' RM01239401
  1329.       ZAnsIndex = 1                                                  ' RM01239401
  1330.       CALL AskItems ("DM",Temp$,IsMarking,"file",PrivMarkedFiles$,ZPersonalDnld) ' RM01179401/RM01209401/RM01239401
  1331.       RETURN                                                         ' RM01179401
  1332. 59350 ZLastIndex = ZWasQ                                             ' RM01179401
  1333.       ZAnsIndex = 1                                                  ' RM01179401
  1334.       CALL GetArc                                                    ' RM01179401
  1335. 59360 ZWasA = PersIndex                                              ' RM01179401
  1336.       GOSUB 59338                                                    ' RM01179401
  1337.       PersIndex = ZWasA                                              ' RM01179401
  1338.       GOTO 59306                                                     ' RM01179401
  1339.       END SUB
  1340. * REPLACING old line(s) by new
  1341. 59400 ' $SUBTITLE: 'LogPDown -- subroutine to record private downloads'
  1342. ' $PAGE
  1343. '
  1344. '  NAME    -- LogPDown
  1345. '
  1346. '  INPUTS  --   PARAMETER     MEANING
  1347. '
  1348. '  OUTPUTS --
  1349. '
  1350. '  PURPOSE -- Puts a "!" in place of an "*" in private directory
  1351. '             after downloaded
  1352. '
  1353.       SUB LogPDown (PrivateDnld,DwnIndex) STATIC
  1354.       IF NOT PrivateDnld THEN _
  1355.          EXIT SUB
  1356.       ZWasEN$ = ZActiveFMSDir$
  1357.       WasBX = &H4
  1358.       ZSubParm = 9
  1359.       CALL FileLock
  1360. * ------[ first line different ]------
  1361.       CALL OpenRand2 (ZWasEN$,ZFMSFileLength,2)                      ' RM01139402
  1362.       IF ZErrCode > 0 THEN _
  1363.          GOTO 59405
  1364.       FIELD #2,ZFMSFileLength AS PersonalRec$
  1365.       L = LEN(ZUserIn$(0))
  1366.       FOR Temp = 1 TO ZDownFiles
  1367.          X = 5 * (DwnIndex - Temp) + 1
  1368.          IF X > 0 AND X < L THEN _
  1369.             ZWasA = VAL(MID$(ZUserIn$(0),X,5)) : _
  1370.             IF ZWasA > 0 THEN _
  1371.                GET #2,ZWasA : _
  1372.                MID$(PersonalRec$,ZFMSFileLength-2,1) = "!" : _
  1373.                PUT #2,ZWasA
  1374.       NEXT
  1375. * REPLACING old line(s) by new
  1376. * ------[ first line different ]------
  1377. 59492 CALL QuickTPut1 (ZFG5$ + "No such option <" + ZFG7$ + ZWasZ$ + _
  1378.                        ZFG5$ + ">" + ZEmphasizeOff$)                 ' RM052001
  1379.       Call FlushKeys
  1380.       GOTO 59460
  1381.       END SUB
  1382. * REPLACING old line(s) by new
  1383. 59510 ZFileName$ = CurMenu$
  1384.       InMenu = ZTrue
  1385.       CALL BreakFileName (FrontOpt$,WasX$,FrontPre$,ZWasDF$,ZTrue)
  1386.       CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue)
  1387.       MenuFront$ = MenuDrv$ + LEFT$(WasX$,LEN(WasX$)-LEN(PreSuf$))
  1388.       IF CurMenu$ = LastSubMenu$ THEN _
  1389.          MenuFront$ = LEFT$(MenuFront$,LEN(MenuFront$)-1)
  1390.       CALL Graphic (ZFileName$)
  1391.       CurMenuVer$ = ZFileName$
  1392.       ZStopInterrupts = ZFalse
  1393. * ------[ first line different ]------
  1394. * INSERTING new line(s)
  1395. 59514 IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _                ' KG011501
  1396.          GOTO 59520
  1397. * REPLACING old line(s) by new
  1398. * ------[ first line different ]------
  1399. 59520 CALL Line25                                                    ' RM01239401
  1400.       ZOutTxt$ = PassedPrompt$            'get response
  1401.       CALL PopCmdStack
  1402.       IF ZWasQ = 0 OR ZSubParm = -1 THEN _
  1403.          EXIT SUB
  1404. * REPLACING old line(s) by new
  1405. 59532 GOSUB 59547
  1406. * ------[ first line different ]------
  1407.       GOTO 59514                                                     ' KG011501
  1408. * REPLACING old line(s) by new
  1409. * ------[ first line different ]------
  1410. 59547 CALL QuickTPut1 (ZFG6$ + "No such option " + ZFG7$ + ZWasZ$ + ZEmphasizeOff$) ' RM052301
  1411.       ZLastIndex = 0
  1412.       IF VerifyInMenu AND InMenu AND NOT RequireInMenu THEN _
  1413.          CALL UpdtCalr("Option " + ZWasZ$ + " on menu " + _
  1414.                        CurMenu$ + " but not found",1)
  1415.       RETURN
  1416. * REPLACING old line(s) by new
  1417. 59698 ' $SUBTITLE: 'MsgImport -- subroutine to import a message'
  1418. ' $PAGE
  1419. '
  1420. '  NAME    -- MsgImport
  1421. '
  1422. '  INPUTS  --   PARAMETER     MEANING
  1423. '               MaxLines     MAXIMUM # OF LINES
  1424. '               MaxLen       MAXIMUM LENGTH OF A LINE
  1425. '               NumLines     NUMBER OF LINES ALREADY IN MESSAGE
  1426. '               LineAra$     ARRAY OF LINES IN MESSAGE
  1427. '
  1428. '  OUTPUTS --   NumLines
  1429. '               LineAra$
  1430. '
  1431. '  PURPOSE -- Allows local user to append a text file to
  1432. '             a message.   Will word wrap if needed.
  1433. '
  1434.       SUB MsgImport (MaxLines,MaxLen,NumLines,LineAra$(1)) STATIC
  1435. * ------[ first line different ]------
  1436.       IF ZWelcomeAboard THEN _                                       ' NEWU174
  1437.          ZUserIn$ = "WELCOME.DEF" : _                                ' NEWU174
  1438.          GOTO 59701                                                  ' NEWU174
  1439.       IF NOT (ZLocalUser OR ZSysop) THEN _
  1440.          CALL QuickTPut1 ("Only for SysOps/local users") : _
  1441.          EXIT SUB
  1442. * REPLACING old line(s) by new
  1443. 59700 ZOutTxt$ = "Import what file" + ZPressEnter$
  1444.       CALL PopCmdStack
  1445.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  1446.          EXIT SUB
  1447.       CALL FindIt (ZUserIn$(ZAnsIndex))
  1448.       IF NOT ZOK THEN _
  1449.          CALL QuickTPut1 (ZUserIn$(ZAnsIndex) + " not found") : _
  1450.          GOTO 59700
  1451. * ------[ first line different ]------
  1452. * INSERTING new line(s)
  1453. 59701 IF ZWelcomeAboard THEN _                                       ' NEWU174
  1454.          CALL FindIt (ZUserIn$)                                      ' NEWU174
  1455.       WHILE NOT EOF(2) AND NumLines < MaxLines
  1456.          NumLines = NumLines + 1
  1457.          LINE INPUT #2,LineAra$(NumLines)
  1458.       WEND
  1459.       CLOSE 2
  1460.       CALL WordWrap (MaxLen,NumLines,LineAra$())
  1461.       END SUB
  1462. * REPLACING old line(s) by new
  1463. 59704    CALL TrimTrail (LineAra$(WasJ)," ")
  1464.          WasK = LEN(LineAra$(WasJ))
  1465.          IF WasK <= MaxLen THEN _
  1466.             GOTO 59705
  1467.          CALL FindLast (LineAra$(WasJ)," ",LastPos,HowMany)
  1468. * ------[ first line different ]------
  1469.          IF MID$(LineAra$(WasJ), 3, 1) = ">" THEN _                  ' QUOT174
  1470.             CALL AnyBut (LineAra$(WasJ),3,">",WasX) _                ' QUOT174
  1471.          ELSE _                                                      ' QUOT174
  1472.             CALL AnyBut (LineAra$(WasJ),1,">",WasX)                  ' QUOT174
  1473.          IF WasX = 0 THEN WasX = 2
  1474.          IF MID$(LineAra$(WasJ + 1),3,1) = ">" THEN _                ' QUOT174
  1475.             CALL AnyBut (LineAra$(WasJ + 1),3,">",Temp) _            ' QUOT174
  1476.          ELSE _                                                      ' QUOT174
  1477.             CALL AnyBut (LineAra$(WasJ+1),1,">",Temp)                ' QUOT174
  1478.          IF LEFT$(LineAra$(WasJ + 1),2) = "  " OR ((Temp > 0) AND WasX <> Temp) THEN _
  1479.             FOR WasK = NumLines TO WasJ + 1 STEP -1 : _
  1480.                LineAra$(WasK + 1) = LineAra$(WasK) : _
  1481.             NEXT : _
  1482.             NumLines = NumLines + 1 : _
  1483.             LineAra$(WasJ + 1) = ""
  1484.          IF WasX > 1 THEN _
  1485.             IF MID$(LineAra$(WasJ),WasX,1) = " " THEN _
  1486.                WasX = WasX + 1
  1487.          WasX$ = LEFT$(LineAra$(WasJ),WasX-1)
  1488.          IF LastPos < SplitOn THEN _
  1489.             LineAra$(WasJ + 1) = WasX$ + MID$(LineAra$(WasJ),MaxLen) + MID$(LineAra$(WasJ + 1),WasX) : _
  1490.             LineAra$(WasJ) = LEFT$(LineAra$(WasJ),MaxLen - 1) + "-" _
  1491.          ELSE ZUserIn$ = LEFT$(" ", - (LEN(LineAra$(WasJ + 1)) > 0)) : _
  1492.               LineAra$(WasJ + 1) = WasX$ + MID$(LineAra$(WasJ),LastPos + 1) + ZUserIn$ + MID$(LineAra$(WasJ + 1),WasX) : _
  1493.               LineAra$(WasJ) = LEFT$(LineAra$(WasJ),LastPos - 1)
  1494.          ReFormatted = ZTrue
  1495.          GOTO 59704
  1496. * REPLACING old line(s) by new
  1497. 59850 ' $SUBTITLE: 'ConfMail -- quickly checks mail waiting'
  1498. ' $PAGE
  1499. '
  1500. '  NAME    -- ConfMail
  1501. '
  1502. '  INPUTS  -- PARAMETER        MEANING
  1503. '         SKIP.CONFIRM         Whether to skip confirm of option
  1504. '         ZConfMailList$       File of user/message pairs to check
  1505. '         ZActiveUserFile$     Active user file (restored on exit)
  1506. '         ZActiveMessageFile$  Active msg file (restored)
  1507. '  OUTPUTS -- None
  1508. '
  1509. '  PURPOSE -- Quicking scans message header record to get
  1510. '             last msg # and user record to get whether any
  1511. '             new mail and last msg read, reports both, using
  1512. '             highlighting if new mail to caller.
  1513. '
  1514.       SUB ConfMail (MailCheckConfirm,LinkNew,LinkPers) STATIC
  1515.       SkipJoinUnjoin = ZNonStop OR LinkNew OR LinkPers
  1516.       IF ZStartHash = 1 AND ZUserFileIndex > 0 THEN _
  1517.          CALL FindIt (ZConfMailList$) _
  1518.       ELSE ZOK = ZFalse
  1519.       IF NOT ZOK THEN _
  1520.          EXIT SUB
  1521.       IF PrevMailList$ <> ZConfMailList$ THEN _
  1522.          SkipParms = 0
  1523.       PrevMailList$ = ZConfMailList$
  1524.       IF MailCheckConfirm THEN _
  1525. * ------[ first line different ]------
  1526.          ZOutTxt$ = ZFG6$ + "Check conferences for mail/uploads ([Y]" + _
  1527.                     ZFG6$ + ",N)" + ZEmphasizeOff$ : _               ' RM052601
  1528.          ZTurboKey = -ZTurboKeyUser : _
  1529.          CALL PopCmdStack : _
  1530.          IF ZNo OR ZSubParm < 0 THEN _
  1531.         EXIT SUB
  1532.       HaveMailFile% = ZFalse                         ' SG082101
  1533.       CALL BreakFileName (ZActiveUserFile$,WasX$,NowInPre$,NowInExt$,ZFalse)
  1534.       CALL BreakFileName (ZOrigUserFile$,WasX$,OrigPre$,OrigExt$,ZFalse)
  1535.       CALL SkipLine (1)
  1536.       CALL QuickTPut1 (ZFG7$ + "Checking Message Bases... (* = linked)" + ZEmphasizeOff$) ' RM051801
  1537.       IF LinkNew OR LinkPers THEN _
  1538.          ZLinkedConf$ = ""
  1539.       AnyMail = ZFalse
  1540.       ZStopInterrupts = ZFalse
  1541.       WasA1$ = ZActiveUserFile$
  1542.       MsgFileSave$ = ZActiveMessageFile$
  1543.       TempIndivValue$ = ""
  1544.       UserFileIndexSave = ZUserFileIndex
  1545.       UserRecordHold$ = ZUserRecord$
  1546.       ZOK = ZTrue
  1547.       CALL ReadParms (ZWorkAra$(),1,SkipParms)
  1548.       IF SkipParms = 0 THEN _
  1549.          LogicalEOF$ = "" _
  1550.       ELSE LogicalEOF$ = ZWorkAra$(1)
  1551. * REPLACING old line(s) by new
  1552. 59852    IF InCur THEN _
  1553.             FileWait = ZFileWaiting : _
  1554.             WasX = ZMailWaiting : _
  1555.             ZWasA = ZLastMsgRead _
  1556.          ELSE ZWasA = CVI(MID$(ZUserRecord$,51,2))
  1557.          ZWasB = VAL(LEFT$(ZMsgRec$,8))
  1558.          WasZ = (ZWasB - ZWasA)
  1559.          IF WasZ < 0 THEN _
  1560.             ZWasA = 0 : _
  1561.             WasZ = ZWasB _
  1562.          ELSE IF WasZ = 0 THEN _
  1563.                  WasX = ZFalse
  1564.          ZWasSL = LEN(CurPre$)
  1565.          IF CurPre$ = "USERS" AND CurExt$ = "" THEN _
  1566.             Conf$ = "MAIN" _
  1567.          ELSE Conf$ = LEFT$(CurPre$,ZWasSL-1)
  1568.          ZOutTxt$ = MID$(STR$((ZWasB > ZWasA) * WasZ),2)
  1569.          Temp = LEN(ZOutTxt$)
  1570. * ------[ first line different ]------
  1571.      ZOutTxt$ = SPACE$(-(Temp<4) * (4-Temp)) + ZOutTxt$
  1572.      ConMsg = VAL(ZOutTxt$)                         ' TR07099301/SG082121
  1573.      IF ConMsg = 0 THEN _                         ' SG082101
  1574.         ZOutTxt$ = ZFG6$ + "  No" _                     ' SG082101
  1575.      ELSE _                              ' SG082101
  1576.             ZOutTxt$ = ZFG7$ + ZOutTxt$                              ' SG082101
  1577.      IF (WasZ > 0 AND LinkNew) OR (WasX AND LinkPers) THEN _
  1578.             IF (NOT InCur) THEN _
  1579.                CALL AddLink (Conf$)
  1580.          Temp = (INSTR(ZCarriageReturn$ + ZLinkedConf$,ZCarriageReturn$ + Conf$ + ZCarriageReturn$) > 0)
  1581.          ZWasY$ = MID$(" *",1-Temp,1) + Conf$ + SPACE$(-(ZWasSL<8) * (8-ZWasSL))
  1582.          IF WasX THEN _
  1583.             WasX$ = ZEmphasizeOn$ + "Some to you" + ZEmphasizeOff$ _ ' SG082101
  1584.      ELSE WasX$ = "           "                     ' SG082101
  1585.          IF FileWait THEN _
  1586.         Temp$ = " - " + ZEmphasizeOn$ + "Personal file(s)" + ZEmphasizeOff$ _ ' SG082101
  1587.          ELSE Temp$ = ""
  1588.      ZSubParm = 5                             ' SG082101
  1589.      IF ConMsg OR ZFF = 16 OR FileWait THEN _             ' TR07099301/SG082101
  1590.             ZOutTxt$ = ZFG5$ + ZWasY$ + ": " + ZOutTxt$ + ZFG6$ + _  ' TR07099301/SG082101
  1591.                        " new message(s) " + ZEmphasizeOff$ + WasX$ + Temp$ : _ ' TR07099301/SG082101
  1592.         CALL TPut : _                         ' TR07099301/SG082101
  1593.         HaveMailFile% = ZTrue                     ' SG082101
  1594.          ZJumpSupported = ZFalse
  1595.          IF SkipJoinUnjoin OR WasZ = 0 THEN _
  1596.             CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue) : _
  1597.             GOTO 59853
  1598.          ZTurboKey = -ZTurboKeyUser
  1599.          CALL AskMore (",J)oin,U)njoin,L)ink,D)elink",ZTrue,ZFalse,WasX,ZFalse)
  1600.          IF ZNo THEN _
  1601.             GOTO 59856
  1602.          WasX$ = LEFT$(ZUserIn$(1),1)
  1603.          CALL AllCaps (WasX$)
  1604.          IF WasX$ = "J" THEN _
  1605.             ZLastIndex = ZWasQ : _
  1606.             ZHomeConf$ = Conf$ : _
  1607.             GOTO 59856
  1608.          IF WasX$ = "D" THEN _
  1609.             CALL DeLink (Conf$) : _
  1610.             GOTO 59852
  1611.          IF WasX$ = "L" THEN _
  1612.             CALL AddLink (Conf$) : _
  1613.             GOTO 59852
  1614.          IF WasX$ = "U" THEN _
  1615.             IF InCur OR (OrigPre$ = CurPre$ AND OrigExt$ = CurExt$) THEN _
  1616.                CALL QuickTPut1 ("Can't omit yourself from the board or conference you're in") _
  1617.             ELSE LSET ZUserRecord$ = CHR$(0) + "deleted user" : _
  1618.                  ZUserFileIndex = HoldUserFileIndex : _
  1619.                  ZSubParm = 6 : _
  1620.                  CALL FileLock : _
  1621.                  PUT 5, HoldUserFileIndex : _
  1622.                  ZSubParm = 8 : _
  1623.                  CALL FileLock : _
  1624.                  CALL QuickTPut1 ("Omitted you from " + Conf$)
  1625. * REPLACING old line(s) by new
  1626. 59856 ZActiveUserFile$ = WasA1$
  1627.       CALL OpenUser (ZHighestUserRecord)
  1628.       FIELD 5, 128 AS ZUserRecord$
  1629.       IF (NOT ZRet) AND NOT AnyMail THEN _
  1630. * ------[ first line different ]------
  1631.          CALL QuickTPut1 (ZFG6$ + " You have not joined any conferences" + _
  1632.                           ZEmphasizeOff$) _                          ' SG082101
  1633.       ELSE _                                 ' SG082101
  1634.      IF NOT HaveMailFile% THEN _                     ' SG082101
  1635.             CALL QuickTPut1 (ZFG6$ + " There is no new mail" + ZEmphasizeOff$) ' SG082101
  1636.       ZUserFileIndex = UserFileIndexSave
  1637.       LSET ZUserRecord$ = UserRecordHold$
  1638.       ZActiveMessageFile$ = MsgFileSave$
  1639.       CALL OpenMsg
  1640.       FIELD 1, 128 AS ZMsgRec$
  1641.       GET 1,1
  1642.       ZNonStop = (ZPageLength < 1)
  1643.       WasX$ = ZUserIn$(ZAnsIndex+1)
  1644.       CALL AllCaps (WasX$)
  1645.       ZAnsIndex = ZAnsIndex - (WasX$ = "C")
  1646.       SkipParms = -(NOT EOF(2))*SkipParms
  1647.       LinkNew = ZFalse
  1648.       LinkPers = ZFalse
  1649.       CLOSE 2                                                        ' KG012501
  1650.       END SUB
  1651. * REPLACING old line(s) by new
  1652. 59860 CALL QuickTPut (ZEmphasizeOff$,0)
  1653.       IF CantInterrupt THEN _
  1654.          ZTurboKey = 2 : _
  1655.          ZForceKeyboard = ZTrue : _
  1656. * ------[ first line different ]------
  1657.          ZOutTxt$ = ZEmphasizeOn$ + "Press any key to continue" + ZEmphasizeOff$ _
  1658.       ELSE GOSUB 59870 : _
  1659.            ZOutTxt$ = ZMorePrompt$ + Temp$ + ExtraPrompt$ + LEFT$(")",-ZExpertUser) ' RM02179401
  1660.       WasX = LEN(ZOutTxt$) + 2
  1661.       ZNoAdvance = OverWrite
  1662.       CALL Line25                                                    ' RM01239401/RM02149401/RM02249401
  1663.       ZSubParm = 1
  1664.       IF ExtraPrompt$ = "" AND ZTurboKey = 0 THEN _
  1665.          ZTurboKey = -ZTurboKeyUser
  1666.       ZMacroMin = 2
  1667.       CALL TGet
  1668.       IF ZSubParm = -1 THEN _
  1669.         EXIT SUB
  1670.       ZTurboKey = ZFalse
  1671.       ZWasDF$ = ZUserIn$ (1)
  1672.       CALL AllCaps (ZWasDF$)
  1673.       WasI = INSTR(";C;A;",";"+ZWasDF$+";")
  1674.       IF WasI = 1 THEN _
  1675.          ZNonStop = ZTrue : _
  1676.          ZWasQ = 0
  1677.       CALL WipeLine (WasX + LEN(ZUserIn$))
  1678.       IF NOT ZHiLiteOff THEN _
  1679.          CALL QuickTPut (ZLastSmartColor$,0)
  1680.       IF CantInterrupt THEN _
  1681.          ZNo = ZFalse : _
  1682.          EXIT SUB
  1683.       IF WasI = 3 THEN _
  1684.          ZLastIndex = 0 : _
  1685.          AbortIndex = 32000
  1686.       IF ZNo THEN _
  1687.          ZKeyboardStack$ = "" : _
  1688.          ZCommPortStack$ = "" : _
  1689.          ZLastSmartColor$ = ""
  1690.       IF NOT ZJumpSupported THEN _
  1691.          EXIT SUB
  1692.       IF ZWasDF$ = "J" THEN _
  1693.          IF ZWasQ > 1 THEN _
  1694.             ZUserIn$ = ZUserIn$(2) : _
  1695.             GOTO 59866 _
  1696.          ELSE ZOutTxt$ = "Jump to what text" + ZPressEnterExpert$ : _
  1697.               CALL PopCmdStack : _
  1698.               IF ZWasQ = 0 THEN _
  1699.                  EXIT SUB _
  1700.               ELSE GOTO 59866
  1701.       IF ZWasDF$ <> "R" THEN _
  1702.          EXIT SUB
  1703.       ZUserIn$ = ZJumpLast$
  1704. * REPLACING old line(s) by new
  1705. 59880 ' $SUBTITLE: 'CompDate -- subroutine to compute elased days'
  1706. ' $PAGE
  1707. '
  1708. '  NAME    -- CompDate
  1709. '
  1710. '  INPUTS  --   PARAMETER     MEANING
  1711. * ------[ first line different ]------
  1712. '                   TYear       YEAR                                 ' MSVB/RM041101
  1713. '                   WasMM       MONTH
  1714. '                   WasDD       DAY
  1715. '                 Result!    LOCATION TO PLACE THE Result
  1716. '
  1717. '  OUTPUTS -- Result!        COMPUTE COMPUTATIONAL DATE
  1718. '
  1719. '  PURPOSE -- Computes a computational date from YEAR, MONTH, DAY.
  1720. '             Results may be used to compute the number of elapsed
  1721. '             days between two dates.  You may pass a 2 or 4 digit
  1722. '             year, but for meaningful results, be consistent
  1723. '
  1724.       SUB CompDate (TYear,WasMM,WasDD,Result!) STATIC                ' MSVB/RM041101
  1725.       IF WasMM < 1 OR WasMM > 12 THEN _
  1726.          WasMM = 1
  1727.       Result! = TYear * 365.0 + _                                    ' MSVB/RM041101
  1728.                 INT((TYear - 1) / 4) + _                             ' MSVB/RM041101
  1729.                 (WasMM - 1) * 28 + _
  1730.                 VAL(MID$("000303060811131619212426",(WasMM - 1) * 2 + 1,2)) - _
  1731.                 ((WasMM > 2) AND ((TYear MOD 4) = 0)) + _            ' MSVB/RM041101
  1732.                 WasDD
  1733.       END SUB
  1734. * REPLACING old line(s) by new
  1735. * ------[ first line different ]------
  1736. 59922 Temp$ = ZEscape$ + "[0" + MID$(ZDR4$,4,(LEN(ZDR4$) - 3))       ' RM032401
  1737.       Strng$ = Temp$ + Strng$                                        ' RM032401
  1738.       EXIT SUB
  1739. * REPLACING old line(s) by new
  1740. 59934 ' $SUBTITLE: 'SetHiLite - subroutine to reset highlight preference'
  1741. ' $PAGE
  1742. '
  1743. '  NAME    --  SetHiLite
  1744. '
  1745. '  INPUTS  --  PARAMETER                   MEANING
  1746. '              SetTo              New value (True or False)
  1747. '              ZEmphasizeOnDef$   String turns emphasize on
  1748. '              ZEmphasizeOffDef$  String turns emphasize off
  1749. '
  1750. '  OUTPUTS --  ZHiLiteOff       Callers preference on Hilite
  1751. '              ZEmphasizeOn$       String to use for emphasis
  1752. '              ZEmphasizeOff$      String to use after emphasis
  1753. '
  1754.       SUB SetHiLite (SetTo) STATIC
  1755.       ZHiLiteOff = (ZEmphasizeOnDef$ <> "" AND SetTo)
  1756. * ------[ first line different ]------
  1757.       IF ZHiLiteOff THEN                                             ' RM11149301
  1758.          ZEmphasizeOn$ = ""
  1759.          ZEmphasizeOff$ = ""
  1760.          ZFG1$ = ""                                                  ' RM11149301
  1761.          ZFG2$ = ""
  1762.          ZFG3$ = ""
  1763.          ZFG4$ = ""
  1764.          ZFG5$ = ""
  1765.          ZFG6$ = ""
  1766.          ZFG7$ = ""
  1767.          ZFG8$ = ""
  1768.          ZFG9$ = ""
  1769.          ZFGA$ = ""
  1770.          ZFGB$ = ""
  1771.          ZFGC$ = ""
  1772.          ZFGD$ = ""
  1773.          ZFGE$ = ""
  1774.          ZFGF$ = ""
  1775.          ZBG0$ = ""
  1776.          ZBG1$ = ""
  1777.          ZBG2$ = ""
  1778.          ZBG3$ = ""
  1779.          ZBG4$ = ""
  1780.          ZBG5$ = ""
  1781.          ZBG6$ = ""
  1782.          ZBG7$ = ""
  1783.       ELSE                                                           ' RM11149301
  1784.          ZEmphasizeOn$ = ZEmphasizeOnDef$                            ' RM11149301
  1785.          ZFG1$ = ZFG1Def$                                            ' RM11159301
  1786.          ZFG2$ = ZFG2Def$                                            ' RM11159301
  1787.          ZFG3$ = ZFG3Def$                                            ' RM11159301
  1788.          ZFG4$ = ZFG4Def$                                            ' RM11159301
  1789.          ZFG5$ = ZFG5Def$                                            ' RM11159301
  1790.          ZFG6$ = ZFG6Def$                                            ' RM11159301
  1791.          ZFG7$ = ZFG7Def$                                            ' RM11159301
  1792.          ZFG8$ = ZFG8Def$                                            ' RM11159301
  1793.          ZFG9$ = ZFG9Def$                                            ' RM11159301
  1794.          ZFGA$ = ZFGADef$                                            ' RM11159301
  1795.          ZFGB$ = ZFGBDef$                                            ' RM11159301
  1796.          ZFGC$ = ZFGCDef$                                            ' RM11159301
  1797.          ZFGD$ = ZFGDDef$                                            ' RM11159301
  1798.          ZFGE$ = ZFGEDef$                                            ' RM11159301
  1799.          ZFGF$ = ZFGFDef$                                            ' RM11159301
  1800.          ZBG0$ = ZBG0Def$                                            ' RM11159301
  1801.          ZBG1$ = ZBG1Def$                                            ' RM11159301
  1802.          ZBG2$ = ZBG2Def$                                            ' RM11159301
  1803.          ZBG3$ = ZBG3Def$                                            ' RM11159301
  1804.          ZBG4$ = ZBG4Def$                                            ' RM11159301
  1805.          ZBG5$ = ZBG5Def$                                            ' RM11159301
  1806.          ZBG6$ = ZBG6Def$                                            ' RM11159301
  1807.          ZBG7$ = ZBG7Def$                                            ' RM11159301
  1808.       ENDIF
  1809.       END SUB
  1810. * REPLACING old line(s) by new
  1811. 59943 WasY = INSTR(WasX,Strng$,">")
  1812.       IF WasY < 1 THEN _
  1813.          GOTO 59945
  1814.       CALL Bracket (Strng$,WasX,WasY,ZFG4$,ZEmphasizeOff$)
  1815.       WasY = INSTR(Strng$," ")
  1816.       IF WasY > 1 AND WasY < WasX THEN _
  1817.          Strng$ = ZFG1$ + Strng$ : _
  1818.          WasZ = INSTR(WasY+1,Strng$," ") : _
  1819.          IF WasZ > 1 AND WasZ < WasX+LEN(ZFG1$) THEN _
  1820. * ------[ first line different ]------
  1821.             Strng$ = LEFT$(Strng$,WasZ) + ZFG2Def$ + MID$(Strng$,WasZ+1) + ZEmphasizeOff$ ' RM02179401
  1822.       EXIT SUB
  1823. * REPLACING old line(s) by new
  1824. 59945 WasX = 1
  1825. * ------[ first line different ]------
  1826.       IF INSTR(Strng$,"More") > 0 THEN _                             ' RM02189401
  1827.          Strng$ = ZFG4$ + LEFT$(Strng$,4) + ZEmphasizeOff$ + MID$(Strng$,5) ' RM02189401
  1828.       IF INSTR(Strng$,"End list.") > 0 THEN _                        ' RM02219401
  1829.          Strng$ = ZFG4$ + LEFT$(Strng$,9) + ZEmphasizeOff$ + MID$(Strng$,10) ' RM02219401
  1830.       DidInsert = ZFalse
  1831.       WasL = LEN(ZFG4$)
  1832. * REPLACING old line(s) by new
  1833. 59980 ' $SUBTITLE: 'SetGraphic - Sets user graphic preference'
  1834. ' $PAGE
  1835. '
  1836. '  NAME    --  SetGraphic
  1837. '
  1838. '  INPUTS  --  PARAMETER                   MEANING
  1839. '              GraphicsNumber        0=None, 1=Ascii, 2=color
  1840. '
  1841. '  OUTPUTS --  ZWasGR                Shared var - set to
  1842. '                                    graphics.number
  1843. '              ZUserGraphicDefault$ What add to file name to
  1844. '                                    see if got graphics file ver
  1845. '
  1846. '  PURPOSE --  Sets file graphics preference
  1847. '
  1848.       SUB SetGraphic (GraphicsNumber) STATIC
  1849.       ZWasGR = GraphicsNumber
  1850.       IF ZWasGR = 2 THEN _
  1851.          ZDR1$ = ZFG1Def$ : _
  1852.          ZDR2$ = ZFG2Def$ : _
  1853.          ZDR3$ = ZFG3Def$ : _
  1854. * ------[ first line different ]------
  1855.          ZDR4$ = ZFG4Def$ : _                                        ' RM11159301
  1856.          ZDR5$ = ZFG5Def$ : _                                        ' RM11159301
  1857.          ZDR6$ = ZFG6Def$ : _                                        ' RM11159301
  1858.          ZDR7$ = ZFG7Def$ : _                                        ' RM11159301
  1859.          ZDR8$ = ZFG8Def$ : _                                        ' RM11159301
  1860.          ZDR9$ = ZFG9Def$ : _                                        ' RM11159301
  1861.          ZDRA$ = ZFGADef$ : _                                        ' RM11159301
  1862.          ZDRB$ = ZFGBDef$ : _                                        ' RM11159301
  1863.          ZDRC$ = ZFGCDef$ : _                                        ' RM11159301
  1864.          ZDRD$ = ZFGDDef$ : _                                        ' RM11159301
  1865.          ZDRE$ = ZFGEDef$ : _                                        ' RM11159301
  1866.          ZDRF$ = ZFGFDef$ _                                          ' RM11159301
  1867.       ELSE ZDR1$ = "" : _
  1868.            ZDR2$ = "" : _
  1869.            ZDR3$ = "" : _
  1870.            ZDR4$ = "" : _                                            ' COLR174
  1871.            ZDR5$ = "" : _                                            ' COLR174
  1872.            ZDR6$ = "" : _                                            ' COLR174
  1873.            ZDR7$ = "" : _                                            ' COLR174
  1874.            ZDR8$ = "" : _                                            ' COLR174
  1875.            ZDR9$ = "" : _                                            ' RM11159301
  1876.            ZDRA$ = "" : _                                            ' RM11159301
  1877.            ZDRB$ = "" : _                                            ' RM11159301
  1878.            ZDRC$ = "" : _                                            ' RM11159301
  1879.            ZDRD$ = "" : _                                            ' RM11159301
  1880.            ZDRE$ = "" : _                                            ' RM11159301
  1881.            ZDRF$ = ""                                                ' RM11159301
  1882.       IF ZRIPTest = ZTrue THEN _                                     ' RM07159301/RIP
  1883.          ZUserGraphicDefault$ = "R" _                                ' RM07159301/RIP
  1884.       ELSE _                                                         ' RM07159301/RIP
  1885.          ZUserGraphicDefault$ = MID$(" GC",ZWasGR+1, - (ZWasGR > 0)) ' RM07159301/RIP
  1886.       END SUB
  1887. * REPLACING old line(s) by new
  1888. 60135 MetaVal$ = MID$(Strng$,WasX+1,WasY-WasX-1)
  1889. * ------[ first line different ]------
  1890.       WasI = INSTR("      BAUD  CBAUD PORT  PORT# PARITYPROTO NODE  FILE  UPDIR ",MetaVal$) ' BTCH174
  1891.       IF WasI = 0 OR LEN(MetaVal$) < 4 THEN _
  1892.          WasY = WasX + 1 : _
  1893.          GOTO 60131
  1894.       WasJ = (WasI-1)\6 + 1
  1895.       WasK = (WasI+4)\6 + 1
  1896.       IF WasK > WasJ THEN _
  1897.          EXIT SUB
  1898.       ON WasJ GOTO 60155, _
  1899.                 60137, _
  1900.                 60138, _
  1901.                 60139, _
  1902.                 60141, _
  1903.                 60143, _
  1904.                 60145, _
  1905.                 60147, _
  1906.                 60149, _
  1907.                 60150, _                                             ' BTCH174
  1908.                 60151
  1909. * REPLACING old line(s) by new
  1910. * ------[ first line different ]------
  1911. 60149 IF ZWasBatchTransfer AND NOT ZHighSpeedTransfer THEN _         ' BTCH174
  1912.          WorkHold$ = ZUpldSubDir$ + "\" : _                          ' BTCH174
  1913.          GOTO 60151                                                  ' BTCH174
  1914.       IF ZBatchTransfer OR ZHighSpeedTransfer THEN _                 ' BTCH174
  1915.          WorkHold$ = "@" + ZDownloadWorkFile$ _                      ' BTCH174
  1916.       ELSE _                                                         ' BTCH174
  1917.          WorkHold$ = ZFileName$                                      ' BTCH174
  1918.       GOTO 60151
  1919. * INSERTING new line(s)
  1920. 60150 WorkHold$ = ZUpldSubDir$                                       ' BTCH174
  1921.       GOTO 60151                                                     ' BTCH174
  1922. * REPLACING old line(s) by new
  1923. 60300 ' $SUBTITLE: 'AutoPage - NOTIFIES ZSysop WHEN SPECIFIC USER CALLS'
  1924. ' $PAGE
  1925. '
  1926. '  NAME    --  AutoPage   'Contributed  by Gregg and Bob Snyder
  1927. '                        'and RoseMarie Siddiqui
  1928. '
  1929. '  INPUTS  --  ZAutoPageDef$  List of conditions that trigger
  1930. '                                       notification and how
  1931. '
  1932. '  OUTPUTS -- NONE
  1933. '
  1934. '  PURPOSE -- Search ZAutoPageDef$ for match on whether
  1935. '             on name, security level, whether new user.
  1936. '             Also controls whether caller notified and
  1937. '             number of times sysop has bell rung.
  1938. '             And what tune to play (if any).
  1939. '
  1940.       SUB AutoPage STATIC
  1941.       CALL FindIt (ZAutoPageDef$)
  1942.       IF NOT ZOK THEN _
  1943.          EXIT SUB
  1944.       ZErrCode = 0
  1945.       ZOK = ZFalse
  1946.       WHILE NOT EOF(2) AND ZOK = ZFalse AND ZErrCode = 0
  1947.          CALL ReadParms (ZWorkAra$(),4,1)
  1948.          IF ZErrCode = 0 THEN _
  1949.             ZOK = (ZWorkAra$(1) = ZActiveUserName$) : _
  1950.             IF NOT ZOK THEN _
  1951.                IF ZNewUser AND ZWorkAra$(1) = "NEWUSER" THEN _
  1952.                   ZOK = ZTrue _
  1953.                ELSE IF LEFT$(ZWorkAra$(1),1) = "/" AND LEN(ZWorkAra$(1)) > 2 THEN _
  1954.                        ZWasB = INSTR (2,ZWorkAra$(1),"/") : _
  1955.                        IF ZWasB > 0 AND LEN(ZWorkAra$(1)) > ZWasB THEN _
  1956.                           IF ZUserSecLevel <= VAL(MID$(ZWorkAra$(1),ZWasB+1)) AND _
  1957.                              ZUserSecLevel >= VAL(MID$(ZWorkAra$(1),2)) THEN _
  1958.                                 ZOK = ZTrue
  1959.       WEND
  1960.       CLOSE 2
  1961.       IF ZErrCode > 0 OR NOT ZOK THEN _
  1962.          ZErrCode = 0 : _
  1963.          EXIT SUB
  1964.       ZPageStatus$ = "AP!"
  1965.       IF LEFT$(ZWorkAra$(2),1) = "N" THEN _
  1966. * ------[ first line different ]------
  1967.          ZOutTxt$ = "Telling SysOp you're on..." : _
  1968.          CALL RingCaller
  1969.       ZWasB = (ZWorkAra$(4) = "")
  1970.       ZWorkAra$(5) = ""
  1971.      TempSnoop = ZSnoop
  1972.      ZSnoop = ZTrue
  1973.      CALL Line25
  1974.       FOR WasI = 1 TO VAL(ZWorkAra$(3))
  1975.          IF ZWasB THEN _
  1976.             CALL LPrnt (ZBellRinger$,0) : _
  1977.          ELSE ZWorkAra$(5) = ZWorkAra$(5) + "O4 X" + VARPTR$(ZWorkAra$(4))
  1978.       NEXT
  1979.       IF NOT ZWasB THEN _
  1980.          CALL RBBSPlay (ZWorkAra$(5))
  1981.       ZSnoop = TempSnoop
  1982.       END SUB
  1983. * REPLACING old line(s) by new
  1984. 62540 ' $SUBTITLE: 'RptTime -- Reports time on system'
  1985. ' $PAGE
  1986. '
  1987. '  NAME    --  RptTime
  1988. '
  1989. '  INPUTS  --  PARAMETER                   MEANING
  1990. '
  1991. '  OUTPUTS --
  1992. '
  1993. '  PURPOSE --  Tells user time used on system
  1994. '
  1995.       SUB RptTime STATIC
  1996.       CALL SkipLine (1)
  1997.       CALL GetTime
  1998.       CALL AMorPM
  1999.       Mins = (ZSessionHour * 60) + ZSessionMin
  2000.       CALL Carrier
  2001.       IF ZSubParm = -1 THEN _
  2002.          EXIT SUB
  2003. * ------[ first line different ]------
  2004.       CALL QuickTPut1 (ZFG5$ + "It's Now: " + ZFG7$ + DATE$ + ZFG5$ + " at " + _
  2005.                        ZFG7$ + TIME$ + ZEmphasizeOff$)               ' RM051901
  2006.       CALL QuickTPut1 (ZFG5$ + "Time On:" + ZFG7$ + STR$(Mins) + ZFG5$ + " mins," + _
  2007.                         ZFG7$ + STR$(ZSessionSec) + ZFG5$ + " secs" + ZEmphasizeOff$) ' RM051901
  2008.       CALL Talk (7,ZOutTxt$)
  2009.       END SUB
  2010. * REPLACING old line(s) by new
  2011. 62620 ' $SUBTITLE: 'Transfer - Subroutine for external protocols'
  2012. ' $PAGE
  2013. '
  2014. '  NAME    -- Transfer
  2015. '
  2016. '  INPUTS  --     PARAMETER                    MEANING
  2017. '              ZTransferFunction         = 1 DOWNLOAD FILE TO USER
  2018. '                                        = 2 UPLOAD FILE TO RBBS-PC
  2019. '              ZFileName$                NAME OF FILE FOR Transfer
  2020. '              ZComPort$                 NAME OF COMMUNICATIONS PORT
  2021. '                                        TO BE USED BY KERMIT (COM1
  2022. '                                        OR COM2)
  2023. '              ZBPS                      = -1 FOR   300 BAUD
  2024. '                                        = -2 FOR   450 BAUD
  2025. '                                        = -3 FOR  1200 BAUD
  2026. '                                        = -4 FOR  2400 BAUD
  2027. '                                        = -5 FOR  4800 BAUD
  2028. * ------[ first line different ]------
  2029. '                                        = -6 FOR  7200 BAUD
  2030. '                                        = -7 FOR  9600 BAUD
  2031. '                                        = -8 FOR 12000 BAUD
  2032. '                                        = -9 FOR 14400 BAUD
  2033. '                                        = -10 FOR 16800 BAUD        ' BB08219301
  2034. '                                        = -11 FOR 19200 BAUD
  2035. '                                        = -12 FOR 21600 BAUD        ' BB09039301
  2036. '                                        = -13 FOR 24000 BAUD
  2037. '                                        = -14 FOR 26400 BAUD
  2038. '                                        = -15 FOR 28800 BAUD        ' BB08219301/BB09039301
  2039. '                                        = -16 FOR 38400 BAUD        ' BB09039301
  2040. '                                        = -17 FOR 57600 BAUD        ' BB08219301
  2041. '                                        = -18 FOR 115200 BAUD       ' BB09039301
  2042. '
  2043. '  OUTPUTS  -- NONE
  2044. '
  2045. '  PURPOSE -- To transfer files using external protocols
  2046. '
  2047.       SUB Transfer STATIC
  2048.       IF ZUpBatchTransfer THEN _                                     ' BTCH174
  2049.          EXIT SUB                                                    ' BTCH174
  2050.       IF ZPrivateDoor THEN _
  2051.          CALL PrivDoorRtn : _
  2052.          EXIT SUB
  2053.       IF ZTransferFunction = 1 THEN _
  2054.          ZUserIn$ = ZDownTemplate$ : _
  2055.          ZWasZ$ = "send: " _                                         ' RM092101
  2056.       ELSE IF ZTransferFunction = 2 THEN _
  2057.               ZUserIn$ = ZUpTemplate$ : _
  2058.               ZWasZ$ = "receive: "                                   ' RM092101
  2059.       CALL MetaGSR (ZUserIn$,ZFalse)
  2060.       CALL QuickTPut1 (ZFG5$ + "Protocol     : " + ZFG7$ + ZProtoPrompt$ + ZEmphasizeOff$)
  2061.       CALL QuickTPut (ZFG5$ + "Ready to " + ZWasZ$ + ZEmphasizeOff$,0) ' RM092101
  2062.       IF ZBatchTransfer OR (ZWasBatchTransfer AND NOT ZHighSpeedTransfer) THEN _ ' BTCH174
  2063.          CALL QuickTPut1 (ZFG7$ + "(BATCH)" + ZEmphasizeOff$)        ' BTCH174
  2064.       IF (ZWasBatchTransfer AND NOT ZHighSpeedTransfer) OR ZTransferFunction = 2 THEN _ ' BTCH174
  2065.          Temp$ = ZUploadWorkFile$ : _                                ' BTCH174
  2066.          GOTO 62621                                                  ' BTCH174
  2067.       IF ZBatchTransfer OR ZHighSpeedTransfer THEN _                 ' BTCH174
  2068.          Temp$ = ZDownloadWorkFile$ _                                ' BTCH174
  2069.       ELSE _                                                         ' BTCH174
  2070.          CALL QuickTPut1 (ZFG7$ + ZFileNameHold$ + ZEmphasizeOff$) : _ ' BTCH174/RM092101
  2071.          GOTO 62622                                                  ' BTCH174
  2072. * INSERTING new line(s)
  2073. 62621 CALL OpenWork (2,Temp$)                                        ' BTCH174
  2074.       WHILE NOT EOF(2)
  2075.         CALL ReadAny
  2076.         CALL BreakFileName (ZOutTxt$,ZWasZ$,ZWasY$,WasX$,ZTrue)
  2077.         CALL QuickTPut1 (ZFG7$ + "   " + ZWasY$+WasX$ + ZEmphasizeOff$) ' BTCH174
  2078.       WEND
  2079. 62622 CALL PrivDoorRtn                                               ' BTCH174
  2080.       END SUB
  2081. * REPLACING old line(s) by new
  2082. 62624 ' $SUBTITLE: 'PrivDoorRtn - subroutine to exit as a private door.'
  2083. ' $PAGE
  2084. '
  2085. '  NAME    -- PrivDoorRtn
  2086. '
  2087. '  INPUTS  --     PARAMETER                    MEANING
  2088. '              ZTransferFunction         = 1 DOWNLOAD FILE TO USER
  2089. '                                        = 2 UPLOAD FILE TO RBBS-PC
  2090. '                                        = 3 USER REGISTRATION PGM
  2091. '              ZUserIn$                      NAME OF FILE TO EXIT TO
  2092. '              ZComPort$                 NAME OF COMMUNICATIONS PORT
  2093. '                                        TO BE USED BY KERMIT (COM1
  2094. '                                        OR COM2)
  2095. '              ZBPS                      = -1 FOR   300 BAUD
  2096. '                                        = -2 FOR   450 BAUD
  2097. '                                        = -3 FOR  1200 BAUD
  2098. '                                        = -4 FOR  2400 BAUD
  2099. '                                        = -5 FOR  4800 BAUD
  2100. '                                        = -6 FOR  9600 BAUD
  2101. '                                        = -7 FOR 19200 BAUD
  2102. '
  2103. '  OUTPUTS -- NONE
  2104. '
  2105. '  PURPOSE -- To transfer control to another program
  2106. '
  2107.       SUB PrivDoorRtn STATIC
  2108.       IF ZPrivateDoor THEN _
  2109.          GOTO 62630
  2110.       IF ZFakeXRpt THEN _
  2111.          CALL FakeXRpt (ZWasFT$)
  2112.       IF ZAdvanceProtoWrite THEN _
  2113.          CALL OpenOutW ("XFER-"+ZNodeID$+".DEF") : _
  2114.          IF ZErrCode < 1 THEN _
  2115.             CALL PrintWorkA (ZFileName$+",,"+ZWasFT$) : _
  2116.             CLOSE 2
  2117. * ------[ first line different ]------
  2118.       IF (ZTransferFunction = 1 AND LEFT$(ZProtoMethod$,1) = "S") OR _ ' KG020501
  2119.          (ZTransferFunction = 2 AND RIGHT$(ZProtoMethod$,1) = "S") THEN _ ' KG020501
  2120.          GOTO 62629
  2121. * REPLACING old line(s) by new
  2122. 62629 GOSUB 62633
  2123. * ------[ first line different ]------
  2124.       CALL LPrnt (ZOutTxt$,1)
  2125.       CALL ShellExit (ZUserIn$)
  2126. * REPLACING old line(s) by new
  2127. * ------[ first line different ]------
  2128. 62633 ZOutTxt$ = ZFG7$ + STR$(ZUserSecLevel) + _                     ' RM100502
  2129.                  " " + _
  2130.                  ZActiveUserName$ + _
  2131.                  " " + _
  2132.                  ZWasCI$ + ZEmphasizeOff$                            ' RM100502
  2133.       RETURN
  2134.       END SUB
  2135. * REPLACING old line(s) by new
  2136. 62660 ' $SUBTITLE: 'SetExpert - subroutine to adjust for expert change'
  2137. ' $PAGE
  2138. '
  2139. '  NAME    --  SetExpert
  2140. '
  2141. '  INPUTS  --  PARAMETER                   MEANING
  2142. '              ZExpertUser          WHETHER IS AN EXPERT
  2143. '
  2144. '  OUTPUTS --  ZMorePrompt$         Pause prompt
  2145. '              ZPressEnter$         Prompt to press enter
  2146. '
  2147. '  PURPOSE --  Make more helpful prompt for novices and shorter
  2148. '              one for experts
  2149. '
  2150.       SUB SetExpert STATIC
  2151.       IF ZExpertUser THEN _
  2152. * ------[ first line different ]------
  2153.          ZMorePrompt$ = "More ([Y],N,C,A" : _                        ' RM02179401
  2154.          ZPressEnter$ = ZPressEnterExpert$ : _
  2155.          EXIT SUB
  2156.       ZMorePrompt$ = "More [Y]es,N)o,C)ont,A)bort"
  2157.       ZPressEnter$ = ZPressEnterNovice$
  2158.       END SUB
  2159. * REPLACING old line(s) by new
  2160. 62670 ZOutTxt$ = Prompt$
  2161.       ZMacroMin = 99
  2162.       ZHidden = ZTrue
  2163.       CALL PopCmdStack
  2164.       ZHidden = ZFalse
  2165.       IF ZSubParm < 0 OR ZWasQ = 0 THEN _
  2166.          EXIT SUB
  2167. * ------[ first line different ]------
  2168.       ZOutTxt$ = ""                                                  ' UG070508
  2169.       IF LEN(ZUserIn$) > 15 THEN _
  2170.          ZOutTxt$ = "15 chars max"                                   ' UG070508
  2171.       IF INSTR(ZUserIn$,";") > 0 THEN _
  2172.          ZOutTxt$ = "Cannot use ';'"                                 ' UG070508
  2173.       IF DisallowSpaces THEN _
  2174.          IF ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  2175.             ZOutTxt$ = "Not all blanks"                              ' UG070508
  2176.       IF ZOutTxt$ <> "" THEN _                                       ' UG070508
  2177.          CALL QuickTPut1(ZOutTxt$) : _                               ' UG070508
  2178.          GOTO 62670                                                  ' UG070508
  2179.       CALL AllCaps (ZUserIn$)
  2180.       ZWasZ$ = ZUserIn$
  2181.       END SUB
  2182. * REPLACING old line(s) by new
  2183. 64003 ' $SUBTITLE: 'AskUsers - subroutine to get registration information'
  2184. ' $PAGE
  2185. '
  2186. '  NAME    --  AskUsers  (WRITTEN BY JON MARTIN)
  2187. '
  2188. '  INPUTS  --  PARAMETER                   MEANING
  2189. '              ZFileName$           NAME OF THE FILE CONTAINING THE
  2190. '                                   SCRIPT TO BE USED WHEN ASKING
  2191. '                                   THE USER QUESTIONS.
  2192. '              ZActiveUserName$     NAME OF THE CURRENT USER
  2193. '              ZUserSecLevel        USER'S SECURITY
  2194. '              ZUpperCase           SET IF USER NEEDS UPPERCASE
  2195. '
  2196. '  OUTPUTS --  WRITE THE USER'S RESPONSES TO THE QUESTIONS TO THE
  2197. '              FILE NAME SPECIFIED AS THE First PARAMETER IN THE
  2198. '              First RECORD OF THE FILE CONTAINING THE SCRIPT TO
  2199. '              BE USED.
  2200. '              ZUserSecLevel  CAN BE RAISED OR LOWERED
  2201. '
  2202. '  PURPOSE --  Provides a sophisticated, script driven mechanism by
  2203. '              which a sysop can control the interaction with the
  2204. '              user.  Special function questionnaires include the
  2205. '              registration questionnaire and the epilog.
  2206. '
  2207.       SUB AskUsers STATIC
  2208.       ZQuestAborted = ZFalse
  2209.       ZQuestChainStarted = ZFalse
  2210. * ------[ first line different ]------
  2211.       Temp = 256                                                     ' RM08299301
  2212.       REDIM ZOutTxt$(Temp)                                           ' RM08299301
  2213.       REDIM ZWorkAra$(ZMaxWorkVar),ZGSRAra$(ZMaxWorkVar)
  2214.       PrevAppend$ = ""
  2215.       AppendFileName$ = ""
  2216. '
  2217. '
  2218. ' *  LOAD SCRIPT CONTAINING THE QUESTIONS INTO THE ZOutTxt$ DIMENSION  *
  2219. '
  2220. '
  2221. * REPLACING old line(s) by new
  2222. 64636 IF ZAnsIndex < ZLastIndex THEN _
  2223.          GOTO 64638
  2224.       ZOutTxt$ = "A)utodwnld   B)ullet  C)ase     F)ile   H)ilite"
  2225.       CALL TopPrompt
  2226.       ZOutTxt$ = "L)ine feeds  N)ulls   T)urboKey X)pert  !)bell"
  2227. * ------[ first line different ]------
  2228.       CALL TopPrompt                                                 ' RCHAT401
  2229.       ZOutTxt$ = "I)nternode Chat Page Availability"                 ' RCHAT401
  2230.       CALL ColorPrompt (ZOutTxt$)
  2231. * REPLACING old line(s) by new
  2232. 64638 ZStackC = ZTrue
  2233.       ZTurboKey = -ZTurboKeyUser
  2234.       CALL PopCmdStack
  2235.       IF ZWasQ=0 OR ZSubParm < 0 THEN _
  2236.          EXIT SUB
  2237.       ZWasZ$ = ZUserIn$(ZAnsIndex)
  2238.       CALL AllCaps (ZWasZ$)
  2239. * ------[ first line different ]------
  2240.       ZFF = INSTR("ABCFHLNTX!I",ZWasZ$)                              ' RCHAT401
  2241.       IF ZFF < 1 THEN _
  2242.          GOTO 64636
  2243.       CALL Toggle (ZFF)
  2244.       GOTO 64636
  2245.       END SUB
  2246.       SUB TopPrompt STATIC
  2247.       CALL ColorPrompt (ZOutTxt$)
  2248.       CALL QuickTPut1 (ZOutTxt$)
  2249.       END SUB
  2250. * REPLACING old line(s) by new
  2251. 64645 ' * sets new user defaults
  2252.       ' * formerly 12900 of rbbs-pc.bas
  2253.       SUB SetNewUserDef STATIC
  2254.       LSET ZUserName$ = ZActiveUserName$
  2255.       LSET ZUserOption$ = MKI$(0) + _
  2256.                            MKI$(0) + _
  2257.                            " 0" + _
  2258.                            MKI$(64) + _
  2259.                            MKI$(16) + _
  2260.                            MKI$(0) + _
  2261.                            CHR$(23) + _
  2262.                            ZDefaultEchoer$
  2263.       LSET ZUserDnlds$ = MKI$(0)
  2264.       LSET ZUserUplds$ = MKI$(0)
  2265.       IF ZEnforceRatios THEN _
  2266.          LSET ZTodayDl$ = MKS$(0) : _
  2267.          LSET ZTodayBytes$ = MKS$(0) : _
  2268.          LSET ZDlBytes$ = MKS$(0) : _
  2269.          LSET ZULBytes$ = MKS$(0)
  2270.       LSET ZSecLevel$ = MKI$(ZTempSecLevel)
  2271.       LSET ZElapsedTime$ = MKI$(0)
  2272. * ------[ first line different ]------
  2273.       LSET ZDropTimes$ = CHR$(0)                                     ' DROP174
  2274.       LSET ZBankTime$ = CHR$(0)
  2275.       END SUB
  2276.