IDENT LOADBC,110B,LOADBC
ABS
SST
ENTRY LOADBC
ENTRY RFL=
ENTRY SSJ=
SYSCOM B1
TITLE LOADBC - LOAD BUFFER CONTROLWARE.
*COMMENT LOADBC - LOAD BUFFER CONTROLWARE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
LOADBC SPACE 4,10
***** LOADBC - DOWNLOAD DISK OR NAD CONTROLWARE.
*
* W. J. SMITH. 79/07/21.
* J. L. LARSON. 83/06/14.
*
* LOAD APPROPRIATE CONTROLWARE ON REQUESTED CHANNEL.
LOADBC SPACE 4,10
*** *LOADBC* IN CONJUNCTION WITH THE PP PROGRAM *1LC* WILL DOWN-
* LOAD CONTROLWARE TO THE REQUESTED CHANNEL AND CONTROLLER.
*
* COMMAND CALL - (DISK AND LOCAL NAD FORMAT)
*
* LOADBC(C=XX,F=EEEEEEE,D=DDDDDDD)
*
* XX OCTAL CHANNEL NUMBER. IF NOT SPECIFIED
* (FOR A SYSTEM INITIATED REQUEST), CHANNEL IS
* DETERMINED FROM THE CHANNEL CONTROLWARE TABLE OR
* THE EST (CONTROL MODULE LOAD).
* IF THE PREFIX C IS USED THE CHANNEL IS A CONCURRENT
* CHANNEL. (IE. C4 = CONCURRENT CHANNEL 4)
*
* EEEEEEE FILE NAME TO LOAD CONTROLWARE FROM
* (DEFAULT = SYSTEM FILE).
*
* DDDDDDD FILE NAME TO DUMP CONTROLLER MEMORY TO BEFORE
* CONTROLLER RELOAD. THE DUMP CAPABILITY IS AVAILABLE
* FOR 7155/7165/7255 CONTROLLERS ONLY
* (DEFAULT = NO LOAD).
*
* *LOADBC* PRESENTLY ASSUMES A CONTROLLER PHYSICAL EQUIPMENT
* NUMBER OF ZERO.
*
* COMMAND CALL - (CONTROL MODULE)
*
* LOADBC(EQ=EO,F=EEEEEEE)
*
* EO CONTROL MODULE EST ORDINAL.
* EEEEEEE FILE NAME TO LOAD CONTROLWARE FROM
* (DEFAULT = SYSTEM FILE).
*
*
* *LOADBC* CAN ALSO LOAD CONTROLWARE ON REMOTE NADS
* VIA *NLD* AFTER FIRST OBTAINING VALIDATION FROM *CVL*.
*
* COMMAND CALL - (REMOTE NAD FORMAT)
*
* LOADBC(C=XX,ND=AA,TY=BBB,LT=CC,AC=DDDD,F=EEEEEEE)
*
* XX OCTAL CHANNEL NUMBER.
* AA HEXADECIMAL REMOTE NAD NUMBER.
* BBB TYPE OF CONTROLWARE TO LOAD.
* 170 - CYBER 170 (DEFAULT).
* IBM - IBM.
* MIN - COMMON MINICOMPUTER.
* 200 - CYBER 20X.
* CC LOGICAL TCU ENABLES MASK.
* DDDD HEXADECIMAL ACCESS CODE.
* EEEEEEE FILE NAME TO LOAD CONTROLWARE FROM
* (DEFAULT = SYSTEM FILE).
LOADBC SPACE 4,10
*** DAYFILE MESSAGES.
*
* * BUFFER ARGUMENT ERROR.*
* *LOADBC* LOAD FET CONTAINED INCORRECT BUFFER POINTER.
*
* * CHXX, CONTROLLER RESERVED.*
* THE MULTIPLE-ACCESS CONTROLLER IS RESERVED THROUGH THE
* ALTERNATE ACCESS. *LOADBC* DELAYS AND CONTINUES RETRY
* OF CONTROLWARE RELOAD VIA *1LC* UNTIL THE RESERVE IS
* RELEASED.
*
* * CONTROLLER DID NOT TAKE ALL CONTROLWARE.*
* THE CONTROLLER DID NOT TAKE ALL THE DATA IN THE
* CONTROLWARE RECORD DURING LOAD PROCESSING.
* THE CONTENTS OF THE A REGISTER IN *1LC* WAS NOT
* ZERO AFTER ONE OF THE *OAM* INSTRUCTIONS.
*
* * CONTROLLER DUMP COMPLETE.*
* REQUESTED CONTROLLER DUMP WAS SUCCESSFUL.
*
* * CONTROLLER DUMP UNSUCCESSFUL.*
* *1LC* WAS UNABLE TO DUMP 7155 CONTROLLER MEMORY DUE
* TO FUNCTION TIMEOUT OR INCORRECT CONTROLLER RESPONSE.
*
* * CONTROLWARE LOAD ABORT, C=XX.*
* REQUESTED CONTROLWARE LOAD WAS UNSUCCESSFUL.
* XX = CHANNEL NUMBER XX REQUESTED.
*
* * CONTROLWARE LOAD ABORT, EQ=XXX.*
* REQUESTED CONTROLWARE LOAD WAS UNSUCCESSFUL.
* XX = CONTROL MODULE EST ORDINAL.
*
* * CONTROLWARE LOAD ALREADY IN PROGRESS.*
* REQUESTED CONTROLWARE LOAD FOR SPECIFIED CHANNEL
* WAS ALREADY BEING PROCESSED BY ANOTHER COPY OF
* *LOADBC*/*1LC*.
*
* * CONTROLWARE NOT FOUND.*
* EITHER THE SPECIFIED FILE DOES NOT CONTAIN THE
* REQUESTED CONTROLWARE, OR *F=0* WAS SPECIFIED.
*
* * DUMP BUFFER ARGUMENT ERROR.*
* *LOADBC* DUMP FET CONTAINED INCORRECT BUFFER POINTER.
*
* * ERROR IN PARAMETERS.*
* *LOADBC* COMMAND CONTAINED INCORRECT PARAMETER(S).
*
* * FUNCTION TIMED OUT=NNNN.*
* *1LC* TIMED OUT IN THE FUNCTION ROUTINE WHEN
* FUNCTIONING THE CONTROLLER DURING LOAD PROCESSING.
* NNNN = FUNCTION NUMBER.
*
* * GENERAL STATUS = NNNN.*
* NNNN = THE GENERAL STATUS AFTER THE CONTROLWARE LOAD
* WAS COMPLETED. THE CONTROLWARE LOAD WAS NOT
* SUCCESSFUL AND THE GENERAL STATUS IS NOT ZERO.
*
* * INSUFFICIENT DUMP BUFFER SPACE.*
* *LOADBC* DUMP FET BUFFER SPACE WAS INSUFFICIENT FOR
* CONTROLLER MEMORY DUMP.
*
* * INCORRECT CHANNEL NUMBER.*
* CHANNEL NUMBER SUPPLIED ON *LOADBC* COMMAND WAS NOT
* NUMERIC OR WAS NOT A VALID HARDWARE CHANNEL NUMBER.
*
* * INCORRECT EST ORDINAL.*
* EST ORDINAL SUPPLIED ON *LOADBC* COMMAND WAS NOT A
* VALID EST ORDINAL.
*
* * INCORRECT 1LC DUMP RESPONSE CODE.*
* *1LC* RETURNED AN INCORRECT RESPONSE CODE TO *LOADBC*.
*
* * LENGTH IN 52 TABLE .NE. FET.*
* THE CONTROLWARE RECORD LENGTH IN THE 52 TABLE DID NOT
* EQUAL THE CONTROLWARE RECORD LENGTH SPECIFIED IN THE
* FET AFTER THE CONTROLWARE WAS READ INTO *LOADBC* FIELD
* LENGTH.
*
* * LOADBC ABORT - BAD INITIATION PARAMETERS.*
* THE ACTUAL NAD MEMORY SIZE IS SMALLER THAN THE
* SPECIFIED *LOADBC* DEFAULT MEMORY SIZE.
*
* * LOADBC ABORT - XXX ERROR CODE = YYY.*
* PP PROGRAM XXX (*CVL* OR *NLD*) RETURNED A RESPONSE
* CODE OF YYY WHEN VALIDATING THE NAD OR WHEN
* LOADING NAD CONTROLWARE.
*
* * LOADBC REMOTE NAD LOAD - GO OR DROP.*
* FLASHING DISPLAY MESSAGE INDICATING THAT *CVL* COULD
* NOT DETERMINE THE STATUS OF THE NAD. OPERATOR
* ACTION IS REQUIRED BEFORE CONTROLWARE WILL BE
* LOADED.
*
* * NO CHANNEL LOAD REQUEST.*
* CHANNEL WAS NOT SPECIFIED ON THE *LOADBC* COMMAND
* AND CHANNEL CONTROLWARE LOAD REQUEST WAS NOT FOUND
* IN THE CHANNEL TABLE.
*
* * NO CONTROLWARE ON CHANNEL.*
* THE CHANNEL TABLES INDICATE NO CONTROLWARE
* EXISTS ON THE REQUESTED CHANNEL.
*
* * NO GENERAL STATUS RECEIVED.*
* AFTER A GENERAL STATUS FUNCTION IN *1LC*, THE *IAM*
* INSTRUCTION DID NOT RECEIVE THE STATUS WORD.
*
* * NO 52 TABLE IN CONTROLWARE RECORD.*
* THE CONTROLWARE RECORD READ FROM THE FILE DID
* NOT CONTAIN A 52 TABLE ENTRY.
*
* * NO 77 TABLE IN CONTROLWARE RECORD.*
* THE CONTROLWARE RECORD READ FROM THE FILE DID
* NOT CONTAIN A 77 PREFIX TABLE.
*
* * NOT CORRECT CONTROLLER TYPE FOR DUMP.*
* REQUESTED CONTROLLER DUMP WAS NOT PERFORMED SINCE
* THE DEVICE IS NOT A 7155/7165 CONTROLLER NOR A 7255
* ADAPTOR.
*
* * NOT CONTROL MODULE EST ORDINAL.*
* EST ORDINAL SUPPLIED ON *LOADBC* COMMAND DOES NOT
* CORRESPOND TO A CONTROL MODULE DEVICE.
*
* * SPECIFIED CHANNEL IS IN USE.*
* THE CHANNEL TABLES INDICATE THE SPECIFIED CHANNEL
* WAS DOWN AND ASSIGNED TO MAINTENANCE PERSONNEL.
*
* * SYSTEM NOT IN ENGR MODE.*
* *LOADBC* AND *1LC* INITIATED FROM A NON-SYSTEM REQUEST
* REQUIRE ENGINEERING MODE ENABLED.
*
* * USER NOT SYSTEM ORIGIN.*
* *LOADBC* AND *1LC* CAN ONLY BE INITIATED FROM SYSTEM
* ORIGIN OR FROM A SYSTEM REQUEST.
*
* * VALIDATION DENIED - DEVICE NOT FOUND.*
* *CVL* RETURNED A RESPONSE INDICATING THAT THE
* SPECIFIED NAD WAS NOT FOUND IN THE EST.
*
* * VALIDATION DENIED - DEVICE ON OR IN USE.*
* *CVL* RETURNED A RESPONSE INDICATING THAT NAD
* CONTROLWARE COULD NOT BE LOADED BECAUSE THE NAD
* WAS TURNED ON OR IN USE.
*
* * YYY FIRMWARE MATTT-VVV,CH=XX.*
* YYY = CONTROLLER TYPE (844, 885, FSC ADAPTOR).
* TTT = CONTROLWARE TYPE (401, 454, 710, 721).
* VVV = VERSION NUMBER (A12, A13,...).
* XX = CHANNEL ON WHICH CONTROLWARE WAS DOWNLOADED.
LOADBC SPACE 4,10
*** ERRLOG MESSAGES.
*
* *CHXX,MATTT,AVV,LOAD COMPLETE.*
* XX = CHANNEL ON WHICH DISK CONTROLWARE WAS DOWNLOADED.
* TTT = CONTROLWARE TYPE (MA401, MA454, MA710, MA721).
* VV = VERSION NUMBER (A12, A13, A15, ...).
*
* * CHXX,ABORT,SYYYY.*
* AN ERROR IN GENERAL STATUS AFTER THE CONTROLWARE WAS
* DOWNLOADED.
* XX = CHANNEL NUMBER XX.
* YYYY = GENERAL STATUS.
*
* * CHXX,ABORT,FYYYY.*
* FUNCTION TIMEOUT WHEN FUNCTIONING THE DISK CONTROLLER.
* XX = CHANNEL NUMBER.
* YYYY = FUNCTION THAT TIMED OUT.
*
* * CHXX,ABORT,ALL DATA NOT TAKEN.*
* THE CONTROLLER DID NOT ACCEPT ALL THE DATA ON A
* DOWNLOAD CONTROLWARE ATTEMPT.
* XX = CHANNEL NUMBER.
*
* * CHXX,ABORT,NO GENERAL STATUS.*
* AFTER DOWNLOAD OF CONTROLWARE WAS COMPLETE, THE
* GENERAL STATUS WORD WAS NOT RETURNED BY THE CONTROLLER
* AFTER A STATUS FUNCTION.
* XX = CHANNEL NUMBER.
*
* * CHXX, CONTROLLER RESERVED.*
* THE GENERAL STATUS INDICATED THE MULTIPLE-ACCESS
* CONTROLLER WAS RESERVED THROUGH THE ALTERNATE ACCESS.
* CONTROLWARE IS DOWNLOADED AFTER THE CONTROLLER RESERVE
* IS RELEASED.
* XX = CHANNEL NUMBER.
SPACE 4,10
*** *LOADBC* IS A CPU PROGRAM WHICH LOADS CONTROLWARE TO
* A SPECIFIED OR DRIVER REQUESTED CHANNEL OR CONTROL
* MODULE. THE CONTROLWARE IS READ FROM A LOCAL
* FILE OR FROM THE SYSTEM (DEFAULT) FILE.
* IF CONTROLWARE IS TO BE LOADED ON A DISK CHANNEL, *1LC*
* IS CALLED TO DO THE ACTUAL LOADING OF CONTROLWARE READ FROM
* *LOADBC* FIELD LENGTH. A RESPONSE CODE IS RETURNED TO
* *LOADBC* LOAD FET+0 AND THE APPROPRIATE DAYFILE MESSAGE
* IS ISSUED. *LOADBC* WILL RETRY CONTROLWARE RELOAD VIA *1LC*
* *CRRC* TIMES BEFORE THE RELOAD IS CONSIDERED UNSUCCESSFUL
* DUE TO CONTROLLER HARDWARE MALFUNCTION. FOR 7155 DISK
* CONTROLLERS, *1LC* WILL ALSO OPTIONALLY DUMP THE CONTROLLER
* MEMORY TO *LOADBC* DUMP BUFFER BEFORE RELOADING THE
* CONTROLWARE. *LOADBC* WILL PERFORM A BINARY COMPARISON
* BETWEEN THE OLD AND NEW CONTROLWARE AND WRITE THIS
* DATA TO A FILE THAT CAN BE PROCESSED BY *DSDI*.
* IF CONTROLWARE IS TO BE LOADED ON A NAD CHANNEL, *CVL* IS
* FIRST CALLED TO VALIDATE ACCESS TO THAT NAD. IF VALIDATION
* HAS BEEN GRANTED, *NLD* IS CALLED FOUR TIMES - 1) TO LOAD
* CONTROLWARE USING DEFAULT NAD BUFFER AND MEMORY SIZE
* PARAMETERS, 2) TO OBTAIN GENERAL NAD STATUS AND THE NAD-S
* ACTUAL MEMORY SIZE, 3) TO LOAD CONTROLWARE USING THE ACTUAL
* NAD MEMORY SIZE, AND 4) TO RETURN THE LOCAL NAD TO A
* USABLE STATE. THE ASSIGNED LOCAL NAD IS THEN RELEASED
* BY A FINAL CALL TO *CVL*, AND AN APPROPRIATE DAYFILE
* MESSAGE IS ISSUED.
SPACE 4,10
* MACRO DEFINITIONS.
*CALL COMCCMD
*CALL COMCMAC
NIPADD SPACE 4,15
** NIPADD - NAD INITIATION PARAMETER ADDRESS.
*
* NIPADD W
* W = NAD WORD ORDINAL (0-24).
*
* USES X - 2.
* A - 2.
* B - 2.
NIPADD MACRO W
LOCAL A,B
MACREF NIPADD
A SET W*24/60 *NADIP* TABLE OFFSET
B SET W*24-A*60 SHIFT COUNT
SA2 NADIP+A
SB2 B+12D
ENDM
NSTADD SPACE 4,15
** NSTADD - NAD STATUS WORD ADDRESS.
*
* NSTADD W
* W = NAD STATUS WORD ORDINAL (0-23).
*
* USES X - 2.
* A - 2.
* B - 2.
NSTADD MACRO W
LOCAL A,B
MACREF NSTADD
A SET W*16/60 NAD STATUS BLOCK OFFSET
B SET W*16-A*60 SHIFT COUNT
SA2 GST+A
SB2 B
ENDM
SPACE 4,10
* COMMON DECKS.
*CALL COMSDFS
*CALL COMSDSL
*CALL COMSPRD
*CALL COMSSSD
*CALL COMSSSJ
SPACE 4,10
* LOCAL SYMBOL DEFINITIONS.
BUFL EQU 10000D BUFFER SIZE NECESSARY FOR NAD CW
CRRC EQU 3 CONTROLWARE RELOAD RETRY COUNT
CTL EQU 201B *CVL* LOAD CONTROLWARE FLAGS
CTSZ EQU 40000B 7165 CONTROLLER MEMORY SIZE
DBUFL SET CTSZ*2+4
DBUFL SET DBUFL/5+1 DUMP BUFFER LENGTH
FDBC EQU 100B FIRST DUMP BYTE TO COMPARE
FDWI EQU FDBC*2/5 FIRST DUMP WORD INDEX
FDBI EQU FDBC*2-FDWI*5 FIRST DUMP BYTE INDEX
LDBC EQU 13710B+1 LAST DUMP BYTE + 1 TO COMPARE
LDWI EQU LDBC*2/5 LAST DUMP WORD INDEX
LDBI EQU LDBC*2-LDWI*5 LAST DUMP BYTE INDEX
CDHZ EQU 2410D CONTROLWARE DIAGNOSTICS HEADER SIZE
FLBC EQU CDHZ+FDBC-100B FIRST LOAD BYTE TO COMPARE
ERRNG FDBC-100B LOAD BEGINS AT 100B AFTER DIAGNOSTICS
FLWI EQU FLBC*2/5 FIRST LOAD WORD INDEX
FLBI EQU FLBC*2-FLWI*5 FIRST LOAD BYTE INDEX
NAD EQU 300B *CVL* NAD DEVICE CODE
RND EQU 301B *CVL* REMOTE NAD DEVICE CODE
RTNU EQU 10B RETURN EQUIPMENT BIT
VRNM EQU 4 *CVL* RESPONSE - DEVICE NOT FOUND
VRUS EQU 6 *CVL* RESPONSE - DEVICE IN USE OR ON
VRSI EQU 34B *CVL* RESPONSE - NAD STATUS INDETERMINATE
SPACE 4,10
* GLOBAL MEMORY DEFINITIONS.
ORG 110B
SSJ= VFD 36/0,12/LCCS,12/IRSI
BSSZ SSJL-1
SPACE 4,10
* FILE ENVIRONMENT TABLES.
IN EQU *
SYSTEM RFILEB BUF,BUFL,(FET=9)
DUMP FILEB DBUF,DBUFL
ORG DUMP
CON 0 CLEAR DUMP FILE NAME
ORG DUMP+5
SPACE 4,10
* CONTROL STORAGE CELLS.
ACC CON 0 REMOTE NAD ACCESS CODE
CCHF CON 0 CONCURRENT CHANNEL FLAG
CHAN VFD 18/2H ,42/0 CHANNEL IN DISPLAY CODE LEFT JUSTIFIED
CHN CON 0 CHANNEL NUMBER
CME CON 0 CONTROL MODULE EST ORDINAL
CMES CON 0 EST ORDINAL DISPLAY CODE LEFT JUSTIFIED
CMQ CON 0 CONTROL MODULE EQUIPMENT NUMBER
CRN CON 0 CONTROLWARE RECORD NAME LEFT JUSTIFIED
CWL CON 0 CONTROLWARE LENGTH
DRCF CON 0 SET IF NOT DRIVER CALL
ESTW CON -1 EST POINTER WORD *ESTP*
FN VFD 36/6HSYSTEM,24/0 DEFAULT CONTROLWARE FILE
FWC CON 0 FWA OF CONTROLWARE
LTCU CON 0 LOGICAL TCU ENABLES
LWC CON 0 LWA+1 OF CONTROLWARE
RE CON 0 RETURN EQUIPMENT FLAG
RL CON 0 REMOTE NAD LOAD FLAG
RNAD CON 0 REMOTE NAD NUMBER
RT CON CRRC RETRY COUNT
TYPE DATA 0L170 NAD CONTROLWARE TYPE
TYPN CON 0 NAD TYPE FLAG
GST BSSZ 100B GENERAL STATUS RETURNED BY *NLD*
GSTL EQU * APPROXIMATE END OF GENERAL STATUS
CVLB SPACE 4,10
** *CVL* PARAMETER BLOCK.
CVLB BSS 0
LOC 0
CRC CON 0 RESPONSE CODE
CEO CON 0 EST ORDINAL
CCH CON 1S48 CHANNEL
CEQ CON 1S48+NAD*10000B LOCAL NAD DEVICE CODE
CUN CON 0 UNIT (NOT USED FOR *RHF*)
CDV CON 1S48 NAD DEVICE CODE
CFC CON 0 FUNCTION CHARACTERISTICS
CAC CON 0 REMOTE HOST ACCESS CODE
CLT CON 0 LOGICAL TCU ENABLES MASK
CND CON 0 REMOTE NAD NUMBER
LOC *O
NLDB SPACE 4,10
** *NLD* PARAMETER BLOCK.
NLDB CON 0 RESPONSE CODE
CON 0 *FIRST*
CON 0 *IN*
CON 0 *OUT*
CON 0 *LIMIT*
CON 0 RESERVED FOR REMOTE NAD LOADING
* *NLD* PARAMETER BLOCK FOR NAD STATUS.
NADSTAT BSS 1 WORD 0 OF *NLD* PARAMETER BLOCK
VFD 60/GST *FIRST*
VFD 60/GST *IN*
VFD 60/GST *OUT*
VFD 60/GSTL *LIMIT*
BSSZ 1 RESERVED FOR REMOTE NAD STATUS
SPACE 4,10
* NAD STATUS SYMBOLS.
WAMS EQU 22D WORD ORDINAL OF ACTUAL MEMORY SIZE
WUNM EQU 12D WORD ORDINAL OF UNUSED NAD MEMORY
TRCM SPACE 4,10
** TRCM - GENERATE MESSAGE ADDRESS TABLE.
*
* TRCM BML,DAY,ERROR
*
* BML BINARY MAINTENANCE LOG MESSAGE FIRST WORD ADDRESS.
* DAY DAYFILE MESSAGE FIRST WORD ADDRESS.
* ERROR ERROR LOG MESSAGE FIRST WORD ADDRESS.
PURGMAC TRCM
TRCM MACRO BML,DAY,ERROR
VFD 24/BML
VFD 18/DAY
VFD 18/ERROR
ENDM
TLRC SPACE 4,10
** TLRC - INDEXED TABLE OF LOAD RESPONSE MESSAGE ADDRESSES.
*
*T TLRC VFD 6/0,18/ BML ,18/ DAY ,18/ ERROR
*
* BML BINARY MAINTENANCE LOG MESSAGE FIRST WORD ADDRESS.
* DAY DAYFILE MESSAGE FIRST WORD ADDRESS.
* ERROR ERROR LOG MESSAGE FIRST WORD ADDRESS.
TLRC BSS 0
LOC 0
TRCM ,MSG0,EMSG
RC1 TRCM ,MSG1
RC2 TRCM ,MSG2
RC3 TRCM ,MSG3
RC4 TRCM ,MSG4
RC5 TRCM ,MSGRR
RC6 TRCM ,MSG6
RC7 TRCM ,MSG7
RC10 TRCM ,MSG10
RC11 TRCM ,MSG11
RC12 TRCM ,MSG12
RC13 TRCM ,MSGRR
RC14 TRCM ,MSG14
RC15 TRCM ,MSG15
RC16 TRCM ,MSG16
RC17 TRCM ,MSG17
RC20 TRCM ,MSG20
RC21 TRCM ,MSG21
RC22 TRCM ,MSGRR
RC23 TRCM ,MSGRR
RC24 TRCM ,MSGRR
RC25 TRCM ,MSGRR
RC26 TRCM ,MSGRR
RC27 TRCM ,MSGRR
RCAML EQU * LOAD RESPONSE CODE ABORT MESSAGE LIMIT
RC30 TRCM BML30,MSG30,EMSG0
RC31 TRCM BML31,MSG31,EMSG1
RC32 TRCM BML32,MSG32,EMSG2
RC33 TRCM BML33,MSG33,EMSG3
RC34 TRCM 0,IRMB,EMSG4
LOC *O
TLRCL EQU *-TLRC TABLE LENGTH
TDMA SPACE 4,10
** TDMA - INDEXED TABLE OF DUMP RESPONSE MESSAGE ADDRESSES.
*
* 42/0, 18/DAYFILE MESSAGE ADDRESS
TDMA BSS 0
LOC 0
CON DRM0 * CONTROLLER DUMP COMPLETE.*
DR1 CON DRM1 * DUMP BUFFER ARGUMENT ERROR.*
DR2 CON DRM2 * INSUFFICIENT DUMP BUFFER SPACE.*
DR3 CON DRM3 * NOT CORRECT CONTROLLER TYPE FOR DUMP.*
DR4 CON DRM4 * CONTROLLER DUMP UNSUCCESSFUL.*
TDMAL EQU * TABLE LENGTH
DR5 CON DRM5 * INCORRECT 1LC DUMP RESPONSE CODE.*
LOC *O
SPACE 4,10
* DAYFILE MESSAGES ISSUED BY *LOADBC*.
MSG0 DATA C* YYY FIRMWARE VVVVVVVVV,CH=XXX.*
MSG1 DATA C* USER NOT SYSTEM ORIGIN.*
MSG2 DATA C* SPECIFIED CHANNEL IS IN USE.*
MSG3 DATA C* NO CHANNEL LOAD REQUEST.*
MSG4 DATA C* ERROR IN PARAMETERS.*
MSG6 DATA C* INCORRECT CHANNEL NUMBER.*
MSG7 DATA C* NO CONTROLWARE ON CHANNEL.*
MSG10 DATA C* CONTROLWARE NOT FOUND.*
MSG11 DATA C* SYSTEM NOT IN ENGR MODE.*
MSG12 DATA C* BUFFER ARGUMENT ERROR.*
MSG14 DATA C* CONTROLWARE LOAD ALREADY IN PROGRESS.*
MSG15 DATA C* NO 77 TABLE IN CONTROLWARE RECORD.*
MSG16 DATA C* NO 52 TABLE IN CONTROLWARE RECORD.*
MSG17 DATA C* LENGTH IN 52 TABLE .NE. FET.*
MSG20 DATA C* INCORRECT EST ORDINAL.*
MSG21 DATA C* NOT CONTROL MODULE EST ORDINAL.*
MSG30 DATA C* CONTROLLER DID NOT TAKE ALL CONTROLWARE.*
MSG31 DATA C* GENERAL STATUS = NNNN.*
MSG32 DATA C* FUNCTION TIMED OUT=NNNN.*
MSG33 DATA C* NO GENERAL STATUS RECEIVED.*
MSGRR DATA C* CDC RESERVED RESPONSE CODE.*
DRM0 DATA C* CONTROLLER DUMP COMPLETE.*
DRM1 DATA C* DUMP BUFFER ARGUMENT ERROR.*
DRM2 DATA C* INSUFFICIENT DUMP BUFFER SPACE.*
DRM3 DATA C* NOT CORRECT CONTROLLER TYPE FOR DUMP.*
DRM4 DATA C* CONTROLLER DUMP UNSUCCESSFUL.*
DRM5 DATA C* INCORRECT 1LC DUMP RESPONSE CODE.*
MSGA DATA C* CONTROLWARE LOAD ABORT, C=XXXXXXX.*
MSGB DATA C* CONTROLWARE LOAD COMPLETE.*
MSGC DATA C* CONTROLWARE LOAD ABORT, EQ=XXXXXXX.*
SPACE 4,10
* ERROR LOG MESSAGES.
EMSG DATA C*CHXXX,YYYYYYYYY,LOAD COMPLETE.*
EMSG0 DATA C* CHXXX,ABORT,ALL DATA NOT TAKEN.*
EMSG1 DATA C* CHXXX,ABORT,SYYYY.*
EMSG2 DATA C* CHXXX,ABORT,FYYYY.*
EMSG3 DATA C* CHXXX,ABORT,NO GENERAL STATUS.*
EMSG4 DATA C* CHXXX, CONTROLLER RESERVED.*
SPACE 4,10
* BML MESSAGES.
BMLM VFD 12/BMLML,48/0 SET MESSAGE LENGTH
VFD 12/DM0401,12/HI0105,12/0,12/0,12/0 CHANNEL/EQUIPMENT
VFD 60/0 CONTROLWARE TYPE AND VERSION
BMLML EQU *-BMLM-1 MESSAGE LENGTH
BML30 VFD 12/BML30L,48/0 SET MESSAGE LENGTH
VFD 12/DM0401,12/HI0114,12/0,24/0 CHANNEL
VFD 60/0 NOT USED
BML30L EQU *-BML30-1 MESSAGE LENGTH
BML31 VFD 12/BML31L,48/0 SET MESSAGE LENGTH
VFD 12/DM0401,12/HI0115,12/0,24/0 CHANNEL
VFD 60/0 LAST STATUS
BML31L EQU *-BML31-1 MESSAGE LENGTH
BML32 VFD 12/BML32L,48/0 SET MESSAGE LENGTH
VFD 12/DM0401,12/HI0116,12/0,24/0 CHANNEL
VFD 60/0 LAST FUNCTION
BML32L EQU *-BML32-1 MESSAGE LENGTH
BML33 VFD 12/BML33L,48/0 SET MESSAGE LENGTH
VFD 12/DM0401,12/HI0117,12/0,24/0 CHANNEL
VFD 60/0 NOT USED
BML33L EQU *-BML33-1 MESSAGE LENGTH
TITLE NAD CONTROLWARE PARAMETERS.
NADCON SPACE 4,10
** NADCON - GENERATE NAD CONSTANT.
*
* NADCON P
* P = HEXADECIMAL VALUE (0-FFFF).
NADCON MACRO P
LOCAL A,B
MACREF NADCON
A SET P/0#100
B SET P-A*0#100
VFD 4/0,8/A,4/0,8/B
ENDM
NADIP SPACE 4,10
** NADIP - NAD INITIALIZATION PARAMETERS.
*
* THE FOLLOWING INITIALIZATION PARAMETERS ARE LOADED AT THE
* END OF THE NAD CONTROLWARE. THEY ARE USED BY THE CONTROLWARE
* TO CONFIGURE THE NAD DURING INITIALIZATION.
*
* NOTE - IF ENABLED NAD BUFFER TRACING IS DESIRED, THE
* ANALYST SHOULD CHANGE THE APPROPRIATE LINE BELOW TO -
* NADCON 0#2954 ENABLE NAD BUFFER TRACING.
NADIP BSS 0
NADCON 0 NAD MEMORY SIZE - 1
NADCON 0#F TCU ENABLES
NADCON 0 STREAM MODE
NADCON 0#19 NUMBER OF NADS
NADCON 0#23 MAXIMUM NUMBER OF PATHS
NADCON 0 RESERVED
NADCON 0 INTERNAL BUFFER COUNT
NADCON 0 RESERVED
NADCON 0 CONTROL MESSAGE BUFFER COUNT
NADCON 0#81 TYPE 0 BUFFER SIZE
NADCON 0 TYPE 0 BUFFER COUNT
NADCON 0#810 TYPE 1 BUFFER SIZE
NADCON 0 TYPE 1 BUFFER COUNT
NADCON 0 TYPE 2 BUFFER SIZE
NADCON 0 TYPE 2 BUFFER COUNT
NADCON 0 TYPE 3 BUFFER SIZE
NADCON 0 TYPE 3 BUFFER COUNT
NADCON 6 TRUNK RECEIVER QUEUE LIMIT
NADCON 6 TRUNK SEND QUEUE LIMIT
NADCON 0#1E CONTROL MESSAGE RECEIVE QUEUE LIMIT
NADCON 0#1E CONTROL MESSAGE SEND QUEUE LIMIT
NADCON 2 PATH RECEIVE QUEUE LIMIT
NADCON 2 PATH SEND QUEUE LIMIT
NADCON 0 DISABLE NAD BUFFER TRACING (DEFAULT)
NADCON 1R:/1R:*10000B CHARACTER SET MODE (DEFAULT 64)
DATA 0
LNADIP EQU *-NADIP
* *NADIP* TABLE WORD OFFSETS.
WCBC EQU 8 CONTROL MESSAGE BUFFER COUNT
WIBC EQU 6 INTERNAL (SYSTEM) BUFFER COUNT
WMNP EQU 4 MAXIMUM NUMBER OF PATHS
WNMS EQU 0 NAD MEMORY SIZE
WTBC EQU 12D TYPE 1 BUFFER COUNT
* NAD INITIATION PARAMETER DEFINITIONS.
DCBC EQU 0#23 DEFAULT CONTROL MESSAGE BUFFER COUNT
DNMS EQU 0#7FFF DEFAULT NAD MEMORY SIZE - 1
DTBC EQU 2 DEFAULT TYPE 1 BUFFER SIZE
LCBC EQU 0#30 CONTROL MESSAGE BUFFER LENGTH
LTBC EQU 0#820 TYPE 1 BUFFER LENGTH
TITLE MAIN PROGRAM.
LBC SPACE 4,10
** LOADBC - LOAD BUFFER CONTROLWARE MAIN PROGRAM.
LOADBC BSS 0 ENTRY
SB1 1
RJ PRS PRESET
SA1 DRCF
NZ X1,LBC2 IF NOT DRIVER CALL
LBC1 RJ SCN SELECT CHANNEL NUMBER
SA1 CME
NZ X1,LBC2 IF LOAD REQUEST FOR CONTROL MODULE
RJ CCS CHECK CHANNEL STATUS
LBC2 RJ RCF READ CONTROLWARE FILE
LBC3 SA2 DUMP
ZR X2,LBC4 IF NO DUMP REQUESTED
SX2 A2+
LX2 18
LBC4 SA3 CME
SA1 CHN
ZR X3,LBC4.1 IF CONTROL MODULE NOT SPECIFIED
SX1 X3+4000B SET CONTROL MODULE FLAG FOR *1LC*
LBC4.1 SA3 DRCF
LX3 10
BX6 X3+X1
SA6 IN+8
SA3 LBCA BUILD *1LC* CALL WORD
BX6 X3+X2 SET DUMP REQUEST
MX7 42
SA1 IN CLEAR FET+0 RESPONSE CODE
SA6 LBCD+1
SA6 LBCB
BX7 X7*X1
SA7 A1
SA2 CCHF CHECK FOR CONCURRENT CHANNEL
NZ X2,LBC6 IF CONCURRENT CHANNEL
SYSTEM SPC,,A6 CALL *1LC*
EQ LBC7 COMPLETE LOAD
LBC6 SYSTEM CPM,R,LBCD,140B*100B ASSIGN CIO PP FOR THE LOAD
LBC7 RECALL IN WAIT FOR LOAD TO COMPLETE
SA1 X2 GET *1LC* RESPONSE CODE
MX0 -8
LX1 -1
BX0 -X0*X1
SX2 X0-RC14 CHECK FOR LOAD ALREADY IN PROGRESS
SA1 DRCF CHECK IF NEED TO RESELECT CHANNEL
BX1 X1+X2
CX1 X1
ZR X1,LBC1 IF RELOAD IN PROGRESS FOR DRIVER REQUEST
SA1 CME
ZR X1,LBC8 IF NOT CONTROL MODULE LOAD
SA1 IN+8 GET CHANNEL NUMBER USED
MX6 12
BX1 X6*X1
LX1 12
BX6 X1
SX1 X1+10000B
SA6 CHN
RJ COD CONVERT TO DISPLAY CODE
LX6 48-0
MX4 12
BX6 X4*X6
SA6 CHAN
LBC8 SX2 X0-RCAML
NG X2,ELP IF NOT CONTROLLER HARDWARE ERROR
SX6 X0-RC34
ZR X6,LBC9 IF CONTROLLER RESERVED
SA2 DRCF
ZR X2,ELP IF DRIVER CALL
SA2 RT CHECK RETRY COUNT
SX6 X2-1
SA6 A2+
ZR X6,ELP IF RETRY COUNT EXHAUSTED
RJ IRM ISSUE RESPONSE MESSAGES
BX2 X2-X2 PREVENT DUMP ON RETRY
EQ LBC4 RETRY CONTROLWARE LOAD
LBC9 RECALL
SA1 LBCC GET PREVIOUS CONTROLLER RESERVE FLAG
NZ X1,LBC3 IF PREVIOUS CONTROLLER RESERVE
SX6 B1
SA6 A1
RJ IRM ISSUE RESPONSE MESSAGES
EQ LBC3 RETRY CONTROLWARE RELOAD
LBCA VFD 18/3R1LC,24/0,18/IN *1LC* CALL WORD
LBCB BSS 1 *SPC* PARAMETER WORD
LBCC CON 0 CONTROLLER RESERVED RESPONSE FLAG
LBCD CON 0,0 CALL BLOCK FOR CONCURRENT PP ASSIGNMENT
TITLE DISK CONTROLWARE SUBROUTINES.
CCS SPACE 4,15
** CCS - CHECK CHANNEL STATUS.
*
* ENTRY (CHN) = CHANNEL NUMBER.
*
* EXIT (X5) = CONTROLWARE TYPE FOR CHANNEL.
* (CHAN) = CHANNEL NUMBER IN DISPLAY CODE.
* (CRN) = CONTROLWARE RECORD NAME.
*
* ERROR EXIT TO *ELP* WITH (X0) = ERROR RESPONSE.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 6.
*
* CALLS COD, RCT.
CCS SUBR ENTRY/EXIT
SA5 CHN CONVERT CHANNEL NUMBER TO DISPLAY
MX0 -5 CLEAR POSSIBLE CCH FLAG
BX1 -X0*X5
SX1 X1+100B FORCE LEADING ZERO FILL
SX0 5
RJ COD
MX1 -12
SB6 -B1
BX6 -X1*X6
LX6 -12
SA1 CHN CHECK FOR CONCURRENT CHANNEL
LX1 59-5
PL X1,CSS0 IF NOT A CONCURRENT CHANNEL
SX1 1RC ADD *C* TO CHANNEL NUMBER
LX6 -6
LX1 54
BX6 X6+X1
CSS0 SA6 CHAN
RJ RCT READ CHANNEL TABLES
CCS1 SB6 B6+B1 CALCULATE WORD INDEX IN CHANNEL TABLE
IX5 X5-X0
PL X5,CCS1 IF DIVIDE BY 5 NOT COMPLETE
IX5 X5+X0 BYTE INDEX
SX1 12
IX5 X5*X1
SB3 X5 SHIFT FOR CHANNEL BYTE
SA1 CBUF+B6 CHANNEL STATUS
MX5 -5
SA3 CBUF+CTALL*2+B6 CHANNEL CONTROLWARE
LX1 B3
LX3 B3
SX0 RC7 * NO CONTROLWARE ON CHANNEL.*
LX3 12
BX5 -X5*X3 CONTROLWARE TYPE
SX7 X5-MXCWT
PL X7,ELP IF INCORRECT TYPE
SA4 TCWT+X5 GET CONTROLWARE RECORD NAME
ZR X4,ELP IF NO CONTROLWARE ON CHANNEL
BX7 X4
LX1 59-53
SA7 CRN
PL X1,CCSX IF CHANNEL UP
SA2 CBUF+CTALL+B6 CHANNEL ASSIGNMENT
MX6 12
LX2 B3
BX2 X6*X2
R= X0,RC2 * SPECIFIED CHANNEL IS IN USE.*
ZR X2,CCSX IF CHANNEL NOT ASSIGNED
EQ ELP PROCESS ERROR
TCWT SPACE 4,10
** TCWT - TABLE OF CONTROLWARE TYPES.
TCWT BSS 0
LOC 0
NOCW CON 0 0 - NO CONTROLWARE
HTCW DATA 0LBCS 1 - HT (7054/7154/7152)
FTCW DATA 0LBCF 2 - FT (7154/7152)
FMCW DATA 0LFMD 3 - FMD (7155)
ADCW DATA 0LADP 4 - FSC ADAPTER
PHCW DATA 0LPHD 5 - DEMA/PFMD (7155-10)
IDCW DATA 0LISD 6 - 7255 ADAPTOR
CCCW DATA 0LMA464 7 - 7165 CCC
LNFL EQU * LOCAL NAD FLAG
NDCW DATA 0L170 10 - CYBER 170 NAD
CMCW DATA 0LCMD 11 - CONTROL MODULE I
C2CW DATA 0LCM2 12 - CONTROL MODULE II
M8CW DATA 0LCCC7990 13 - 7990 CCC
LOC *O
ELP SPACE 4,15
** ELP - END *LOADBC* PROCESSING.
*
* ENTRY (X0) = LOAD RESPONSE CODE.
*
* USES X - 1, 2.
* A - 0, 1, 2.
* B - 2, 5.
*
* CALLS IRM, SNM, VCD.
*
* MACROS ABORT, ENDRUN, MESSAGE.
ELP BSS 0 ENTRY
SA0 B0 SET NO ABORT FLAG
ZR X0,ELP1 IF LOAD COMPLETE
SA0 B1 SET ABORT FLAG
SX1 X0-RCAML
NG X1,ELP2 IF NOT CONTROLLER HARDWARE ERROR
ELP1 RJ VCD VERIFY CONTROLWARE DUMP
ELP2 RJ IRM ISSUE RESPONSE MESSAGES
SB5 MSGB * CONTROLWARE LOAD COMPLETE.*
ZR X0,ELP3 IF LOAD COMPLETE
SB5 MSGA * CONTROLWARE LOAD ABORT, C=XX.*
SA1 CHAN ENTER CHANNEL DISPLAY INTO SUMMARY MESSAGE
SA2 CME
ZR X2,ELP2.1 IF NOT CONTROL MODULE
SB5 MSGC * CONTROLWARE LOAD ABORT, EQ=XXX.*
SA1 CMES ENTER EST ORDINAL INTO SUMMARY MESSAGE
ELP2.1 SB2 1RX
RJ SNM
ELP3 MESSAGE B5,0,R
SX1 A0+
NZ X1,ELP4 IF *LOADBC* TO BE ABORTED
ENDRUN
ELP4 ABORT
FFI SPACE 4,10
** FFI - FIND FIRMWARE IDENT.
*
* (BUF - BUF+16) = PREFIX TABLE OF FIRMWARE RECORD.
*
* (X7) = FIRMWARE TYPE AND REVISION LEVEL.
*
* USES X - 1, 2, 3, 4, 7.
* A - 1, 2, 3.
* B - 2, 3.
*
* CALLS USB.
* SET DEFAULT NAME.
FFI4 SA3 FFIB DEFAULT NAME
BX7 X3
FFI SUBR 0 ENTRY/EXIT
SB2 BUF+10B FIRST WORD ADDRESS OF UNPACK
SB3 B0 DEFINE NO ASCII
MX4 -6
RJ USB
SB2 70
SA1 USBB-1
FFI1 SA1 A1+B1 SCAN FOR *FIRMWARE*
SB2 B2-B1
SX1 X1-1RF
ZR B2,FFI4 IF END OF TEXT STRING
NZ X1,FFI1 IF NOT *F*
SA2 A1+1
SX2 X2-1RI
NZ X2,FFI1 IF NOT *I*
SA3 FFIA CHECK FOR REMAINDER OF *FIRMWARE*
FFI2 BX1 -X4*X3
SA2 A2+B1
AX3 6
IX2 X1-X2
NZ X2,FFI1 IF NOT *RMWARE*
NZ X3,FFI2 IF NOT END OF *RMWARE*
SB3 A2-USBB-61
SX7 1R ASSEMBLE FIRMWARE IDENT
PL B3,FFI4 IF NOT ENOUGH CHARACTERS REMAIN
SB3 9
FFI3 LX7 6 POSITION ASSEMBLY
SA2 A2+B1
SB3 B3-B1
BX7 X2+X7
NZ B3,FFI3 IF NOT END OF ASSEMBLY
LX7 6
EQ FFIX RETURN
FFIA VFD 18/0,42/7H ERAWMR
FFIB DATA 10H**********
IRM SPACE 4,15
** IRM - ISSUE RESPONSE MESSAGES.
*
* ENTRY (X0) = LOAD RESPONSE CODE.
*
* EXIT DAYFILE AND ERROR LOG MESSAGES ISSUED
* FOR RESPONSE CODE.
*
* USES X - 1, 2, 3, 5, 6.
* A - 1, 2, 3, 5, 6.
* B - 2, 3, 5.
*
* CALLS COD, FFI, SNM.
*
* MACROS MESSAGE.
IRM1 SX1 X0-RCAML
NG X1,IRM3 IF NOT CONTROLLER HARDWARE ERROR
SA1 IN+8 GET LAST FUNCTION/STATUS FROM *1LC*
MX2 -12
BX1 -X2*X1
SX1 X1+10000B FORCE LEADING ZERO FILL
RJ COD CONVERT TO DISPLAY CODE
MX2 -24
BX1 -X2*X6
SX6 1R.
LX1 -24
LX6 30
BX6 X1+X6
SA6 MSG31+2 ENTER LAST STATUS IN MESSAGE
SA6 BML31+2 ENTER LAST STATUS IN MESSAGE
SA6 MSG32+2 ENTER LAST FUNCTION IN MESSAGE
SA6 BML32+2 ENTER LAST FUNCTION IN MESSAGE
IRM2 SB5 X5 ENTER DATA IN ERROR LOG MESSAGE
SB3 IRMB
SB5 -B5
SB2 1RY
RJ SNM
SB5 IRMB ENTER CHANNEL DISPLAY IN ERROR LOG MESSAGE
SB2 1RX
SA1 CHAN
RJ SNM
MESSAGE B5,4 ISSUE ERROR LOG MESSAGE
IRM3 AX5 18
MESSAGE X5,0,R ISSUE LOAD RESPONSE MESSAGE
AX5 18 CHECK FOR BML MESSAGE
SX5 X5
ZR X5,IRMX IF NO BML MESSAGE
SA2 X5+1
SA1 CHN SET CHANNEL IN BML MESSAGE
LX1 24
BX6 X1+X2
SA6 A2
MESSAGE X5,11B,R ISSUE LOAD COMPLETE MESSAGE TO BML
IRM SUBR ENTRY/EXIT
SA5 TLRC+X0 GET MESSAGE ADDRESSES
NZ X0,IRM1 IF NOT LOAD COMPLETE
SB5 MSG0 ENTER CONTROLWARE TYPE
SB2 1RY
SA1 BUF+10B
RJ SNM
SB5 MSG0 ENTER CHANNEL DISPLAY IN DAYFILE MESSAGE
SB2 1RX
SA1 CHAN
RJ SNM
RJ FFI FIND FIRMWARE IDENT
SA2 BMLM+1
SA1 CHN SET CHANNEL IN BML MESSAGE
SA7 A2+1 STORE FIRMWARE IDENT
SA7 IRMC
LX1 24
BX6 X1+X2
SA3 CMQ SET EQUIPMENT NUMBER IN BML MESSAGE
LX3 12
BX6 X1+X2
BX6 X6+X3
SA6 A2
MESSAGE BMLM,11B,R ISSUE LOAD COMPLETE MESSAGE TO BML
SB5 MSG0 ENTER CONTROLWARE TYPE
SB2 1RV
BX1 X7
RJ SNM
SA1 IRMC
EQ IRM2 SET CONTROLWARE TYPE IN ERROR LOG MESSAGE
IRMA VFD 18/0,24/4H,CH=,12/0,6/1R.
IRMB BSS 4
IRMC CON 0
RCF SPACE 4,20
** RCF - READ CONTROLWARE FILE.
*
* ENTRY (TYPN) = NAD TYPE FLAG.
* .EQ. POSITIVE, IF *TY* OPTION NOT SPECIFIED.
* .EQ. NEGATIVE, IF *TY* OPTION SPECIFIED.
* (RL) = .NE. 0, IF REMOTE NAD LOAD.
*
* EXIT (FWC) = FWA CONTROLWARE IN LOAD BUFFER.
* (LWC) = LWA CONTROLWARE IN LOAD BUFFER.
*
* ERROR EXIT TO *ELP* WITH (X0) = ERROR RESPONSE CODE.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 2, 3, 4, 6.
*
* MACROS ASSIGN, READ, REWIND, SKIPB, SKIPEI, STATUS.
RCF2 STATUS IN DETERMINE IF LOCAL FILE PRESENT
SA1 X2
MX2 -11
AX1 1
BX1 -X2*X1
ZR X1,ELP IF NO LOCAL FILE
REWIND IN,R
RCF3 READ IN,R READ CONTROLWARE RECORD
SA1 IN CLEAR FET CODE AND STATUS
MX6 51
BX6 X6*X1
SA6 A1
SA1 IN+2 READ *IN* POINTER
SA2 A1+B1 READ *OUT* POINTER
SB2 X2
SA3 B2
SB6 X1 SAVE *IN*
MX5 12
MX1 6 FORM 7700 MASK
BX2 X5*X3
SX0 RC15 * NO 77 TABLE IN CONTROLWARE RECORD.*
BX1 X1-X2
NZ X1,ELP IF NOT 7700 TABLE
LX3 12
BX2 X5*X3 LENGTH OF 7700 TABLE
SX0 RC16 * NO 52 TABLE IN CONTROLWARE RECORD.*
LX2 12
SB3 X2+B1
SA2 B2+B3 READ EXPECTED 5200 TABLE
SX3 5200B
SX6 A2+B1 FWA OF CONTROLWARE
SA6 FWC
SB2 X6 *OUT* = FWA OF CONTROLWARE
SX6 X2-1 SUBTRACT LENGTH OF 5200 TABLE
SX7 A2
IX7 X2+X7 ADD CONTROLWARE LENGTH
SB4 X6
BX2 X5*X2
SA7 LWC SAVE LWA+1 OF CONTROLWARE
LX2 12
BX2 X2-X3
NZ X2,ELP IF NOT 5200 TABLE
SB6 B6-B2 *IN* - *OUT*
SB6 B6-B4
SX0 RC17 * LENGTH IN 52 TABLE .NE. FET.*
NZ B6,ELP IF CM WORD COUNT DOES NOT MATCH
SA6 CWL SAVE CONTROLWARE LENGTH
RCF SUBR ENTRY/EXIT
SA1 IN
SA2 FN ASSUMED FILE NAME
SX0 RC10 * CONTROLWARE NOT FOUND.*
ZR X1,ELP IF *F=0* SPECIFIED
MX3 42
BX1 X3*X1
BX3 X1-X2
NZ X3,RCF2 IF ALTERNATE FILE SPECIFIED
ASSIGN IN
SKIPEI IN,R POSITION TO EOI
SKIPB IN,2,R POSITION TO BEGINNING OF DIRECTORY
READ IN,R READ DIRECTORY
SA2 X2+2 READ *IN* POINTER
SA3 BUF LENGTH OF 7700 TABLE
SB3 X2+ (B3) = LWA+1 OF DATA READ
SA2 CRN
LX3 24
SB2 X3+BUF FIRST RECORD ON SYSTEM DIRECTORY
MX7 42
SA1 TYPN
PL X1,RCF1 IF TYPE NOT SPECIFIED
SA3 RL
ZR X3,RCF1 IF NOT REMOTE NAD LOAD
SA2 TYPE USE TYPE SPECIFIED BY CALLER
RCF1 SA1 B2+ READ DIRECTORY ENTRY
GE B2,B3,ELP IF END OF DIRECTORY
SB2 B2+2
BX3 X7*X1
BX3 X3-X2
NZ X3,RCF1 IF CONTROLWARE NOT FOUND
BX1 -X7*X1
SX1 X1-10
NZ X1,RCF1 IF CONTROLWARE NOT FOUND
SA1 A1+B1 SET RANDOM ADDRESS IN FET
MX7 -29
SA2 IN+6
BX2 X7*X2
BX6 -X7*X1
BX6 X6+X2
SA6 A2
SA1 IN+2 RESET *IN* = *FIRST*
SA2 IN+1
MX7 -18
BX2 -X7*X2
BX1 X7*X1
BX6 X1+X2
SA6 A1
EQ RCF3 READ CONTROLWARE RECORD
RCT SPACE 4,10
** RCT - READ CHANNEL TABLES.
*
* ENTRY (RCTA) = CHANNEL TABLES DESCRIPTOR WORD.
*
* EXIT CBUF = CHANNEL TABLES FROM CMR.
*
* USES X - 7.
* A - 7.
*
* MACROS SYSTEM.
RCT SUBR ENTRY/EXIT
MX7 1 READ FROM LOW CORE
SA7 CBUF
SYSTEM RSB,R,RCTA,0 READ CHANNEL TABLES
EQ RCTX RETURN
RCTA VFD 12/0,12/CTALL*3,18/0,18/CBUF
SCN SPACE 4,15
** SCN - SELECT CHANNEL NUMBER.
*
* ENTRY (ESTW) = EST POINTER WORD *ESTP*.
*
* EXIT IF DRIVER REQUEST FOUND IN CHANNEL TABLE -
* (CHN) = CHANNEL NUMBER.
* (CME) = 0.
* (CMQ) = 0.
* IF DRIVER REQUEST FOUND IN CONTROL MODULE EST ENTRY -
* (CME) = EST ORDINAL.
* (CRN) = CONTROLWARE RECORD NAME LEFT JUSTIFIED.
*
* ERROR EXIT TO *ELP* WITH (X0) = ERROR RESPONSE.
*
* USES X - 2, 3, 4, 5, 6, 7.
* A - 2, 4, 6.
* B - 2, 3, 4, 5, 6.
*
* CALLS RCT.
SCN7 SA6 CHN SAVE CHANNEL NUMBER
LX6 59-5
PL X6,SCN7.1 IF NOT CONCURRENT CHANNEL
SA6 CCHF SET CONCURRENT CHANNEL FLAG
SCN7.1 SX6 HI0103
SCN8 SA1 BMLM+1 SET BML MESSAGE SYMPTOM CODE
LX6 36
MX5 12
LX5 48
BX1 -X5*X1
BX6 X1+X6
SA6 A1
SCN SUBR ENTRY/EXIT
SB4 4
RJ RCT READ CHANNEL TABLES
SA4 CBUF+CTALL*2 GET CHANNEL CONTROLWARE ENTRY
SX6 B0+ INITIALIZE CHANNEL NUMBER
SA6 CME CLEAR CONTROL MODULE EST ORDINAL
SA6 CMQ CLEAR CONTROL MODULE EQUIPMENT NUMBER
SCN1 SB4 B4-B1
PL X4,SCN2 IF NO CONTROLWARE LOAD REQUESTED
LX2 X4,B1
PL X2,SCN7 IF NOT LOAD IN PROGRESS
SCN2 LX4 12
SX6 X6+B1 ADVANCE CHANNEL NUMBER
PL B4,SCN1 IF MORE ENTRIES IN WORD
SA4 A4+1
SB4 4
SB2 A4-CBUF-CTALL*3
NE B2,SCN1 IF MORE CHANNELS IN TABLE
* SCAN EST FOR LOAD REQUEST FOR CONTROL MODULE.
SA4 ESTW GET LAST EST ORDINAL + 1
MX6 -12
LX4 -24
BX4 -X6*X4
SB3 X4
MX7 -11
R= B4,ESTE EST ENTRY SIZE
SX5 2RCM CONTROL MODULE MNEMONIC
SB7 CBUF
SX0 100B
SB5 B7+X0 END OF BUFFER
LX0 18
SCN3 SB6 B7-B4
SA7 B6+B4 SET LOW CORE READ FLAG FOR *RSB*
SYSTEM RSB,R,SCNA,0 READ NEXT 100B WORDS OF EST
SA4 SCNA ADVANCE EST BLOCK IN *RSB* CALL
IX6 X4+X0
SA6 A4
SCN4 SB6 B6+B4
EQ B6,B5,SCN3 IF END OF BUFFER
SA4 B6 READ WORD *EQDE* OF EST ENTRY
ERRNZ EQDE CODE ASSUMES *EQDE* = 0
SA2 A4+B1
ERRNZ EQAE-1 CODE ASSUMES *EQAE* = 1
LX4 -12
BX6 -X7*X4
BX6 X6-X5
LX2 59-35
NZ X6,SCN5 IF NOT CONTROL MODULE
PL X2,SCN5 IF RELOAD NOT REQUESTED
LX2 35-34
PL X2,SCN6 IF LOAD NOT IN PROGRESS
SCN5 SB2 B2+1 INCREMENT EST ORDINAL
NE B2,B3,SCN4 IF NOT END OF EST
SX0 RC3 * NO CHANNEL LOAD REQUEST.*
EQ ELP PROCESS ERROR
SCN6 MX0 -5 SET CONTROLWARE TYPE
LX2 11
BX2 -X0*X2 GET RECORD NAME TABLE INDEX
MX0 -3 SAVE EQUIPMENT NUMBER
LX4 3
BX6 -X0*X4
SA6 CMQ
SA2 X2+TCWT
BX6 X2
SX7 B2 SET EST ORDINAL
SA6 CRN SET RECORD NAME
SA7 CME
SX1 X7+1000B FORCE LEADING ZERO-FILL
RJ COD CONVERT TO DISPLAY CODE
LX6 42-0
MX0 18
BX6 X0*X6
SA6 CMES
SX6 HI0106
EQ SCN8 SET BML MESSAGE SYMPTOM CODE
SCNA VFD 12/0,12/100B,18/0,18/CBUF
VCD SPACE 4,15
** VCD - VERIFY CONTROLWARE DUMP.
*
* EXIT CONTROLLER MEMORY DUMP VERIFIED WITH CONTROLWARE
* RECORD AND DUMP FILE WRITTEN.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - ALL.
* B - 2, 3, 4, 5.
*
* MACROS MESSAGE, WRITER.
VCD SUBR ENTRY/EXIT
SA1 DUMP
ZR X1,VCDX IF NO DUMP REQUESTED
MX2 -8
LX1 -1
BX5 -X2*X1 DUMP RESPONSE CODE
SA0 B1 SET ABORT FLAG
SB5 X5-TDMAL
SA1 TDMA+X5 GET MESSAGE ADDRESS
NG B5,VCD0 IF VALID RESPONSE CODE
SA1 TDMA+DR5 SET INCORRECT *1LC* RESPONSE MESSAGE
VCD0 SB3 12
MESSAGE X1,0 ISSUE DUMP STATUS MESSAGE TO DAYFILE
NZ X5,VCDX IF NOT DUMP COMPLETE
SA4 FWC GET FWA CONTROLWARE IN LOAD BUFFER
SA5 DBUF+FDWI GET FIRST WORD OF DUMP TO COMPARE
SA4 X4+FLWI GET FIRST LOAD WORD (SKIP DIAGNOSTICS)
LX5 FDBI*12+12
SB5 60-FDBI*12-12
LX4 FLBI*12+12
SB4 60-FLBI*12-12
MX3 -12
SB2 B0
VCD1 BX2 X4-X5 COMPARE DUMP AND LOAD CONTROLWARE
BX2 -X3*X2
ZR X2,VCD4 IF BYTE COMPARES
CX6 X2
AX2 1
SX6 X6-1
SX7 17B INDICATE MULTIPLE BITS DID NOT VERIFY
NZ X6,VCD3 IF MULTIPLE BIT FAILURE
SX7 10B INDICATE BIT 0 DID NOT VERIFY
ZR X2,VCD3 IF BIT 0 FAILURE
SX7 B0+
VCD2 AX2 1 LOCATE FAILING BIT POSITION
SX7 X7+B1
NZ X2,VCD2 IF BIT NOT LOCATED
VCD3 LX7 8
BX5 X5+X7
LX7 X5,B5
SA7 A5
VCD4 SB4 B4-B3
LX4 12
PL B4,VCD5 IF MORE BYTES IN LOAD WORD
SA4 A4+B1 GET NEXT LOAD WORD
SB4 48
LX4 12
VCD5 SB5 B5-B3
LX5 12
GE B5,B2,VCD1 IF MORE BYTES IN DUMP WORD
SA5 A5+1 GET NEXT DUMP WORD
SB5 60
SX1 A5-DBUF-LDWI
NG X1,VCD5 IF NOT AT LAST WORD
SB2 60-LDBI*12
ZR X1,VCD5 IF COMPARING LAST WORD
SA3 CHAN SET DISPLAY CHANNEL IN DUMP HEADER
SA2 CHID1
SX7 DHDR RESET DUMP FET *FIRST* AND *OUT* TO HEADER
LX3 -12
BX6 X2+X3
SA7 DUMP+3
SA6 CHID2
SA7 DUMP+1
SA6 A2
WRITER A7-B1 WRITE RECORD TO DUMP FILE
SETFS X2,0 CLEAR FILE STATUS
SA0 B0 SET NO ABORT FLAG
EQ VCDX RETURN
TITLE PROCESS NAD CONTROLWARE.
PNC SPACE 4,10
** PNC - PROCESS NAD CONTROLWARE.
PNC BSS 0 ENTRY
RJ RCF READ CONTROLWARE FILE
RJ CCV CALL *CVL* FOR VALIDATION
ZR X1,PNC2 IF ALLOWED ACCESS TO NAD
SX2 X1-VRNM
ZR X2,PNC4 IF NAD NOT FOUND
SX2 X1-VRUS
ZR X2,PNC5 IF NAD IN USE OR ON
SX2 X1-VRSI
ZR X2,PNC1 IF REMOTE NAD STATUS INDETERMINATE
SB6 3RCVL
RJ EMS ISSUE ERROR MESSAGE
ABORT
PNC1 MESSAGE PNCA,2,R *$LOADBC REMOTE NAD LOAD - GO OR DROP.*
RJ PSE PAUSE
* SET UP *NLD* EST ORDINAL AND CHANNEL PARAMETERS.
PNC2 SA1 CVLB+CEO EST ORDINAL (MAY BE ZERO)
MX0 -12
SA2 A1+B1 CHANNEL NUMBER
BX1 -X0*X1
BX2 -X0*X2
LX1 36-0
LX2 48-0
BX6 X1+X2
SA6 NLDB SAVE PARAMETERS FOR *NLD* CALL
RJ CNP CHECK NAD INITIATION PARAMETERS
NZ X6,NER IF ERROR DETECTED BY *NLD*
RJ CNL LOAD NAD CONTROLWARE
SX0 0 INDICATE LOAD COMPLETE FOR *IRM*
RJ IRM ISSUE RESPONSE MESSAGES
MESSAGE MSGB,0 * CONTROLWARE LOAD COMPLETE.*
SA1 NLDB+5
NZ X1,PNC3 IF LOAD FOR REMOTE NAD
SA1 NLDB CLEAR COMPLETION BIT IN PARAMETER BLOCK
MX0 48
BX6 X0*X1
SA6 A1
SYSTEM NLD,R,NLDB,4*100B TURN NAD ON AND UP
PNC3 RJ RET RETURN EQUIPMENT VIA *CVL*
ENDRUN
PNC4 MESSAGE PNCB,,R * DEVICE NOT FOUND.*
ABORT
PNC5 MESSAGE PNCC,,R * DEVICE ON OR IN USE.*
ABORT
PNCA DATA C*$REMOTE NAD LOAD - GO OR DROP.*
PNCB DATA C* VALIDATION DENIED - DEVICE NOT FOUND.*
PNCC DATA C* VALIDATION DENIED - DEVICE ON OR IN USE.*
CCV SPACE 4,15
** CCV - SET UP PARAMETERS AND CALL *CVL*.
*
* ENTRY (RL) = REMOTE NAD LOAD FLAG.
* .EQ. 0, IF LOCAL NAD LOAD.
* .NE. 0, IF REMOTE NAD LOAD.
* (CHN) = CHANNEL NUMBER (IN BINARY).
*
* EXIT (X1) = RESPONSE CODE FROM *CVL*.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - NONE.
*
* CALLS CVL=.
CCV SUBR ENTRY/EXIT
SA1 CHN SET CHANNEL
SA2 CVLB+CCH
BX6 X1+X2
SA6 A2
MX0 1
SA1 RL
LX0 52-59
NZ X1,CCV1 IF REMOTE NAD LOAD
* SET UP PARAMETERS FOR DEDICATED LOCAL NAD ACCESS.
SA2 A2+B1 SET LOCAL NAD DEDICATED ACCESS FLAG
BX6 X0+X2
SA6 A2
SA2 CVLB+CDV SET LOCAL NAD DEVICE CODE
SX3 NAD
BX7 X2+X3
SA7 A2
SA2 A2+B1 SET *LOAD CONTROLWARE* FLAGS
SX3 CTL
BX6 X2+X3
SA6 A2
EQ CCV2 CALL *CVL*
* SET UP PARAMETERS FOR DEDICATED REMOTE NAD ACCESS.
CCV1 SA2 CVLB+CAC SET ACCESS CODE
SA1 ACC
LX0 48-52
BX1 X0+X1
BX6 X1+X2 ACCESS CODE
SA6 A2
SA2 A2+B1 SET TCU ENABLES MASK
SX3 B1
SA4 LTCU
BX2 X0+X2
LX3 4-0
BX7 X2+X3
BX7 X4+X7 MERGE TCU ENABLES FIELD
SA7 A2
SA2 A2+B1 SET REMOTE NAD NUMBER
SX4 RND SET REMOTE NAD DEVICE CODE
LX3 52-4
SA1 RNAD
BX2 X0+X3
SA5 CVLB+CDV
BX7 X4+X5
SA7 A5
BX6 X1+X2
LX4 12 POSITION REMOTE NAD DEVICE CODE
BX6 X4+X6
SA6 A2
CCV2 SX1 CVLB FWA OF PARAMETER BLOCK
SX2 1 FUNCTION REQUEST
RJ CVL= CALL *CVL*
SA1 CVLB+CRC CHECK RESPONSE CODE FROM *CVL*
MX0 -6
LX1 -6
BX1 -X0*X1
EQ CCVX RETURN
CNL SPACE 4,15
** CNL - CALL *NLD* TO LOAD NAD CONTROLWARE.
*
* ENTRY (NLDB - NLDB+5) = *NLD* PARAMETER BLOCK.
* (RL) = REMOTE NAD LOAD FLAG.
* .EQ. 0, IF LOCAL NAD LOAD.
* .EQ. 1, IF REMOTE NAD LOAD.
*
* EXIT NAD CONTROLWARE LOADED.
*
* ERROR TO *NER*, IF *NLD* DETECTED ERROR.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - NONE.
*
* MACROS MOVE, SYSTEM.
CNL SUBR ENTRY/EXIT
SA1 NLDB CLEAR COMPLETION BIT
MX0 48
BX6 X0*X1
SA6 A1
* ENSURE INITIALIZATION PARAMETERS START ON NAD WORD BOUNDARY.
SA1 CWL GET CONTROLWARE LENGTH
BX7 X7-X7
SA4 LWC LWA+1 OF CONTROLWARE
LX1 59-0
PL X1,CNL1 IF EVEN NUMBER OF CM WORDS
SA7 X4 APPEND ZERO WORD AFTER CONTROLWARE
SX4 X4+B1
CNL1 SX6 X4+LNADIP ADD NAD INITIALIZATION PARAMETERS
SA6 NLDB+2 SET *IN*
SA1 FWC SET *OUT* = *FIRST* = FWA OF CONTROLWARE
BX7 X1
SA7 A6+B1 *OUT*
SA7 A6-B1 *FIRST*
SX6 X6+B1 SET *LIMIT*
SA6 A6+2
SA3 RL
ZR X3,CNL2 IF LOCAL NAD LOAD
SA1 ACC ACCESS CODE
SA2 RNAD REMOTE NAD NUMBER
LX1 16-0
SA3 LTCU LOGICAL TCU ENABLES
LX2 8-0
BX6 X1+X3
BX6 X2+X6
SA6 NLDB+5
CNL2 MOVE LNADIP,NADIP,X4
SYSTEM NLD,R,NLDB,1*100B
SA1 NLDB CHECK *NLD* RESPONSE CODE
MX0 -6
LX1 -6
BX1 -X0*X1
ZR X1,CNLX IF NO ERROR
EQ NER ISSUE ERROR MESSAGE AND ABORT
CNP SPACE 4,15
** CNP - CHECK NAD INITIATION PARAMETERS.
*
* EXIT (X6) = 0, IF NAD READY FOR FINAL LOAD.
* (X6) .GT. 0, IF *NLD* ERROR.
*
* USES X - 0, 1, 2, 5, 6.
* A - 1, 6.
* B - NONE.
*
* CALLS CNL, FNP, FNS, RET, SNP.
*
* MACROS ABORT, MESSAGE, NIPADD, NSTADD, SYSTEM.
CNP SUBR ENTRY/EXIT
NIPADD WNMS GET SPECIFIED NAD MEMORY SIZE
RJ FNP
NZ X6,CNP6 IF MEMORY SIZE SPECIFIED
SX6 DNMS SET DEFAULT NAD MEMORY SIZE
NIPADD WNMS
RJ SNP
NIPADD WMNP GET MAXIMUM NUMBER OF PATHS
RJ FNP
SX5 X6+B1 SAVE MAXIMUM NUMBER OF PATHS + 1
NIPADD WIBC GET INTERNAL BUFFER COUNT
RJ FNP
IX6 X6-X5
PL X6,CNP1 IF INTERNAL BUFFER COUNT .GT. PATHS
BX6 X5
NIPADD WIBC RESET INTERNAL BUFFER COUNT
RJ SNP
CNP1 SX5 DCBC
NIPADD WCBC GET CONTROLWARE MESSAGE BUFFER COUNT
RJ FNP
IX6 X6-X5
PL X6,CNP2 IF COUNT .GE. DEFAULT
BX6 X5
NIPADD WCBC SET DEFAULT COUNT
RJ SNP
CNP2 SX5 DTBC
NIPADD WTBC GET TYPE 1 BUFFER COUNT
RJ FNP
IX6 X6-X5
PL X6,CNP3 IF COUNT .GE. DEFAULT
BX6 X5
NIPADD WTBC SET DEFAULT TYPE 1 BUFFER COUNT
RJ SNP
CNP3 RJ CNL CALL *NLD* TO LOAD CONTROLWARE
SA1 NLDB SET UP NAD STATUS PARAMETER BLOCK
MX6 48
BX6 X6*X1
SA6 NADSTAT
SA1 NLDB+5 REMOTE NAD ADDRESS
BX6 X1
SA6 NADSTAT+5
SYSTEM NLD,R,NADSTAT,3*100B CALL *NLD*
SA1 NADSTAT CHECK *NLD* RESPONSE CODE
MX0 -6
LX1 -6
BX6 -X0*X1
BX1 X6 SAVE STATUS IF *NLD* ERROR
NZ X6,CNPX IF *NLD* ERROR
NSTADD WAMS GET ACTUAL MEMORY SIZE FROM STATUS
RJ FNS
SX5 X6-DNMS
ZR X5,CNP4 IF SAME AS DEFAULT SIZE
NG X5,CNP7 IF ACTUAL .LT. DEFAULT
NIPADD WNMS RESET NAD MEMORY SIZE
RJ SNP
CNP4 NSTADD WUNM GET UNUSED MEMORY FROM STATUS
RJ FNS
IX5 X5+X6 UNUSED MEMORY + (ACTUAL-DEFAULT)
SX2 LTBC TYPE 1 BUFFER SIZE
IX6 X5-X2
NG X6,CNP5 IF NO ROOM FOR MORE TYPE 1 BUFFERS
BX6 X5
IX1 X6/X2 ADDITIONAL MEMORY USED
SX2 LTBC TYPE 1 BUFFER SIZE
IX2 X2*X1 ADDITIONAL MEMORY USED
IX5 X5-X2 REMAINING UNUSED MEMORY
NIPADD WTBC GET CURRENT TYPE 1 BUFFER COUNT
RJ FNP
IX6 X6+X1 INCREMENT COUNT
NIPADD WTBC RESET TYPE 1 BUFFER COUNT
RJ SNP
CNP5 SX2 LCBC CONTROLWARE MESSAGE BUFFER SIZE
IX6 X5-X2
NG X6,CNP6 IF NO ROOM FOR MORE BUFFERS
IX1 X5/X2 ADDITIONAL MESSAGE BUFFERS
NIPADD WCBC GET CURRENT BUFFER COUNT
RJ FNP
IX6 X6+X1 INCREMENT COUNT
NIPADD WCBC RESET MESSAGE BUFFER COUNT
RJ SNP
CNP6 BX6 X6-X6
EQ CNPX RETURN
CNP7 MESSAGE CNPA,0 * LOADBC ABORT - ...*
RJ RET RETURN NAD EQUIPMENT
ABORT
CNPA DATA C* LOADBC ABORT - BAD INITIATION PARAMETERS.*
EMS SPACE 4,15
** EMS - ISSUE ERROR MESSAGE.
*
* ENTRY (B6) = PP NAME IN DISPLAY CODE.
* (X1) = ERROR CODE.
*
* EXIT DAYFILE MESSAGE ISSUED.
*
* USES X - 1.
* A - NONE.
* B - 2, 5.
*
* CALLS COD, SNM.
*
* MACROS MESSAGE.
EMS SUBR ENTRY/EXIT
RJ COD CONVERT TO OCTAL DISPLAY CODE
SB2 1RY INSERT ERROR CODE INTO MESSAGE
SB5 EMSA
BX1 X4
RJ SNM
SX1 B6 INSERT PP NAME INTO MESSAGE
SB2 1RX
LX1 59-17
SB5 EMSA
RJ SNM
MESSAGE EMSA,0 *LOADBC ABORT - ...*
EQ EMSX RETURN
EMSA DATA C* LOADBC ABORT - XXX ERROR CODE = YYY.*
FNP SPACE 4,15
** FNP - FETCH NAD INITIATION PARAMETER.
*
* (NAD INITIATION PARAMETERS ARE 16-BIT VALUES DEFINED IN THE
* *NADIP* TABLE, 2.5 PARAMETERS PER CM WORD.)
*
* ENTRY (X2) = *NADIP* TABLE WORD.
* (B2) = SHIFT COUNT TO POSITION FIRST BYTE.
*
* EXIT (X6) = 44/0,16/VALUE.
*
* USES X - 0, 2, 6.
* A - 2.
* B - 2.
FNP SUBR ENTRY/EXIT
MX0 -8
LX2 B2,X2 POSITION UPPER 8 BITS
SB2 B2-60
BX6 -X0*X2 EXTRACT UPPER 8 BITS
NG B2,FNP1 IF PARAMETER NOT DIVIDED
SA2 A2+B1 GET NEXT WORD
FNP1 LX2 12 POSITION LOWER 8 BITS
LX6 8
BX0 -X0*X2 EXTRACT LOWER BITS
IX6 X0+X6 COMBINE UPPER AND LOWER BITS
EQ FNPX RETURN
FNS SPACE 4,15
** FNS - FETCH NAD STATUS WORD.
*
* ENTRY (X2) = WORD CONTAINING FIRST DIGIT OF VALUE.
* (B2) = SHIFT COUNT FOR POSITIONING DIGIT.
*
* EXIT (X6) = 44/0,16/NAD STATUS WORD.
*
* USES X - 0, 2, 3, 6.
* A - 2.
* B - 2, 3, 4.
FNS SUBR ENTRY/EXIT
SB4 4
LX2 B2,X2 POSITION FIRST DIGIT
SB3 B4-B1 DIGIT COUNT
MX0 4
SX6 B0 CLEAR RESULT
FNS1 BX3 X0*X2 NEXT DIGIT
SB3 B3-B1
BX6 X6+X3
SB2 B2+B4 INCREMENT POSITION
LX6 4
NG B3,FNSX IF ALL DIGITS EXTRACTED
LX2 4 POSITION NEXT DIGIT
SX3 B2-60
NG X3,FNS1 IF STILL IN SAME WORD
SA2 A2+B1 GET NEXT WORD
SB2 B0 RESET POSITION
EQ FNS1 CONTINUE
NER SPACE 4,10
** NER - PROCESS *NLD* ERROR.
*
* ENTRY (X1) = *NLD* ERROR RESPONSE CODE.
*
* EXIT NAD IS RELEASED, AND JOB IS ABORTED.
*
* USES X - NONE.
* A - NONE.
* B - 6.
*
* CALLS EMS, RET.
*
* MACROS ABORT.
NER BSS 0
SB6 3RNLD
RJ EMS ISSUE ERROR MESSAGE
RJ RET RETURN NAD EQUIPMENT
ABORT
PSE SPACE 4,10
** PSE - PAUSE FOR OPERATOR GO/DROP.
*
* USES X - 1, 6.
* A - 1, 6.
* B - NONE.
*
* MACROS RECALL.
PSE SUBR ENTRY/EXIT
SA1 B0 SET PAUSE FLAG IN RA+0
SX6 10000B
BX6 X1+X6
SA6 A1
PSE1 RECALL
SA1 B0 CHECK PAUSE FLAG IN RA+0
SX6 10000B
BX1 X1*X6
NZ X1,PSE1 IF PAUSE FLAG NOT CLEARED
EQ PSEX EXIT
RET SPACE 4,10
** RET - RETURN NAD EQUIPMENT VIA *CVL*.
*
* EXIT ANY EQUIPMENT ASSIGNED TO JOB HAS BEEN RELEASED.
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 1, 3, 6, 7.
* B - NONE.
*
* CALLS CVL=.
RET SUBR ENTRY/EXIT
SA1 CVLB+CEO EST ORDINAL
MX0 -12
BX6 -X0*X1
ZR X6,RETX IF NO EQUIPMENT ASSIGNED
SA3 CVLB+CRC
MX2 1 SET DATA-IN-WORD FLAG
BX7 X0*X3 CLEAR RESPONSE CODE/COMPLETION BIT
LX2 48-59
SA7 A3
BX6 X2+X6
SA6 A1
SX7 RTNU SET RETURN EQUIPMENT FLAG
SA7 CVLB+CFC
SX1 CVLB FWA OF PARAMETER BLOCK
SX2 1 FUNCTION REQUEST
RJ CVL= CALL *CVL*
EQ RETX RETURN
SNP SPACE 4,15
** SNP - SET NAD INITIATION PARAMETER.
*
* ENTRY (X2) = WORD CONTAINING FIRST BYTE OF VALUE.
* (X6) = 44/0, 16/NEW VALUE.
* (B2) = SHIFT COUNT FOR POSITIONING FIRST BYTE.
*
* EXIT NAD PARAMETER RESET.
*
* USES X - 0, 2, 6.
* A - 2, 6.
* B - 2.
SNP SUBR ENTRY/EXIT
MX0 -12
LX6 -8 POSITION UPPER 8 BITS OF NEW VALUE
LX2 B2,X2 POSITION WORD
BX2 X0*X2 CLEAR OLD VALUE
SB2 B2-60
BX0 -X0*X6
IX2 X0+X2 SET NEW VALUE (UPPER 8)
BX0 -X0*X6 SAVE NEW VALUE (LOWER 8)
LX0 -4
LT B2,B0,SNP1 IF PARAMETER NOT DIVIDED
BX6 X2
SA6 A2 STORE FIRST WORD (UPPER 8)
SA2 A2+B1 GET NEXT WORD (LOWER 8)
SNP1 MX6 12
BX2 -X6*X2 CLEAR OLD VALUE (LOWER BYTE)
SB2 -B2 COMPLEMENT SHIFT COUNT
BX0 X0+X2 INSERT NEW VALUE (LOWER 8)
LX6 B2,X0
SA6 A2 STORE WORD
EQ SNPX RETURN
TITLE COMMON DECKS.
* COMMON DECKS.
*CALL COMCARG
*CALL COMCCIO
*CALL COMCCOD
*CALL COMCCVL
*CALL COMCDXB
*CALL COMCHXB
*CALL COMCLFM
*CALL COMCMVE
*CALL COMCSNM
*CALL COMCSYS
*CALL COMCUSB
SPACE 4,10
USE LITS
USE *
TITLE BUFFER ALLOCATION.
* BUFFER ALLOCATION.
CBUF BSS 100B CHANNEL TABLES / EST BUFFER
ERRNG *-CBUF-CTALL*3 CHANNEL TABLES OVERFLOW BUFFER
DHDR BSS 0 DUMP FILE HEADER
VFD 12/7700B,12/16B,36/0
CHID1 VFD 12/2HCH,12/0,36/0 CONTROLLER CHANNEL NUMBER
SYDT1 BSSZ 1 SYSTEM DATE ( YY/MM/DD.)
SYTM1 BSSZ 1 SYSTEM TIME ( HH.MM.SS.)
BSSZ 11
CHID2 VFD 12/2HCH,12/0,36/0 CONTROLLER CHANNEL NUMBER
VFD 12/2HID,48/5
SYVR BSSZ 2 SYSTEM VERSION
SYDT2 BSSZ 1 SYSTEM DATE
SYTM2 BSSZ 1 SYSTEM TIME
BSSZ 1
VFD 12/2HBC,48/0
DBUF EQU * CONTROLLER DUMP BUFFER
BUF EQU DBUF+DBUFL CONTROLLER LOAD BUFFER
RFL= EQU BUF+BUFL+4 FIELD LENGTH
TITLE PRESET.
PRS SPACE 4,20
** PRS - PRESET PROGRAM.
*
* EXIT (CHN) = CHANNEL, IF SPECIFIED ON COMMAND.
* (CHAN) = DISPLAY CHANNEL, IF SPECIFIED ON COMMAND.
* (CME) = CONTROL MODULE EST ORDINAL, IF SPECIFIED.
* (CMES) = DISPLAY EST ORDINAL, IF SPECIFIED.
* (CMQ) = CONTROL MODULE EQUIPMENT NUMBER.
* (CRN) = CONTROLWARE RECORD NAME.
* (DRCF) = 0 IF DRIVER CALL.
* (ESTW) = EST POINTER WORD *ESTP*.
* DUMP FILE HEADER PRESET IF CONTROLLER DUMP REQUESTED.
* TO *PNC* IF TO LOAD NAD CONTROLWARE.
* (RL) .NE. 0 IF REMOTE NAD LOAD.
*
* ERROR EXIT TO *ELP* WITH (X0) = ERROR RESPONSE CODE.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 4, 5, 7.
*
* CALLS ARG, CCS, DXB, HXB.
*
* MACROS CLOCK, DATE, MESSAGE, SYSTEM.
PRS6 RJ CNS CHECK IF NAD ONLY PARAMETER SPECIFIED
SA1 DUMP
ZR X1,PRSX IF NO CONTROLLER DUMP REQUESTED
DATE PRSA GET SYSTEM DATE
SA1 PRSA
BX6 X1
SA6 SYDT1 SET SYSTEM DATE IN DUMP FILE HEADER
SA6 SYDT2
CLOCK PRSA GET SYSTEM TIME
SA1 PRSA
BX6 X1
MX7 1
SA6 SYTM1 SET SYSTEM TIME IN DUMP FILE HEADER
SA6 SYTM2
SA7 A1 READ FROM LOW CORE
SYSTEM RSB,R,PRSC,0 GET SYSTEM VERSION
SA1 PRSA SET SYSTEM VERSION IN DUMP FILE HEADER
SA2 A1+B1
BX6 X1
LX7 X2
SA6 SYVR
SA7 A6+B1
PRS SUBR ENTRY/EXIT
SA1 XJPR
LX1 59-23
MX2 -6
BX1 -X2*X1
SX0 RC1 * USER NOT SYSTEM ORIGIN.*
ERRNZ SYOT CODE DEPENDS ON VALUE
NZ X1,ELP IF USER IS NOT SYSTEM ORIGIN
SA1 ACTR GET ARGUMENT COUNT
SA4 ARGR ADDRESS OF FIRST PARAMETER
SB5 TLCA *LOADBC* ARGUMENT TABLE
SB4 X1
RJ ARG PROCESS ARGUMENTS
NZ X1,PRS2 IF ARGUMENT ERROR
SYSTEM RSB,R,PRSB,0 GET FWA CHANNEL TABLES
SA1 PRSA
MX0 -18
AX1 12
BX6 -X0*X1
SA1 RCTA
LX6 18
BX6 X1+X6
SA6 A1
SYSTEM RSB,R,PRSD,0 GET EST POINTER WORD *ESTP*
SA1 ESTW
AX1 36
BX6 -X0*X1
SA1 SCNA PLACE EST FWA IN *RSB* CALL
LX6 18
BX6 X6+X1
SA6 A1
SA1 CMEF
PL X1,PRS0 IF CONTROL MODULE NOT SPECIFIED
SA1 CHFL
NG X1,PRS2 IF CHANNEL PARAMETER SPECIFIED
SA1 A1+B1
SX7 B1 INDICATE NOT DRIVER CALL
SA7 DRCF
NG X1,PRS2 IF DUMP FILE NAME SPECIFIED
SA5 CMES CONVERT EST ORDINAL
RJ CNS CHECK IF NAD ONLY PARAMETER SPECIFIED
SB7 B0+ SET OCTAL CONVERSION
RJ DXB
SX0 RC20 * INCORRECT EST ORDINAL.*
NZ X4,ELP IF CONVERSION ERROR
SA6 CME
SA5 ESTW GET LAST EST ORDINAL + 1
MX7 -12
LX5 36
BX7 -X7*X5
IX7 X6-X7
PL X7,ELP IF EST ORDINAL TOO BIG
SX7 X6-NOPE
NG X7,ELP IF EST ORDINAL TOO SMALL
MX7 -24 ISOLATE EST FWA
AX5 12
BX2 -X7*X5
ERRNZ ESTE-2 CODE ASSUMES *ESTE* = 2
LX6 1
IX6 X2+X6
LX6 18
SA1 PRSE SET EST ENTRY ADDRESS IN *RSB* WORD
BX6 X6+X1
SA6 A1
SA7 PRSA SET LOW CORE READ FLAG FOR *RSB*
SX5 2RCM
SYSTEM RSB,R,PRSE,0 GET EST ENTRY
ERRNZ EQDE CODE ASSUMES *EQDE* = 0
SA1 A7
SA2 A1+B1
ERRNZ EQAE-1 CODE ASSUMES *EQAE* = 1
MX0 -3 SAVE EQUIPMENT NUMBER
AX1 9
BX6 -X0*X1
SA6 CMQ
MX6 -11 GET MNEMONIC
AX1 3
BX6 -X6*X1
BX6 X6-X5
SX0 RC21 * NOT CONTROL MODULE EST ORDINAL.*
MX7 -5
NZ X6,ELP IF NOT *CM* DEVICE
AX2 24 GET CONTROLWARE TYPE
BX1 -X7*X2
SA1 X1+TCWT GET CONTROLWARE RECORD NAME
BX6 X1
SA6 CRN
EQ PRSX RETURN
PRS0 R= X6,HI0105-HI0102
SA5 CHAN CONVERT CHANNEL NUMBER
MX7 -6
BX2 X5
LX2 6
BX0 -X7*X2
SB6 -34B SET MAXIMUM CHANNEL NUMBER
SX0 X0-1RC
NZ X0,PRS0.1 IF NOT A CONCURRENT CHANNEL
BX5 X7*X2
SX7 40B SET CONCURRENT CHANNEL FLAG
SB6 -12B SET MAXIMUM CHANNEL NUMBER
SA7 CCHF
PRS0.1 SA1 CHFL
PL X1,PRS6 IF CHANNEL PARAMETER NOT SPECIFIED
SA1 BMLM+1 SET OPERATOR INITIATED LOAD
LX6 36
IX6 X1-X6
SA6 A1
SX7 B1 INDICATE NOT DRIVER CALL
SA7 DRCF
RJ DXB
SX0 RC6 * INCORRECT CHANNEL NUMBER.*
NZ X4,ELP IF CONVERSION ERROR
SA1 CCHF
SX5 X6+B6
IX6 X6+X1
PL X5,ELP IF NOT HARDWARE CHANNEL
SA6 CHN
LX6 12 SET CHANNEL IN *CPM* CALL BLOCK
SA6 LBCD
RJ CCS CHECK CHANNEL STATUS
SX5 X5-LNFL
NZ X5,PRS6 IF NOT NAD CHANNEL
SA3 TYFL
SA1 TYPE NAD TYPE
MX0 18
BX1 X0*X1
BX7 X3
SA7 TYPN SAVE NAD TYPE FLAG
SA2 TRCT TABLE OF REMOTE CONTROLWARE TYPES
PL X3,PRS3 IF NO NAD TYPE SPECIFIED
PRS1 BX2 X1-X2
ZR X2,PRS3 IF MATCH ON NAD TYPE
SA2 A2+B1
NZ X2,PRS1 IF NOT END OF TABLE
PRS2 SX0 RC4 * ERROR IN PARAMETERS.*
EQ ELP PROCESS ERROR
PRS3 SA5 LTCU VALIDATE LTCU ENABLES
ZR X5,PRS5 IF NOT REMOTE NAD LOAD
SB7 B0
RJ DXB
NZ X4,PRS2 IF PARAMETER ERROR
SX7 -1111B VALIDATE LTCU ENABLES
BX5 X7*X6
NZ X5,PRS2 IF PARAMETER ERROR
MX0 4
SA7 RL SET REMOTE NAD LOAD FLAG
LX0 1
BX7 X0*X6
PRS4 LX0 1 CHANGE OCTAL DIGITS TO BINARY DIGITS
AX6 2
BX7 X7+X6
BX6 -X0*X6
NG X0,PRS4 IF MORE DIGITS TO PROCESS
BX7 X0*X7
SA7 A5
SA5 RNAD
ZR X5,PRS2 IF NO REMOTE NAD ADDRESS SPECIFIED
RJ HXB
NZ X4,PRS2 IF PARAMETER ERROR
SX5 X6-0#100
PL X5,PRS2 IF PARAMETER ERROR
SA6 A5+
SA5 ACC
ZR X5,PRS5 IF NO ACCESS CODE SPECIFIED
RJ HXB
NZ X4,PRS2 IF PARAMETER ERROR
SX5 X6-0#10000
PL X5,PRS2 IF PARAMETER ERROR
SA6 A5+
PRS5 SA1 DUMP
ZR X1,PNC IF NO CONTROLLER DUMP REQUESTED
MESSAGE DRM3,0 * NOT CORRECT CONTROLLER TYPE FOR DUMP.*
EQ PNC PROCESS NAD CONTROLWARE LOAD
PRSA CON -1 TEMPORARY BUFFER
PRSB VFD 12/0,12/1,18/CHTP,18/PRSA CHANNEL TABLE ADDRESS
PRSC VFD 12/0,12/2,18/SVNL,18/PRSA SYSTEM VERSION
PRSD VFD 12/0,12/1,18/ESTP,18/ESTW EST ADDRESS
PRSE VFD 12/0,12/1,18/0,18/PRSA CONTROL MODULE EST ENTRY
CNS SPACE 4,10
** CNS - CHECK IF NAD ONLY PARAMETER SPECIFIED.
*
* EXIT TO *PRS2* IF NAD ONLY PARAMETER SPECIFIED.
*
* USES X - 1.
* A - 1.
CNS SUBR ENTRY/EXIT
SA1 NOLP-1
CNS1 SA1 A1+B1
NG X1,PRS2 IF NAD ONLY PARAMETER SPECIFIED
NZ X1,CNS1 IF NOT END OF ARGUMENT TABLE
EQ CNSX RETURN
TLCA SPACE 4,10
** TLCA - TABLE OF *LOADBC* ARGUMENTS.
TLCA BSS 0
CHFL EQU * CHANNEL FLAG
C ARG CHAN,CHAN,400B
D ARG DUMP,DUMP
F ARG IN,IN
CMEF EQU * CONTROL MODULE FLAG
EQ ARG CMES,CMES
NOLP EQU * FOLLOWING ARE NAD ONLY *LOADBC* PARAMETERS
AC ARG ACC,ACC
LT ARG LTCU,LTCU
ND ARG RNAD,RNAD,400B
TYFL EQU * NAD TYPE FLAG
TY ARG TYPE,TYPE
ARG END OF ARGUMENT TABLE
TRCT SPACE 4,10
** TRCT - TABLE OF REMOTE CONTROLWARE TYPES.
TRCT BSS 0
DATA 0L170 CYBER 170
DATA 0LIBM IBM
DATA 0LMIN COMMON MINICOMPUTER
DATA 0L200 CYBER 20X
CON 0 END OF TABLE
SPACE 4,10
END