SET TTHRU OFF ; Must be 1st line to suppress typethrough LEGEND "BBS Setup ver 1.0" ;**** TRACE ON ; Debugging ; ; ----- COM-AND BBS setup script ; Commenced: 11/90 R.McG ; ----------------------------------------------------------------------- ; Purpose: ; This script, named BBSETUP.CMD, is executed to setup the BBS ; script (version 1.1). Setup 1) identifies the port and modem ; control values, 2) identifies (and creates) the subdirs to be ; used. The script BBMAINT is used to update related files. ; ----------------------------------------------------------------------- ; NOTE: This script expects to find a file named BBSDAT on 1) the ; current subdirectory, 2) The COM-AND= environment var specified ; subdirectory, or 3) the subdirectory where THIS script resides. ; If this file is found, it will be overwritten subsequently. If ; NOT found, BBSDAT will be created on the subdir where COM-AND= ; points. S29 is used to keep the file name (subroutine INIT). ; ----------------------------------------------------------------------- ; ; Establish a DWINDOW, and change the text display to window default. ; .. Save the previous text display attribute, for restoration later. ; DWIND 1,2 22,78 ; Establish scrolling region N99 = "_TEXT" ; Save original text attr SET TEXT "_DEFA" ; Set text attr SET FLAG(9) OFF ; Note if we did any saves ; ; Perform tasks ; GOSUB Init ; Setup initial values GOSUB Main ; Paint main screen ;*** GOSUB ChkSave ; Check if save needed GOSUB ChkAll ; Check if subd's exist ; ; Exit the script ; Escape: Exit: SET TEXT N99 ; Reset text attr finally DWINDOW CLEAR ; Clear any scrolling region CLEAR ; Clear entire text window EXIT ; ----------------------------------------------------------------------- ; ----- Subroutine: Init -> Set initial values from BBSDAT ; .. NOTE: S29 returns the file name to use for writes to BBSDAT ; Init: S20 = "_PARM"(11:14)*","*"_PARM"(0:3) ; Port(4),speed(4) S21 = "ATE0Q0V1X1S0=2 S7=30 S9=10^M" ; Standard MINIT for BBS S22 = "\BBS" ; Set to our subdirectory S23 = "\BBS\FILES" ; Set subdir for files S24 = "\BBS\MAIL" ; Set subdir for mail S25 = "\BBS\BULLETIN" ; Set subdir for bulletins S26 = "" ; Doorway command ; ; Replace above values from BBSDAT, if that script exists ; S29 = "" ; Make value null IF ISSC "BBSDAT" ; If file exists on dft subdir or COM-AND= FCALL "BBSDAT" ; .. execute it ELSE S10 = "_SCRIPT" ; Get current script fname GOSUB Parse_Fname ; Extract drive:Subdir from name S10 = S10*"\BBSDAT" ; Make new name IF ISSC S10 ; Invoke it if its THERE FCALL S10 ; Invoke it S29 = S10 ; Save for later ENDIF ENDIF RETURN ; Done init ; ----------------------------------------------------------------------- ; Subroutine: Parse drive:subdirectory from file name ; ; S10 passes fully name S10 returns drive:subdirectory ; S11 returns file name ; N10,N11 are scratch values ; ----------------------------------------------------------------------- ; Parse_Fname: LENGTH S10 N10 ; Find length of string FOR N11 = (N10-1),0,-1 ; Scan backwards through string IF STRCMP S10(N11:N11) ":" or STRCMP S10(N11:N11) "\" GOTO PAFN100 ENDFOR S11 = S10 ; No drive or path S10 = "" ; Return null drive:path spec RETURN ; ; Extract drive and path from name; N11 points to ":" or "\" ; PAFN100: S11 = S10(N11+1:N10) ; Extract name portion IF STRCMP S10(N11:N11) "\" DEC N11 S10 = S10(0:N11) ; Save ":", remove last "\" RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: Save -> Save values in BBSDAT ; .. BBSDAT is placed in dft subdir; create file if need be ; Save: IF NULL S29 ; If INIT did not set a name ; ; Construct a file name on the appropriate directory ; S1 = "" ; Initialize file name string IF NOT ISFIL "BBSDAT"; If not on current subdir ENVIRON S1 "COM-AND="; Look for COM-AND= environment var IF FOUND ; If environment variable found LENGTH S1 N0 ; Get its length N0 = N0-1 ; Point to last char in string IF not STRCMP S1(n0:n0) "\" N0 = N0+1 ; Point after last char CONCAT S1(n0) "\" ENDIF ENDIF ENDIF S1 = S1&"BBSDAT" ; Add the necessary file name ELSE S1 = S29 ; Else use name set by INIT ; ; Open the file, write the file, and close it ; FOPENO S1 TEXT ; Open the file name so constructed IF NOT SUCCESS S0 = "Error opening BBSDAT file: "*S1 GOSUB Error ; Report RETURN ; And we're done ENDIF S29 = "_OFILE" ; Save file name we opened ; ; Write values we have as of now ; WRITE "; --- BBS initialization !" ; Write initial comments WRITE "; Updated "*"_DATE"*", at "*"_TIME"*"!" WRITE ";!" ; Write initial comments WRITE "S20=`""*S20&"`"!" ; Write port and speed S0 = S21 ; Copy control string PRESERVE S0 ; Make it printable WRITE "S21=`""*S0&"`"!" ; Write modem control string WRITE "S22=`""*S22&"`"!"; Write BBS subdir WRITE "S23=`""*S23&"`"!"; Write BBS files subdir WRITE "S24=`""*S24&"`"!"; Write BBS mail subdir WRITE "S25=`""*S25&"`"!"; Write BBS bulletin subdir WRITE "S26=`""*S26&"`"!"; Write doorway command WRITE "FRETURN!^Z " ; Write end of file ; ; Close the file and we're done ; SET FLAG(9) ON ; Note we did ONE save FCLOSEO ; Close the file RETURN ; And we're done ; ----------------------------------------------------------------------- ; ----- Error: Open a window, display a message, and wait for keypress ; S0 passes the error message ; Error: WOPEN 10,10,12,70 (cont) Err_Esc ATSAY 10,12 (cont) " Error " ATSAY 11,12 (cont) S0(0:55); Max msg width 55 chars ATSAY 12,26 (cont) " Press any key to continue " ; ; Wait a keypress ; KEYGET S0 ; Wait for any key WCLOSE Err_Esc: RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: ChkSave -> Save file? ; ChkSave: IF FLAG(9) RETURN ; At least one save was performed WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Save " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " CHSA100: CLEAR ; Clear window LOCATE 2,2 MESS " Do you wish to save the current values? (y/n) " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " Port and speed is: "*S20 S0 = S21 ; Copy control string PRESERVE S0 ; Make it printable MESS " Modem control is: "*S0 MESS " BBS main subdir is: "*S22 MESS " Files subdir is: "*S23 MESS " Mail subdir is: "*S24 MESS " Bulletin subdir is: "*S25 MESS " Doorway command is: "*S26 MESS " " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS "Enter y or n (carriage return = n): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it IF NULL S0 GOTO CHSA200 ; If c/r, simply return SWITCH S0 ; Act according to keyget CASE "y" ; Case insensitive GOSUB Save GOTO CHSA200 ENDCASE CASE "n" ; Case insensitive GOTO CHSA200 ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO CHSA100 ; Repaint screen and ask again ; ; Exit, closing the window ; CHSA200: WCLOSE RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: ChkAll -> Check for subdir creation req'd ; ChkAll: WOPEN 10,10 12,70 (cont) ATSAY 10,12 (cont) " BBS Subdirs " ATSAY 11,12 (cont) " Checking existance of subdirs... " PAUSE 1 ; Make it visible ; ; Test for the existence of all subdirectories ; SET FLAG(0) ON FFIRST S22&"\*.*" ; test for Main subd IF SUCCESS SET FLAG(0) OFF SET FLAG(1) ON FFIRST S23&"\*.*" ; test for File subd IF SUCCESS SET FLAG(1) OFF SET FLAG(2) ON FFIRST S24&"\*.*" ; test for Mail subd IF SUCCESS SET FLAG(2) OFF SET FLAG(3) ON FFIRST S25&"\*.*" ; test for Main subd IF SUCCESS SET FLAG(3) OFF WCLOSE ; Close window we opened IF NOT (FLAG(0) or FLAG(1) or FLAG(2) or FLAG(3)) RETURN ; ; Ask if we're to create subdirs ; WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Subdirs " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " ; ; Display subdirs that do not exist ; CHAL100: CLEAR ; Clear window LOCATE 2,2 IF FLAG(0) MESS S22&" does not exist" IF FLAG(1) MESS S23&" does not exist" IF FLAG(2) MESS S24&" does not exist" IF FLAG(3) MESS S25&" does not exist" MESS " " ; Blank separator MESS " Do you wish to create the missing subdirs? (y/n) " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " " MESS "Enter y or n (carriage return = n): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it IF NULL S0 GOTO CHAL200 ; If c/r, simply return SWITCH S0 ; Act according to keyget CASE "y" ; Case insensitive GOSUB CreateSd GOTO CHAL200 ENDCASE CASE "n" ; Case insensitive GOTO CHAL200 ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO CHAL100 ; Repaint screen and ask again ; ; Exit, closing the window ; CHAL200: WCLOSE RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: Main -> main menu ; Main: WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Setup " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " ; ; Paint the menu ; Main100: CLEAR ; Clear window LOCATE 2,2 MESS " 1) Identify subdirectories used by BBS; Do this 1st!!" MESS " 2) Create BBS subdirectories and files; Do this 2nd!!" MESS " 3) Identify modem values; ..." MESS " 4) Identify doorway command (if any). Finally..." IF ISSCRIPT "BBMaint" MESS " 5) Invoke maintenance script" IF ISSCRIPT "BBS" MESS " 6) Invoke the BBS" MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " Port and speed is: "*S20 S0 = S21 ; Copy control string PRESERVE S0 ; Make it printable MESS " Modem control is: "*S0 MESS " BBS main subdir is: "*S22 MESS " Files subdir is: "*S23 MESS " Mail subdir is: "*S24 MESS " Bulletin subdir is: "*S25 MESS " Drop to DOS command is: " S0 = S26 PRESERVE S0 ; Make it printable MESS " "*S0 MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS "BBSMAINT is used to update files once you have SETUP" MESS " " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS "Select item (carriage return = exit): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it SWITCH S0 ; Act according to keyget CASE "1" GOSUB Subdirs ENDCASE CASE "2" GOSUB ChkAll ENDCASE CASE "3" GOSUB Modem ENDCASE CASE "4" GOSUB DropDOS ENDCASE CASE "5" IF ISSCRIPT "BBMaint" WCLOSE ; Close open window SET TEXT N99 ; Reset text attr finally DWINDOW CLEAR ; Clear any scrolling region CLEAR ; Clear entire text window EXECUTE "BBMaint" ; Chain to it ENDIF ENDCASE CASE "6" IF ISSCRIPT "BBS" WCLOSE ; Close open window SET TEXT N99 ; Reset text attr finally DWINDOW CLEAR ; Clear any scrolling region CLEAR ; Clear entire text window EXECUTE "BBS" ; Chain to it ENDIF ENDCASE CASE "_NULL" ; c/r alone is exit WCLOSE ; Close window... RETURN ; Leave Main routine ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO Main100 ; Repaint screen and ask again ; ----------------------------------------------------------------------- ; ----- Subroutine: Modem -> modem values ; Modem: WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Modem " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " ; ; Paint the menu ; MODE100: CLEAR ; Clear window LOCATE 2,2 MESS " 1) Identify modem port" MESS " 2) Identify modem speed" MESS " 3) Identify modem control string" MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " Port and speed is: "*S20 S0 = S21 ; Copy control string PRESERVE S0 ; Make it printable MESS " Modem control is: "*S0 MESS " " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS "Select item (carriage return = previous): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it SWITCH S0 ; Act according to keyget CASE "1" GOSUB Modem_Port ENDCASE CASE "2" GOSUB Modem_Speed ENDCASE CASE "3" GOSUB Modem_Control ENDCASE CASE "_NULL" ; c/r alone is exit WCLOSE ; Close window... RETURN ; Leave Main routine ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO MODE100 ; Repaint screen and ask again ; ; Escape during main ; Main_Esc: S0 = "" ; Blank entry RETURN ; And execute it ; ; ----- Subroutine: Modem_port -> Set default modem port to use ; Modem_Port: WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Port " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS is currently directed to run on the port: "*S20(0:3) MESS " " MESS "The BBS may use any port COM1 through COM4. If you wish to use a port other" MESS "than the above, enter it here." MESS " " MESS "Port (carriage rtn alone accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 4 ; Wait for a char IF NULL S0 GOTO MOPOEND ; Nothing entered IF NOT FIND S0(0:2) "com" GOTO MOPOERR IF S0(3) LT 1 or S0(3) GT 4 GOTO MOPOERR ; ; Save the value ; S20(0:3) = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; MOPOEND: WCLOSE RETURN ; ; Error in input string ; MOPOERR: SOUND 100,100 ; Bronx cheer GOTO Modem_Port ; And try again ; ; ----- Subroutine: Modem_Speed -> Set default modem speed to use ; Modem_Speed: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS Speed " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS currently defaults to wait for call at: "*S20(5:8)*" baud" MESS " " MESS "The BBS may wait for a call at any rate you wish. If you wish to use a " MESS "speed other than the above, enter it here. Legitimate speeds are: 300," MESS "1200, 2400, 4800, 9600, and 19.2" MESS " " MESS "Speed (carriage rtn alone accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 4 ; Wait for a char IF NULL S0 GOTO MOSPEND ; Nothing entered IF NOT FIND "300 300120024004800960019.2" S0(0:2) N0 GOTO MOSPERR IF 4*(N0/4) ne N0 GOTO MOSPERR ; ; Save the value ; S20(5:8) = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; MOSPEND: WCLOSE RETURN ; ; Error in input string ; MOSPERR: SOUND 100,100 ; Bronx cheer GOTO Modem_Speed ; And try again ; ; ----- Subroutine: Modem_Control -> Set the modem initialization string to use ; Modem_Control: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS Control " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS currently is set to initialize the modem with: " S0 = S21 ; Fetch value PRESERVE S0 ; Preserve for printing MESS S0 ; Display string MESS " " MESS "The initialization string must be correct for your modem. Please refer to " MESS "the documentation that came with your modem. The init string will probably" MESS "begin with modem attention (defa 'AT'), MUST enable autoanswer, and will" MESS "probably end with a carriage return. " MESS " " MESS "Please note: Enter '^^A' through '^^Z' to indicate control chars, '^^^^ for'" MESS "a single caret, '!!' for a carriage return (or '^^M') and '!!!!' for a single" MESS "exclamation point." MESS " " MESS "Control string (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 50 ; Wait for a char IF NULL S0 GOTO MOCOEND ; Nothing entered ; ; Save the value ; S21 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; MOCOEND: WCLOSE RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: CreateSd -> Create subdirectories ; .. Flags 0-3 control ; CreateSd: IF FLAG(0) ; Main subd does not exist S0 = S22 ; Set-up passed parm GOSUB Create ; Attempt to create it GOSUB NewUser ; Create needed file (if d.n.e) ENDIF IF FLAG(1) ; File subd does not exist S0 = S23 ; Set-up passed parm GOSUB Create ; Attempt to create it GOSUB NewFile ; Create needed file (if d.n.e) ENDIF IF FLAG(2) ; Mail subd does not exist S0 = S24 ; Set-up passed parm GOSUB Create ; Attempt to create it GOSUB NewMail ; Create needed file (if d.n.e) ENDIF IF FLAG(3) ; Bulletin subd does not exist S0 = S25 ; Set-up passed parm GOSUB Create ; Attempt to create it GOSUB NewBull ; Create needed file (if d.n.e) ENDIF RETURN ; ; ----- Subroutine: CheckSd -> Create an subdirectories ; .. Flags 0-3 control ; CheckSd: FFIRST S0&"\*.*" ; Test for existence of subdir IF SUCCESS RETURN ; Return if it exists GOSUB Create ; Attempt to create it RETURN ; ; ----- Subroutine: Create -> Create a subdirectory ; .. S0 passes the subdirectory to create ; Create: MDIR S0 ; Attempt to create subdir IF FAILURE ; Set-up passed parm S0 = "Error creating: "*S0 GOSUB Error ; Report the error SET SUCCESS OFF ; Return FAILED condition ENDIF RETURN ; ; ----- Subroutine: NewUser -> Create a new BBS-User file ; NewUser: IF ISFILE S22&"\BBS-User" RETURN FOPENO S22&"\BBS-User" TEXT IF NOT SUCCESS ; Open failed S0 = "Error creating: "*S22&"\BBS-User" GOSUB Error ; Report RETURN ; And we're done ENDIF WRITE "!^Z" ; Make it empty FCLOSEO ; Done with it RETURN ; ; ----- Subroutine: NewFile -> Create a new BBS-File file ; NewFile: IF ISFILE S23&"\BBS-File" RETURN FOPENO S23&"\BBS-File" TEXT IF NOT SUCCESS ; Open failed S0 = "Error creating: "*S23&"\BBS-File" GOSUB Error ; Report RETURN ; And we're done ENDIF WRITE "!^Z" ; Make it empty FCLOSEO ; Done with it RETURN ; ; ----- Subroutine: NewMail -> Create a new BBS-Mail file ; NewMail: IF ISFILE S24&"\BBS-Mail" RETURN FOPENO S24&"\BBS-Mail" TEXT IF NOT SUCCESS ; Open failed S0 = "Error creating: "*S24&"\BBS-Mail" GOSUB Error ; Report RETURN ; And we're done ENDIF WRITE "!^Z" ; Make it empty FCLOSEO ; Done with it RETURN ; ; ----- Subroutine: NewBull -> Create a new BBS-Bull file ; NewBull: IF ISFILE S25&"\BBS-Bull" RETURN FOPENO S25&"\BBS-Bull" TEXT IF NOT SUCCESS ; Open failed S0 = "Error creating: "*S25&"\BBS-Bull" GOSUB Error ; Report RETURN ; And we're done ENDIF WRITE "!^Z" ; Make it empty FCLOSEO ; Done with it RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: NewDat -> Ask if a new BBSDAT file is to be placed? ; NewDat: IF NULL S29 AND NOT ISSC "BBSDAT" RETURN WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Subdirs " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " NEDA100: CLEAR ; Clear window LOCATE 2,2 MESS "Do you wish to place BBSDAT on the new BBS main subdirectory? (y/n) " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " " IF NOT NULL S29 MESS "BBSDAT is currently: "*S29 ELSE S0 = "_SUBD"&"\BBSDAT" IF NOT ISFILE "BBSDAT" ENVIRON S0 "COM-AND="; Look for COM-AND= environment var IF FOUND ; If environment variable found LENGTH S0 N0 ; Get its length N0 = N0-1 ; Point to last char in string IF STRCMP S0(n0:n0) "\" S0(n0:n0) = "" S0 = S0&"\BBSDAT" ENDIF ENDIF IF ISFILE S0 MESS "BBSDAT is now: "*S0 ELSE MESS "BBSDAT would be: "*S0 ENDIF ENDIF MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " " MESS "Enter y or n (carriage return = y): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it IF NULL S0 GOTO NEDA200 ; If c/r, simply accept SWITCH S0 ; Act according to keyget CASE "y" ; Case insensitive GOTO NEDA200 ENDCASE CASE "n" ; Case insensitive WCLOSE ; DO nothing RETURN ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO NEDA100 ; Repaint screen and ask again ; ; Construct the other subdir names ; NEDA200: S29 = S22&"\BBSDAT" WCLOSE RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: DftSds -> Main subdir changed - default the others? ; DftSds: WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " BBS Subdirs " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " DFSD100: CLEAR ; Clear window LOCATE 2,2 MESS " Do you wish to use the new main subdir as the root for others? (y/n) " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " BBS main subdir is now: "*S22 MESS " Files subdir WOULD be: "*S22&"\Files" MESS " Mail subdir WOULD be: "*S22&"\Mail" MESS " Bulletin subdir WOULD be: "*S22&"\Bulletin" MESS " " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS "Enter y or n (carriage return = y): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it IF NULL S0 GOTO DFSD200 ; If c/r, simply accept SWITCH S0 ; Act according to keyget CASE "y" ; Case insensitive GOTO DFSD200 ENDCASE CASE "n" ; Case insensitive WCLOSE ; DO nothing RETURN ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO DFSD100 ; Repaint screen and ask again ; ; Construct the other subdir names ; DFSD200: S23 = S22&"\Files" S24 = S22&"\Mail" S25 = S22&"\Bulletin" WCLOSE RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: Subdirs -> Update subdirectories used by BBS ; Subdirs: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS Subdirs " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " SUBD100: CLEAR LOCATE 2,2 MESS " 1) Identify BBS main subdir" MESS " 2) Identify BBS Files subdir" MESS " 3) Identify BBS Mail subdir" MESS " 4) Identify BBS Bulletins subdir" MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS " Main subdir is: "*S22 MESS " Files subdir is: "*S23 MESS " Mail subdir is: "*S24 MESS " Bulletin subdir is: "*S25 MESS " " MESS "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " MESS "Select item (carriage return = previous): " ; ; Wait for a keypress ; GET S0 1 ; Wait for it SWITCH S0 ; Act according to keyget CASE "1" GOSUB MainSd ENDCASE CASE "2" GOSUB FileSd ENDCASE CASE "3" GOSUB MailSd ENDCASE CASE "4" GOSUB BullSd ENDCASE CASE "_NULL" ; c/r alone is exit WCLOSE ; Close window... RETURN ; Leave Main routine ENDCASE DEFAULT ; None of the above SOUND 100,100 ; Bronx cheer ENDCASE ENDSWITCH GOTO Subd100 ; Repaint screen and ask again ; ; ----- Subroutine: MainSd -> Set the main subdirectory ; MainSd: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS Main Subdir " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS main subdirectory is: " MESS S22 MESS " " MESS "The main subdirectory must exist (it will be created if need be), and will " MESS "contain at least one file (BBS-User). The user ID file (BBS-User) residing" MESS "there may be updated with from the main menu of this script." MESS " " MESS "BBS Main subdir (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 50 ; Wait for a char IF NULL S0 GOTO MASDEND ; Nothing entered GOSUB CheckSd ; Test for create needed IF FAILED GOTO MASDEND ; Skip if create failed ; ; Save the value ; S22 = S0 ; Set new value GOSUB NewUser ; Create needed file (if d.n.e) GOSUB DftSds ; Ask if we're to default the other subdirs GOSUB NewDat ; Ask if a new BBSDAT to be used GOSUB Save ; Save the new value ; ; End of window ; MASDEND: WCLOSE RETURN ; ; ----- Subroutine: FileSd -> Set the file subdirectory ; FileSd: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS File Subdir " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS file subdirectory is: " MESS S23 MESS " " MESS "The main subdirectory must exist (it will be created if need be), and will " MESS "contain at least one file (BBS-File). The file list (BBS-File) residing" MESS "there may be updated with from the main menu of this script." MESS " " MESS "BBS File subdir (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 50 ; Wait for a char IF NULL S0 GOTO FISDEND ; Nothing entered GOSUB CheckSd ; Test for create needed IF FAILED GOTO FISDEND ; Skip if create failed GOSUB NewFile ; Create needed file (if d.n.e) ; ; Save the value ; S23 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; FISDEND: WCLOSE RETURN ; ; ----- Subroutine: MailSd -> Set the mail subdirectory ; MailSd: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS Mail Subdir " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS Mail subdirectory is: " MESS S24 MESS " " MESS "The Mail subdirectory must exist (it will be created if need be), and will " MESS "contain at least one file (BBS-Mail). The user ID file (BBS-Mail) residing" MESS "there may be updated with from the main menu of this script." MESS " " MESS "BBS Mail subdir (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 50 ; Wait for a char IF NULL S0 GOTO MLSDEND ; Nothing entered GOSUB CheckSd ; Test for create needed IF FAILED GOTO MLSDEND ; Skip if create failed GOSUB NewMail ; Create needed file (if d.n.e) ; ; Save the value ; S24 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; MLSDEND: WCLOSE RETURN ; ; ----- Subroutine: BullSd -> Set the bulletin subdirectory ; BullSd: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " BBS Bulletin Subdir " ATSAY 23,25 (defa) " Press ESC to cancel BBSETUP " LOCATE 2,2 MESS "The BBS bulletin subdirectory is: " MESS S25 MESS " " MESS "The Bulletin subdirectory must exist (it will be created if need be), and will " MESS "contain at least one file (BBS-Bull). The user ID file (BBS-Bull) residing" MESS "there may be updated with from the main menu of this script." MESS " " MESS "BBS Bulletin subdir (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 50 ; Wait for a char IF NULL S0 GOTO BUSDEND ; Nothing entered GOSUB CheckSd ; Test for create needed IF FAILED GOTO BUSDEND ; Skip if create failed GOSUB NewBull ; Create needed file (if d.n.e) ; ; Save the value ; S25 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; BUSDEND: WCLOSE RETURN ; ----------------------------------------------------------------------- ; ----- Subroutine: DropDOS -> Define the DROP-to-DOS mode command ; DropDOS: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " HOST DropDOS command " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " LOCATE 2,2 MESS "The Drop-to-DOS command currently is: " S0 = S26 PRESERVE S0 ; Make it printable MESS S0 MESS " " MESS "The Drop-To-DOS command must execute a function such as DOORWAY for a" MESS "drop into DOS. This feature is not available if the command here is" MESS "set null. If this feature IS not null, the command here will be built" MESS "into a temporary batch file and executed on request (DOS passworded)." MESS " " MESS "HOST Drop-to-DOS command (you MUST enter new value): ^M^J" ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 70 ; Wait for entry ; ; Save the value ; S26 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; DRDOEND: WCLOSE RETURN