;***************************************************************************
;*  PROCOMM PLUS COMMAND FILE FOR DOWNLOADING UP TO 6 FILES FROM CIS       *  
;*  Using CIS QUICK B on CompuServe!                                       *
;*                                                                         *
;*  Modified by F. Schwartz, Virtusonics Corp., NY                         *
;*  Added Forum and Data Library query - works with old and new forums!    *
;*  THANKS to all previous authors & modifiers of this command stream!!!   *
;*      Prev: S. Woodward, R.K. Ash                                        *
;*                                                                         *
;*  Previous:                                                              *
;*   I TOOK S. WOODARD'S EXCELLENT FILE FOR DOWNLOADING AND MODIFIED IT SO *
;*   THE COMMAND FILE ASKS YOU FOR THE FILE NAMES BEFORE EXECUTION.        *
;*   TRY IT AND SEE WHAT YOU THINK                                         *
;*   THIS IS THE THIRD VERSION OF THE INTERACTIVE DOWNLOAD TWO ERRORS WERE *
;*   FOUND BY R.K.ASH--THE LACK OF A TEST LABEL AND A MISSING ENDCASE.     *
;*                                                                         *
;*   THIS CODE CAN USED TO EITHER DIAL THE NUMBER FOR YOU AND DOWNLOAD     *
;*   THE FILES OR YOU CAN BE POSITIONED ON CIS PAGE AND BY DEPRESSING ALT-5*
;*   YOU CAN ENTER THE DOWNLOAD PROCESS.  THERE ARE TWO AREAS THAT NEED TO *
;*   BE FIXED BEFORE YOU CAN RUN THE PROGRAM.  FIRST ENTER THE NUMBER OF   *
;*   THE PHONE DIRECTORY ENTRY FOR CIS AND ALSO ENTER YOUR USERID AND      *
;*   PASSWORD.  IT IS THEN READY TO RUN.  GOODLUCK.                        *
;***************************************************************************
     CLEAR
     MESSAGE "ENTER CIS FORUM NAME"
     GET S8
     MESSAGE " "
     MESSAGE "ENTER DATA LIBRARY NUMBER"
     GET S7
     MESSAGE " "
     MESSAGE "ENTER THE NUMBER OF FILES TO DOWNLOAD -UP TO 6-"
     GET S0 1
                                       ;CHECK AND SEE IF THERE IS AN
                                       ; ACCEPTABLE VALUE 
                                       ;IN S0
;
     SWITCH S0
             CASE "6"
                     GOSUB 6FILES      ;NEXT FILE 6?                       
             ENDCASE 
             CASE "5"
                     GOSUB 5FILES      ;NEXT FILE 5?
             ENDCASE
             CASE "4"
                     GOSUB 4FILES      ;NEXT FILE 4?
             ENDCASE
             CASE "3"
                     GOSUB 3FILES      ;NEXT FILE 3?
             ENDCASE
             CASE "2"
                      GOSUB 2FILES     ;NEXT FILE 2?
             ENDCASE
             CASE "1"
                     GOSUB 1FILES      ;NEXT FILE 1?
             ENDCASE
             DEFAULT                   ;IF NO VALID NUMBER FOUND, DO DEFAULT
                     CLEAR             ;ALERT OPPERATOR, AND PUT MESSAGE A
                     ALARM 2           ;THE SCREEN
                     MESSAGE "YOU ENTERED A BAD NUMERIC VALUE"
                     MESSAGE "ABORTING DOWNLOADS NOW."
                     EXIT              ;TERMINATE PROCESSING
     ENDSWITCH  
     MESSAGE " "
     GOTO RING
;
6FILES:
     GOSUB 5FILES
     MESSAGE " "
     MESSAGE "ENTER A FILE NAME FOR THE #6 FILE:"
     GET S6 15
     RETURN
5FILES:
     GOSUB 4FILES
     MESSAGE " "
     MESSAGE "ENTER A FILE NAME FOR THE #5 FILE:"
     GET S5 15
     RETURN
4FILES:
     GOSUB 3FILES
     MESSAGE " "
     MESSAGE "ENTER A FILE NAME FOR THE #4 FILE:"
     GET S4 15
     RETURN
3FILES:
     GOSUB 2FILES
     MESSAGE " "
     MESSAGE "ENTER A FILE NAME FOR THE #3 FILE:"
     GET S3 15
     RETURN
2FILES:
     GOSUB 1FILES
     MESSAGE " "
     MESSAGE "ENTER A FILE NAME FOR THE #2 FILE:"
     GET S2 15
     RETURN
1FILES:
     MESSAGE " "
     MESSAGE "ENTER A FILE NAME FOR THE #1 FILE:"
     GET S1 15
     RETURN
;***************************************************************************
;*   ALL OF THE PROCESSING SO FAR HAS BEEN DONE TO ENSURE IT DOESN'T       *
;*   HAPPEN WHILE YOU ARE SIGNED ON CIS.  THIS KEEPS YOUR TIME ON THE      *
;*   SYSTEM TO A MINIMUM.                                                  *
;*   NOW WE WILL PHONE CIS AND BEGIN THE DOWNLOAD PROCESS                  *
;*   MOST OF THE FOLLOWING CODE WAS WRITTEN BY S. WOODARD.  I JUST ADDED   *
;*   THE FRONT END PROCESS TO MAKE IT INTERACTIVE                          *
;***************************************************************************
RING:        
     EMULATE ANSI
     SET DATABITS 7                    ;INSURE THAT 8 DATA BITS ISN'T SELECTED
     ASSIGN S9 "0"                     ;THIS SETS THE FLAG OFF
;
;
START:                                 ;**************************************
     IF NOT CONNECTED                  ;*                                    *
             DIAL "1"                  ;*ENTER YOUR DIALING DIRECTORY NUMBER *
	     SET ENQ OFF               ;*ASSURE NO CISB!                     *
	     TRANSMIT "^C"	       ;*PROMPT CIS                          *
     ELSE                              ;*                                    *
            GOTO TEST                  ;**************************************
     ENDIF                             ;IF THE CALL HAS ALREADY BEEN
                                       ;   PLACED IT WON'T BE
     GOTO LOGON                        ;   DONE AGAIN. 
                                       ;ALSO ASSUMES THAT LOGON IS FINISHED
                                       ;AND CIS IS WAITING AT THE
                                       ;PROPER PROMPT ALREADY. 
;
;
CONNCHECK:                             ;SEE IF CALL WAS SUCCESSFUL
     IF CONNECTED                      ; ARE WE CONNECTED?
     	     PAUSE 2
             TRANSMIT "^C"             ;YES, TRY TO GET CIS'S ATTENTION
             ASSIGN S9 "1"             ;SET FLAG TO INDICATE RETRIED ONCE
             GOTO LOGON                ;GO BACK AND WAIT FOR CIS
     ELSE   
             HANGUP                    ;TRIED ALREADY. 
             PAUSE 20                  ;WAIT A BIT
     ENDIF
     GOTO START                        ;CALL AGAIN
;
LOGON:                                 ;COMES HERE IF THIS PROGRAM DID THE
                                       ;  DIALING          
     WAITFOR ":" 20                    ;WAIT FOR CIS TO REQUEST PASSWORD     
     IF NOT WAITFOR                    ;SOMETHING WENT AMISS
             FIND S9 "1"               ;ALREADY RETRIED?
             IF FOUND                  ;IF RETRIED ALREADY 
                     HANGUP            ;DO THESE
                     PAUSE 20     
                     GOTO START   
                     ENDIF         
             GOTO CONNCHECK            ;IF NOT RETRIED ALREADY GO RETRY       
     ENDIF                             ;* *******************************
     TRANSMIT "70000,0000"             ;*  ENTER YOUR USER ID           *
     TRANSMIT "*ANSI\"                 ;*                               *
     TRANSMIT "MY;PASS"                ;*  AND PASSWORD                 *
     TRANSMIT "^M"                     ;*                               *
                                       ;*********************************
     WAITFOR "!"                       ;WAIT FOR CIS TO ANSWER
     TRANSMIT "SET TER PC3COL^M"	;TELL CIS TO EMULATE ANSI COLOR!
     WAITFOR "?"
     TRANSMIT "Y^M"
     WAITFOR "!"
TEST:
     TRANSMIT "G "
     TRANSMIT S8			;TO FORUM
     TRANSMIT "^M"
     WAITFOR "CR>"
     TRANSMIT "DL"
     TRANSMIT S7			;DATA LIBRARY
     TRANSMIT "^M"
     WAITFOR "!"
     SET ENQ CISB			;SETUP FOR QUICK B!
;
;
NEXTFILE:                              ;SET UP FOR NEXT DOWNLOAD
     SWITCH S0
             CASE "6"
                     ASSIGN S9 S6      ;NEXT FILE 6?                       
                     ASSIGN S0 "5"   
             ENDCASE 
             CASE "5"
                     ASSIGN S9 S5      ;NEXT FILE 5?
                     ASSIGN S0 "4" 
             ENDCASE
             CASE "4"
                     ASSIGN S9 S4      ;NEXT FILE 4?
                     ASSIGN S0 "3" 
             ENDCASE
             CASE "3"
                     ASSIGN S9 S3      ;NEXT FILE 3?
                     ASSIGN S0 "2" 
             ENDCASE
             CASE "2"
                     ASSIGN S9 S2      ;NEXT FILE 2?
                     ASSIGN S0 "1" 
             ENDCASE
             CASE "1"
                     ASSIGN S9 S1      ;NEXT FILE 1?
                     ASSIGN S0 "0"  
             ENDCASE
     ENDSWITCH  
                                       ;GET FILE FROM CIS
     TRANSMIT "DOW "
     TRANSMIT S9                       ;TELL CIS WHAT FILE TO SEND
     TRANSMIT "/PROTO:QB^M"
     WAITFOR "r:"   
     IF NOT WAITFOR                    ;FILE NOT FOUND?
             GOTO MOREFILES            ;GO SEE IF THERE'S MORE TO DOWNLOAD
     ENDIF                        
     TRANSMIT S9			;REITERATE FILENAME
     TRANSMIT "^M"                     ;YES,DOWNLOAD IT (CIS WILL PROMPT AUTO)
     WAITFOR "!"              		;FINISHED
     TRANSMIT "^M"                      ;EXPECTED BY CIS
MOREFILES:                             ;CHECK FOR ANY MORE FILES TO DOWNLOAD
     FIND S0 "0"                       ;CHECK HOW MANY MORE
     IF FOUND                          ;IS THERE NO MORE?  
             GOTO END             
     ENDIF                         
                                       ;WAIT FOR CIS 
     WAITFOR "!"
; 
     IF NOT WAITFOR                    ;FILE NAME
             TRANSMIT "^C"            ;SOMETHING WENT AMISS !
             PAUSE "20"                ;GET OUT IF POSSIBLE
             GOTO END                  ;GET READY TO HANG UP
     ENDIF 
     GOTO NEXTFILE                     ;GO GET SET TO DOWN LOAD ANOTHER FILE
;
;
END:
     SET ENQ OFF			;CLEAR THE MODE
     TRANSMIT "BYE^M"                   ;LOG OFF CIS
     WAITFOR "OFF"                  ;GIVE CIS A CHANCE TO HANG UP
     PAUSE "3"
     GOTO OFFLINE?                     ;GO SEE IF PHONE IS ONHOOK
HANGUP:
     HANGUP                            ;TELL PROCOMM TO HANG UP
OFFLINE?:
     IF NOT CONNECTED                  ;IS THE CONNECTION BROKE?
             EXIT                      ;GOOD, FINISHED!
     ELSE    
             GOTO HANGUP               ;GIVE PROCOMM A CHANCE TO HANG UP 
     ENDIF





