IDENT TCOMND,FWA
TITLE TCOMND - TERMINAL COMMAND PROCESSOR.
ABS
ENTRY APPSW
ENTRY ASCII
ENTRY CSET
ENTRY EFFECT
ENTRY PARITY
ENTRY RFL=
*COMMENT TCOMND - TERMINAL COMMAND PROCESSOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SYSCOM B1
SPACE 4,2
*** TCOMND - TERMINAL COMMAND PROCESSOR.
* P. D. FARRELL. 74/08/28.
SPACE 4,3
*** TCOMND PROCESSES TIME SHARING TERMINAL COMMANDS.
* THAT HAVE BEEN ENTERED BY MEANS OF CONTROL CARD CALLS
* RATHER THAN DIRECTLY THROUGH A TERMINAL.
SPACE 4,10
*** APPLICATION SWITCH COMMAND FORMATS.
*
* APPSW
*
* APPSW(ANAME[,Z.])
*
* APPSW(AP=ANAME[,Z.])
*
* ANAME = NETWORK APPLICATION NAME. IF NO APPLICATION
* NAME IS SPECIFIED, THE USER WILL BE RETURNED
* TO THEIR PRIMARY APPLICATION.
*
* Z = Z PARAMETER OPTION. IF SPECIFIED, THE REMAINDER
* OF THE COMMAND LINE WILL BE PASSED TO THE NEW
* APPLICATION.
*
* THE APPLICATION SWITCH COMMAND IS PROCESSED AS FOLLOWS-
*
* TLX WILL BE CALLED TO NOTIFY IAF OF THE APPLICATION SWITCH.
* TLX WILL BE CALLED TO RESTART THE JOB WHEN THE CONNECTION
* RETURNS.
SPACE 4,4
*** DAYFILE MESSAGES.
*
* *ERROR IN COMMAND PARAMETERS.* = A COMMAND PARAMETER
* WAS ILLEGAL.
SPACE 4,3
*** OPERATOR MESSAGES.
*
* NONE.
SPACE 4
*CALL COMCMAC
TITLE COMMAND PROCESSORS.
ORG 120B
FWA BSS 0 DEFINE LOAD ADDRESS
APP SPACE 4,10
** APP - APPLICATION SWITCH PROCESSOR.
*
* THE APPLICATION SWITCH COMMAND CAUSES A USER TO BE SWITCHED
* TO THE SECONDARY APPLICATION SPECIFIED IN THE COMMAND. IF
* THE CURRENT APPLICATION IS A SECONDARY APPLICATION, THE
* *ABORT* OR NULL APPLICATION NAMES MAY BE SPECIFED TO RETURN
* THE USER TO THE PRIMARY APPLICATION.
*
* CALLS PZO, UPC.
APPSW BSS 0 ENTRY
SB1 1
SA5 CCDR SET COMMAND ADDRESS
SB7 ARGR SET PARAMETER ADDRESS
RJ UPC UNPACK COMMAND
NZ X6,ERR IF PARAMETER ERROR
SA1 ARGR+B1 READ FIRST PARAMETER
MX0 42
BX6 X0*X1
ZR X6,APP2 IF NO PARAMETER SPECIFIED
SA2 =2LAP
BX2 X6-X2
BX6 -X0*X1 CHECK SEPARATOR
NZ X2,APP1 IF NOT *AP* PARAMETER
SA2 =1R=
BX6 X6-X2
NZ X6,ERR IF *AP* NOT EQUATED
SA1 A1+B1 GET APPLICATION NAME
APP1 BX6 X0*X1
SA6 APPA SAVE APPLICATION NAME
SA1 A1+B1 READ NEXT PARAMETER
ZR X1,APP2 IF NO MORE PARAMETERS
SA2 =1LZ
BX6 X0*X1
BX2 X6-X2
NZ X2,ERR IF NOT *Z* PARAMETER
SB7 APPA+B1 SET WRITE BUFFER ADDRESS
SB4 APPB SET END OF WRITE BUFFER
RJ PZO PROCESS *Z* OPTION
APP2 SX7 APPA SET APPLICATION NAME ADDRESS
SX0 22B SET *TLX* REQUEST NUMBER
TLX X0,X7 ENTER *TLX* SYSTEM REQUEST
SX0 23B SET *TLX* REQUEST NUMBER
EQ TLX CALL *TLX*
APPA BSSZ 6 APPLICATION BUFFER
APPB CON 0 END OF BUFFER
ASCII SPACE 4,10
*** ASCII.
*
* SET EXTENDED (ASCII) MODE.
ASCII SB2 0 SET PARAMETER LIMIT
RJ PRS
SX0 3 SET FUNCTION CODE = 3
SX7 11B SET ARGUMENT
EQ TLX
CSET SPACE 4,10
*** CSET(M)
*
* SET CHARACTER SET MODE M.
*
* M = *NORMAL*.
* = *ASCII*.
* = *EXTEND*.
CSET SB2 1 SET PARAMETER LIMIT
RJ PRS CHECK PARAMETERS
SX0 3 SET FUNCTION CODE = 3
SA1 =6LNORMAL
BX7 X5-X1
ZR X7,CST1 IF *NORMAL*
SX7 B1
SA1 =6LEXTEND
SA2 =5LASCII
BX1 X5-X1
ZR X1,CST1 IF *EXTEND*
BX2 X5-X2
NZ X2,ERR IF NOT *ASCII*
CST1 SX7 X7+10B SET ENTRY MODE RESET BIT
EQ TLX
EFFECT SPACE 4,10
*** EFFECT(A)
*
* SET USER OR SYSTEM SUPPLIED FORMAT EFFECTOR MODE.
*
* A = *SYSTEM*, SET SYSTEM SUPPLIED FORMAT EFFECTOR MODE.
* = *USER*, SET USER SUPPLIED FORMAT EFFECTOR MODE.
* = (OMITTED) = *SYSTEM*.
EFFECT SB2 1 SET PARAMETER LIMIT
RJ PRS
SX0 21B SET FUNCTION CODE = 21B
ZR X5,TLX IF NO PARAMETER
SA1 =6LSYSTEM
SA2 =4LUSER
SA3 =2LON
SA4 =3LOFF
BX1 X5-X1
BX2 X5-X2
BX3 X5-X3
BX4 X5-X4
ZR X1,TLX IF *SYSTEM*
ZR X3,TLX IF *ON*
SX0 20B SET FUNCTION CODE = 20B
ZR X2,TLX IF *USER*
ZR X4,TLX IF *OFF*
EQ ERR IF NONE OF THE ABOVE
PARITY SPACE 4,10
*** PARITY(P)
*
* SET PARITY P.
*
* P = *ODD*.
* = *EVEN*.
* = (OMITTED) = *ODD*.
PARITY SB2 1 SET PARAMETER LIMIT
RJ PRS
SX0 4 SET FUNCTION CODE = 4
SX7 1 SET ODD PARITY
ZR X5,TLX IF NO PARAMETER
SA1 =3LODD
SA2 =4LEVEN
BX1 X5-X1
IX2 X5-X2
ZR X1,TLX IF *ODD*
NZ X2,ERR IF NOT *EVEN*
SX7 B0 SET EVEN PARITY
EQ TLX
TITLE SUBROUTINES.
ERR SPACE 4,10
** ERR - PROCESS PARAMETER ERROR.
ERR BSS 0
MESSAGE (=C* ERROR IN COMMAND PARAMETERS.*)
ABORT
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
*
* ENTRY (B2) = MAXIMUM NUMBER OF ALLOWABLE PARAMETERS.
*
* EXIT (X5) = FIRST PARAMETER.
* (A5) = ADDRESS OF FIRST PARAMETER.
* (B3) = PARAMETER COUNT.
PRS SUBR ENTRY/EXIT
SB1 1 SET CONSTANT 1
SA5 ACTR READ PARAMETER COUNT
SB3 X5
GT B3,B2,ERR IF INVALID PARAMETER COUNT
SA5 B1+B1 READ FIRST PARAMETER
EQ PRSX RETURN
PZO SPACE 4,10
** PZO - PROCESS *Z* OPTION.
*
* ENTRY (A5) = ADDRESS OF *Z* PARAMETER.
* (B7) = BEGINNING ADDRESS OF WRITE BUFFER.
* (B4) = END OF WRITE BUFFER.
*
* EXIT BUFFER CONTAINS THE CHARACTERS FOLLOWING THE *Z*
* PARAMETER.
PZO SUBR ENTRY/EXIT
SB5 10D INITIALIZE CHARACTERS LEFT IN READ WORD
SB3 B1 INITIALIZE END-OF-LINE FLAG
SX6 B0 CLEAR WRITE WORD
MX0 6
SB6 B5+ INITIALIZE ROOM LEFT IN WRITE WORD
MX1 -12
SA3 =1L.
SA4 =1L)
SA5 A5+ READ FIRST WORD
PZO1 BX2 X0*X5 FIND COMMAND TERMINATOR
LX5 6
SB5 B5-B1
BX7 X2-X3
ZR X7,PZO2 IF COMMAND TERMINATOR
BX7 X2-X4
NZ X7,PZO1 IF NOT COMMAND TERMINATOR
PZO2 BX2 X0*X5 GET NEXT CHARACTER
SB3 B3-B1
ZR X2,PZO3 IF ZERO CHARACTER
SB3 B1 RESET END-OF-LINE FLAG
PZO3 BX6 X6+X2 ADD CHARACTER TO WRITE WORD
SB6 B6-B1
LX6 6
NZ B6,PZO4 IF WRITE WORD NOT FULL
SA6 B7+ WRITE FULL WORD
NG B3,PZOX IF END-OF-LINE FOUND
SB7 B7+1 INCREMENT POINTER
GE B7,B4,PZOX IF END OF WRITE BUFFER
SX6 B0+ RESET REGISTERS
SB6 10D
PZO4 SB5 B5-B1
LX5 6
NZ B5,PZO2 IF READ CHARACTERS LEFT
SB5 10D RESET REGISTERS
SA5 A5+B1 GET NEXT WORD
EQ PZO2 CONTINUE
TLX SPACE 4,10
** TLX - ENTER TELEX SYSTEM REQUEST.
*
* ENTRY (X0) = FUNCTION CODE.
* (X7) = ARGUMENT.
TLX BSS 0
TLX X0,X7 ENTER TELEX SYSTEM REQUEST
ENDRUN
SPACE 4
** COMMON DECKS.
*CALL COMCSYS
*CALL COMCUPC
USE //
RFL= BSS 0
END