SET TTHRU OFF ; Must be 1st line to suppress typethrough LEGEND "HOST Setup ver 1.0" ;**** TRACE ON ; Debugging ; ; ----- COM-AND HOST setup script ; Commenced: 11/90 R.McG ; ----------------------------------------------------------------------- ; Purpose: ; This script, named HOSETUP.CMD, is executed to setup the HOST ; script (version 1.1). Setup 1) identifies the port and modem ; control values, 2) identifies the ID/passwords to be used. ; ----------------------------------------------------------------------- ; ; 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 ; ; 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 HOSTDAT ; .. NOTE: S29 returns the file name to use for writes to HOSTDAT ; Init: S20 = "_PARM"(11:14)*","*"_PARM"(0:3) ; Port(4),speed(4) S21 = "ATE0Q0V1X1S0=2 S7=30 S9=10^M" ; Standard MINIT for HOST S22 = "****" ; Default logon password S23 = "xxxx" ; Default DOS mode password S24 = "" ; Default Drop-to-DOS command ; ; Replace above values from HOSTDAT if that script exists ; IF ISSC "HOSTDAT" ; If file exists on dft subdir or COM-AND= FCALL "HOSTDAT" ; .. environment var, execute it ENDIF RETURN ; Done init ; ----------------------------------------------------------------------- ; ----- Subroutine: Save -> Save values in HOSTDAT ; .. HOSTDAT is placed in dft subdir; create file if need be ; Save: ; ; Construct a file name on the appropriate directory ; S1 = "" ; Initialize file name string IF NOT ISFIL "HOSTDAT" ; 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&"HOSTDAT" ; Add the necessary file name ; ; Open the file, write the file, and close it ; FOPENO S1 TEXT ; Open the file name so constructed IF NOT SUCCESS S0 = "Error opening HOSTDAT file: "*S1 GOSUB Error ; Report RETURN ; And we're done ENDIF ; ; Write values we have as of now ; WRITE "; --- HOST 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 logon password WRITE "S23=`""*S23&"`"!"; Write DOSmode password S0 = "S24=`""*S24&"`"" ; Setup Drop-to-DOS command PRESERVE S0 ; Preserve carets, grave, and bangs WRITE S0 ; Write DOSmode password WRITE "!" ; Write terminating cr for drop-to-dos line 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: Main -> main menu ; Main: WOPEN 0,0 23,79 (defa) Main_ESC ATSAY 0,2 (defa) " HOST Setup " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " Main100: CLEAR ; Clear window LOCATE 2,2 MESS " 1) Identify modem values" MESS " 2) Identify passwords" MESS " 3) Define DROP-to-DOS command" MESS "_______________________________________" MESS " " MESS " Port and speed is: "*S20 S0 = S21 ; Copy control string PRESERVE S0 ; Make it printable MESS " Modem control is: "*S0 MESS " Logon password is: "*S22 MESS " DOS password is: "*S23 MESS " Drop to DOS command is: " S0 = S24 PRESERVE S0 ; Make it printable MESS " "*S0 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 Modem ENDCASE CASE "2" GOSUB Password ENDCASE CASE "3" GOSUB DropDOS 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) " HOST Modem " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " 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 " " 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) " HOST Port " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " LOCATE 2,2 MESS "The HOST is currently directed to run on the port: "*S20(0:3) MESS " " MESS "The HOST may use any port COM1 through COM4. If you wish to use a port" MESS "other 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) " HOST Speed " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " LOCATE 2,2 MESS "The HOST currently defaults to wait for call at: "*S20(5:8)*" baud" MESS " " MESS "The HOST 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) " HOST Control " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " LOCATE 2,2 MESS "The HOST 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 (default '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: Password -> Update passwords used by HOST ; Password: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " HOST passwords " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " SUBD100: CLEAR LOCATE 2,2 MESS " 1) Identify LOGON password" MESS " 2) Identify DOS mode password" MESS "__________________________________" MESS " " MESS " Logon password is: "*S22 MESS " DOS password is: "*S23 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 Logon ENDCASE CASE "2" GOSUB DOS 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: Logon -> Set the logon password ; Logon: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " HOST Logon password " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " LOCATE 2,2 MESS "The Logon password is: " MESS S22 MESS " " MESS "The logon password must be set for any HOST access. Callers may use any ID" MESS "but MUST specify this password to have access." MESS " " MESS "HOST Logon password (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 60 ; Wait for entry IF NULL S0 GOTO LOPAEND ; Nothing entered ; ; Save the value ; S22 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; LOPAEND: WCLOSE RETURN ; ; ----- Subroutine: DOS -> Set the DOS mode password ; DOS: WOPEN 0,0 23,79 (defa) Main_Esc ATSAY 0,2 (defa) " HOST DOS password " ATSAY 23,25 (defa) " Press ESC to cancel HOSETUP " LOCATE 2,2 MESS "The DOS mode password is: " MESS S23 MESS " " MESS "The DOS password must be set for access to DOS mode through HOST. This " MESS "password is a second password - not the same as the Logon password." MESS " " MESS "HOST DOS password (carriage return accepts): " ; ; Wait for entry, and interpret ; S0 = " " ; Default value GET S0 60 ; Wait for entry IF NULL S0 GOTO DOPAEND ; Nothing entered ; ; Save the value ; S23 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; DOPAEND: 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 = S24 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 ; S24 = S0 ; Set new value GOSUB Save ; Save the new value ; ; End of window ; DRDOEND: WCLOSE RETURN