home *** CD-ROM | disk | FTP | other *** search
- S29 = "Talker ver 1.1 " ; 20 chars long
- S28 = "talker.ovl" ; Our overlay file
- S27 = "pc-vco.exc" ; Our exception file
- ON ESCAPE GOSUB Esc_Exit ; ESC exit
- ;
- ; ----- Talker: Scripted interface to VOICE.EXE
- ;
- ; R.McG; 3/90, Chicago
- ; ----------------------------------------------------------------
- ; Usages:
- ; S29 -----> Legend line
- ; S28 -----> Our own overlay file name
- ; S27 -----> Our exception file
- ; S26 -----> Previous overlay file name (or null)
- ; S25 -----> Previous overlay entry point (or NONE)
- ;
- ; -----------------------------------------------------------------------
- ;
- ; Initialization
- ;
- ; Initial values
- ;
- LEGEND S29 ; Display ourselves
- S26 = "_OVERLAY" ; Save previous overlay, if any
- S25 = "_OVENTRY" ; Save previous overlay entry point
- ;
- ; Set-up the overlay (our interface to VOICE.EXE).
- ; .. define an end-entry pt of '9' at the same time
- ;
- OVERLAY S28 9 ; Load our overlay (end entry pt = 9)
- IF FAILED ; Stop here if can't load overlay
- MESS "!Cannot overlay file: "*S28*"!"
- GOTO Exit
- ENDIF
- ;
- ; Use the overlay to 'open' the driver
- ;
- SCALL 6,N0 ; Entry addr 6 -> open_talk
- IF NOT ZERO N0 ; If anything but zero rtnd
- MESS "!Cannot open voice driver!"
- IF NOT ISFILE "voice.exe" MESS "!VOICE.EXE must be on current subdir!"
- GOTO Exit
- ENDIF
- ;
- ; Load an exception file, if its present
- ;
- SCALL 12,S27,N0 ; Entry addr 12 -> Load exception file
- IF NOT ZERO N0 ; If anything but zero rtnd
- MESS "!Exception file load error: "*N0*" using: "*S27*"!"
- ENDIF ; Not fatal error
- GOTO Loop ; And start
- ;
- ; Script termination
- ;
- Exit:
- IF OVERLAY SCALL 9 ; Entry addr 9 -> Close voice driver
- OVERLAY CLEAR ; Clear our own
- IF NOT NULL S26 ; If there was a previous,
- OVERLAY S26 S25 ; .. replace it and its end action
- ENDIF
- EXIT
- ;
- ; Escape pressed
- ;
- Esc_Exit:
- S0 = "Do you wish to terminate TALKER?"
- GOSUB Ask_YN ; Prompt
- IF FAILED RETURN ; "N" -> continue
- GOTO Exit ; Terminate
- ;
- ; Wait for something
- ;
- Loop:
- WHILE FKEY or NOT RECEIVE ; While nothing being received
- IF FKEY GOTO Fkey ; Skip if a func key pending
- ENDWHILE ; .. loop to make kbd fast
- RGET S0 80 10 ; Get 80 chars - wait up to 10 secs
- IF FAILED GOTO Loop ; IF nothing received, Loop
- SCALL 0,S0 ; Pass buffer to the driver
- IF NOT FULL GOTO Loop ; If not full rcv buffer
- ;
- ; Flush the rcv buffer
- ;
- LEGEND S29*"Flushing buffer" ; Change legend
- WHILE FULL ; While buffer full (host xoffed)
- RGET S0 80 30 ; Read a line and display, no voice
- ENDWHILE ;
- LEGEND S29 ; Replace legend
- GOTO Loop ; And loop
- ;
- ; Function key pending
- ;
- Fkey:
- KEYGET S0 ; Read the function key
- SWITCH S0
- CASE "2E00" ; Alt-C
- CLEAR (text) ; Perform
- LEGEND S29 ; Repaint legend
- ENDCASE
- CASE "1200" ; Alt-E
- GOTO Echo
- ENDCASE
- CASE "2C00" ; Alt-Z
- GOTO Mask
- ENDCASE
- CASE "2600" ; Alt-L
- GOTO ScrSize
- ENDCASE
- CASE "2300" ; Alt-H
- HANGUP ; perform
- ENDCASE
- CASE "2200" ; Alt-G
- GOTO Blnkln
- ENDCASE
- CASE "2D00" ; Alt-X
- GOTO EndPgm
- ENDCASE
-
- CASE "7500" ; Ctl-End
- BREAK ; Perform
- ENDCASE
- CASE "7200" ; Ctl-PrtSc
- GOTO Printer
- ENDCASE
-
- CASE "7800" ; Alt-1
- MACRO 1 ; Perform
- ENDCASE
- CASE "7900" ; Alt-2
- MACRO 2 ; Perform
- ENDCASE
- CASE "7A00" ; Alt-3
- MACRO 3 ; Perform
- ENDCASE
- CASE "7B00" ; Alt-4
- MACRO 4 ; Perform
- ENDCASE
- CASE "7C00" ; Alt-5
- MACRO 5 ; Perform
- ENDCASE
- CASE "7D00" ; Alt-6
- MACRO 6 ; Perform
- ENDCASE
- CASE "7E00" ; Alt-7
- MACRO 7 ; Perform
- ENDCASE
- CASE "7F00" ; Alt-8
- MACRO 8 ; Perform
- ENDCASE
- CASE "8000" ; Alt-9
- MACRO 9 ; Perform
- ENDCASE
- CASE "8100" ; Alt-0
- MACRO 0 ; Perform
- ENDCASE
-
- CASE "4100" ; F7
- GOTO Log
- ENDCASE
- CASE "4300" ; F9
- GOTO LogHold
- ENDCASE
- CASE "4400" ; F10
- GOSUB Help ; Note uncharacteristic GOSUB
- ENDCASE
- CASE "7100" ; Alt-F10
- SHELL ; Shell to DOS
- ENDCASE
- ;
- ; Other keypresses are unrecognized
- ;
- DEFAULT
- SOUND 100,100 ; Signal error
- ENDCASE
- ENDSWITCH
- GOTO Loop ; And continue
- ;
- ; End pgm
- ;
- EndPgm:
- SET TTHRU ON ; Inhibit type-through
- STACK "^@-" ; Stack another Alt-X
- GOTO Exit ; End script (and COM-AND)
- ;
- ; Toggle echo
- ;
- Echo:
- IF STRCMP "_DUPL" "HALF" ; Test current setting
- SET DUPLEX FULL ; .. toggle
- ELSE SET DUPLEX HALF ; .. toggle
- GOTO Loop ; And continue
- ;
- ; Toggle mask
- ;
- Mask:
- IF STRCMP "_MASK" "ON " ; Test current setting
- SET MASK OFF ; .. toggle
- ELSE SET MASK ON ; .. toggle
- GOTO Loop ; And continue
- ;
- ; Toggle screen size
- ;
- ScrSize:
- IF GT "_SSIZ" 25
- SET 25 ; .. toggle
- ELSE SET 43 ; .. toggle
- LEGEND S29 ; Repaint legend
- GOTO Loop ; And continue
- ;
- ; Toggle printer
- ;
- Printer:
- IF STRCMP "_PRINT" "ON " ; Test state
- PRINTER OFF ; .. toggle
- ELSE PRINTER ON
- GOTO Loop ; And continue
- ;
- ; Toggle the blank line eater
- ;
- Blnkln:
- IF STRCMP "_BSUP" "ON " ; Test current setting
- SET BSUPPRESS OFF ; .. toggle
- ELSE SET BSUPPRESS ON ; .. toggle
- GOTO Loop ; And continue
- ;
- ; Toggle the log function
- ;
- Log:
- IF STRCMP "_LOGG" "OFF"
- S1 = "Enter the transcript file name:"
- GOSUB Ask_File ; Get script file name
- IF NOT SUCCESS or NULL S0 ; IF ESC'd out
- GOTO Loop
- ENDIF
- LOG OPEN S0
- ELSE
- LOG CLOSE
- ENDIF
- GOTO Loop ; Set-up the line to add to output
- ;
- ; Toggle the log hold function
- ;
- LogHold:
- IF STRCMP "_LOGG" "OFF" ; If not logging
- GOTO Loop
- ENDIF
- IF STRCMP "_LOGH" "OFF"
- LOG SUSPEND
- ELSE LOG RESUME
- GOTO Loop ; Set-up the line to add to output
- ;
- ; ----- Subroutine: Ask for a script file name
- ; S1 passes the prompt used
- ; SUCCESS returns fact script file successfully opened
- ; S0 returns the fname
- ;
- Ask_File:
- WOPEN 10 10 13 70 (contrast) ASK_ESC
- ATSAY 10 12 (contrast) " TALKER Fname "
- ATSAY 11 12 (contrast) S1(0:56)
- ATSAY 13 30 (contrast) " Press ESC to cancel "
-
- ATGET 12 12 (contrast) 54 S0; Read new fname
- WCLOSE
- ;
- ; Attempt to execute the entry
- ;
- LJ S0 ; Left justify
- S0 = S0 &"" ; Trim spaces
- UPPER S0 ; Make pretty
- IF NOT NULL S0 ; If nothing entered
- SET SUCCESS ON
- ELSE
- SET SUCCESS OFF
- ENDIF
- RETURN ; And done
- ;
- ; ----- Escape during a subwindow
- ; .. S0 is returned null
- ;
- Ask_Esc:
- S0 = "" ; Make a null return
- RETURN
- ;
- ; ----- Subroutine: Ask a question and take a y/n answer
- ; S0 passes the text to be displayed
- ; SUCCESS returns fact of y/n
- ;
- Ask_YN:
- WOPEN 10 10 13 70 (contrast) ASK_ESC
- ATSAY 10 12 (contrast) " Talker Y/N "
- ATSAY 11 12 (contrast) S0(0:55)
- ATSAY 13 30 (contrast) " CR or ESC to exit "
-
- ATGET 12 12 (contrast) 1 S0 ; Read y/n
- WCLOSE
- ;
- ; Interperet the response
- ;
- IF NULL S0 or FIND S0 "Y" ; If c/r yes
- SET SUCCESS ON
- ELSE
- SET SUCCESS OFF
- ENDIF
- RETURN ; And done
- ;
- ; ----- Subroutine: Help
- ;
- Help:
- WOPEN 0, 0,23,79 (default) HELPESC
- ATSAY 0, 2 (Default) " Talker Help "
- ATSAY 23,28 (Default) " Press any key to continue "
- ;
- ; Help message
- ;
- ATSAY 1,2 (default) " The TALKER script expects to find the voice driver (VOICE.EXE) already"
- ATSAY 2,2 (default) "loaded. If it does not find the voice driver loaded, this script will try"
- ATSAY 3,2 (default) "to load VOICE.EXE from the current subdirectory. If the driver does not"
- ATSAY 4,2 (default) "load, it may be for one of two reasons - (1) insufficient memory to load"
- ATSAY 5,2 (default) "the driver, or (2) VOICE.EXE not found on the current subdirectory."
- ATSAY 6,2 (default) ""
- ATSAY 7,2 (default) " The TALKER script itself loads the file TALKER.EXE. This file is NOT a"
- ATSAY 8,2 (default) "program that runs by itself... it is a set of machine language subroutines"
- ATSAY 9,2 (default) "to the TALKER.CMD script. These routines provide the interface to the voice"
- ATSAY 10,2 (default) "driver. The script calls routines in TALKER to speak."
- ATSAY 11,2 (default) ""
- ATSAY 12,2 (default) " If the TALKER script loads VOICE.EXE, it will terminate VOICE.EXE when"
- ATSAY 13,2 (default) "the script terminates. If TALKER does NOT load VOICE.EXE (already running)"
- ATSAY 14,2 (default) "you may terminate VOICE.EXE with the VEND.COM utility."
- ATSAY 15,2 (default) ""
- ATSAY 16,2 (default) " While TALKER is running, type-through is available, and certain function"
- ATSAY 17,2 (default) "keys are activated: These are:"
- ATSAY 18,2 (default) ""
- ATSAY 19,2 (default) "Alt-C (clear) Alt-H (hangup) Alt-0/9 (macro) Ctl-Prtsc (print)"
- ATSAY 20,2 (default) "Alt-E (echo) Alt-X (exit COM-AND) Ctl-End (break)"
- ATSAY 21,2 (default) "Alt-L (scr size) Alt-Z (mask) F7 (transcript) "
- ATSAY 22,2 (default) "Alt-G (blnkln) Alt-F10 (shell) F9 (hold transc) "
- ;
- ; Wait for a keypress, and return
- ;
- KEYGET S0
- WCLOSE
- RETURN
- ;
- ; ESCAPE during this screen
- ;
- HELPESC:
- RETURN