CHAPTER 1 INTRODUCTION D60SPD is a DECsystem-10 program to measure DN60 performance. The following functions are available: 1. Line width 2. Buffer size 3. Beginning address of the buffer in relation to a page boundry 4. Number of bytes per buffer 5. Carriage control character 6. Character range when doing output using the internal ripple pattern character generator 7. Use of internal character generator or a disk file for output 8. Destination of the input data - whether to a device or the bit bucket CHAPTER 2 COMMANDS D60SPD uses a verb type command decoder and dispatches to the appropriate routine to perform the command. Parameters which must be set before issuing commands to the DN60 include the DN60 number, (or DL10 port number), line number, and the device number. Once any one of these is set it remains set unless changed by a command, so therefore once they are set it will not be necessary to include these in any commands, unless a change is desired. The following is a list of available commands: ABORT abort input and/or output AUTO execute D60SPD commands from a file DDT enter DDT if it is loaded EOF send a EOF if doing output EXIT exit D60SPD HELP type D60SPD.HLP INPUT receive input from the DN60 NOTYPE ignore any typeahead during runtime OUTPUT output to the DN60 PARAM print out the CAL11. parameter block RESTART restart D60SPD SET perform setup and issue commands STATUS read DN60, line, and device status TYPEAH allow typeahead during runtime WHAT print port number, line number, and device number CHAPTER 3 SET COMMANDS The SET command is used to issue commands to the DN60 and to provide D60SPD with the Port, Line, and Device numbers. The following SET commands are available: 1. SET PORT 2. SET LINE 3. SET DEVICE 4. SET SIMULATE 5. SET SUPPORT 3.1 SET PORT COMMAND form SET PORT:o/LINE:d/DEVICE:d The SET PORT command is used to tell D60SPD which DL10 port or DTE number, line, and device it will be communicating with. The switches, /LINE and /DEVICE are optional. The range of port numbers are 0-7 for a DL10 and 10-13 for a DTE20. examples: SET PORT:1 SET PORT:1/LINE:2 SET PORT:13/LINE:5 SET PORT:7/LINE:1/DEVICE:1 SET COMMANDS Page 3-2 3.2 SET LINE COMMAND form SET LINE:d/CMD:d/optional CMD switches The SET LINE command is used to tell D60SPD which line number it will be communicating with and if the optional switch /CMD:d is included, that command will be issued to the DN60. The port number must be set prior to issuing this command. CMD 0 Illegal command 1* Enable the line /TERMINAL:d 0 = unknown 1 = IBM 3780 2 = IBM 2780 3 = HASP multileaving /FLAGS:d 1 = simulate 2 = primary 2 Set DTR 3 Abort all data transfers and hang up 4 Disable the line 5* Set clear to send delay /CSD:d number of jiffies to delay 6* Set the number of bytes in the silo warning area /SILWAR:D number of bytes of silo warning area * indicates additional switches associated with /CMD examples: SET LINE:1 SET LINE:1/CMD:2 SET LINE/CMD:2 SET LINE/CMD:1/TERMINAL:1/FLAGS:1 SET LINE/CMD:5/CSD:3 3.3 SET DEVICE COMMAND form SET DEVICE:d/CMD:d/optional CMD switches The SET DEVICE command is used to tell D60SPD which device number it will be communicating with and if the optional switch /CMD:d is included, that command will be issued to the DN60. The port and line numbers must be set prior to issuing this command. CMD 0 Illegal command 1* Set characteristics /DEVTYP:d 0 = unknown SET COMMANDS Page 3-3 1 = console input 2 = console output 3 = card reader 4 = line printer 5 = card punch 2* Set number of records per transmission block /RECORDS:d 3 Dump output buffers 4 Clear input permission was requested 5 Reserved 6 Set "interpret carriage control on input" ( be a printer ) 7 Clear "interpret carriage control on input" 8 Set "interpret carriage control on output" 9 Clear "interpret carriage control on output" 10 Set "output transparent BSC" 11 Clear "output transparency" 12* Specify output component selection /COMPCD:d 1 = printer 2 = punch 13 Don't do output component selection 14* Set printer line counter /PLC:d 15 Disable printer line counter overflow 16* Set max transmission block size /BUFSIZ:d 17 Do space compression on output 18 Don't do space compression on output 19 Use old protocol 20 Don't use old protocol 21 Request output permission 22 Grant input permission 23 Signal output EOF 24 Clear output EOF complete 25 Signal output abort 26 Clear output abort complete 27 Clear input EOF complete 28 Signal input abort 29 Clear input abort complete * indicates additional switches associated with /CMD examples: SET DEVICE:3 SET DEVICE:2/CMD:25 SET DEVICE/CMD:25 SET DEVICE:1/CMD:16/BUFSIZ:512 SET COMMANDS Page 3-4 3.4 SET SIMULATE COMMAND form SET SIMULATE/PORT:o/LINE:d/DEVICE:d/2780 or /3780 The SET SIMULATE command is used to define a particular port, line, and device to be a 2780 or 3780 in SIMULATE mode. The default is 3780 if the /2780 or /3780 switch is not included. examples: SET SIMULATE/PORT:1/LINE:2/DEVICE:1/3780 SET SIMULATE SET SIMULATE/2780 3.5 SET SUPPORT COMMAND form SET SUPPORT/PORT:o/LINE:d/DEVICE:d/2780 or /3780 The SET SUPPORT command is used to define a particular port, line, and device to be a 2780 or 3780 in SUPPORT mode. The default is 3780 if the /2780 or /3780 switch is not included. examples: SET SUPPORT/PORT:1/LINE:2/DEVICE:1/3780 SET SUPPORT SET SUPPORT/2780 CHAPTER 4 STATUS COMMANDS The STATUS command is used to read DN60, line, or device status. The following STATUS commands are available: 1. STATUS DN60 or PORT 2. STATUS LINE 3. STATUS DEVICE 4. STATUS ALL 4.1 STATUS DN60 OR PORT form STATUS DN60:pn or PORT:pn The STATUS DN60 or PORT command is used to read the DN60 status. The DN60 or port number must be set prior to issuing this command or set by including the DN60 number. examples: STATUS DN60:1 STATUS DN60 STATUS PORT:11 STATUS PORT 4.2 STATUS LINE form STATUS LINE:ln/PORT:pn The STATUS LINE command is used to read the line status. The port number must be set prior to issuing this command or set by using the /PORT switch. STATUS COMMANDS Page 4-2 examples: STATUS LINE:1 STATUS LINE STATUS LINE:2/PORT:1 4.3 STATUS DEVICE form STATUS DEVICE:dn/LINE:ln/PORT:pn The STATUS DEVICE command is used to read device status. The port and line numbers must be set prior to issuing this command or set by using the /LINE and/or /PORT switches. examples: STATUS DEVICE:1 STATUS DEVICE STATUS DEVICE:1/LINE:2 STATUS DEVICE:2/LINE:1/PORT:7 4.4 STATUS ALL form STATUS ALL/PORT:pn/LINE:ln/DEVICE:dn The STATUS ALL command is used to read the DN60, line, and device status. The port, line, and device numbers must be set prior to issuing this command or set by using the /PORT, /LINE, and/or /DEVICE switches. examples: STATUS ALL STATUS ALL/PORT:1/LINE:2/DEVICE:1 CHAPTER 5 INPUT AND OUTPUT COMMANDS The INPUT and OUTPUT commands are used to read and write data, and to provide performance figures if such is desired. Many options are available and can be specified in the form of switches to the command as described below. form INPUT DEV:FILENAME.EXT[p,pn]/switches form OUTPUT DEV:FILENAME.EXT[p,pn]/switches 5.1 SWITCHES /PORT:o Used to set the DL10 port number if not previously set. /LINE:d Used to set the line number if not previously set. /DEVICE:d Used to set the device number if not previously set. /BUFSIZ:d Size of the PDP-10 data buffer in words. The default is determined by the number of bytes (/NUMBYT) /BYTPOS:d The position of the first byte in the data buffer. /BYTWRD:d The number of bytes per word in the data buffer. The default is 5 which is 7 bit bytes. 3 12 bit bytes 4 8 bit bytes 5 7 bit bytes 6 6 bit bytes /CCC:o The carriage control character to be inserted after the carriage return when using the internal character generator. The default is 12 which is a line feed. /DEVTYP:d 0 = unknown, 1 = printer, 2 = punch 3 = reader. The default is 0. /FCHAR:o The first character in the ripple pattern when using the internal character generator for output. The default is 40. INPUT AND OUTPUT COMMANDS Page 5-2 /LCHAR:o The last character in the ripple pattern when using the internal character generator for output. The default is 176. /NUMBYT:d The number of bytes to use in the buffer. The default is 4000. /NUMCHR:d The number of characters to transmit before sending an EOF. /OFFSET:d The word in the data buffer where data transfers begin, or the word used when calculating the the first byte position. /TIME:d The time in seconds between statistic reports. The default is 10 seconds. A time of 0 specifies no statistic reports are to be made. /WIDTH:d The width of a line when using the internal character generator. The default is 132. 5.2 FILE SPECIFICATION On output if the file specification is not included the output is generated using an internal character generator that generates output in the form of a ripple pattern. example: ABCD BCDE CDAB DABC On input if the file specification is not included the input is placed in a "bit-bucket". If part of the file specification is missing it is given a default as shown below: INPUT OUTPUT DEV: DSK DSK FILENAME INPUT OUTPUT EXTENSION IN JOB P,PN OWN OWN 5.3 STATISTIC REPORTS The following is a description of the statistic report that is generated: Time Time since last report Lines/min Lines per minute Chars/sec Characters per second INPUT AND OUTPUT COMMANDS Page 5-3 Chars Characters input/output since the last report Buftry Data buffers attempted Bufdly Data buffers delayed Bufcom Data buffers completed C11E4 Number of CAL11. uuo error 4's (uuo in use) 5.4 EXAMPLES INPUT INPUT /PORT:2/LINE:1/DEVICE:1 INPUT DSKB:IN.FIL[226,1100]/TIME:59 OUTPUT /PORT:2/LINE:1/DEVICE:1 OUTPUT OUTPUT DSKC:OUT.FIL/PORT:2/LINE:1/DEVICE:1 OUTPUT /FCHAR:101/LCHAR:105/WIDTH:5/NUMBYT:100 OUTPUT /NUMCHR:40000 CHAPTER 6 THE OTHER COMMANDS 6.1 ABORT COMMAND form ABORT/PORT:pn/LINE:ln/DEVICE:dn/INPUT and/or /OUTPUT/WAIT or /NOWAIT The ABORT command is used to issue Input and/or Output abort commands to the DN60, and optionally wait for the abort sequence to complete by using the /WAIT switch. The port, line, and device numbers must be set prior to issuing the ABORT command or they can be set by using the /PORT, /LINE, and /DEVICE switches. The default is both /INPUT and /OUTPUT and /NOWAIT. examples: ABORT/INPUT/OUTPUT ABORT/INPUT/OUTPUT/WAIT ABORT/INPUT/OUTPUT/NOWAIT ABORT/WAIT ABORT/NOWAIT/PORT:2/LINE:3/DEVICE:1 6.2 AUTO COMMAND The AUTO command is used to execute a sequence of D60SPD commands contained in a DSK file. The default filename is D60SPD.ATO. examples: AUTO AUTO DSKE:CMD.FIL[123,456] AUTO DSKZ:D60.ATO[234,5670,ONE,TWO,THREE,FOUR,FIVE] THE OTHER COMMANDS Page 6-2 6.3 DDT COMMAND The DDT command is used to enter DDT if DDT was loaded with D60SPD. If this command is given and DDT was not loaded, a warning message will be given. Once in DDT if GOBACK$G or POPJ P,$X is given D60SPD will resume. example: DDT 6.4 EOF COMMAND The EOF command is used to send an EOF while doing output. If this command is given at another time it is ignored. example: EOF 6.5 NOTYPEAHEAD COMMAND The NOTYPEAHEAD command is used to ignore commands given during runtime. Once this command is given the only way to reverse it is with the TYPEAHEAD command when in the idle loop. If NOTYPEAHEAD is set it is advised to use the /NUMCHR switch with the OUTPUT command as the EOF command would be ignored and the only way to terminate output would be to control-C D60SPD. example: NOTYPEAHEAD 6.6 EXIT COMMAND The EXIT command is used to return to monitor mode from D60SPD. example: EXIT THE OTHER COMMANDS Page 6-3 6.7 PARAM COMMAND The PARAM command is used to type out the contents of the CAL11. UUO parameter block. example: PARAM 6.8 RESTART COMMAND The RESTART command is used to restart D60SPD. This would be the equivalent of doing: ^C ^C START example: RESTART 6.9 TYPEAHEAD COMMAND The TYPEAHEAD command is used to enable D60SPD to accept typeahead during runtime. This command is the reverse of the NOTYPEAHEAD command but once NOTYPEAHEAD is set D60SPD must be in the idle loop before it will accept the TYPEAHEAD command. example: TYPEAHEAD 6.10 WHAT COMMAND The WHAT command is used to display the currently selected PORT, LINE, and DEVICE numbers. example: WHAT CHAPTER 7 INTERNAL PROGRAM OVERVIEW D60SPD uses a verb type command decoder. The command is read and checked for exactness and uniqueness and dispatches to the appropriate routine to further process the command. The SET and STATUS commands will further dispatch to another routine based upon the function they are to perform. During INPUT or OUTPUT, checks are made to see if a command may be pending and if so it will be executed, and the INPUT or OUTPUT operation will be continued, (unless or course the command was ABORT, DDT, EXIT, or RESTART). This allows one to examine status or issue commands while running without the need for an additional job. A simple flow diagram is shown below. INTERNAL PROGRAM OVERVIEW Page 7-2 START -> OPER -> ABORT --- ABTCOM -------------------->! ^ DDT ----- DDTCOM -- ENTER DDT ! ^ EOF ----- EOFCOM -------------------->! ^ EXIT ---- EXTCOM -------------------->! ^ HELP ---- HLPCOM -------------------->! ^ NOTYPE -- NOTCOM -------------------->! ^ PARAM --- PRMCOM -------------------->! ^ RESTART - RSTCOM -- GOTO START ! ^ TYPEAH -- TYPCOM -------------------->! ^ WHAT ---- WHTCOM -------------------->! ^ STATUS -- STSCOM -- DN60 -- D60STS -->! ^ -- PORT -- D60STS -->! ^ -- LINE --- LINSTS ->! ^ -- DEVICE - DEVSTS ->! ^ SET ----- SETCOM -- LINE --- SETLIN ->! ^ -- DEVICE - SETDEV ->! ^ -- SIMULA - SETSIM ->! ^ -- SUPPOR - SETSUP ->! ^ INPUT --- INCOM --- IOCOM ----------->! ^ OUTPUT -- OUTCOM -- IOCOM ----------->! ^ ! ^ AUTO ---- OPER ---- EXECUTE CMD -->! ! ^ ! ^ ! ! ^ ! ^ ! ! ^ ! --------------------------------V ! ^ ! ! ^ V V ^<-------------------------------------------- CHAPTER 8 COMMAND AND SWITCH TABLES All command and switch names are contained in tables with the corresponding address table immediately following the sixbit name table. These tables are all built by defining a NAMES macro which contains the commands or switches, an address and a value to indicate whether to dispatch or to store a value from a switch. Calling the BUILD macro after defining the NAMES macro will build the names table and the address table. 8.1 NAMES MACRO format: DEFINE NAMES,< SWT NAME,ADDRESS,CODE,DEFAULT VALUE > where: SWT is the macro name used by the BUILD macro NAME is the switch or command name ADDRESS is the address to dispatch to or store a value in CODE is a number that informs what action the command decoder is to perform 0 check switch has a colon before dispatching to ADDRESS 1 store SIXBIT arg in ADDRESS 2 store DECIMAL arg in ADDRESS 3 store OCTAL arg in ADDRESS 4 dispatch to ADDRESS without checking for a colon 5 store SIXBIT arg in T1 and dispatch to ADDRESS 6 store DECIMAL arg in T1 and COMMAND AND SWITCH TABLES Page 8-2 dispatch to ADDRESS 7 store OCTAL arg in T1 and dispatch to ADDRESS 1X print a CRLF when doing the auto file and the value for X is 0-7 as above DEFVAL is the default value that will be filled into ADDRESS if the CODE is 1-3. (This is only used in the INPUT/OUTPUT routine. example: Define NAMES,< SWT HELP,HLP,4 SWT BUFSIZ,SIZE,2 >;End define NAMES 8.2 BUILD MACRO The BUILD macro is called immediately following the definition of the NAMES macro to build the sixbit table of names, the address table, and the optional default value table. format: BUILD (PREFIX,NAME,DISPATCH,DEFAULT) where: PREFIX is the prefix attached to: TAB for the table of sixbit names DSP for the address table DEF for the default value table and the suffix attached to .NM which will be the symbol which represents the length of the table of names. NAME if non-blank will generate the table of names DISPATCH if non-blank will generate the address table DEFAULT if non-blank will generate the default value table example: COMMAND AND SWITCH TABLES Page 8-3 BUILD (CMD,NAM,DSP,DEF)