IDENT SYSMSG
ENTRY MSG
LCC OVERLAY(SYSMSG,0,0)
*COMMENT SYSMSG - SYSTEM MESSAGE TASK.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE SYSMSG - SYSTEM MESSAGE TASK.
SPACE 4
*** SYSMSG - SYSTEM MESSAGE TASK.
* B. T. ZEMLIN 75/07/04.
* B. C. ANTIN 78/06/15.
SPACE 4
*** THIS SYSTEM TASK IS SCHEDULED BY THE TRANSACTION
* EXECUTIVE TO SEND A MESSAGE TO A TERMINAL. THE MESSAGE
* MAY HAVE THE FOLLOWING ORIGINS - IT IS A MESSAGE
* ISSUED BY A *K.MESSAGE* COMMAND, OR IT IS A DIAGNOSTIC
* MESSAGE ISSUED IN THE PROCESSING OF A K-DISPLAY COMMAND
* THAT ORIGINATED FROM A TASK (CTI FUNCTION 7).
* THIS TASK IS INTENDED AS AN EXAMPLE AND MAY BE MODIFIED
* BY THE SPECIFIC INSTALLATION.
SPACE 4
*CALL COMCMAC
LIST X
*CALL COMKKIM
LIST -X
*CALL COMKMAC
*CALL COMSPRD
TRXCOM B1 DEFINE COMMUNICATIONS BLOCK SYSBOLS
*** COMMUNICATION BLOCK WORDS.
*
*T TERC 42/ TN,6/,12/ WC
*T, MSGC 42/0,18/ DMC
*T, MSGC+1 60/ MS
*
* TN TERMINAL NAME.
* WC WORD COUNT OF MESSAGE.
* DMC K-DISPLAY COMMAND DIAGNOSTIC MESSAGE CODE.
* MS IF DMC = *KDM0*, THEN START OF *K.MESSAGE* MESSAGE.
* ELSE, ATTEMPTED K-DISPLAY COMMAND KEYWORD IF
* AVAILABLE.
BSS COMCL RESERVE SPACE FOR COMMUNICATIONS BLOCK
.1 NOREF
SPACE 4
** TMSG DEFINE A K-DISPLAY DIAGNOSTIC MESSAGE.
*
* TMSG A
*
* ENTRY *A* = MESSAGE TO BE DEFINED.
*
* EXIT A K-DISPLAY DIAGNOSTIC MESSAGE IS DEFINED.
* A K-DISPLAY DIAGNOSTIC MESSAGE INDEX TABLE ENTRY
* IS DEFINED.
TMSG MACRO A
LOCAL ADR ADDRESS OF K-DISPLAY DIAGNOSTIC MESSAGE
ADR SET *
LOC .1
.1 SET .1+1
DATA C*"SYSPR"_A* DEFINE K-DISPLAY DIAGNOSTIC MESSAGE
LOC *O
* DEFINE A K-DISPLAY DIAGNOSTIC MESSAGE INDEX TABLE ENTRY.
RMSG RMT
VFD 42/0,18/ADR
RMSG RMT
ENDM
TITLE SEND MESSAGE.
SYSMSG SPACE 4,10
** SYSMSG - SEND A SYSTEM ORIGIN MESSAGE TO A TERMINAL.
* THE WORD, *MSGC*, IN THE COMMUNICATIONS BLOCK, CONTAINS A
* CODE USED TO DETERMINE WHICH MESSAGE TO SEND. IF
* THE CODE IS *KDM0*, THEN THE MESSAGE TO BE SENT IS FROM A
* *K.MESSAGE* COMMAND AND THE MESSAGE IS CONTAINED IN THE
* COMMUNICATIONS BLOCK. IF THE CODE IS GREATER THAN *KDM0*,
* THEN THE CODE INDICATES WHICH DIAGNOSTIC MESSAGE TO ISSUE.
MSG SB1 1
SA2 TERC CHECK FOR NON-TERMINAL ASSOCIATED TASK
MX0 42
BX5 X0*X2 TERMINAL NAME
ZR X5,MSG3 IF NO TERMINAL SPECIFIED
* DETERMINE WHICH MESSAGE TO SEND.
MX6 -12
SA3 MSGC READ DIAGNOSTIC CODE
SB2 X3
BX5 -X6*X2 WORD COUNT FOR NON-DIAGNOSTIC MESSAGE
SB3 KDM0 *K.MESSAGE* CODE
SX5 X5-1
EQ B2,B3,MSG1 IF *K.MESSAGE* ISSUED MESSAGE
NG B2,MSG3 IF INCORRECT DIAGNOSTIC CODE
SB3 B2-KDMTL
GT B3,MSG3 IF INCORRECT DIAGNOSTIC CODE
* PLACE THE DIAGNOSTIC MESSAGE INTO THE BUFFER.
SA1 A3+B1 ATTEMPTED K-DISPLAY COMMAND
SA5 B2+KDMT-1 DIAGNOSTIC MESSAGE INDEX TABLE ENTRY
SB3 A1 ASSEMBLY AREA
SB5 X5+ FWA OF MESSAGE
SB2 1R/ SEARCH CHARACTER
BX1 X0*X1
SB5 -B5
RJ SNM SET NAME IN MESSAGE
SX5 A7-MSGC MESSAGE WORD COUNT
* SEND A MESSAGE TO THE TERMINAL.
MSG1 SX7 10
SA3 MSGB SEND PARAMETER WORD 3
MX0 -12
BX5 -X0*X5
IX7 X7*X5 MESSAGE CHARACTER COUNT
BX3 X0*X3
SA2 MSGA SEND PARAMETER WORD 1
BX2 X0*X2
BX7 X3+X7 MERGE CHARACTER COUNT
SA7 MSGB
BX6 X2+X5 MERGE WORD COUNT
SA6 A2
SEND MSGA SEND THE MESSAGE
* CHECK FOR BINARY TERMINAL.
SA1 SEQC FIRST WORD OF COMMUNICATIONS BLOCK.
RJ CBT CHECK FOR BINARY TERMINAL
ZR X6,MSG2 IF NOT BINARY
SA6 MSGE
SEND MSGD SEND BINARY INPUT REQUEST
MSG2 CEASE EXIT TASK WITH A NORMAL CEASE
MSG3 CEASE 1 EXIT TASK WITH AN ABNORMAL CEASE
MSGA VFD 5/0,1/1,6/0,18/MSGC+1,12/0,18/0
CON 0
MSGB VFD 6/2,30/0,4/4,8/0,12/0
MSGD VFD 1/0,1/0,10/0,18/MSGE,12/0,18/1
MSGE BSS 1
** K-DISPLAY DIAGNOSTIC MESSAGE TABLE.
.1 SET 0
TMSG (K-DISPLAY COMMAND UNSUCCESSFUL, "KDM1M" -- ///////.)
TMSG (K-DISPLAY COMMAND UNSUCCESSFUL, "KDM2M" -- ///////.)
TMSG (K-DISPLAY COMMAND UNSUCCESSFUL, "KDM3M" -- ///////.)
TMSG (K-DISPLAY COMMAND UNSUCCESSFUL, "KDM4M" -- ///////.)
TMSG (K-DISPLAY COMMAND UNSUCCESSFUL, "KDM5M" -- ///////.)
TMSG (K-DISPLAY COMMAND UNSUCCESSFUL, "KDM6M" -- ///////.)
KDMT BSS 0 K-DISPLAY DIAGNOSTIC MESSAGE INDEX TABLE
RMSG HERE
KDMTL EQU *-KDMT LENGTH OF TABLE
SPACE 4
** COMMON DECKS.
*CALL COMCSNM
*CALL COMKCBT
END MSG