home *** CD-ROM | disk | FTP | other *** search
- PROGRAM: DIALOG
-
- WRITTEN BY: E. VERNON BUCK
- SAN LORENZO, CA.
- (415) 276-4607
-
- VERSION: 1.1
- DATE: DEC. 31, 1985.
-
- DIALOG IS A PROGRAM WHICH CAN AUTOMATICALLY CONDUCT
- A DIALOG WITH A REMOTE COMPUTER, DATABASE SYSTEM, OR BULLETIN
- BOARD. DIALOG READS "INSTRUCTIONS" FROM AN "INSTRUCTION FILE".
- THIS FILE IS PRODUCED BY ANY EDITOR OR WORD PROCESSOR. THE
- INSTRUCTION FILE TELLS THE PROGRAM HOW TO CONDUCT THE "DIALOG"
- WITH THE REMOTE (OR "HOST") COMPUTER. THE INSTRUCTIONS TELL
- THE PROGRAM WHAT MESSAGES TO SEND, AND WHAT MESSAGES TO RECEIVE
- FROM THE HOST. THE PROGRAM HAS ERROR DETECTION, AND CAN ALSO
- MAKE SOME SIMPLE DECISIONS (BRANCHING) BASED ON THE CONTENT OF
- MESSAGES RECEIVED FROM THE HOST. THE DIALOG IS DISPLAYED ON THE
- TERMINAL AS IT HAPPENS, AND (OPTIONALLY) RECORDED
- IN A "LOG" FILE.
-
- THE INSTRUCTIONS AVAILABLE ARE AS FOLLOWS:
- S,ccc...c SEND THE STRING ccc...c TO THE HOST.
- THE SEND COMMAND EXPECTS THE
- CHARACTERS TO BE ECHOED BY THE HOST.
-
- T,ccc...c TRANSMIT THE STRING ccc...c TO THE
- HOST. IDENTICAL TO THE S COMMAND,
- EXCEPT DOES NOT EXPECT AN ECHO.
-
- R,ttt...t RECEIVE A STRING OF CHARACTERS FROM
- THE HOST UNTIL THE "TERMINATION" STRING
- ttt...t IS RECEIVED. ANY NUMBER OF
- CHARACTERS CAN BE RECEIVED BEFORE THE
- TERMINATION STRING IS ENCOUNTERED, BUT
- ONLY THE LAST 2000 (ABOUT 1 SCREENFULL)
- WILL BE RETAINED.
-
- I,ddd...d,n IF THE LAST RECEIVED CHARACTERS
- (INCLUDING THE TERMINATION CHARACTERS
- FROM THE R INSTRUCTION) WERE ddd...d,
- THEN JUMP TO THE INSTRUCTION LINE
- LABELED n. n IS A NUMBER FROM
- 1 TO 9999.
-
- G,n GO TO (JUMP UNCONDITIONALLY) TO THE
- INSTRUCTION LINE LABELED n.
-
- E,i,n IF AN ERROR CONDITION OF TYPE i IS
- DETECTED, THEN GO TO THE
- INSTRUCTION LINE LABELED n.
- i CAN BE:
- "SE" - SEND INSTRUCTION ECHO ERROR
- "RE" - RECEIVE INSTRUCTION
- PARITY, FRAME OR OVERRUN ERROR
- "TO" - TIME OUT
- "CL" - CARRIER LOST.
- n = 0 MEANS IGNORE THE ERROR, AND
- CONTINUE. THIS IS THE DEFAULT.
- n = -1 ("SE" ONLY) MEANS SEND A
- BACKSPACE AND REPEAT THE ERRONEOUS
- CHARACTER
-
- L,lll CONTROL THE AMOUNT OF INFORMATION TO
- BE SAVED IN THE LOG FILE:
- lll=ON -- SAVE RECEIVED DATA ONLY
- lll=OFF-- SAVE NOTHING
- lll=ALL-- SAVE BOTH TRANSMITTED AND
- RECEIVED DATA (DEFAULT)
-
- D,ddd CONTROLS WHETHER THE DIALOG WILL BE
- DISPLAYED ON THE TERMINAL AS IT
- HAPPENS:
- ddd=OFF -- NOT DISPLAYED ON TERMINAL
- ddd=ON -- DISPLAYED ON TERMINAL
- (DEFAULT)
-
- C,p MAKE p THE CONTROL CHARACTER PREFACE
- FOR THE INSTRUCTION LINES THAT FOLLOW.
- I.E., ^M WOULD BE TRANSMITTED AS A
- CTRL-M WHEN p="^". DEFAULT IS "^".
- THE C INSTRUCTION IS NON-EXECUTABLE.
- THAT IS, IT OPERATES ON THE INSTRUC-
- TIONS AS THEY ARE COMPILED, BUT NOT
- AS EXECUTED (SINCE INSTRUCTIONS
- MIGHT BE EXECUTED IN A DIFFERENT
- ORDER).
-
- X EXIT. CLOSE FILES AND RETURN TO CP/M.
-
- INSTRUCTIONS CAN BE PRECEEDED BY A "LABEL NUMBER". THIS IS LIKE A
- LINE NUMBER IN BASIC OR FORTRAN. IT IS OPTIONAL. BUT OF COURSE, IF
- THERE IS AN I, G OR E INSTRUCTION ANYWHERE IN THE INSTRUCTIONS,
- THEN THERE MUST BE A LABELED INSTRUCTION WHICH MATCHES THE
- LABELS GIVEN IN THE I, G OR E INSTRUCTION. EXAMPLE:
- 100,S,hello^M
- ...
- G,100
-
- NOTES: (1) ALL INSTRUCTION PARAMETERS MUST BE SEPARATED BY COMMAS.
- (2) IF A COMMA IS NEEDED IN A CHARACTER STRING, THEN
- SURROUND THE STRING WITH QUOTES ("...").
- (3) LEADING BLANKS ARE IGNORED, UNLESS THE STRING IS QUOTED.
- (4) DO NOT USE TAB CHARACTERS (CTRL-I) TO INDENT.
- USE SPACES.
-
- FOLLOWING IS A SAMPLE INSTRUCTION FILE. THIS SET OF INSTRUCTIONS
- WAS DESIGNED TO LOG ON TO A COMMERCIAL DATA BASE SYSTEM (I.E.
- COMPUSERVE), JUMP TO THE FINANCIAL SECTION OF THE SERVICE, GET
- QUOTATIONS ON SEVERAL SECURITIES, AND THEN LOG OFF. THERE IS
- ALSO PROVISION FOR ERROR RECOVERY.
-
- E,SE,-1
- E,TO,100
- E,CL,200
- T,^M
- E,RE,500
- 5,R,": "
- I,"Name: ",10
- I,"ID: ",20
- I,"Password: ",30
- 10,S,CIS^M
- G,5
- 20,S,"00000,9999^M"
- G,5
- 30,T,MY+PASSWORD^M
- E,RE,510
- 35,T,^C
- 40,R,!
- 60,S,GO MQINT^M
- E,RE,560
- 70,R,"Interface: "
- 80,S,"DATE^M"
- R,"Interface: "
- S,100^M
- R,:
- S,"FNI,VWESGX,LMVTX^M"
- 90,R,:
- S,^M
- R,"Interface: "
- 100,S,OFF^M
- T,^C
- 200,X
- 500,T,^M
- G,5
- 510,T,T^M
- G,40
- 560,T,^M
- G,70
-
-
-
- TO INVOKE THE PROGRAM, TYPE
- DIALOG insfile.dlg logfile.log
- WHERE insfile.dlg IS THE FILE CONTAINING THE INSTRUCTIONS, AND
- logfile.log IS THE LOG FILE (TO BE WRITTEN BY DIALOG). THE LOG
- FILE IS OPTIONAL AND CAN SIMPLY BE OMITTED. THERE ARE NO DEFAULT
- FILE NAMES OR EXTENSIONS. REPLACING logfile.log WITH A QUESTION
- MARK WILL CAUSE THE INSTRUCTION FILE TO BE COMPILED, BUT NOT
- EXECUTED, FOR TESTING PURPOSES.
-
- DIALOG IS WRITTEN FOR COMPILATION WITH BASCOM BY MICROSOFT. THE
- DISTRIBUTED VERSION IS SET UP FOR I/O USING A TYPE 8251 USART,
- AT PORTS 00 AND 01. THE PROGRAM WILL MOST LIKELY HAVE TO BE
- MODIFIED FOR PARTICULAR SYSTEMS. IF YOU HAVE BASCOM AVAILABLE,
- THIS SHOULD BE EASY. IF NOT, IT MAY BE POSSIBLE TO PATCH THE
- DIALOG.COM FILE AS DESCRIBED BELOW.
-
-
- PATCH AREA CONSTANTS:
- DATA.PORT% = I/O DATA PORT FOR MODEM
- CTRL.PORT% = I/O PORT TO READ TO TEST FOR TRANSMIT/RECEIVE
- READY
- TRDY.MASK% = THE BIT TO TEST FOR TRANSMIT READY (IS SET TO 1)
- TRDY.POL% = SET THE SAME BIT AS TRDY.MASK% TO 1 TO REVERSE THE
- POLARITY OF THE TEST (I.E. READY WHEN BIT = 0)
- RRDY.MASK%, RRDY.POL% = SAME FOR RECEIVE READY
- RERR.PORT% = I/O PORT TO READ TO TEST FOR READ ERRORS
- RERR.MASK%, RERR.POL% = BITS TO TEST FOR READ ERRORS (I.E.
- PARITY, FRAME AND/OR OVERRUN), AND POLARITY OF SAME
- RES.PORT% = I/O PORT TO RECEIVE THE FOLLOWING RESET BYTE. (SET TO
- -1 IF NO RESET BYTE IS REQUIRED)
- RERR.RES% = BYTE TO SEND TO RESET PORT TO RESET UART AFTER
- RECEIPT OF PARITY, FRAME OR OVERRUN ERROR
- CARRIER.PORT% = I/O PORT TO READ TO TEST FOR CARRIER PRESENT
- CARRIER.MASK% = THE BIT(S) TO TEST FOR CARRIER PRESENT (E.G. DSR)
- CARRIER.POL% = POLARITY OF CARRIER BIT(S)
- CC.PREF$ = THE CHARACTER THAT PRECEEDS A CHARACTER TO INDICATE
- THAT THE 2ND CHARACTER IS A CONTROL CHARACTER.
- (I.E. ^M = CTRL-M, WHEN CC.PREF$ = "^")
- MAX.TIME = APPROX. TIME OUT TIME. FOR 4MHZ CPU, 1100 ~= 1 SECOND
-
- HOW TO PATCH THE .COM FILE:
- USING DDT.COM, OR SOME OTHER PATCHING PROGRAM, FIND THE FOLLOWING
- DATA STATEMENTS. THEY ARE PREFACED BY THE WORD "PATCH:". THE
- STATEMENTS SHOULD BEGIN AROUND 1950HEX IN THE .COM FILE. CHANGE
- THE NUMBERS FOLLOWING "PATCH:" TO SUIT YOUR SYSTEM. THEY ARE IN
- DECIMAL AND ASCII, AS FOLLOWS:
- (1) THE UART DATA I/O PORT NUMBER
- (2) THE UART TRANSMIT/RECEIVE READY I/O PORT NUMBER
- (3) THE BIT TO TEST FOR TRANSMIT READY
- (4) THE BIT TO BE EXCLUSIVE OR'ED BEFORE TESTING FOR TRANSMIT
- (5) THE BIT TO TEST FOR RECEIVE READY
- (6) THE BIT TO BE EXCLUSIVE OR'ED BEFORE TESTING FOR RECIEVE
- (7) THE I/O PORT TO READ FOR RECEIVE ERRORS
- (8) THE BIT(S) TO TEST FOR RECEIVE ERRORS (PARITY, FRAME
- AND/OR OVERRUN, ETC.)
- (9) THE BIT(S) TO BE EXCLUSIVE OR'ED WITH THE ERROR BITS
- BEFORE TESTING
- (10) THE I/O PORT TO SEND A RESET BYTE TO (-01 IF NONE)
- (11) BYTE TO SEND TO THE RESET PORT TO RESET UART FOLLOWING
- RECEPTION OF A TRANSMISSION ERROR
- (12) THE I/O PORT TO READ FOR CARRIER PRESENT TEST
- (13) THE BIT(S) TO TEST FOR CARRIER ON (I.E., THE DSR LINE)
- (14) THE BIT(S) TO BE EXCLUSIVE OR'ED WITH THE CARRIER ON BIT
- BEFORE TESTING
- (15) THE DEFAULT CHARACTER TO BE A PREFACE FOR CONTROL
- CHARACTERS
- (16) THE TIME OUT COUNTER MAXIMUM
-
- DATA "PATCH:",000,001,001,000,002,000,001,008,000
- DATA 001,055,001,128,000
- DATA "^",066000
-