IDENT 0CT,/REL/LCCX
PERIPH J
BASE MIXED
SST
*COMMENT 0CT - LOAD CTS/CCC CONTROLWARE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE 0CT - LOAD CTS/CCC CONTROLWARE
SPACE 4,10
*** 0CT - LOAD CTS/CCC CONTROLWARE.
*
* P. C. SMITH. 92/04/21.
SPACE 4,10
*** *0CT* IS A LOCATION FREE ROUTINE CALLED BY *1MT*
* TO LOAD CTS/CCC CONTROLWARE ON *MAGNET* INTITIATION, AND
* DURING TAPE ERROR RECOVERY.
SPACE 4,10
*** ENTRY CONDITIONS.
*
* (CN) = CHANNEL NUMBER.
* (CN+1) = ADDRESS OF 100B CM WORD BUFFER.
*
*
* USES CM - CM+4, CN - CN+4, T1 - T1+4.
SPACE 4,10
*** EXIT CONDITIONS.
*
* (CN) = 0 IF NO ERROR.
* (CN) = ERROR CODE IF ERROR.
* (CN) = 7777 IF MICROCODE NOT FOUND.
* (CN+1) = LAST FUNCTION ISSUED TO CCC.
* (CN+2) = MICROCODE REVISION.
SPACE 4,10
**** DIRECT LOCATION ASSIGNMENTS.
DS EQU 24 DEVICE STATUS
CN EQU 62 - 66 CM BUFFER
SPACE 4,10
* ASSEMBLY CONSTANTS.
CH EQU 13 CHANNEL NUMBER
F0012 EQU 0012 GENERAL STATUS FUNCTION
F0414 EQU 0414 AUTOLOAD FUNCTION
****
SPACE 4,10
** COMMON DECKS.
*CALL COMPMAC
QUAL MTX
*CALL COMSMTX
QUAL *
*CALL COMSZOL
REL$ SET 1 DEFINE FULL RELOCATION
*CALL COMPRLI
*CALL COMPCHM
TITLE MAIN PROGRAM.
LCC SPACE 4,10
** LCC - MAIN ROUTINE.
LCC SUBR ENTRY/EXIT
REL$ EQU 1 SET FULL RELOCATION
RJM. REL,LA RELOCATE ADDRESSES
RJM MCI MODIFY CHANNEL INSTRUCTIONS
LDD CN+1 SET CONTROLWARE BUFFER ADDRESS
STM LCCA
STM LCCB
LCC1 DELAY
LDK PLDP CHECK PERIPHERAL DIRECTORY POINTER
CRD CM
LDD CM
ADD CM+1
ZJN LCC1 IF SYSEDIT IN PROGRESS
* FIND CCC MICROCODE.
LDN ZERL
CRD CM
LDD MA PUT CONTROLWARE ID IN MESSAGE BUFFER
CWM LCCE,ON
MONITOR SCDM SEARCH CENTRAL DIRECTORY
LDD CM+3
SHN 14
LMD CM+4
CRD CM READ *PST* ENTRY
LDD CM+1
SHN 21-12
PJP LCC5 IF NOT CM RESIDENT
LDD CM+3 GET ADDRESS OF *RCL* ENTRY
SHN 14
LMD CM+4
ADN 1
CRD CN READ 5200 RECORD HEADER
ADN 6
CRD T1
SBN 5 SET FWA OF 5200 RECORD DATA
STD CM+4
SHN -14
STD CM+3
LCN 1 ADJUST WORD COUNT FOR HEADER
RAD CN+4
LDD T3
STD CN+2 SAVE MICROCODE REVISION
* LOAD CCC MICROCODE.
LDC F0414 AUTOLOAD FUNCTION
RJM ICF ISSUE CTS FUNCTION
NJP LCC6 IF FUNCTION TIMEOUT
ACN CH
LDD CN+4
LCC2 SBD HN
MJN LCC3 IF LESS THAN 100B WORDS LEFT
LDN 0
LCC3 ADD HN
STD T1
LDD CM+3
SHN 14
LMD CM+4
CRM. **,T1 READ FROM CM
LCCA EQU *-1 (ADDRESS OF CONTROLWARE BUFFER)
STD CM+4 UPDATE CM ADDRESS
SHN -14
STD CM+3
LDD T1 SET BYTES TO TRANSFER
SHN 2
ADD T1
OAM **,CH LOAD BLOCK OF CONTROLWARE TO CCC
LCCB EQU *-1 (ADDRESS OF CONTROLWARE BUFFER)
FJM *,CH IF TRANSFER NOT COMPLETE
LCCC EQU *-1 (ADDRESS TO BE RELOCATED)
NJN LCC4 IF INCOMPLETE TRANSFER
LDD CN+4
SBD T1
STD CN+4
NJN LCC2 IF MORE WORDS TO TRANSFER
LDN F0012 GENERAL STATUS FUNCTION
RJM ICF ISSUE FUNCTION
NJN LCC6 IF FUNCTION TIMEOUT
ACN CH
LDN 1
IAM DS,CH INPUT GENERAL STATUS
NJN LCC4 IF WORD NOT RECEIVED
SFM LCC4,CH IF ERROR FLAG SET
LCCD EQU *-1 (ADDRESS TO BE RELOCATED)
LDD DS
SHN 0-13
ZJN LCC6 IF NO ERROR
LCC4 LDN /MTX/CMF CHANNEL MALFUNCTION
UJN LCC6 SAVE ERROR CODE
LCC5 LCN 0 INDICATE MICROCODE NOT FOUND
LCC6 STD CN
LJM LCCX RETURN
LCCE VFD 30/0LMB468,30/0
ICF SPACE 4,10
** ICF - ISSUE CCC/CTS FUNCTION.
*
* ENTRY (A) = FUNCTION.
*
* EXIT (A) = 0 IF NO ERROR.
* (A) = ERROR CODE IF ERROR.
* (CN+1) = FUNCTION THAT WAS ISSUED.
ICF2 LDN 0
ICF SUBR ENTRY/EXIT
DCN CH ENSURE CHANNEL IS INACTIVE
STD CN+1 SAVE FUNCTION
FAN CH ISSUE THE FUNCTION
LCN 0
ICF1 IJM ICF2,CH IF FUNCTION REPLY RECEIVED
ICFA EQU *-1 (ADDRESS TO BE RELOCATED)
SBN 1
NJN ICF1 IF TIMEOUT NOT EXPIRED
LDN /MTX/FRJ FUNCTION REJECT
UJN ICFX RETURN
MCI SPACE 4,10
** MCI - MODIFY CHANNEL INSTRUCTIONS.
*
* ENTRY (CN) = CHANNEL NUMBER.
* (LA) = LOAD ADDRESS.
*
* USES T3.
MCI SUBR ENTRY/EXIT
LDC. MCIA
STD T3 ADDRESS OF CHANNEL TABLE
MCI1 LDI T3 GET ADDRESS OF CHANNEL INSTRUCTION
ZJN MCIX IF END OF CHANNEL TABLE
ADD LA RELOCATE ADDRESS
STD T0
LDI T0
SCN 37
LMD CN SET CHANNEL NUMBER
STI T0
AOD T3
UJN MCI1 CONTINUE MODIFYING CHANNEL INSTRUCTIONS
LIST G
MCIA CHTB CH CHANNEL TABLE
SPACE 4,10
* ASSEMBLE RELOCATION CODE.
*
* NOTE - DUE TO THE INTERACTION OF COMMON DECKS *COMPRLI* AND
* *COMPCHM*, THE ADDRESS OF ANY INSTRUCTION WHICH
* SPECIFIES BOTH A CHANNEL NUMBER AND A RELOCATABLE
* ADDRESS MUST BE MANUALLY ADDED TO THE FOLLOWING TABLE.
HERE
CON LCCC
CON LCCD
CON ICFA
CON 0
SPACE 4,10
* CHECK FOR OVERFLOW.
ERRPL *-ZCTL *0CT* OVERFLOWS CALLING PROGRAM
END