IDENT STL,STL PERIPH BASE MIXED SST .EST SYSCOM *COMMENT STL - SYSTEM TAPE LOADER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE STL - SYSTEM TAPE LOADER. SPACE 4 *** STL - SYSTEM TAPE LOADER. * * G. R. MANSFIELD. 72/02/02. * R. J. THIELEN. 75/12/20. * W. E. GOEBEL. 76/07/12. * P. D. HAAS. 78/06/05. SPACE 4 *** STL IS LOADED INTO PP 2 BY THE SYSTEM INITIALIZATION * PROGRAM. STL LOADS THE REMAINDER OF THE SYSTEM TAPE TO * CENTRAL MEMORY AND MASS STORAGE DEVICES. IT ALSO LOADS * THE PP RESIDENT, THE SYSTEM MONITOR, THE SYSTEM DISPLAY * PROGRAM, AND INITIALIZES RECOVERY RELOAD. SPACE 4 *** OPERATOR MESSAGES. * * REFER TO OPERATORS GUIDE FOR INFORMATION AS TO CAUSE * OF ERROR AND RECOMMENDED CORRECTIVE ACTION. * * *LOADING CXX, RCDNAME.* * *TO CENTRAL MEMORY.* * * *LOADING CXX, RCDNAME.* * *TO CONTROL MODULE.* * * *LOADING CXX, RCDNAME.* * *TO CONTROLLER.* * * *LOADING CXX, RCDNAME.* * *TO FLPP.* * * *AUTOLOAD FAILURE, STXXXX.* * * *EQXXX, 2X PPS REQUIRED.* * * *EQXXX, NO FT CONTROLLER.* * * *MAINTENANCE REGISTER ERROR.* SPACE 4 *** ENTRY CONDITIONS. * * * (T1) = DEADSTART CHANNEL. * (T2) = RECOVERY STATUS. * (CM) = DEADSTART OPTIONS = 8/,2/RA,1/A,1/G. * A = 0 TO ENABLE AUTOLOADING. * = 1 TO DISABLE AUTOLOADING. * G = 0 TO DISABLE GRENADE OPERATION AFTER AUTOLOAD. * = 1 TO ENABLE GRENADE OPERATION AFTER AUTOLOAD. * RA = 0, ALLOW RECOVERY. * RA = 1, CHECKPOINT ALL DEVICES, ABORT LEVEL 3. * RA = 2 OR 3, CHECKPOINT NON-BUFFERED DEVICES, * ABORT LEVEL 3 RECOVERY. * (DRSW) = DEADSTART EQUIPMENT. * (DRSW+1) = FIRST TRACK OF RMS DEADSTART FILE. SPACE 4 ** PROGRAMS CALLED. * * * 0BF - BEGIN FILE. SPACE 4 *CALL COMPMAC *CALL COMSCPS *CALL COMSDSL *CALL COMSDST *CALL COMSEJT QUAL IOU *CALL COMSIOU QUAL * *CALL COMSJCE *CALL COMSMSC QUAL MSP *CALL COMSMSP QUAL * *CALL COMSMTR *CALL COMSPRD *CALL COMSPIM QUAL SCD *CALL COMSSCD QUAL * *CALL COMSSCR *CALL COMSSSD *CALL COMSZOL *CALL COMS176 *CALL COMSHIO *CALL COMPCHM *CALL COMPMRM MRRD EQU /IOU/MRRD MRWT EQU /IOU/MRWT SPACE 4 **** DIRECT LOCATION ASSIGNMENTS. CN EQU 20 - 24 CM WORD BUFFER (5 LOCATIONS) FS EQU 20 - 24 FST ENTRY (0BF) RS EQU 25 RECOVERY STATUS QA EQU 26 FNT ORDINAL (0BQ) * EQU 27 SPARE ZR EQU 30 - 34 CM ZERO WORD (5 LOCATIONS) LL EQU 35 DEADSTART LIBRARY LENGTH CA EQU 36 - 37 CURRENT CENTRAL ADDRESS (2 LOCATIONS) FN EQU 40 - 44 FILE NAME (0BF) WC EQU 42 WORD COUNT OF BLOCK BA EQU 43 PPU BUFFER ADDRESS BL EQU 44 PPU BUFFER LIMIT DH EQU 45 DEADSTART CHANNEL NC EQU 46 NUMBER OF CONTROL POINTS RN EQU 47 REGISTER NUMBER (COMPMRM) RP EQU IR+3 RPL ENTRY COUNT FA EQU 57 FNT ORDINAL (0BF) DP EQU 60 - 64 DATA POINTER (5 LOCATIONS) XA EQU 66 EXCHANGE ADDRESS (FOR CYBER 176 CPU) BC EQU 66 - 67 BLOCK COUNTER **** SPACE 4 * ASSEMBLY CONSTANTS. BUF EQU TPBA TAPE BLOCK BUFFER FWBF EQU BUF FIRMWARE BUFFER FWBFL EQU 1000 FIRMWARE BUFFER LENGTH (CM WORDS) FCCN EQU 0 CONNECT FUNCTION FCOC EQU 10 OPERATION COMPLETE FUNCTION CODE FCGR EQU 11 GRENADE FUNCTION CODE FCGS EQU 12 GENERAL STATUS FUNCTION CODE FCLC EQU 71 LOAD CONTROL MODULE CONTROLWARE FROM PP FCAL EQU 414 AUTOLOAD FUNCTION CODE TITLE MAIN PROGRAM. STL SPACE 4 ** STL - MAIN PROGRAM. ORG PPFW STL RJM PRS PRESET PROGRAM RJM LPP LOAD *MTR* RJM LPP LOAD *DSD* RJM CPM LOAD *CPUMTR* RJM L1M LOAD *MTR* PRESET OVERLAYS TO RPL LDN 1 SET NO PP DROP STD T1 RJM MSFW+1 INITIALIZE PP RESIDENT CC1 DCN. 0 START *MTR* LDN IPRF INITIALIZE *DIO* RESIDENT RJM IDF RJM RTB READ TAPE BLOCK RJM ROV READ OVERLAY *RSL* RJM /RSL/SBA SET OS BOUNDS ADDRESS RJM /RSL/LIB BUILD DEADSTART RPL RJM /RSL/PLD BUILD DEADSTART PLD RJM /RSL/APP ACTIVATE PP-S * LOAD *MTE* FOR MULTI-MAINFRAME VIA LOW SPEED PORT. STLD LDD MA REQUEST PP FOR *MTE* * UJN STL2 (NOT LSPMMF) CWM STLE,ON LDN 1 SELECT NO QUEUING OF PP REQUEST STD CM+1 MONITOR RPPM STL1 LDD CM+1 CHECK *MTE* INPUT REGISTER CRD DP DELAY LDD DP+2 ZJN STL1 IF *MTE* PRESET NOT COMPLETE STM STLF POSSIBLE LINK DEVICE LABEL TRACK SHN 21-13 MJN STL2 IF TRACK NUMBER RATHER THAN ERROR STATUS LDM STLA+3 PRESERVE *DEADSTART ABORT* STATUS FLAGS LPC 3000 ADD DP+2 ADD *MTE* STATUS STM STLA+3 * LOAD DISK CONTROLWARE, FLPP-S AND BUFFERED I/O DRIVERS. STL2 EXECUTE BCL LOAD CONTROLWARE, FLPP-S AND DRIVERS LDD RS CHECK RECOVERY STATUS LPN SYMK ZJN STL3 IF SYSTEM FILE LOAD LDN DPPF&IPPF STL3 LMN IPPF IDLE/DROP *DIO* RJM IDF LDC DSCP+ENRS CHANGE TO DEADSTART CONTROL POINT STD CM+1 LPN 37 STD IR+1 SHN 7 ADN STSW SAVE ROLLOUT STATUS CRD CN CRD DP STD T1 MONITOR CCAM * LDN 0 CLEAR ROLLOUT STATUS TO ALLOW *RPPM* STD DP+2 AOD DP INCLUDE *STL* IN PP COUNT STD CN LDD T1 STORE CP STATUS WORD CWD DP * CALL *RMS* TO RECOVER MASS STORAGE. LDM STLA+3 CHECK ERROR STATUS FLAGS NJN STL3.1 IF ERROR STATUS PRESENT LDM STLF SET LINK DEVICE LABEL TRACK STM STLA+3 STL3.1 LDD MA REQUEST PP FOR *RMS* CWM STLA,ON LDN 1 SELECT NO QUEUING OF PP REQUEST STD CM+1 MONITOR RPPM LDD CM+1 SET ADDRESS OF *RMS* INPUT REGISTER STM STLB+3 AOD CN INCLUDE *RMS* IN PP COUNT LDC 0 STLC EQU *-1 ZJN STL4 IF NO JOB AT DEADSTART CP CWM .JSNE,ON STL4 LDN SMRL PRESERVE MOVE STATUS FOR *REC* CWM .SMRL,ON LDD T1 RESTORE ROLLOUT STATUS CWD CN LDD RS CHECK RECOVERY STATUS LPN SYMK NJN STL5 IF NO SYSTEM FILE LOAD LDD MA REQUEST PP FOR *SLL* CWM STLB,ON LDN 1 SELECT NO QUEUING OF PP REQUEST STD CM+1 MONITOR RPPM RJM ROV READ OVERLAY *LSL* RJM /LSL/LSL LOAD SYSTEM LIBRARY STL5 MONITOR DPPM DROP PP LJM PPR EXIT TO PP RESIDENT STLA VFD 18/0LRMS,42/0 STLB VFD 18/0LSLL,6/0,12/1,24/0 STLE VFD 18/0LMTE,42/0 STLF CON 0 LINK DEVICE LABEL TRACK .JSNE VFD 60/0 .SMRL VFD 60/0 TITLE TAPE PROCESSING SUBROUTINES. CID SPACE 4 ** CID - CHECK IDENT TABLE. * * ENTRY (BA) = BUFFER OUTPUT ADDRESS. * * EXIT (BA) ADVANCED TO SKIP 7700 TABLE. * (T1) = WORD COUNT SKIPPED. * (A) = 0 IF NO PREFIX TABLE. CID1 LDN 0 CLEAR WORD COUNT STD T1 CID SUBR ENTRY/EXIT LDI BA CHECK FIRST WORD LMC 7700 NJN CID1 IF NO 7700 TABLE STI BA AOM 1,BA SKIP 7700 TABLE STD T1 SHN 2 ADD T1 RAD BA UJN CIDX RETURN GCM SPACE 4,10 ** GCM - GET CMR MEMORY. * * ENTRY (A) = LENGTH OF CM BLOCK DESIRED. * (CA - CA+1) = FWA OF CENTRAL MEMORY BLOCK. * * EXIT SIZE OF CMR INCREASED IF NECESSARY TO CONTAIN BLOCK. * * USES LL, CM - CM+4. * * MACROS MONITOR. GCM SUBR ENTRY/EXIT ADD CA+1 SET LWA OF BLOCK SHN 6 ADD CA SHN 14 ADN 77 ROUND UP TO NEXT 100 SHN -6 STD LL SAVE REQUIRED CMR SIZE GCM1 LDK CMRL CRD CM LDD CM+4 SBD LL PJN GCMX IF STORAGE AVAILABLE LDD LL ADN 10 REQUEST EXTRA 1K STD CM+1 LDC 1000 SET CMR REQUEST STD CM+2 MONITOR RSTM UJN GCM1 CHECK IF ASSIGNED IDF SPACE 4,10 ** IDF - ISSUE *DIO* FUNCTION. * * ENTRY (A) = FUNCTION REQUEST. IDF SUBR ENTRY/EXIT ACN PC OAN PC TRANSMIT FUNCTION AJM *,PC WAIT FUNCTION ACCEPT UJN IDFX RETURN ROV SPACE 4 ** ROV - READ OVERLAY. ROV SUBR ENTRY/EXIT RJM CID CHECK IDENT TABLE LDM 2,BA SET COPY ADDRESS ADN 5 STD T1 LDN 5 RAD BA ROV1 LDI BA COPY OVERLAY STI T1 AOD T1 AOD BA LMD BL NJN ROV1 LOOP UNTIL END OF COPY UJN ROVX RETURN RTB SPACE 4,10 ** RTB - READ TAPE BLOCK. * * EXIT (WC) = (A) = WORD COUNT OF RECORD. * (BA) = PPU BUFFER ADDRESS. * (BL) = PPU BUFFER LIMIT. * * CALLS IDF. RTB SUBR ENTRY/EXIT LDN RTBF ISSUE READ TAPE BLOCK FUNCTION RJM IDF ACN PC IAN PC INPUT CM WORD COUNT STD WC ZJN RTB1 IF EMPTY PRU SHN 2 CONVERT TO BYTE COUNT ADD WC IAM BUF,PC INPUT TAPE BLOCK RTB1 LDC BUF SET PP BUFFER ADDRESS STD BA LDD WC SET PP BUFFER LIMIT SHN 2 ADD WC ADD BA STD BL LDD WC (A) = WORD COUNT UJN RTBX RETURN WOG SPACE 4,10 ** WOG - WAIT FOR OPERATOR *GO.*. * * ENTRY (A) = ADDRESS OF MESSAGE TO BE WRITTEN TO MS2W. * * EXIT (A) = 0. * OPERATOR ENTERED *GO.* COMMAND. * * USES T1, CM - CM+4. * * MACROS PAUSE. WOG SUBR ENTRY/EXIT STM WOGA SET MESSAGE ADDRESS LDD NC SHN 7 READ SENSE SWITCH WORD ADN SNSW STD T1 SAVE ADDRESS CRD CM LDD CM+3 SET PAUSE BIT SCN 1 LMN 1 STD CM+3 LDD T1 CWD CM ADN MS2W-SNSW WRITE MESSAGE TO MS2W CWM *,TR WOGA EQU *-1 MESSAGE ADDRESS WOG1 PAUSE NE LDD T1 CHECK PAUSE BIT CRD CM LDD CM+3 LPN 1 ZJN WOGX IF PAUSE BIT CLEAR UJN WOG1 LOOP SPACE 4,10 DSTO BSS 1 DEADSTART OPTIONS COMMON SPACE 4,10 ** COMMON DECKS. * * NOTE - IT IS NECESSARY TO USE *COMPGFP* FOR EST ACCESS, * SINCE THE EST MUST BE ACCESSED PRIOR TO *PPR* STARTUP. EJT$ EQU 1 SELECT EJT PROCESSOR EST$ EQU 1 SELECT EST PROCESSOR IFP$ EQU 1 SELECT REMOTE INITIALIZATION CODE *CALL COMPGFP SPACE 4 USE INITIAL TITLE INITIAL LOAD PROCESSORS. TPPA SPACE 4 ** TPPA - TABLE OF PP AVAILABILITIES. * ENTRY = 1 WORD. * *T, 12/ CH * CH CHANNEL NUMBER TO WHICH PP IS ATTACHED + OANI TPPA BSS 0 LOC 0 CON 0+OANI PP 0 CON 1+OANI PP 1 CON 0 PP 2 - NOT NORMAL ASSIGNMENT CON 3+OANI PP 3 CON 4+OANI PP 4 CON 5+OANI PP 5 CON 6+OANI PP 6 CON 7+OANI PP 7 CON PC+OANI CON 11+OANI PP 11 CON 20+OANI PP 20 CON 21+OANI PP 21 CON 22+OANI PP 22 CON 23+OANI PP 23 CON 24+OANI PP 24 CON 25+OANI PP 25 CON 26+OANI PP 26 CON 27+OANI PP 27 CON 30+OANI PP 30 CON 31+OANI PP 31 TPPAL BSS 0 LOC *O CON 0 (DUMMY) LPP SPACE 4,10 ** LPP - LOAD PP PACKAGE. * * CALLS CID, OTB, RTB. QUAL LPP LPP SUBR ENTRY/EXIT RJM RTB READ FIRST BLOCK RJM CID CHECK IDENT TABLE LPP1 AOM LPPA LDM TPPA-1 LPPA EQU *-1 CURRENT TABLE INDEX ZJN LPP1 IF PP NOT AVAILABLE STM OTBA SET *OAN* LDN 5 SKIP HEADER RAD BA LPP2 RJM OTB OUTPUT TAPE BLOCK LDD WC CHECK BLOCK WORD COUNT SHN -11 ZJN LPPX IF SHORT BLOCK RETURN RJM RTB READ NEXT BLOCK ZJN LPPX IF EMPTY BLOCK RETURN UJN LPP2 OUTPUT NEXT BLOCK QUAL * LPP EQU /LPP/LPP OTB SPACE 4,10 ** OTB - OUTPUT TAPE BLOCK. * * ENTRY (BA) = PPU BUFFER ADDRESS. * (BL) = PPU BUFFER LIMIT. * (OTBA) = OUTPUT INSTRUCTION. * OTB SUBR ENTRY/EXIT LDD BA STD T0 OTB1 LDI T0 OUTPUT BYTE OTBA OAN. ** AOD T0 ADVANCE BYTE LMD BL NJN OTB1 LOOP TO END OF BLOCK UJN OTBX RETURN TITLE LOAD PROCESSORS. CPM SPACE 4 ** CPM - LOAD CPU MONITOR. CPM SUBR ENTRY/EXIT RJM RTB READ BLOCK CPM1 RJM AVB ADVANCE BUFFER NJN CPM4 IF END OF RECORD LDD CM+1 SET TABLE WORD COUNT STD T7 LDD CM CHECK TABLE ID SHN 14 LMN 36 NJN CPM2 IF NOT ENTRY TABLE RJM ENT PROCESS ENTRY TABLE UJN CPM3 CPM2 LMN 40&36 NJN CPM3 IF NOT TEXT TABLE RJM TXT PROCESS TEXT TABLE CPM3 LDD T7 ZJN CPM1 IF END OF TABLE RJM AVB ADVANCE BUFFER SOD T7 UJN CPM3 LOOP TO END OF TABLE * INITIALIZE CPU MONITOR. CPM4 LDN 0 CLEAR ZERO WORD STD ZR STD ZR+1 LDN ACPL READ CPU 0 STATUS CRD CM LDD CM CHECK CPU 0 SHN 6 PJN CPM5 IF AVAILABLE AOM CPMA SET CPU 1 CPM5 LDN 20 READ DEADSTART EXCHANGE PACKAGE STD CM LDD NC SHN 7 CRM BUF,CM LDD XA ZJN CPM6 IF NOT A 176 CPU SHN 11 SET NEA IN EXCHANGE PACKAGE STM BUF+6*5+1 SHN -14 STM BUF+6*5 LDN 20 SET MONITOR MODE BIT FOR CYBER 176 STM BUF+5*3 LDD XA SHN 11 CWM BUF,CM LDC FCCL+DSCU DEAD START CPU OAN. SC IAN. SC LDC FCSB+DSCU OAN. SC IAN. SC UJN CPM7 CHECK OPERATION COMPLETE CPM6 LDD NC START CPU SHN 7 CPMA EXN 0 CPM7 IAN. 14 STD DP CC2 DCN. 0 START *DSD* CPM8 IAN. 14 SBD DP PJN CPM9 IF ROLLOVER ADC 10000 CPM9 ADC -1000D MJN CPM8 IF NOT ONE MILLISECOND ADC 1000D RAD DP AOD DP+4 SHN -14 RAD DP+3 LDC RTCL CWD DP LDN 0 CHECK *CPUMTR* LOADED CRD CM LDD CM+3 ADD CM+4 ZJN CPM8 IF OPERATION NOT COMPLETE LDD CM ZJN CPM11 IF *CPUMTR* PRESET COMPLETE RJM RTB LDD WC SET WORD COUNT STD T1 NJN CPM10 IF NOT ZERO LENGTH BLOCK AOD T1 CPM10 LDD CM+3 SHN 14 ADD CM+4 CWD WC-4 STORE BLOCK LENGTH ADN 1 CWM BUF,T1 LDN 0 INDICATE COMPLETE CWD ZR LJM CPM8 LOOP CPM11 LDD CM+3 SET END OF *CPUMTR* STD CA LDD CM+4 STD CA+1 LDN 0 CLEAR OPERATON COMPLETE CWD ZR CRD DP LDN 20 SET EXCHANGE PACKAGE WORD COUNT STD T1 LDN ACPL READ CPU 0 STATUS CRD CM STD T2 ADN EFRL-ACPL READ MMF LINK DEVICE STATUS CRD CN SBN EFRL-RTCL RESTORE REAL TIME CLOCK CWM CPMD,ON LDD CN+4 ZJN CPM13 IF NO STATUS IN *EFRL* STM STLF POSSIBLE LINK DEVICE LABEL TRACK LMC -0 COMPLEMENT RESPONSE STM CPMC SHN 21-13 PJN CPM13 IF TRACK NUMBER RATHER THAN ERROR STATUS LDM STLA+3 PREVIOUS STATUS/REQUESTS LPC ** CLEAR SLOTS FOR NEW STATUS CPMC EQU *-1 ADD CN+4 ADD NEW STATUS STM STLA+3 CPM13 LDD CM CHECK CPU 0 STATUS STD DP SHN 6 MJN CPM14 IF CPU 0 NOT AVAILABLE RJM SIP START IDLE PROGRAM CPM14 AOD T2 CHECK CPU 1 STATUS CRD CM LDD CM CHECK CPU 1 STATUS STD DP SHN 6 MJN CPM15 IF CPU 1 NOT AVAILABLE AOM SIPB CPME UJN CPM14.1 START IDLE PROGRAM FOR CPU1 * PSN (DUAL CPU MACHINE WITH CACHE) LDC UJNI+77-SIPB+SIP0 USE *INPN* INSTRUCTION ERRPL SIP0-SIPB JUMP OUT OF RANGE ERRNG SIP0-SIPB+37 JUMP OUT OF RANGE STM SIPB CPM14.1 RJM SIP START IDLE PROGRAM CPM15 LJM CPMX RETURN CPMD BSSZ 5 L1M SPACE 4,10 ** L1M - LOAD *MTR* PRESET OVERLAYS TO RPL. * * USES T1, CM - CM+4. * * CALLS CID, RTB. L1M SUBR ENTRY/EXIT LDK RPLP SET UP RPL POINTER CRD CM LDN PPIL RESERVE SPACE FOR PP IDLE CODE RAD CA+1 STD CM+1 SHN -14 SET RPL ADDRESS RAD CA STD CM LDK RPLP STORE RPL POINTER CWD CM LDN 6 SET NUMBER OF *MTR* PRESET OVERLAYS STD CM+2 L1M1 RJM RTB READ NEXT *MTR* PRESET OVERLAY RJM CID SKIP OVER PREFIX TABLE LDD BA STM L1MA LDM 4,BA LENGTH OF PROGRAM STD T1 LDD CM SHN 14 LMD CM+1 CWM *,T1 WRITE OVERLAY TO CENTRAL MEMORY L1MA EQU *-1 CWD ZR TERMINATE WITH A ZERO WORD STD CM+1 SAVE LWA + 1 OF OVERLAY SHN -14 STD CM SOD CM+2 NJN L1M1 IF MORE PRESET OVERLAYS TO LOAD LJM L1MX EXIT TITLE SUBROUTINES. AVB SPACE 4 ** AVB - ADVANCE BUFFER. * * ENTRY (BA) = PPU BUFFER ADDRESS. * (BL) = PPU BUFFER LIMIT. * (WC) = WORD COUNT OF BLOCK. * * EXIT (A) .NE 0 IF END OF RECORD. * (CM - CM+4) = NEXT CM WORD FROM BUFFER. * * USES T1. * * CALLS RTB. AVB2 LDI BA COPY WORD STI T1 AOD BA AOD T1 LMN CM+5 NJN AVB2 LOOP TO END OF WORD AVB SUBR ENTRY/EXIT AVB1 LDN CM SET BYTE ADDRESS STD T1 LDD BA LMD BL NJN AVB2 IF BUFFER NOT EMPTY LDD WC CHECK BLOCK WORD COUNT LMD TH NJN AVBX RETURN IF SHORT BLOCK RJM RTB READ NEXT BLOCK UJN AVB1 ENT SPACE 4 ** ENT - PROCESS ENTRY TABLE. * * ENTRY (BA) = PPU BUFFER ADDRESS. * * EXIT (BA) ADVANCED. * * USES CM - CM+4. * * CALLS AVB. ENT SUBR ENTRY/EXIT RJM AVB SKIP ENTRY NAME SOD T7 RJM AVB READ ENTRY ADDRESS SOD T7 LDD CM+3 RELOCATE ADDRESS LPN 37 ADD CA SHN 14 ADD CM+4 ADD CA+1 STD CM+1 (P) = ENTRY ADDRESS SHN -14 STD CM LDD NC STORE (P) SHN 7 CWD CM UJN ENTX RETURN MRER SPACE 4,10 SIP SPACE 4 ** SIP - START IDLE PROGRAM. * * ENTRY (T1) = EXCHANGE PACKAGE LENGTH. * (T2) = ADDRESS OF *ACPL* WORD. * (CM+3 - CM+4) = EXCHANGE PACKAGE ADDRESS. * (DP - DP+4) = *ACPL* WORD. * * USES CN - CN+4. SIP0 EXN 1 MOVE CPU1 ON DUAL CPU CACHE MACHINE * INPN 4 (INTERRUPT PROCESSOR ON PORT 4) SIPD EQU *-1 STM SIPD CLEAR LONG INSTRUCTION SIP0.1 LDD CM+3 SHN 14 LMD CM+4 ADN 11 CHECK FOR (X1) = ZERO CRD CN LDD CN NJN SIP0.1 IF IDLE PACKAGE NOT YET ACTIVE LDD CM+3 SHN 14 LMD CM+4 UJN SIP2 RESTORE IDLE EXCHANGE PACKAGE SIP1 SBD T1 MOVE CPU TO IDLE PACKAGE SIPB EXN 0 * EXN 1 (PROCESSING CPU 1) * UJN SIP0 (CPU 1 ON DUAL CPU CACHE MACHINE) SIP2 CRD CN CWM BFMS,T1 RESTORE IDLE EXCHANGE PACKAGE SIP SUBR ENTRY/EXIT LDD T2 CLEAR *ACPL* EXCEPT CPU STATUS CWD DP LDD CM+3 SAVE EXCHANGE PACKAGE STM SIPC SHN 14 LMD CM+4 STM SIPC+1 CRM BFMS,T1 SIPA UJN SIP1 MOVE CPU * PSN (176 TYPE CPU) LDD XA STORE IDLE PACKAGE SHN 11 ADN 5 CWM SIPC,ON MA CWM SIPC,ON EEA LDC FCCL+DSCU DEAD START CPU OAN. SC IAN. SC LDC FCSB+DSCU OAN. SC IAN. SC LDD CM+3 SHN 14 LMD CM+4 LJM SIP2 RESTORE IDLE EXCHANGE PACKAGE SIPC VFD 60/0 TXT SPACE 4 ** TXT - PROCESS TEXT TABLE. * * ENTRY (T7) = TABLE WORD COUNT. * * EXIT BUFFER ADVANCED. * * USES T1 - T7, CM - CM+4, CN - CN+4, CW - CW+1. TXT SUBR ENTRY/EXIT LDD CM+3 SET LOAD ADDRESS LPN 37 ADD CA SHN 14 ADD CM+4 ADD CA+1 STD T5 SHN -14 STD T4 RJM AVB READ RELOCATION WORD LDD MA MOVE TO RELOCATION BUFFER CWD CM CRD CN LDN CN SET FIRST BYTE OF RELOCATION WORD STD ZR * NEXT BYTE OF RELOCATION WORD. TXT1 LDN 3 SET BYTE COUNT STD ZR+1 LDI ZR SET RELOCATION BYTE STD T6 AOD ZR ADVANCE BYTE TXT2 SOD T7 DECREMENT TABLE COUNT ZJN TXTX RETURN IF END OF TABLE RJM AVB READ NEXT WORD LDD T6 SET RELOCATION BYTE SHN -10 STD T2 LPN 14 LMN 10 ZJN TXT3 IF UPPER POSITIVE LMN 4 NJN TXT4 IF NOT UPPER NEGATIVE * PROCESS UPPER RELOCTION. LCN 0 -0 FOR NEGATIVE TXT3 LMD CA FORMAT ORIGIN FOR RELOCATION SHN 14 LMD CA+1 SHN 14 STD T0 SHN -6 SCN 77 ADD CM+2 ADD RELOCATION TO ADDRESS SCN 77 SHN 6 ADD T0 RAD CM+1 SHN -6 LMD CM+2 SCN 77 LMD CM+2 STD CM+2 LJM TXT6 CHECK FOR LOWER RELOCATION TXT4 LDD T2 LPN 16 LMN 4 ZJN TXT5 IF MIDDLE POSITIVE LMN 2 NJN TXT6 IF NOT NEGATIVE MIDDLE * PROCESS MIDDLE RELOCATION. LCN 0 -0 FOR NEGATIVE RELOCATION TXT5 LMD CA FORMAT ORIGIN FOR RELOCATION SHN 14 LMD CA+1 STD T1 SHN -11 STD T0 LDD CM+2 RELOCATE ADDRESS LPC 777 RAD T0 LDD T1 SHN 11 SHN -6 ADD CM+3 SCN 7 SHN 6 RAD T0 SHN -6 LMD CM+3 SCN 7 LMD CM+3 STD CM+3 LDD T0 LMD CM+2 LPC 777 LMD CM+2 STD CM+2 UJN TXT8 TXT6 LDD T2 LPN 3 LMN 2 ZJN TXT7 IF LOWER POSITIVE LMN 1 NJN TXT8 IF NOT LOWER NEGATIVE * PROCESS LOWER RELOCATION. LCN 0 -0 FOR NEGATIVE RELOCATION TXT7 LMD CA FORMAT ORIGIN FOR RELOCATION SHN 14 LMD CA+1 STD T1 SHN -14 STD T0 LDD CM+3 RELOCATE ADDRESS LPN 77 ADD T0 SHN 14 ADD T1 RAD CM+4 SHN -14 LMD CM+3 LPN 77 LMD CM+3 STD CM+3 TXT8 LDD T4 STORE WORD SHN 14 ADD T5 CWD CM AOD T5 ADVANCE WORD ADDRESS SHN -14 RAD T4 LDD T6 SHIFT TO NEXT RELOCATION BYTE SHN 4 STD T6 SOD ZR+1 ZJN TXT9 IF END OF 3 WORDS LJM TXT2 PROCESS NEXT WORD TXT9 LJM TXT1 SET NEXT BYTE SPACE 4 ERRMI BUF-* OVERFLOW INTO TAPE BUFFER LPR SPACE 4 ** LPR - LOAD PP RESIDENT. LPR2 STM TPPA+CH DISABLE *DIO* ACTIVATION LDD T2 RESET COMMUNICATION ADDRESSES STD IA ADN 1 STD OA ADN 1 STD MA LPR SUBR ENTRY/EXIT LDD IA SAVE INPUT REGISTER ADDRESS STD T2 LDN 2 SET PP 2 STD T1 LPR1 AOD T1 ADVANCE PP LMN TPPAL ZJN LPR2 IF END OF PP-S LDN 10 ADVANCE COMMUNICATION ADDRESSES RAD IA ADN 1 STD OA ADN 1 STD MA LDM TPPA,T1 CHECK PP AVAILABILITY ZJN LPR1 IF NOT AVAILABLE STM LPRA LMD HN SET *OAM* STM LPRB LDC MSFW+1 OUTPUT START ADDRESS LPRA OAN. ** LDC PPFW-1 OUTPUT PPR LPRB OAM. 1,** UJN LPR1 LOOP TITLE PRESET TAPE LOAD. PRS SPACE 4 ** PRS - PRESET TAPE LOAD. PRS SUBR ENTRY/EXIT LDD CM SAVE DEADSTART OPTIONS STM DSTO RJM IFP INITIALIZE *COMPGFP* * SET BUFFER VALUES. LDC BIOL CRD CM LDD CM SET LOAD ADDRESS FOR *CPUMLD* SHN 6 STD CA+1 SHN -14 STD CA LDN 0 CLEAR WORD COUNT STD WC LDN ZERL CLEAR (ZR - ZR+4) CRD ZR LDN CMRL CRD FL-4 ADN RTCL-CMRL PRESERVE REAL TIME CLOCK CRD DP CRM CPMD,ON ADN EFRL-RTCL-1 FETCH LINK DEVICE LABEL TRACK CRD CN LDD T2 SET RECOVERY STATUS STD RS STM STLA+4 LDD CN+4 SET LINK DEVICE LABEL TRACK STM STLF LDM DSTO SAVE DEADSTART ABORT OPTIONS LPN 14 SHN 12-3 STM STLA+3 LDN SMRL SAVE STORAGE MOVE STATUS CRM .SMRL,ON * MODIFY CHANNEL INSTRUCTIONS. LDC CTTC MODIFY TAPE CHANNEL INSTRUCTIONS RJM MCI LDD T1 CHECK DEADSTART CHANNEL STD DH LMN PC NJN PRS1 IF NOT PP COMMUNICATIONS CHANNEL LDN 12 USE 12 AS PP COMMUNICATIONS CHANNEL STD T1 LDC CTPC MODIFY PP COMMUNICATIONS CHANNELS RJM MCI LDC OANI+12 STM TPPA+CH * INITIALIZE PP AVAILABLITY TABLE. PRS1 LDN PPUL READ PP CONFIGURATION CRD CM LDN PPCP READ PP COMMUNICATION POINTER CRD CN LDD CN+4 SET FIRST INPUT REGISTER ADDRESS STD T3 ADN 2*10 SET INPUT REGISTER ADDRESS FOR *STL* STD IA LDN 0 SET PP0 STD T1 LDN 20D PRESET 20 PP-S STD T2 LDD CM+2 CHECK PP COUNT SBN 11D PJN PRS2 IF MORE THAN 10 PPU,S LDN 10D SET 10 PP-S STD T2 PRS2 LDM TPPA,T1 CHECK PP CHANNEL ZJN PRS4 IF *STL* PP LPN 77 LMD DH NJN PRS3 IF NOT TAPE CHANNEL LDC OANI+12 STM TPPA,T1 PRS3 LDD T1 READ INPUT REGISTER SHN 3 ADD T3 CRD CM LDD CM ZJN PRS4 IF PP AVAILABLE LDN 0 CLEAR PP STM TPPA,T1 PRS4 AOD T1 ADVANCE PP LMD T2 NJN PRS2 IF NOT END OF PP-S LDM TPPA START *MTR* ON PROPER CHANNEL LPN 37 RAM CC1 LDM TPPA+1 START *DSD* ON PROPER CHANNEL LPN 37 RAM CC2 PRS5 LDN 0 CLEAR REMAINDER OF PP-S STM TPPA,T1 AOD T1 SBN 20D MJN PRS5 IF NOT END OF PP-S LDN NCPL READ NUMBER OF CONTROL POINTS CRD CM AOD CM+1 SET CONTROL POINT LIMIT STD NC LDN LPRF CONDITION *DIO* TO INPUT PP RESIDENT RJM IDF RJM LPR LOAD PP RESIDENT LDK MABL CHECK MAINFRAME TYPE CRD CM LDD CM+1 SHN -11 LMN 7 NJN PRS6 IF NOT CYBER 176 LDN ESTP STM SIPA SET PASS INSTRUCTION CRD CM SFA EST,CM+2 SET EXCHANGE PACKAGE BIAS ADC 777 PRS6 SHN -11 STD XA SAVE EXCHANGE BIAS LDN EIBP CRD CM LDD CM SHN 21-12 PJN PRS6.1 IF NOT DUAL CPU MACHINE WITH CACHE LDN PSNI*0 FORCE USE OF *INPN* FOR CPU1 STM CPME SCF. *,MR GET MAINTENANCE CHANNEL DCN. MR FNC. /IOU/MRDC,MR KILL DEADMAN TIMER DCN. MR LDC 102604 CREATE LONG INSTRUCTION ACN. MR OAN. MR LDN 1 IAM. SIPD,MR READ INSTRUCTION TO MEMORY DCN. MR CCF. *,MR RELEASE CHANNEL PRS6.1 LDC 200*DSCP+TFSW CRD T7 LDD T7 ZJN PRS7 IF NO JOB AT DEADSTART CP SFA EJT ERRNZ JSNE CROSS REFERENCE *JSNE* CRD CM CRM .JSNE,ON LDN EXJS*2 CLEAR JOB ADVANCE STD CM+4 SFA EJT,T7 UPDATE EJT ENTRY TO ALLOW *CCAM* CWD CM STM STLC SET ADDRESS OF EJT ENTRY SHN -14 RAM STLC-1 PRS7 LDK MMFL CRD CM LDD CM+1 SHN 21-12 MJN PRS8 IF LINK DEVICE VIA LOW SPEED PORT ISTORE STLD,(UJN STL2) DISABLE LOAD OF *MTE* PRS8 LJM PRSX RETURN MCI SPACE 4,10 ** MCI - MODIFY CHANNEL INSTRUCTIONS. * * ENTRY (A) = ADDRESS OF INSTRUCTION LIST. * (T1) = CHANNEL NUMBER. * * USES T4, T5. MCI1 STD T5 SET INSTRUCTION ADDRESS LDI T5 MODIFY INSTRUCTION SCN 37 LMD T1 STI T5 AOD T4 ADVANCE LIST ADDRESS MCI2 LDI T4 NJN MCI1 IF NOT END OF LIST MCI SUBR ENTRY/EXIT STD T4 SET LIST ADDRESS UJN MCI2 ENTER LOOP SPACE 4,10 ** CHANNEL TABLES. CHTB TC CHTB PC CHTB CH IFP HERE *COMPGFP* REMOTE INITIALIZATION CODE SPACE 4,10 ERRZR PC-12 ILLEGAL CHANNEL DEFINITION ERRPL *-MXRL-STL+4 *STL* OVERFLOWS TAPE PRU TTL STL/RSL - LOAD RESIDENT SYSTEM LIBRARY. TITLE QUAL RSL IDENT RSL,RSL *COMMENT STL - LOAD RESIDENT SYSTEM LIBRARY. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. ORG CPMX RSL BSS 0 APP SPACE 4 ** APP - ACTIVATE PP-S. APP SUBR ENTRY/EXIT EXECUTE 1LP SET UP LOAD CODE FOR *PPR* LDN 3 START WITH PP3 STD T1 APP1 LDM TPPA,T1 CHECK PP AVAILABILITY ZJN APP2 IF NOT AVAILABLE LMC DCNI&OANI SET *DCN* INSTRUCTION STM APPA APPA DCN. ** APP2 AOD T1 ADVANCE PP LMN TPPAL NJN APP1 LOOP TO END OF PP-S UJN APPX RETURN LIB SPACE 4 ** LIB - LOAD RESIDENT PP PROGRAMS. LIB6 MONITOR HNGM HANG PP LIB SUBR ENTRY/EXIT LDN 2 ALLOW FOR TWO WORDS AT END OF PLD STD RP INITIALIZE RPL COUNTER LIB1 RJM RTB READ TAPE BLOCK RJM CID CHECK ID TABLE ZJN LIB1 IF NO PREFIX TABLE * STORE PP PROGRAM. LDM 4,BA ZJN LIB6 IF INCORRECT PROGRAM LENGTH STD T6 (T6) = PROGRAM LENGTH RJM GCM GET NEEDED STORAGE LDM 1,BA CHECK FOR *BCL* OVERLAY SHN 6 LMI BA LMC 6100 NJN LIB2 IF NOT 16 BIT PP ROUTINE LDM 2,BA SHN 14 LMM 3,BA UNPACK LOAD ADDRESS SHN -4 SBN 5 STM 2,BA SET LOAD ADDRESS SHN -14 LMN 20 APPEND *PPL* FLAG LMM BUF+6 STM 1,BA SET PACKAGE NAME LDN 0 STM 3,BA CLEAR UNUSED BYTE LDM BUF+5 STI BA COMPLETE PACKAGE NAME LIB2 LMC 3RLBC&6100 NJN LIB4 IF NOT END OF DEADSTART RPL SOM LIBB UJN LIB4 ENTER LOOP LIB3 RJM RTB READ NEXT BLOCK OF PP PROGRAM LDN 0 SET HEADER LENGTH STD T1 LIB4 LDD WC SET CM WORD LENGTH OF PROGRAM IN BUFFER SBD T1 STD T5 LDD BA STM LIBA LDD CA WRITE PROGRAM TO RPL SHN 14 LMD CA+1 CWM *,T5 LIBA EQU *-1 STD CA+1 SET NEXT RPL ADDRESS SHN -14 STD CA LDD T6 CHECK FOR ALL OF PROGRAM WRITTEN TO CM SBD T5 STD T6 NJN LIB3 IF PROGRAM NOT ALL IN ONE TAPE BLOCK LIBB LDN 1 * LDN 0 IF END OF RPL NJP LIB1 IF NOT END OF DEADSTART RPL LDD TH ENSURE SUFFICIENT CM FOR PLD RJM GCM LDN ZERL CRD CN RJM WLP WRITE END OF RPL LDC 4000 STD CN LDN PBKL LENGTH OF BREAKPOINT TABLE STD T6 LIB5 RJM WLP PRESET BREAKPOINT TABLE SOD T6 NJN LIB5 IF NOT END OF TABLE LDD CA+1 STM WLPA SET PLD ADDRESS LDD CA RAM WLPA-1 LJM LIBX EXIT PLD SPACE 4 ** PLD - GENERATE PLD FOR DEADSTART RPL. * * ENTRY (CA - CA+1) = CURRENT ADDRESS. * * EXIT (CA - CA+1) = ADDRESS OF PROGRAM STATUS TABLE. * * USES RP, T1, T2, CM - CM+4, CN - CN+4. * * CALLS ICT, LDB, WLP. PLD9 LDC PLDP STORE PLD POINTER CWD DP RJM LDB LOAD *1DD* BOOTSTRAP LDN 1 RJM ICT INITIALIZE *CPUMTR* TABLES PLD SUBR ENTRY/EXIT LDC RPLP CRD CM FETCH RPL POINTER ADN PLDP-RPLP CRD DP GET PLD POINTER WORD LDD CA STD DP SET PLD ADDRESS LDD CA+1 STD DP+1 PLD1 LDD CM READ RPL ENTRY SHN 14 ADD CM+1 CRD CN LDD CN+4 SET LENGTH OF PROGRAM STD T1 STD CN+3 LDD CN+2 SET LOAD ADDRESS STD CN+4 LDD CN+1 SCN 77 LMD CM SET CM ADDRESS OF PROGRAM LMN 40 STD CN+1 LDD CM+1 STD CN+2 LDD CN CHECK PROGRAM NAME SHN -6 ZJN PLD4 IF END OF RPL SBN 1R6 ZJN PLD2 IF *6XX* MASS STORAGE DRIVER SBN 1R7-1R6 NJN PLD3 IF NOT *7XX* MASS STORAGE ERROR PROCESSOR AOD CN+2 ADVANCE CM ADDRESS OF LOAD SHN -14 RAD CN+1 PLD2 SOD CN+3 DECREMENT LENGTH OF LOAD LDN 5 ADVANCE LOAD ADDRESS RAD CN+4 PLD3 RJM WLP WRITE LIBRARY POINTER LDD T1 ADVANCE *RPL* ADDRESS RAD CM+1 SHN -14 RAD CM LJM PLD1 PROCESS NEXT ENTRY PLD4 LDN ZERL CRD CM ADN PSTP-ZERL CRD CN LDN 40 CREATE DUMMY *SFP* SLOT FOR *1DL* STD CM+1 LDD CA SHN 14 ADD CA+1 CWD CM ADN 2 SET END OF PLD STD CA+1 STD CN+3 SHN -14 STD CA STD CN+2 LDC PSTP CWD CN SBN PSTP-PLDP READ PLD POINTER CRD CN PLDA LDN 0 ZJN PLD5 IF NEITHER *0BK* NOR *7BK* IN RPL SBN 2 ZJN PLD5 IF BOTH *0BK* AND *7BK* IN RPL LDN ZERL CRD CM LDC 4000 STD CM LDD CN SHN 14 LMD CN+1 SBN PBKL CLEAR BREAKPOINT TABLE CWD CM ADN 1 CWD CM * SORT DEADSTART PLD. PLD5 LDD RP CHECK FOR END OF SORT NJN PLD6 IF NOT END OF SORT LJM PLD9 RETURN PLD6 LDD MA MOVE PLD ADDRESS CWD DP CRD T1 LDN 0 INITIALIZE SORT STD RP PLD7 AOD T2 ADVANCE ADDRESS SHN -14 RAD T1 READ FIRST ENTRY SHN 14 LMD T2 CRD CN SBN 1 CRD CM ADN 3 LMD CA+1 SHN 6 LMD CA ZJN PLD5 IF END OF PASS LDD CN SBD CM MJN PLD8 IF OUT OF ORDER NJN PLD7 IF IN ORDER LDD CN+1 SBD CM+1 PJN PLD7 IF IN ORDER * SWITCH ENTRIES. PLD8 LDD T1 SHN 14 LMD T2 CWD CM SBN 1 CWD CN AOD RP UJN PLD7 LOOP WLP SPACE 4,10 ** WLP - WRITE LIBRARY POINTER. * * ENTRY (CN - CN+4) = WORD TO WRITE TO LIBRARY. * (CA - CA+1) = LIBRARY ADDRESS. * * EXIT (CA - CA+1) ADVANCED BY 1. * * USES CN+1, CA, CA+1. WLP1 LDN 1 ENTER *0BK* IN BREAKPOINT TABLE WLP2 SBN PBKL ADC 0 ENTER *7BK* IN BREAKPOINT TABLE WLPA EQU *-1 CWD CN AOM PLDA ADVANCE COUNTER WLP SUBR ENTRY/EXIT LDD CN+1 SCN 77 SHN 6 LMD CN CHECK PROGRAM NAME SHN 6 LMC 3R"PBK0" ZJN WLP1 IF *0BK* LMC 3R"PBK7"&3R"PBK0" ZJN WLP2 IF *7BK* LDD CA WRITE WORD SHN 14 LMD CA+1 CWD CN AOD CA+1 ADVANCE LIBRARY POINTER SHN -14 RAD CA UJN WLPX EXIT SPACE 4,10 ** COMMON DECKS. *CALL COMPICT *CALL COMPLDB SPACE 4 ERRMI BUF-* OVERFLOW INTO TAPE BUFFER MRER SPACE 4,10 ** MRER - MAINTENANCE REGISTER ERROR HANDLER. * * ENTRY FATAL MAINTENANCE REGISTER ERROR. * * EXIT NO EXIT. MRER LDC DSCP*CPAS+MS1W CWM MREB,TR UJN * HANG MREB DATA C*MAINTENANCE REGISTER ERROR.* SBA SPACE 4,15 ** SBA - SET OS BOUNDS ADDRESS. * * EXIT IOU OS BOUNDS ADDRESS SET TO * - FWA OF NVE CM, IF NOS/VE ACTIVE (LEVEL 3 D/S); * - END OF NOS UEM, IF UEM DEFINED; * - END OF NOS CENTRAL MEMORY, OTHERWISE. * IOU BARREL 1 SET TO BLOCK INTERLEAVE IF CYBER 810/830. * * USES T7, CM - CM+4, CN - CN+4. * * MACROS LOCKMR, READMR, WRITMR. SBA SUBR ENTRY/EXIT LDK EABL+IOEI SET IOU CONNECT CODE CRD CN ADK EIBP-EABL-IOEI GET *DSCB* ADDRESS CRD CM LDD CN+3 STM SBAA LDD CM+3 SHN 14 LMD CM+4 ZJN SBAX IF NO *EICB* ADN D7CM+1 GET NOS/VE FWA AND LWA CRD CN * CALCULATE OS BOUNDS ADDRESS. LDD CN+1 LMD CN+3 NJP SBA3 IF NOS/VE ACTIVE, USE NOS/VE FWA LDD CN+2 LMD CN+4 NJP SBA3 IF NOS/VE ACTIVE, USE NOS/VE FWA LDK UEML CRD CN LDD CN+4 LPN 2 ZJN SBA2 IF UEM NOT DEFINED LDK EABL+CMEI READ SYSTEM ATTRIBUTE BLOCK CRD CM LDD CM+1 LPN 77 SHN 14 LMD CM+2 CRD CM READ EXTENDED MEMORY DESCRIPTOR LDD CM+3 GET EXTENDED MEMORY EQUIPMENT SIZE / 1000B LPN 77 SHN 14 LMD CM+4 NJN SBA1 IF DEFINED LDD CM+3 GET USER EXTENDED MEMORY SIZE / 1000B SCN 77 SHN 6 LMD CM+2 SHN 6 SBA1 ADD CN ADD UEM BASE ADDRESS / 1000B STD CN+2 SHN -14 STD CN+1 UJN SBA3 SET OS BOUNDS ADDRESS SBA2 LDK MABL SET OS BOUNDS TO END OF NOS CENTRAL MEMORY CRD CM LDD CM+2 CONVERT FROM WORDS/100B TO WORDS/1000B SHN 14 LMD CM+3 ADN 7 ROUND UP SHN -3 STD CN+2 SHN -14 STD CN+1 * SET OS BOUNDS ADDRESS. SBA3 LOCKMR SET READMR RBUF,SBAA,/IOU/IOSB FETCH CURRENT OS BOUNDS DATA LDD CN+2 FORM OS BOUNDS ADDRESS/2000B ADN 1 ROUND UP SHN -1 STM RBUF+7 SHN -8D STD CN+2 LDD CN+1 SHN 3 ADD CN+2 STM RBUF+6 READMR IBUF,SBAA,/IOU/DEMR READ IOU REGISTER LDM IBUF+7 CLEAR OS BOUNDS ENABLE STD T7 SCN 10 STM IBUF+7 WRITMR IBUF,SBAA,/IOU/DEMR WRITMR RBUF,SBAA,/IOU/IOSB WRITE NEW OS BOUNDS LDD T7 STM IBUF+7 * SET BLOCK INTERLEAVING FOR IOU BARREL 1 ON CYBER 180-810/830. LDK EABL+CPEI READ *SAB* ADDRESS CRD CM LDD CM+1 GET CPU-0 POINTER SCN 77 SHN 6 LMD CM SHN 6 CRD CM READ CPU-0 ENTRY LDD CM+2 CHECK CPU-0 MODEL SHN -4 SBN 0#13 ZJN SBA4 IF CYBER 810 CPU SBN 0#14-0#13 NJP SBA5 IF NOT CYBER 830 CPU SBA4 READMR SBUF,SBAA,/IOU/ISTR READ STATUS REGISTER LDM SBUF+7 CHECK RECONFIGURATION LPN 20 ADN 20 SHN 6-4 STD T7 LDM IBUF+7 LPN 0#3F ADD T7 STM IBUF+7 SET BARREL 1 TO BLOCK INTERLEAVE MODE SBA5 WRITMR IBUF,SBAA,/IOU/DEMR LOCKMR CLEAR LJM SBAX RETURN SBAA CON 0 IOU CONNECT CODE COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMPMRA RBUF EQU * OS BOUNDS REGISTER BUFFER SBUF EQU RBUF+12 STATUS REGISTER BUFFER IBUF EQU SBUF+12 IOU REGISTER BUFFER IBUFL EQU IBUF+12 END OF BUFFERS QUAL MRER EQU /RSL/MRER UNQUALIFY ROUTINE *MRER* TTL STL/BCL - BUFFER CONTROLLER LOADER. TITLE QUAL BCL IDENT BCL,BCLX BUFFER CONTROLLER LOADER *COMMENT STL - BUFFER CONTROLLER LOADER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** BCL - BUFFER CONTROLLER LOADER. SPACE 4,30 *** BCL IS LOADED BY STL AFTER PP RESIDENT, THE SYSTEM * MONITOR, SYSTEM DISPLAY PROGRAM, RECOVERY PROGRAM AND * DEADSTART PPU LIBRARY HAVE BEEN LOADED AND THE PPU,S HAVE * BEEN STARTED. BCL IS LOADED IN THE SAME PPU AS STL AND * OVERLAYS THE CODE WHICH PERFORMED THE FUNCTIONS LISTED ABOVE. * * BCL READS THE DEADSTART TAPE UNTIL RECORD *LSL* IS * FOUND. THE RECORDS BETWEEN *BCL* AND *LSL* ARE ASSUMED TO BE * FIRMWARE RECORDS AND ARE LOADED TO BUFFER CONTROLLERS * (SKIPPED IF AUTOLOAD DEADSTART OPTION IS SPECIFIED). * * FIRMWARE RECORDS HAVE A STANDARD RECORD PREFIX TABLE * CONTAINING THE 1 - 7 CHARACTER RECORD NAME. THE PREFIX TABLE * IS FOLLOWED BY A ONE WORD HEADER TABLE (FORMAT NOT CHECKED), * FOLLOWED BY THE FIRMWARE DATA, FOLLOWED BY AN EOR. RECORDS * NOT HAVING A VALID PREFIX TABLE (INCLUDES EMPTY RECORDS) ARE * SKIPPED. * * A TABLE OF EQUIPMENT TYPES (TEQL) REQUIRING FIRMWARE * LOADING IS KEPT INTERNALLY TO *BCL*. THE EST IS SCANNED FOR * EQUIPMENTS MATCHING THOSE IN *TEQL*. WHEN A MATCH IS FOUND * THE RECORD TYPE IS FOUND IN THE *CRTL* ENTRY FOR EACH CHANNEL * OF ACCESS. * * IT IS POSSIBLE TO AVOID LOADING CONTROLWARE FOR MASS * STORAGE CHANNELS BY SPECIFYING THE CORRESPONDING NO LOAD * PARAMETER (IE. NF, NI, ETC.) AS THE CONTROLWARE RECORD TYPE * ON THE *LBC* EQPDECK ENTRY. * * AFTER A CONTROLLER HAS BEEN AUTOLOADED, A GRENADE * OPERATION IS PERFORMED IF THE GRENADE DEADSTART OPTION IS * SPECIFIED. * * BCL ALSO LOADS THE 819 DRIVER TO FIRST LEVEL PP-S ON * CYBER 176-S, AND LOADS PP DRIVERS FOR OTHER BUFFERED I/O * SYSTEMS. SPACE 4,40 *** OPERATOR MESSAGES. * * LINE 1 OF DEADSTART CONTROL POINT - * * * LOADING CXX, RCDNAME.* = CHANNEL *XX* IS BEING * LOADED WITH CONTROLWARE RECORD *RCDNAME*. LINE * 2 MESSAGE AT THE DEADSTART CONTROL POINT INDICATES THE STATUS * OF THE LOAD. * * LINE 2 OF DEADSTART CONTROL POINT - * * *TO CENTRAL MEMORY.* = THE FIRMWARE RECORD LISTED IN THE * LINE 1 MESSAGE AT THE DEADSTART CONTROL POINT IS BEING * COPIED FROM TAPE TO CENTRAL MEMORY. IF THE DEADSTART STOPS * WITH THIS MESSAGE AND THE LINE 1 MESSAGE LISTED ABOVE * DISPLAYED, THERE IS INSUFFICIENT FREE CENTRAL MEMORY TO * CONTAIN THE FIRMWARE RECORD. * * *TO CONTROLLER.* = THE FIRMWARE RECORD LISTED IN THE LINE 1 * MESSAGE AT THE DEADSTART CONTROL POINT IS BEING AUTOLOADED TO * THE CHANNEL AND EQUIPMENT TYPE LISTED IN THE LINE 1 MESSAGE. * IF THE DEADSTART STOPS WITH THIS MESSAGE AND THE LINE 1 * MESSAGE LISTED ABOVE DISPLAYED, A CONTROLLER OR CHANNEL * MALFUNCTION OR INCORRECT EQPDECK EQUIPMENT DEFINITION HAS * CAUSED THE AUTOLOAD PROGRAM TO HANG. * * *TO CONTROL MODULE.* = THE FIRMWARE RECORD LISTED IN LINE 1 * MESSAGE AT THE DEADSTART CONTROL POINT IS BEING AUTOLOADED TO * THE CHANNEL LISTED IN THE LINE 1 MESSAGE. IF THE DEADSTART * STOPS WITH THIS MESSAGE AND THE LINE 1 MESSAGE LISTED ABOVE * DISPLAYED, A CONTROLLER OR CHANNEL MALFUNCTION OR INCORRECT * EQPDECK DEFINITION HAS CAUSED THE AUTOLOAD PROGRAM TO HANG. * * *TO FLPP.* = THE FLPP-S ARE BEING DEADSTARTED AND LOADED * WITH THE 819 DRIVER SOFTWARE, *HCD*. IF THE DEADSTART * STOPS WITH THIS MESSAGE AND THE LINE 1 MESSAGE LISTED * ABOVE DISPLAYED, A HARDWARE PROBLEM IN THE FLPP OR MUX IS * INDICATED. * * *AUTOLOAD FAILURE, STXXXX.* = FOLLOWING THE AUTOLOADING OF * THE RECORD LISTED IN THE LINE 1 MESSAGE AT THE DEADSTART * CONTROL POINT TO THE CHANNEL AND EQUIPMENT TYPE LISTED IN THE * LINE 1 MESSAGE, CONTROLLER STATUS (STXXXX) INDICATED THAT A * CHANNEL PARITY ERROR OR FIRMWARE CHECKSUM ERROR OCCURED FOR * THE AUTOLOAD. A STATUS OF *ST0000* INDICATES THAT THE * CHANNEL WAS DISCONNECTED WITHOUT STATUS BEING SENT. WHEN * THIS MESSAGE IS DISPLAYED, DEADSTART STOPS UNTIL THE *GO* * COMMAND IS ENTERED BY THE OPERATOR. WHEN THE *GO* * COMMAND IS ENTERED, THE AUTOLOAD IS RETRIED. IF SEVERAL * RETRIES CONTINUE TO PRODUCE THIS MESSAGE AND THE LINE 1 * MESSAGE LISTED ABOVE, A SOLID HARDWARE FAILURE OR BAD * FIRMWARE RECORD ON THE DEADSTART TAPE IS INDICATED. * * *CONTROLLER RESERVED.* = CONTROLLER RESERVED BY OTHER * ACCESS. CLEAR RESERVE VIA DEADSTART OF OTHER ACCESS, CLEAR * CONTROLLER OR CALL CE TO CHECK HARDWARE. * * * FUNCTION XXXX TIMEOUT.* = FUNCTION XXXX WAS NOT * ACCEPTED BY THE CONTROLLER, NOTIFY THE SITE CE. BCL SPACE 4,20 *** BCL - BUFFER CONTROLLER LOADER. * * ENTRY (RS) = RECOVERY STATUS. * (BA) = BUFFER ADDRESS OF CURRENT TAPE BLOCK. * (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * (DSTO) = DEADSTART OPTIONS. * (MSFW) = TABLE OF FIRMWARE RECORDS TO LOAD. * NEXT RECORD ON DEADSTART TAPE IS THE FIRST FIRMWARE * RECORD. * * EXIT (BA) = BUFFER ADDRESS OF RECORD *LSL*. * (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * DEADSTART TAPE POSITIONED TO RECORD *LSL*. * AUTOLOADING OF BUFFER CONTROLLERS PERFORMED UNLESS * THE AUTOLOAD DEADSTART OPTION IS SPECIFIED. * * CALLS CRN, DFR, LFP, LFR, LOH, RLC, RNR, SCT, SFL. ORG TPPA+5 BCL SUBR ENTRY/EXIT RJM RLC RELOCATE CODE INTO MS DRIVER AREA RJM SCT SET CONTROLWARE TYPE FOR CHANNEL RJM DFR DEFAULT CONTROLWARE RECORD FOR LOAD BCL2 RJM RNR READ NEXT TAPE RECORD LDC BCLB CHECK FOR END OF CONTROLWARE RJM CRN ZJN BCL4 IF RECORD *LSL* RJM SFL SEARCH FIRMWARE RECORD LIST ZJN BCL2 IF RECORD NOT FOUND LDM 4,T7 STM BCLA RJM ** LOAD CONTROLWARE BCLA EQU *-1 UJN BCL2 PROCESS NEXT RECORD BCL4 LDM STLA+3 SHN 0-12 LMN 1 ZJN BCL5 IF NO CHECKPOINT OF BUFFERED DEVICES BCLC RJM LOH LOAD PP DRIVERS FOR BUFFERED DEVICES * UJN BCL5 (NO BUFFERED DEVICES PRESENT) BCL5 LJM BCLX RETURN BCLB VFD 48/0LLSL OPMESS SPACE 4,10 ** OPMESS - SEND OPERATOR MESSAGE. * * OPMESS MADD,LINE * * MADD = ADDRESS OF MESSAGE. * LINE = 1 FOR A LINE ONE MESSAGE. * = 2 FOR A LINE TWO MESSAGE. OPMESS MACRO MADD,LINE LDC 200*DSCP+MS_LINE_W CWM MADD,TR ENDM SPACE 4,10 ** CONSOLE MESSAGES. MSGA DATA C* LOADING CXX, RCDNAME.* MSGB EQU *-1 BLANK MESSAGE MSGC DATA C*TO CENTRAL MEMORY.* MSGD DATA C*TO CONTROLLER.* MSGE DATA C*AUTOLOAD FAILURE, ST0000.* MSGG DATA C*CONTROLLER RESERVED.* ALC SPACE 4,20 ** ALC - AUTOLOAD CONTROLLER. * * ENTRY (CA - CA+1) = CENTRAL MEMORY ADDRESS OF FIRMWARE * RECORD. * (CN+4) = LENGTH OF FIRMWARE RECORD. * (T4) = CHANNEL TO AUTOLOAD. * (T7) = ADDRESS OF RECORD NAME. * (DSTO) = DEADSTART OPTIONS. * * EXIT CONTROLLER AUTOLOADED WITH FIRMWARE. * CONTROLLER GRENADED IF DEADSTART OPTION SPECIFIED. * WAITS FOR OPERATOR GO IF AN AUTOLOAD FAILURE OCCURS. * * CALLS C2D, FCN, MCI, OFR, STS, WOG. * * MACROS DCHAN, OPMESS, RCHAN. ALC SUBR ENTRY/EXIT RJM MCI MODIFY CHANNEL INSTRUCTIONS LDD T4 RESERVE CHANNEL RCHAN * CHECK THAT THE CONTROLLER IS NOT RESERVED TO THE OPPOSITE * ACCESS BEFORE ATTEMPTING THE AUTOLOAD. SKIP THE CHECK FOR * 7255/7165 CONTROLLERS, BECAUSE GENERAL STATUS FOR A 7255 * IS UNDEFINED UNTIL AFTER CONTROLWARE HAS BEEN LOADED, AND * BECAUSE *CONTROLLER RESERVED* IS NOT POSSIBLE ON EITHER. LDD T7 LMK ISD ZJN ALC2 IF LOADING A 7255, AVOID THE STATUS CHECK LMK MA4&ISD ZJN ALC2 IF LOADING A 7165 ALC1 RJM STS GET STATUS SHN 21-12 PJN ALC2 IF CONTROLLER NOT RESERVED TO OTHER ACCESS OPMESS MSGG,2 UJN ALC1 LOOP ALC2 OPMESS MSGD,2 LDC FCAL ISSUE AUTOLOAD FUNCTION RJM FCN RJM OFR LOAD CONTROLWARE RJM STS ZJN ALC3 IF AUTOLOAD SUCCESSFUL SHN -6 PUT STATUS IN MESSAGE RJM C2D STM MSGE+12 LDD FN RJM C2D STM MSGE+13 LDC MSGE DISPLAY AUTOLOAD FAILURE MESSAGE RJM WOG UJN ALC2 RETRY AUTOLOAD ALC3 LDM DSTO CHECK DEADSTART OPTIONS LPN 1 ZJN ALC4 IF *GRENADE* NOT SPECIFIED LDN FCGR ISSUE GRENADE FUNCTION RJM FCN ALC4 LDN FCOC ISSUE OPERATION COMPLETE RJM FCN LDD T4 RELEASE CHANNEL DCHAN LJM ALCX RETURN CRN SPACE 4,10 ** CRN - COMPARE RECORD NAMES. * * *CRN* COMPARES THE RECORD NAME IN THE CONTROLWARE RECORD * PREFIX TABLE WITH A RECORD NAME SUPPLIED BY THE CALLER TO SEE * IF THEY MATCH. A USER-SUPPLIED RECORD NAME BEGINNING WITH * THE CHARACTERS *$$* WILL MATCH ANY PREFIX TABLE NAME. * * ENTRY (A) = ADDRESS OF ONE RECORD NAME. * (BA) = ADDRESS OF RECORD PREFIX TABLE CONTAINING * SECOND RECORD NAME. * * EXIT (A) = 0 IF NAMES MATCH. * .NE. 0 IF NAMES ARE DIFFERENT. * * USES T1 - T3. CRN SUBR ENTRY/EXIT STD T1 SAVE ADDRESS OF RECORD NAME LDI T1 CHECK FOR AUTOMATIC MATCH LMC 2R$$ ZJN CRNX IF AN AUTOMATIC MATCH LDD BA SET ADDRESS OF NAME IN PREFIX TABLE ADN 5 STD T2 ADN 4 SET LWA+1 OF NAME IN PREFIX TABLE STD T3 CRN1 LDI T1 COMPARE NAMES LMI T2 NJN CRNX IF NAMES ARE DIFFERENT AOD T1 ADVANCE NAME ADDRESSES AOD T2 LMD T3 NJN CRN1 IF NOT END OF NAMES UJN CRNX EXIT (NAMES MATCH) FCN SPACE 4,15 ** FCN - ISSUE FUNCTION TO CONTROLLER. * * ENTRY (A) = FUNCTION CODE. * * EXIT (A) = 0 IF GENERAL STATUS FUNCTION TIMED OUT. * * USES FN. * * CALLS C2D. * * MACROS OPMESS. FCN SUBR ENTRY/EXIT STD FN FCN1 FAN CH FCN2 IJM FCNX,CH IF FUNCTION ACCEPTED ADD ON NJN FCN2 IF TIMEOUT NOT SATISFIED DCN CH LDD FN CHECK FUNCTION LMN FCGS ZJN FCNX IF GENERAL STATUS REQUEST SHN -6 RJM C2D STM FCNB LDD FN CONVERT FUNCTION FOR MESSAGE RJM C2D STM FCNB+1 OPMESS FCNA,2 DISPLAY TIMEOUT MESSAGE LDD FN UJN FCN1 RETRY FCNA DATA 10H FUNCTION FCNB DATA C*0000 TIMEOUT.* IRN SPACE 4,10 ** IRN - INSERT RECORD NAME INTO MESSAGE. * * ENTRY (T7) = ADDRESS OF RECORD NAME. * * EXIT RECORD NAME INSERTED IN MESSAGE *MSGA*. * * USES T1, T2. IRN SUBR ENTRY/EXIT LDD T7 SET RECORD NAME ADDRESS SBN 1 STD T1 LDC MSGA+7-1 SET ADDRESS OF RECORD NAME STD T2 IRN1 AOD T1 ADVANCE RECORD NAME ADDRESSES AOD T2 LDI T1 MOVE TWO CHARACTERS STI T2 ZJN IRN2 IF END OF RECORD NAME LPN 77 NJN IRN1 IF NOT END OF RECORD NAME LDC 1R.&2R. ADD PERIOD TO MESSAGE IRN2 LMC 2R. ADD PERIOD TO MESSAGE RAI T2 LDN 0 SET MESSAGE TERMINATOR STM 1,T2 UJN IRNX LFC SPACE 4,20 ** LFC - LOAD FIRMWARE RECORD TO CENTRAL MEMORY. * * ENTRY (BA) = ADDRESS OF RECORD PREFIX TABLE. * (CA - CA+1) = CURRENT CENTRAL MEMORY ADDRESS. * (WC) WORD COUNT OF CURRENT TAPE BLOCK. * * EXIT (CN+4) = RECORD WORD COUNT. * FIRMWARE RECORD LOADED TO CENTRAL MEMORY AT * (CA - CA+1). * * USES BA, T3, T5, T6. * * CALLS GCM, RTB. LFC SUBR ENTRY/EXIT OPMESS MSGC,2 DISPLAY LOADING TO CENTRAL MEMORY LDD CA SET FIRMWARE LOAD ADDRESS STD T5 LDD CA+1 STD T6 LDN 0 CLEAR RECORD WORD COUNT STD CN+4 LDM 1,BA PREFIX TABLE LENGTH ADN 2 PREFIX AND NEXT TABLE HEADER LENGTHS STD T3 SHN 2 ADVANCE BUFFER TO BEGINNING OF DATA ADD T3 RAD BA LDD WC SET WORD COUNT OF DATA SBD T3 LFC1 ZJN LFCX IF AN EMPTY BLOCK STD T3 SAVE BLOCK WORD COUNT RAD CN+4 UPDATE RECORD WORD COUNT RJM GCM GET CMR SPACE FOR RECORD LDD BA SET PPU BUFFER ADDRESS STM LFCA LDD T5 SET CENTRAL MEMORY BUFFER ADDRESS SHN 14 LMD T6 CWM *,T3 WRITE BLOCK TO CENTRAL MEMORY LFCA EQU *-1 PPU BUFFER ADDRESS STD T6 SAVE NEXT CENTRAL MEMORY BUFFER ADDRESS SHN -14 STD T5 LDD WC CHECK FOR END OF RECORD SHN -11 ZJN LFC1 IF END OF RECORD RJM RTB READ NEXT TAPE BLOCK UJN LFC1 LFR SPACE 4,10 ** LFR - LOAD FIRMWARE RECORD. * * ENTRY (BA) = ADDRESS OF RECORD PREFIX TABLE. * (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * (T7) ADDRESS OF RECORD NAME * * EXIT RECORD LOADED TO APPROPRIATE CHANNELS. * * USES T4, CM - CM+4, CN+2. * * CALLS ALC, C2D, IDF, IRN, LFC, TCD. LFR3 OPMESS MSGB,1 CLEAR MESSAGES OPMESS MSGB,2 LFR SUBR ENTRY/EXIT RJM IRN INSERT RECORD NAME IN MESSAGE LCN 0 INITIALIZE CHANNEL STD T4 STD CN+2 FLAG FIRMWARE NOT IN CM * SEARCH FOR CHANNELS TO LOAD. LFR1 AOD T4 LFRA LMN TCHFL INITIALIZE CHANNEL * LMN MMXC (IF 819 DRIVER LOAD) * LMN TCCFL (IF CONCURRENT CHANNEL LOADS POSSIBLE) ZJN LFR3 IF END OF CHANNELS LDD T4 CHECK FOR CHANNEL DOWN RJM TCD MJN LFR1 IF CHANNEL DOWN LDM TCHF,T4 * LDM THCD,T4 (IF 819 DRIVER LOAD) LFRB EQU *-1 LMD T7 NJN LFR1 IF CURRENT RECORD NOT FOR THIS CHANNEL STM TCHF,T4 CLEAR LOAD FOR THIS CHANNEL * STM THCD,T4 (IF 819 DRIVER LOAD) LFRC EQU *-1 LDD T4 PUT CHANNEL NUMBER IN MESSAGE RJM C2D STM MSGA+5 OPMESS MSGA,1 DISPLAY LOADING MESSAGE LDD CN+2 ZJN LFR2 IF FIRMWARE IN CM RJM LFC LOAD FIRMWARE TO CM LDN 0 FLAG FIRMWARE IN CM STD CN+2 LFR2 LDN IPPF IDLE *DIO* RJM IDF RJM ALC AUTOLOAD CONTROLLER * RJM LFD (IF 819 DRIVER LOAD) * RJM ACC (CONCURRENT CHANNEL LOADS POSSIBLE) LFRE EQU *-1 LDD IA RESTART *DIO* ADN CH*10-2*10 CRD CM STD CM+4 CWD CM LJM LFR1 LOOP FOR NEXT CHANNEL LOH SPACE 4,15 ** LOH - LOAD PP DRIVERS FOR BUFFERED DEVICES. * * ENTRY CHANNEL TABLE *CUN1* WORDS CONTAIN PP DRIVER INPUT * REGISTERS FOR BUFFERED I/O SYSTEMS. * *CUN1* BYTE 0 = 0 FOR 819 SYSTEMS. * CHANNEL TABLE POINTER WORD = * 12/NO. ENTRIES ,24/(OTHER STUFF) ,24/CCT FWA. * * EXIT ONE PP DRIVER LOADED FOR EACH CHANNEL DEFINED. * * USES FS - FS+4, CM - CM+4. * * CALLS TCD. * * MACROS MONITOR. LOH SUBR LOHA LDC ** ADDRESS OF CHANNEL TABLE POINTER WORD CRD FS CHANNEL TABLE POINTER WORD LDN CUN1 RAD FS+4 POINT TO *CUN1* WORD SHN -14 RAD FS+3 * LDN 0 STM TCDB SET BUFFER DRIVER LOAD FLAG * SCAN CHANNEL TABLE. LOH1 LDD FS+3 SHN 14 ADD FS+4 CRD CM READ PP DRIVER INPUT REGISTER LDD CM ZJN LOH4 IF 819 ENTRY LDD MA CWD CM STORE INPUT REGISTER FOR PP REQUEST LDN 1 STD CM+1 SELECT NO QUEUEING OF PP REQUEST LDD CM+4 RJM TCD TEST FOR CHANNEL DOWN MJN LOH4 IF CHANNEL IS DOWN LDD CM+4 LPN 40 NJN LOH3 IF CONCURRENT CHANNEL MONITOR RPPM UJN LOH4 ADVANCE CCT POINTER LOH3 SBD CM+4 ISOLATE CHANNEL ADN 4 SHN 0-21 ADN 2 DETERMINE BARREL SELECT SUBFUNCTION STD CM+4 MONITOR CPRM REQUEST CONCURRENT PP LOH4 LDN CCTL RAD FS+4 ADVANCE CCT POINTER SHN -14 RAD FS+3 SOD FS NJP LOH1 IF MORE CHANNELS TO SCAN LJM LOHX RETURN MCI SPACE 4,10 ** MCI - MODIFY CHANNEL INSTRUCTIONS. * * ENTRY (T4) = CHANNEL NUMBER. * * USES T1, T2. MCI1 STD T2 SET INSTRUCTION ADDRESS LDI T2 MODIFY INSTRUCTION SCN 37 LMD T4 STI T2 AOD T1 ADVANCE LIST ADDRESS MCI2 LDI T1 NJN MCI1 IF NOT END OF LIST MCI SUBR ENTRY/EXIT LDC CTCH SET CHANNEL TABLE ADDRESS STD T1 UJN MCI2 ENTER LOOP OAR SPACE 4,10 ** OAR - OUTPUT (A) REGISTER ON CHANNEL. * * ENTRY (A) = PARAMETER TO OUTPUT. OAR SUBR ENTRY/EXIT ACN CH OAN CH OUTPUT PARAMETER FJM *,CH IF PARAMETER NOT ACCEPTED DCN CH UJN OARX RETURN OFR SPACE 4,20 ** OFR - OUTPUT FIRMWARE RECORD. * * ENTRY (CA - CA+1) = CENTRAL MEMORY ADDRESS OF FIRMWARE * RECORD. * (CN+4) = WORD COUNT OF FIRMWARE RECORD. * CONTROLLER FUNCTIONED FOR AUTOLOAD. * * EXIT FIRMWARE RECORD TRANSFERRED FROM CENTRAL MEMORY TO * CONTROLLER. * CHANNEL INACTIVE. * * USES T1, T2, T5, T6. OFR3 FJM *,CH WAIT FOR LAST WORD ACCEPT DCN CH OFR SUBR ENTRY/EXIT LDD CA SET CENTRAL MEMORY ADDRESS OF RECORD STD T5 LDD CA+1 STD T6 OFRA ACN CH PREPARE CHANNEL FOR OUTPUT * PSN (IF 819 DRIVER LOAD) LDD CN+4 RECORD WORD COUNT OFR1 ZJN OFR3 IF END OF RECORD STD T2 SAVE REMAINING WORD COUNT STD T1 SET BLOCK WORD COUNT ADC -FWBFL-1 MJN OFR2 IF REMAINING DATA FITS IN BUFFER LDC FWBFL SET BLOCK COUNT TO BUFFER SIZE STD T1 OFR2 LDD T5 SET CENTRAL BUFFER ADDRESS SHN 14 LMD T6 CRM FWBF,T1 READ BLOCK FROM CENTRAL MEMORY STD T6 SAVE NEXT CENTRAL MEMORY BUFFER ADDRESS SHN -14 STD T5 LDD T1 OUTPUT BLOCK TO CONTROLLER SHN 2 ADD T1 OAM FWBF,CH LDD T2 DECREMENT REMAINING RECORD WORD COUNT SBD T1 UJN OFR1 PROCESS NEXT BLOCK RNR SPACE 4,20 ** RNR - READ NEXT RECORD. * * ENTRY (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * * EXIT (BA) = ADDRESS OF RECORD PREFIX TABLE. * (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * RECORDS WITHOUT VALID PREFIX TABLES SKIPPED. * * USES T1. * * CALLS RTB. RNR2 RJM RTB READ TAPE BLOCK LDD WC SBN 2 MJN RNR2 IF BLOCK TOO SHORT LDI BA LMC 7700 NJN RNR1 IF NO PREFIX TABLE LDM 1,BA PREFIX TABLE LENGTH ADN 2 PREFIX AND NEXT TABLE HEADER LENGTHS SBD WC PJN RNR1 IF TABLES OVERFLOW BLOCK RNR SUBR ENTRY/EXIT * SKIP TO END OF CURRENT RECORD. RNR1 LDD WC SHN -11 ZJN RNR2 IF AT END OF RECORD RJM RTB READ NEXT TAPE BLOCK UJN RNR1 LOOP TO END OF RECORD SFL SPACE 4,10 ** SFL - SEARCH FIRMWARE LIST. * * ENTRY (BA) = ADDRESS OF FIRMWARE RECORD PREFIX TABLE. * * EXIT (A) = 0 IF RECORD NOT FOUND. * (A) = (T7) = ADDRESS OF RECORD NAME IF FOUND. * * CALLS CRN. SFL2 LDD T7 RETURN FIRMWARE LIST ADDRESS SFL SUBR ENTRY/EXIT LDC TFIR SET FWA OF FIRMWARE RECORD TABLE STD T7 SFL1 LDI T7 ZJN SFLX IF END OF TABLE LDD T7 COMPARE RECORD NAMES RJM CRN ZJN SFL2 IF FOUND IN TABLE LDN 5 RAD T7 UJN SFL1 CHECK NEXT RECORD NAME STS SPACE 4,10 ** STS - STATUS CONTROLLER. * * EXIT (A) = (FN) = GENERAL STATUS. * (A) = 775777 IF INCOMPLETE STATUS. * (FN = 5777 IF INCOMPLETE STATUS. * * CALLS FCN. STS SUBR ENTRY/EXIT LDN FCGS RJM FCN ZJN STS1 IF FUNCTION TIMED OUT ACN CH STS1 LDC -2000 ERROR STATUS STSA IAN CH * IAN CH+40 INPUT STATUS STD FN UJN STSX RETURN TCD SPACE 4,15 ** TCD - TEST CHANNEL DOWN STATUS. * * ENTRY (A) = CHANNEL. * * EXIT (A) .LT. 0, IF CHANNEL DOWN. * * USES T0, T1, DP - DP+4. TCD2 LCN 0 FLAG CHANNEL DOWN TCD SUBR ENTRY/EXIT STD T1 SAVE CHANNEL NUMBER LCN 0 INITIALIZE WORD INDEX STD T0 TCD1 AOD T0 INCREMENT WORD INDEX LCN 5 DIVIDE BY 5 LOOP RAD T1 PJN TCD1 IF NOT CORRECT INDEX ADN 5+DP STD T1 LDC 0 READ CHANNEL ASSIGNMENT TABLE WORD TCDA EQU *-1 ADD T0 ADD CORRECT WORD INDEX CRD DP LDI T1 GET CHANNEL BYTE SHN 21-5 PJN TCDX IF CHANNEL NOT DOWN TCDB UJN TCD2 SET CHANNEL DOWN STATUS * PSN (BUFFER DRIVER LOAD) LDC ** SET DRIVER NOT LOADED FLAG TCDC EQU *-1 ADD T0 CRD DP LDI T1 LMD TH STI T1 LDC ** TCDD EQU *-1 ADD T0 CWD DP LJM TCD2 RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPC2D TCHS SPACE 4,10 ** CHANNEL TABLE. CHTB CH SPACE 4 ** TCHF - TABLE OF CHANNELS FOR FIRMWARE LOADING. * * ENTRY = 1 WORD = ADDRESS OF FIRMWARE RECORD NAME IN *TFIR*. TCHFL EQU 37 TCHF BSSZ TCHFL TCCFL EQU TCHFL+12B ALLOW FOR CONCURRENT CHANNELS ERRNG TFIR-TCHF-TCCFL IF OVERFLOW OF TABLE OF CHANNELS SPACE 4 ** THCD - TABLE OF 819 MUX CHANNELS TO INITIALIZE. * * ENTRY = 1 WORD = ADDRESS OF DRIVER RECORD NAME. THCD BSSZ MMXC SPACE 4 ** THCC - TABLE OF 819 CONTROLLER CHANNEL MASKS. * * ENTRY = 7700B, IF CONTROLLER ON CHANNELS 2+3. * 77B, IF CONTROLLER ON CHANNELS 6+7. * 7777B, IF BOTH CONTROLLER PRESENT. THCC BSSZ MMXC SPACE 4 ** TFIR - TABLE OF FIRMWARE RECORD NAMES. * * ENTRY = 4 WORDS = FIRMWARE RECORD NAME. * TERMINATED BY A ZERO WORD. TFIR BSS 0 FHT VFD 48/0LBCS,12/LFR FFT VFD 48/0LBCF,12/LFR FFM VFD 48/0LFMD,12/LFR FAD VFD 48/0LADP,12/LFR ISD VFD 48/0LISD,12/LFR PHD VFD 48/0LPHD,12/LFR MA4 VFD 48/0LMA464,12/LFR M86 VFD 48/0LCCC7990,12/LFR HCD VFD 48/0LHCD,12/LFP CMD EQU HCD CON 0 TERMINATOR SPACE 4,10 ERRNG BUF-* OVERFLOW INTO TAPE BUFFER DFR SPACE 4 ** DFR - DEFAULT FIRMWARE RECORDS TO LOAD ON EACH CHANNEL. * * *DFR* BUILDS A TABLE (*TCHF*) OF ALL CHANNELS ON WHICH * CONTROLWARE MUST BE LOADED AND THE TYPE OF CONTROLWARE TO * LOAD ON EACH CHANNEL. FOR 819 DISKS, *DFR* DETERMINES WHAT * FLPP-S NEED TO BE LOADED WITH THE 819 DRIVER. DFR SUBR ENTRY/EXIT LDN ESTP CRD CM LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD T6 LDD CM+3 SET LAST MASS STORAGE ORDINAL + 1 STD T7 * SEARCH EST FOR EQUIPMENT TYPES REQUIRING LOAD. DFR1 AOD T6 LMD T7 ZJN DFRX IF END OF MASS STORAGE DEVICES SFA EST,T6 ADK EQDE CRD CN READ EST LDD CN SHN 21-13 DFR2 PJN DFR1 IF NOT MASS STORAGE LDN TEQLL STD T1 DFR3 LCN 2 DECREMENT TABLE INDEX RAD T1 MJN DFR1 IF END OF EQUIPMENT TYPES LDD CN+3 LMM TEQL,T1 NJN DFR3 IF NO MATCH LDM TEQL+1,T1 STD T1 LJM 0,T1 EXIT TO PROCESSOR * PROCESS *FLPP* SOFTWARE - 819 DISK. DFR4 LDD CN+4 FETCH UNIT LIST FROM MST SHN 3 ADN DDLL CRD CM LDN CN INITIALIZE CHANNEL BYTE INDEX STD T3 DFR5 AOD T3 ADVANCE CHANNEL BYTE INDEX LMN CN+3 ZJN DFR2 IF TWO CHANNELS CHECKED LDI T3 ZJN DFR2 IF SINGLE ACCESS DEVICE LPN 37 STD T4 LDC HCD STM THCD,T4 STM THCD+1,T4 LDD CM+4 CHECK CONTROLLER ASSIGNMENT LPN 4 ZJN DFR6 IF NOT ASSIGNED TO CHANNELS 6+7 LCN 0 DFR6 LMC 7700 SET CONTROLLER MASK STD T0 LMC 7777 STM DFRA LDM THCC,T4 LPC ** DFRA EQU *-1 LMD T0 STM THCC,T4 STM THCC+1,T4 LJM DFR5 CHECK NEXT CHANNEL * PROCESS FULL TRACK / FMD CONTROLWARE. DFR8 RJM SCH SET 7154 CHANNELS IN EST * CHECK IF EITHER CHANNEL TO THE DEVICE REQUIRES A CONTROLWARE * LOAD. IF SO, UPDATE TABLE *TCHF* WITH THE CONTROLWARE TYPE * TO LOAD. DFR9 LDN CN+1 INITIALIZE CHANNEL BYTE ADDRESS STD T3 DFR10 LDI T3 ZJN DFR11 IF NULL CHANNEL SHN 0-12 LMN 2 NJN DFR11 IF CHANNEL DOWN OR DISABLED LDI T3 LPN 77 STD T4 LDM MSFW,T4 STD CM ADC 1000-/MSP/CRTH*100 SHN 0-11 NJN DFR11 IF CONTROLWARE RELOAD LIMIT REACHED LDM DSTO LPN 2 NJN DFR11 IF LOAD DISABLED BY *AUTOLOAD* LDD CM LPN 77 STD CM LPN 40 NJN DFR11 IF LOAD DISABLED VIA AN *LBC* COMMAND LDM TCWT,CM SET ADDRESS OF CONTROLWARE RECORD NAME STM TCHF,T4 DFR11 AOD T3 LMN CN+3 NJN DFR10 IF POSSIBLE SECOND CHANNEL LJM DFR1 LOOP FOR NEXT EQUIPMENT SCT SPACE 4,10 ** SCT - SET CHANNEL TABLE *CCTL* IN CMR. * * *SCT* LOADS THE CHANNEL CONTROLWARE TABLE INTO PP MEMORY. IF * NOT RECOVERING CENTRAL MEMORY, *SCT* CONVERTS THE TABLE FROM * THE FORMAT USED BY *SET* TO THE FORMAT USED DURING NORMAL * SYSTEM OPERATION. DURING DEADSTART, EACH BYTE IN THE TABLE * IS FORMATTED AS FOLLOWS- * 5/, 1/F, 6/LO * WHERE F = 1, IF LOAD OPTION SPECIFIED VIA *LOADBC* COMMAND. * LO = CHANNEL CONTROLWARE LOAD OPTION (SEE *COMSDSL*). * * AFTER *SCT* COMPLETES, EACH BYTE IN THE CHANNEL CONTROLWARE * TABLE HAS THE FOLLOWING FORMAT- * 6/0, 1/N, 5/CT * WHERE N = 1, IF CONTROLWARE IS NOT TO BE LOADED BY *STL*. * CT = CONTROLWARE TYPE FOR THE CHANNEL (SEE *COMSDSL*). * * EXIT *CCTL* IS INITIALIZED IN CMR TO PRESERVE CONTROLWARE * TYPE ON EACH CHANNEL. * * USES T1, T2, CM - CM+4. SCT SUBR ENTRY/EXIT LDC CHTP CRD CM LDN CTALL SET TABLE LENGTH STD T2 LDD CM+2 FETCH FIRMWARE LOAD TABLE LPN 77 RAM TCDA-1 LPN 77 SHN 14 LMD CM+3 STM TCDA ADN CTALL*2 CRM MSFW,T2 LDD CM+3 SET ADDRESS OF CONTROLWARE TABLE ADN CTALL*2 STM TCDC STM TCDD SHN -14 ADM TCDA-1 STM TCDC-1 STM TCDD-1 LDD RS LPN SYMK LMN SYCM ZJP SCTX IF CM RECOVERY LDN MXCH STD CM SCT1 LDM MSFW,CM GET CHANNEL CONTROLWARE TYPE LPN 37 SCT2 STD T1 SBN MXCLO SHN 0-21 ZJN SCT2 IF INVALID LOAD OPTION AOD T1 LPN 1 GENERATE LOAD / NO LOAD FLAG SHN 6-0 LMD T1 FORM CONTROLWARE TYPE WITH FLAG SHN 5-6 STM MSFW,CM SET IN CONTROLWARE TABLE SOD CM PJN SCT1 IF NOT END OF TABLE LDD CM+2 STORE TABLE OF CHANNEL CONTROLWARE TYPE SHN 14 LMD CM+3 ADN CTALL*2 CWM MSFW,T2 LJM SCTX RETURN SPACE 4,10 ** TEQL - TABLE OF EQUIPMENT TYPES REQUIRING FIRMWARE LOADING. * * ENTRY = 2 WORD EQUIPMENT MNEMONIC. * WORD 1 = EQUIPMENT TYPE. * WORD 2 = PROCESSOR ADDRESS. TEQL BSS 0 CON 2RDI,DFR9 CON 2RDJ,DFR9 CON 2RDK,DFR8 CON 2RDL,DFR8 CON 2RDM,DFR9 CON 2RDQ,DFR9 CON 2RDX,DFR8 CON 2RDY,DFR8 CON 2RDZ,DFR8 CON 2RDA,DFR8 CON 2RDV,DFR4 CON 2RDW,DFR4 CON 2RDB,DFR9 CON 2RDC,DFR9 CON 2RDD,DFR9 CON 2RDG,DFR9 CON 2RSS,DFR9 TEQLL EQU *-TEQL TCWT SPACE 4 ** TCWT - TABLE OF CONTROLWARE TYPES. * ENTRY = 1 WORD. * * ENTRY IS ADDRESS OF CONTROLWARE RECORD NAME FOR RECORD TYPE. TCWT INDEX INDEX HTCW,FHT INDEX FTCW,FFT INDEX FMCW,FFM INDEX ADCW,FAD INDEX PHCW,PHD INDEX IDCW,ISD INDEX CCCW,MA4 INDEX M8CW,M86 INDEX MXCWT SCH SPACE 4,15 ** SCH - SELECT FULL TRACK CHANNELS FOR EQUIPMENT. * * ENTRY (CN - CN+4) = EST ENTRY. * (T6) = EST ORDINAL. * (RS) = RECOVERY STATUS. * * EXIT FULL TRACK CHANNELS PLACED IN EST FOR USE. * MESSAGE *EQXXX, 2X PPS REQUIRED.* ISSUED IF 2X PP * STATUS IS NOT PRESENT. * MESSAGE *EQXXX, NO FT CONTROLLER.* ISSUED IF * NO FT CONTROLWARE IS SPECIFIED FOR LOAD BECAUSE OF * *LBC,HT,...* FOR ALL CHANNELS OF ACCESS FOR A FULL * TRACK EQUIPMENT. * THESE MESSAGES HALT DEADSTART UNTIL AN OPERATOR *GO* * IS ENTERED. * * CALLS WOG. * * USES T1, T4, CM - CM+4. * * MACROS MONITOR. SCH SUBR ENTRY/EXIT LDD RS LPN SYMK LMN SYCM ZJN SCHX IF CM RECOVERY LDD CN+3 SET EQUIPMENT TYPE STM SCHA STM SCHB LDD T6 CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D STM SCHA+1 STM SCHB+1 LDD T6 CONVERT LOWER DIGIT OF EST ORDINAL LPN 7 SHN 6 ADC 2R0, STM SCHA+2 STM SCHB+2 LDN 0 CLEAR CHANNEL COUNT STD T1 STD T4 SCH1 LDM CN+1,T1 ZJN SCH2.1 IF CHANNEL NOT DEFINED SHN 21-10 PJN SCH2 IF FULL TRACK CONTROLLER SHN 10-21 DISABLE THE CHANNEL ACCESS LPN 37 STD CM+2 LDD T6 STD CM+1 LDN DAPS STD CM+3 MONITOR SCSM DISABLE THE CHANNEL PATH UJN SCH2.1 CONTINUE SCH2 AOD T4 SCH2.1 AOD T1 LMN 2 NJN SCH1 IF MORE CHANNELS LDD T4 ZJN SCH3 IF NO FT CONTROLWARE PRESENT LDK MABL CHECK PPU SPEED CRD CM LDD CM+4 LPN 7 NJN SCH4 IF NOT 1XPP SPEED LDD RS NJN SCH4 IF RECOVERY DEADSTART LCN SCHB-SCHA *EQXXX, 2X PPS REQUIRED.* SCH3 ADC SCHB *EQXXX, NO FT CONTROLLER.* RJM WOG WAIT FOR OPERATOR GO SCH4 LJM SCHX EXIT SCHA DATA C*EQXXX, 2X PPS REQUIRED.* SCHB DATA C*EQXXX, NO FT CONTROLLER.* RLC SPACE 4,10 ** RLC - RELOCATE CODE TO MS DRIVER AREA. * * CODE MUST BE MOVED INTO THE MASS STORAGE DRIVER AREA OF PP * MEMORY TO PROVIDE ENOUGH ROOM FOR A CONTROLWARE DATA BUFFER. * EITHER THE CONTROL MODULE, CPP OR THE 819 SUPPORT CODE IS * SAVED DEPENDING UPON WHICH TYPE OF DISK THE MAINFRAME USES. * (A SINGLE MAINFRAME CANNOT SUPPORT ISMD, CPP OR 819 DISKS AT * THE SAME TIME.) THE CODE FOR THE DISK TYPE NOT IN USE IS * OVERLAID BY THE DATA BUFFER. * * EXIT ROUTINES MOVED TO MS DRIVER AREA. * * USES T1, T2, CM - CM+4. RLC SUBR ENTRY/EXIT LDC BIOL CRD CM LDD CM+1 SHN 14 ADD CM+2 NJN RLC0 IF BUFFERED DEVICES DEFINED ISTORE BCLC,(UJN BCL5) DISABLE BUFFERED DRIVER LOADS UJN RLC0.1 CONTINUE RLC0 ADN CCTP FORM ADDRESS OF CHANNEL TABLE POINTER STM LOHA+1 SHN -14 RAM LOHA RLC0.1 LDC .FWA SET MOVE PARAMETERS STD T1 LDC .LOA STD T2 LDN CFGL CRD CM LDD CM+3 SHN 21-11 MJN RLC1 IF ISMD SUBSYSTEM PRESENT LDK MABL CHECK FOR POSSIBLE CPP LOAD CRD CM LDD CM+1 SHN 0-13 NJP RLC3 IF NOT A 8XX MAINFRAME * LDN 0 DISABLE FLPP PROCESSING STM HCD LDC .FWC SET UP CPP CODE RELOCATION STD T1 LDN TCCFL-TCHFL ADJUST MAXIMUM CHANNEL NUMBER RAM LFRA LDC ACC SET JUMP TO CPP CODE STM LFRE LDC .LWC UJN RLC2 RELOCATE CPP CODE RLC1 LDC .FWI SET ISMD SUBSYSTEM CODE ADDRESSES STD T1 LDD MA MOVE *CMD* ENTRY TO TABLE *TFIR* CWM RLCB,ON SBN 1 CRM CMD,ON LDC .LWI RLC2 STM RLCA RLC3 LDI T1 MOVE NEXT WORD TO MS DRIVER AREA STI T2 AOD T2 AOD T1 LMC .LWA LAST WORD OF 819 CODE TO MOVE RLCA EQU *-1 * LMC .LWI (LAST WORD OF ISMD SUBSYSTEM CODE TO MOVE) * LMC .LWC (LAST WORD ADDRESS OF CPP CODE TO MOVE) NJN RLC3 IF MORE TO MOVE LDN 40 RAM STSA LJM RLCX RETURN RLCB VFD 48/0L$$,12/LCC .FWA BSS 0 FIRST WORD TO BE MOVED TO MS DRIVER AREA LOC MSFW+5*CTALL .LOA BSS 0 LOAD ADDRESS IN MS DRIVER AREA LFD SPACE 4,10 ** LFD - LOAD 819 DRIVER. * * ENTRY (T4) = FLPP NUMBER. * (CA - CA+1) = CM ADDRESS OF DRIVER RECORD. * * EXIT DRIVER LOADED AND STARTED. * * USES T4, DP - DP+4. * * CALLS IPN, MCI, OFR. * * MACROS DCHAN, RCHAN. LFD SUBR ENTRY/EXIT OPMESS LFDD,2 DISPLAY LOADING MESSAGE LDD CA INITIALIZE DRIVER SHN 14 LMD CA+1 CRD CM ADN 1 CRD DP LDD HN STD CM STD CM+1 LDD T4 SET FLPP NUMBER STD DP LDM LFDC SET FLPP CONFIGURATION STD DP+1 LDM THCC,T4 STM LFDA LDM LFDC+1 LPC ** LFDA EQU *-1 STD DP+2 LDD CA SHN 14 LMD CA+1 CWD CM ADN 1 CWD DP RJM IPN INSERT FLPP NUMBER IN S/R REGISTER LDD T4 SAVE THE FLPP NUMBER STM LFDB LDN MC SET CHANNEL TO SCANNER CHANNEL STD T4 RJM MCI MODIFY CHANNEL INSTRUCTIONS LDN MC RESERVE THE CHANNEL RCHAN LDC FCSB+ENSC ENABLE SCANNER INTERFACE OAN. SC+40 IAN. SC+40 ACN MC ACTIVATE SCANNER CHANNEL LDC FCSB+DSFP DEADSTART THE FLPP OAN. SC+40 IAN. SC+40 LDC FCSB+CPUE CLEAR FLPP ERROR CONDITION OAN. SC+40 IAN. SC+40 LDC FCCL+PPUE CLEAR FLPP ERRORS IN SCR OAN. SC+40 IAN. SC+40 LDC FCCL+CPUE OAN. SC+40 IAN. SC+40 LDC FCCL+DSFP CLEAR DEADSTART OAN. SC+40 IAN. SC+40 RJM OFR OUTPUT DRIVER TO FLPP LDC FCCL+ENSC DISABLE SCANNER CHANNEL OAN. SC+40 IAN. SC+40 LDN MC RELEASE THE SCANNER CHANNEL DCHAN LDC ** RESTORE THE FLPP NUMBER LFDB EQU *-1 STD T4 LJM LFDX RETURN LFDC VFD 3/0 SCANNER CHANNEL VFD 3/1 CPU CHANNEL VFD 3/0 NOT USED VFD 3/4 PARTNER FLPP CHANNEL VFD 3/3 CONTROLLER *A* DATA CHANNEL VFD 3/2 CONTROLLER *A* CONTROL CHANNEL VFD 3/7 CONTROLLER *B* DATA CHANNEL VFD 3/6 CONTROLLER *B* CONTROL CHANNEL LFDD DATA C*TO FLPP.* IPN SPACE 4,10 ** IPN - INSERT FIRST LEVEL PPU NUMBER IN S/C REGISTER. * * ENTRY (T4) = FLPP NUMBER. * * EXIT (A) = 0. * * USES T1, T2. IPN1 LDD T1 CHECK NEXT BIT SHN -1 IPN2 STD T1 LPN 1 ZJN IPN3 IF BIT TO BE CLEARED LDC FCSB&FCCL IPN3 LMD T2 OAN. SC+40 IAN. SC+40 AOD T2 ADVANCE BIT NUMBER LMC FCCL+SCSL+4 NJN IPN1 IF NOT END OF BITS IPN SUBR ENTRY/EXIT LDC FCCL+SCSL PRESET FUNCTION AND BIT NUMBER STD T2 LDD T4 UJN IPN2 ENTER LOOP LFP SPACE 4,10 ** LFP - LOAD FIRST LEVEL PPUS. * * ENTRY (BA) = ADDRESS OF RECORD PREFIX TABLE. * (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * (T7) = ADDRESS OF RECORD NAME. * * EXIT FLPP DRIVER LOADED TO APPROPRIATE FLPPS. * * USES T4. * * CALLS LFR. LFP SUBR ENTRY/EXIT LDC LFPE PRESET TO SWITCH TO 819 DRIVER LOAD LFP1 STM LFPA STM LFPC LDN 0 STD T4 LFP2 LDM LFPD,T4 SWITCH FUNCTIONS STM LFPB ZJN LFP3 IF END OF INSTRUCTIONS TO SWITCH LDM **,T4 LFPA EQU *-1 STM ** LFPB EQU *-1 AOD T4 UJN LFP2 LOOP FOR NEXT ENTRY LFP3 LDC ** TEST FOR END OF LOAD LFPC EQU *-1 LMC LFPF ZJN LFPX IF END OF LOAD RJM LFR LOAD 819 DRIVERS LDC LFPF SWITCH BACK TO FIRMWARE LOADING UJN LFP1 SET UP SWITCH * TABLE OF ADDRESSES TO MODIFY. LFPD CON LFRA CON LFRB CON LFRC CON LFRE CON OFRA CON 0 END OF TABLE * TABLE OF 819 LOAD VALUES. LFPE CON LMNI+MMXC CON THCD CON THCD CON LFD CON PSNI * TABLE OF FIRMWARE LOAD VALUES. LFPF CON LMNI+TCHFL CON TCHF CON TCHF CON ALC CON ACNI+CH SPACE 4,10 ERRNG PPFW-* CODE OVERFLOWS MS DRIVER AREA LOC *O .LWA BSS 0 LWA TO MOVE TO MS DRIVER AREA SPACE 4,10 .FWI BSS 0 FIRST WORD TO BE MOVED TO MS DRIVER AREA LOC MSFW+5*CTALL LCC SPACE 4,15 ** LCC - LOAD CONTROL MODULE CONTROLWARE. * * ENTRY (T7) = ADDRESS OF RECORD NAME. * (BA) = ADDRESS OF RECORD PREFIX TABLE. * (WC) = WORD COUNT OF CURRENT TAPE BLOCK. * * EXIT RECORD LOADED TO APPROPRIATE CHANNELS. * * USES T3 - T7, CM - CM+4, DP - DP+4. * * CALLS CRN, C2D, FCN, IDF, IRN, LFC, MCI, OAR, OFR, STS, TCD, * WOG. * * MACROS DCHAN, DELAY, OPMESS, RCHAN, SFA. LCC SUBR ENTRY/EXIT LDM DSTO LPN 2 NJN LCCX IF LOAD DISABLED BY *AUTOLOAD* LDC TCMR-5 FIND FIRMWARE TYPE STD T7 LCC1 LDN 5 RAD T7 LDI T7 ZJN LCCX IF END OF TABLE LDD T7 RJM CRN COMPARE RECORD NAMES NJN LCC1 IF NO MATCH RJM IRN INSERT RECORD NAME IN MESSAGE RJM LFC LOAD FIRMWARE TO CM LDM 4,T7 SAVE FIRMWARE TYPE STD RN LDN ESTP CRD T7-2 LCC3 SOD T7 MJN LCCX IF END OF EST SFA EST GET EST ENTRY ADK EQDE CRD CM ADK EQAE-EQDE CRD DP LDD CM+3 LMC 2RCM NJN LCC3 IF NOT *CM* DEVICE LDD DP+2 LPN 77 LMD RN NJN LCC3 IF WRONG CONTROLWARE OR NOLOAD SET LDD CM+1 SHN 21-12 PJN LCC4 IF FIRST CHANNEL NOT DOWN LDD CM+2 ZJN LCC3 IF NO SECOND CHANNEL SHN 21-12 MJN LCC3 IF SECOND CHANNEL DOWN LCC4 SHN 12-0+1 LPN 37 STD T4 RJM TCD TEST CHANNEL DOWN MJN LCC3 IF CHANNEL DOWN LDD T4 RJM C2D PUT CHANNEL NUMBER IN MESSAGE STM MSGA+5 OPMESS MSGA,1 DISPLAY LOADING MESSAGE LDN IPPF IDLE *DIO* RJM IDF RJM MCI MODIFY CHANNEL INSTRUCTIONS LDD T4 RCHAN RESERVE CHANNEL OPMESS LCCA,2 *TO CONTROL MODULE.* LCC5 LDN FCCN ISSUE CONNECT FUNCTION RJM FCN LDM DSTO CHECK *GRENADE* LPN 1 SHN 21-0 LMD CM+4 OUTPUT CONTROL MODULE EQUIPMENT NUMBER SHN -11+3 SCN 7 RJM OAR OUTPUT (A) REGISTER ON CHANNEL RJM STS STATUS CONTROLLER NJN LCC5 IF GENERAL STATUS NOT ZERO LDN FCLC ISSUE CONTROLWARE LOAD FROM PP FUNCTION RJM FCN RJM OFR OUTPUT FIRMWARE RECORD LCC6 DELAY RJM STS STATUS CONTROLLER ZJN LCC7 IF COMPLETE SCN 2 ZJN LCC6 IF CONTROL MODULE BUSY SHN -6 RJM C2D STM MSGE+12 LDD FN RJM C2D STM MSGE+13 LDC MSGE RJM WOG WAIT FOR OPERATOR GO LJM LCC5 RETRY LCC7 LDN FCOC ISSUE OPERATION COMPLETE RJM FCN LDD T4 DROP CHANNEL DCHAN LDD IA RESTART *DIO* ADN CH*10-2*10 CRD CM STD CM+4 CWD CM LJM LCC3 PROCESS NEXT EST ENTRY LCCA DATA C*TO CONTROL MODULE.* TCMR SPACE 4,10 ** TCMR - TABLE OF CONTROL MODULE RECORD NAMES. * * ENTRY = 5 WORDS = 48/ RN ,12 / CT * RN = RECORD NAME. * CT = CONTROLWARE TYPE. TCMR BSS 0 VFD 48/0LCMD,12/CMCW VFD 48/0LCM2,12/C2CW CON 0 TERMINATOR SPACE 4,10 ERRNG PPFW-* LOC *O .LWI BSS 0 SPACE 4,10 .FWC BSS 0 FIRST WORD TO BE MOVED TO MS DRIVER AREA LOC MSFW+5*CTALL ACC SPACE 4,20 ** ACC - AUTOLOAD CONCURRENT CHANNEL CONTROLLERS. * * ENTRY (CA - CA+1) = CMA OF FIRMWARE. * (CN+4) = RECORD LENGTH TO LOAD. * (T4) = CHANNEL TO AUTOLOAD. * (DSTO) = DEADSTART OPTIONS. * * EXIT CONTROLLER AUTOLOADED. * CONTROLLER GRENADED IF DEADSTART OPTION SELECTED. * * USES T1, CM - CM+4. * * CALLS ALC, *1CL*. ACC2 RJM ALC AUTOLOAD CONTROLLER ACC SUBR ENTRY/EXIT LDD T4 LPN 77 SET CHANNEL STD CM LPN 40 ZJN ACC2 IF NOT A CONCURRENT CHANNEL LDD CN+4 SET RECORD LENGTH STD CM+1 LDM DSTO SET DEADSTART OPTIONS STD CM+2 LDD CA SET FIRMWARE RECORD ADDRESS STD CM+3 LDD CA+1 STD CM+4 LDD MA CWM ACCA,ON CWD CM LDN 1 SELECT NO QUEUEING OF REQUEST STD CM+1 LDN 44 SET BARREL SELECT SBD T4 SHN 0-21 ADN 2 STD CM+4 MONITOR CPRM REQUEST A CONCURRENT PP LDD CM+1 NJN ACC0 IF CPP ASSIGNED OPMESS ACCB,2 *NO CPP AVAILABLE.* UJN * HANG ACC0 ADN 2 STD T1 ACC1 CRD CM CHECK FOR LOAD COMPLETE LDD CM LMC 7777 ZJP ACCX IF LOAD COMPLETE DELAY LDD T1 UJN ACC1 LOOP ACCA VFD 18/3R1CL, 6/0 ACCB DATA C*NO CPP AVAILABLE.* ERRNG PPFW-* IF OVERFLOW IN PP CODE LOC *O .LWC BSS 0 END OF CODE TO MOVE OVERFLOW TPPA TTL STL/LSL - LOAD SYSTEM LIBRARY. TITLE QUAL LSL IDENT LSL,LSLX *COMMENT STL - COPY SYSTEM TAPE. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. LSL SPACE 4 ** LSL - MAIN ROUTINE. ORG TPPA LSL SUBR ENTRY/EXIT RJM PRS PRESET OVERLAY * LOAD AND INITIALIZE *SYSEDIT*. RJM LCP LOAD CENTRAL PROGRAM LDK UEML READ UEM PRESENT BIT CRD CM LDD CM+4 LPN 2 SHN 10-1 CM COPY FLAG BIT POSITION STD T1 LDN ZERL CRD CM CRD CN LDC 104 (P) = ENTRY ADDRESS STD CN+1 LDD FL (A0) = FL STD CN+2 LDC EEMC SET ERROR EXIT MODE SELECTION LMD T1 STD CM LDD FA (B3) = DISK DEADSTART FLAG STD CM+4 ZJN LSL1 IF TAPE DEADSTART LDN DPPF&LSLF LSL1 LMN LSLF RJM IDF ISSUE *DIO* REQUEST LDD CP STORE EXCHANGE PACKAGE DATA CWD CN ADN 3 CWD CM MONITOR RCPM REQUEST CPU LJM LSLX RETURN LCP SPACE 4 ** LCP - LOAD CENTRAL PROGRAM. * * EXIT CENTRAL PROGRAM LOADED. * * USES T1, T6. * * CALLS RTB, CID. LCP SUBR ENTRY/EXIT RJM RTB READ BLOCK RJM CID CHECK IDENT TABLE LDD WC SET BLOCK WORD COUNT SBD T1 STD T6 LDD BA SET BUFFER ADDRESS STM LCPA LDD RA STORE FIRST BLOCK ADN 1 SHN 6 CWM *,T6 LCPA EQU *-1 LCP1 LDD WC CHECK WORD COUNT SHN -11 ZJN LCPX RETURN IF NOT FULL BLOCK RJM RTB READ NEXT BLOCK LDD RA STORE BLOCK ADN 1 SHN 6 ADD T6 CWM BUF,TH LDD TH ADVANCE STORE ADDRESS RAD T6 UJN LCP1 LOOP TITLE OVERLAID PRESET ROUTINE. USE PRS ERRNG BUF-5-* PRS SPACE 4 ** PRS - PRESET OVERLAY. PRS SUBR ENTRY/EXIT PRS1 PAUSE LDM STLB+3 READ *REC* INPUT REGISTER CRD CM LDD CM+3 CHECK RECOVERY COMPLETE FLAG LMC 7776 NJN PRS1 WAIT UNTIL SET LDD IA RESTART *DIO* ADN CH*10-2*10 CRD CM STD CM+4 CWD CM * REQUEST ALL AVAILABLE STORAGE. LDN DNFL REQUEST NEGATIVE FL RJM NFL LDN CMRL READ CMR LENGTH CRD CN ADN MABL-CMRL READ CM SIZE CRD CM LDD CM+2 SET CM REQUEST = AVAILABLE CM - 100B SHN 14 ADD CM+3 SBD CN+4 SBN 1 STD T1 SHN -13 ZJN PRS2 IF REQUEST .LE. 131K LDC 3777 SET *SYSEDIT* FL = 377700B STD T1 PRS2 LDD T1 REQUEST STORAGE SBN DNFL STD CM+1 LDN 0 SET CM REQUEST STD CM+2 MONITOR RSTM LDD FL ADN DNFL LMD T1 NJN PRS2 LOOP IF NOT ASSIGNED RJM CDJ CREATE DEADSTART JOB * CREATE JOB INPUT FILE FOR DEADSTART CONTROL POINT. LDD MA SET FILE NAME CWM PRSE,ON SBN 1 CRD FN LDN ZERL CRD DP CRD CN LDN NEEQ POINT DEFAULT FAMILY AT NULL EQUIPMENT STD CN+3 STD DP LDC INFT*100 STD FN+4 NFA FNTN STORE FNT IN NFL CWD FN ADN FSTL CWD DP LDN ZERL CRD FN CRD CM LDC 4000 SET EOR ON CONTROL STATEMENT FILE STD CM+1 LDD QA SET EJT ORDINAL STD DP LDC NOJT*100 SET QUEUE FILE DISPOSITION STD FN LDD CP ADN CWQW CWM PRSI,ON WRITE CPU PRIORITY ADN JCIW-CWQW-1 WRITE JOB CONTROL CWM PRSA,ON ADN CPTW-JCIW-1 CWD ZR ADN STLW-CPTW CWM PRSD,ON SET SRU AND TIME LIMITS TO MAXIMUM ADK FLCW-STLW-1 CWM PRSH,ON SET MAXIMUM FL ADK PFCW-FLCW-1 CWD CN ADN TFSW-PFCW CWD DP ADN CSPW-TFSW STORE CONTROL STATEMENT POINTER CWD CM ADN ALMW-CSPW SET UNLIMITED VALIDATION LIMITS CWM PRSD,ON ADN ACLW-ALMW-1 CWM PRSD,ON ADN AACW-ACLW-1 CWM PRSD,ON SBN AACW+1-EOJW STORE END OF JOB INFORMATION CWD FN ADN CPLW-EOJW STORE CPU TIME LIMITS CWM PRSF,ON LDD RA CLEAR (RA+1) SHN 6 ADN 1 CWD ZR ADN 1 CLEAR (RA+2) CWD ZR ADN 1 CLEAR (RA+3) CWD ZR CRD CN SET UP CONFIGUARATION LDK MABL GET HARDWARE OPTIONS CRD CM LDD CM+1 SET CMU STATUS LPN 10 LMN 10 SHN 13-3 STD CN LDD RA SHN 6 ADN CMUR CWD CN ADN FWPR-CMUR CWM PRSB,ON LDM 1,HN STD FA NJN PRS3 IF DISK DEADSTART LJM PRSX RETURN PRS3 LDD MA MOVE FILE NAME TO DIRECT CELLS CWM PRSG,ON SBN 1 CRD FN LDN NEEQ CREATE FNT ENTRY FOR DISK DEADSTART FILE STD FS LDN 5 RETURN IF FILE NOT CREATED IMMEDIATELY STM OVL1-1 EXECUTE 0BF,OVL1 ZJN PRS5 IF FILE CREATED * PROCESS LOCAL FILE LIMIT OR NFL INCREASE NEEDED. * PROCESS ADVANCE EXIT FROM *0BF* IF FNT ENTRY * ALREADY EXISTS. PRS4 MONITOR HNGM HANG PP UJN PRS4 CONTINUE TO HANG PRS5 LDI HN STD FS LDM 1,HN STD FS+1 STD FS+2 LDN FSMS SET FIRST SECTOR STD FS+3 LDN 1 STD FS+4 LCN LOFT-LIFT SET FILE TYPE SHN 6 RAD FN+4 NFA FA,R STORE FNT CWD FN ADN FSTL STORE FST CWD FS LJM PRSX RETURN PRSA VFD 24/0,12/MSSI,6/0,18/0 PRSB VFD 1/1,11/0,12/0,12/SYOT,24/0 PRSD VFD 60/-0 PRSE VFD 42/0LINPUT,18/0 PRSF VFD 60/37777777777777777777B PRSG VFD 42/0LSDF,6/1,6/LIFT,6/0 PRSH VFD 12/3777,12/0,12/3777,24/0 PRSI VFD 2/1,7/MPRS-1,3/0,3/4,9/0,9//SCD/SSSC*JCBE,3/0,24/0 CDJ SPACE 4,10 ** CDJ - CREATE DEADSTART JOB. * * EXIT (QA) = EJT ORDINAL. * (CM+3 - CM+7) = *JSNE* WORD OF EJT ENTRY. * (CN - CN+4) = *SCHE* WORD OF EJT ENTRY. * (DP - DP+4) = *SCLE* WORD OF EJT ENTRY. * * CALLS CFE, CTE. * * MACROS MONITOR. CDJ SUBR ENTRY/EXIT LDN ZERL CRD CN CRD DP LCN 0 SET USER INDEX = 377777 STD CM+6 STD CN+4 LDC 100+37 SET FOT ORDINAL = 1 STD CM+5 LDK NICS*200+EXJS*2 SET CONNECTION/JOB STATUS STD CM+7 LDC /SCD/DSSC*100+SYOT SET SERVICE CLASS/ORIGIN TYPE STD DP LDN NEEQ SET NULL EQUIPMENT STD CN LDN DSCP SET CONTROL POINT STD CN+3 STD CM+1 SELECT NO IOQT ENTRY MONITOR RJSM REQUEST JOB SEQUENCE NUMBER LDC 4000+PEJT CREATE EJT ENTRY RJM CTE ADN SCHE STORE EJT ENTRY CWD CN ADN SCLE-SCHE CWD DP LDD CM+1 SET EJT ORDINAL STD QA LDD RS NJN CDJ1 IF RECOVERY DEADSTART RJM CFE CREATE FAST ATTACH FILES CDJ1 LJM CDJX RETURN CFE SPACE 4,10 ** CFE - CREATE FAST ATTACH FNT ENTRIES. * * USES T6, T7, CM - CM+4. * * MACROS MONITOR. CFE SUBR ENTRY/EXIT LDC MMFL FETCH MACHINE ID CRD CM LDD CM SET MACHINE ID IN RESOURCE FILE NAMES STM CFEC+2 STM CFED+2 LDC CFEB-1 INITIALIZE LIST ADDRESS STD T6 LDN SYFO PRESET ORDINAL CHECK STD T7 ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0 CFE1 STD CM+1 AOD T6 ADVANCE LIST ADDRESS LDI T6 ZJN CFEX IF NO MORE FAST ATTACH FILES STM CFEA LDD MA MOVE FILE NAME TO MESSAGE BUFFER CWM *,ON CFEA EQU *-1 LDN PFNT CREATE FNT ENTRY STD CM+2 MONITOR MTRM AOD T7 ADVANCE ORDINAL CHECK LMD CM+1 ZJN CFE1 IF FNT ORDINAL SEQUENTIAL UJN * HANG CFEB CON CFEC CON CFED CON 0 END OF LIST CFEC VFD 42/0LRSXDAA,6/0,6/SYFT,6/0 CFED VFD 42/0LRSXVAA,6/0,6/SYFT,6/0 SPACE 4,10 ** COMMON DECKS. *CALL COMPCTE *CALL COMPNFL OVL1 EQU *+1 ZERO-LEVEL OVERLAY LOAD ADDRESS ERRNG 7777-OVL1-ZBFL CHECK LENGTH OF *0BF*. SPACE 4 TTL STL - SYSTEM TAPE LOADER. END