IDENT 1LC,LCW PERIPH BASE MIXED SST TITLE 1LC - LOAD BUFFER CONTROLWARE. *COMMENT 1LC - LOAD BUFFER CONTROLWARE ROUTINE. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. 1LC SPACE 4,10 ***** 1LC - LOAD BUFFER CONTROLWARE. * * W. J. SMITH. 79/07/21. * J. L. LARSON. 83/06/14. * * DOWNLOAD DISK CONTROLWARE ON SPECIFIED CHANNEL. 1LC SPACE 4,10 *** *1LC*, IN CONJUNCTION WITH THE CPU PROGRAM *LOADBC, WILL * DOWNLOAD CONTROLWARE TO THE REQUESTED CHANNEL AND * CONTROLLER. * * CALL - * *T,IR 18/ *1LC*,6/ 0,18/ DADDR,18/ LADDR * DADDR FET ADDRESS FOR CONTROLWARE DUMP. * = 0 IF CONTROLWARE NOT TO BE DUMPED BEFORE RELOAD. * LADDR FET ADDRESS OF CONTROLWARE TO LOAD. * * *LOADBC* USES RECALL MACRO WHEN CALLING *1LC*. 1LC SPACE 4,20 *** *1LC* IS A PP PROGRAM CALLED BY THE CPU PROGRAM *LOADBC* * TO DOWNLOAD DISK CONTROLWARE ON A SPECIFIED CHANNEL OR TO * DOWNLOAD CONTROL MODULE CONTROLWARE TO A SPECIFIED CONTROL * MODULE. THE CONTROLWORD AT FET+8 IN *LOADBC* FL CONTAINS * EITHER THE CHANNEL NUMBER OR THE CONTROL MODULE EST ORDINAL * (IN WHICH CASE BIT 2**11 IS SET). * THE CONTROLWARE IS CHECKED FOR ITS VALIDITY, READ FROM FIELD * LENGTH OF *LOADBC* IN SEGMENTS AND DOWNLOADED. CONTROLLER * IS STATUSED FOR ITS FUNCTIONALITY (GENERAL STATUS OF ZERO * INDICATES CORRECT CHECKSUM) AND A RESPONSE CODE OF ZERO IS * RETURNED IN FET+0 ON A SUCCESSFUL LOAD. A NON-ZERO RESPONSE * CODE IS RETURNED FOR UNSUCCESSFUL LOADS. * IF A NONZERO DUMP CONTROLWARE FET ADDRESS IS ALSO SPECIFIED, * THE CONTENTS OF THE 7255 ADAPTOR, THE 7155 CONTROLLER (FMD OR * DEMA) OR THE 7165 CONTROLLER WILL BE DUMPED TO THE BUFFER * BEFORE THE RELOAD IS ATTEMPTED. A ZERO RESPONSE CODE IS * RETURNED TO THE DUMP FET+0 ON A SUCCESSFUL DUMP. * A NON-ZERO RESPONSE CODE IS RETURNED FOR BUFFER ERROR * CONDITIONS, UNSUCCESSFUL DUMPS, AND FOR DUMP REQUESTS OF * CONTROLLERS/ADAPTORS NOT LISTED ABOVE. THE NUMBER OF THE * CHANNEL THAT WAS USED TO LOAD CONTROLWARE IS RETURNED IN * FET+8, BYTE 0. 1LC SPACE 4,10 *** DAYFILE MESSAGES. * * * FET ADDRESS OUT OF RANGE.* - THE CONTROLWARE DUMP OR * LOAD FET ADDRESS IS .LE. 1 OR EXTENDS PAST FL. SPACE 4,10 * MACROS. *CALL COMPMAC *CALL COMSCPS *CALL COMPCHM *CALL COMSDSL *CALL COMSPIM *CALL COMSSSD SPACE 4,10 * ASSEMBLY CONSTANTS. BUFL EQU 1000 LENGTH OF CONTROLWARE BLOCK FCDC EQU 701 DUMP 7165 CONTROLLER MEMORY FCLA EQU 500 LOAD ADDRESS AND LENGTH (7165 DUMP) FCAL EQU 414 AUTOLOAD FUNCTION CODE FCLC EQU 71 CONTROL MODULE LOAD FROM PP FUNCTION FCAR EQU 67 AUTOLOAD WITH NO DROP OF DRIVE RESERVES FCDM EQU 63 DUMP CONTROLLER MEMORY FUNCTION CODE FCMP EQU 62 MANIPULATE PROCESSOR FUNCTION CODE FCST EQU 12 GENERAL STATUS FUNCTION CODE FCOC EQU 10 OPERATION COMPLETE CODE FCCN EQU 0 CONNECT FUNCTION CODE SPACE 4,10 * 7155 CONTROLLER DUMP ASSEMBLY CONSTANTS. CTSZ EQU 8192D 7155 CONTROLLER MEMORY SIZE (16 BIT WORDS) CWDB EQU 32D CONTROLLER WORDS PER MEMORY DUMP BLOCK PBDB EQU CWDB*2 PP BYTES PER DUMP BLOCK NCBD EQU CTSZ/CWDB NUMBER OF CONTROLLER BLOCKS TO DUMP SPACE 4,10 * RESPONSE CODES RETURNED TO LOAD FET+0. RC0 EQU 0 CONTROLWARE LOAD COMPLETE RC1 EQU 1 * USER NOT SYSTEM ORIGIN.* RC2 EQU 2 * SPECIFIED CHANNEL IS IN USE.* RC3 EQU 3 RESERVED BY CPU ROUTINE *LOADBC* RC4 EQU 4 RESERVED BY CPU ROUTINE *LOADBC* RC5 EQU 5 RESERVED BY CPU ROUTINE *LOADBC* RC6 EQU 6 RESERVED BY CPU ROUTINE *LOADBC* RC7 EQU 7 RESERVED BY CPU ROUTINE *LOADBC* RC10 EQU 10 RESERVED BY CPU ROUTINE *LOADBC* RC11 EQU 11 * SYSTEM NOT IN ENGR MODE.* RC12 EQU 12 * BUFFER ARGUMENT ERROR.* RC13 EQU 13 CDC RESERVED RC14 EQU 14 * CONTROLWARE LOAD ALREADY IN PROGRESS.* RC15 EQU 15 * NO 77 TABLE IN CONTROLWARE RECORD.* RC16 EQU 16 * NO 52 TABLE IN CONTROLWARE RECORD.* RC17 EQU 17 * LENGTH IN 52 TABLE .NE. FET.* RC20 EQU 20 RESERVED BY CPU ROUTINE *LOADBC* RC21 EQU 21 * NOT CONTROL MODULE EST ORDINAL.* RC22 EQU 22 CDC RESERVED RC23 EQU 23 CDC RESERVED RC24 EQU 24 CDC RESERVED RC25 EQU 25 CDC RESERVED RC26 EQU 26 CDC RESERVED RC27 EQU 27 CDC RESERVED RC30 EQU 30 * CONTROLLER DID NOT TAKE ALL CONTROLWARE* RC31 EQU 31 * GENERAL STATUS = NNNN.* RC32 EQU 32 * FUNCTION TIMED OUT=NNNN.* RC33 EQU 33 * NO GENERAL STATUS RECEIVED.* RC34 EQU 34 * CHXX, CONTROLLER RESERVED.* SPACE 4,10 * DUMP CONTROLWARE RESPONSE CODES RETURNED TO DUMP FET+0. DR0 EQU 0 * CONTROLLER DUMP COMPLETE.* DR1 EQU 1 * DUMP BUFFER ARGUMENT ERROR.* DR2 EQU 2 * INSUFFICIENT DUMP BUFFER SPACE.* DR3 EQU 3 * NOT CORRECT CONTROLLER TYPE FOR DUMP.* DR4 EQU 4 * CONTROLLER DUMP UNSUCCESSFUL.* SPACE 4,10 * DIRECT CORE ASSIGNMENTS. BC EQU 20 BUFFER CONTROLLER CHANNEL NUMBER ST EQU 21 CONTROLLER GENERAL STATUS WC EQU 22 CONTROLWARE CM WORD COUNT FN EQU 23 LAST FUNCTION ISSUED TO CONTROLLER RC EQU 26 RESPONSE CODE DR EQU 27 DUMP FET RESPONSE CODE DP EQU 30 - 34 DATA POINTERS (5 LOCATIONS) CT EQU 35 CONTROLWARE TYPE CE EQU 36 - 37 CHANNEL CONTROLWARE ENTRY DB EQU 40 - 44 DUMP FET BUFFER POINTERS CS EQU 47 CHANNEL SPECIFIED ON CALL STATUS CN EQU 60 - 64 CM WORD BUFFER CO EQU 65 CONTROL MODULE EST ORDINAL EQ EQU 66 CONTROL MODULE EQUIPMENT NUMBER CF EQU 67 CHANNEL RESERVED BY *1LC* FLAG TITLE MAIN PROGRAM. ORG PPFW LCW SPACE 4,10 ** LCW - LOAD BUFFER CONTROLWARE MAIN PROGRAM. LCW BSS 0 ENTRY RJM PRS PRESET LOAD CONTROLWARE STD RC LMK RC14 ZJP LCW5 IF RELOAD ALREADY IN PROGRESS LMK RC14 NJN LCW2.1 IF OTHER ERROR LDD CO NJN LCW0 IF CONTROL MODULE SPECIFIED RJM DCT DUMP CONTROLLER LCW0 RJM LCT LOAD CONTROLWARE NJN LCW2 IF ERROR RESPONSE LDD CS ZJN LCW1 IF DRIVER CALL LDN FCOC RJM FNC NJN LCW2 IF FUNCTION TIMEOUT LCW1 LDD ST CHECK STATUS ERRNZ RC0 CODE DEPENDS ON VALUE ZJN LCW2 IF NO ERROR LDN RC31 * GENERAL STATUS = NNNN.* LCW2 STD RC LCW2.1 LDD CS ZJN LCW3 IF DRIVER CALL RJM DCH DROP CHANNEL ASSIGNMENT UJN LCW4 CLEAR CHANNEL ENTRY INTERLOCK LCW3 AOM CHTI+1*5 CLEAR SYSTEM REQUEST FLAG AOM LCWA INCREMENT CONTROLLER LOADED COUNT LCW4 LDM CHTI+4 LCWA ADN 0 * ADN 1 (DRIVER CALL) STM CHTI+1*5+4 RJM ICE CLEAR CHANNEL ENTRY INTERLOCK LDD CM+1 NJN LCW4 IF VERIFY OF LOAD COUNT FAILED LCW5 RJM SDR SET DUMP FET RESPONSE RJM GLA FET LOAD FET ADDRESS CRD CM READ LOAD FET+0 LDN ZERL CRD CN LDD RC GET REPLY CODE SHN 1 LMN 1 SET COMPLETE BIT STD CM+4 LMN RC32*2+1 NJN LCW6 IF NOT FUNCTION TIME OUT ERROR LDD FN UJN LCW7 RETURN LAST FUNCTION TO FET LCW6 LDD ST RETURN GENERAL STATUS TO FET LCW7 STD CN+4 LDD BC RETURN CHANNEL NUMBER STD CN RJM GLA GET LOAD FET ADDRESS ADN 8D CWD CN WRITE FET+8 RESPONSE DATA SBN 8D CWD CM WRITE FET+0 COMPLETION STATUS MONITOR DPPM DROP PP LJM PPR EXIT TO PP RESIDENT TITLE SUBROUTINES. CCS SPACE 4,10 ** CCS - CHECK CONTROLLER STATUS. * * EXIT (A) = 0 IF STATUS RECEIVED. * (A) = *RC22* IF STATUS FUNCTION TIMEOUT. * (A) = *RC23* IF STATUS NOT RECEIVED. * (ST) = STATUS. * * CALLS FNC. CSS3 EJM CSS1,CH IF DATA NOT PRESENT LDN 1 IAM ST,CH DCN CH NJN CSS2 IF NO STATUS RECEIVED CCS SUBR ENTRY/EXIT LDN FCST CHECK STATUS RJM FNC NJN CCSX IF FUNCTION TIMEOUT ACN CH LDD HN STD T0 CSS1 ADN 1 NJN CSS3 IF NOT TIMEOUT SOD T0 NJN CSS3 IF NOT TIMEOUT CSS2 DCN CH LDN RC33 * NO GENERAL STATUS RECEIVED.* UJN CCSX RETURN DCH SPACE 4,10 ** DCH - DROP CHANNEL ASSIGNMENT. * * ENTRY (BC) = CHANNEL NUMBER. * (CF) = 0 IF CHANNEL NOT RESERVED BY *1LC*. * * EXIT (CF) = 0. * * MACROS DCHAN. DCH SUBR ENTRY/EXIT LDD CF ZJN DCHX IF CHANNEL NOT RESERVED BY *1LC* LDD BC DCHAN * LDN 0 STD CF UJN DCHX RETURN DCT SPACE 4,15 ** DCT - DUMP CONTROLLER MEMORY. * * ENTRY (CT) = CHANNEL CONTROLWARE ENTRY. * (DB - DB+4) = DUMP FET *IN* POINTER (SET TO *FIRST*). * (DR) = *DR4* (CONTROLLER DUMP UNSUCCESSFUL) STATUS. * * EXIT (DR) = DUMP FET RESPONSE CODE. * * USES T1, T2, T3, T4, CM - CM+4. * * CALLS D7C, FNC, GDA, SDR, WBC. DCT8 RJM D7C DUMP 7165 CONTROLLER MEMORY NJN DCTX IF DUMP NOT SUCCESSFUL DCT9 RJM GDA GET DUMP FET ADDRESS ADN 2 UPDATE DUMP FET *IN* POINTER CWD DB LDN DR0 DCT10 STD DR SAVE DUMP FET RESPONSE CODE DCT SUBR ENTRY/EXIT RJM GDA GET DUMP FET ADDRESS ZJN DCTX IF NO DUMP REQUESTED LDN ZERL CLEAR MANIPULATE PROCESSOR PARAMETERS CRD CM LDN 2 SET TO DUMP CONTROLLER MEMORY STD CM STD T4 PRESET 8K CONTROLLER TYPE INDEX LDD CT CHECK CONTROLWARE TYPE LPN 37 LMN FMCW ZJN DCT1 IF MA721 CONTROLWARE FOR 7155 FMD LMN PHCW&FMCW ZJN DCT1 IF MA722 CONTROLWARE FOR 7155 DEMA LMN CCCW&PHCW ZJN DCT8 IF 7165 CONTROLLER LMN IDCW&CCCW ZJN DCT0 IF 7255 ADAPTOR LDN DR3 * NOT CORRECT CONTROLLER TYPE FOR DUMP.* UJN DCT10 SAVE RESPONSE CODE DCT0 LDN 40 SET 7255 ADAPTOR MEMORY ADDRESS STD CM+1 SHN 1 SET MEMORY ADDRESS INCREMENT STM DCTB LDN 1 SET 7255 CONTROLLER TYPE INDEX STD T4 DCT1 LDK NFBT SET NUMBER OF FULL BUFFERS STD T2 LDK CWFB SET CM WORDS IN FULL BUFFER STD T3 DCT2 LDK MXDB SET NUMBER OF BLOCKS IN FULL BUFFER STD T1 DCT3 LDC DBUF RESET PP DUMP BUFFER ADDRESS STM DCTA DCT4 LDN FCMP INITIATE MANIPULATE PROCESSOR FUNCTION RJM FNC DCT5 NJP DCTX IF FUNCTION TIMEOUT ACN CH LDN 5 TRANSFER PARAMETERS OAM CM,CH FJM *,CH IF CHANNEL FULL DCN CH NJN DCT5 IF NOT ALL PARAMETERS TAKEN LDN FCDM DUMP CONTROLLER MEMORY RJM FNC NJN DCT5 IF FUNCTION TIMEOUT ACN CH LDD HN ERRNZ PBDB-100B CODE DEPENDS ON VALUE IAM DBUF,CH READ CONTROLLER MEMORY DUMP BLOCK DCTA EQU *-1 NJN DCT5 IF NOT ALL DATA TRANSFERRED LDD HN ADVANCE PP DUMP BUFFER ADDRESS RAM DCTA LDC CWDB ADVANCE CONTROLLER MEMORY ADDRESS DCTB EQU *-1 * LDC 100 (ADVANCE 7255 ADAPTOR ADDRESS) RAD CM+2 SHN 21-10 PJN DCT6 IF NOT 8 BIT OVERFLOW STD CM+2 CLEAR LOWER 8 BITS OF CONTROLLER ADDRESS AOD CM+1 INCREMENT UPPER 8 BITS OF ADDRESS DCT6 SOD T1 NJP DCT4 IF MORE BLOCKS TO TRANSFER TO BUFFER RJM WBC WRITE BUFFER TO CM SOD T2 MJN DCT7 IF DUMP COMPLETE NJP DCT2 IF MORE FULL BUFFERS TO DUMP LDK RPBB SET REMAINING PARTIAL BUFFER BLOCKS ZJN DCT7 IF NO PARTIAL BUFFER STD T1 LDK CWPB SET CM WORDS IN LAST PARTIAL BUFFER STD T3 LDN ZERL CLEAR LAST CM WORD CRM DBUF+RPBB*PBDB,ON LJM DCT3 TRANSFER LAST PARTIAL BUFFER DCT7 LJM DCT9 UPDATE FET D7C SPACE 4,10 ** D7C - DUMP 7165 CONTROLLER MEMORY. * * ENTRY (CM+1) = 0. * * EXIT (A) = 0 IF DUMP SUCCESSFUL. * * USES CM+1, T1, T2, T3, T4. * * CALLS FNC, WBC. D7C SUBR ENTRY/EXIT LDN 4 SET 7165 CONTROLLER TYPE INDEX STD T4 LDN NBBD SET NUMBER OF CONTROLLER BLOCKS TO DUMP STD T2 LDK CMWF SET NUMBER OF CM WORDS IN FULL BUFFER STD T3 LDK CTDB SET NUMBER OF CONTROLLER WORDS IN BLOCK STD T1 D7C1 LDC FCLA LOAD ADDRESS AND LENGTH D7CA EQU *-1 RJM FNC D7C2 NJN D7CX IF FUNCTION TIMEOUT ACN CH LDD CM+1 SEND BOTTOM 12 BITS OF ADDRESS OAN CH LDD T1 SEND LENGTH OAN CH FJM *,CH DCN CH LDC FCDC ISSUE DIAGNOSTIC READ RJM FNC NJN D7CX IF FUNCTION TIMEOUT ACN CH LDD T1 SHN 1 IAM DBUF,CH READ CONTROLLER MEMORY BLOCK NJN D7C2 IF NOT ALL DATA TRANSFERRED RJM WBC WRITE BUFFER TO CM SOD T2 PJN D7C3 IF DUMP NOT COMPLETE LDN 0 LJM D7CX RETURN D7C3 LDC CTDB UPDATE CONTROLLER MEMORY ADDRESS RAD CM+1 SHN -14 RAM D7CA LDD T2 NJN D7C4 IF MORE FULL BLOCKS TO DUMP LDK CMWP SET NUMBER OF CM WORDS IN PARTIAL BLOCK STD T3 LDK CTPB SET NUMBER OF PP BYTES IN PARTIAL BLOCK STD T1 D7C4 LJM D7C1 DUMP PARTIAL BLOCK FNC SPACE 4,10 ** FNC - ISSUE FUNCTION. * * ENTRY (A) = FUNCTION CODE. * * EXIT (A) = 0 IF FUNCTION ACCEPTED. * (A) = *RC22* IF FUNCTION TIMEOUT. FNC3 LDN 0 FNC SUBR ENTRY/EXIT STD FN SAVE FUNCTION ISSUED IJM FNC1,CH IF CONTROLLER READY DCN CH FNC1 FAN CH LDD HN FUNCTION TIMEOUT OUTER DELAY STD T0 FNC2 ADD ON IJM FNC3,CH IF FUNCTION ACCEPTED NJN FNC2 IF NOT FUNCTION TIMEOUT SOD T0 NJN FNC2 IF NOT FUNCTION TIMEOUT DCN CH LDN RC32 * FUNCTION TIMED OUT=NNNN.* UJN FNCX EXIT GDA SPACE 4,10 ** GDA - GET DUMP FET ADDRESS. * * ENTRY (IR+2 - IR+3) = DUMP FET ADDRESS. * * EXIT (A) = ABSOLUTE DUMP FET ADDRESS. * (A) = 0 IF NO DUMP REQUESTED. GDA SUBR ENTRY/EXIT LDD IR+3 GET DUMP FET ADDRESS SCN 77 SHN 6 ADD IR+2 ZJN GDAX IF NO DUMP REQUESTED ADD RA SHN 6 UJN GDAX RETURN GLA SPACE 4,10 ** GLA - GET LOAD FET ADDRESS. * * ENTRY (IR+3 - IR+4) = LOAD FET ADDRESS. * * EXIT (A) = ABSOLUTE LOAD FET ADDRESS. GLA SUBR ENTRY/EXIT LDD IR+3 GET LOAD FET ADDRESS LPN 37 SHN 6 ADD RA SHN 6 ADD IR+4 UJN GLAX RETURN ICE SPACE 4,10 ** ICE - INTERLOCK CONTROLWARE LOAD BITS. * * ENTRY (CE - CE+1) = CONTROLWARE LOAD BIT ADDRESS. * (CHTI) = CONTROLWARE INTERLOCK *UTEM* PARAMETERS. * * EXIT (CM+1) = *UTEM* RETURN STATUS. * * USES CM+1, CM+3, CM+4, T1. * * MACROS MONITOR. ICE SUBR ENTRY/EXIT LDN 2 STD CM+1 SET NUMBER OF *UTEM* PARAMETER WORDS STD T1 LDD CE SET CONROLWARE LOAD BIT ADDRESS STD CM+3 LDD CE+1 STD CM+4 LDD MA CWM CHTI,T1 SET/CLEAR CONTROLWARE LOAD INTERLOCK MONITOR UTEM LDD MA GET NEW VALUES CRM CHTI,T1 UJN ICEX RETURN CHTI VFD 1/1,5/0,6/2,6/34D,42/0 VERIFY INTERLOCKS * VFD 1/1,5/0,6/4,6/30D,42/0 VERIFY RELOAD COUNT/DRIVER BIT VFD 1/0,5/0,6/1,6/34D,42/1 SET LOAD IN PROGRESS * VFD 1/0,5/0,6/5,6/30D,42/0 CLEAR INTERLOCK/SET LOAD COUNT ILF SPACE 4,10 ** ILF - ISSUE LOAD FUNCTION. * * ENTRY (CO) = 0 IF NOT CONTROL MODULE RELOAD. * (CS) = 0 IF DRIVER CALL. * (EQ) = CONTROL MODULE EQUIPMENT NUMBER. * * CALLS CCS, FNC. ILF2 LDD CS ILFA ZJN ILF3 IF DRIVER CALL * PSN (*FCAR* FUNCTION NOT SUPPORTED) LDC FCAL&FCAR ILF3 LMN FCAR ILF4 RJM FNC ISSUE FUNCTION ILF SUBR ENTRY/EXIT LDD CO ZJN ILF2 IF NOT CONTROL MODULE RELOAD ILF1 LDN FCCN RJM FNC ISSUE CONNECT FUNCTION NJN ILFX IF FUNCTION TIMEOUT ACN CH LDD EQ OUTPUT CONTROL MODULE EQUIPMENT NUMBER SHN 3 OAN CH FJM *,CH IF CHANNEL FULL DCN CH RJM CCS STATUS CONTROLLER NJN ILFX IF ERROR LDD ST NJN ILF1 IF GENERAL STATUS NOT ZERO LDN FCLC UJN ILF4 ISSUE CONTROLWARE LOAD FROM PP FUNCTION LCT SPACE 4,15 ** LCT - LOAD CONTROLWARE TO CONTROLLER. * * ENTRY (CS) = CHANNEL SPECIFIED ON CALL STATUS. * (DP+3 - DP+4) = FWA CONTROLWARE RECORD (77 TABLE). * (EQ) = CONTROL MODULE EQUIPMENT NUMBER IF SPECIFIED. * (WC) = CM WORD COUNT OF CONTROLWARE RECORD. * * EXIT (A) = 0 IF LOAD COMPLETE. * (A) = *RC30* IF CONTROLLER DID NOT TAKE ALL * CONTROLWARE. * (A) = *RC22* IF FUNCTION TIMEOUT. * (A) = *RC23* IF STATUS NOT RECEIVED. * * USES T1, WC, DP+3 - DP+4. * * CALLS CCS, ILF. LCT4 FJM *,CH IF LAST WORD STILL ON CHANNEL DCN CH LCT5 DELAY RJM CCS CHECK STATUS NJN LCTX IF ERROR LDD ST SBN 2 ZJN LCT5 IF CONTROLLER BUSY LDN 0 LCT SUBR ENTRY/EXIT RJM ILF ISSUE LOAD FUNCTION NJN LCTX IF FUNCTION TIMEOUT LDD RA SHN 6 RAD DP+4 SHN -14 RAD DP+3 LDD TH ERRNZ BUFL-1000 CODE DEPENDS ON VALUE STD T1 ACN CH ACTIVATE CHANNEL FOR OUTPUT LCT2 LDD WC SET BLOCK WORD COUNT ZJN LCT4 IF END OF CONTROLWARE SBD T1 PJN LCT3 IF DATA OVERFLOWS BUFFER LDD WC STD T1 LDN 0 LCT3 STD WC LDD DP+3 SET CONTROLWARE DATA ADDRESS SHN 14 ADD DP+4 CRM BUF,T1 READ BLOCK OF CONTROLWARE STD DP+4 SAVE NEXT CM ADDRESS FOR CONTROLWARE READ SHN -14 STD DP+3 LDD T1 OUTPUT BLOCK TO CONTROLLER SHN 2 ADD T1 OAM BUF,CH FJM *,CH IF CHANNEL FULL ZJN LCT2 IF ALL DATA TAKEN LDN RC30 * CONTROLLER DID NOT TAKE ALL CONTROLWARE* LJM LCTX RETURN RCT SPACE 4,10 ** RCT - READ CHANNEL TABLE. * * ENTRY (A) = CHANNEL NUMBER. * * EXIT (A) = ADDRESS OF CHANNEL RESERVATION TABLE WORD. * (BC) = CHANNEL NUMBER. * (T6) = BYTE ADDRESS OF CHANNEL RESERVATION STATUS. * (CM - CM+4) = CHANNEL RESERVATION TABLE WORD. * * USES T0. RCT SUBR ENTRY/EXIT LPN 77 STD BC STD T6 LCN 0 STD T0 LDK CHTP GET CHANNEL TABLE ADDRESS CRD CM RCT1 AOD T0 LCN 5 RAD T6 PJN RCT1 IF CHANNEL WORD NOT REACHED ADN CM+5 STD T6 LDD CM+2 READ CHANNEL RESERVATION TABLE SHN 14 LMD CM+3 ADD T0 CRD CM UJN RCTX RETURN SDR SPACE 4,10 ** SDR - SET DUMP FET RESPONSE. * * ENTRY (DR) = DUMP FET RESPONSE CODE. * (IR+2 - IR+3) = DUMP FET ADDRESS. * * EXIT (IR+2 - IR+3) = DUMP FET ADDRESS CLEARED. * * USES CM - CM+4. * * CALLS GDA. SDR SUBR ENTRY/EXIT RJM GDA GET DUMP FET ADDRESS ZJN SDRX IF NO DUMP REQUESTED CRD CM LDD DR RETURN RESPONSE CODE SHN 1 LMN 1 SET COMPLETE BIT STD CM+4 RJM GDA CWD CM LDN 0 CLEAR DUMP FET ADDRESS STD IR+2 LDD IR+3 LPN 77 STD IR+3 UJN SDRX RETURN WBC SPACE 4,10 ** WBC - WRITE DUMP BUFFER TO CM. * * ENTRY (T3) = NUMBER OF CM WORDS IN BUFFER BLOCK. * (T4) = CONTROLLER TYPE INDEX IF FIRST BLOCK. * = 0 IF FIRST BLOCK ALREADY WRITTEN. * (DB+3 - DB+4) = DUMP FET *IN* POINTER. * * EXIT BUFFER BLOCK WRITTEN TO CM. * DUMP FET *IN* POINTER UPDATED. WBC SUBR ENTRY/EXIT LDD T4 SET CONTROLLER TYPE INDEX IN BYTE 0 ZJN WBC1 IF NOT FIRST BLOCK STM BUF LDN 0 SET FIRST BLOCK WRITTEN STD T4 WBC1 LDD DB+3 WRITE BUFFER TO CM SHN 6 ADD RA SHN 6 ADD DB+4 CWM DBUF,T3 LDD T3 ADVANCE DUMP FET *IN* POINTER RAD DB+4 SHN -14 RAD DB+3 UJN WBCX RETURN TITLE BUFFERS. USE BUFFERS USE * BUF EQU * CONTROLWARE LOAD BUFFER ERRNG EPFW-BUF-BUFL PPU MEMORY OVERFLOW DBUF EQU * CONTROLLER DUMP BUFFER DBUFL EQU EPFW-DBUF-5 MAXIMUM BUFFER SIZE * 7155 DUMP BUFFER ASSEMBLY CONSTANTS. MXDB EQU DBUFL/PBDB/5*5 MAXIMUM 7155 DUMP BLOCKS IN PP BUFFER NFBT EQU NCBD/MXDB NUMBER OF FULL BUFFERS TO TRANSFER RPBB EQU NCBD-NFBT*MXDB REMAINING PARTIAL BUFFER BLOCKS CWFB EQU MXDB*PBDB/5 CM WORDS IN FULL BUFFER PBPB EQU RPBB*PBDB+4 PP BYTES IN LAST PARTIAL BUFFER (ROUNDED) CWPB EQU PBPB/5 CM WORDS IN LAST PARTIAL BUFFER * 7165 DUMP BUFFER ASSEMBLY CONSTANTS. PPDB EQU DBUFL/12*12 PP BYTES PER FULL DUMP BLOCK CCSZ EQU 40000 7165 CONTROLLER MEMORY SIZE (16 BIT WORDS) CTDB EQU PPDB/2 CONTROLLER WORDS PER FULL DUMP BLOCK NBBD EQU CCSZ/CTDB NUMBER OF CONTROLLER BLOCKS TO DUMP CTPB EQU CCSZ-NBBD*CTDB CONTROLLER WORDS IN PARTIAL DUMP BLOCK CMWF EQU PPDB/5 NUMBER OF CM WORDS PER FULL BLOCK CPPB EQU CTPB*2+4 PP BYTES PER PARTIAL BLOCK (ROUNDED) CMWP EQU CPPB/5 NUMBER OF CM WORDS PER PARTIAL BLOCK DBSZ EQU CMWF*NBBD+CMWP CM DUMP BUFFER SIZE OVERFLOW TITLE PRESET. PRS SPACE 4,20 ** PRS - PRESET LOAD CONTROLWARE. * * ENTRY (IR+2 - IR+3) = DUMP FET ADDRESS. * (IR+3 - IR+4) = LOAD FET ADDRESS. * (LOAD FET+8) BIT 2**11 = 1 IF BOTTOM 9 BITS = * CONTROL MODULE EST ORDINAL. * BIT 2**10 = 0 IF DRIVER CALL. * * EXIT (A) = ERROR RESPONSE. * (BC) = CHANNEL NUMBER. * (CS) = 0 IF DRIVER CALL. * (CT) = CHANNEL CONTROLWARE TYPE. * (CE - CE+1) = CONTROLWARE LOAD BITS POINTER. * (CHTI) SET FOR CLEAR OF CONTROLWARE TABLE INTERLOCK. * (DB - DB+4) = *IN* POINTER FOR DUMP FET. * (DP+3 - DP+4) = FWA OF CONTROLWARE RECORD (77 TABLE). * (DR) = INITIAL DUMP FET RESPONSE. * (WC) = CM WORD COUNT OF CONTROLWARE RECORD. * IF A CHANNEL WAS SPECIFIED ON THE CALL - * (CF) = 0. * (CO) = 0. * IF A CONTROL MODULE WAS SPECIFIED ON THE CALL - * (CO) = CONTROL MODULE EST ORDINAL. * (CF) = 1 (CHANNEL RESERVED). * (EQ) = CONTROL MODULE EQUIPMENT NUMBER. * * USES T6, T7, CM - CM+4, CN - CN+4, DB-2 - DB+7, T0 - T4. * * CALLS DCH, GDA, GLA, ICE, RCT, RSC, SCC, SDR, VFP. PRS18 LDN RC1 * USER NOT SYSTEM ORIGIN.* PRS SUBR ENTRY/EXIT LDN DR4 PRESET CONTROLLER DUMP UNSUCCESSFUL STATUS STD DR LDN 0 INITIALIZE NO CONTROL MODULE EST ORDINAL STD CO STD CF INITIALIZE NO CHANNEL RESERVED LDD IR+3 VALIDATE CONTROLWARE LOAD FET LPN 77 SHN 14 ADD IR+4 RJM VFP NJN PRS1 IF INVALID BUFFER PARAMETERS LDD CP ADK JOTW CRD CM LDD CM+3 LMK SYOT NJN PRS18 IF NOT SYSTEM ORIGIN LDD MA GET LOAD FET PARAMETERS ADN 2 CRD DP *IN* AND *OUT* POINTERS ADN 1 CRD CM GET FET LENGTH LDD CM LPN 77 SBN 4 PJN PRS2 IF LOAD FET LONG ENOUGH PRS1 LDN RC12 * BUFFER ARGUMENT ERROR.* UJN PRSX RETURN PRS2 LDD IR+3 VALIDATE CONTROLWARE DUMP FET SCN 77 SHN 6 LMD IR+2 SHN 6 ZJN PRS4 IF NO CONTROLLER DUMP REQUESTED RJM VFP NJN PRS3 IF INVALID BUFFER PARAMETERS LDD MA GET DUMP FET PARAMETERS ADN 3 CRD DB+2 *FIRST* AND *LIMIT* POINTERS LDN ZERL CRD DB-2 RJM GDA GET DUMP FET ADDRESS ADN 2 REWIND FET (SET *IN* = *OUT* = *FIRST*) CWD DB ADN 1 CWD DB LDD DB+2+3 VERIFY DUMP BUFFER SIZE SBD DB+2+1 SHN 14 ADD DB+2+4 SBD DB+2+2 SBK DBSZ+1 REQUIRED CM DUMP BUFFER SIZE PJN PRS4 IF DUMP BUFFER LARGE ENOUGH LDN DR2 * INSUFFICIENT DUMP BUFFER SPACE.* PRS3 STD DR RJM SDR SET DUMP FET RESPONSE PRS4 LDD DP+3 LOAD FET *OUT* POINTER SHN 6 ADD RA SHN 6 ADD DP+4 CRD CM LDD CM LMC 7700 ZJN PRS5 IF 77 TABLE PRESENT LDN RC15 * NO 77 TABLE IN CONTROLWARE RECORD.* UJN PRS6 RETURN PRS5 LDD DP+3 SHN 6 ADD RA SHN 6 ADD DP+4 ADD CM+1 ADD 77 TABLE LENGTH ADN 1 CRD CN READ EXPECTED 52 TABLE LDD CN LMC 5200 ZJN PRS7 IF 52 TABLE PRESENT LDN RC16 * NO 52 TABLE IN CONTROLWARE RECORD.* PRS6 LJM PRSX RETURN PRS7 STD CE+1 CLEAR CHANNEL ENTRY POINTER LDD DP+3 SHN 14 ADD DP+4 ADD CM+1 ADD 77 TABLE LENGTH - 1 ADN 2 52 TABLE ADDRESS + LENGTH STD DP+4 RESET *OUT* POINTER TO FWA CONTROLWARE SHN -14 STD DP+3 LDD CN+4 LENGTH OF CONTROLWARE SBN 1 ADJUST FOR 52 TABLE STD WC CM WORD COUNT OF CONTROLWARE LDD DP+1 CHECK *IN* - *OUT* SBD DP+3 SHN 14 ADD DP+2 SBD DP+4 SBD WC ZJN PRS8 IF CORRECT CONTROLWARE LENGTH LDN RC17 * LENGTH IN 52 TABLE .NE. FET.* UJN PRS6 RETURN PRS8 STD CO INITIALIZE CONTROL MODULE INDICATOR RJM GLA GET LOAD FET ADDRESS ADN 10 READ FET+8 CRD CM LDD CM+4 SET CALL STATUS SHN 0-12 LPN 1 STD CS ZJN PRS9 IF DRIVER CALL LDN SSTL CRD T0 LDD T0+3 LPN 4 ZJN PRS9 IF ENGINEERING MODE ENABLED LDD CP ADN JCIW CRD T0 CHECK FOR *MSE* SUBSYSTEM LDD T0+2 GET SUBSYSTEM ID LMC ASSI ZJN PRS9 IF CALLER IS *MSE* SUBSYSTEM LDN RC11 * SYSTEM NOT IN ENGR MODE.* UJN PRS10 RETURN PRS9 LDD CM+4 SHN 21-13 PJN PRS11 IF CHANNEL SPECIFIED SHN 13-21 LPC 777 STD CO SET CONTROL MODULE EST ORDINAL RJM SCC SET CONTROL MODULE CHANNEL ZJN PRS12 IF NO ERROR PRS10 LJM PRSX RETURN PRS11 SHN 13-21 RJM RCT READ CHANNEL TABLE ADN 2*CTALL READ CHANNEL CONTROLWARE TABLE CRD CM STD CE+1 SAVE CONTROLWARE ENTRY ADDRESS SHN -14 STD CE LDI T6 STD CT SAVE CHANNEL CONTROLWARE ENTRY LDM PRSA-CM,T6 SET *UTEM* PARAMETERS FOR CHANNEL TABLE STM CHTI+1 STM CHTI+1*5+1 PRS12 LDD CT SHN 0-12 STM CHTI+4 SHN 21-0 MJN PRS13 IF LOAD ALREADY IN PROGRESS RJM ICE INTERLOCK CONTROLWARE LOAD BITS LDD CM+1 ZJN PRS14 IF INTERLOCK SET CORRECTLY PRS13 RJM DCH DROP CHANNEL ASSIGNMENT LDN RC14 * CONTROLWARE LOAD ALREADY IN PROGRESS.* LJM PRSX RETURN PRS14 LDD CT SET PARAMETERS TO CLEAR CHANNEL INTERLOCK SHN -6 LPN 17 STM CHTI+4 LDC 4004 STM CHTI LDN 5 STM CHTI+1*5 LDC -400 RAM CHTI+1 STM CHTI+1*5+1 LDD CO NJN PRS15 IF CONTROL MODULE RELOAD RJM RSC RESERVE AND STATUS CHANNEL NJN PRS17 IF ERROR PRS15 LDD CT CHECK CONTROLWARE TYPE LPN 37 SBN FMCW ZJN PRS17 IF MA721 (SUPPORTS *FCAR* FUNCTION) SBN PHCW-FMCW ZJN PRS17 IF MA722 (SUPPORTS *FCAR* FUNCTION) SBN IDCW-PHCW ZJN PRS17 IF MA462 (SUPPORTS *FCAR* FUNCTION) LDN PSNI STM ILFA LDN 0 PRS17 LJM PRSX RETURN PRSA BSS 0 TABLE OF RELOAD FLAG BIT POSITIONS CON 58DS6 CON 46DS6 CON 34DS6 CON 22DS6 CON 10DS6 SPACE 4,10 * CHANNEL TABLE. CHTB CH SCI SPACE 4,10 ** SCI - SET CHANNEL INSTRUCTIONS. * * USES T1, T2, T3. SCI SUBR ENTRY/EXIT LDC CTCH INITIALIZE CHANNEL TABLE ADDRESS STD T1 LDD BC CLEAR POSSIBLE CCH FLAG LPN 37 STD T3 SCI1 LDI T1 ZJN SCIX IF END OF CHANNEL INSTRUCTIONS STD T2 LDI T2 GET NEXT CHANNEL INSTRUCTION SCN 37 LMD T3 STI T2 INITIALIZE CHANNEL INSTRUCTION AOD T1 UJN SCI1 LOOP TO CHECK FOR NEXT INSTRUCTION RSC SPACE 4,15 ** RSC - RESERVE AND STATUS CHANNEL. * * ENTRY (BC) = CHANNEL NUMBER. * = *RC2* IF DOWN CHANNEL IN USE. * = *RC34* IF CONTROLLER RESERVED. * (CS) = CHANNEL SPECIFIED ON CALL STATUS. * * EXIT (A) = 0. * (A) = *RC24* IF CONTROLLER RESERVED THROUGH * ALTERNATE ACCESS OR *RC22* IF FUNCTION * TIMEOUT OCCURED. * CHANNEL RESERVED IF NOT SYSTEM REQUEST. * * USES CM - CM+4. * * CALLS CCS, FNC, RCT, SCI. * * MACROS MONITOR, RCHAN. RSC2 LDD BC RCHAN RESERVE CHANNEL RSC3 AOD CF SET CHANNEL RESERVED BY *1LC* FLAG RSC4 RJM SCI SET CHANNEL INSTRUCTIONS LDD BC LPN 40 ZJN RSC5 IF NOT A CIO CHANNEL LDC 100000 MASTER CLEAR THE CHANNEL RJM FNC NJN RSCX IF ERROR OCCURRED RSC5 RJM CCS CHECK CONTROLLER STATUS NJN RSC6 IF STATUS TIMEOUT OR STATUS NOT RECEIVED LDD ST RSC6 LPC 2000 ZJN RSCX IF CONTROLLER NOT ALREADY RESERVED LDN RC34 * CHXX, CONTROLLER RESERVED.* RSC SUBR ENTRY/EXIT LDD CS ZJN RSC4 IF DRIVER CALL LDD BC RJM RCT READ CHANNEL TABLE LDI T6 LPN 40 ZJP RSC2 IF CHANNEL UP LDN 0 STD CM+2 LDD BC ASSIGN DOWNED CHANNEL STD CM+1 MONITOR CCHM LDD CM+2 NJP RSC3 IF CHANNEL ASSIGNED LDN RC2 * SPECIFIED CHANNEL IS IN USE.* UJN RSCX RETURN SCC SPACE 4,15 ** SCC - SET CONTROL MODULE CHANNEL. * * ENTRY (CO) = CONTROL MODULE EST ORDINAL. * (CS) = 0 IF DRIVER CALL. * * EXIT (A) = ERROR RESPONSE (0 IF NO ERROR). * (BC) = CHANNEL NUMBER. * (CF) .NE. 0 IF CHANNEL RESERVED. * (CT) = CONTROLWARE TYPE. * (EQ) = CONTROL MODULE EQUIPMENT NUMBER. * (CE - CE+1) = ABSOLUTE ADDRESS OF *CM* EST ENTRY. * * USES BC, CF, CT, EQ, T1, CE - CE+1, CM - CM+4, CN - CN+4. * * CALLS SCI. * * MACROS MONITOR, RCHAN, SFA. SCC10 LDN RC21 * NOT CONTROL MODULE EST ORDINAL.* SCC SUBR ENTRY/EXIT SFA EST,CO GET EST ENTRY ADK EQDE CRD CN ADN EQAE-EQDE CRD CM STD CE+1 SHN -14 STD CE LDD CN+3 LMC 2RCM NJN SCC10 IF NOT CONTROL MODULE LDD CN+4 SAVE CONTROL MODULE EQUIPMENT NUMBER SHN -11 STD EQ LDD CM+2 STD CT SHN 0-11 LPN 1 LMN 1 RAM SCCA LDD CS NJN SCC6 IF NOT DRIVER CALL LDD CN+1 SET CHANNEL NUMBER * LDD CN+2 (CHANNEL ACCESS BIT CLEAR) SCCA EQU *-1 LPN 37 SCC2 STD BC LDN 0 SCC3 LJM SCCX RETURN SCC4 LDI T1 RCHAN RESERVE CHANNEL SCC5 RJM SCI SET CHANNEL INSTRUCTIONS AOD CF SET CHANNEL RESERVED BY *1LC* FLAG LDD CM+1 UJN SCC2 SET CHANNEL NUMBER SCC6 LDN CN+1 STD T1 SCC7 LDI T1 SHN 0-12 LMN 2 ZJN SCC4 IF CHANNEL ENABLED AND UP AOD T1 LMN CN+3 NJN SCC7 IF ANOTHER CHANNEL BYTE TO CHECK SCC8 SOD T1 LMN CN NJN SCC9 IF ANOTHER CHANNEL TO CHECK LDN RC2 * SPECIFIED CHANNEL IS IN USE.* UJN SCC3 RETURN SCC9 LDI T1 STD CM+1 SHN 21-13 PJN SCC8 IF CHANNEL NOT ENABLED MONITOR CCHM ASSIGN DOWNED CHANNEL LDD CM+2 ZJN SCC8 IF CHANNEL NOT ASSIGNED UJP SCC5 SET CHANNEL ASSIGNED AND RETURN VFP SPACE 4,20 ** VFP - VALIDATE FET PARAMETERS. * * ENTRY (A) = FET ADDRESS. * * EXIT (A) = 0 IF FET ADDRESS AND BUFFER PARAMETERS VALID. * (A) = *DR1* IF BUFFER PARAMETERS INVALID. * (MB+2) = 12/0, 24/*IN*, 24/*OUT*. * (MB+3) = 1/RANDOM FILE FLAG, 5/0, 6/FET LENGTH, * 24/*FIRST*, 24/*LIMIT*. * * ERROR TO *PPR* AFTER JOB ABORT IF FET ADDRESS INVALID. * * USES CM+1, CM+3, CM+4. * * CALLS DFM. * * MACROS MONITOR. VFP1 LDN DR1 * DUMP BUFFER ARGUMENT ERROR.* VFP SUBR ENTRY/EXIT STD CM+4 SHN -14 STD CM+3 LDN 3 VALIDATE *FIRST*, *IN*, *OUT*, AND *LIMIT* STD CM+1 MONITOR VFPM LDD CM+1 ZJN VFPX IF FET ADDRESS AND BUFFER PATAMETERS VALID SBN 1 NJN VFP1 IF NOT INVALID FET ADDRESS LDC VFPA * FET ADDRESS OUT OF RANGE.* RJM DFM MONITOR ABTM ABORT CONTROL POINT LJM PPR EXIT TO PP RESIDENT VFPA DATA C* FET ADDRESS OUT OF RANGE.* SPACE 4,10 END