DSN1
* /--- FILE TYPE = E
* /--- BLOCK ASO 00 000 86/05/28 14.31
ASO OVERLAY (PROCESS APPLICATION SIGON-ON.)
ASO SPACE 5,11
** ASO - APPLICATION SYSTEM SIGNON
*
* SIGN THIS TERMINAL INTO PLATO
ORG //OVL+5
ASO SUBR
LDN 0 CLEAR *BFI LOADED FLAG
STM BODC
LDD NI GET HIGHEST POSSIBLE CONNECTION
SHN 4
STD T1
LDM IBUF+7,IP GET PLATO STATION NUMBER
ADD SI
ADD CB
STD ST
SBM NCB+20,T1
MJN ASO1 IF CONNECTION IN RANGE
LDN TTBE T(D) TOO BIG
RJM MES
UJN ASOX EXIT
* LOG USER IN TO PLATO
* UPDATE PP TABLES
* SEND NEXT KEY TO PLATO
* SEND ACKNOWLEDGE TO CNP
ASO1 LDN 0
STM TOD,ST CLEAR OUTPUT DELAY
LDM IBUF+5,IP
STM SDT,ST SET S(D) IN PP TABLE
LDM IBUF+6,IP
STM TDT,ST SET T(D) IN PP TABLE
* SAVE TERMINAL TYPE
LDD RA
SHN 6
ADD TB
ADD ST
ADD ST
CRD CM
RJM DTT DETERMINE TERMINAL TYPE
STM ASOA SAVE FOR LATER VERIFICATION
SHN 4
STD CM
LDN 0
STD CM+1 SHOW NO LOST KEYS
LDD RA
SHN 6
ADD TB
ADD ST
ADD ST
CWD CM UPDATE CM TABLE
LDM IBUF+3,IP FETCH TERMINAL TYPE
RJM DTS DETERMINE TERMINAL SPEED
RAM TDT,ST SET TERMINAL SPEED
LDN 0#04
RJM PLM BUILD LOGIN MESSAGE
LDD TH SET STATION IN USE
STM TST,ST
* /--- BLOCK ASO 00 000 86/05/28 14.33
* CONVERT NETWORK TERMINAL TYPE TO PLATO TYPE
LDM ASOA GET TERMINAL TYPE
STD T1
LDC //RTTA
STD T2
RTT1 LDI T2
ZJN RTT4 IF TERMINAL TYPE NOT FOUND
LMD T1
LPC 0#FE TERMINAL TYPE WITHOUT PARITY
ZJN RTT2 IF TERMINAL FOUND
AOD T2
UJN RTT1 CHECK NEXT TERMINAL TYPE
RTT2 LJM ASOX VALID TYPE -- EXIT
RTT4 LDN 0
STM TST,ST SHOW TERMINAL NOT ACTIVE
LDN 0#0C
RJM PLM REVALIDATE USER AT DPNC
LJM ASOX EXIT
ASOA BSS 1 TEMP TERMINAL TYPE
* /--- BLOCK ASO 00 000 86/05/28 14.33
DTS SPACE 5,11
** DTS - DETERMINE TERMINAL SPEED
*
* ENTRY - (A) = NETWORK TERMINAL TYPE
*
* EXIT - (A) = -1 IF UNRECOGNIZED TERMINAL
* 0 IF 1200 BAUD
* 4000 IF 300 BAUD
DTS3 LDI T2
LPC 7400
DTS SUBR
STD T1
LDC DTSA
STD T2
DTS1 LDI T2
ZJN DTS2 IF END OF LIST
LMD T1
LPC 377
ZJN DTS3 IF TERMINAL TYPE FOUND
AOD T2
UJN DTS1
DTS2 BSS 0
* LCN 1 (A) = UNRECOGNIZED
LDN 0 (A) = 120 CPS IST
UJN DTSX EXIT
* NETWORK TERMINAL TYPE CONVERSION TABLE
*
* 1/LS, 1/TX, 2/, 8/NT
*
* LS = LINE SPEED (0- 120 CPS, 1- 300 CPS)
* TX = TEKTRONIX (0 = STANDARD (IST), 1 = TEKTRONIX)
* USED WHEN SETTING TTYPE IN LOGIN MESSAGE.
* NT = NETWORK TERMINAL TYPE
DTSA VFD 1/1,3/0,8/0#3C 30 CPS IST
VFD 1/0,3/0,8/0#3D 120 CPS IST
VFD 1/1,1/1,2/0,8/0#3E 30 CPS TEKTRONIX
VFD 1/0,1/1,2/0,8/0#3F 120 CPS TEKTRONIX
VFD 1/1,3/0,8/0#03 30 CPS DEFAULT
VFD 1/0,3/0,8/0#21 120 CPS DEFAULT
VFD 1/1,3/0,8/0#2E 30 CPS NOS
VFD 1/0,3/0,8/0#22 120 CPS NOS
DATA 0
* /--- BLOCK ASO 00 000 86/05/28 14.34
DTT SPACE 5,11
** DTT - DETERMINE TERMINAL TYPE
*
* A SIGN-ON MESSAGE IS INTERROGATED TO DETERMINE
* THE ASCII TERMINAL TYPE
*
* THE TERMINAL TYPE IS SPECIFIED AFTER THE SYSTEM
* NAME -
* PLEASE SIGN ON -- PLD,T
*
* T - TERMINAL TYPE
*
* IF NO TYPE IS SPECFIED, ASCII IST IS ASSUMED
*
* EXIT - (A) = TERMINAL TYPE
DTT2 LDM IBUF+1,T1 (A) = TERMINAL TYPE
DTT SUBR
LDD IP
ADN 10
STD T1 SET POINTER TO FIRST CHARACTER
LDD IP
ADD PL
ADN 2-1
STD T2 SET LWA TO SCAN (LWA-1 OF DATA)
DTT1 LDM IBUF,T1
LMN A.COMMA
SCN 1 CLEAR PARITY BIT
ZJN DTT2 IF COMMA FOUND
AOD T1
LMD T2
NJN DTT1 IF MORE TO SCAN
LDC A.I SET TERMINAL TYPE TO ASCII IST
UJN DTTX EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK ASP 00 000 86/05/28 14.35
ASP OVERLAY (COMPLETE PLATO APPLICATION SIGNON.)
ASP SPACE 5,11
** UPDATE PLATO ASCII CONNECTION TABLE
ORG //OVL+5
ASP SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* TEST FOR PLATO STATION IN USE.
ERRNZ STBKL-27D STATION BANK LENGTH .NE. 27D
* COMPUTE STATION BANK OFFSET (27 = 32-1-1-1-1-1).
LDD ST
SBD CB
ADD SB
STD T1 1 * STATION
SHN 5 32 * STATION
SBD T1 31 * STATION
SBD T1 30 * STATION
SBD T1 29 * STATION
SBD T1 28 * STATION
SBD T1 27 * STATION
* COMPUTE ADDRESS OF *BANKADD* WORD
ADM BANKADD
ADM NSYSBNK+1
STD T2
SHN -14
ADM NSYSBNK
STD T1
* READ THE *BANKADD* WORD FROM THE STATION BANK.
LDN 1
STD T3
LDN CN
RJM RECS
* CHECK FOR THE PLATO STATION IN USE.
LDD CN
SHN 6
PJN ASO2 IF PLATO STATION SIGNED IN
LDK TCAO ABORT ANY PENDING OUTPUT
RJM STC
UJN ASO4 CONTINUE LOGIN PROCESS
* THE PLATO STATION IS IN USE. SEND AN *SSLKEY*
* TO PLATO AND A LOGOUT TO THE NETWORK.
ASO2 LDN PIUE PORT IN USE
RJM MES
ASO3 RJM SSL LOG OFF STATION
LDN 0
STM TST,ST SHOW TERMINAL NOT ACTIVE
LDN 0#0C
RJM PLM REVALIDATE USER AT DPNC
LJM ASPX EXIT
* /--- BLOCK ASP 00 000 86/07/23 14.06
ASO4 BSS 0
LDN ZERL
CRD CN
LDM SDT,ST SET S(D)
LPC 0#FF
STD CN
LDM TDT,ST SET T(D)
LPC 0#FF
STD CN+1
LDM IBUF+3,IP SET TERMINAL TYPE
STD CN+2
LDM IBUF-2,IP SET FOB NUMBER
SHN 10B * 256
ADM IBUF-1,IP
STD CN+3
LDD ST WRITE CONNECTION INFO TO EM
SBD CB
ADD SB
ADM ASCCON+1
STD T2
SHN -14
ADM ASCCON
STD T1
LDN 1
STD T3
LDN CN
RJM WECS
LDN NXKY SEND NEXT KEY TO PLATO
STD KY
RJM SKY
LJM ASPX EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK BFI 00 000 86/05/28 14.36
BFI OVERLAY (READ NEXT BLOCK FROM CIRCULAR BUFFER.)
BFI SPACE 5,11
** BFI - READ NEXT BLOCK FROM CIRCULAR BUFFER
*
* ENTRY - (T4) = MAXIMUM BLOCK SIZE ACCEPTABLE
* (FI2) = CPU IN POINTER
* (FO2) = PPU OUT POINTER
* (FL2) = LIMIT POINTER
* (FP2) = ECS ADDR OF IN/OUT POINTERS
* (FB2) = ECS ADDRESS OF BUFFER
*
* EXIT - (A) = NON-ZERO IF DATA PRESENT
* BUF = DATA BLOCK
*
* NO DATA PRESENT IS RETURNED IF
* 1. BUFFER IS EMPTY
* 2. DATA BLOCK WILL NOT FIT IN CURRENT 2550 BUFFER
* 3. EM ERROR OCCURRED
ORG //OVL+5
BFI SUBR
LDN 1 SET *BFI* LOADED FLAG
STM BODC
LJM BFI0
* INCREMENT PPU CIRCULAR BUFFER POINTER
BFI8 LDM NETC INCREMENT CIRCULAR BUFF POINTER
RAD FO2
SBD FL2 CHECK FOR BUFFER WRAP-AROUND
MJN BFI9 IF NO WRAPPING
STD FO2 UPDATE *OUT* POINTER
* WRITE *OUT* TO ECS
BFI9 LDN ZERL
CRD CN
LDD FO2
STD CN+4
LDD FP2+1
ADN 1 COMPUTE ADDR OF *OUT* POINTER
STD T2
SHN -14
ADD FP2
STD T1
LDN 1
STD T3 SET CM WORD COUNT
LDN CN (A) = PP ADDRESS
RJM WECS
LDN 1 (A) = DATA READ
BFI10 LJM BFIX EXIT
* /--- BLOCK BFI 00 000 86/05/28 14.36
* CHECK IF DATA PRESENT
BFI0 LDD FL2 CHECK IF BUFFER DEFINED
ZJN BFI10
LDD FI2 CHECK IF DATA IN BUFFER
SBD FO2
ZJN BFI10 IF BUFFER EMPTY
LDD FI2 CHECK IN POINTER LEGAL
SBD FL2
MJN BFI2 IF WITHIN RANGE
BFI1 LDN DFPE DSN - FRAMAT POINTERS BAD
BFI1.1 RJM MES SEND ERROR MSG
BFI1.2 LDN 0 INDICATE NO DATA PASSED
UJN BFI10 EXIT
BFI2 LDD FO2 CHECK OUT POINTER LEGAL
SBD FL2
PJN BFI1 IF OUT OF RANGE
* SET UP FOR BLOCK TRANSFER
* READ HEADER WORD FROM BUFFER
LDD FB2+1 SET BUFFER ADDRESS
ADD FO2 BIAS BY *OUT*
STD T2
SHN -14
ADD FB2
STD T1
LDN 1 SET CM WORD COUNT
STD T3
LDC BUF SET PP ADDRESS
RJM RECS READ BLOCK HEADER
NJN BFI1.2 -- IF ECS ERROR
* UPDATE ECS ADDRESS
AOD T2
SHN -14
RAD T1
* /--- BLOCK BFI 00 000 86/05/28 14.38
* CHECK IF CAN TRANSFER BLOCK IN ONE READ
LDM NETC CHECK LENGTH LEGAL
ZJN BFI1 IF EMPTY BLOCK
SBD FL2
PJN BFI1 IF LARGER THAN BUFFER
ADD FL2
SBN 1
ZJN BFI5 IF HEADER ALONE
STD T3 SET NUMBER OF WORDS TO READ
LDM NETP MESSAGE LTH IN PP BYTES
SBN 32D MAX DSN MSG IS 31D
NJN BFI3 -- IF NO ERROR
LDN PMLE PLATO MSG LTH ERROR
UJP BFI1.1 -- SEND MSG AND EXIT
BFI3 BSS 0
* CHECK IF BLOCK WILL FIT IN 2550 BUFFER
LDD T4 CHECK IF BLOCK TOO LONG
SBN 4 ALLOW FOR HEADER
SBM NETP
MJN BFI4 IF BLOCK TOO BIG
LDD T3
ADD FO2
SBD FL2 CHECK TRANSFER WITH *LIMIT*
PJN BFI6 IF MUST SPLIT TRANSFER
LDC BUF+5 (A) = PP ADDRESS
RJM RECS READ THE BLOCK
ZJN BFI5 IF NO ECS ERROR
BFI4 LDN 0 (A) = 0, NO DATA
LJM BFIX
BFI5 LJM BFI8 UPDATE OUT POINTER
* /--- BLOCK BFI 00 000 86/05/28 14.38
* READ BLOCK IN TWO SECTIONS
BFI6 LDD FL2 COMPUTE LENGTH OF FIRST READ
SBD FO2
SBN 1 DECREMENT FOR HEADER
STD T3
ZJN BFI7.1 IF HEADER IS AT LIMIT
LDC BUF+5 (A) = PP ADDRESS
RJM RECS READ FIRST PART OF BLOCK
BFI7 NJN BFI4 IF ECS ERROR
LDD T3 BUMP PP ADDRESS
SHN 2 COMPUTE NUMBER PPU WORDS READ
ADD T3
BFI7.1 ADC BUF+5 COMPUTE PPU ADDRESS FOR READ
STM BFIA
LDD FB2+1 RESET BACK TO FIRST
STD T2
LDD FB2
STD T1
LDM NETC
SBN 1 ADJUST FOR HEADER WORD
SBD T3 COMPUTE NUMBER WORDS REMAINING
STD T3
LDC **
BFIA EQU *-1
RJM RECS
NJN BFI7 IF ECS ERROR
LJM BFI8 UPDATE POINTERS
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK CSS 00 000 82/04/22 13.41
CSS OVERLAY (CHANGE IN SWITCH STATUS OVERLAY.)
CSS SPACE 5,11
** CSS - CHANGE IN SWITCH STATUS
*
* UPDATE ALL TERMINALS CONNECTED TO THE SWITCH
ORG //OVL+5
CSS SUBR
LDN 0
STM BODC CLEAR *BFI* LOADED FLAG
STM CSSC PRESET LOST USER COUNT
LDD CB FETCH FIRST CONNECTION
STD ST
LDD NI
SHN 4
STD T1
LDM NCB+20,T1 FETCH LAST CONNECTION
STM CSSA
LDC SLKY
STD KY
CSS1 LDM SDT,ST GET S(D) FOR THIS TERMINAL
LMM IBUF+2,IP
NJN CSS2 IF THIS TERMINAL NOT ON SWITCH
LDM TST,ST
ZJN CSS2 IF TERMINAL NOT ACTIVE
* LOG OFF THIS TERMINAL
AOM CSSC INCREMENT LOST USER COUNT
LDN 0#08
RJM PLM LOGOUT USER FROM DPNC
LDN 0 (A) = FORCED STORE
STM TST,ST SHOW TERMINAL NOT ACTIVE
RJM SPK STORE PLATO KEY
* BUMP TO NEXT TERMINAL
CSS2 AOD ST
LMM CSSA
NJN CSS1 IF MORE TERMINALS
LDM CSSC
ZJN CSS3 IF NO USERS LOST
LDM NEST,NI SET EQUIPMENT NUMBER
RJM C2D
STM CSSB+1
LDM IBUF+2,IP SET SWITCH NUMBER
RJM C2D
STM CSSB+16D
LDM IBUF+2,IP
SHN -6
RJM C2D
STM CSSB+15D
LDM CSSC SET NUMBER OF LOST USERS
RJM C2D
STM CSSB+3
LDC CSSB
RJM DFM SEND DAYFILE MESSAGE
CSS3 BSS 0
LJM CSSX EXIT
CSSA BSS 1 LAST CONNECTION
CSSB DATA C*EQXX XX USERS LOST ON SWITCH XXXXB*
CSSC BSS 1
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK DSM 00 000 82/12/02 15.59
DSM OVERLAY (DISPLAY SYSTEM MESSAGE OVERLAY.)
DSM SPACE 5,11
** DSM - DISPLAY SYSTEM MESSAGE
*
* THE SYSTEM MESSAGE RECEIVED IS WRITTEN TO THE
* ERROR LOG.
ORG //OVL+5
DSM SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDD PL
STD T3 SET LENGTH OF DATA TO CONVERT
SBN 16D
MJN DSM1 IF NOT TOO LONG
LDN 16D
STD T3
DSM1 LDD IP
STD T4 (T4) = NEXT BYTE TO DUMP
RAD T3 (T3) = LWA +1 TO DUMP
LDC BUF+2
STD T5 (T5) = DISPLAY DATA POINTER
LDC 2R S SET MESSAGE HEADER
STM BUF
LDC 2RM
STM BUF+1
DSM2 LDM IBUF,T4
RJM C2X CONVERT TO HEX
STI T5
AOD T5 BUMP OUTPUT POINTER
AOD T4 BUMP INPUT POINTER
SBD T3
MJN DSM2 IF MORE TO DUMP
LDN 0 SET ZERO TERMINATOR
STI T5
LDC BUF+ERLN SEND MESSAGE TO ERROR LOG
RJM DFM
LJM DSMX EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK CPR 00 000 86/05/28 14.37
CPR OVERLAY (PRESET FOR CCP ERROR MESSAGE)
CPR SPACE 5,11
** CPR - PRESET FOR CCP ERROR MESSAGE
*
* BUILD HEADER FOR ERROR LOG DAYFILE MESSAGE AND
* DETERMINE CLASS OF MESSAGE
ORG //OVL+5
CPR SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDC DSFE (A) = EST MNEMONIC FOR DSN 2550
STM BUF PLACE IT IN THE MESSAGE BUFFER
LDC BUF+1 (A) = MESSAGE BUFFER POINTER
STD PT
* EST ORDINAL OF *FE* EQUIPMENT
LDM NEST,NI (A) = EST ORDINAL OF THIS NPU
RJM C2O CONVERT EST ORDINAL
* *FE* CHANNEL
LDC 2R,C
RJM ST2
LDM NCH,NI (A) = CHANNEL OF THIS NPU
RJM C2O
* *FE* EQUIPMENT NUMBER
LDC 2R-E
RJM ST2
LDM NEQ (A) = NPU EQUIPMENT NUMBER
SHN -3D POSITION IT FOR DAYFILE MSG
SCN 77B
ADC 2R0,
RJM ST2
LDM IBUF+2,IP (A) = CONTROL CODE
LMC 0#CE CE ERROR MESSAGE
NJN CPR1 IF NOT $CE CONTROL CODE
* PROCESS $CE (CE ERROR MESSAGE) CONTROL CODE
EXECUTE CE1,=
LDC /CE1/OVL
RJM EXR
UJN CPR2
CPR1 LDM IBUF+2,IP (A) = CONTROL CODE
LMC 0#CD LINK/TRUNK STATISTICS
NJN CPR2 IF NOT $CD CONTROL CODE
* PROCESS $CD (LINK/TRUNK STATISTICS) CONTROL CODE
EXECUTE CD1,=
LDC /CD1/OVL
RJM EXR
CPR2 LJM CPRX EXIT
* /--- BLOCK CPR 00 000 86/05/28 14.37
C2O SPACE 4,10
** C2O - CONVERT AND STORE TWO OCTAL DIGITS.
*
* ENTRY (A) = BINARY VALUE LESS THAN 77B.
*
* EXIT TWO OCTAL DIGITS STORED AS DISPLAY CODE CHARACTERS.
C2O SUBR ENTRY/EXIT
STM C2OA
SHN -3
LPN 7
ADN 1R0
RJM STX
LDC 0
C2OA EQU *-1
LPN 7
ADN 1R0
RJM STX
UJN C2OX RETURN
ST2 SPACE 4,10
** ST2 - STORE TWO TEXT CHARACTERS.
* (DISPLAY CODES) INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = TWO DISPLAY CHARACTERS.
*
* EXIT CHARACTERS STORED.
ST2 SUBR ENTRY/EXIT
STM ST2A
SHN -6
RJM STX
LDM ST2A
RJM STX
UJN ST2X RETURN
ST2A CON 0
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK CD1 00 000 82/12/02 16.03
CD1 OVERLAY (DISPLAY $CD LINK/STATISTICS MESSAGE - 1)
CD1 SPACE 5,11
** CD1 - CONVERT/DISPLAY $CD (LINK/STAT) MESSAGE - 1
*
* CONVERT AND SEND $CD MESSAGE TO THE ERROR LOG.
* PART 1.
*
* EXIT T7 = UPDATED POINTER INTO *IBUF*
ORG //OVL+5
CD1 SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDD IP GET IBUF INDEX
ADN 5 ADVANCE TO CODE
STD T7 SAVE IN T7
LDM IBUF,T7 (A) = CODE
NJN WEL3 IF CODE IS NOT ZERO
AOD T7 (T7) POINTS TO MAJOR RECORD TYPE
LDM IBUF,T7 (A) = MAJOR RECORD TYPE
SBN 3
ZJN WEL4 IF TYPE IS $03
PJN WEL3 IF TYPE IS OUT OF RANGE
ADN 1
ZJN WEL5 IF TYPE IS $02
WEL3 LDN NSBE NET STAT TYPE/CODE BAD
LJM WEL31
WEL4 LDN 8D*2 SET TRUNK BYTE COUNT
STM BYTECNT
LDN 11D START MESSAGE OVERFLOW COUNTER
STM MSGCNT
LDC 2RTK TRUNK STATISTICS
UJN WEL6
WEL5 LDN 11D START MESSAGE OVERFLOW COUNTER
STM MSGCNT
SHN 1 SET LINK BYTE COUNT
STM BYTECNT
LDC 2RLK
WEL6 RJM ST2
LDD PL VERIFY PACKET LENGTH
SBM BYTECNT WITH BYTE COUNT
SBN 7 AND BY HEADER+1 (EQXX,CYY-EZ,)
MJN WEL6.1 IF LENGTH OKAY
LJM WEL30 PACKET IS TOO LONG
WEL6.1 BSS 0
AOD T7 (T7) POINTS TO MINOR RECORD TYPE
LDM IBUF,T7 (A) = MAJOR RECORD TYPE (LINK NUM)
RJM SHX
UJN WEL32
WEL30 LDN NMLE NET MSG LENGTH ERROR
WEL31 RJM MES
WEL32 EXECUTE CD2,=
LDC /CD2/OVL
RJM EXR
* /--- BLOCK CD1 00 000 82/12/02 16.03
ST2 SPACE 4,10
** ST2 - STORE TWO TEXT CHARACTERS.
* (DISPLAY CODES) INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = TWO DISPLAY CHARACTERS.
*
* EXIT CHARACTERS STORED.
ST2 SUBR ENTRY/EXIT
STM ST2A
SHN -6
RJM STX
LDM ST2A
RJM STX
UJN ST2X RETURN
ST2A CON 0
SHX SPACE 4,10
** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = 2 HEXIDECIMAL DIGITS.
*
* EXIT CHARACTERS STORED AS DISPLAY CODES.
*
* USES T1.
SHX SUBR ENTRY/EXIT
STD T1 SAVE THE ORIGINAL
SHN -4
LPN 17B
SBN 10D
PJN SHX2 IF ALPHA DIGIT
ADN 1R0+9D
SHX2 ADN 1
RJM STX
LDD T1
LPN 17B
SBN 10D
PJN SHX4 IF ALPHA DIGIT
ADN 1R0+9D
SHX4 ADN 1
RJM STX
UJN SHXX
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK CD2 00 000 82/12/02 16.04
CD2 OVERLAY (DISPLAY $CD LINK/STATISTICS MESSAGE - 2)
CD2 SPACE 5,11
** CD2 - CONVERT/DISPLAY $CD (LINK/STAT) MESSAGE - 2
*
* CONVERT AND SEND $CD MESSAGE TO THE ERROR LOG.
* PART 2.
*
* ENTRY T7 = POINTER INTO IBUF
ORG //OVL+5
CD2 SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
WEL7 BSS 0
AOD T7 (T7) POINTS TO DATA BYTE
LDM IBUF,T7 (A) = MAJOR RECORD TYPE
RJM SHX
SOM BYTECNT
ZJN WEL8 IF END OF INPUT DATA
SOM MSGCNT
PJN WEL7 IF NO MESSAGE OVERFLOW
RJM SND SEND PARTIAL MESSAGE.
LDN 11D
STM MSGCNT RESET THE OVERFLOW COUNTER
LDM STXB+1
STM STXA
LDC BUF+8D
STD PT RESET POINTER FOR CONTINUATION
UJN WEL7
WEL8 BSS 0
* OUTPUT THE USER COUNT
LDD RA (A) = ADDRESS OF CP RA / 100B
SHN 6 (A) = ADDRESS OF CP RA
ADM UMTB OFFSET TO STATS
ADD NI (A) = ADDR OF NPU USER STATS
ADD NI (2 WDS/NPU)
CRD CM
* THE FOLLOWING CODE ASSUMES THAT A NPU WILL
* SUPPORT NO MORE THAN 777B USERS.
LDD CM (A) = USER STATS FOR THIS NPU
SHN -6 (A) = UPPER PART OF STATS
LPN 7B (A) = LIMITED TO 777B MAX
ADC 2RU0 (A) SET UP FOR THE DAYFILE
RJM ST2 OUTPUT THE UPPER PART
LDD CM (A) = USER STATS FOR THIS NPU
LPN 77B (A) = LOWER PART OF STATS
RJM C2O CONVERT AND OUTPUT UPPER PART
* COMPLETE THE MESSAGE
LDN 1R. TERMINATE MESSAGE WITH A PERIOD
RJM STX
RJM SND SEND MESSAGE TO ERROR LOG
LJM CEMX
* /--- BLOCK CD2 00 000 82/12/02 16.06
SHX SPACE 4,10
** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = 2 HEXIDECIMAL DIGITS.
*
* EXIT CHARACTERS STORED AS DISPLAY CODES.
*
* USES T1.
SHX SUBR ENTRY/EXIT
STD T1 SAVE THE ORIGINAL
SHN -4
LPN 17B
SBN 10D
PJN SHX2 IF ALPHA DIGIT
ADN 1R0+9D
SHX2 ADN 1
RJM STX
LDD T1
LPN 17B
SBN 10D
PJN SHX4 IF ALPHA DIGIT
ADN 1R0+9D
SHX4 ADN 1
RJM STX
UJN SHXX
ST2 SPACE 4,10
** ST2 - STORE TWO TEXT CHARACTERS.
* (DISPLAY CODES) INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = TWO DISPLAY CHARACTERS.
*
* EXIT CHARACTERS STORED.
ST2 SUBR ENTRY/EXIT
STM ST2A
SHN -6
RJM STX
LDM ST2A
RJM STX
UJN ST2X RETURN
ST2A CON 0
SND SPACE 4,10
** SND - SEND MESSAGE IN BUFFER TO THE ERROR LOG, SET TERMNATOR.
*
* ENTRY UNTERMINATED MESSAGE IN *BUF*.
*
* EXIT MESSAGE WRITTEN TO ERROR LOG.
*
* CALLS DFM.
SND SUBR ENTRY/EXIT.
LDN 0
RJM STX
LDN 0 ADD EOM TRAILER
STI PT
LDC BUF+ERLN
RJM DFM
UJN SNDX RETURN
C2O SPACE 4,10
** C2O - CONVERT AND STORE TWO OCTAL DIGITS.
*
* ENTRY (A) = BINARY VALUE LESS THAN 77B.
*
* EXIT TWO OCTAL DIGITS STORED AS DISPLAY CODE CHARACTERS.
C2O SUBR ENTRY/EXIT
STM C2OA
SHN -3
LPN 7
ADN 1R0
RJM STX
LDC 0
C2OA EQU *-1
LPN 7
ADN 1R0
RJM STX
UJN C2OX RETURN
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK CE1 00 000 86/05/28 14.40
CE1 OVERLAY (CONVERT $CE CE ERROR MESSAGES)
CCE SPACE 5,11
** CE1 - CONVERT/DISPLAY $CE (CE ERROR) MESSAGES
*
* CONVERT AND SEND $CE MESSAGE TO THE ERROR LOG.
* PART 1.
*
* C E ERROR MESSAGE FORMATS.
*
* 12/$CE,12/MN,12/SC,12/$XX,12/DATA...12/DATA
*
* MN = MINUTES.
* SC = SECONDS.
* XX = 01 IF DATA IS POPULATION COUNTERS,
* 04 IF DATA IS ERROR MESSAGE TEXT.
* DATA = 8 BITS PER WORD - VARIABLE LENGTH.
*
* CE ERROR DETAIL AND COUNT MESSAGES.
*
* SD.FE00,C00,E0,CE,CD, ---
* 01,ZZZ---ZZZ.
* 04,MN,SC,ZZZ---ZZZ.
*
* CE = C E ERROR MESSAGE IDENTIFICATION.
* MN = MINUTE WHEN NPU ERROR OCCURRED.
* SC = SECOND WHEN NPU ERROR OCCURRED.
* CD = CODE TO DIFFERENTIATE DETAILS AND COUNTS
* 01 = COUNT MESSAGES,
* 04 = DETAIL MESSAGES.
* ZZZ = DATA.
* COUNT MESSAGES
* NN/M=$00, OR NN/M=$0000.
* NN = ERROR CODE,
* M = TRUNK NUMBER (0 IF NON-TRUNK),
* $00 OR $0000 = HEXIDECIMAL COUNTS.
* DETAIL MESSAGES
* 00NNXXX---XXX; NN = ERROR CODE, XXX = SEE CCP 2.0 ERS.
ORG //OVL+5
CE1 SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDD IP GET IBUF INDEX
ADN 3 ADVANCE TO MINUTES
STD T7 SAVE IN T7
LDM IBUF,T7 (A) = MINUTES
STM WELA
LDC 2RCE START THE MESSAGE BUFFER
RJM ST2
LDN 1R, COMMA
RJM STX
AOD T7 (T7) POINTS TO SECONDS
LDM IBUF,T7 (A) = SECONDS
STM WELL SAVE THE SECONDS
LDD PL GET PACKET LENGTH FOR LOOP COUNTER
SBN 2
STM BYTECNT
AOD T7 (T7) POINTS TO $04 BYTE
LDM IBUF,T7 (A) = $04 BYTE
LMN 01
NJN WEL10.1 IF DETAIL RECORD
LJM WEL14 DATA IS COUNTERS
* /--- BLOCK CE1 00 000 86/05/29 09.38
WEL10.1 LDD PL VERIFY PACKET LENGTH
SBN 12D
MJN WEL10.2 IF LENGTH OKAY
LJM WEL30 PACKET IS TOO LONG
WEL10.2 BSS 0
LDN 04
RJM SHX
LDN 1R, COMMA
RJM STX
LDC 0
WELA EQU *-1 (MINUTES)
RJM SHX STORE HEX MINUTES
LDN 1R,
RJM STX
LDC 0
WELL EQU *-1
RJM SHX STORE HEX SECONDS
LDN 1R,
RJM STX
WEL11 LDN 7
STM MSGCNT START MESSAGE OVERFLOW COUNTER
WEL12 AOD T7 (T7) POINTS TOO NEXT DATA BYTE
LDM IBUF,T7 (A) = NEXT DATA BYTE
RJM SHX
SOM BYTECNT
MJN WEL13 AT END OF DATA
SOM MSGCNT
PJN WEL12 IF NO MESSAGE OVERFLOW
RJM SND SEND PARTIAL MESSAGE
LDC BUF+12D
STD PT RESET POINTER FOR CONTINUATION
LDM STXB+1
STM STXA
UJN WEL11
WEL13 LDN 1R. TERMINATE THE MESSAGE WITH A PERIOD
RJM STX
RJM SND SEND MESSAGE TO THE ERROR LOG
UJN WEL35 EXIT
WEL14 LDN 01 SUBCODE = 1 FOR MESSAGE COUNTERS
RJM SHX
LDN 1R, COMMA
RJM STX
LDD PL VERIFY PACKET LENGTH
ADC -120D
PJN WEL30 PACKET IS TOO LONG
UJN WEL36 EXIT
WEL30 LDN NMLE NET MSG LENGTH ERROR
RJM MES
WEL35 LDN 0 INDICATE MESSAGE COMPLETE
WEL36 ZJN WEL37 IF MESSAGE COMPLETE
EXECUTE CE2,=
LDC /CE2/OVL
RJM EXR
WEL37 LJM CEMX EXIT
* /--- BLOCK CE1 00 000 86/05/29 09.39
SHX SPACE 4,10
** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = 2 HEXIDECIMAL DIGITS.
*
* EXIT CHARACTERS STORED AS DISPLAY CODES.
*
* USES T1.
*
* CALLS STX.
SHX SUBR ENTRY/EXIT
STD T1 SAVE THE ORIGINAL
SHN -4
LPN 17B
SBN 10D
PJN SHX2 IF ALPHA DIGIT
ADN 1R0+9D
SHX2 ADN 1
RJM STX STORE FIRST DIGIT
LDD T1
LPN 17B
SBN 10D
PJN SHX4 IF ALPHA DIGIT
ADN 1R0+9D
SHX4 ADN 1
RJM STX STORE SECOND DIGIT
UJN SHXX
ST2 SPACE 4,10
** ST2 - STORE TWO TEXT CHARACTERS.
* (DISPLAY CODES) INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = TWO DISPLAY CHARACTERS.
*
* EXIT CHARACTERS STORED.
*
* CALLS STX.
ST2 SUBR ENTRY/EXIT
STD T0
SHN -6
RJM STX STORE FIRST CHARACTER
LDD T0
RJM STX STORE SECOND CHARACTER
UJN ST2X RETURN
SND SPACE 4,10
** SND - SEND MESSAGE IN BUFFER TO THE ERROR LOG, SET TERMNATOR.
*
* ENTRY UNTERMINATED MESSAGE IN *BUF*.
*
* EXIT MESSAGE WRITTEN TO ERROR LOG.
*
* CALLS DFM.
SND SUBR ENTRY/EXIT.
LDN 0
RJM STX
LDN 0 ADD EOM TRAILER
STI PT
LDC BUF+ERLN
RJM DFM
UJN SNDX RETURN
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK CE2 00 000 86/05/29 09.49
CE2 OVERLAY (CONVERT $CE CE ERROR MESSAGE - 2)
SPACE 5
** CE2 CONVERT AND SEND $CE MESAGE TO THE ERROR LOG.
* PART 2.
*
* CE ERROR SUMMARY DATA.
*
ORG //OVL+5
CE2 SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* THE SUMMARY CODE DOES NOT FIT IN THE OVERLAY BUFFER SO
* LEAVE IT OUT FOR NOW.
LIST F
CESUM IF -DEF,CESUMRY
LJM CEMX
CESUM ELSE
AOD T7 (T7) POINTS TO FIRST IDENTIFIER
LDM IBUF,T7 (A) = FIRST IDENTIFIER
LMC 376B
NJN WEL15 IF NOT MINUS ONE
LDC 2R-1
RJM ST2 DISPLAY THE -1 IDENTIFIER
LDC 2R/0
RJM ST2 STORE TRUNK NUMBER
UJN WEL16
WEL15 LMC 376B RESTORE THE VALUE
RJM COR
WEL16 LDC 2R=$ SEPARATORS
RJM ST2
AOD T7 (T7) POINTS TO COUNTER (UPPER 8 BITS)
LDM IBUF,T7 (A) = COUNTER (UPPER 8 BITS)
ZJN WEL17 IF VALUE IS ZERO
RJM SHX
* /--- BLOCK CE2 00 000 86/05/29 09.49
WEL17 AOD T7 (T7) POINTS TO COUNTER (LOWER 8 BITS)
LDM IBUF,T7 (A) = COUNTER (LOWER 8 BITS)
RJM SHX
LDC -3 DECREMENT THE BYTE COUNT
RAM MSGCNT
MJN WEL18.2 IF END OF DATA
LDN 1R,
RJM STX
AOD T7 (T7) POINTS TO IDENTIFIER
LDM IBUF,T7 (A) = IDENTIFIER
RJM COR
LDC 2R=$
RJM ST2
AOD T7 (T7) POINTS TO COUNT (UPPER 8 BITS)
LDM IBUF,T7 (A) = COUNT (UPPER 8 BITS)
ZJN WEL18 IF ALL ZERO
RJM SHX
WEL18 AOD T7 (T7) POINTS TO COUNT (LOWER 8 BITS)
LDM IBUF,T7 (A) = COUNT (LOWER 8 BITS)
RJM SHX
WEL18.2 LDN 1R. PERIOD
RJM STX
RJM SND SEND MESSAGE TO THE ERROR LOG
LDM BYTECNT
SHN 6
MJN WEL19 IF DATA ALL PROCESSED
LDC -3 DECREMENT THE PACKET CHARACTER COUNT
RAM BYTECNT
MJN WEL19 IF END OF PACKET
LDC BUF+9D
STD PT RESET THE BUFFER POINTER
LDM STXB+1
STM STXA RESET THE STORAGE CONTROL
AOD T7 (T7) = ERROR MESSAGE IDENTIFIER
LDM IBUF,T7 (A) = ERRORR MESSAGE IDENTIFIER
RJM COR
LJM WEL16 CONTINUE PROCESSING
WEL19 LJM CEMX
* /--- BLOCK CE2 00 000 86/05/29 09.48
SHX SPACE 4,10
** SHX - STORE HEX CHARACTERS INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = 2 HEXIDECIMAL DIGITS.
*
* EXIT CHARACTERS STORED AS DISPLAY CODES.
*
* USES T1.
*
* CALLS STX.
SHX SUBR ENTRY/EXIT
STD T1 SAVE THE ORIGINAL
SHN -4
LPN 17B
SBN 10D
PJN SHX2 IF ALPHA DIGIT
ADN 1R0+9D
SHX2 ADN 1
RJM STX STORE FIRST DIGIT
LDD T1
LPN 17B
SBN 10D
PJN SHX4 IF ALPHA DIGIT
ADN 1R0+9D
SHX4 ADN 1
RJM STX STORE SECOND DIGIT
UJN SHXX
ST2 SPACE 4,10
** ST2 - STORE TWO TEXT CHARACTERS.
* (DISPLAY CODES) INTO THE MESSAGE BUFFER.
*
* ENTRY (A) = TWO DISPLAY CHARACTERS.
*
* EXIT CHARACTERS STORED.
*
* CALLS STX.
ST2 SUBR ENTRY/EXIT
STM ST2A
SHN -6
RJM STX STORE FIRST CHARACTER
LDM ST2A
RJM STX STORE SECOND CHARACTER
UJN ST2X RETURN
ST2A CON 0
SND SPACE 4,10
** SND - SEND MESSAGE IN BUFFER TO THE ERROR LOG, SET TERMNATOR.
*
* ENTRY UNTERMINATED MESSAGE IN *BUF*.
*
* EXIT MESSAGE WRITTEN TO ERROR LOG.
*
* CALLS DFM.
SND SUBR ENTRY/EXIT.
LDN 0
RJM STX
LDN 0 ADD EOM TRAILER
STI PT
LDC BUF+ERLN
RJM DFM
UJN SNDX RETURN
* /--- BLOCK CE2 00 000 86/05/29 09.50
COR SPACE 4,10
** COR - CONVERT ERROR ORDINAL INTO REAL ERROR CODE.
*
* ENTRY (A) = ERROR ORDINAL.
*
* EXIT DATA CONVERTED AND STORED INTO BUFFER.
*
* CALLS SHX, ST2.
SPACE 2
COR SUBR ENTRY/EXIT
STM CORA
LDN 0
STM CORC INITIALIZE THE TRUNK NUMBER
LDC 0
CORA EQU *-1 ERROR ORDINAL
ZJN COR2 IF THE ERROR CODE IS ZERO
SBN 32D
MJN COR3 IF TRUNK MIGHT BE ZERO OR ONE
COR1 STM CORB
AOM CORC INCREMENT THE TRUNK NUMBER
LDC 0
CORB EQU *-1 WORKING ORDINAL
SBN 16D
PJN COR1 IF ORDINAL IS STILL LARGER
AOM CORC ADJUST THE TRUNK NUMBER
LDM CORB
COR2 RJM SHX STORE THE HEX ERROR CODE
LDC 0
CORC EQU *-1 TRUNK NUMBER
ADC 2R/0
RJM ST2 STORE THE TRUNK NUMBER
LJM CORX RETURN
COR3 ADN 32D-19D
MJN COR5 IF ERROR SMALLER, MAY BE FOR TRUNK 1
ZJN COR4 IF ERROR IS $1C
ADN 30D
UJN COR2 STORE DATA INTO BUFFER
COR4 LDN 28D
UJN COR2 STORE DATA INTO BUFFER
COR5 ADN 1
MJN COR6 IF NOT $18 ERROR
LDN 24D
UJN COR2 STORE DATA INTO BUFFER
COR6 STM CORD
ADN 1
ZJN COR7 IF ERROR = $11
ADN 16D
ZJN COR7 IF ERROR = $01
LDN 1
STM CORC SET TRUNK = 1
COR7 LDC 0
CORD EQU *-1 ERROR CODE COMPLEMENT
SHN 21-13
SHN 13-21 ENTEND THE SIGN
ADN 19D RESTORE THE VALU
LJM COR2 STORE DATA INTO BUFFER
CESUM ENDIF
LIST *
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK DIB 00 000 86/05/29 09.45
DIB OVERLAY (DUMP INPUT BLOCK TO ERROR LOG)
DIB SPACE 5,11
** DIB - DUMP INPUT BLOCK TO ERROR LOG.
*
* AN ERROR WAS ENCOUNTERED WHILE PROCESSING AN INPUT
* BLOCK. PRINT THE CONTENTS OF IL, IP, PL AND THE
* INPUT BLOCK.
ORG //OVL+5
DIB SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDD IL CONVERT BLOCK LENGTH
RJM C2D
STM DIBA+3
LDD IL
SHN -6
RJM C2D
STM DIBA+2
LDD IP CONVERT PACKET POINTER
RJM C2D
STM DIBA+7
LDD IP
SHN -6
RJM C2D
STM DIBA+6
LDD PL CONVERT PACKET LENGTH
RJM C2D
STM DIBA+13
LDD PL
SHN -6
RJM C2D
STM DIBA+12
LDC DIBA+ERLN
RJM DFM PRINT TO ERROR LOG
LDD IL
ZJN DIB2 EXIT IF ZERO LENGTH
LDN 0
STD T7 COUNTER FOR INPUT BLOCK
DIB1 LDM IBUF,T7 INPUT BLOCK WORD TO CONVERT
RJM C2D
STM DIBB+1
LDM IBUF,T7
SHN -6
RJM C2D
STM DIBB
LDC DIBB+ERLN
RJM DFM PRINT WORD TO ERROR LOG
AOD T7 INCREMENT BLOCK COUNTER
LMD IL SUBTRACT BLOCK LENGTH
NJN DIB1 IF MORE WORDS TO PRINT
DIB2 LJM DIBX EXIT
DIBA DATA C* IL=XXXX IP=XXXX PL=XXXX*
DIBB DATA C*XXXX*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK EM7 00 000 82/12/02 16.07
EM7 OVERLAY (EM ACCESS FOR 700 SERIES.)
EM7 SPACE 5,11
** EM7 - EM ACCESS FOR 700 SERIES.
*
* OVER-WRITE THE DDP READ/WRITE EM ROUTINES WITH
* READ/WRITE EM VIA MONITOR FUNCTION ROUTINES FOR
* THE 700 SERIES.
ORG //OVL+5
EM7 SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* COPY CPMTR ROUTINE TO REPLACE DDP ROUTINES
LDN 0
STD T1
EM71 LDM RECF,T1
STM //RECSX,T1
AOD T1
LMC RECL
NJN EM71 CONTINUE MOVE
LDN 0 MOVE WRITE ROUTINE
STD T1
EM72 LDM WECF,T1
STM //WECSX,T1
AOD T1
LMC WECL
NJN EM72 CONTINUE MOVE
* SET ADDRESS OF CM BUFFER
LDD IR+4
SHN 6
.NOSV2 IFGE OSLEV,562D NOS V2
RAM .RECA
LDD IR+4 BIAS FOR HEADERS
SHN 1
.NOSV2 ENDIF
RAM .RECA
STM .RECB
STM .WECA
.NOSV2 IFGE OSLEV,562D NOS V2
UJP EM7X
.NOSV2 ELSE NOS V1
UJN EM7X
.NOSV2 ENDIF
* /--- BLOCK /CMR/READE 00 000 86/05/29 10.31
RECS SPACE 5,11
** RECS - READ ECS VIA MONITOR FUNCTION.
*
* ENTRY (A) = PPU MEMORY ADDRESS.
* (T1) = UPPER PORTION OF ECS ADDRESS.
* (T2) = LOWER PORTION OF ECS ADDRESS.
* (T3) = NUMBER OF CM WORDS TO READ.
*
* EXIT (A) = 0, IF NO ERRORS.
* = 1, IF ECS PARITY ERROR.
*
* THIS SUBROUTINE WILL OVERWRITE THE DDP ECS READ
* SUBROUTINE, //RECS, IF THE DDP IS NOT
* AVAILABLE.
RECF EQU *
LOC //RECSX
RECS SUBR
STM RECA SAVE PP ADDRESS
.NOSV2 IFGE OSLEV,562D NOS V2
LDK ZERL ZERO WORD
CRD CM
.NOSV2 ENDIF
LDD T1
STD CM+3 (CM+3) = UPPER PART OF EM ADDR.
LDD T2
STD CM+4 (CM+4) = LOWER PART OF EM ADDR.
.NOSV1 IFLT OSLEV,562D NOS V1
LDD MA
CWD CM (MB) = 36/TRASH,24/EM ADDRESS
.NOSV1 ENDIF
LDD T3 GET NUMBER CPU WORDS TO READ
.NOSV1 IFLT OSLEV,562D NOS V1
SBN 1 ADJUST WORD COUNT
.NOSV1 ENDIF
SHN 6
STD CM+1 SET NUMBER CPU WORDS TO READ
LDD RA COMPUTE CM ADDRESS
SHN 6
ADC EB ECS/CM BUFFER ADDRESS
.RECA EQU *-1
* /--- BLOCK /CMR/READE 00 000 86/05/29 10.31
.NOSV2 IFGE OSLEV,562D NOS V2
SBN 1 BACK UP TO BUFFER HEADER
CWD CM
STD CM+2 SAVE HEADER ADDRESS
SHN -12D
LPN 77B ENSURE NO SIGN EXTENSION
STD CM+1
LDD HN STORE REQUEST COUNT
RAD CM+1
LDC /CPS/PELS*1000B
STD CM+3 *ECSM* SUBFUNCTION *PELS*
LDN 0
STD CM+4
.NOSV2 ELSE NOS V1
STD CM+2 SET LOWER PART OF CM ADDRESS
SHN -14
RAD CM+1 SET UPPER PART OF CM ADDRESS
LDC /CPS/RWEM*1000B
STD CM+3 (CM+3) = SUBFUNCTION = *RWEM*
LDN 0
STD CM+4 (CM+4) = R/W FLAG (READ)
.NOSV2 ENDIF
MONITOR ECSM READ ECS TO CM
LDD RA READ DATA TO PP
SHN 6
ADC EB CM/ECS BUFFER ADDRESS
.RECB EQU *-1
CRM **,T3
RECA EQU *-1
LDD CM+1 CHECK IF ECS ERROR OCCURRED
ZJN RECS1 (A)=0, NO ECS ERROR
LDN DERE ECS READ ERROR
RJM MES
LDN 1 EXIT WITH (A) = 1
RECS1 LJM RECSX EXIT
* CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE
* DDP ECS READ SUBROUTINE LENGTH.
RECL EQU *-RECSX LENGTH OF THIS SUBROUTINE
ERRNG //RECL-RECL SUBROUTINE TOO LONG
LOC *O
* /--- BLOCK /CMR/WRITE 00 000 86/05/29 10.33
WECS SPACE 5,11
** WECS - WRITE ECS VIA MONITOR FUNCTION.
*
* ENTRY (A) = PPU MEMORY ADDRESS.
* (T1) = UPPER PORTION OF ECS ADDRESS.
* (T2) = LOWER PORTION OF ECS ADDRESS.
* (T3) = NUMBER OF CM WORDS TO WRITE.
*
* EXIT (A) = 0, IF NO ERRORS.
* = 1, IF ECS PARITY ERROR.
*
* THIS SUBROUTINE WILL OVERWRITE THE DDP ECS WRITE
* SUBROUTINE, //WECS, IF THE DDP IS NOT
* AVAILABLE.
WECF EQU *
LOC //WECSX
WECS SUBR
STM WECA SAVE PP ADDRESS
.NOSV2 IFGE OSLEV,562D NOS V2
LDK ZERL ZERO WORD
CRD CM
.NOSV2 ENDIF
LDD T1
STD CM+3 (CM+3) = UPPER PART OF EM ADDR.
LDD T2
STD CM+4 (CM+4) = LOWER PART OF EM ADDR.
.NOSV1 IFLT OSLEV,562D NOS V1
LDD MA
CWD CM (MB) = 36/TRASH,24/EM ADDRESS
.NOSV1 ENDIF
LDD T3 GET NUMBER CPU WORDS TO WRITE
ZJN WECSX IF NO DATA
.NOSV1 IFLT OSLEV,562D NOS V1
SBN 1 ADJUST WORD COUNT
.NOSV1 ENDIF
SHN 6
STD CM+1 SET NUMBER CPU WORDS TO WRITE
LDD RA COMPUTE CM ADDRESS
SHN 6
ADC EB CM/ECS BUFFER ADDRESS
.WECA EQU *-1
CWM **,T3 WRITE THE DATA
WECA EQU *-1
SBD T3
* /--- BLOCK /CMR/WRITE 00 000 86/05/29 10.33
.NOSV2 IFGE OSLEV,562D NOS V2
SBN 1 BACK UP TO BUFFER HEADER
CWD CM
.NOSV2 ENDIF
STD CM+2
SHN -14
LPN 77 ENSURE NO SIGN EXTENSION
.NOSV2 IFGE OSLEV,562D NOS V2
LMD HN SET REQUEST COUNT
STM CM+1
LDC /CPS/PELS*1000B+1S8 WRITE EM VIA CM LIST
.NOSV2 ELSE NOS V1
RAD CM+1
LDC /CPS/RWEM*1000B
.NOSV2 ENDIF
STD CM+3 (CM+3) = SUBFUNCTION = *RWEM*
LDN 1
STD CM+4 (CM+4) = R/W FLAG (READ)
MONITOR ECSM WRITE CM TO ECS
LDD CM+1 CHECK IF ECS ERROR OCCURRED
ZJN WECS1 (A)=0, NO ECS ERROR
LDN DEWE ECS WRITE ERROR
RJM MES
LDN 1 EXIT WITH (A) =1
WECS1 LJM WECSX EXIT
* CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE
* DDP ECS WRITE SUBROUTINE LENGTH.
WECL EQU *-WECSX LENGTH OF THIS SUBROUTINE
ERRNG //WECL-WECL SUBROUTINE TOO LONG
LOC *O
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK EM8 00 000 82/04/23 09.11
EM8 OVERLAY (EM ACCESS FOR 800 SERIES.)
EM8 SPACE 5,11
** EM8 - EM ACCESS ROUTINES FOR 800 SERIES.
*
* REWRITE THE DDP EM ACCESS ROUTINES WITH THE
* READ/WRITE EM ROUTINES CONTAINED IN THIS OVERLAY
* FOR 800 SERIES MACHINES.
ORG //OVL+5
EM8 SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* COPY CPMTR ROUTINE TO REPLACE DDP ROUTINES
LDN 0
STD T1
EM81 LDM RECF,T1
STM //RECSX,T1
AOD T1
LMC RECL
NJN EM81 CONTINUE MOVE
LDN 0 MOVE WRITE ROUTINE
STD T1
EM82 LDM WECF,T1
STM //WECSX,T1
AOD T1
LMC WECL
NJN EM82 CONTINUE MOVE
LJM EM8X RETURN
* /--- BLOCK /UEM/READE 00 000 86/05/29 10.38
RECS SPACE 5,11
** RECS - READ UEM VIA DIRECT ACCESS.
*
* ENTRY (A) = PPU MEMORY ADDRESS.
* (T1) = UPPER PORTION OF ECS ADDRESS.
* (T2) = LOWER PORTION OF ECS ADDRESS.
* (T3) = NUMBER OF CM WORDS TO READ.
*
* EXIT (A) = 0, IF NO ERRORS.
* = 1, IF ECS PARITY ERROR.
*
* THIS SUBROUTINE WILL OVERWRITE THE DDP ECS READ
* SUBROUTINE, //RECS, ON 800-SERIES MAINFRAMES.
RECF EQU *
LOC //RECSX
RECS SUBR
* PLANT PP ADDRESS THE CM WORDS ARE TO BE READ INTO
STM RCS20 PLANT PP MEMORY ADDRESS
LDD T3 (A) = NUMBER OF PP WORDS
ZJN RECSX IF NO WORDS TO BE READ
SRD CM+2 SAVE CURRENT (R)
* FORM PART OF EM ADDRESS IN (R)
LDD T1 (A) = UPPER PART OF EM ADDRESS
SHN -6 (A) = BITS 23 - 18 OF EM ADDR
STD CM
LDD T1
SHN 6 (A) = BITS 17 - 12 OF EM ADDR
STD CM+1
LRD CM (R) = BITS 23 - 12 OF EM ADDR
* FORM THE REST OF THE EM ADDRESS IN (A)
LDD T2 (A) = LOWER PART OF EM ADDRESS
LMC 400000B SET BIT TO USE (R) IN ADDR CALC
* READ EM
CRM **,T3
RCS20 EQU *-1 LOCATION TO PLANT PP ADDR INTO
* DONE.
LRD CM+2 RESTORE OLD (R)
LDN 0 MARK NO ERROR OCCURRED
LJM RECSX RETURN
* CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE
* DDP ECS READ SUBROUTINE LENGTH.
RECL EQU *-RECSX LENGTH OF THIS SUBROUTINE
ERRNG //RECL-RECL SUBROUTINE TOO LONG
LOC *O
* /--- BLOCK /UEM/WRITE 00 000 86/05/29 10.37
WECS SPACE 5,11
** WECS - WRITE UEM VIA DIRECT ACCESS.
*
* ENTRY (A) = PPU MEMORY ADDRESS.
* (T1) = UPPER PORTION OF ECS ADDRESS.
* (T2) = LOWER PORTION OF ECS ADDRESS.
* (T3) = NUMBER OF CM WORDS TO WRITE.
*
* EXIT (A) = 0, IF NO ERRORS.
* = 1, IF ECS PARITY ERROR.
*
* THIS SUBROUTINE WILL OVERWRITE THE DDP ECS WRITE
* SUBROUTINE, //WECS, ON 800-SERIES MAINFRAMES.
WECF EQU *
LOC //WECSX
WECS SUBR
* PLANT PP ADDRESS THE CM WORDS ARE TO BE
* WRITTEN FROM
STM WCS20 PLANT PP MEMORY ADDRESS
LDD T3 (A) = NUMBER OF PP WORDS
ZJN WECSX IF NO WORDS TO WRITE
SRD CM+2 SAVE CURRENT (R)
* FORM PART OF EM ADDRESS IN (R)
LDD T1 (A) = UPPER PART OF EM ADDRESS
SHN -6 (A) = BITS 23 - 18 OF EM ADDR
STD CM
LDD T1
SHN 6 (A) = BITS 17 - 12 OF EM ADDR
STD CM+1
LRD CM (R) = BITS 23 - 12 OF EM ADDR
* FORM THE REST OF THE EM ADDRESS IN (A)
LDD T2 (A) = LOWER PART OF EM ADDRESS
LMC 400000B SET BIT TO USE (R) IN ADDR CALC
* WRITE EM
CWM **,T3
WCS20 EQU *-1 LOCATION TO PLANT PP ADDR INTO
* DONE.
LRD CM+2 RESTORE OLD (R)
LDN 0 MARK NO ERROR OCCURRED
LJM WECSX RETURN
* CHECK THAT THIS SUBROUTINES LENGTH IS .LE. THE
* DDP ECS WRITE SUBROUTINE LENGTH.
WECL EQU *-WECSX LENGTH OF THIS SUBROUTINE
ERRNG //WECL-WECL SUBROUTINE TOO LONG
LOC *O
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK GPS 00 000 87/02/10 12.05
GPS OVERLAY (GET PRIMARY SWITCH NUMBER.)
GPS SPACE 5,11
** GPS - GET PRIMARY SWITCH NUMBER
*
* GET PRIMARY SWITCH NUMBER, DATA AND TIME TO
* WRITE INTO 2550.
ORG //OVL+5
GPS SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDN ZERL
CRM /PRESET/BUF,ON
LDN NPUS/400 NPU PRESET ADDRESS
STM /PRESET/BUF+2
LDC NPUS-NPUS/400*400
STM /PRESET/BUF+3
LDN 9D SET LENGTH
STM /PRESET/BUF+5
* SET NUMBER OF TRUNKS
LDM NEST,NI READ EST ENTRY
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
.NOS252 IFGE OSLEV,678D
ADK EQAE
.NOS252 ELSE
ADK EQDE WORD OFFSET
.NOS252 ENDIF
.NOS22 ELSE NOS 2.1 OR PRIOR
ADM ESTS
.NOS22 ENDIF
CRD CM
LDD CM+2
LPN 77
NJN GPS1 IF TRUNKS DEFINED
LDN 1 SET TO ONE TRUNK
GPS1 STM /PRESET/BUF+7
LDN 1
STM /PRESET/BUF+10
LDN 9D YEAR - 19XX
STM /PRESET/BUF+11
LDN DTEL
CRD CM
LDD CM
LPN 77
SBN 33
STM /PRESET/BUF+12 YEAR UPPER
LDD CM+1
SHN -6
SBN 33
STM /PRESET/BUF+13 YEAR LOWER
* /--- BLOCK GPS 00 000 86/05/29 10.40
LDN PDTL
CRD CM
LDD CM+2
LPN 77 GET MONTH
STM /PRESET/BUF+14
LDD CM+3
SHN 22-6 GET DAY
STM /PRESET/BUF+15
SHN -14 GET HOURS
STM /PRESET/BUF+16
LDD CM+4
SHN 22-6 GET MINUTES
STM /PRESET/BUF+17
SHN -14 GET SECONDS
STM /PRESET/BUF+20
LDD SN SET S(D) UPPER
SHN -10
STM /PRESET/BUF+22
LDD SN SET S(D) LOWER
LPC 377
STM /PRESET/BUF+23
LDM NDS,NI SET DPNC S(D) UPPER
SHN -10
STM /PRESET/BUF+24
LDM NDS,NI SET DPNC S(D) LOWER
LPC 377
STM /PRESET/BUF+25
LDN 0 CLEAR UNUSED LOCATIONS
STM /PRESET/BUF+6
STM /PRESET/BUF+21
STM /PRESET/BUF+26
STM /PRESET/BUF+27
LJM GPSX EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK IDP 00 000 87/02/10 12.23
IDP OVERLAY (INITIALIZE ESM ACCESS.)
IDP SPACE 5,11
** IDP - INITIALIZE ESM ACCESS
*
* ASSIGN DDP IF AVAILABLE, ELSE SET UP CM TRANSFER
*
* EXIT - (A) = 0 IF DDP RESERVED
* 1 IF NO DDP AND 700 SERIES
* -1 IF NO DDP AND 800 SERIES
ORG //OVL+5
IDP SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* SEARCH THE EST FOR A DDP (TYPE *D4*). THE DIRECT
* CELLS USED IN THIS LOOP ARE AS FOLLOWS -
*
* NOS 2.2 AND LATER -
* (CN) = CURRENT EST ORDINAL
* (CN+2) = LAST EST ORDINAL +1
*
* NOS 2.1 AND PRIOR -
* (CN) = CURRENT EST ENTRY ADDRESS
* (CN+1) = LWA + 1 OF EST
* (CN+2) = FWA OF EST
LDN ESTP
CRD CN
.NOS22 IFGE OSLEV,594D NOS 2.2
LDN 0
.NOS22 ELSE NOS 2.1 OR PRIOR
LDD CN SAVE BASE ADDRESS OF EST
STD CN+2 (CN+2) = FWA OF EST
SBN 1
.NOS22 ENDIF
STD CN (CN) = ENTRY ORDINAL OR ADDRESS
IDP1 AOD CN BUMP TO NEXT EST ENTRY
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
CRD CM
LDD CN (A) = CURRENT EST ORDINAL
SBD CN+2
.NOS22 ELSE NOS 2.1 OR PRIOR
CRD CM
SBD CN+1
.NOS22 ENDIF
NJN IDP1.1 IF MORE ENTRIES TO CHECK
LJM IDP3 NO DDP RESERVED
IDP1.1 BSS 0
LDD CM+3
LMC DSDP
NJN IDP1 IF EQUIPMENT TYPES DO NOT MATCH
.NOS251 IFGE OSLEV,664D
LDD CM
LPN 3
NJP IDP1 IF DEVICE UNAVAILABLE
.NOS251 ENDIF
.NOSV2 IFGE OSLEV,562D NOS V2
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST,CN (A) = FWA OF ENTRY
ADK EQAE OFFSET TO ASSIGNMENT WORD
.NOS22 ELSE NOS 2.1
LDD CN EST ENTRY
ADD HN OFFSET TO EAT ENTRY
.NOS22 ENDIF
CRD CM
LDD CM+4 EJT ORDINAL FOR THIS EQ
STD T1 SAVE IT
LDD CP GET THIS JOBS EJT ORDINAL
ADN TFSW
CRD CM
LDD CM DSN EJT ORDINAL
STD T2 SAVE IT
* /--- BLOCK IDP 00 000 87/02/10 14.47
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST,CN (A) = FWA OF ENTRY
ADK EQDE EQUIPMENT DESCRIPTOR WORD
.NOS22 ELSE NOS 2.1
LDD CN EST ENTRY
.NOS22 ENDIF
CRD CM RESTORE EST ENTRY IN CM
LDD T1
SBD T2
ZJN IDP2 IF ALREADY ASSIGNED
.NOSV2 ELSE NOS V1
LDD CM CHECK IF ALREADY ASSIGN TO CP
LPN 77
SHN 7
LMD CP
ZJN IDP2 IF ASSIGNED TO THIS CP
.NOSV2 ENDIF
.NOS22 IFGE OSLEV,594D NOS 2.2
LDD CN (A) = EST ORDINAL
.NOS22 ELSE NOS 2.1 OR PRIOR
LDD CN COMPUTE EST ORDINAL
SBD CN+2
.NOS22 ENDIF
STD CM+1
STM DPEQ
.NOS242 IFGE OSLEV,642D
LDN /CPS/REQS REQUEST ACTIVE EQUIPMENT
.NOS242 ELSE
LDN 0 REQUEST ACTIVE EQUIPMENT
.NOS242 ENDIF
STD CM+2
MONITOR REQM REQUEST ASSIGNMENT
LDD CM+1
ZJN IDP2.2 IF NOT ASSIGNED
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST,CN (A) = FWA OF CURRENT ENTRY
.NOS22 ELSE NOS 2.1 OR PRIOR
LDD CN
.NOS22 ENDIF
CRD CM
IDP2 MONITOR CCHM
LDD CM+2
NJN IDP2.1 IF CHANNEL RESERVED
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST,CN (A) = FWA OF CURRENT ENTRY
.NOS22 ELSE NOS 2.1 OR PRIOR
LDD CN
.NOS22 ENDIF
CRD CM
LDD CM+2
.NOS252 IFGE OSLEV,678D
SHN 6
PJP IDP2.2 IF ALTERNATE ACCESS DISABLED
SHN 21-6
.NOS252 ELSE
ZJN IDP2.2 IF NO ALTERNATE CHANNELS
.NOS252 ENDIF
STD CM+1
MONITOR CCHM
LDD CM+2
ZJN IDP2.2 IF CHANNEL NOT RESERVED
IDP2.1 LJM IDP6 IF CHANNEL RESERVED
IDP2.2 LJM IDP1 LOOP FOR NEXT ENTRY
* /--- BLOCK IDP 00 000 87/02/24 10.10
* SET CM BUFFER ADDRESS BASED ON PP ORDINAL
IDP3 STM DPEQ SHOW NO LOW SPEED PORT
* DETERMINE IF 700 OR 800 SERIES
.NOSV2 IFGE OSLEV,562D NOS V2
LDC MABL
CRD CM
LDD CM+1
SHN 21-13
PJN IDP4 IF 800 SERIES
LDN 1 MARK FOR 700 SERIES
UJN IDP5
IDP4 LCN 1 MARK FOR 800 SERIES
IDP5 LJM IDPX RETURN
.NOSV2 ELSE NOS V1
LDC CPUL
CRD CM
LDD CM+3
SHN 21-10
MJN IDP4 IF 800 SERIES
LDN 1 MARK FOR 700 SERIES
UJN IDP5
IDP4 LCN 1 MARK FOR 800 SERIES
IDP5 LJM IDPX RETURN
.NOSV2 ENDIF
* SET DDP CHANNEL
IDP6 LDC /PRESET/DPCH SET CHANNEL TABLE ADDRESS
STD T2
LDD CM+1 (A) = CHANNEL NUMBER
STM //DPCH
RJM ICH SET CHANNEL NUMBERS
.NOS252 IFGE OSLEV,678D
LDK EXML CHECK EM TYPE
CRD CM
LDD CM+3
SHN 7
MJN IDP7 IF ESM MODE
.NOS252 ELSE
.NOSV2 IFGE OSLEV,562D NOS V2
LDN MEFL CHECK EM TYPE
CRD CM
LDD CM+2
LPN 7 (A) = EM TYPE CODE
SBN 5 ESM MODE = 5
ZJN IDP7 IF ESM MODE
.NOSV2 ELSE NOS V1
LDN CPUL
CRD CM
LDD CM+ESMW
SHN 21-ESMB
MJN IDP7 IF ESM MODE
.NOSV2 ENDIF
.NOS252 ENDIF
LDC UJNI+2 NO-OP MODE SELECT
STM //RECB
STM //WECB
IDP7 LDN 0 MARK DDP RESERVED
LJM IDPX RETURN
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK KYO 00 000 86/05/29 10.45
KYO OVERLAY (KEY BUFFER OVERFLOW PROCESSING.)
KYO SPACE 5,11
** KYO - PROCESS KEY BUFFER OVERFLOW PROBLEMS
*
* THIS OVERLAY IS CALLED WHEN A KEY WILL BE DROPPED
* BECAUSE THE OVERFLOW KEY BUFFER IS FULL
*
* EXIT - (A) = 0 IF KEY BUFFER SHOULD BE UPDATED
ORG //OVL+5
KYO SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* COUNT NUMBER OF KEYS LOST
AOM SKYB+2 INCREMENT LOST KEY COUNT
SHN -14
RAM SKYB+1
* CHECK FOR TOO MANY LOST FOR THIS USER
AOM CMB+1
SBN 50 LOSE UP TO 50B KEYS
PJN KYO2 IF TOO MANY LOST KEYS
LDD KY
ADC -ST1KY
NJN KYO1 IF NOT A STOP1 KEY
* EMPTY OVERFLOW BUFFER AND SET STOP1 KEY
LDN 1
STD T2
LDD KY
STM CMB+2
KYO1 LDN 0 (A) = UPDATE OVERFLOW BUFFER
UJN KYOX
* /--- BLOCK KYO 00 000 86/05/29 10.45
* LOG USER OFF, TOO MANY LOST KEYS IN A ROW
KYO2 BSS 0
LDC SLKY SINGLE STATION LOGOFF KEY
STD KY
LDN 0 FORCE STORE OF KEY
STM TST,ST SHOW TERMINAL NOT ACTIVE
RJM SPK
LDN 0#08
RJM PLM LOGOUT USER FROM DPNC
LDD ST
SBD CB
ADD SB
STD T7 SAVE STATION NUMBER
RJM C2D
STM KYOA+7 SET LOWER STATION NUMBER
LDD T7 GET STATION NUMBER
SHN -6
RJM C2D
STM KYOA+6 SET UPPER STATION NUMBER
LDM SDT,ST GET S(O)
RJM C2D
STM KYOA+16 SET LOWER S(O)
LDM SDT,ST
SHN -6
RJM C2D
STM KYOA+15 SET UPPER S(O)
LDM TDT,ST GET T(D)
LPC 377
STD T7
RJM C2D
STM KYOA+21 SET LOWER T(O)
LDD T7
SHN -6
RJM C2D
STM KYOA+20 SET UPPER T(O)
* CHECK FOR INHIBIT ERROR MESSAGE - SW2
LDD RA
SHN 6
CRD CN
LDD CN+4
SHN 21-7 POSITION SW2
MJN KYO3 EXIT IF SW2 IS SET
LDC KYOA
RJM DFM
KYO3 BSS 0
LDN 0 (A) = UPDATE OVERFLOW BUFFER
STM CMB+1 CLEAR LOST KEY COUNT
LJM KYOX EXIT
KYOA DATA C*KEY PUMPING XXXXB, NETNUM XXXXB-XXXXB.*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK LPG 00 000 82/12/06 16.09
LPG OVERLAY (LOAD PROGRAM INTO 2550.)
LPG SPACE 5,11
** LPG - LOAD PROGRAM INTO 2550
*
* ENTRY - ((CB)) = LOAD FILE DISK ADDRESS
ORG //OVL+5
LPG SUBR
* SET DISK ADDRESS OF LOAD FILE
LDI CB
STD T5
LDM 1,CB
STD T6
LDM 2,CB
STD T7
LDC RTCL SET UP STATUS CLOCK
CRD CM
LDD CM+1
STM NSTS,NI
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
STD IP CLEAR BUFFER INDEX
STD IL CLEAR WORD COUNT
RJM CNP CLEAR 2550
LDC 20*5 PREFIX AND HEADER BYTE LENGTH
RJM GTW SKIP PREFIX
NJN LPG3 IF EOR
* FORMAT DAYFILE MESSAGE
LDM NEST,NI
RJM C2D
STM LPGB+1
LDN 10D-1 LENGTH OF BINARY DECK ID
STD T1
LPG1 LDM /PRESET/BUF+50,T1
STM LPGB+7,T1
SOD T1
PJN LPG1 IF MORE TO MOVE
LDC LPGB
RJM DFM
LPG2 LDN 0
STD IP BUFFER INDEX
LDN 6 2550 FWA PACKET LENGTH
RJM GTW
NJN LPG5 IF EOR
LDM /PRESET/BUF
SHN 21-13
MJN LPG4 IF LEGAL CONTROL WORD
LPG3 LDN NFFE LOAD FILE FORMAT ERROR
LJM MXE ABORT
LPG4 LDM /PRESET/BUF+5
SHN 1
ZJN LPG3 IF PACKET LENGTH IS ZERO
RJM GTW GET PACKET
NJN LPG3 IF EOR
RJM /PRESET/WTB WRITE LOAD DATA AND VERIFY
UJN LPG2
LPG5 LJM LPGX EXIT
LPGB DATA C*EQXX LOADING- XXXXXXXXXXXXXXXXXXXX*
CNP SPACE 5,11
** CNP - MASTER CLEAR 2550
CNP SUBR
LDC CLC
RJM FNC CLEAR COUPLER
LDC CNU
RJM FNC CLEAR 2550
RJM STS CLEAR ANY LEFT OVER STATUS
UJN CNPX
* /--- BLOCK LPG 00 000 82/12/06 16.04
GTW SPACE 5,11
** GTW - MOVE WORDS FROM DISK BUFFER TO 2550 BUFFER
*
* ENTRY - (A) = REQUESTED PP BYTE COUNT
* (IL) = NUMBER OF BYTES LEFT IN DISK BUFFER
* (IP) = STARTING ADDRESS IN 2550 BUFFER
*
* EXIT - (BUF) = REQUESTED DATA BYTES
* (A) = 0 DATA READ
GTW4 LDN 1 SET EOF/EOI FLAG
GTW SUBR
ZJN GTWX IF NO DATA REQUESTED
STD PL SAVE BYTE COUNT
LDD IL
NJN GTW2 IF BYTES LEFT IN *BFDS*
GTW1 RJM RDB FILL *BFDS*
ZJN GTW4 IF EOF/EOI ENCOUNTERED
LDD IL SET SIZE OF READ
ZJN GTW1 IF EMPTY SECTOR
STM GTWA
GTW2 LDC 500
GTWA EQU *-1
SBD IL FIND STARTING TRANSFER POINT
STD T2
GTW3 LDM /PRESET/BFDS+2,T2
STM /PRESET/BUF,IP
AOD T2
AOD IP
SOD IL
SOD PL
ZJN GTWX IF ALL BYTES TRANSFERRED
LDD IL
NJN GTW3 IF BYTES LEFT IN *BFDS*
UJN GTW1 READ NEXT DISK SECTOR
RDB SPACE 5,11
** RDB - READ DISK BUFFER
*
* EXIT - (A) = 0 IF EOF/EOI ENCOUNTERED
* (IL) = NUMBER OF PP BYTES READ
RDB SUBR
LDN 1
RDBA EQU *-1
ZJN RDBX IF EOR ON PREVIOUS SECTOR
SETMS READSYS
LDC /PRESET/BFDS
RJM /PRESET/RNS READ NEXT SECTOR
SHN 2 COUNT PP WORD COUNT
ADD T1
STD IL
ENDMS
LDD T1
SHN -6
ADC LDNI
STM RDBA SET EOR FLAG
UJN RDBX EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK MXE 00 000 87/02/10 14.50
MXE OVERLAY (PROCESS 2550 CHANNEL ERRORS.)
MXE SPACE 5,11
** MXE - PROCESS 2550 CHANNEL ERRORS
*
* ENTRY - (T7) = ERROR CODE
ORG //OVL+5
MXE SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* ISSUE DAYFILE MESSAGE ABOUT ERROR
LDD T7
RAM .MXEA
RJM C2D
STM MXEA+6
LDM NEST,NI
RJM C2D
STM MXEA+1
STM MXEB+1
LDC MXEA *EQXX ERROR XX.*
RJM DFM
LDN 0
STD OD CLEAR OUTPUT DELAY FLAG
STD OL CLEAR OUTPUT LENGTH
LDD IR+2
NJN MXE0.1 IF RELOAD CALL
LDM INIC
ZJN MXE0.1 IF INITIALIZATIONS COMPLETE
LDN ILFE INITIAL LOADING FAILURE
RJM MES
LJM TER TERMINATE PROGRAM
* LOG OFF ALL TERMINALS CONNECTED TO THIS 2550
MXE0.1 BSS 0
RJM LOT
* CALL ANOTHER COPY OF DSN TO RE-LOAD THIS 2550
LDM NCH,NI DROP CHANNEL
DCHAN
LDD MA BUILD INPUT REGISTER
CWD IR
CRD CM
LDM NEST,NI SET EST ORDINAL TO RE-LOAD
STD CM+2
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
ADK EQDE OFFSET TO DESCRIPTOR WORD
.NOS22 ELSE NOS 2.1 OR PRIOR
ADM ESTS READ EST ENTRY
.NOS22 ENDIF
CRD CN
.NOS252 IFGE OSLEV,664D
LDD CN
LPN 3
NJP MXE1 IF UNAVAILABLE
.NOS252 ELSE
LDD CN+3 CHECK IF 2550 IS STILL ON
SHN 6
MJN MXE1 IF TURNED OFF
.NOS252 ENDIF
LDN 0
.MXEA EQU *-1 2550 ERROR CODE
SBN OPLE
ZJN MXE2 IF OPERATOR REQUESTED LOAD
* /--- BLOCK MXE 00 000 86/05/29 10.49
* CHECK IF RELOAD INHIBITED
LDD RA READ SENSE SWITCHES
SHN 6
CRD CN
LDD CN+4
SHN 21-6
MJN MXE0 IF RELOADS INHIBITED (SSW1)
AOM NREL,NI CHECK IF TOO MANY RE-LOADS
SBN MXREL+1
MJN MXE2 IF NOT TOO MANY RE-LOADS
* TURN 2550 OFF AFTER MAXIMUM RE-LOADS
MXE0 LDD CM+2
STD CM+1
LDN 1
STD CM+2
MONITOR SEQM
LDC MXEB *EQXX TURNED OFF.*
RJM DFM
LDD IR+2
ZJN MXE1 -- IF NOT RELOAD CALL
LJM TER RELOAD CALL'; EXIT
MXE1 LJM MXE7
MXE2 LDD SN SET S(D)
STD CM+3
LDM NDS,NI SET DPNC S(D)
STD CM+4
LDD MA
CWD CM
MXE5 LDN 1 SET PRIORITY PP REQUEST
STD CM+1
MONITOR RPPM REQUEST PP
LDD CM+1
ZJN MXE5 IF PP NOT LOADED
* WAIT FOR PP TO LOAD 2550 AND DROP
STD T7
MXE6 DELAY
LDD T7
CRD CM
LDD IR
LMD CM
NJN MXE7 IF PP HAS DROPPED
LDD CM+1
LMD IR+1
SCN 77
NJN MXE7 IF PP HAS DROPPED
RJM PSE PAUSE
ZJN MXE6 IF NO ERROR FLAG
LJM TER
* CONTINUE 2550 RELOAD AFTER LOAD PP DROPPED
MXE7 EXECUTE MXP,=
LDC /MXP/OVL
RJM EXR
MXEA DATA C*EQXX ERROR XX.*
MXEB DATA C*EQXX TURNED OFF.*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK MXP 00 000 86/05/29 10.50
MXP OVERLAY (COMPLETE 2550 RELOAD.)
MXP SPACE 5,11
** COMPLETE 2550 RELOAD
ORG //OVL+5
MXP SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* CHECK IF 2550 IS STILL TURNED ON
LDM NEST,NI
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
ADK EQDE OFFSET TO DESCRIPTOR WORD
.NOS22 ELSE NOS 2.1 OR PRIOR
ADM ESTS READ EST ENTRY
.NOS22 ENDIF
CRD CN
LDD CN+3 CHECK IF 2550 IS STILL ON
SHN 6
PJN MXP3 IF STILL ON
* STOP PROCESSING THIS 2550
.NOSV2 IFGE OSLEV,562D NOS V2
LDM NEST,NI LOCATION IN EST TABLE
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
ADK EQAE
CRD CN READ WORD *EQAE* OF EST ENTRY
.NOS22 ELSE NOS 2.1
ADM ESTS LOCATION OF EST TABLE
ADC 100 MOVE TO EAT TABLE
CRD CN READ EAT ENTRY
.NOS22 ENDIF
LDD CP GET EJT ORDINAL
ADN TFSW
CRD CM
LDD CM EJT ORDINAL
SBD CN+4 EJT 2550 IS ASSIGNED TO
NJN MXP2 IF 2550 NOT ASSIGNED HERE
.NOSV2 ELSE NOS V1
LDD CN CHECK IF ALREADY DROPPED
ZJN MXP2 IF NOT ASSIGNED TO ANY CP
.NOSV2 ENDIF
LDM NEST,NI RELEASE 2550 EQUIPMENT
STD CM+1
MONITOR DEQM
MXP2 LDN 0
STM NEST,NI SHOW THIS 2550 NOT ACTIVE
* /--- BLOCK MXP 00 000 86/05/29 10.50
* CHECK IF THE CHANNEL SHOULD BE RESERVED AGAIN
* CHECK ANY 2550 TO PROCESS
MXP3 LDN 0
STD T1 (T1) = 2550 INDEX
STD T2 (T2) = ACTIVE 2550 COUNT
STD T3 (T3) = CHANNEL NEEDED FLAG
LDC RTCL
CRD CM
MXP4 LDM NEST,T1
ZJN MXP5 IF INACTIVE 2550
AOD T2 COUNT ACTIVE 2550S
LDD CM+1 RESET STATUS CLOCK
STM NSTS,T1
LDM NCH,T1
LMM NCH,NI
NJN MXP5 IF NOT ON THE DROPPED CHANNEL
AOD T3 MARK CHANNEL NEEDED
MXP5 AOD T1
LMM .SNPA
NJN MXP4 IF MORE 2550S TO CHECK
LDD T2
ZJN MXP7 IF NO 2550S TO PROCESS
LDD T3
ZJN MXP6 IF CHANNEL NOT NEEDED
LDM NCH,NI
RCHAN RESERVE CHANNEL
MXP6 RJM SNP
LJM MAI1 ENTER MAIN LOOP OF DRIVER
MXP7 LJM MAI9 DROP PP
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK OPC 00 000 87/02/10 15.14
OPC OVERLAY (PROCESS OPERATOR CFO COMMAND.)
OPC SPACE 5,11
** PROCESS OPERATOR CFO COMMAND
ORG //OVL+5
OPC SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* READ OPERATOR REQUEST
LDD RA
SHN 6
ADN CCDR
CRD CM
LDD CM
LMC 2RRE CHECK FOR *RE*
ZJN OPC2 IF RELOAD REQUEST
OPC1 LDC OPCA
RJM DFM
LJM OPC9 SET CFO BIT AND EXIT
* PROCESS *RELOAD* REQUEST
OPC2 LDD CM+1
RJM DXB CONVERT EST ORDINAL
MJN OPC1 IF INVALID NUMBER
STD T4 (T4) = EST ORDINAL
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
ADK EQDE OFFSET TO DESCRIPTOR WORD
.NOS22 ELSE NOS 2.1 OR PRIOR
ADM ESTS
.NOS22 ENDIF
CRD CM
LDD CM+3
LMC DSFE
NJN OPC1 IF NOT *FE* EQUIPMENT
* DETERMINE WHICH PP DRIVES THIS 2550
.NOS252 IFGE OSLEV,678D
SFA EST,T4
ADK EQAE
CRD CM
.NOS252 ENDIF
LDD CM+2 EXTRACT 2550 ORDINAL
SHN -6
STD CM+2
LDD MA
CWD IR
CRD CN (CN+4) = PP ORDINAL
OPC3 LCN MXNPU
RAD CM+2
MJN OPC4 IF FOUND THE CORRECT PP
AOD CN+4
UJN OPC3
OPC4 ADN MXNPU
STD T5 (T5) = 2550 ORDINAL WITHIN PP
.NOS252 IFGE OSLEV,678D
SFA EST,T4
ADK EQDE
CRD CM
.NOS252 ENDIF
LDD CM+1
LPN 77
STD T6 (T6) = CHANNEL
LDD CM+4
LPC 7000
STD T7 (T7) = EQUIPMENT
LDN 1
STD T3 (T3) = UP REQUEST
* /--- BLOCK OPC 00 000 86/05/29 10.53
* CHECK IF THIS PP IS LOADED
LDN PPUL
CRD CM
LDD CM+2
STD T1 (T1) = NUMBER OF PPS
LDN PPCP
CRD CM
LDD CM+4
STD T2 (T2) = PP COMMUNICATION ADDRESS
OPC5 LDD T2
CRD CM
LDD CM
LMD IR
NJN OPC6 IF NOT *DSN*
LDD CM+1
LMD IR+1
SCN 77
NJN OPC6 IF NOT *DSN*
LDD CM+4
LMD CN+4
ZJN OPC8 IF PROPER DRIVER LOADED
OPC6 LDN 10
RAD T2
SOD T1
NJN OPC5 IF MORE PPS
* LOAD THIS PP
OPC7 LDD MA
CWD CN
LDN 1 SET PRIORITY PP REQUEST
STD CM+1
MONITOR RPPM
LDD CM+1
NJN OPC9 IF PP ASSIGNED
RJM PSE
ZJN OPC7
LJM TER
* /--- BLOCK OPC 00 000 86/05/29 10.52
* WRITE REQUEST TO DRIVER REQUESTS
OPC8 LDD RA
SHN 6
ADN DR
ADD CN+4
CWD T3
* SET CFO BIT
OPC9 LDD RA
SHN 6
CRD CM
LDN 4
STD CM+3
LDD RA
SHN 6
CWD CM
LJM OPCX EXIT
OPCA DATA C* INVALID REQUEST.*
DXB SPACE 5,11
** DXB - CONVERT NUMBER FROM DISPLAY CODE
*
* ENTRY - (A) = CHARACTERS TO CONVERT
*
* EXIT - (A) = CONVERTED NUMBER (-1 IF ERROR)
DXB1 LCN 1
DXB SUBR
STD T1
LPN 77
SBN 1R0
MJN DXB1 IF ILLEGAL CHARACTER
STD T0
SBN 10
PJN DXB1 IF ILLEGAL CHARACTER
LDD T1
SHN -6
SBN 1R0
MJN DXB1 IF ILLEGAL CHARACTER
SBN 10
PJN DXB1 IF ILLEGAL CHARACTER
ADN 10
SHN 3
ADD T0
UJN DXBX EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK OPR 00 000 86/05/29 10.56
OPR OVERLAY (PROCESS MAIN DRIVER REQUEST.)
OPR SPACE 5,11
** PROCESS REQUEST FROM MAIN DRIVER
*
* REQUEST PARAMETERS
* ------- ----------
*
* 1 (RELOAD 2550) EST, ORDINAL, CHANNEL, EQUIP
ORG //OVL+5
OPR SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
* READ AND CLEAR REQUEST BUFFER
LDN ZERL
CRD CM
LDD RA
SHN 6
ADN DR
ADD PO
CRD CN READ REQUEST
CWD CM CLEAR REQUEST
* DETERMINE REQUEST TYPE
LDD CN
SBN 1
NJN OPRX IF UNKNOWN REQUEST
* RESERVE EQUIPMENT
.NOSV2 IFLT OSLEV,562D IF NOS V1
LDD CN+1 CHECK IF ALREADY ASSIGNED TO CP
ADM ESTS
CRD CM
LDD CM
SHN 7
LMD CP
.NOSV2 ELSE IF NOS V2
LDD CN+1 (A) = EST ORDINAL
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
ADK EQAE OFFSET TO ASSIGNMENT WORD
.NOS22 ELSE NOS 2.1
ADM ESTS (A) = ADDRESS OF EST ENTRY
ADD HN (A) = ADDRESS OF EAT ENTRY
.NOS22 ENDIF
CRD CM READ EAT ENTRY
LDD CM+4
STD T1
LDD CP CHECK DSN,S EJT ORDINAL
ADK TERW (A) = ADDR OF CP EJT ORDINAL
CRD CM
LDD T1
LMD CM
.NOSV2 ENDIF
ZJN OPR1 IF ASSIGNED TO THIS CP
LDM NEST,CN+2
ZJN OPR0 IF 2550 ORDINAL IS OKAY
LDC OPRA DUPLICATE 2550 ORDINALS
RJM DFM
LJM OPRX EXIT
* /--- BLOCK OPR 00 000 86/05/29 10.55
OPR0 BSS 0
LDD CN+1
STD CM+1
.NOS242 IFGE OSLEV,642D
LDN /CPS/REQS REQUEST ACTIVE EQUIPMENT
.NOS242 ELSE
LDN 0 REQUEST ACTIVE EQUIPMENT
.NOS242 ENDIF
STD CM+2
MONITOR REQM REQUEST ASSIGNMENT
LDD CM+1
NJN OPR1 IF ASSIGNED
LJM OPRX EXIT
* BUILD TABLES FOR THIS 2550
OPR1 LDD CN+2
SHN 4
STD T1
LDD CN+1
STM NEST,CN+2
LDD CN+3
STM NCH,CN+2
LDD CN+4
STM NEQ,T1
LDN 0
STM NREL,CN+2
* CHECK IF CHANNEL ALREADY REQUEST
.NOSV2 IFGE OSLEV,562D NOS V2
LDN CTALL
STD T1 (T1) = LENGTH OF CHANNEL TABLE
LDK CHTP (A) = CMR POINTER ADDRESS
CRD CM
LDD CM+2
SHN 14B
ADD CM+3 (A) = FWA OF CHANNEL TABLE
.NOSV2 ELSE NOS V1
LDN CTILL
STD T1
LDC CTIL
.NOSV2 ENDIF
CRM BUF,T1
LDN PPCP
CRD CM
LDD IA
SBD CM+4
SHN -3
LMM BUF,CN+3
.NOSV2 IFGE OSLEV,562D NOS V2
LPN 37
.NOSV2 ELSE NOS V1
LPN 77
.NOSV2 ENDIF
ZJN OPR2 IF CHANNEL ALREADY ASSIGNED
LDD CN+3
RCHAN
* SET UP TO RE-LOAD THIS 2550
OPR2 LDD CN+2
LMD NI
ZJN OPR3 IF SET TO PROPER 2550
RJM SNP SET UP NEXT 2550
UJN OPR2
* FORCE THIS 2550 TO BE RELOADED
OPR3 LDN OPLE
LJM MXE RE-LOAD 2550
OPRA DATA C*DUPLICATE 2550 ORDINALS.*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK PSM 00 000 86/05/29 10.53
PSM OVERLAY (PROCESS SYSTEM MESSAGE.)
PSM SPACE 5,11
** PSM - PROCESS SYSTEM MESSAGE
*
* ENTRY - (IP) - POINTER TO START OF TERMINAL BLOCK
*
* EXIT - (IP) - INCREMENTED BY LENGTH OF DATA BLOCK
ORG //OVL+5
PSM SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDM IBUF,IP SET SYSTEM MESSAGE NUMBER
STD T4
LDC SYSB
STD T5
LDM IBUF,IP CHECK FOR FB MESSAGE
ADC -0#FB
NJN SYS1 IF NOT A FB MESSAGE
LDM IBUF+2,IP GET FB MESSAGE NUMBER
STD T4
LDC SYSD SET TO FB TABLE
STD T5
* SEARCH FOR THIS SYSTEM MESSAGE
SYS1 LDI T5
ZJN SYS2 IF END OF TABLE
LMD T4
ZJN SYS3 IF FOUND THIS SYSTEM MESSAGE
LDN 2
RAD T5
UJN SYS1 CHECK NEXT ENTRY IN TABLE
* SYSTEM MESSAGE NOT FOUND
SYS2 LDD T4
STD ST ST CONTAINS BAD CODE
LDN USME UNKNOWN SYSTEM MESSAGE
RJM MES
LDN 1 MARK AS UNKNOWN MESSAGE
UJN SYS4
* JUMP TO PROCESSOR FOR THIS SYSTEM MESSAGE
*
* (IP) = POINTER TO TERMINAL BLOCK
* (PL) = PACKET LENGTH
SYS3 LDM 1,T5
STM /SYS/SYSA
LDN 0 MARK AS ROUTINE PLANTED
SYS4 BSS 0
LJM PSMX EXIT
SYSB BSS 0 SYSTEM MESSAGE TABLE
CON 0#CA,CSS CHANGE SWITCH STATUS
CON 0#CD,DSM IST ERROR STATISTICS
CON 0#DE,CEM 2550 CCP ERROR/STATISTIC MSG
* DELETED ASU, APPLICATION SYSTEM UPDATE
CON 0#E7,ASO APPLICATION SIGNON
CON 0 END OF TABLE
SYSD BSS 0 FB MESSAGE TABLE
CON 0#91,SBG SIGN-ON TO BACKGROUND SYSTEM
CON 0 END OF TABLE
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK RFE 00 000 87/02/10 15.16
RFE OVERLAY (RESERVE FRONT ENDS.)
RFE SPACE 4,10
** RFE - RESERVE FRONT END.
*
* RESERVE 2550S ASSIGNED TO THIS PP.
ORG //OVL+5
RFE SUBR ENTRY / EXIT
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDN ESTP
CRD CN
.NOS22 IFGE OSLEV,594D NOS 2.2
LDN 0
STD CN+3 (CN+3) = CURRENT EST ORDINAL
STD CN+4 (CN+4) = NO. OF 2550S ASSIGNED
RFE1 AOD CN+3 ADVANCE TO NEXT EST ENTRY
SBD CN+2 (CN+2) = LAST EST ORDINAL + 1
PJP RFE6 IF NO MORE ENTRIES
SFA EST,CN+3
CRD CM READ EST ENTRY
.NOS22 ELSE NOS 2.1 OR PRIOR
LDD CN SAVE BASE ADDRESS OF EST
STD CN+2
SBN 1
STD CN INITIALIZE LOOP
LDN 0
STD CN+4 NUMBER OF 2550S ASSIGNED
RFE1 AOD CN BUMP TO NEXT EST ENTRY
CRD CM
SBD CN+1
MJN RFE1.1 IF MORE ENTRIES
LJM RFE6
.NOS22 ENDIF
RFE1.1 LDD CM+3
LMC DSFE
NJN RFE1 IF EQUIPMENT TYPES DO NOT MATCH
* CHECK IF THIS ORDINAL SHOULD BE ASSIGNED TO PP
LDN 0
STD NI
.NOS252 IFGE OSLEV,678D
SFA EST,CN+3
ADK EQAE
CRD CM
.NOS252 ENDIF
RFE2 LDD CM+2
SHN -6
LMM NORD,NI
ZJN RFE3 IF THIS PP SHOULD PROCESS
AOD NI
LMM .SNPA
NJN RFE2 IF MORE 2550 TO CHECK
RFE2.1 UJN RFE1 SEARCH FOR NEXT 2550
RFE3 LDM NEST,NI
ZJN RFE4 IF ORDINAL NOT YET ASSIGNED
LDC RFEB * DUPLICATE 2550 ORDINALS.*
LJM RFE7
.NOS22 IFGE OSLEV,594D NOS 2.2
RFE4 LDD CN+3 (A) = EST ORDINAL
.NOS22 ELSE NOS 2.1 OR PRIOR
RFE4 LDD CN COMPUTE EST ORDINAL
SBD CN+2
.NOS22 ENDIF
STD CM+1
* /--- BLOCK RFE 00 000 87/02/10 15.19
.NOS242 IFGE OSLEV,642D
LDN /CPS/REQS
.NOS242 ELSE
LDN 0 REQUEST ACTIVE EQUIPMENT
.NOS242 ENDIF
STD CM+2 ACTIVE EQUIPMENT ONLY
MONITOR REQM REQUEST ASSIGNMENT
LDD CM+1
ZJN RFE2.1 IF NOT ASSIGNED
.NOS22 IFGE OSLEV,642D
LDD CN+3 (A) = EST ORDINAL
.NOS22 ENDIF
STM NEST,NI SET EST ORDINAL
AOD CN+4 COUNT 2550S ASSIGNED
LDD NI
SHN 4
STD T7
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST,CN+3 (A) = CURRENT ENTRY FWA
ADK EQDE
.NOS22 ELSE NOS 2.1 OR PRIOR
LDD CN
.NOS22 ENDIF
CRD CM RE-READ EST
LDD CM+4 SAVE EQUIPMENT NUMBER
LPC 7000
STM NEQ,T7
LDD CM+1
LPN 77
STD T2
STM NCH,NI
LDN 0 SHOW NO RE-LOADS YET
STM NREL,NI
* CHECK IF CHANNEL ALREADY REQUEST
.NOSV2 IFGE OSLEV,562D NOS V2
LDN CTALL
STD T1 (T1) = LENGTH OF CHANNEL TABLE
LDK CHTP (A) = CMR POINTER ADDRESS
CRD CM
LDD CM+2
SHN 14B
ADD CM+3 (A) = FWA OF CHANNEL TABLE
.NOSV2 ELSE NOS V1
LDN CTILL
STD T1
LDC CTIL
.NOSV2 ENDIF
CRM BUF,T1
LDN PPCP
CRD CM
LDD IA
SBD CM+4
SHN -3
LMM BUF,T2
.NOSV2 IFGE OSLEV,562D NOS V2
LPN 37
.NOSV2 ELSE NOS V1
LPN 77
.NOSV2 ENDIF
ZJN RFE5 IF CHANNEL ALREADY ASSIGNED
LDD T2
RCHAN
RFE5 LJM RFE1 CHECK REST OF EST
* /--- BLOCK RFE 00 000 82/05/10 11.16
* VERIFY SOME 2550S FOUND
RFE6 LDD CN+4
NJN RFE8 IF SOME 2550S FOUND
LDD PO (A) = PP ORDINAL
RJM C2D
STM RFEA+13
LDC RFEA *NO 2550S FOUND.*
RFE7 RJM DFM
LJM TER
RFE8 LJM RFEX EXIT
RFEA DATA C* NO 2550S FOUND FOR PPXX.*
RFEB DATA C* DUPLICATE 2550 ORDINALS.*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK RTT 00 000 82/04/21 12.22
RTT OVERLAY (RETURN PLATO TERMINAL TYPE.)
RTT SPACE 5,11
** RTT - RETURN TERMINAL TYPE
*
* THE TERMINAL TYPE IS SENT TO PLATO AS AN ECHO
* KEY
*
* TERMINAL ECHO KEY = 3/TT, 4/12 (ASCII TYPE)
*
* TT - 0 = ASCII IST
* 1 = CDC 750
* 2 = TEKTRONIX 4014
* 3 = DATASPEED 40
ORG //OVL+5
RTT SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDM TST,ST
ZJN RTTX IF TERMINAL NOT ACTIVE
* READ TERMINAL INFORMATION WORD
* GET TERMINAL TYPE
LDD RA
SHN 6
ADD TB BIAS TO TERMINAL INFORMATION
ADD ST
ADD ST
CRD CM
LDD CM
SHN -4
STD T1 (T1) = TERMINAL TYPE
* CONVERT NETWORK TERMINAL TYPE TO PLATO TYPE
LDC //RTTA START OF TERM TYPE TABLE
STD T2
RTT1 LDI T2
ZJN RTT4 IF TERMINAL TYPE NOT FOUND
LMD T1
LPC 0#FE TERMINAL TYPE WITHOUT PARITY
ZJN RTT2 IF TERMINAL FOUND
AOD T2
UJN RTT1 CHECK NEXT TERMINAL TYPE
RTT2 LDI T2 FETCH PLATO TERMINAL TYPE
SHN -10 POSITION PLATO TYPE
LPN 7
SHN 4
ADC TTKY INCLUDE ECHO CODE
SHN 1
STD KY
LDN 0 FORCED STORE
RJM SPK STORE PLATO KEY
RTT3 LJM RTTX EXIT
RTT4 RJM SSL RE-VALIDATE USER
LDN 0
STM TST,ST SHOW TERMINAL NOT ACTIVE
LDN 0#0C
RJM PLM REVALIDATE USER AT DPNC
UJN RTT3 EXIT
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK SSM 00 000 82/03/26 14.56
SSM OVERLAY (PROCESS SUPER SYSTEM MESSAGE.)
SSM SPACE 5,11
** SSM - PROCESS SUPER SYSTEM MESSAGE
*
* ALL ACTIVE TERMINALS ARE LOGGED OFF
* A RESET COMPLETE IS SENT IF REQUEST RESET IS
* RECEIVED
ORG //OVL+5
SSM SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDM NEST,NI
RJM C2D
STM SSMA+1
STM SSMB+1
LDM IBUF ISSUE DAYFILE MESSAGE
RJM C2X
STM SSMA+13
LDM IBUF+2
RJM C2X
STM SSMA+15
LDC SSMA * SUPER SYSTEM MSG XX.*
RJM DFM
RJM LOT SIGN ALL TERMINALS OFF PLATO
* SEND RESET COMPLETE
SSM1 LDC 0#FD
STM OBUF
LDN 2
STM OBUF+1
STD OL
RJM FOB SEND SUPER SYSTEM MESSAGE
LDC 0#80+1*10000B SET ENABLE ROUTING
RJM SRM SEND ROUTING MESSAGE
LDC SSMB * RESET COMPLETE.*
RJM DFM
LJM SSMX EXIT
SSMA DATA C*EQXX SUPER SYSTEM MSG XX (XX).*
SSMB DATA C*EQXX RESET COMPLETE.*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK TER 00 000 86/05/29 11.00
TER OVERLAY (TERMINATION OVERLAY.)
TER SPACE 5,11
** TER - TERMINATION OVERLAY
*
* LOG OUT ALL TERMINALS
* CLEAR 2550S
* DROP EQUIPMENT AND CHANNELS
*
* ENTRY - (TERT) = 0 IF DISABLE ROUTING
ORG //OVL+5
TER SUBR
LDN 0
STM BODC CLEAR *BFI* LOADED FLAG
STM MSD CLEAR MASS STORAGE DRIVER
* SEND MESSAGE TO DISABLE ROUTING
LCN 0
STD NI
LDD IR+2
ZJN TER1 IF DRIVER COPY
LJM TER4 RELOAD COPY'; NO DSN MSG OR EM
TER1 RJM SNP SET UP NPU
ZJN TER2 IF FULL CYCLE
RJM LOT SIGN TERMINALS OFF PLATO
LDM TERT
NJN TER1 IF NO DISABLE ROUTING
LDC 0#40+2*10000B DISABLE ROUTING CODE
RJM SRM SEND ROUTING MESSAGE
LDC CNU CLEAR 2550
RJM FNC
UJN TER1 IF MORE NPUS
* /--- BLOCK TER 00 000 86/05/29 11.01
* DROP LOW SPEED PORT CHANNEL
TER2 LDM DPCH CHECK IF DDP CHANNEL ASSIGNED
ZJN TER4 IF NO CHANNEL
DCHAN
LDM DPEQ RELEASE DDP EQUIPMENT
ZJN TER4 IF THIS PP DID NOT RESERVE IT
STD CM+1
MONITOR DEQM
UJN TER4
TER3 LJM TER8 END OF DROP EQ/CH LOOP
* RELEASE 2550 AND THEIR CHANNELS
TER4 LDN 0
STD NI
TER5 LMM .SNPA
ZJN TER3 IF NO MORE 2550S
LDM NEST,NI RELEASE 2550 EQUIPMENT
.NOSV2 IFGE OSLEV,562D NOS V2
ZJP TER6 IF NO EQUIPMENT
.NOSV2 ELSE NOS V1
ZJN TER6 IF NO EQUIPMENT
.NOSV2 ENDIF
.NOS22 IFGE OSLEV,594D NOS 2.2
SFA EST (A) = FWA OF EST ENTRY
ADK EQAE READ EQUIPMENT ATTRIBUTE WORD
CRD CN
.NOS22 ELSE NOS 2.1
ADM ESTS LOCATION OF EST TABLE
ADD HN (A) = ADDRESS OF EAT ENTRY
CRD CN READ EAT ENTRY
.NOS22 ENDIF
LDD CP GET EJT ORDINAL
ADN TFSW
CRD CM
LDD CM EJT ORDINAL
SBD CN+4 EJT 2550 IS ASSIGNED TO
NJP TER6 IF NOT ASSIGNED HERE
LDM NEST,NI RELEASE 2550 EQUIPMENT
STD CM+1
MONITOR DEQM
* /--- BLOCK TER 00 000 86/05/29 11.01
* CHECK IF CHANNEL ALREADY DROPPED
TER6 BSS 0
LDM NCH,NI
STD T2
.NOSV2 IFGE OSLEV,562D NOS V2
LDN CTALL
STD T1 (T1) = LENGTH OF CHANNEL TABLE
LDK CHTP (A) = CMR POINTER ADDRESS
CRD CM
LDD CM+2
SHN 14B
ADD CM+3 (A) = FWA OF CHANNEL TABLE
.NOSV2 ELSE NOS V1
LDN CTILL
STD T1
LDC CTIL
.NOSV2 ENDIF
CRM BUF,T1
LDN PPCP
CRD CM
LDD IA
SBD CM+4
SHN -3
LMM BUF,T2
.NOSV2 IFGE OSLEV,562D NOS V2
LPN 37
.NOSV2 ELSE NOS V1
LPN 77
.NOSV2 ENDIF
NJN TER7 IF CHANNEL NOT ASSIGNED TO PP
LDD T2
DCHAN
TER7 AOD NI CHECK FOR MORE 2550S
LJM TER5 PROCESS NEXT 2550
* DISPLAY NUMBER OF KEYS LOST
TER8 STD CM+1 SET NON-CM CONVERSION
LDD MA
CWM SKYB-2,ON
MONITOR RDCM
LDD MA
CRM TERA,ON
LDM TERA
ZJN TER9 IF NO KEYS LOST
LDC TERA
RJM DFM
TER9 MONITOR DPPM DROP PP
LJM PPR IDLE
TERA DATA C*XXXXXXXXXXK KEYS LOST.*
ERRNG OVLE-* OVERFLOW OF OVERLAY BUFFER
QUAL *
* /--- BLOCK UMT 00 000 82/04/29 13.26
UMT OVERLAY (UPDATE MAXIMUM TERMINAL NUMBER IN USE.)
UMT SPACE 5,11
** UMT - UPDATE MAXIMUM TERMINAL NUMBER IN USE
*
* THE TERMINAL STATUS TABLE IS SEARCHED FOR THE
* HIGHEST PLATO STATION NUMBER
*
* EXIT - (NMT) = UPDATED TO HIGHEST CONNECTION
ORG //OVL+5
UMT SUBR
LDN 0 CLEAR *BFI* LOADED FLAG
STM BODC
LDD NI
SHN 4
STD T1
LDM NCB+20,T1
STD T3 SET TO MAXIMUM POSSIBLE NUMBER
UMT1 LDM TST-1,T3
NJN UMT2 IF TERMINAL IN USE
SOD T3
LMD CB
NJN UMT1 IF MORE TERMINALS TO CHECK
* COUNT NUMBER OF TERMINALS ACTIVE
UMT2 LDD T3
SBD CB
STM NMT,NI SET HIGHEST CONNECTION IN USE
LDN 0
STD CM
LDD CB
STD T1
UMT3 LMD T3
ZJN UMT5 IF ALL TERMINALS CHECKED
LDM TST,T1
ZJN UMT4 IF TERMINAL NOT ACTIVE
AOD CM COUNT TERMINAL
UMT4 AOD T1 BUMP TO NEXT TERMINAL
UJN UMT3
* STORE FOR THIS NPU
UMT5 BSS 0
LDD CM NUMBER OF TERMINALS FOR NPU
STM NUSR,NI
RJM UCS UPDATE CM STATISTICS
* COUNT TOTAL CONNECTED TERMINALS
LDN 0
STD T1
STD T2
UMT6 LDD RA
SHN 5
ADD T1
SHN 1
ADK TS
CRD CM
LDD CM
RAD T2
AOD T1
LMM UMTC
NJN UMT6 IF MORE 2550S
* UPDATE *B* DISPLAY MESSAGE
LDD T2
RJM C2D CONVERT FOR MESSAGE
STM UMTA+1
LDD T2
SHN -6
RJM C2D
STM UMTA
LDD CP
ADN MS1W
CWM UMTA,TR
LJM UMTX EXIT
UMTA DATA C*XXXX TERMINALS ACTIVE.*
ERRNG OVLE-*
QUAL *
OVLC EQU OVI LAST OVERLAY TO BE CM RESIDENT
* /--- BLOCK KEY 00 000 82/03/31 15.48
KEY OVERLAY (ASCII TO PLATO KEY TRANSLATION TABLE.)
KEY SPACE 5,11
** KEYS - CONVERSION FROM ASCII TO PLATO KEYS
*
* ALL CHARACTERS ARRIVE IN REVERSE BIT ORDER
* THIS TABLE IS ORDERED IN THIS MANNER
SPACE 5,11
** KEY - MACRO TO CREATE KEY CONVERSION TABLE
*
*AA KEY PPP
*
* AA - HEX ASCII KEY VALUE
* PPP- PLATO KEY VALUE
*
* TABLE ENTRY FORMAT
*
* 10/PLATO KEY VALUE, 1/0, 1/EXPECTED PARITY
NOREF /KEY/KEYS,/KEY/.4
MACRO KEY,A,P
.1 MICRO 1,1, A
.3 MICRO 1,, A
.5 MICRO 0#".3"+1,1, 0110100110010110100101100110100110010110011
,01001011010011001011010010110011010010110100110010110011010011001011010
,01011001101001
.2 MICRO 0#".1"+1,1, 084C2A6E195D3B7F
.1 MICRO 2,1, A
.3 MICRO 0#".1"+1,1, 084C2A6E195D3B7F
.4 SET 0#".3"".2"
.4 SET .4/2
ORG KEYS+.4
LOC .4
VFD 10/P,1/0,1/".5"
ENDM
ORG //KEYA
KEY SUBR
UJN KEYX EXIT
KEYS BSSZ 200
* /--- BLOCK KEY 00 000 86/05/29 11.07
00 KEY 074 SQUARE1
01 KEY 032 STOP
02 KEY 030 BACK
03 KEY 033 COPY
04 KEY 021 SUB
05 KEY 061 SUB1
*06 ACK
07 KEY 022 ANS
08 KEY 023 ERASE
09 KEY 065 HELP1
0A KEY 014 TAB
0B KEY 025 HELP
0C KEY 035 LAB
0D KEY 026 NEXT
0E KEY 070 BACK1
0F KEY 075 LAB1
*10 DLE
11 KEY 072 STOP1
12 KEY 031 DATA
13 KEY 020 SUPER
14 KEY 062 TERM
*15 NAK
16 KEY 073 COPY1
17 KEY 060 SUPER1
18 KEY 067 EDIT1
19 KEY 063 ERASE1
1A KEY 027 EDIT
*1B ESC
1C KEY 054 CR
1D KEY 071 DATA1
1E KEY 066 NEXT1
1F KEY 140 SPACE1 (BKSP)
20 KEY 100 SPACE
21 KEY 176 '.
22 KEY 177 ',
23 KEY 056 '+
24 KEY 044 $
25 KEY 045 %
26 KEY 012 "
27 KEY 053 '#
28 KEY 051 (
29 KEY 173 )
2A KEY 050 *
2B KEY 016 +
2C KEY 137 ,
2D KEY 017 -
2E KEY 136 .
2F KEY 135 /
30 KEY 000 0
31 KEY 001 1
32 KEY 002 2
33 KEY 003 3
34 KEY 004 4
35 KEY 005 5
36 KEY 006 6
37 KEY 007 7
38 KEY 010 8
39 KEY 011 9
3A KEY 174 ';
3B KEY 134 ;
3C KEY 040 <
3D KEY 133 =
3E KEY 041 >
3F KEY 175 '/
* /--- BLOCK KEY 00 000 86/05/29 11.07
40 KEY 052 '"
41 KEY 141 A (UC)
42 KEY 142 B (UC)
43 KEY 143 C (UC)
44 KEY 144 D (UC)
45 KEY 145 E (UC)
46 KEY 146 F (UC)
47 KEY 147 G (UC)
48 KEY 150 H (UC)
49 KEY 151 I (UC)
4A KEY 152 J (UC)
4B KEY 153 K (UC)
4C KEY 154 L (UC)
4D KEY 155 M (UC)
4E KEY 156 N (UC)
4F KEY 157 O (UC)
50 KEY 160 P (UC)
51 KEY 161 Q (UC)
52 KEY 162 R (UC)
53 KEY 163 S (UC)
54 KEY 164 T (UC)
55 KEY 165 U (UC)
56 KEY 166 V (UC)
57 KEY 167 W (UC)
58 KEY 170 X (UC)
59 KEY 171 Y (UC)
5A KEY 172 Z (UC)
5B KEY 042 [
5C KEY 055 ASSIGN1
5D KEY 043 ]
5E KEY 015 _
5F KEY 046 '6
60 KEY 013 #
61 KEY 101 A (LC)
62 KEY 102 B (LC)
63 KEY 103 C (LC)
64 KEY 104 D (LC)
65 KEY 105 E (LC)
66 KEY 106 F (LC)
67 KEY 107 G (LC)
68 KEY 110 H (LC)
69 KEY 111 I (LC)
6A KEY 112 J (LC)
6B KEY 113 K (LC)
6C KEY 114 L (LC)
6D KEY 115 M (LC)
6E KEY 116 N (LC)
6F KEY 117 O (LC)
70 KEY 120 P (LC)
71 KEY 121 Q (LC)
72 KEY 122 R (LC)
73 KEY 123 S (LC)
74 KEY 124 T (LC)
75 KEY 125 U (LC)
76 KEY 126 V (LC)
77 KEY 127 W (LC)
78 KEY 130 X (LC)
79 KEY 131 Y (LC)
7A KEY 132 Z (LC)
7B KEY 024 MICRO
7C KEY 047 '7
7D KEY 034 SQUARE
7E KEY 057 '-
7F KEY 064 FONT
QUAL *
* /--- BLOCK NKY 00 000 86/05/29 11.05
NKY OVERLAY (ASCII TO PLATO NEW KEY TRANSLATION TABLE.)
NKY SPACE 5,11
** NKY - CONVERSION FROM ASCII TO PLATO KEYS
*
* ALL CHARACTERS ARRIVE IN REVERSE BIT ORDER
* THIS TABLE IS ORDERED IN THIS MANNER
ORG //KEYA
NKY SUBR
UJN NKYX EXIT
KEYS BSSZ 200
* /--- BLOCK NKY 00 000 86/05/29 11.06
* NUL
01 KEY 032 STOP
02 KEY 030 BACK
03 KEY 033 COPY
04 KEY 021 SUB
05 KEY 072 STOP1
*06 ACK
07 KEY 022 ANS
08 KEY 023 ERASE
09 KEY 014 TAB
0A KEY 065 HELP1
0B KEY 025 HELP
0C KEY 035 LAB
0D KEY 026 NEXT
0E KEY 070 BACK1
0F KEY 075 LAB1
*10 DLE
* DC1
12 KEY 031 DATA
* DC3
14 KEY 062 TERM
*15 NAK
16 KEY 073 COPY1
17 KEY 020 SUPER
18 KEY 067 EDIT1
19 KEY 063 ERASE1
1A KEY 027 EDIT
*1B ESC
1C KEY 054 CR
1D KEY 071 DATA1
1E KEY 066 NEXT1
1F KEY 140 SPACE1 (BKSP)
20 KEY 100 SPACE
21 KEY 176 '.
22 KEY 177 ',
23 KEY 056 '+
24 KEY 044 $
25 KEY 045 %
26 KEY 012 "
27 KEY 047 '7
28 KEY 051 (
29 KEY 173 )
2A KEY 050 *
2B KEY 016 +
2C KEY 137 ,
2D KEY 017 -
2E KEY 136 .
2F KEY 135 /
30 KEY 000 0
31 KEY 001 1
32 KEY 002 2
33 KEY 003 3
34 KEY 004 4
35 KEY 005 5
36 KEY 006 6
37 KEY 007 7
38 KEY 010 8
39 KEY 011 9
3A KEY 174 ';
3B KEY 134 ;
3C KEY 040 <
3D KEY 133 =
3E KEY 041 >
3F KEY 175 '/
* /--- BLOCK NKY 00 000 86/05/29 11.06
40 KEY 052 '"
41 KEY 141 A (UC)
42 KEY 142 B (UC)
43 KEY 143 C (UC)
44 KEY 144 D (UC)
45 KEY 145 E (UC)
46 KEY 146 F (UC)
47 KEY 147 G (UC)
48 KEY 150 H (UC)
49 KEY 151 I (UC)
4A KEY 152 J (UC)
4B KEY 153 K (UC)
4C KEY 154 L (UC)
4D KEY 155 M (UC)
4E KEY 156 N (UC)
4F KEY 157 O (UC)
50 KEY 160 P (UC)
51 KEY 161 Q (UC)
52 KEY 162 R (UC)
53 KEY 163 S (UC)
54 KEY 164 T (UC)
55 KEY 165 U (UC)
56 KEY 166 V (UC)
57 KEY 167 W (UC)
58 KEY 170 X (UC)
59 KEY 171 Y (UC)
5A KEY 172 Z (UC)
5B KEY 042 [
5C KEY 055 ASSIGN1
5D KEY 043 ]
5E KEY 015 _
5F KEY 046 '6
60 KEY 013 #
61 KEY 101 A (LC)
62 KEY 102 B (LC)
63 KEY 103 C (LC)
64 KEY 104 D (LC)
65 KEY 105 E (LC)
66 KEY 106 F (LC)
67 KEY 107 G (LC)
68 KEY 110 H (LC)
69 KEY 111 I (LC)
6A KEY 112 J (LC)
6B KEY 113 K (LC)
6C KEY 114 L (LC)
6D KEY 115 M (LC)
6E KEY 116 N (LC)
6F KEY 117 O (LC)
70 KEY 120 P (LC)
71 KEY 121 Q (LC)
72 KEY 122 R (LC)
73 KEY 123 S (LC)
74 KEY 124 T (LC)
75 KEY 125 U (LC)
76 KEY 126 V (LC)
77 KEY 127 W (LC)
78 KEY 130 X (LC)
79 KEY 131 Y (LC)
7A KEY 132 Z (LC)
7B KEY 024 MICRO
7C KEY 053 ^'I
7D KEY 034 SQUARE
7E KEY 057 '-
7F KEY 064 FONT
END