IDENT MTE,PRS
PERIPH
BASE MIXED
SST PPR,LEP,DFM,EXR,.SMS,RA,FL,IA,MA,EPFW
TITLE MTE - MONITOR EXTENDED MEMORY INTERFACE.
*COMMENT MTE - MONITOR EXTENDED MEMORY INTERFACE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MTE SPACE 4,10
*** MTE - MONITOR EXTENDED MEMORY INTERFACE.
* W. E. GOEBEL. 86/01/20.
* R. C. SCHMITTER 94/03/21.
SPACE 4,20
*** *MTE* IS LOADED INTO A PP AT DEAD START TIME IF THE SYSTEM
* IS RUNNING IN MULTI-MAINFRAME MODE, AND THE LINK DEVICE HAS
* NO CPU COUPLER ACCESS.
*
* *MTE* PERFORMS THE FOLLOWING FUNCTIONS.
*
* 1. PROCESS DEVICE INTERLOCK REQUESTS FOR *DTKM*, *DLKM*,
* *RTCM*, *STBM*, AND *VMSM* MONITOR FUNCTIONS.
* 2. PROCESS *AFAM*, *ECSM* AND *MTEM* MONITOR FUNCTIONS IN
* THEIR ENTIRETY.
* 3. WRITE DEVICE TABLES TO EXTENDED MEMORY AND CLEAR DEVICE
* INTERLOCKS.
* 4. SCAN EXTENDED MEMORY CLOCKS TO DETERMINE ACTIVE MACHINES.
* 5. PROCESS BUFFER ACCESS TABLE (BAT) REQUESTS WHEN SHARED
* DAS DEVICES ARE PRESENT.
*
* *MTE* DOES NOT USE *PPR* ROUTINES PAST *EFTN*. THUS, DISK
* DRIVER USAGE, DAYFILE MESSAGES, AND RE-ENTERING *PPR* ARE
* NOT ALLOWED. A SPECIAL VERSION OF *EXR* IS INCLUDED IN
* *MTE* FOR LOADING CM RESIDENT OVERLAYS. THE *PPR* VERSION
* OF *EXR* IS NOT USED.
SPACE 4,10
*** CALL.
*
*T 18/ MTE,6/ CP,24/,12/ RM
*
* CP = SYSTEM CONTROL POINT NUMBER.
* RM = RECOVERY MODE.
SPACE 4,40
*** A MEMORY MAP OF *MTE* IS AS FOLLOWS.
*
* 0 *************************************************************
* * *
* * DIRECT CELLS *
* * *
* *************************************************************
* 100 * *
* * *PPR* ROUTINES (*FTN*, *.DLY*, *.EST*) *
* * *
* *************************************************************
* EFTN * *
* * MST/TRT/BAT/BRT READ/WRITE BUFFERS *
* * *MTE* PRESET (OVERLAYS BUFFERS) *
* * DOWN MACHINE PROCESSING (OVERLAYS BUFFERS) *
* * EXTENDED MEMORY ERROR RECOVERY (OVERLAYS BUFFERS) *
* * *
* *************************************************************
* * *
* * *MTE* MAIN LOOP *
* * *
* * MONITOR FUNCTION PROCESSORS *
* * *
* * SUBROUTINES *
* * *
* * EXTENDED MEMORY INTERFACE ROUTINES *
* * *
* *************************************************************
* EPFW * *
* * EXTENDED MEMORY ERROR PROCESSING AREA *
* * *
* *************************************************************
SPACE 4,10
*** *MTE* DEBUG CAPABILITY - UEM EMULATION OF EXTENDED MEMORY.
*
* *MTE* WILL INTERFACE WITH UEM AS A LINK DEVICE FOR THE
* PURPOSE OF TESTING MMF CODE. NO ACTUAL SHARING OF DEVICES
* IS POSSIBLE SINCE NO HARDWARE PROVISION EXISTS FOR MULTIPLE
* MACHINE ACCESS TO UEM. TO UTILIZE THIS FEATURE, SIMPLY
* DEFINE EQUIPMENT 5 AS UEM AND DECLARE IT AS SHARED.
* *SET* WILL TREAT IT AS A 180 MMF LINK DEVICE AND *MTE*
* WILL BE LOADED. UEM WILL LOOK EXACTLY AS AN EXTENDED MEMORY
* DEVICE WITH THE FLAG REGISTER BEING SIMULATED AND ITS
* CONTENTS STORED IN *EFRL*.
SPACE 4,10
EPFW EQU 7540
SPACE 4,10
* COMMON DECKS.
*CALL COMPMAC
*CALL COMPCHI
*CALL COMSCPS
QUAL DSL
*CALL COMSDSL
QUAL *
*CALL COMSLSD
LIST X
*CALL COMSMMF
LIST *
*CALL COMSMRT
*CALL COMSMSC
*CALL COMSMSP
*CALL COMSPFM
*CALL COMSPIM
*CALL COMS1DS
TITLE ASSEMBLY CONSTANTS.
SPACE 4,10
**** DIRECT LOCATION ASSIGNMENTS.
BEGIN BSSN 16 BEGINING OF DIRECT CELL DEFINITIONS
T8 BSSN 1 SCRATCH
T9 BSSN 1 SCRATCH
EA BSSN 5 EXTENDED MEMORY ADDRESS (FIRST TWO BYTES)
BR BSSN 1 BYTES NOT TRANSFERED
ST BSSN 1 STATUS FROM LOW SPEED PORT/DDP
WC BSSN 1 WORD COUNT FOR EXTENDED MEMORY TRANSFER
RC BSSN 1 ESM ERROR RETRY COUNT
FS BSSN 5 CM WORD BUFFER
RQ BSSN 1 REQUEST PARAMETER (OR/MST ADDRESS)
QE BSSN 1 NEXT PP REQUEST QUEUE ENTRY
QH BSSN 1 HEAD OF PP RETRY QUEUE
QT BSSN 1 TAIL OF PP RETRY QUEUE
FN BSSN 5 CM WORD BUFFER
OF BSSN 1 FIRST (*MTR*) OUTPUT REGISTER ADDRESS
BSSN 50-*
IR BSSN 5 INPUT REGISTER
BSSN 1 SPARE (DESTROYED BY *FTN*)
BSSN 1 SPARE (DESTROYED BY *FTN*)
CV BSSN 1 LAST TIME CLOCK VALUE
OR BSSN 5 PP OUTPUT REGISTER
* THESE THREE CELLS CAN BE USED AS SCRATCH OUTSIDE OF
* *MTET*/*MTBT* QUEUE PROCESSING FROM *CPUMTR*.
SX BSSN 0
MX BSSN 1 MAXIMUM REQUESTS PER PASS
IN BSSN 1 IN POINTER FOR *MTBT* BUFFER
OT BSSN 1 OUT POINTER FOR *MTBT* BUFFER
RM EQU IR+4 RECOVERY MODE
BSSN 70-*
ON BSSN 1 1
HN BSSN 1 100
TH BSSN 1 1000
TR BSSN 1 3
CP BSSN 1 CONTROL POINT
MA BSSN 1 MESSAGE BUFFER ADDRESS - NON STANDARD
OA BSSN 1 OUTPUT REGISTER ADDRESS
ZR BSSN 5-1 ZERO WORD
MI BSSN 2 MACHINE INDEX (OVERLAYS ZR+4)
END BSSN
SPACE 4,10
* ASSEMBLY CONSTANTS.
CH EQU 0 LINK DEVICE CHANNEL
SC EQU 5000 LOW SPEED PORT SELECT CODE
RDFN EQU 1 READ FUNCTION CODE
WTFN EQU 2 WRITE FUNCTION CODE
STFN EQU 4 STATUS FUNCTION CODE
MCFN EQU 10 MASTER CLEAR PORT FUNCTION CODE
ESFN EQU 604 SET ECS MODE ADDRESSING FUNCTION CODE
NPPU EQU 30D NUMBER OF PP-S TO PROCESS REQUESTS FOR
SPACE 4,10
* BEGIN TABLES OVERLAYED BY *PRESET*.
BEGIN BSSN EFTN
MBUF BSSN SDGL*5+5 MST READ/WRITE BUFFER
TBUF BSSN BRTL*5+5 TRT/BAT READ/WRITE BUFFER
FATB EQU TBUF FAST ATTACH TABLE READ/WRITE BUFFER
BRTB EQU TBUF+5 BRT READ/WRITE BUFFER
GFAT EQU FATB+5 GLOBAL FAST ATTACH WORD
EBUF BSSN 0 END OF BUFFERS
END BSSN
****
TITLE MACRO DEFINITIONS.
CFLAG SPACE 4,10
** CFLAG - CLEAR FLAG REGISTER BITS.
*
* CFLAG BIT,NW
*
* ENTRY *BIT* = NAME OF BIT TO CLEAR.
* *NW* = NO WRITE OF FLAG OWNER.
*
* CALLS IFR, SLA.
PURGMAC CFLAG
CFLAG MACRO BIT,NW
MACREF CFLAG
.A IFC NE,*TRTI*BIT*
.B IFC EQ,$NW$$
LDN FRET+BIT
RJM SLA
WRITEM 1,ZR
.B ENDIF
.A ENDIF
LDC C_BIT
RJM IFR
CFLAG ENDM
PPR SPACE 4,10
** PPR - SET PP REQUEST PROCESSOR.
*
* PPR FNC,PRC
* ENTRY *FNC* = FUNCTION NUMBER.
* *PRC* = PROCESSOR ADDRESS.
PURGMAC PPR
PPR MACRO FNC,PRC
LOCAL K
MACREF PPR
.A IFC EQ,$PRC$$
K MICRO 1,3, FNC
K MICRO 1,4,*."K"*
"K" CON FNC
ORG *-1
.A ELSE
K MICRO 1,, PRC
.A ENDIF
PPR RMT
ORG TPPR+FNC
CON "K" FNC
PPR RMT
IF -DEF,MXFNC,1
MXFNC SET FNC
IFGT FNC,MXFNC,1
MXFNC SET FNC
PPR ENDM
READEM SPACE 4,10
** READEM - READ EXTENDED MEMORY.
*
* READEM WCT,BUF,ERR
*
* ENTRY *WCT* = WORD COUNT TO READ.
* = *, IF DIRECT CELL WC CONTAINS WORD COUNT.
* *BUF* = PP BUFFER ADDRESS TO RECEIVE THE DATA READ.
* *ERR* = EXTENDED MEMORY ERROR PROCESSOR ADDRESS.
*
* CALLS RDW.
PURGMAC READEM
READEM MACRO WCT,BUF,ERR
LOCAL A
MACREF READEM
.A IFC NE,$WCT$*$
LDN WCT
STD WC
.A ENDIF
LDK BUF
RJM RDW
.B IFC NE,$ERR$$
A EQU *
.ERP MICRO 1,, ".ERP"A,ERR,
.B ENDIF
READEM ENDM
SFLAG SPACE 4,10
** SFLAG - SET FLAG REGISTER BITS.
*
* SFLAG BIT,REJ
*
* ENTRY *BIT* = NAME OF BIT(S) TO CLEAR.
* *REJ* = REJECT ENTRY ADDRESS.
*
* CALLS IFR, SLA.
PURGMAC SFLAG
SFLAG MACRO BIT,REJ
MACREF SFLAG
LDC S_BIT
RJM IFR
.A IFC NE,*REJ**
NJP REJ IF INTERLOCK PREVIOUSLY SET
.A ENDIF
IFC NE,*TRTI*BIT*
IFC NE,*COMI*BIT*
LDN FRET+BIT
RJM SLA
WRITEM 1,MI+1-4
ENDIF
SFLAG ENDM
SUBFUN SPACE 4,15
** SUBFUN - SET SUBFUNCTION PROCESSOR.
*
*SFA SUBFUN FNC,SFN
*
* ENTRY *SFA* = SUBFUNCTION PROCESSOR ENTRY NAME.
* *FNC* = FUNCTION NAME.
* *SFN* = SUBFUNCTION NAME.
*
* THIS MACRO BUILDS A TABLE OF SUBFUNCTION PROCESSORS.
* THE TABLE IS NAMED T*FNC*, AND EACH ENTRY IS THE
* ADDRESS OF THE PROCESSOR FOR THE SUBFUNCTION.
PURGMAC SUBFUN
MACRO SUBFUN,SFA,FNC,SFN
MACREF SUBFUN
SFA BSS 0
IRP SFN
T_FNC RMT
ORG T_FNC+SFN
CON SFA SFN
T_FNC RMT
IRP
SUBFUN ENDM
WRITEM SPACE 4,10
** WRITEM - WRITE EXTENDED MEMORY.
*
* WRITEM WCT,BUF,ERR
*
* ENTRY *WCT* = WORD COUNT TO WRITE.
* = *, IF DIRECT CELL WC CONTAINS WORD COUNT.
* *BUF* = PP BUFFER ADDRESS TO WRITE DATA FROM.
* *ERR* = EXTENDED MEMORY ERROR PROCESSOR ADDRESS.
*
* CALLS WTW.
PURGMAC WRITEM
WRITEM MACRO WCT,BUF,ERR
MACREF WRITEM
.A IFC NE,$WCT$*$
LDN WCT
STD WC
.A ENDIF
LDK BUF
RJM WTW
.B IFC NE,$ERR$$
A EQU *
.ERP MICRO 1,, ".ERP"A,ERR,
.B ENDIF
WRITEM ENDM
.ERP MICRO 1,, INITIALIZE ERROR PROCESSOR MICRO
TITLE MAIN PROGRAM.
FWAP EQU 600 FWA OF *PRS*
ERRNG FWAP-315 MAIN OVERLAY DESTROYS *PLL* RETURN ADDRESS
ORG FWAP
SPACE 4,10
USE MAIN
SPARES EQU *-EBUF LOCATIONS AVAILABLE IN MAIN BLOCK
FWA EQU *L
PRQ SPACE 4,15
** PRQ - PROCESS QUEUED REQUEST.
*
* SOME DEVICE INTERLOCK REQUESTS ARE UNABLE TO BE PROCESSED
* WHEN PASSED FROM *CPUMTR*. THESE REQUESTS ARE QUEUED TO BE
* RETRIED AFTER A DELAY TIME IS EXPIRED. THIS ROUTINE IS
* ENTERED WHEN A QUEUED REQUEST IS TO BE PROCESSED.
*
* ENTRY (A) = OUTPUT REGISTER ADDRESS OF QUEUED REQUEST.
*
* EXIT (RQ) = PP REQUEST ADDRESS.
* TO FUNCTION PROCESSOR.
* ENTRY DELETED FROM QUEUE.
* TO *CFR1* IF REQUEST HAS BEEN CLEARED.
*
* USES MX, QH, RQ, T8, OR - OR+4.
PRQ STD RQ
LDN 0
STM TPPQ,QH
STD MX
LDC MTE1 SET EXIT FOR FUNCTION COMPLETE
STM CFR
SOD QH
PJN PRQ1 IF NO WRAP
LDN NPPU-1
STD QH
PRQ1 LDD RQ
* ENTER HERE TO PROCESS REQUEST INITIALLY.
PRQ2 CRD OR
LDD OR
ZJP CFR1 IF REQUEST WAS CLEARED
LDM TPPR,OR SET FUNCTION PROCESSOR
STD T8
LJM 0,T8 ENTER PROCESSOR
MTE SPACE 4,25
** MTE - MAIN PROGRAM.
*
* THE MAIN LOOP OF *MTE* PERFORMS THE FOLLOWING TASKS.
* 1. CHECKS FOR REQUESTS PASSED FROM *CPUMTR* IN THE *MTET*
* QUEUE.
* 2. RETRIES ANY BUFFER ACCESS TABLE REQUESTS THAT HAVE
* BEEN QUEUED IN THE BUFFER REQUEST TABLE (BRT).
* 3. CHECKS FOR NEW BAT REQUESTS PASSED FROM *CPUMTR* IN
* THE *MTBT* QUEUE.
* 4 CHECKS THE BRT-S OF ANY OTHER MAINFRAMES FOR REQUESTS
* UNABLE TO BE PROCESSED BECAUSE OF LOCKS HELD BY THIS
* MAINFRAME.
* 5. RELEASES THE LOW SPEED PORT CHANNEL WHEN IT IS
* REQUESTED.
* 6. WRITES MACHINE CLOCK TO EXTENDED MEMORY ONCE A
* SECOND.
* 7. CHECKS THE STATE OF OTHER MACHINES ONCE EVERY TWO
* SECONDS.
* 8. INITIATES EXTENDED MEMORY ERROR RECOVERY WHEN
* REQUIRED.
* 9. UPDATES *MTE* STATISTICS.
MTE LDM TPPQ,QH
NJN PRQ IF QUEUED REQUESTS
MTE1 RJM CFR CHECK FOR REQUESTS PASSED FROM *CPUMTR*
MTED UJN MTE1.1 CHECK FOR CHANNEL REQUESTED
* PSN (SHARED BUFFERED DEVICES PRESENT)
* PROCESS BAT/BRT REQUESTS.
RJM RBR REPROCESS BRT REQUESTS
RJM PBR PROCESS NEW BAT REQUESTS
RJM CBM CHECK BRT-S FROM OTHER M/F-S
* CHECK FOR CHANNEL REQUESTED.
MTE1.1 SOM CRCC
NJP MTE5 IF NOT TIME TO CHECK CHANNEL REQUEST
LDN 10
STM CRCC
MTEA LDC ** SET CHANNEL INTERLOCK TABLE ADDRESS
MTEB ADN ** ADD WORD NUMBER
CRD CM
MTEC LDD ** CHECK APPROPRIATE BYTE
SHN 0-13
ZJN MTE2 IF CHANNEL NOT REQUESTED
LDN 0 RELEASE CHANNEL
RJM DSW
LDN 1 REQUEST CHANNEL
RJM DSW
* CHECK IF TIME TO WRITE MACHINE CLOCK.
MTE2 LDC PDTL CHECK IF ONE SECOND ELAPSED
CRD FS
LDD FS+4
SBD CV
ZJN MTE3 IF NOT TIME TO WRITE CLOCK
RAD CV
* WRITE PACKED DATE AND TIME TO EXTENDED MEMORY.
TLDN SMET-1,MI
RJM SLA SET LABEL TRACK ADDRESS
WRITEM 1,FS IGNORE ERROR IN WRITING CLOCK
LDD CV
LPN 1
MTE3 ZJN MTE5 IF NOT TIME TO STATUS MACHINES
* CHECK FOR CHANGE IN MACHINE STATE.
RJM CAM CHECK MACHINE STATUS
ZJN MTE4 IF NO CHANGE IN MACHINE STATE
EXECUTE 2EA PROCESS MACHINE STATE CHANGE
RJM CFR CHECK FOR REQUESTS PASSED FROM *CPUMTR*
* CHECK IF EXTENDED MEMORY ERROR RECOVERY NEEDED.
MTE4 LDC TCOMI CHECK ERROR RECOVERY REQUESTED
RJM IFR
ZJN MTE5 IF NO ERROR RECOVERY PROCESSING
EXECUTE 2EB PROCESS EXTENDED MEMORY TABLE ERRORS
MTE5 RJM UMS UPDATE *MTE* STATISTICS
LJM MTE LOOP
CRCC CON 10 CHANNEL REQUEST CYCLE COUNT
CYTM CON 0 *MTE* CYCLE TIME
BRTF CON 0 BRT FULL FLAG (=*NBRR* IF BRT IS FULL)
BRTP CON 0 BRT TRACK NUMBER
** BAT/BRT STATISTICS (MUST BE CONTIGUOUS).
BRTS BSS 0
BATT CON 0 TOTAL BAT REQUESTS
BRTT CON 0 TOTAL BRT ENTRIES
BREC CON 0 CURRENT BRT ENTRY COUNT
BIAA CON 0 *BATI* INTERLOCK ATTEMPTS ABANDONED
BRTR CON 0 BRT ENTRIES REJECTED
TITLE PP REQUEST PROCESSING.
HNG SPACE 4,10
** HNG - HANG PPU.
*
* ENTRY (RQ) = OUTPUT REGISTER ADDRESS.
HNG LDD RQ SET ADDRESS OF FUNCTION IN ERROR
STD CM+1
MONITOR HNGM
FNR SPACE 4,10
** FNR - FUNCTION NOT READY.
*
* ENTRY (RQ) = OUTPUT REGISTER ADDRESS.
FNR LDD RQ REJECT FUNCTION
STM TPPQ,QT LINK TO TAIL OF QUEUE
SOD QT
PJN CFR1 IF NO WRAP
LDN NPPU-1
STD QT
UJN CFR1 PROCESS NEXT REQUEST
CPF SPACE 4,10
** CPF - PASS REQUEST TO *CPUMTR*.
*
* ENTRY (RQ) = OUTPUT REGISTER ADDRESS.
*
* USES OR.
CPF LDC 5000
RAD OR
UJN FNC1 WRITE OUTPUT REGISTER
FNC SPACE 4,10
** FNC - FUNCTION RETURN TO CLEAR UPPER BYTE OF *OR*.
*
* ENTRY (RQ) = OUTPUT REGISTER ADDRESS.
*
* USES OR - OR+4.
FNC LDN 0 SET FUNCTION COMPLETE
STD OR
FNC1 LDD RQ
CWD OR
UJN CFR1 CHECK NEXT FUNCTION
CFR SPACE 4,10
** CFR - CHECK FOR REQUESTS PASSED FROM *CPUMTR*.
*
* EXIT TO FUNCTION PROCESSOR WITH (A) = (RQ).
*
* USES MX, QE, RQ, FN - FN+4.
CFR SUBR ENTRY/EXIT
LDN 10 SET MAXIMUM REQUESTS PER PASS
STD MX
CFR1 TLDC MTET,PQ PP QUEUE ADDRESS
ADD QE
CRD FN
LDD FN+4 CHECK FUNCTION PRESENT
ZJN CFRX IF NO REQUEST PRESENT
SOD MX
ZJN CFRX IF AT MAXIMUM
TLDC MTET,PQ CLEAR REQUEST FROM LIST
ADD QE
CWD ZR
SOD QE ADVANCE PAST CURRENT ENTRY
PJN CFR2 IF NO WRAP ON QUEUE
LDN MXQP-1
STD QE
CFR2 LDD FN+3 ENTRY
STD RQ
LJM TCFR,FN+4 ENTER REQUEST PROCESSOR
TCFR SPACE 4,10
** TCFR - TABLE OF *CPUMTR* FUNCTION REQUESTS.
*
* ENTRY = ONE WORD.
* 12/ ADDRESS OF FUNCTION PROCESSOR
TCFR EQU *-1
LOC 1
PPRF LJM PRQ2 PROCESS PP REQUEST
CDIF LJM CDI CLEAR DEVICE INTERLOCK
LOC *O
TPPQ SPACE 4,10
** TPPQ - TABLE OF QUEUED PP REQUESTS.
TPPQ BSS NPPU QUEUED PP REQUESTS
EXR SPACE 4,10
** EXR - EXECUTE CM RESIDENT ROUTINE.
*
* ENTRY (A) = ROUTINE NAME.
*
* EXIT TO CALLED ROUTINE VIA SIMULATED RETURN JUMP.
*
* USES CM+2, CM+3.
*
* MACROS MONITOR.
EXR CON 0 ENTRY
STD CM+3
SHN -14
STD CM+2
MONITOR SPLM
LDD CM+4 SET LOAD ADDRESS
STM EXRA
LDD CM+1 READ IN PROGRAM
LPN 77
SHN 14
ADD CM+2
CRM *,CM+3
EXRA EQU *-1
LDM EXR SET RETURN ADDRESS
STM 6,CM+4
LJM 7,CM+4 ENTER ROUTINE
TITLE *AFAM* MONITOR FUNCTION PROCESSING.
AFAM SPACE 4,30
*** AFAM - ACCESS FAST ATTACH.
* *AFAM* ATTACHES OR RELEASES FAST ATTACH FILES.
*
* ENTRY
*T OR 12/ AFAM,12/ EQ,1/N,11/ MD,12/ SF,12/ FO
* EQ EST ORDINAL OF DEVICE WHERE THE FAST
* ATTACH FILE RESIDES, IF GLOBAL FAST ATTACH FILE.
* 0, IF LOCAL FAST ATTACH FILE.
* N NON-ROLLABLE OPTION (VALID ONLY ON WRITABLE MODES
* FOR *AFAS* SUBFUNCTION).
* MD MODE OF ATTACH.
* SF SUBFUNCTION CODE AS DEFINED IN COMSCPS.
* *AFAS* = 0 = ATTACH FAST ATTACH FILE.
* *RFAS* = 1 = RETURN FAST ATTACH FILE.
* FO FNT ORDINAL.
*
* EXIT
*T, OR 12/ 0,12/ ST,24/ ,4/ WF,6/ ,1/N,1/
* ST = 0 IF FUNCTION COMPLETE.
* ST = 1 IF FUNCTION CANNOT BE COMPLETED AT THIS TIME.
* FILE IS ATTACHED IN A CONFLICTING MODE.
* WF .NE. 0 IF FILE ALREADY ATTACHED IN A WRITABLE MODE (AFAS
* REJECT ONLY).
* N = NON-ROLLABLE FLAG (*AFAS* REJECT ONLY).
*
* NOTE - *CPUMTR* CHECKS FOR ALL HANG CONDITIONS BEFORE PASSING
* THE REQUEST TO *MTE*.
AFP SPACE 4,10
** AFP - *AFAM* PRESET PROCESSING.
*
* *AFAM* PRESET MAY NOT BE EXECUTED UNTIL THE DAT/FAT TRACK
* IS ALLOCATED BY *0MF*. FOR THIS REASON THE FIRST CALL TO
* *AFAM* DOES THE PRESET OPERATION.
AFP LDC ALGL READ DAT/FAT TRACK
CRD CM
LDD CM+4
LPC 3777
STD CM+4
SHN 6
ADD CM+4 101 * TRACK
AFPA SHN 4 2020 * TRACK
* SHN 4+EMSC 2020 * EMSC * TRACK
RAM AFAA+1
SHN -14
RAM AFAA
LDN AFA-AFP
RAM TPPR+AFAM
* UJN AFA ENTER PROCESSOR
PPR AFAM,AFP
AFA LDD OR+2
LPC 3777
SHN 1
ADD OR+3
STD T8
LDM TAFAM,T8 SET PROCESSOR ADDRESS
STD T9
* READ FNT/FST.
SFA FNT,OR+4
ADK FNTG
CRD FN
ADK FSTG-FNTG
CRD FS
SOD FN+4 CLEAR BUSY
* READ FAT OF REQUESTED FILE.
SFLAG FATI,FNR SET FAT INTERLOCK
LDD FN+3
LPN 77
SHN FATS
AFAA ADC FAST*100B (ADDRESS OF FAT)
* ADC FAST*100B+(SECTORS PER TRACK)
STD EA+1
SHN -14
STD EA
READEM MXMF+2,FATB,AFA1 READ FAST ATTACH TABLE
LDM GFAT+4
LJM 0,T9 ENTER PROCESSOR
* FAT READ ERROR PROCESSOR.
AFA1 SFLAG COMI
RJM CFI CLEAR FAT INTERLOCK
UJP FNR RETRY FUNCTION
* ATTACH PROCESSOR RETURN WHEN ATTACH IS ALLOWED.
AFAX WRITEM *,FATB WRITE UPDATED FAT
RJM CFI CLEAR FAT INTERLOCK
ADK FSTG WRITE FNT/FST
CWD FS
ADK FNTG-FSTG
CWD FN
LDN 0
AFA2 STD OR+1
LJM FNC COMPLETE FUNCTION
* ATTACH PROCESSOR REJECT RETURN.
AFAR RJM CFI CLEAR FAT INTERLOCK
ADK FNTG WRITE FNT
CWD FN
LDM GFAT+4 RETURN PRESENT WRITE MODE BITS
LPC 7402
STD OR+4
LDN 1
UJN AFA2 RETURN
AFA SPACE 4,15
** THE FOLLOWING ARE *AFAM* SUBFUNCTION PROCESSORS.
* THE SUBFUNCTION NUMBER IS MADE UP OF THE ATTACHMENT MODE * 2
* FOR AN ATTACH, OR THE ATTACHMENT MODE * 2 + 1 FOR A RETURN.
* THE FOLLOWING ARE THE ENTRY CONDITIONS TO THE ATTACH/RETURN
* PROCESSORS.
*
* ENTRY (A) = (GFAT+4) = BYTE 4 OF GLOBAL FAT ENTRY.
* (FATB) = FAT ENTRY FROM EXTENDED MEMORY.
* (FS - FS+4) = LOCAL MACHINE FST ENTRY.
*
* EXIT (FATB) UPDATED FOR NEW ACCESS MODE.
* (FS - FS+4) = UPDATED FST.
* WRITE MODE ATTACH.
AWT SUBFUN AFAM,PTWR*2
SCN 3
ADM GFAT+3
ADM GFAT+2
AWT1 NJN AFAR IF FILE BUSY
LDN 7
AWT2 SHN 10
STD T2
LDD OR+2 SET NON-ROLLABLE BIT
SHN 1-13
RAD T2
RAD FS+4
TSTM FATB+1*5+4,,MI5
LDD T2
AWT3 RAM GFAT+4
LJM AFAX RETURN
* APPEND MODE ATTACH.
AAP SUBFUN AFAM,PTAP*2
SCN 3
NJN AWT1 IF APPEND MODE NOT ALLOWED
LDM GFAT+3
LPN 77
AAP1 NJN AWT1 IF APPEND MODE NOT ALLOWED
LDN 1
UJN AWT2 SET APPEND MODE
* MODIFY MODE ATTACH.
AMD SUBFUN AFAM,PTMD*2
SCN 3
ADM GFAT+3
NJN AAP1 IF MODE CONFLICT
LDN 3
UJN AWT2 SET MODIFY MODE
* UPDATE MODE ATTACH.
AUP SUBFUN AFAM,PTUP*2
SHN -10
ADM GFAT+3
NJN AAP1 IF MODE CONFLICT
LDN 10
UJP AWT2 SET MODIFY MODE
* WRITE MODE RETURN.
RWT SUBFUN AFAM,PTWR*2+1
LDN 7
RWT1 SHN 10
LMD FS+4
SHN -10
NJP HNG IF NOT IN WRITE MODE
LDD FS+4
LPC 7402
STD T2
LMD FS+4 UPDATE LOCAL MODE BITS
STD FS+4
TSTM FATB+1*5+4,,MI5
LDN 0
SBD T2
UJP AWT3 RETURN
* APPEND MODE RETURN.
RAP SUBFUN AFAM,PTAP*2+1
LDN 1
UJN RWT1 COMPLETE PROCESSING
* MODIFY MODE RETURN.
RMD SUBFUN AFAM,PTMD*2+1
LDN 3
UJN RWT1 COMPLETE PROCESSING
* UPDATE MODE RETURN.
RUP SUBFUN AFAM,PTUP*2+1
LDN 10
UJN RWT1 COMPLETE PROCESSING
* READ ALLOW MODIFY MODE RETURN.
RRM SUBFUN AFAM,PTRM*2+1
LDD FS+2
ZJN RRA2 IF NO R/M COUNT SET
SOM GFAT+2
SOD FS+2
RRM1 TSTM FATB+1*5+2,,MI5
UJN RRD2 RETURN
* READ/EXECUTE MODE RETURN.
RRD SUBFUN AFAM,(PTRD*2+1,PTEX*2+1)
LDD FS+3
LPN 77
ZJN RRA2 IF NO READ COUNT SET
SOM GFAT+3
SOD FS+3
RRD1 TSTM FATB+1*5+3,,MI5
RRD2 LJM AFAX RETURN
* READ ALLOW APPEND MODE RETURN.
RRA SUBFUN AFAM,PTRA*2+1
LDC -100
RAM GFAT+3
LDC -100
RRA1 RAD FS+3
PJN RRD1 IF R/A COUNT SET
RRA2 LJM HNG HANG
* READ ALLOW UPDATE MODE RETURN.
RRU SUBFUN AFAM,PTRU*2+1
LDD FS+4
LPC 374
ZJN RRA2 IF NO R/U COUNT SET
LCN 4
RAM GFAT+4
LCN 4
RRU1 RAD FS+4
TSTM FATB+1*5+4,,MI5
UJN RRD2 RETURN
* READ/EXECUTE MODE ATTACH.
ARD SUBFUN AFAM,(PTRD*2,PTEX*2)
SHN -10
NJN ARA1 IF FILE IN WRITABLE MODE
AOM GFAT+3
LPN 77
ZJN ARU1 IF READ COUNT EXCEEDED
AOD FS+3 ADVANCE LOCAL READ COUNT
UJP RRD1 RETURN
* READ ALLOW MODIFY MODE ATTACH.
AMR SUBFUN AFAM,PTRM*2
SHN 21-12
MJN ARA1 IF FILE IN WRITE MODE
AOM GFAT+2
SHN -14
NJN ARA1 IF R/M COUNT EXCEEDED
AOD FS+2 ADVANCE LOCAL R/M COUNT
UJP RRM1 RETURN
* READ ALLOW APPEND MODE ATTACH.
ARA SUBFUN AFAM,PTRA*2
SHN -11
NJN ARU1 IF FILE IN WRITE OR MODIFY MODE
LDD HN
RAM GFAT+3
SHN -14
ARA1 NJN ARU1 IF R/M COUNT EXCEEDED
LDD HN
UJP RRA1 UPDATE LOCAL COUNTS
* READ ALLOW UPDATE MODE ATTACH.
ARU SUBFUN AFAM,PTRU*2
LPC 3774
ADC -374
MJN ARU2 IF NOT CONFLICTING MODE OR COUNT EXCEEDED
ARU1 LJM AFAR REJECT
ARU2 LDN 4
RAM GFAT+4
LDN 4
UJP RRU1 ADVANCE LOCAL R/U COUNT
TAFAM SPACE 4,10
** TAFAM - TABLE OF *AFAM* SUBFUNCTION PROCESSOR ADDRESSES.
*
* INDEXED BY ATTACH/RETURN MODE.
* 12/ ATTACH PROCESSOR, 12/ RETURN PROCESSOR
MXAFAM EQU 2*PTLM
TAFAM BSS 0
DUP MXAFAM,1
CON HNG
LIST G
TAFAM HERE
LIST *
ORG TAFAM+MXAFAM
TITLE *ECSM* MONITOR FUNCTION PROCESSING.
ECSM SPACE 4,10
*** ECSM - EXTENDED MEMORY TRANSFER.
* 1.) TRANSFER FROM 1 TO 100B WORDS TO/FROM RELATIVE
* EXTENDED MEMORY USING A USER SPECIFIED CM BUFFER.
* ILLEGAL FOR *MTE* REQUEST.
* 2.) TRANSFER FROM 1 TO 100B WORDS TO/FROM EXTENDED
* MEMORY USING A USER SPECIFIED CM BUFFER.
* 3.) TRANSFER EXTENDED MEMORY ACCORDING TO A LIST OF
* ADDRESSES.
* 4.) PERFORM FLAG REGISTER OPERATIONS.
PPR ECSM
LDD OR+1 SET WORD COUNT
SHN -6
ADN 1
STD WC
LDD OR+3 SET SUBFUNCTION
SHN -11
STD T8
LDM TECSM,T8
STD T9
LJM 0,T9 ENTER PROCESSOR
MXECSM EQU 10 MAXIMUM NUMBER OF *ECSM* SUBFUNCTIONS
SPACE 4,10
*** RRES-WRES - READ/WRITE RELATIVE USER EXTENDED MEMORY.
*
* THESE SUBFUNCTIONS ARE NOT LEGAL FOR A MULTI-MAINFRAME
* LINK DEVICE WITH NO CPU PORT.
*HNG SUBFUN ECSM,(RRES,WRES) INVALID FUNCTION WHEN NO CPU PATH
SPACE 4,20
*** RECS-WECS - READ/WRITE ABSOLUTE SYSTEM EXTENDED MEMORY.
*
* ENTRY
*T, OR 12/ ECSM,6/ WC,18/ CMA,3/ SF,21/ ECA
* WC NUMBER OF WORDS TO TRANSFER - 1.
* WC = 0 TRANSFER 1 WORD.
* WC = 1 TRANSFER 2 WORDS.
* .
* .
* WC = 77B TRANSFER 100B WORDS.
* CMA RELATIVE+400000B OR ABSOLUTE CM ADDRESS OF BUFFER.
* SF *RECS* OR *WECS* SUBFUNCTION CODE.
* ECA ABSOLUTE SYSTEM EXTENDED MEMORY ADDRESS OF TRANSFER.
*
* EXIT
*T, OR 12/ 0,12/ ST,12/,24/ ECD
* ST 0 FOR TRANSFER COMPLETE.
* 7777 FOR TRANSFER ABORTED.
* ECD ABSOLUTE SYSTEM EXTENDED MEMORY ADDRESS WHERE ERROR
* OCCURRED IF ABORTED.
RWE SUBFUN ECSM,(RECS,WECS)
LDD OR+3
LPC 777 SET EXTENDED MEMORY ADDRESS
STD EA
LDD OR+4
STD EA+1
LCN RECS
ERRNZ WECS-RECS-1 CODE DEPENDS ON VALUE OF TAG
RAD T8 (T8) = 0 IF READ, = 1 IF WRITE
NJN RWE1 IF WRITE REQUEST
READEM *,TBUF READ EXTENDED MEMORY WORDS
STD T2
RWE1 LDD OR+1 GET ABSOLUTE CM ADDRESS
LPN 77
SHN 14
PJN RWE2 IF ABSOLUTE CM ADDRESS
LDD RQ READ CONTROL POINT
SBD OF
SHN PPXES-PPCES
TADC ACPP,PPX
CRD FS READ ASSIGNED CP ADDRESS
LDD FS+4
RWEA ADN FLSW
* ADN FLSW+1 (CME PRESENT)
CRD CM
LRD CM+1
LDD OR+1 SET ABSOLUTE ADDRESS
LPN 37
SHN 6
ADD CM+3
SHN 6
RWE2 ADD OR+2
LJM TRWE,T8 ENTER PROCESSOR
TRWE UJN RWE4 READ
* UJN RWE3 WRITE
RWE3 CRM TBUF,WC
WRITEM *,TBUF WRITE DATA TO EXTENDED MEMORY
UJN RWE5 STORE STATUS AND EXIT
RWE4 CWM TBUF,WC
LDD T2
RWE5 STD OR+1
LJM FNC COMPLETE FUNCTION
SPACE 4,15
*** SFRS-CFRS - SET/CLEAR FLAG REGISTER BITS.
*
* *SFRS* IS THE TEST AND SET FLAG REGISTER FUNCTION.
* *CFRS* IS THE UNCONDITIONAL CLEAR FLAG REGISTER FUNCTION.
*
* ENTRY
*T, OR 12/ ECSM,6/ ECB,18/,3/ SF,21/
* ECB FLAG REGISTER BIT NUMBER TO SET/CLEAR.
* SF *SFRS* OR *CFRS* SUBFUNCTION CODE.
*
* EXIT
*T, OR 12/ 0,12/ ST,12/,12/,12/
* ST 0 IF FUNCTION COMPLETED.
* ST 7777 IF *SFRS* FUNCTION PERFORMED ON A BIT WHICH WAS
* ALREADY SET.
SFR SUBFUN ECSM,(CFRS,SFRS)
LDN FRET-1 SET FLAG BIT OWNER ADDRESS
ADD WC
RJM SLA SET ADDRESS IN LABEL TRACK
LDN 1 SET WORD COUNT
STD WC
LDD T8
LMN SFRS
ZJN SFR1 IF SET FUNCTION
WRITEM *,ZR CLEAR FLAG BIT OWNER
SFR1 LDD OR+1 SET FLAG BIT
SHN -6
ADD TH
STM SFRA
LDN 1
SFRA SHN **
STD FN+1
SHN -14
ADM TSFR,T8
STD FN
LDN FN
RJM IFR ISSUE FLAG REGISTER REQUEST
STD OR+1
NJN SFR2 IF INTERLOCK NOT GAINED
LDD T8
LMN SFRS
NJN SFR2 IF NOT SET FUNCTION
WRITEM *,MI+1-4 SET FLAG BIT OWNER
SFR2 LJM FNC COMPLETE FUNCTION
TSFR EQU *-SFRS TABLE OF FLAG REGISTER FUNCTIONS
LOC SFRS
SFRS CON 4000
CFRS CON 7000
LOC *O
SPACE 4,35
*** PELS - PROCESS EXTENDED MEMORY ACCORDING TO LIST.
*
* ENTRY
*T, OR 12/ ECSM,6/ WC,18/ CML,3/ SF,1/W,1/U,19/
* WC NUMBER OF LIST ENTRIES TO PROCESS.
* CML ABSOLUTE CM FWA OF LIST.
* SF *PELS* SUBFUNCTION CODE.
* W SET IF LIST OF WORDS TO BE WRITTEN.
* CLEAR IF LIST OF WORDS TO BE READ.
* U SET IF LIST CONTAINS ABSOLUTE USER EXTENDED MEMORY
* ADDRESSES.
* CLEAR IF LIST CONTAINS ABSOLUTE SYSTEM EXTENDED MEMORY
* ADDRESSES.
*
*T,CML 12/0,6/ CT,18/0,24/ EM
* CT WORD COUNT TO TRANSFER (MAXIMUM OF 60D).
* EM ABSOLUTE SYSTEM OR USER EXTENDED MEMORY ADDRESS.
*
* THE LIST OF EXTENDED MEMORY DATA WORDS IMMEDIATELY FOLLOW THE
* LIST OF EXTENDED MEMORY ADDRESSES. DATA IS WRITTEN FROM THIS
* BUFFER OR READ TO THIS BUFFER.
*
* EXIT
*T, OR 12/ 0,12/ ST,36/ 0
* ST 0 FOR TRANSFER COMPLETE.
* 7777 FOR TRANSFER ABORTED.
*
*T, CML 60/ EF
* EF ERROR FLAGS INDICATING WORDS ON WHICH
* ERROR OCCURRED IF TRANSFER ABORTED.
* BIT 0 SET = ERROR OCCURRED ON WORD
* AT *EM* + 0.
* ...
* BIT *CT* - 1 SET = ERROR OCCURRED ON WORD
* AT *EM* + *CT* - 1.
PEL SUBFUN ECSM,PELS
* TEST FLAG BITS TO UPDATE *EFRL* STATUS.
LDK EFRL SET FLAG REGISTER STATUS
CRD FN
LDN 0
STD FN+3
STD FN+4
LDD TH
ERRNZ SHNI-1000 CODE DEPENDS ON VALUE OF TAG
STM PELA
PEL1 LDN 1 TEST FLAG BIT
PELA SHN **
STD EA+1
SHN -14
ADC 6000
STD EA
AOM PELA
LPN 77
LMN 23
ZJN PEL2 IF END OF BITS TO CHECK
LDN EA
RJM IFR
ZJN PEL1 IF BIT NOT SET
LDD EA
LPN 77
RAD FN+3
LDD EA+1
RAD FN+4
UJN PEL1 CHECK NEXT BIT
PEL2 LDK EFRL WRITE UPDATED FLAG REGISTER
CWD FN
LDN 0
STD T9 SET RELATIVE LIST ADDRESS
SOD WC SET WORD COUNT OF LIST
STD T8
STD T3 SET DATA ADDRESS IN LIST
PEL3 LDD OR+1 READ LIST ENTRY
LPN 77
SHN 14
ADD OR+2
ADD T9
CRD FN
LDD FN+1 SET WORD COUNT
SHN -6
STD WC
LDD FN+3 SET EM ADDRESS
STD EA
LDD FN+4
STD EA+1
LDD OR+3
SHN 21-10
PJN PEL4 IF READ
LDD OR+1 READ DATA TO WRITE
LPN 77
SHN 14
ADD OR+2
ADD T3
CRM TBUF,WC
WRITEM *,TBUF WRITE DATA
UJN PEL5 CONTINUE
PEL4 READEM *,TBUF READ DATA
STD FN+4
LDD OR+1 WRITE DATA TO CM
LPN 77
SHN 14
ADD OR+2
ADD T3
CWM TBUF,WC
PEL5 LDD OR+1 RETURN STATUS
LPN 77
SHN 14
ADD OR+2
ADD T9
CWD FN
LDD WC ADVANCE TOTAL WORD COUNT
RAD T3
AOD T9
LMD T8
NJP PEL3 IF NOT END OF LIST
LJM FNC COMPLETE FUNCTION
TECSM SPACE 4,10
** TECSM - TABLE OF *ECSM* SUBFUNCTION PROCESSOR ADDRESSES.
*
* INDEXED BY SUBFUNCTION.
* 12/ PROCESSOR ADDRESS
TECSM BSS 0
DUP MXECSM,1
CON HNG
LIST G
TECSM HERE
LIST *
ORG TECSM+MXECSM
TITLE *MTEM* MONITOR FUNCTION PROCESSING.
MTEM SPACE 4,10
*** MTEM - *MTE* REQUESTS FOR SHARED BUFFERED DEVICES.
PPR MTEM
LDM TMTEM,OR+1 CHECK SUBFUNCTION
STD T9
LJM 0,T9 ENTER PROCESSOR
CBT SPACE 4,10
*** CBRS-CBWS - CLEAR BAT READ/WRITE ACCESS.
*
* ENTRY
*T, OR 12/ MTEM,12/ SF,12/ MI,12/ 0,12/ EQ
* SF *CBRS*/*CBWS* SUBFUNCTION.
* MI MACHINE INDEX FOR THE MAINFRAME BEING RECOVERED.
* EQ EST ORDINAL FOR THE DEVICE BEING RECOVERED.
*
* EXIT
*T, OR 12/ 0,48/ UNCHANGED
CBT SUBFUN MTEM,(CBRS,CBWS)
LDM TMMK-1,OR+2 GET MACHINE MASK
SHN 4
STM CBTB SET WRITE BIT MASK
STD T3
SHN 4
STD T2 READ BIT
LDD OR+1
ERRNZ CBRS
ZJN CBT1 IF TO CLEAR READ ACCESS (*CBRS*)
LDD T3
CBT1 ADD T2
LMC 7777
STM CBTA SET MASK TO CLEAR READ OR R/W BITS
LDD TH SET BAT LENGTH
STD T8
RJM GBI SET *BATI* INTERLOCK
MJP FNR IF UNABLE TO SET LOCK
LDD OR+4
RJM GBA GET BAT ADDRESS
CBT2 LDK BRTL SET WORD COUNT FOR FULL BUFFER
STD WC
SHN 2
ADD WC
STD T9 BYTES TO PROCESS
READEM *,TBUF,CBT5 READ BAT
CBT3 SOD T9
MJN CBT4 IF DONE PROCESSING THIS BUFFER
LDM TBUF,T9
STD T2 SAVE ORIGINAL VALUE
LPC **
CBTA EQU *-1
STM TBUF,T9
LDD OR+1
ZJN CBT3 IF TO CLEAR READ ACCESS
LDD T2 CHECK ORIGINAL VALUE
LPC ** (MASK IS ONLY THE WRITE BIT FOR THIS M/F)
CBTB EQU *-1
ZJN CBT3 IF WRITE BIT FOR THIS M/F NOT SET
LDM TBUF,T9
SCN 10 CLEAR *URW* BIT
STM TBUF,T9
UJN CBT3 CHECK NEXT BYTE
CBT4 WRITEM *,TBUF REWRITE BAT
LDD T8
SBD WC
ZJN CBT5 IF NO MORE TO PROCESS
STD T8
LDD WC ADVANCE EM ADDRESS
RAD EA+1
SHN -14
RAD EA
UJP CBT2 PROCESS NEXT BUFFER OF BAT DATA
CBT5 RJM CBI CLEAR *BATI* INTERLOCK
CBT6 LJM FNC SET FUNCTION COMPLETE
EBR SPACE 4,10
*** EBRS - ENABLE BRT PROCESSING.
*
* ENTRY
*T, OR 12/ MTEM,12/ *EBRS*,12/ 0,12/ BD,12/ BT
* BD TRACK NUMBER OF BDT IN EXTENDED MEMORY.
* BT TRACK NUMBER OF BRT IN EXTENDED MEMORY.
*
* EXIT
*T, OR 12/ 0,48/ UNCHANGED
EBR SUBFUN MTEM,EBRS
LDD OR+4
STM BRTP
RJM SEA SET ESM ADDRESS OF BRT
RAM CBAA+1
SHN -14
RAM CBAA
LDD OR+3
RJM SEA SET ESM ADDRESS OF BDT
RAM CBDA+1
SHN -14
RAM CBDA
RJM CSZ CREATE SECTOR OF ZERO WORDS
LDN 1 START AT FIRST BRT
RJM CBA
EBRA LDC 20 NUMBER OF SECTORS/TRACK
RJM CET CLEAR BRT TRACK
RJM CBD
EBRB LDC 20 NUMBER OF SECTORS/TRACK
RJM CET CLEAR BDT TRACK
UJP CBT6 COMPLETE FUNCTION
CEM SPACE 4,10
*** CEMS - CLEAR EXTENDED MEMORY TRACK.
*
* ENTRY
*T, OR 12/ MTEM,12/ *CEMS*,12/ FS,12/ NS,12/ TK
* FS FIRST SECTOR TO CLEAR.
* NS NUMBER OF SECTORS TO CLEAR.
* TK EXTENDED MEMORY TRACK TO CLEAR.
*
* EXIT
*T, OR 12/ 0,48/ UNCHANGED
CEM SUBFUN MTEM,CEMS
RJM CSZ CREATE SECTOR OF ZERO WORDS
LDD OR+4
RJM SEA SET ESM ADDRESS OF TRACK
STD EA+1 SET ESM ADDRESS
SHN -14
STD EA
LDD OR+2 FIRST SECTOR TO CLEAR
SHN 6
RAD EA+1
SHN -14
RAD EA
LDD OR+3 NUMBER OF SECTORS TO CLEAR
RJM CET CLEAR ESM TRACK
LJM FNC COMPLETE FUNCTION
SEP SPACE 4,15
*** SEPS-CEPS - SET/CLEAR *DAS* ERROR PROCESSING INTERLOCK.
*
* ENTRY
*T, OR 12/ MTEM,12/ SF,24/ 0,12/ EQ
* SF *SEPS*/*CEPS* SUBFUNCTION CODE.
* EQ EST ORDINAL OF DEVICE TO BE PROCESSED.
*
* EXIT
*T, OR 12/ 0,36/ UNCHANGED,12/ ST
* ST STATUS = 0, IF SUCCESSFUL.
* = 1, IF REJECT.
SEP SUBFUN MTEM,(SEPS,CEPS)
SFLAG BDTI,FNR SET *BDTI* INTERLOCK
LDD OR+1
LMN CEPS
ZJN SEP1 IF CLEAR INTERLOCK SUBFUNCTION
LDC TBDRI CHECK *BDRI* INTERLOCK
RJM IFR
NJN SEP4 IF *BDRI* SET
SEP1 RJM RBD READ *BDT* ENTRY
LDD OR+1
LMN CEPS
ZJN SEP3 IF CLEAR INTERLOCK SUBFUNCTION
LDD FN CHECK ERROR PROCESSING INTERLOCK
NJN SEP4 IF INTERLOCK CURRENTLY SET
LDD FN+1 CHECK RESTORE INTERLOCK
ZJN SEP2 IF INTERLOCK NOT SET
TLMC 4000,MI
NJN SEP4 IF RESTORE IN PROGRESS ON ANOTHER MF
SEP2 TLDC 4000,MI SET ERROR PROCESSING INTERLOCK
SEP3 STD FN
WRITEM 1,FN UPDATE BDT ENTRY
LDN 0
UJN SEP5 SET SUCCESSFUL REPLY
SEP4 LDN 1 SET REJECT REPLY
SEP5 STD OR+4
RJM CBJ CLEAR *BDTI* INTERLOCK
LJM FNC COMPLETE FUNCTION
SRI SPACE 4,15
*** SRIS - SET RECOVERY ERROR PROCESSING INTERLOCK.
*
* ENTRY
*T, OR 12/ MTEM,12/ *SRIS*,36/ 0
*
* EXIT
*T, OR 12/ 0,36/ UNCHANGED,12/ ST
* ST STATUS = 0, IF SUCCESSFUL.
* = 1, IF INCOMPLETE (*BDRI* SET, BUT SOME
* CONFLICTING *BDT* INTERLOCKS ARE SET).
* = 2, IF REJECT.
SRI SUBFUN MTEM,SRIS
LDM BRTP
ZJP SRI3 IF BRT PROCESSING NOT ENABLED
SFLAG BDTI,FNR SET *BDTI* INTERLOCK
SFLAG BDRI,SRI2 SET *BDRI* INTERLOCK
RJM CBJ CLEAR *BDTI* INTERLOCK
SRI1 RJM CCI CHECK FOR CONFLICTING INTERLOCKS
ZJN SRI4 IF NO CONFLICTING INTERLOCKS SET
LDN 1 SET *INCOMPLETE* STATUS
UJN SRI4 COMPLETE FUNCTION
SRI2 RJM CBJ CLEAR *BDTI* INTERLOCK
SRI3 LDN 2 SET REJECT REPLY
SRI4 STD OR+4
SRI5 LJM FNC COMPLETE FUNCTION
CRI SPACE 4,10
*** CRIS - CLEAR RECOVERY ERROR PROCESSING INTERLOCK.
*
* ENTRY
*T, OR 12/ MTEM,12/ *CRIS*,36/ 0
*
* EXIT
*T, OR 12/ 0,48/ UNCHANGED
CRI SUBFUN MTEM,CRIS
CFLAG BDRI CLEAR *BDRI* INTERLOCK
UJP SRI5 COMPLETE FUNCTION
GRI SPACE 4,10
*** GRIS - SET RECOVERY INTERLOCK STATUS.
*
* ENTRY
*T, OR 12/ MTEM,12/ *GRIS*,36/ 0
*
* EXIT
*T, OR 12/ 0,36/ UNCHANGED,12/ ST
* ST STATUS = 0, IF NO CONFLICTING INTERLOCKS ARE SET.
* = 1, IF CONFLICTING INTERLOCKS ARE STILL SET.
GRI SUBFUN MTEM,GRIS
UJP SRI1 CHECK FOR CONFLICTING INTERLOCKS
RBP SPACE 4,10
*** RBPS - RELEASE BAT ACCESS PERMISSIONS FOR DEVICE.
*
* ENTRY
*T, OR 12/ MTEM,12/ *RBPS*,24/ 0,12/ EQ
* EQ EST ORDINAL FOR THE DEVICE.
*
* EXIT
*T, OR 12/ 0,36/ UNCHANGED,12/ ST
* ST STATUS = 0, IF ALL PERMISSIONS RELEASED.
* = ERROR COUNT, IF NOT ALL PERMISSIONS RELEASED.
RBP SUBFUN MTEM,RBPS
LDD OR+4 SET EST ORDINAL
STD FN
SFA EST
CRD CM
LDD CM+4
SHN 3
ADK TDGL GET NUMBER OF TRACKS
CRD CM
LDD CM
STD FN+3
LDN 0 SET INITIAL TRACK NUMBER
STD FN+1
STD T8 CLEAR ERROR FLAG
LDC 4000 SET WRITE MODE REQUESTED FLAG
STD FN+2
RBP1 RJM RBW READ BAT WORD (NO INTERLOCK)
LDI T6 CHECK CURRENT ACCESS
TLPC 0,RWM (MASK IS R/W BITS FOR THIS MACHINE)
ZJN RBP3 IF THIS MACHINE HAS NO ACCESS
LDN BMTR TERMINATE READ AND WRITE ACCESS
SHN 6
RJM IBF ISSUE *BFMM*
LDD CM+4 CHECK REPLY
NJN RBP2 IF NOT SUCCESSFUL
STM UBAA
RJM UBA UPDATE BAT ACCESS
PJN RBP3 IF BAT UPDATED SUCCESSFULLY
RBP2 AOD T8 INCREMENT ERROR COUNT
RBP3 AOD FN+1 INCREMENT TRACK NUMBER
LMD FN+3
NJN RBP1 IF MORE TRACKS TO PROCESS
LDD T8 RETURN ERROR COUNT
STD OR+4
LJM FNC SET FUNCTION COMPLETE
SRP SPACE 4,15
*** SRPS-CRPS - SET/CLEAR RESTORE PARITY INTERLOCK.
*
* ENTRY
*T, OR 12/ MTEM,12/ SF,24/ 0,12/ EQ
*T, MB 24/ ,36/ CID
* SF *SRPS*/*CRPS* SUBFUNCTION CODE.
* EQ EST ORDINAL OF DEVICE.
* CID SERIAL NUMBER OF CONTROLLER DOING RESTORE (*SRPS*).
*
* EXIT
*T, OR 12/ 0,36/ UNCHANGED,12/ ST
* ST STATUS = 0, IF SUCCESSFUL (*SRPS*).
* = 1, IF REJECT (*SRPS*).
*
* NOTE - THE CALLER MUST SET ERROR PROCESSING ON THE DEVICE
* (VIA *MTEM*/*SEPS*) BEFORE CALLING *MTEM*/*SRPS*.
SRP SUBFUN MTEM,(SRPS,CRPS)
SFLAG BDTI,FNR SET *BDTI* INTERLOCK
RJM RBD READ *BDT* ENTRY
LDN ZERL
CRD CM
LDD OR+1
LMN CRPS
ZJN SRP1 IF CLEAR RESTORE INTERLOCK SUBFUNCTION
LDD FN+1 CHECK RESTORE INTERLOCK
NJN SRP2 IF INTERLOCK ALREADY SET
LDD RQ READ MESSAGE BUFFER
ADN 1
CRD CM
TLDC 4000,MI SET RESTORE INTERLOCK AND MID
SRP1 STD FN+1 SET/CLEAR INTERLOCK
LDD CM+2 SET/CLEAR CONTROLLER ID
STD FN+2
LDD CM+3
STD FN+3
LDD CM+4
STD FN+4
WRITEM 1,FN UPDATE BDT ENTRY
LDN 0
UJN SRP3 SET SUCCESSFUL REPLY
SRP2 LDN 1 SET REJECT REPLY
SRP3 STD OR+4
RJM CBJ CLEAR *BDTI* INTERLOCK
LJM FNC COMPLETE FUNCTION
GBD SPACE 4,15
*** GBDS - GET *BDT* ENTRY.
*
* ENTRY
*T, OR 12/ MTEM,12/ GBDS,24/ 0,12/ EQ
* EQ EST ORDINAL OF DEVICE.
*
* EXIT
*T, OR 12/ 0,48/ UNCHANGED
*T, MB 60/ BDT
* BDT *BDT* ENTRY FOR SPECIFIED DEVICE.
GBD SUBFUN MTEM,GBDS
RJM RBD READ *BDT* ENTRY
LDD RQ RETURN *BDT* ENTRY TO MESSAGE BUFFER
ADN 1
CWD FN
LJM FNC COMPLETE FUNCTION
TMTEM SPACE 4,10
** TMTEM - TABLE OF *MTEM* SUBFUNCTION PROCESSOR ADDRESSES.
*
* INDEXED BY SUBFUNCTION.
* 12/ PROCESSOR ADDRESS
TMTEM BSS 0
DUP MXMTEM,1
CON HNG
LIST G
TMTEM HERE
LIST *
ORG TMTEM+MXMTEM
TITLE OTHER MONITOR FUNCTION PROCESSORS.
DLKM SPACE 4,10
*** DLKM - DELINK TRACKS.
*
* ENTRY
*T, OR 12/ DLKM,12/ EQ,36/
* EQ EST ORDINAL
*
* EXIT.
*T, OR 60/ UNCHANGED
* THE REQUEST IS PASSED TO *CPUMTR* AFTER THE MST/TRT
* INTERLOCK IS GAINED.
PPR DLKM,SDI
DTKM SPACE 4,10
*** DTKM - DROP TRACKS.
*
* ENTRY
*T, OR 12/ DTKM,12/ EQ,36/
* EQ EST ORDINAL
*
* EXIT
*T, OR 60/ UNCHANGED
* THE REQUEST IS PASSED TO *CPUMTR* AFTER THE MST/TRT
* INTERLOCK IS GAINED.
PPR DTKM,SDI
RTCM SPACE 4,15
*** RTCM - REQUEST TRACK CHAIN.
*
* ENTRY
*T, OR 12/ RTCM, 1/C, 2/, 9/ EQ, 12/ TK, 24/
* C SET CHECKPOINT UPON FUNCTION COMPLETION.
* EQ EST ORDINAL.
* IF EQ IS ZERO TK BYTE CONTAINS SELECTION PARAMETER.
*
* EXIT
*T, OR 60/ UNCHANGED.
* THE REQUEST IS PASSED TO *CPUMTR* AFTER THE MST/TRT
* INTERLOCK IS GAINED.
PPR RTCM,SDI
STBM SPACE 4,15
*** STBM - SET TRACK BIT.
*
* ENTRY
*T, OR 12/ STBM,1/C,1/,10/ EQ,12/ PM,12/ SF,12/
*
* C IF C = 1 SET CHECKPOINT BIT.
* EQ EQUIPMENT.
* PM PARAMETER WHOSE USE DEPENDS ON THE SUBFUNCTION
* BEING PERFORMED.
* SF SUBFUNCTION CODE.
*
* EXIT
*T, OR 60/ UNCHANGED.
* THE REQUEST IS PASSED TO *CPUMTR* AFTER THE MST/TRT
* INTERLOCK IS GAINED.
PPR STBM,SDI
VMSM SPACE 4,10
*** VMSM - VALIDATE MASS STORAGE.
*
* ENTRY
*T, OR 12/ VMSM,12/ EQ,36/
* EQ EST ORDINAL TO PROCESS.
*
* REPLY
*T, OR 60/ UNCHANGED.
* THE REQUEST IS PASSED TO *CPUMTR* AFTER THE MST/TRT
* INTERLOCK IS GAINED.
PPR VMSM,SDI
TITLE SUBROUTINES.
TMMK SPACE 4,10
** TMMK - TABLE OF MACHINE MASKS.
*
* INDEXED BY MACHINE INDEX.
* 12/ MACHINE MASK
TMMK BSS 0
.1 SET 1
DUP MXMF,2
CON .1
.1 SET .1+.1
TCLK SPACE 4,10
** TCLK - TABLE OF MACHINE CLOCK VALUES.
*
* INDEXED BY MACHINE INDEX.
* 12/ LAST CLOCK VALUE
TCLK BSS 0
DUP MXMF,1
CON 0
TSTA SPACE 4,10
** TSTA - TABLE OF MACHINE STATES.
*
* INDEXED BY MACHINE INDEX.
* 12/ MACHINE STATE
TSTA BSS 0
DUP MXMF,1
CON MFDN
AEB SPACE 4,15
** AEB - ADD ENTRY TO BRT.
*
* ENTRY (FN - FN+4) = *MTBT* ENTRY (BYTE 2 UPDATED TO INCLUDE
* MASKS OF MACHINES WITH CONFLICTING ACCESS).
* (BRTB - BRTB+400) = CURRENT BRT.
*
* EXIT BRT UPDATED IN PP MEMORY (NEW ENTRY AND HEADER).
* (BRTT) INCREMENTED.
* (BRTF) SET IF BRT BECOMES FULL.
*
* USES T1, T2, CM - CM+4, FN - FN+4.
*
* NOTE - ASSUMES THE BRT IS NOT FULL ON ENTRY.
AEB SUBR ENTRY/EXIT
AOM BRTB INCREMENT ENTRY COUNT IN HEADER WORD
STD T2
LDD FN SET EM ADDRESS OF MST INTO BRT ENTRY
SFA EST
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADK SDGL
CRD CM
LDD CM
STD FN+3
LDD CM+1
STD FN+4
LDN MXMF-1 UPDATE HEADER
STD T1
AEB1 LDM TMMK,T1 CHECK FOR MACHINE MASK N
STM AEBA
LDD FN+2
LPC **
AEBA EQU *-1
ZJN AEB2 IF MACHINE MASK NOT SET
LDD T2
STM BRTB+1,T1 SET LAST ENTRY TO LOOK AT FOR M/F N
AEB2 SOD T1
PJN AEB1 IF MORE MACHINES TO CHECK
LDD T2 FORM ADDRESS OF NEW ENTRY TO ADD
SHN 2
ADD T2
ADC BRTB
STM AEBB
LDD MA ADD NEW ENTRY
CWD FN
CRM **,ON
AEBB EQU *-1
AOM BRTT UPDATE COUNT OF BRT ENTRIES ADDED
LDD T2
ADC -BRTL+1
MJN AEB3 IF BRT IS NOT FULL
LDN NBRR SET BRT FULL INDICATOR
STM BRTF
AEB3 LJM AEBX RETURN
CAM SPACE 4,15
** CAM - CHECK FOR ACTIVE MACHINES.
*
* ENTRY (A) = 0.
*
* EXIT (A) = (T8) = MACHINES REQUIRING STATE PROCESSING.
* (T9) = MACHINES ACTIVE.
*
* CALLS SLA.
*
* USES T1, T8, T9, WC.
*
* MACROS READEM.
CAM3 LDD T8
CAM SUBR ENTRY/EXIT
LDN 0
STD T8 PRESET MACHINES TO PROCESS
STD T9
LDN SMET READ MACHINE CLOCKS
RJM SLA SET LABEL TRACK ADDRESS
READEM MXMF,TBUF,CAM3 NO STATUS OF CLOCK ON ERROR
CAM1 SOD WC
MJN CAM3 IF END OF MACHINES TO CHECK
SHN 2
ADD WC
STD T1
LDM TBUF+4,T1
SBM TCLK,WC
ZJN CAM2 IF NO CHANGE IN MACHINE STATUS
RAM TCLK,WC
LDM TMMK,WC
RAD T9
LDN MFAC
CAM2 LMM TSTA,WC
ZJN CAM1 IF NO STATE PROCESSING
LDM TMMK,WC
RAD T8
UJN CAM1 LOOP
CAP SPACE 4,15
** CAP - CHECK ACCESS PERMISSIONS.
*
* ENTRY SEE *RBW* EXIT CONDITIONS.
*
* EXIT BAT WORD REWRITTEN.
* *BATI* INTERLOCK CLEARED.
* (A) .LT. 0 IF REQUEST COULD NOT BE PROCESSED.
* (FN+2) UPDATED TO INCLUDE MASKS OF MACHINES WITH
* CONFLICTING ACCESS.
*
* CALLS CBI, IBF.
*
* USES T7, T9.
*
* MACROS WRITEM.
CAP5 SHN -4 SAVE BAT ACCESS PERMISSIONS
STD T9
RJM CBI CLEAR *BATI* INTERLOCK
LDD T9 UPDATE FUNCTION REQUEST WITH MASKS
LPN 17
STD T7
LDD T9
SHN -4
RAD T7
LDD FN+2
LPC 4000 PRESERVE READ/WRITE MODE BIT
ADD T7
STD FN+2
LCN 0 INDICATE FUNCTION NOT PROCESSED
CAP SUBR ENTRY/EXIT
LDI T6
SHN 21-3
MJP CAP4 IF *URW* SET
LDD FN+2
SHN -13
ZJN CAP1 IF READ ACCESS REQUESTED
LDI T6 CHECK CURRENT ACCESS
TLPC 0,RWMC (MASK IS ALL BITS EXCEPT R/W FOR THIS M/F)
CAP0 NJN CAP5 IF ANOTHER M/F HAS READ OR WRITE ACCESS
LDD T3
UJN CAP2 ADD WRITE ACCESS
CAP1 LDI T6 CHECK CURRENT ACCESS
LPC 360 ISOLATE WRITER
TLPC 0,RWMC
NJN CAP0 IF ANOTHER M/F HAS WRITE ACCESS
LDI T6 CLEAR R/W BITS FOR THIS M/F
TLPC 0,RWMC
LMD T2 ADD READ ACCESS
CAP2 STI T6
LDN 0 SET ERROR CODE
CAP3 STD T9
WRITEM 1,TBUF UPDATE BAT
RJM CBI CLEAR *BATI* INTERLOCK
ERRNZ BMCW-BMCR-1
LDD FN+2 SET *BFMM* OPERATION CODE
SHN -13
ADN BMCR
SHN 6
ADD T9 ADD ERROR CODE
RJM IBF ISSUE *BFMM* FUNCTION
UJP CAPX RETURN
CAP4 LDI T6 CLEAR *URW* BIT
SCN 10
STI T6
LDN 2 SET ERROR CODE
UJN CAP3 UPDATE BAT
CBA SPACE 4,10
** CBA - CALCULATE BRT ADDRESS.
*
* ENTRY (A) = MACHINE INDEX OF BRT TO READ.
*
* EXIT (WC) = WORD COUNT (LENGTH OF BRT).
* (EA - EA+1) = EM ADDRESS OF BRT.
CBA SUBR ENTRY/EXIT
SBN 1
SHN 10 (BRT LENGTH IS 400B)
CBAA ADC **
STD EA+1
SHN -14
STD EA
LDC BRTL SET LENGTH OF EM TRANSFER
STD WC
UJN CBAX RETURN
CBD SPACE 4,10
** CBD - CALCULATE BDT ADDRESS.
*
* EXIT (EA - EA+1) = EM ADDRESS OF BDT.
CBD SUBR ENTRY/EXIT
CBDA LDC **
STD EA+1
SHN -14
STD EA
UJN CBDX RETURN
CBI SPACE 4,10
** CBI - CLEAR *BATI* INTERLOCK.
CBI SUBR ENTRY/EXIT
CFLAG BATI
UJN CBIX RETURN
CBJ SPACE 4,10
** CBJ - CLEAR *BDTI* INTERLOCK.
CBJ SUBR ENTRY/EXIT
CFLAG BDTI
UJN CBJX RETURN
CBM SPACE 4,10
** CBM - CHECK BRT-S FROM OTHER MAINFRAMES.
*
* USES T8, WC, EA - EA+1, SX - SX+2, FS - FS+4.
*
* CALLS CBA, IBF, UBA.
*
* MACROS READEM.
CBM SUBR ENTRY/EXIT
LDM BRTP
ZJN CBMX IF BRT PROCESSING NOT ENABLED
TLDN 0,MI SAVE MACHINE INDEX OF THIS MAINFRAME
STD T8
LDN MXMF+1
STD SX
CBM1 SOD SX
ZJN CBMX IF ALL BRT-S HAVE BEEN PROCESSED
TLMN 0,MI
ZJN CBM1 IF THIS M/F
LDM TSTA-1,SX
LMN MFAC
NJN CBM1 IF M/F NOT CURRENTLY ACTIVE
LDD SX READ BRT HEADER
RJM CBA
READEM 1,FS
LDM FS,T8
ZJN CBM1 IF NO ENTRIES FOR THIS M/F
STD SX+1 ENTRY COUNT
STD WC
LDC BRTB-5
STD SX+2
AOD EA+1 ADVANCE EM ADDRESS PAST HEADER
SHN -14
RAD EA
READEM *,BRTB,CBMX READ BRT
CBM2 LDN 5 ADVANCE TO NEXT ENTRY
RAD SX+2
LDM 2,SX+2
STD FN+2
TLPN 0,MM
ZJP CBM3 IF MASK FOR THIS M/F NOT SET
LDM 3,SX+2 EM ADDRESS OF MST
SHN 14
ADM 4,SX+2
TADN DILL-LLLL,ML ADVANCE TO LOCAL WORD *DILL*
STD EA+1
SHN -14
STD EA
READEM 1,MBUF READ LOCAL *DILL* WORD
LDM MBUF+1 SET EST ORDINAL
STD FN
LDM 1,SX+2 SET TRACK
STD FN+1
* VERIFY THAT THIS MACHINE STILL HAS CONFLICTING ACCESS.
RJM RBW READ BAT WORD (NO INTERLOCK)
LDD FN+2
SHN -13
ZJN CBM2.1 IF READ ACCESS REQUESTED
LDI T6 CHECK CURRENT ACCESS
TLPC 0,RWM (MASK IS R/W BITS FOR THIS MACHINE)
ZJN CBM3 IF THIS MACHINE HAS NO ACCESS
LDN BMTR
UJN CBM2.2 ISSUE *BFMM* TO RELEASE ACCESS
CBM2.1 LDI T6 CHECK CURRENT ACCESS
TLPC 0,WM
ZJN CBM3 IF THIS MACHINE DOES NOT HAVE WRITE ACCESS
LDN BMTW
CBM2.2 SHN 6 SET *BFMM* OPERATION CODE
RJM IBF ISSUE *BFMM*
LDD CM+4 CHECK REPLY
STM UBAA
SHN 21-12
MJN CBM3 IF BUFFER BUSY
RJM UBA UPDATE BAT ACCESS
MJN CBM4 IF CANNOT GET *BATI* INTERLOCK
CBM3 SOD SX+1
NJP CBM2 IF MORE ENTRIES
CBM4 UJP CBM1 CHECK NEXT BRT
CCI SPACE 4,10
** CCI - CHECK FOR CONFLICTING *BDT* INTERLOCKS.
*
* EXIT (A) = 0, IF NO BDT INTERLOCKS ARE HELD BY OTHER MF-S.
*
* USES T8, FN - FN+4.
*
* CALLS CBD, SLA.
*
* MACROS READEM.
CCI SUBR ENTRY/EXIT
LDN DAET
RJM SLA
READEM 1,FN READ DAET POINTER
LDD FN+4 NUMBER OF BDT ENTRIES
STD WC
RJM CBD SET ADDRESS OF BDT
READEM *,TBUF READ BDT
LDC TBUF-5 INITIALIZE SEARCH ADDRESS
STD T8
CCI1 LDN 5 ADVANCE TO NEXT BDT ENTRY
RAD T8
LDI T8
ZJN CCI3 IF ERROR PROCESSING INTERLOCK NOT SET
TLMC 4000,MI
CCI2 NJN CCIX IF INTERLOCKED BY ANOTHER M/F
CCI3 LDM 1,T8
ZJN CCI4 IF *RESTORE IN PROGRESS* NOT SET
TLMC 4000,MI
NJN CCI2 IF RESTORE IN PROGRESS ON ANOTHER M/F
CCI4 SOD FN+4
NJN CCI1 IF MORE ENTRIES TO CHECK
UJP CCIX RETURN
CDI SPACE 4,15
** CDI - CLEAR DEVICE INTERLOCK.
*
* ENTRY (A) = (RQ) = EQUIPMENT MST ADDRESS.
* (FN) = FIRST WORD OF TRT TO WRITE TO EXTENDED MEMORY.
* (FN+1) = 1/F, 11/LWA + 1 TO WRITE TO EXTENDED MEMORY.
* F = 1, IF TO WRITE MRT.
* (FN+2) = OUTPUT REGISTER ADDRESS TO CLEAR UPPER BYTE.
*
* EXIT TO *CFR1*.
*
* USES T1, WC, EA - EA+4, OR - OR+4.
*
* MACROS WRITEM.
CDI SHN 3
ADK TDGL READ TRT ADDRESS
CRM MBUF,TR
ADK SDGL-TDGL-3
CRD EA
ADK TRLL-SDGL
CRD OR
* THE MST INTERLOCK IN CM SHOULD ALWAYS BE CLEAR WHEN
* PROCESSING A CLEAR DEVICE INTERLOCK REQUEST.
LDD EA+4
LPN 77
NJN * IF INTERLOCK NOT CLEAR
* CHECK IF TRT WORDS UPDATED.
LDD FN+1 SET WORD COUNT
LPC 3777
SBD FN
MJN CDI1 IF NO TRT WORDS UPDATED
NJN CDI2 IF TRT WORDS TO WRITE TO EXTENDED MEMORY
CDI1 LJM CDI5 SKIP TRT WRITE
CDI2 STD T8
LDM MBUF+2
SBD FN
SBD T8
PJN CDI3 IF NOT BEYOND MAXIMUM TRT LENGTH
RAD T8
CDI3 LDD FN START OF TRT TO WRITE TO EXTENDED MEMORY
ADD HN
ERRNZ TRST-MSST-1 CODE DEPENDS ON VALUE OF CONSTANTS
RAD EA+1
SHN -14
RAD EA
LDD T8 SAVE TOTAL LENGTH TO WRITE
STD T9
LDK BRTL SET DEFAULT WRITE COUNT
STD WC
CDI3.1 LDD T8
SBD WC
PJN CDI3.2 IF FULL BUFFER
RAD WC
ZJN CDI3.3 IF DONE
LDN 0
CDI3.2 STD T8
LDD OR+3 SET ADDRESS TO READ FROM CM
SHN 14
ADD OR+4
ADD FN
CRM TBUF,WC READ TRT TO PP BUFFER
SBD FN
STD OR+4 ADVANCE ADDRESS TO READ FROM
SHN -14
STD OR+3
WRITEM *,TBUF
LDD WC ADVANCE EM ADDRESS TO WRITE TO
RAD EA+1
SHN -14
RAD EA
UJN CDI3.1 CONTINUE WRITE LOOP
* WRITE MRT TO EXTENDED MEMORY.
CDI3.3 LDD FN+1
SHN 21-13
PJP CDI4 IF NO MRT UPDATE
LDD RQ RESET CM/EM ADDRESSES
SHN 3
ADK SDGL
CRD EA
ADK TRLL-SDGL
CRD OR
LDD FN SET FIRST MRT WORD TO WRITE
SHN -3
STD T1
LDD FN SET WORD COUNT
ADD T9
ADN 7
SHN -3
SBD T1
STD WC
LDD OR+3 READ MRT TO BUFFER
SHN 14
ADD OR+4
ADD T1
ADM MBUF+2
CRM TBUF,WC
TLDC MRST*100-MSST*100-100,MIH SET MRT ADDRESS
ADD T1
RAD EA+1
SHN -14
RAD EA
WRITEM *,TBUF WRITE MRT
CDI4 LDD RQ RESET ADDRESS OF MST
SHN 3
ADK SDGL
CRD EA
* RELEASE MST/TRT INTERLOCK.
CDI5 WRITEM SDGL+1,MBUF
LDD FN+2 CLEAR OUTPUT REGISTER
CRD OR
LDN 0
STD OR
LDD FN+2
CWD OR
TLDN GLGL-LLLL,ML SET ADDRESS OF LOCAL AREA TO WRITE TO
RAD EA+1
SHN -14
RAD EA
LDK LLLL SET LOCAL MST LENGTH
STD T1
LDD RQ READ LOCAL MST
SHN 3
ADK GLGL
CRM TBUF,T1
WRITEM LLLL,TBUF
LJM CFR1 RETURN
CET SPACE 4,10
** CET - CLEAR EXTENDED MEMORY TRACK.
*
* ENTRY (A) = NUMBER OF SECTORS TO CLEAR.
* (EA - EA+1) = ESM ADDRESS TO START CLEARING.
* (TBUF - TBUF+505) = ZERO SECTOR BUFFER.
CET SUBR ENTRY/EXIT
STD T8 SAVE SECTOR COUNT
LDD HN SET WORD COUNT
STD WC
CET1 WRITEM *,TBUF
LDD WC ADVANCE TO NEXT SECTOR
RAD EA+1
SHN -14
RAD EA
SOD T8
NJN CET1 IF MORE SECTORS
UJN CETX RETURN
CFI SPACE 4,10
** CFI - CLEAR *FATI* FLAG INTERLOCK.
*
* ENTRY *FATI* INTERLOCK SET.
*
* EXIT *FATI* INTERLOCK CLEARED.
*
* MACROS CFLAG, SFA.
CFI SUBR ENTRY/EXIT
CFLAG FATI RELEASE FAT INTERLOCK
SFA FNT,OR+4 SET FNT ADDRESS
UJN CFIX RETURN
CSZ SPACE 4,10
** CSZ - CREATE SECTOR OF ZERO WORDS.
*
* USES CM - CM+1.
CSZ SUBR ENTRY/EXIT
LDC TBUF SET START OF SECTOR
STD CM
LDC 505 SET LENGTH TO CLEAR
STD CM+1
CSZ1 LDN 0
STI CM
AOD CM
SOD CM+1
NJN CSZ1 IF MORE TO CLEAR
UJN CSZX RETURN
GBA SPACE 4,10
** GBA - GET BAT ADDRESS.
*
* ENTRY (A) = EST ORDINAL.
*
* EXIT (EA - EA+1) = EM ADDRESS OF BAT.
*
* USES T9, CM - CM +4, EA - EA+4.
GBA SUBR ENTRY/EXIT
SFA EST
ADK EQDE
CRD CM
LDD CM+4 GET EM ADDRESS OF BAT
SHN 3
ADK NVGL
CRD EA-1 (THIS DESTROYS T9)
UJN GBAX RETURN
GBI SPACE 4,10
** GBI - GET BATI INTERLOCK.
*
* EXIT (A) .LT. 0 AND (BIAA) INCREMENTED IF CANNOT GET
* *BATI* INTERLOCK AFTER *NBIR* RETRIES.
*
* MACROS DELAY, SFLAG.
GBI3 AOM BIAA INCREMENT STATISTIC
LCN 0 SET FAILURE CONDITION
GBI SUBR ENTRY/EXIT
LDN NBIR SET MAXIMUM RETRY COUNT
STM GBIA
UJN GBI2 REQUEST INTERLOCK
GBI1 SOM GBIA
MJN GBI3 IF RETRIES EXHAUSTED
DELAY
GBI2 SFLAG BATI,GBI1
LDN 0
UJN GBIX RETURN
GBIA CON 0 RETRY COUNT
IBF SPACE 4,10
** IBF - ISSUE *BFMM* FUNCTION.
*
* ENTRY (FN - FN+4) = REQUEST.
* (A) = 6/ OPERATION CODE,6/ERROR CODE.
*
* EXIT (OR - OR+4) = *BFMM* REPLY.
*
* USES CM - CM+4, FS - FS+4.
*
* MACROS MONITOR.
IBF SUBR ENTRY/EXIT
STD CM+4 SET OPERATION CODE/ERROR CODE
LDN ZERL CLEAR FNT ENTRY
CRD FS
LDD FN SET EST ORDINAL
STD FS
LDD FN+1 SET CURRENT TRACK
STD FS+2
LDN 0 CLEAR CP
STD CM+1
STD CM+2
LDD MA SET MB AS FNT ENTRY ADDRESS
STD CM+3
ADN 1
CWD FS WRITE PSEUDO FNT ENTRY WORD
MONITOR BFMM
UJN IBFX RETURN
PBR SPACE 4,15
** PBR - PROCESS BAT REQUESTS.
*
* EXIT ALL ENTRIES IN *MTBT* PROCESSED.
* BRT REWRITTEN TO EM AND STATISTICS UPDATED IF ANY
* ENTRIES WERE ADDED.
*
* USES IN, OT, CM - CM+4, FS - FS+4.
*
* CALLS AEB, CAP, CBA, RBW.
*
* MACROS WRITEM.
PBR3 LDM BRTT
ZJN PBRX IF NO BRT ENTRIES ADDED
TLDN 0,MI REWRITE BRT
RJM CBA
WRITEM *,BRTB
LDM BRTB SET CURRENT ENTRY COUNT
STM BREC
PBR SUBR ENTRY/EXIT
TLDC MTIN,PQ READ *MTBT* BUFFER POINTERS
CRD CM
ADK MTOT-MTIN
CRD FS
LDD CM+4 SAVE IN
STD IN
LDD FS+4 SAVE OUT
STD OT
PBR1 LDM BRTF
NJN PBR3 IF BRT IS NOW FULL
LDD IN
SBD OT
ZJN PBR3 IF BUFFER IS EMPTY
TLDC MTBT,PQ READ NEXT ENTRY
ADD OT
CRD FN
RJM GBI GET *BATI* INTERLOCK
MJP PBR3 IF CANNOT GET *BATI* INTERLOCK
AOM BATT INCREMENT BAT REQUEST COUNT
RJM RBW READ BAT WORD
RJM CAP CHECK ACCESS PERMISSIONS
PJN PBR2 IF REQUEST COMPLETE
RJM AEB ADD ENTRY TO BRT
PBR2 TLDC MTOT,PQ UPDATE OUT POINTER
CRD CM
AOD OT
LPN 77
STD OT
STD CM+4
TLDC MTOT,PQ
CWD CM
UJP PBR1 CHECK NEXT BUFFER ENTRY
RBD SPACE 4,15
** RBD - READ *BDT* ENTRY.
*
* ENTRY (OR+4) = EST ORDINAL.
*
* EXIT (FN - FN+4) = *BDT* ENTRY FOR SPECIFIED DEVICE.
* (EA - EA+1) = ESM ADDRESS FOR *BDT* ENTRY.
*
* USES CM - CM+4, EA - EA+1.
*
* CALLS CBD.
*
* MACROS READEM, SFA.
RBD SUBR ENTRY/EXIT
RJM CBD GET ESM ADDRESS OF BDT
LDD OR+4 EST ORDINAL
SFA EST
ADK EQDE
CRD CM
LDD CM+4 READ MST DRIVER WORD
SHN 3
ADK MDGL
CRD CM
LDD CM ISOLATE DAT INDEX
LPC 377
RAD EA+1 ADVANCE TO SELECTED ENTRY
SHN -14
RAD EA
READEM 1,FN READ BDT ENTRY
UJN RBDX RETURN
RBR SPACE 4,25
** RBR - REPROCESS BRT REQUESTS.
*
* ENTRY (BRTF) = *NBRR*, IF BRT IS FULL.
* = 0, OTHERWISE.
*
* EXIT ALL BRT ENTRY REQUESTS RETRIED.
* IF ANY CHANGES, BRT IS REPACKED, HEADER UPDATED, AND
* THE TABLE IS REWRITTEN TO EM.
* IF THE BRT WAS FULL ON ENTRY THE FIRST *NBRR* ENTRIES
* ARE REJECTED BEFORE PROCESSING THE REST.
* (BREC) = CURRENT BRT ENTRY COUNT.
*
* USES T1, T8.
*
* CALLS CAP, CBA, IBF, RBW, UBH.
*
* MACROS READEM, WRITEM.
*
* NOTE - THIS ROUTINE MUST ALWAYS READ THE BRT.
* IF BRT PROCESSING IS DISABLED, WE ASSUME THAT ANY
* REQUESTS FOR BAT ACCESS WILL BE GRANTED AND NO ENTRIES
* WILL NEED TO BE ADDED TO THE BRT.
RBR8 LDM RBRC
ZJN RBR10 IF BRT NOT CHANGED
LDM RBRB SET START OF BRT TO CLEAR
STM RBRD
RBR9 LDN ZERL CLEAR VACATED PORTION OF BRT
CRM **,ON
RBRD EQU *-1
LDN 5
RAM RBRD
SBM RBRA
MJN RBR9 IF MORE TO CLEAR
RJM UBH UPDATE BRT HEADER
LDN 0 CLEAR BRT CHANGED FLAG
STM RBRC
TLDN 0,MI REWRITE BRT
RJM CBA
WRITEM *,BRTB
RBR10 LDM BRTB SET ENTRY COUNT
RBR11 STM BREC
RBR SUBR ENTRY/EXIT
LDM BRTP
ZJN RBRX IF BRT PROCESSING DISABLED
TLDN 0,MI READ BRT
RJM CBA
READEM *,BRTB
LDM BRTB CHECK BRT ENTRY COUNT
ZJN RBR11 IF EMPTY
STD T8
LDM BRTF INDICATE BRT FULL PROCESSING
STM RBRE
LDN 0
STM BRTF CLEAR BRT FULL INDICATOR
LDC BRTB INITIALIZE ADDRESSES
STM RBRA NEXT ENTRY TO READ
ADN 5
STM RBRB NEXT ENTRY TO WRITE
RBR1 LDN 5 ADVANCE TO READ NEXT ENTRY
RAM RBRA
SOD T8
RBR2 MJP RBR8 IF DONE
LDD MA
CWM **,ON
RBRA EQU *-1
SBN 1
CRD FN READ NEXT BRT ENTRY
LDC **
RBRE EQU *-1
NJN RBR5 IF BRT FULL PROCESSING
RJM GBI GET *BATI* INTERLOCK
MJN RBR2 IF CANNOT GET *BATI* INTERLOCK
RJM RBW READ BAT WORD
RJM CAP
MJN RBR6 IF REQUEST NOT PROCESSED
RBR3 SOM BRTB DECREMENT BRT ENTRY COUNT
AOM RBRC INDICATE BRT CHANGED
RBR4 UJN RBR1 PROCESS NEXT ENTRY
RBR5 SOM RBRE
ERRNZ BMCW-BMCR-1
LDD FN+2 SET *BFMM* OPERATION CODE
SHN -13
ADN BMCR
SHN 6
ADN 1 ADD ERROR CODE
RJM IBF ISSUE *BFMM* FUNCTION
AOM BRTR INCREMENT REJECTED ENTRIES
UJN RBR3 CONTINUE AS IF ENTRY PROCESSED
RBR6 LDM RBRA UPDATE MASKS OF MACHINES W/CONFLICTS
STD T1
LDD FN+2
LMM 2,T1
ZJN RBR6.1 IF NO CHANGE IN MACHINE MASKS
LDD FN+2
STM 2,T1
AOM RBRC INDICATE BRT CHANGED
RBR6.1 LDM RBRB
SBM RBRA
ZJN RBR7 IF NO NEED TO MOVE THIS ENTRY
LDD MA MOVE ENTRY
CWD FN
CRM **,ON
RBRB EQU *-1
AOM RBRC INDICATE BRT CHANGED
RBR7 LDN 5 ADVANCE ADDRESS FOR WRITE
RAM RBRB
UJP RBR4 PROCESS NEXT ENTRY
RBRC CON 0 NON-ZERO IF BRT CHANGED
RBW SPACE 4,15
** RBW - READ BAT WORD.
*
* ENTRY (FN - FN+4) = REQUEST (FROM *MTBT* QUEUE OR BRT).
*
* EXIT (T2) = READ MASK FOR THIS M/F.
* (T3) = WRITE MASK FOR THIS M/F.
* (T6) = ADDRESS OF BYTE TO UPDATE.
* (EA - EA+1) = EM ADDRESS OF WORD TO UPDATE.
* (TBUF - TBUF+4) = BAT WORD CONTAINING BYTE TO UPDATE.
*
* CALLS GBA.
*
* MACROS READEM.
RBW SUBR ENTRY/EXIT
LDD FN
RJM GBA GET EM ADDRESS OF BAT FOR EQUIPMENT
LDD FN+1 CALCULATE OFFSET OF WORD TO READ
LPC 3777
SHN -2
RAD EA+1
SHN -14
RAD EA
READEM 1,TBUF READ BAT WORD
TLDN 0,MM
SHN 4
STD T3 WRITE MASK
SHN 4
STD T2 READ MASK
LDD FN+1 ISOLATE BYTE TO UPDATE
LPN 3
ADC TBUF
STD T6
UJP RBWX RETURN
SDI SPACE 4,10
** SDI - SET DEVICE INTERLOCK.
*
* ENTRY (OR - OR+4) = OUTPUT REGISTER.
*
* EXIT TO *FNR* IF DEVICE BUSY.
* TO *CPF* IF SUCCESSFUL.
*
* USES WC, CM - CM+4, EA - EA+4, OR - OR+4.
*
* MACROS CFLAG, READED, SFA, SFLAG.
SDI6 SFLAG COMI INITIATE EXTENDED MEMORY ERROR RECOVERY
SDI7 CFLAG TRTI
SDI8 UJP FNR QUEUE FUNCTION
SDI LDD OR+1 READ EST ENTRY
LPC 777
SFA EST
ADK EQDE
CRD FS
LDD FS+4
SHN 3
ADK SDGL
CRD EA
LDD EA+4
LPN 76
NJP SDI8 IF FUNCTION IN PROGRESS
SFLAG TRTI,SDI8 SET TRT FLAG INTERLOCK
READEM SDGL+1,MBUF,SDI6
LDM MBUF+SDGL*5+4
LPN 77
SDI1 NJP SDI7 IF DEVICE INTERLOCKED
LDM MBUF+SDGL*5 CHECK FOR CORRECT EXTENDED MEMORY ADDRESS
LMD EA
ADM MBUF+SDGL*5+1
LMD EA+1
NJN SDI1 IF BAD ADDRESS READ, LOOP
TLDN 0,MI2 SET MACHINE INDEX * 2 IN EXTENDED MEMORY
RAM MBUF+SDGL*5+4
LMD EA+4
SCN 77
NJN SDI2 IF READ OF MST/TRT NEEDED
LDD EA+3
LMM MBUF+SDGL*5+3
NJN SDI2 IF READ OF MST/TRT NEEDED
LDD EA+2
LMM MBUF+SDGL*5+2
ZJP SDI3 IF NO READ OF MST/TRT NEEDED
SDI2 LDM MBUF+TDGL*5+2 SET TRT WORD COUNT
STD T8
LDD HN ADVANCE TO TRT ADDRESS
RAD EA+1
SHN -14
RAD EA
LDD FS+4 SET CM ADDRESS
SHN 3
ADK TRLL
CRD FN
LDK BRTL SET FULL BUFFER WRITE WORD COUNT
STD WC
SDI2.1 LDD T8
SBD WC
PJN SDI2.2 IF FULL BUFFER TO WRITE
RAD WC
ZJN SDI2.3 IF DONE
LDN 0
SDI2.2 STD T8
READEM *,TBUF,SDI6 READ TRT
LDD FN+3
SHN 14
ADD FN+4
CWM TBUF,WC COPY TO CM
STD FN+4 ADVANCE CM ADDRESS
SHN -14
STD FN+3
LDD WC ADVANCE EM ADDRESS
RAD EA+1
SHN -14
RAD EA
UJN SDI2.1 CONTINUE COPY LOOP
SDI2.3 LDD FS+4 RESET EM ADDRESS
SHN 3
ADK SDGL
CRD EA
LDN SDGL+1 RESET MST WRITE WORD COUNT
STD WC
LDD HN ADVANCE UPDATE COUNTER
RAM MBUF+SDGL*5+4
SHN -14
SDI3 ZJN SDI4 IF NO OVERFLOW
RAM MBUF+SDGL*5+3
SHN -14
RAM MBUF+SDGL*5+2
* WRITE INTERLOCKED MST TO EXTENDED MEMORY.
SDI4 WRITEM *,MBUF WRITE INTERLOCKED MST
CFLAG TRTI CLEAR *TRTI* INTERLOCK
LDD FS+4 WRITE MST WORDS TO CM
SHN 3
ADK TDGL WRITE UPDATED MST WORDS
ERRNZ SDGL-TDGL-2 CODE DEPENDS ON VALUE OF TAG
CWM MBUF,TR *SDGL* MUST BE LAST WORD WRITTEN TO CM
LJM CPF PASS FUNCTION TO *CPUMTR*
SEA SPACE 4,10
** SEA - SET ESM TRACK ADDRESS.
*
* ENTRY (A) = TRACK NUMBER IN EXTENDED MEMORY.
*
* EXIT (A) = ESM ADDRESS OF TRACK.
*
* USES T1.
SEA SUBR ENTRY/EXIT
LPC 3777
STD T1
SHN 6
ADD T1 (101B * TRACK)
SEAA SHN 4 (2020B * TRACK)
* SHN 4+EMSC
SEAB ADC 20
* ADC (NUMBER OF SECTORS/TRACK)
UJN SEAX RETURN
SLA SPACE 4,10
** SLA - SET LABEL ADDRESS.
*
* ENTRY (A) = RELATIVE ADDRESS IN *ETLT* SECTOR OF LABEL.
*
* EXIT (EA - EA+1) = ABSOLUTE LABEL ADDRESS.
SLA SUBR ENTRY/EXIT
SLAA ADC ETLT*100B
* ADC ETLT*100B+(SECTORS PER TRACK)
STD EA+1
SHN -14
STD EA
UJN SLAX RETURN
UBA SPACE 4,10
** UBA - UPDATE BAT ACCESS.
*
* ENTRY (UBAA) = *BFMM* REPLY STATUS.
* (FN - FN+2) = REQUEST.
*
* EXIT (A) .LT. 0 IF CANNOT GET *BATI* INTERLOCK.
*
* CALLS CBI, GBI, RBW.
*
* MACROS WRITEM.
UBA SUBR ENTRY/EXIT
RJM GBI GET *BATI* INTERLOCK
MJN UBAX IF CANNOT GET *BATI* INTERLOCK
RJM RBW READ BAT WORD
LDC **
UBAA EQU *-1 *BFMM* REPLY STATUS
SHN -7
ZJN UBA1 IF OK TO RELEASE ACCESS
* IF THIS MF DOES NOT HAVE WRITE PERMISSION, HANG RATHER THAN
* SETTING *URW*.
LDI T6
TLPC 0,WM
NJN UBA0 IF WRITE MODE ACCESS BIT SET
MONITOR HNGM HANG PP
UBA0 LDI T6 SET *URW* BIT
SCN 10
ADN 10
STI T6
UJN UBA4 UPDATE BAT
UBA1 LDD FN+2
SHN -13
ZJN UBA2 IF OTHER M/F WANTS READ ACCESS
LDI T6
TLPC 0,RWMC CLEAR READ/WRITE FOR THIS M/F
SCN 10 CLEAR *URW*
UJN UBA3 UPDATE BAT WORD
UBA2 LDI T6
TLPC 0,RWMC CLEAR READ/WRITE FOR THIS M/F
LMD T2 ADD READ ACCESS
UBA3 STI T6
UBA4 WRITEM 1,TBUF
RJM CBI CLEAR *BATI* INTERLOCK
UJP UBAX RETURN
UBH SPACE 4,10
** UBH - UPDATE BRT HEADER.
*
* ENTRY BRT CHANGED DURING REPROCESSING.
* (RBRB) = ADDRESS+5 OF LAST BRT ENTRY.
*
* EXIT BRT HEADER UPDATED.
*
* USES T1, T8, T9.
UBH SUBR ENTRY/EXIT
LDN MXMF
STD T1
UBH1 SOD T1
MJN UBHX IF ALL MAINFRAMES PROCESSED
LDN 0 INITIALIZE HEADER BYTE FOR M/F
STM BRTB+1,T1
LDM TMMK,T1 SET MACHINE MASK
STM UBHA
TLMN 0,MM
ZJN UBH1 IF THIS MAINFRAME
LDM RBRB INITIALIZE ADDRESS TO START SEARCH
STD T8
LDM BRTB BRT ENTRY COUNT
ADN 1
STD T9
UBH2 LCN 5 ADVANCE TO NEXT ENTRY
RAD T8
SOD T9
ZJN UBH1 IF ALL ENTRIES CHECKED
LDM 2,T8
LPC **
UBHA EQU *-1
ZJN UBH2 IF MASK FOR THIS M/F NOT SET
LDD T9 SET HEADER ENTRY FOR THIS M/F
STM BRTB+1,T1
UJP UBH1 PROCESS NEXT MAINFRAME
UMS SPACE 4,10
** UPDATE *MTE* STATISTICS.
*
* EXIT STATISTICAL DATA AREA UPDATED.
* BRT STATISTICS COUNTERS CLEARED.
*
* USES CM - CM+4, FN - FN+4, FS - FS+4.
UMS SUBR ENTRY/EXIT
TLDC DM1S,SDA READ STATSTICS WORDS
CRD CM
ADK DM2S-DM1S
CRD FN
LDM BREC CURRENT BRT ENTRY COUNT
STD CM
SBD CM+1
MJN UMS1 IF NOT NEW WORST CASE
RAD CM+1
UMS1 LDM BRTR BRT ENTRIES REJECTED
RAD CM+2
LDM BRTT TOTAL BRT ENTRIES
RAD CM+4
SHN -14
RAD CM+3
LDK RTCL
CRD FS
LDD FS+4
SBM CYTM
PJN UMS2 IF NO OVERFLOW
ADC 10000
UMS2 STD FN CURRENT CYCLE TIME
RAM CYTM
LDD FN
SBD FN+1
MJN UMS3 IF NOT NEW WORST CASE
RAD FN+1
UMS3 LDM BIAA *BATI* INTERLOCK ATTEMPTS ABANDONED
RAD FN+2
LDM BATT TOTAL BAT REQUESTS
RAD FN+4
SHN -14
RAD FN+3
TLDC DM1S,SDA WRITE STATISTICS WORDS
CWD CM
ADK DM2S-DM1S
CWD FN
LDN ZERL CLEAR CURRENT TOTALS
CRM BRTS,ON
UJP UMSX RETURN
SPACE 4,10
* COMMON DECKS.
FNT$ EQU 1 SELECT FNT PROCESSOR
IFP$ EQU 1 SELECT REMOTE INITIALIZATION
*CALL COMPGFP
TITLE EXTENDED MEMORY INTERFACE ROUTINES.
FUNCTION SPACE 4,15
** FUNCTION - ISSUE EXTENDED MEMORY FUNCTION.
*
* THE FUNCTION MACRO ISSUES A FUNCTION TO THE ESM LOW SPEED
* PORT, AS WELL AS GENERATING A REMOTE TABLE FOR THE
* DETERMINATION OF THE OPERATION (READ, WRITE, FLAG) BEING
* PERFORMED.
*
* FUNCTION CD,RTN
*
* ENTRY *CD* = FUNCTION CODE TO ISSUE.
* *ST* = STATUS.
* *RD* = READ.
* *WT* = WRITE.
* *RTN* = ROUTINE WHICH ISSUES FUNCTION.
*
* CALLS SFN.
PURGMAC FUNCTION
FUNCTION MACRO CD,OP
LOCAL A
LDN CD_FN
RJM SFN
A BSS 0
.SFN MICRO 1,, ".SFN"A,OP,
FUNCTION ENDM
.SFN MICRO 1,, INITIALIZE FUNCTION CALLER MICRO
RDW SPACE 4,15
** RDW - READ EXTENDED MEMORY WORDS.
*
* ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
* (EA - EA+1) = ADDRESS TO READ FROM.
* (WC) = WORD COUNT OF TRANSFER.
*
* EXIT (A) .LT. 0, IF UNRECOVERABLE PARITY ERROR.
*
* USES BR.
*
* CALLS CKS.
*
* MACROS FUNCTION.
RDW2 LDN RDFN
RJM CKS CHECK STATUS
RDW SUBR ENTRY/EXIT
STM RDWA SAVE PP BUFFER ADDRESS
FUNCTION RD,RDW ISSUE READ FUNCTION
OAM EA,CH OUTPUT ADDRESS
LDD WC SET BYTE COUNT TO INPUT
SHN 2
ADD WC
IAM *,CH
RDWA EQU *-1 READ BUFFER ADDRESS
STD BR SAVE BYTE COUNT
DCN CH+40
UJN RDW2 CHECK STATUS
WTW SPACE 4,15
** WTW - WRITE WORDS TO EXTENDED MEMORY.
*
* ENTRY (A) = BYTE ADDRESS OF DATA TO WRITE.
* (EA - EA+1) =ADDRESS TO READ FROM.
* (WC) = WORD COUNT OF TRANSFER.
*
* EXIT (A) .LT. 0, IF UNRECOVERABLE PARITY ERROR.
*
* USES BR.
*
* CALLS CKS.
*
* MACROS FUNCTION.
WTW2 LDN WTFN
RJM CKS CHECK STATUS OF WRITE
WTW SUBR ENTRY/EXIT
STM WTWA SET BUFFER ADDRESS
FUNCTION WT,WTW ISSUE WRITE FUNCTION
OAM EA,CH OUTPUT ADDRESS
LDD WC SET BYTE COUNT OF TRANSFER
SHN 2
ADD WC
OAM *,CH
WTWA EQU *-1
FJM *,CH IF DATA NOT ACCEPTED
STD BR SAVE BYTE COUNT
DCN CH+40
UJN WTW2 CHECK STATUS
IFR SPACE 4,10
** IFR - ISSUE FLAG FUNCTION.
*
* ENTRY (A) = ADDRESS OF FLAG FUNCTION WORDS.
*
* EXIT (A) = 0, IF FLAG FUNCTION PERFORMED.
*
* USES ST.
*
* MACROS FUNCTION.
IFR SUBR ENTRY/EXIT
STM IFRA
FUNCTION RD,IFR ISSUE READ FUNCTION
OAM **,CH OUTPUT ADDRESS
IFRA EQU *-1
FJM *,CH IF CHANNEL STILL FULL
DCN CH+40
FUNCTION ST,IFR ISSUE STATUS FUNCTION
IAN CH+40
DCN CH+40
STD ST
LMN 2
UJN IFRX RETURN STATUS
CKS SPACE 4,10
** CKS - CHECK STATUS OF TRANSFER.
*
* ENTRY (BR) = BYTES REMAINING IN TRANSFER.
*
* EXIT (A) = 0, IF NO ERROR.
*
* MACROS EXECUTE, FUNCTION.
CKS SUBR ENTRY/EXIT
STM CKSA SAVE CALLER FUNCTION
CKS1 FUNCTION ST,CKS ISSUE STATUS FUNCTION
IAN CH+40
DCN CH+40
STD ST
LMN 2
ADD BR CHECK REMAINING BYTE COUNT
ZJN CKSX IF COMPLETE TRANSFER
LDD ST
LPN 10
NJN CKS1 IF WRITE IN PROGRESS BIT SET
ERR EXECUTE 7EA PROCESS INCOMPLETE TRANSFER / STATUS ERROR
CKSA CON 0 CALLER FUNCTION CODE
REC SPACE 4,10
** REC - RECOVERED ERROR PROCESSOR.
*
* ENTRY (RECA) = EXIT ADDRESS.
*
* USES RC.
*
* WHEN AN ESM ERROR OCCURS THE EXIT ADDRESS IS SAVED IN *RECA*,
* AND THE EXIT IS REPLACED WITH A JUMP TO *REC*. THIS MAKES
* IT POSSIBLE FOR *REC* TO RESET THE RETRY COUNT TO ZERO FOR
* THE NEXT ERROR.
REC LDC 0 GET EXIT ADDRESS
RECA EQU *-1 (EXIT ADDRESS)
STD T1
LDN 0
STD RC RESET RETRY COUNT
STM RECA CLEAR EXIT ADDRESS
LJM 0,T1 RETURN
SFN SPACE 4,10
** SFN - SELECT FUNCTION.
*
* ENTRY (A) = FUNCTION CODE.
*
* EXIT (A) = 2.
* CHANNEL ACTIVATED.
* TO *ERR* IF FUNCTION TIMEOUT.
SFN2 LDN 2
ACN CH+40
SFN SUBR ENTRY/EXIT
ADC SC
FAN CH+40
SFN1 IJM SFN2,CH IF FUNCTION ACCEPTED
SBN 77
PJN SFN1 IF NOT TIMED OUT
UJP ERR PROCESS ERROR
DSW SPACE 4,10
** DSW - DRIVER SERVICE PROCESSING.
*
* ENTRY (A) = 1, RESERVE CHANNEL.
* (A) = 0, RELEASE CHANNEL.
*
* USES T0, T1, CM - CM+4.
*
* MACROS MONITOR.
DSW2 RAI T0 UPDATE CHANNEL INSTRUCTION
AOD CM+4
DSW3 LDI CM+4
STD T0
LDD T4
DSWA SBN CH
NJN DSW2 IF MORE INSTRUCTIONS TO MODIFY
DSW SUBR ENTRY/EXIT
STD CM+3
LMN 1
STD CM
LDD MA WRITE *DSWM* PARAMETERS
CWD T4
MONITOR DSWM
LDD CM+4
SBD T4
ZJN DSWX IF NOT TO MODIFY INSTRUCTIONS
RAD T4
LDC ADNI-1
STM MTEB
DSW1 AOM MTEB
LCN 5
RAD CM+4
PJN DSW1 IF NOT END OF DIVIDE
ADC LDDI+CM+5
STM MTEC
LDC TCHS START OF CHANNEL LIST
STD CM+4
LJM DSW3 MODIFY INSTRUCTIONS
SPACE 4,10
* CHANNEL TABLE.
CHTL DSWA TERMINATE CHANNEL TABLE
TCHS CHTB
EEMI EQU * END OF EXTENDED MEMORY INTERFACE ROUTINES
TITLE TABLES.
TPPR SPACE 4,10
* TPPR - TABLE OF *MTE* PP REQUESTS.
*
* ENTRY = 1 WORD.
* INDEXED BY MONITOR FUNCTION CODE.
*
*T, 12/ ADDR
TPPR EQU *-CPUM
DUP MXFNC+1-CPUM,1
CON HNG
LIST G
PPR HERE INSERT REQUEST PROCESSOR ADDRESSES
LIST *
ORG TPPR+MXFNC+1
FLAG SPACE 4,10
* FLAG BIT SET/CLEAR FUNCTIONS.
SCOMI VFD 24/40000000+.COMI
TCOMI VFD 24/60000000+.COMI
SFATI VFD 24/40000000+.FATI
CFATI VFD 24/70000000+.FATI
STRTI VFD 24/40000000+.TRTI
CTRTI VFD 24/70000000+.TRTI
SBATI VFD 24/40000000+.BATI
CBATI VFD 24/70000000+.BATI
SBDTI VFD 24/40000000+.BDTI
CBDTI VFD 24/70000000+.BDTI
SBDRI VFD 24/40000000+.BDRI
TBDRI VFD 24/60000000+.BDRI
CBDRI VFD 24/70000000+.BDRI
CREL STRTI,MM ADD MACHINE MASK TO *TRTI* FLAG OPERATIONS
CREL CTRTI,MM
LWA EQU *L
MAINL EQU LWA-FWA LENGTH OF MAIN BLOCK
ERRNG EPFW-* CODE OVERFLOWS INTO ERROR PROCESSOR
TITLE UEM SIMULATION OF EXTENDED MEMORY.
** UEM SIMULATION OF EXTENDED MEMORY.
*
* THE FOLLOWING CODE OVERLAYS THE EXTENDED MEMORY INTERFACE
* ROUTINES WHEN UEM IS DECLARED AS THE LINK DEVICE. THE
* ENTRY POINTS *IFR*, *RDW*, *WTW*, AND *DSW* MUST BE THE SAME
* IN THE OVERLAYED CODE.
UEMI BSS 0 BEGINING OF UEM INTERFACE CODE
OEMI EQU RDW-1 ORIGIN OF INTERFACE ROUTINES
LOC OEMI
QUAL UEM
IFR EQU //IFR INSURE ENTRY POINTS MATCH
RDW EQU //RDW
WTW EQU //WTW
DSW EQU //DSW
RDW SPACE 4,10
** RDW - READ UEM WORDS.
*
* ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
* (EA - EA+1) = UEM ADDRESS TO READ FROM.
* (WC) = WORD COUNT OF TRANSFER.
*
* EXIT (A) .LT. 0, IF UNRECOVERABLE PARITY ERROR.
*
* CALLS SUA.
BSS RDW-1-* INSURE ENTRY POINT COINCIDES
RDW SUBR ENTRY/EXIT
STM RDWA SAVE PP BUFFER ADDRESS
RJM SUA SET ADDRESS
CRM *,WC
RDWA EQU *-1 READ BUFFER ADDRESS
LDN 0
UJN RDWX RETURN
WTW SPACE 4,10
** WTW - WRITE WORDS TO UEM.
*
* ENTRY (A) = BYTE ADDRESS OF DATA TO WRITE.
* (EA - EA+1) = UEM ADDRESS TO READ FROM.
* (WC) = WORD COUNT OF TRANSFER.
*
* EXIT (A) .LT. 0, IF UNRECOVERABLE PARITY ERROR.
*
* CALLS SUA.
BSS WTW-1-*-7 INSURE ENTRY POINT COINCIDES
WTW1 STM WTWA SET BUFFER ADDRESS
RJM SUA SET ADDRESS
CWM *,WC
WTWA EQU *-1 WRITE BUFFER ADDRESS
LDN 0
WTW SUBR ENTRY/EXIT
UJN WTW1 PROCESS WRITE
IFR SPACE 4,10
** IFR - SIMULATE FLAG FUNCTION FOR UEM.
*
* ENTRY (A) = ADDRESS OF FLAG FUNCTION WORDS.
*
* EXIT (A) = 0, IF FLAG FUNCTION PERFORMED.
*
* USES T1, CM - CM+4.
BSS IFR-1-*-13 INSURE ENTRY POINT COINCIDES
IFR2 LDD CM+3 CLEAR FLAG BITS
IFRA SCN 0
STD CM+3
LDD CM+4
LPC 7777
IFRB EQU *-1
STD CM+4
IFR3 LDK EFRL REWRITE FLAG BITS TO CM
CWD CM
LDN 0
IFR SUBR ENTRY/EXIT
STD T1
LDK EFRL READ CURRENT STATUS
CRD CM
LDI T1
SHN 21-11
MJN IFR1 IF CLEAR FUNCTION
* TEST AND SET FLAG OPERATION.
SHN 11-21+22
LMD CM+3
SBD CM+3
LMI T1
NJN IFRX IF BIT SET
LDM 1,T1
LMD CM+4
SBD CM+4
LMM 1,T1
NJN IFRX IF BIT SET
LDI T1
SHN -11
LMN 6
ZJN IFRX IF TEST FUNCTION
LDI T1 SET BIT(S) IN CM WORD
LPN 77
RAD CM+3
LDM 1,T1
RAD CM+4
UJP IFR3 RETURN STATUS
IFR1 SHN 11-21 CLEAR FLAG BITS
ADK SCNI-1000
STM IFRA
LCN 0
LMM 1,T1
STM IFRB
UJP IFR2 CLEAR FLAG BITS
SUA SPACE 4,10
** SUA - SET UEM ADDRESS.
*
* ENTRY (EA - EA-1) = UEM ADDRESS TO SET.
*
* EXIT (A) = 400000 + UEM ADDRESS.
* R-REGISTER SET TO UEM BASE ADDRESS.
*
* USES CM - CM+4.
SUA SUBR ENTRY/EXIT
LDK UEML SET R REGISTER
CRD CM
LDD EA SET R-REGISTER
SCN 17
SHN 3
ADD CM ADD BASE ADDRESS
SHN 3
STD CM+1
SHN -14
STD CM
LRD CM
LDD EA SET RELATIVE ADDRESS
LPN 17
ADN 40
SHN 14
ADD EA+1
UJN SUAX RETURN
DSW SPACE 4,10
** DSW - DRIVER SERVICE PROCESSING.
*
* USES T4.
BSS DSW-1-* INSURE ENTRY POINTS COINCIDE
DSW SUBR ENTRY/EXIT
LDN 37 INSURE CHANNEL NUMBER IN BOUNDS
STD T4
UJN DSWX RETURN
QUAL *
LOC *O
UEMIL EQU *-UEMI LENGTH OF UEM BLOCK
ERRPL *-7777 CODE EXCEEDS PP
SPACE 4,10
TITLE PRESET.
PRS SPACE 4,10
* PRS - PRESET TABLES AND CONSTANTS.
USE
PRS LDN MXQP-1 PRESET QUEUE ENTRY
STD QE
LDN NPPU-1
STD QH
STD QT
LDD OA SET MESSAGE BUFFER ADDRESS
ADN 1
STD MA
LDN ZERL SET ZERO WORD
CRD ZR
LDK PPCP
CRD CM
AOD CM+4 SET *MTR* OUTPUT REGISTER ADDRESS
STD OF
LDD CM SET EXTENDED PP COMMUNICATION AREA ADDRESS
STM PPX
LDD CM+1
STM PPX+1
RJM IFP INITIALIZE *COMPGFP*
LDN 0 INITIALIZE DRIVER STATUS BYTES
STD BR
STD ST
STD RC
LDK CHTP SET CHANNEL INTERLOCK TABLE ADDRESS
CRD CM
LDD CM+3
STM MTEA+1
LDD CM+2
RAM MTEA
LDK MABL READ HARDWARE OPTIONS
CRD CM
LDD CM+1 CHECK MAINFRAME TYPE
SHN 21-13
MJN PRS1 IF NOT CM EXTENSION
AOM RWEA CHANGE READ TO *FLSW*+1
PRS1 LDK MMFL SET LINK DEVICE EQUIPMENT
CRD CM
LDD CM+1
LPC 777
STD T5
SFA EST SET EXTENDED MEMORY EQUIPMENT TYPE
CRD CM
ADK EQAE-EQDE
CRD FS
LDD FS+2
SHN -6
LPN 3
STD CM+2 SAVE EXTENDED MEMORY SHIFT COUNT
LDD CM+2 PICK UP *EMSC*
ADN 5
LMN 77
RAM CLEE MODIFY *CLE* TO ROUND TO *EMBS*
LDN 4
SBD CM+2
LMN 77
RAM PRSB
LDC 377
PRSB SHN 0
* SHN 4-EMSC
STM CLED
LDD CM+2
RAM AFPA
STM SEAA
LDD CM+2
RAM ILDA
STM PRSC
STM CLEC
LDN 20 MINIMUM SECTORS PER TRACK
PRSC SHN 0 CALCULATE SECTORS PER TRACK
* SHN EMSC
STD CM+2
STM CLEB
STM SEAB+1
STM EBRA+1
STM EBRB+1
RAM AFAA+1
SHN -14
RAM AFAA
LDD CM+2
RAM SLAA+1
SHN -14
RAM SLAA
LDD T5
SFA EST
CRD CM
LDD CM+4
SHN 3
ADN DILL
CRD CM
SBN DILL SET *AFAM* PRESET
RAM AFP+1
SHN -14
RAM AFP
LDD CM+3
SHN -6
LPN 7
STM PRSA
LMN 4
NJN PRS3 IF NOT UEM
LDC UEMIL-1 MOVE EXTENDED MEMORY SIMULATION CODE
STD T1
PRS2 LDM UEMI,T1
STM OEMI,T1
SOD T1
PJN PRS2 IF MOVE NOT COMPLETE
UJP PRS7 AVOID PORT PRESET
PRS3 LDN CH PRESET CHANNEL NUMBER
STD T4
LDN 1 RESERVE CHANNEL
RJM DSW
RJM SCP SET CHANNEL IN PRESET INSTRUCTIONS
FNC MCFN+SC,CH MASTER CLEAR PORT
LDN 40
PRS4 SBN 1
MJN PRS6 IF FUNCTION TIMED OUT
AJM PRS4,CH IF CHANNEL ACTIVE
LDC 0
PRSA EQU *-1 EXTENDED MEMORY TYPE
SBN 5
MJN PRS7 IF NEITHER ESM NOR STORNET
SBN 7-5
PJN PRS7 IF NEITHER ESM NOR STORNET
FNC ESFN+SC,CH SET ECS MODE ADDRESSING
LDN 40
PRS5 SBN 1
IJM PRS7,CH IF CHANNEL INACTIVE
PJN PRS5 IF FUNCTION NOT TIMED OUT
PRS6 LDC 200+MS2W
CWM MSGA,TR *PORT PRESET FAILED ON MMF LINK.*
UJN * HANG
ILD SPACE 4,10
** ILD - INITIALIZE MMF LINK DEVICE.
*
* ENTRY (IR+4) = RECOVERY MODE.
*
* EXIT TO MAIN LOOP.
*
* USES IR+2, RM, T1, T6, T8, CM - CM+4, EA - EA+4,
* FS - FS+4, OR - OR+4
*
* CALLS CAM, CIR, CLE, IBP, SIC, SLA.
*
* MACROS CFLAG, DELAY, ISTORE, READEM, SFLAG, WRITEM.
PRS7 BSS 0
ILD LDN ZERL ZERO LABEL TRACK ADDRESS
CRD EA
ADK EFRL-ZERL READ LINK DEVICE PARAMETERS
CRD FS
CRD CM
LDN 0
STD CM+3
STD CM+4
LDK EFRL CLEAR FLAG REGISTER STATUS
CWD CM
LDD FS+4
STD IR+2
LPN 77
STD T6
LDD FS+2
LPN 20
ZJN ILD3 IF NO INITIALIZE OF LINK DEVICE
ILD1 SOD T6 COMPUTE LABEL TRACK ADDRESS
MJN ILD4 IF NOT END OF MULTIPLY
ILD2 LDC 2020 MINIMUM POSSIBLE WORDS PER TRACK
ILDA SHN 0 CALCULATE WORDS PER TRACK
* SHN EMSC
RAD EA+1
SHN -14
RAD EA
LDD FS+2
LPN 20
NJN ILD1 IF INITIALIZE OF LINK DEVICE
* SEARCH FOR LABEL TRACK.
ILD3 READEM 1,OR READ LABEL LINKAGE WORD
LDD OR
ADD OR+1
ADD OR+2
ADD OR+3
ADD OR+4
LMC 3777+77+2RLA+2RBE+1RL*100
ZJN ILD4 IF LABEL TRACK FOUND
AOD IR+2
ADC -LTKL
MJN ILD2 IF MORE TRACKS TO CHECK
LDN 1 SET LABEL TRACK NOT FOUND ERROR
LJM ILD18 PROCESS ERROR
ILD4 LDD EA+1 INSERT LABEL ADDRESS IN *SLA*
RAM SLAA+1
SHN -14
ADD EA
RAM SLAA
LDK DSSL
CRD CM
ADK MMFL-DSSL
CRD OR
LDD CM+4 SET RECOVERY MODE
LPN 3
STD RM
UJN ILD6 SET PRESET INTERLOCK
ILD5 LDD FS+2
LPN 40
NJN ILD7 IF TO PRESET
ILD6 SFLAG PRSI,ILD5 SET PRESET INTERLOCK
ILD7 RJM CAM INITIALIZE MACHINE CLOCKS
LDD FS+2
LPN 40
STD T8
ZJP ILD9 IF NO PRESET OF LINK DEVICE
* PRESET PROCESSING.
* CHECK FOR MACHINES ACTIVE BY STATUSING *MFET* WORDS.
LDC 200+MS2W
CWM MSGB,TR *CHECKING FOR ACTIVE MACHINES.*
DELAY 2048D*10 TOTAL DELAY IS 2048 MILLISECONDS
RJM CAM CHECK ACTIVE MACHINES
LDD T9
ZJN ILD8 IF NO ACTIVE MACHINE FOUND
LDN 6 MACHINE ACTIVITY PREVENTS PRESET
LJM ILD18 PROCESS ERROR
* THE SECTOR OF ZERO WORDS THAT BEGINS AT *TBUF* MUST NOT
* EXTEND PAST HERE, SINCE *CLE* CREATES AND USES THIS BUFFER.
ERRNG *-TBUF-505
ILD8 CFLAG FRGI,NW CLEAR ALL FLAG INTERLOCKS EXCEPT *PRSI*
RJM CLE CLEAR EXTENDED MEMORY
NJP ILD18 IF ERROR IN CLEARING MEMORY
LDC 200+MS2W
CWM MSGC,TR *LINK DEVICE PRESET COMPLETE.*
LDN 1
LJM ILD20 SET MACHINE INDEX
* PROCESS NON-PRESET DEADSTARTS.
ILD9 LDN MFET PRESET STATE TABLE
ADD T8
RJM SLA
READEM 1,FN READ *MFET* WORD
LDK EFRL GET STATE TABLE ADDRESS
CRD CM
LDN 0
STD FN+3
STD FN+4
LDD CM WRITE STATE TABLE WORD
SHN 14
ADD CM+1
ADK MFST
ADD T8
CWD FN
AOD T8
LMN MXMF
NJN ILD9 IF NOT END OF STATE TABLE
LDD RM
LMN 3
NJN ILD11 IF NOT LEVEL THREE
* RECOVER *MFET* SLOT ON LEVEL THREE RECOVERY. *MFET* ENTRY IS
* VERIFIED FOR CORRECT MACHINE ID, MACHINE INDEX AND THAT
* *MREC* HAS NOT RUN.
LDK MFET-1
ADD OR+4
RJM SLA SET ADDRESS IN LABEL TRACK
READEM 1,FN
LDD OR
LMD FN
NJN ILD10 IF NO VERIFY ON MACHINE ID
LDD OR+4
LMD FN+4
ILD10 NJN ILD15 IF NO VERIFY ON MACHINE INDEX
UJN ILD14 VERIFY *MREC* NOT RUN
* ASSIGN OR RECOVER *MFET* SLOT.
ILD11 LDN MXMF+1 PRESET MACHINE INDEX
STD OR+4
LDN 0 SET EMPTY ENTRY INDEX
STD T8
ILD12 SOD OR+4
ZJN ILD16 IF MORE MID-S TO CHECK
ADK MFET-1
RJM SLA SET ADDRESS IN LABEL TRACK
READEM 1,FN READ *MFET* WORD
LDD FN
NJN ILD13 IF NOT EMPTY
LDD OR+4 SET EMPTY INDEX
STD T8
UJN ILD12 TRY NEXT MIN
ILD13 LMD OR
NJN ILD12 IF NO MATCH ON MID
LDD RM
ZJN ILD17 IF LEVEL ZERO
ILD14 LDD FN+1
NJN ILD19 IF *MREC* NOT RUN
ILD15 LDN 2 *RECOVERY DEADSTART PREVENTED THIS MID.*
UJN ILD18 RETURN ERROR
* NO MATCHING MID FOUND IN EXTENDED MEMORY.
ILD16 LDD RM
NJN ILD15 IF NOT LEVEL ZERO
LDD T8
STD OR+4
NJN ILD19 IF EMPTY SLOT FOUND
LDN 4 *MID SPOT UNAVAILABLE.*
UJN ILD18 RETURN ERROR
ILD17 LDD FN+1
ZJN ILD19 IF *MREC* RUN
LDN 3 *MACHINE ID IN USE.*
ILD18 STD IR+2
LDD OA RETURN ERROR RESPONSE IN INPUT REGISTER
SBN 1
CWD IR
CFLAG PRSI
UJN * HANG
ILD19 RJM IBP INITIALIZE BRT/BDT PROCESSING
LDD OR+4
* SET MACHINE INDEX IN *MMFL* AND IN EXTENDED MEMORY.
ILD20 STD OR+4
STD T1
STM MI+1
SHN 1
STM MI2+1
SHN 5
STM MIH+1
SHN 2-6
ADD OR+4
STM MI5+1
LDM TMMK-1,OR+4 SET MACHINE MASK
STD OR+3
STM MM+1
SHN 4
STM WM+1 MASK FOR WRITE BAT ACCESS BIT
SHN 4
ADM WM+1
STM RWM+1 MASK FOR READ/WRITE BAT ACCESS BITS
LMC 7777
STM RWMC+1 MASK FOR R/W BAT ACCESS BITS FOR OTHER MFS
LDD OR+1
SHN 21-11
PJN ILD20.1 IF NO SHARED BUFFERED DEVICES PRESENT
ISTORE MTED,(PSN ) ENABLE BAT/BRT CODE
ILD20.1 LDK MMFL
CWD OR
ILD21 LDN LLLL COMPUTE MACHINE INDEX * LLLL
RAM ML+1
SOD T1
NJN ILD21 IF NOT END OF MULTIPLY
LDK MFET-1 SET ADDRESS IN LABEL TRACK
ADD OR+4
RJM SLA
WRITEM 1,OR WRITE *MMFL* WORD
RJM CAM INITIALIZE MACHINE CLOCKS
CFLAG PRSI CLEAR PRESET INTERLOCK
LDK EFRL SET *CPUMTR* REQUEST QUEUE ADDRESS
CRM PQ,ON (MUST PRECEDE READ INTO *SDA*)
LDK SDAP SET STATISTICAL DATA AREA ADDRESS
CRM SDA,ON
LDK RTCL INITIALIZE *MTE* CYCLE TIME
CRD CM
LDD CM+4
STM CYTM
LDC TSIC SET RELOCATION TABLE ADDRESS
RJM SIC RELOCATE INSTRUCTIONS
RJM CIR CLEAR INTERLOCKS ON LEVEL 3
LDD OA SIGNAL COMPLETION VIA INPUT REGISTER
SBN 1
CWD IR
LJM MTE ENTER MAIN LOOP
CFRGI VFD 24/70777777-.PRSI
SPRSI VFD 24/40000000+.PRSI
CPRSI VFD 24/70000000+.PRSI
IFP HERE *COMPGFP* INITIALIZATION CODE
CLE SPACE 4,15
** CLE - CLEAR EXTENDED MEMORY.
*
* ENTRY PRESET DEADSTART SELECTED.
* (FS+2) = *EFRL* PARAMETERS.
*
* EXIT (A) = 0, IF NO WRITE ERROR DETECTED.
* (A) = 5, IF WRITE ERRORS.
*
* USES WC, CM - CM+4, EA - EA+4, FN - FN+4.
*
* CALLS SLA.
*
* MACROS WRITEM.
CLE4 RJM SLA CLEAR ENVIRONMENT TABLE
WRITEM IBDT,TBUF
ZJN CLE5 IF NO ERROR
LDN 5 SET ERROR STATUS
STD EA+2
CLE5 LDN 4 WRITE *IBDT*
STD WC
LDK DSDL+1
CRM TBUF,WC
LDD FN COMPUTE LENGTH OF LINK DEVICE
SHN 6
ADD FN
CLEC SHN 0 TRACKS * 101B
* SHN EMSC TRACKS * 101B * EMBS
ADC ** ROUND UP TO NEAREST *EMBS*
CLED EQU *-1
* ADC 37 EMBS = 1000
* ADC 77 EMBS = 2000
* ADC 177 EMBS = 4000
* ADC 377 EMBS = 10000
CLEE SHN 0
* SHN -5-EMSC
STM TBUF+5+3 FIRST MACHINE BUFFER START ADDRESS
LDN 5 START ALLOCATION FOLLOWING THIS MACHINE
STD T2
CLE6 LDM TBUF+3,T2
ADM TBUF+4,T2
STM TBUF+5+3,T2
LDN 5
RAD T2
LMN 5*4
NJN CLE6 IF NOT END OF MACHINES
LDN IBDT SET I/O BUFFER TABLE
RJM SLA
WRITEM *,TBUF WRITE BUFFER ALLOCATION TABLE
ZJN CLE7 IF NO ERROR
LDN 5 SET ERROR STATUS
STD EA+2
CLE7 LDD EA+2 RETURN ERROR STATUS
CLE SUBR ENTRY/EXIT
RJM CSZ CREATE SECTOR OF ZERO WORDS
SFA EST,T5 READ EXTENDED MEMORY EST ENTRY
CRD CM
LDD CM+4 READ EXTENDED MEMORY TRACK COUNT
SHN 3
ADK TDGL
CRD FN
LDN ZERL CLEAR ERROR STATUS/UEM ADDRESS
CRD EA
LDD FS+2
LPN 20
ZJP CLE4 IF NO INITIALIZE OF LINK
LDC /DSL/DSCP*CPAS+MS2W
CWM MSGD,TR *CLEARING EXTENDED MEMORY.*
LDC 101 SET SECTOR WORD COUNT
STD WC
LDD FN SET TOTAL TRACKS
STD EA+4
* CLEAR EXTENDED MEMORY.
CLE1 LDC ** SET SECTOR COUNT FOR TRACK
CLEB EQU *-1
* LDC 20 TRACK SIZE = 20 SECTORS
* LDC 40 TRACK SIZE = 40 SECTORS
* LDC 100 TRACK SIZE = 100 SECTORS
* LDC 200 TRACK SIZE = 200 SECTORS
STD EA+3
CLE2 WRITEM *,TBUF WRITE WORDS TO UEM
ZJN CLE3 IF NO ERROR
LDN 5 WRITE ERROR STATUS
STD EA+2
CLE3 LDD WC
RAD EA+1
SHN -14
RAD EA
SOD EA+3
NJN CLE2 IF MORE SECTORS
SOD EA+4
NJN CLE1 IF MORE TRACKS
UJP CLE5 WRITE *IBDT*
CIR SPACE 4,20
** CIR - CLEAR FLAG REGISTER AND MST INTERLOCKS ON LEVEL 3.
*
* ON LEVEL 3 RECOVERIES WHERE NO OTHER MACHINES ARE ACTIVE
* FLAG REGISTER INTERLOCKS AND DEVICE INTERLOCKS MUST BE
* CLEARED IN EXTENDED MEMORY. THESE INTERLOCKS ARE CLEARED
* DURING DOWN MACHINE PROCESSING WHEN OTHER MACHINES ARE
* ACTIVE.
*
* ENTRY (RM) = RECOVERY MODE.
*
* USES T8, T9, CM - CM+4, EA - EA+4, FN - FN+1.
*
* CALLS IFR, SFA.
*
* MACROS CFLAG, READEM, SFA, SFLAG, WRITEM.
CIR6 CFLAG CIRI CLEAR INTERLOCK
CIR SUBR ENTRY/EXIT
LDD RM
LMN 3
NJN CIRX IF NOT LEVEL 3
LDN 18D PRESET FLAG REGISTER BIT NUMBER
STD T8
UJN CIR2 SET *CIRI* INTERLOCK
CIR1 LDN FRET+CIRI CHECK IF INTERLOCKED BY THIS MACHINE
RJM SLA
READEM 1,FN,CIR2
LDD FN+4
TLMN 0,MI
ZJN CIR3 IF INTERLOCKED BY THIS MACHINE
CIR2 SFLAG CIRI,CIR1 SET FLAG INTERLOCK TO CLEAR INTERLOCKS
* CHECK FLAG OWNER WORDS TO SEE IF ANY OWNED BY THIS MACHINE.
CIR3 SOD T8
MJP CIR4 IF END OF FLAG BITS
LMN CIRI
ZJN CIR3 IF CHECKING *CIRI* BIT
LDN FRET CHECK FLAG BIT
ADD T8
RJM SLA
READEM 1,FN,CIR3 TRY NEXT FLAG BIT ON READ ERROR
LDD FN+4
TLMN 0,MI
ZJN CIR3 IF NOT OWNED BY THIS MACHINE
WRITEM *,ZR CLEAR FLAG OWNER
LDD T8 CLEAR FLAG BIT
ADD TH
ERRNZ 1000-SHNI
STM CIRC
LDN 1 SET FLAG BIT
CIRC SHN **
STD FN+1
SHN -14
ADC 7000 USE CLEAR FLAG FUNCTION
STD FN
LDN FN
RJM IFR ISSUE FLAG FUNCTION
UJP CIR3 LOOP FOR NEXT BIT
CIR4 LDK ESTP SET LAST EST ORDINAL
CRD CM
LDD CM+3
STD T9
* CLEAR DEVICE INTERLOCKS IN EXTENDED MEMORY.
CIR5 SOD T9 TRY NEXT EQUIPMENT
ZJP CIR6 IF END OF EST
SFA EST
CRD CM
LDD CM
SHN 21-13
PJN CIR5 IF NOT MASS STORAGE
LDD CM+4
SHN 3
ADK SDGL
CRD EA
LDD EA
ADD EA+1
ZJN CIR5 IF NOT SHARED
READEM SDGL+1,MBUF READ MST
LDM MBUF+SDGL*5+4
LPN 77
SHN -1
TLMN 0,MI
NJN CIR5 IF NOT INTERLOCKED BY THIS MACHINE
LDM MBUF+TDGL*5+2 SET TRT LENGTH
STM CIRE+1
LDD CM+4 SET MST ADDRESS
STM CIRE+3
TLDC MTQP,PQ PP QUEUE POINTER ADDRESS
CRD CM
TLDC MTET,PQ PP QUEUE ADDRESS
ADD CM+4
CWM CIRE,ON WRITE CLEAR DEVICE INTERLOCK REQUEST
SOD CM+4
TLDC MTQP,PQ WRITE NEW REQUEST QUEUE POINTER
CWD CM
LJM CIR5 LOOP FOR NEXT DEVICE
CIRE CON 0,777,4000,0,CDIF CLEAR DEVICE INTERLOCK SKELETON
SCIRI VFD 24/40000000+.CIRI
CCIRI VFD 24/70000000+.CIRI
IBP SPACE 4,15
** IBP - INITIALIZE BRT/BDT PROCESSING.
*
* ON NON-PRESET DEADSTARTS, WHEN SHARED BUFFERED DEVICES ARE
* PRESENT, CLEAR THE BRT FOR THIS MACHINE AND CLEAR ANY BDT
* INTERLOCKS BELONGING TO THIS MACHINE.
*
* USES EA, EA+1, T1, T8, FN - FN+4.
*
* CALLS CBA, CBD, CBJ, CSZ, SEA, SLA.
*
* MACROS DELAY, READEM, SFLAG, WRITEM.
IBP SUBR ENTRY/EXIT
LDD OR+1
SHN 21-11
PJN IBPX IF NO SHARED BUFFERED DEVICES PRESENT
LDN BAET PRESET BRT ADDRESS
RJM SLA
READEM 1,FN
LDD FN TRACK POINTER FOR BRT
STM BRTP
RJM SEA SET ESM ADDRESS OF BRT
RAM CBAA+1
SHN -14
RAM CBAA
LDD FN+1 TRACK POINTER FOR BDT
RJM SEA SET ESM ADDRESS OF BDT
RAM CBDA+1
SHN -14
RAM CBDA
* CLEAR BRT FOR THIS MACHINE.
RJM CSZ CREATE SECTOR OF ZERO WORDS
LDD OR+4
RJM CBA GET ADDRESS OF BRT
LDD HN
STD WC
LDN BRTL/100
STD T8
IBP1 WRITEM *,TBUF CLEAR BLOCK OF ESM
LDD WC
RAD EA+1
SHN -14
RAD EA
SOD T8
NJN IBP1 IF MORE TO CLEAR
* CLEAR BDT INTERLOCKS BELONGING TO THIS MACHINE.
IBP2 DELAY
SFLAG BDTI,IBP2
LDN DAET
RJM SLA
READEM 1,FN READ DAET POINTER
LDD FN+4 NUMBER OF BDT ENTRIES
STD WC
RJM CBD SET ESM ADDRESS OF BDT
READEM *,TBUF READ BDT
LDC TBUF-5 INITIALIZE SEARCH ADDRESS
STD T1
IBP3 LDN 5 ADVANCE TO NEXT BDT ENTRY
RAD T1
LDC 4000
ADD OR+4 MACHINE INDEX
LMI T1 CHECK ERROR PROCESSING INTERLOCK
NJN IBP4 IF NOT INTERLOCKED BY THIS MACHINE
STI T1 CLEAR ERROR PROCESSING INTERLOCK
IBP4 LDC 4000
ADD OR+4 MACHINE INDEX
LMM 1,T1 CHECK RESTORE PARITY INTERLOCK
NJN IBP5 IF NOT INTERLOCKED BY THIS MACHINE
STM 1,T1 CLEAR PARITY RESTORE INTERLOCK
STM 2,T1 CLEAR CONTROLLER SERIAL NUMBER
STM 3,T1
STM 4,T1
IBP5 SOD FN+4
NJN IBP3 IF MORE TO CHECK
WRITEM *,TBUF UPDATE BDT
RJM CBJ CLEAR *BDTI* INTERLOCK
LJM IBPX RETURN
TSIC SPACE 4,10
** TSIC - INSTRUCTION RELOCATION TABLE.
LIST G
TSIC BSS 0 INSTRUCTION RELOCATION TABLE
SIC HERE
CON 0 END OF TABLE
LIST *
SPACE 4,10
** INSTRUCTION MODIFICATION VALUES.
*
* NOTE - INSTRUCTION MODIFICATION VALUES ARE TWO BYTES.
PPX CON 0,0 EXTENDED PP COMMUNICATION AREA ADDRESS
MI2 CON 0,0 MACHINE INDEX * 2
MI5 CON 0,0 MACHINE INDEX * 5
ML CON 0,0 MACHINE INDEX * LLLL
MIH CON 0,0 MACHINE INDEX * 100
MM CON 0,0 MACHINE MASK
RWM CON 0,0 READ/WRITE MASK FOR BAT ACCESS
WM CON 0,0 WRITE MASK FOR BAT ACCESS
RWMC CON 0,0 COMPLEMENT OF READ/WRITE MASK
PQ CON 0,0 PP REQUEST QUEUE ADDRESS
SDA CON 0,0 STATISTICAL DATA AREA ADDRESS
CON 0,0,0 ALLOW SPACE FOR READING INTO *SDA*
SCP SPACE 4,10
** SCP - SET CHANNEL IN PRESET INSTRUCTIONS.
*
* ENTRY (T4) = CHANNEL TO SET IN INSTRUCTIONS.
*
* USES T0.
SCP SUBR ENTRY/EXIT
SCP1 LDM TSCP
SCPA EQU *-1
ZJN SCPX IF END OF TABLE
STD T0
LDD T4
RAI T0
AOM SCPA
UJN SCP1 LOOP
TSCP SPACE 4,10
TSCP CHTB PRESET CHANNEL TABLE
CON 0 TERMINATE TABLE
* PRESET MESSAGES.
MSGA DATA 30HPORT PRESET FAILED ON MMF LINK
MSGB DATA C*CHECKING FOR ACTIVE MACHINES*
MSGC DATA C*LINK DEVICE PRESET COMPLETE*
MSGD DATA C*CLEARING EXTENDED MEMORY*
SPACE 4,10
** PRESET COMMON DECKS.
*CALL COMPSIC
SPACE 4,10
BSS EPFW-MAINL-* INSURE MAIN IS UP AGAINST *EPFW*
ERRNG *-EBUF INSURE TRT BUFFER FITS
TITLE MTE/2EA - DOWN MACHINE PROCESSING.
QUAL 2EA
IDENT 2EA,O2EA DOWN MACHINE PROCESSING.
*COMMENT MTE - DOWN MACHINE PROCESSING.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
O2EA EQU PPFW
ORG O2EA
SPACE 4,20
*** 2EA - DOWN MACHINE PROCESSING.
*
* *2EA* IS CALLED BY *MTE* WHEN THE MACHINE CLOCK STATUS
* IS INAPPROPRIATE FOR THE STATE IN *TSTA*. THIS OCCURS
* WHEN A MACHINE IS DEADSTARTED OR GOES DOWN.
*
* *2EA* PERFORMS THE FOLLOWING MACHINE STATE PROCESSING.
*
* MFDN MACHINE DOWN STATE.
*
* FOR A MACHINE PREVIOUSLY IN A DOWN STATE, OR ANY
* OTHER NON-ACTIVE STATE WHICH IS NOW ACTIVE, SET THE ACTIVE
* STATE (*MFAC*) IN THE INTERNAL TABLE *TSTA* AS WELL AS THE
* *MFST* TABLE POINTED TO BY *EFRL*.
*
* MFAC MACHINE ACTIVE STATE.
* IF A MACHINE IS NO LONGER UPDATING ITS EXTENDED
* MEMORY CLOCK IT IS PLACED IN THE *MFD1* STATE.
*
* MFD1 MACHINE SENSED DOWN ONCE.
* IF A MACHINE IS NO LONGER UPDATING ITS EXTENDED
* MEMORY CLOCK AND IT IN THE *MFD1* STATE, IT IS PLACED IN THE
* *MFD2* STATE.
*
* MFD2 MACHINE SENSED DOWN TWO OR MORE TIMES.
* IF A MACHINE IS NO LONGER UPDATING ITS EXTENDED
* MEMORY CLOCK AND IS IN THE *MFD2* STATE, A CHECK IS MADE
* TO SEE IF IT IS A LOW SPEED PORT MACHINE. IF IT IS, THE
* MESSAGE
* IF XX DOWN, ENTER *DOWN,MID=XX*
* IS DISPLAYED AT THE SYSTEM CONTROL POINT. THIS MESSAGE
* IS DISPLAYED UNTIL THE OPERATOR RESPONDS WITH THE
* *DOWN,MID=XX* COMMAND, OR A *GO,SYS*. IF THE MESSAGE IS
* CLEARED BY A *GO,SYS*, BUT THE MACHINE DETECTED AS DOWN IS
* STILL IS NOT UPDATING ITS CLOCK, (DUE TO BEING IN STEP MODE
* OR A CHANNEL IS HUNG) THE MESSAGE WILL REAPPEAR.
* IF THE MACHINE IS NOT A LOW SPEED PORT MACHINE, THE STATE
* WILL BE ADVANCED TO *MFDA*.
* THE *DOWN,MID=XX* ADVANCES TO THE *MFDA* STATE FOR DOWN
* LOW SPPED PORT MACHINES.
*
* MFDA MAINFRAME DOWN IS ACKNOWLEGED.
* IF A MACHINE IS NO LONGER UPDATING ITS EM CLOCK
* AND IS IN THE *MFDA* STATE, INTERLOCKS WHICH IT HOLDS MUST
* BE RELEASED. FLAG REGISTER AND DEVICE INTERLOCKS ARE
* CLEARED UNDER CONTROL OF THE *CIRI* INTERLOCK WHILE IN
* THE *MFDA* STATE. WHEN THESE INTERLOCKS ARE CLEARED FOR
* THE DOWN MACHINE IT ADVANCES TO THE *MFCD* STATE.
*
* MFCD DEVICE AND FLAG INTERLOCK CLEARING DONE.
* IF A MACHINE IS NO LONGER UPDATING ITS EM CLOCK
* AND IS IN THE *MFCD* STATE, *1MR* IS CALLED TO CLEAR TRACK
* INTERLOCKS AND PF COUNTS. IF A PP IS AVAILABLE FOR *1MR*
* THE DOWN MACHINE ADVANCES TO THE *MFMR* STATE.
*
* MFMR *1MR* CALLED STATE.
* WHEN *1MR* COMPLETES CLEARING TRACK INTERLOCKS
* AND PF COUNTS FOR THE DOWN MACHINE IT ADVANCES IT BACK
* TO THE *MFDN* STATE.
*
* ENTRY (T8) = MACHINES REQUIRING STATE PROCESSING.
* (T9) = ACTIVE MACHINE MASKS.
*
* USES T1, T3, FN - FN+4.
*
* CALLS SLA.
*
* MACROS READEM.
PDM SUBR ENTRY/EXIT
LDK EFRL SET STATE TABLE ADDRESS
CRD FN
LDD FN+1
RAM PDMA+1
SHN -14
ADD FN
RAM PDMA
LDN MXMF PRESET MACHINE INDEX
STD T3
UJN PDM2 ENTER SEARCH LOOP
* ADVANCE TO NEXT STATE.
PDM1 AOD FN+4 SET NEW STATE
STM TSTA,T3
LDM PDMA WRITE STATE ENTRY TO MFST
LPN 77
SHN 14
ADM PDMA+1
ADD T3
CWD FN
PDM2 SOD T3
MJN PDMX IF END OF MACHINE CHECK
PDMA ADC MFST GET MAINFRAME STATE TABLE ENTRY
CRD FN
LDD T8
LMM TMMK,T3
SBD T8
PJN PDM2 IF NO STATE PROCESSING REQUIRED
LDD T9
LMM TMMK,T3
SBD T9
PJN PDM3 IF CLOCK NOT CHANGING
* SET MACHINE ACTIVE IN *MFST* AND INTERNAL TABLES.
LDN MFET
ADD T3
RJM SLA
READEM 1,FN
LDN 0
STD FN+3
LDN MFAC-1 SET ACTIVE STATE
STD FN+4
UJP PDM1 STORE STATE
PDM3 LDM TPDM,FN+4 SET MACHINE STATE PROCESSOR
STD T1
LJM 0,T1 ENTER STATE PROCESSOR
STATE SPACE 4,10
** STATE - SET STATE PROCESSOR.
*
* STATE STA,PRC
*
* ENTRY *STA* = STATE NAME.
* *PRC* = ALTERNATE PROCESSOR.
*
* THIS MACRO BUILDS A TABLE OF STATE PROCESSORS.
* THE TABLE IS NAMED *TPDM*, AND EACH ENTRY IS THE
* ADDRESS OF THE PROCESSOR FOR THE STATE.
PURGMAC STATE
STATE MACRO STA,PRC
LOCAL A
.A IFC EQ,*PRC**
A MICRO 2,4, STA
"A" BSS 0
.A ELSE
A MICRO 1,, PRC
.A ENDIF
TPDM RMT
ORG TPDM+STA
CON "A"
TPDM RMT
STATE ENDM
MFDN SPACE 4,10
* DOWN STATE PROCESSOR.
STATE MFDN NO STATE CHANGE
LDN MFDN SET STATE IN INTERNAL TABLE
STM TSTA,T3
LJM PDM2 PROCESS NEXT MACHINE
MFAC SPACE 4,10
* ACTIVE STATE PROCESSOR.
STATE MFAC,PDM1 ADVANCE TO *MFD1* STATE
MFD1 SPACE 4,10
* DOWN SENSED ONCE STATE PROCESSOR.
STATE MFD1,PDM1 ADVANCE TO *MFD2* STATE
MFD2 SPACE 4,10
* DOWN SENSED TWICE OR MORE STATE PROCESSOR.
STATE MFD2
LDD FN+1 CHECK FOR LOW SPEED PORT MMF MACHINE
SHN 21-12
PJP PDM1 IF NOT LOW SPEED PORT MMF MACHINE
LDD FN
SHN 6
LMN 1R
STM FD2A+2
SHN 6
STM FD2A+1
LDD FN
SHN 6
LMN 1R*
STM FD2A+16
SCN 77
LMN 1R=
SHN 6
STM FD2A+15
LDD CP
ADN MS2W
CWM FD2A,TR
UJP PDM2 PROCESS NEXT MACHINE
FD2A DATA 30HIF XX DOWN ENTER *DOWN,MID=XX*
MFDA SPACE 4,10
* DOWN MACHINE ACKNOWLEGED STATE PROCESSOR.
STATE MFDA
LDD FN SET MACHINE ID IN MESSAGE
STM FDAB+4
LDD CP
ADN MS2W
CWM FDAB,TR
SFLAG CIRI,PDM2 OBTAIN FLAG INTERLOCK TO CLEAR INTERLOCKS
LDM TMMK,T3 CHECK DOWN MACHINE HAS *TRTI* INTERLOCK
STD EA+1
LDC 6000 SET TEST FLAG FUNCTION
STD EA
LDN EA
RJM IFR
ZJN FDA1 IF NOT HELD BY DOWN MACHINE
LDC .TRTI
RAD EA+1
LDC 7000
STD EA
LDN EA CLEAR *TRTI* INTERLOCK
RJM IFR
* CLEAR FLAG BITS HELD BY DOWN MACHINE.
FDA1 LDD TH PRESET SHIFT INSTRUCTION
STM FDAA
LDN 1 SET WORD COUNT FOR READEM/WRITEM
STD WC
LDN FRET SET FLAG OWNER ADDRESS
RJM SLA
FDA2 READEM *,FS
SOD FS+4
LMD T3
NJN FDA3 IF INTERLOCK NOT HELD BY DOWN MACHINE
LDN 1 CLEAR FLAG BIT
FDAA SHN **
STD FS+1
SHN -14
ADC 7000
STD FS
LDN FS
RJM IFR
WRITEM *,ZR
FDA3 AOD EA+1 ADVANCE EXTENDED MEMORY ADDRESS
SHN -14
RAD EA
AOM FDAA
LMC SHNI+18D
NJN FDA2 IF NOT END OF FLAG BITS
* CLEAR DEVICE INTERLOCKS.
LDK ESTP PRESET EQUIPMENT FOR SEARCH
CRD CM
LDD CM+3
STD T7
FDA4 RJM SSD SEARCH FOR SHARED DEVICE
ZJN FDA5 IF NO MORE DEVICES
READEM SDGL+1,MBUF READ MST
NJN FDA5 IF EXTENDED MEMORY ERROR
LDM MBUF+SDGL*5+4
LPN 76
SHN -1
SBN 1
SBD T3
NJN FDA4 IF NOT INTERLOCKED BY DOWN MACHINE
LDM MBUF+SDGL*5+4
SCN 77
STM MBUF+SDGL*5+4
WRITEM *,MBUF REWRITE MST WITH INTERLOCK CLEARED
UJN FDA4 TRY NEXT DEVICE
FDA5 STD T7 SAVE ADVANCE STATUS
CFLAG CIRI CLEAR FLAG INTERLOCK
LDD T7
ZJP PDM1 IF PROCESSING COMPLETE ADVANCE TO *MFCD*
LJM PDM2 CHECK NEXT MACHINE ON PARITY ERROR
FDAB DATA 30CMACHINE XX DOWN.
MFCD SPACE 4,10
* *MTE* INTERLOCK CLEARING DONE STATE PROCESSOR.
STATE MFCD
LDK NCPL SET CONTROL POINT ADDRESS
CRD CM
AOD CM+1
LMC 2L R
STM MFCA+1
LDD T3 SET MACHINE INDEX
ADN 1
STM MFCA+4
LDN ZERL SET IMMEDIATE ASSIGNMENT
CRD CM
LDD MA WRITE REQUEST
CWM MFCA,ON
MONITOR RPPM
LDD CM+1
ZJP PDM2 IF NO PP ASSIGNED
UJP PDM1 ADVANCE TO *MFMR* STATE
MFCA VFD 18/3L1MR,18/0,6/CDV,18/0
* *1MR* CALLED TO CLEAR TRACK INTERLOCKS STATE PROCESSOR.
* NOTE - THIS STATE IS SIMPLY A WAIT FOR *1MR* TO COMPLETE.
* *1MR* ADVANCES TO THE NEXT STATE.
STATE MFMR,PDM2
TPDM SPACE 4,10
** TPDM - TABLE OF STATE PROCESSOR ADDRESSES.
*
* INDEXED BY STATE NUMBER.
* 12/ PROCESSOR ADDRESS
TPDM BSS 0
DUP MFMX,1
CON HNG
TPDM HERE
ORG TPDM+MFMX
SCIRI VFD 24/40000000+.CIRI
CCIRI VFD 24/70000000+.CIRI
SSD SPACE 4,15
** SSD - SEARCH FOR SHARED DEVICE.
*
* ENTRY (T7) = LAST DEVICE ORDINAL FOUND.
*
* EXIT (T7) = SHARED DEVICE ORDINAL FOUND.
* (A) = 0, IF NO DEVICE FOUND.
* (EA - EA+1) = EXTENDED MEMORY MST ADDRESS OF SHARED
* DEVICE.
*
* USES T7, CM - CM+4, EA - EA+4.
*
* MACROS SFA.
SSD SUBR ENTRY/EXIT
SSD1 SOD T7
ZJN SSDX IF END OF EST
SFA EST,T7
CRD CM
LDD CM
SHN 21-13
PJN SSD1 IF NOT MASS STORAGE
SHN 13-11
PJN SSD1 IF NOT SHARED
LDD CM+4 READ EXTENDED MEMORY ADDRESS OF MST
SHN 3
ADK SDGL
CRD EA
UJN SSDX RETURN
ERRNG EBUF-* *2EA* OVERFLOW
QUAL *
TITLE MTE/2EB - EXTENDED MEMORY ERROR RECOVERY.
IDENT 2EB,O2EB EXTENDED MEMORY ERROR RECOVERY.
*COMMENT MTE - EXTENDED MEMORY ERROR RECOVERY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
O2EB EQU PPFW
ORG O2EB
SPACE 4,30
*** 2EB - EXTENDED MEMORY ERROR RECOVERY.
*
* THERE EXIST FAILURE MODES FOR BOTH ECS AND ESM WHERE
* AN ERROR IS PRESENT IN THE DATA STORED IN MEMORY BUT
* NOTHING IS INHERENTLY WRONG WITH THE MEMORY. THE DATA
* WORD MAY BE REWRITTEN WITH CORRECT DATA THUS ELIMINATING
* THE ERROR ON FUTURE READS. THIS IS PRIMARILY A FAILURE
* MODE ASSOCIATED WITH ECS WHERE A BIT VALUE READ FROM
* MEMORY IS NOT DETECTED PROPERLY. DUE TO THE DESTRUCTIVE
* READ THE BAD DATA IS SUBSEQUENTLY REWRITTEN. FOR ESM
* CERTAIN TYPES OF DATA CORRUPTION DURING THE WRITE WILL
* CAUSE THE GENERATION OF AN INVALID SECDED CODE. THIS
* IS ONE WAY A HARD ERROR CAN BE DETECTED DURING A READ.
* HARD READ ERRORS ON ESM ARE AN EXTREMELY RARE SITUATION.
* THE ERROR RECOVERY LOGIC IMPLEMENTED IN THE FOLLOWING
* CODE IS PROVIDED PRIMARILY FOR THE SUPPORT OF ECS AS
* A LINK DEVICE. IT IS POSSIBLE THAT THIS LOGIC COULD
* CORRECT AN ERROR IN ESM AS WELL.
*
* *2EB* IS CALLED BY *MTE* WHEN THE *COMI* FLAG BITS IS SET,
* INDICATING EXTENDED MEMORY ERRORS WERE DETECTED BY SOME
* SOME MACHINE.
*
* *2EB* PERFORMS THE FOLLOWING ERROR RECOVERY FUNCTIONS.
*
* 1. FAST ATTACH FILE PARITY ERROR PROCESSING.
* FOR EACH GLOBAL FAST ATTACH FILE FOUND IN THE FNT
* THE FILE NAME, LOCAL ACCESS COUNT, AND FAMILY NAME
* WORDS OF THE FAT ARE GENERATED FROM INFORMATION IN
* CM AND THEN WRITTEN TO EM. ALL LOCAL ACCESS COUNTS
* ARE SUBSEQUENTLY READ FROM EM WHICH PROVIDES THE
* INFORMATION NEEDED TO GENERATE THE GLOBAL ACCESS
* COUNT WORD. ONCE GENERATED, THE GLOBAL COUNT WORD
* IS WRITTEN BACK TO EM COMPLETING THE RESTORATION OF
* A FAT TABLE ENTRY.
* 2. MST/TRT PARITY ERROR PROCESSING.
* THE ERROR RECOVERY ALGORITHM FOR MST/TRT ERROR
* RECOVERY DEPENDS ON BEING ABLE TO READ THE *SDGL*
* MST WORD FOR THE DEVICE. WHEN THE *SDGL* WORD READ
* FROM EM INDICATES THAT THIS MACHINE HAS THE
* UP-TO-DATE COPY OF THE DEVICE TABLE THESE TABLES
* ARE REWRITTEN TO EM.
RPE SUBR ENTRY/EXIT
* ISSUE MESSAGE TO SYSTEM CONTROL POINT.
LDK NCPL
CRD CM
AOD CM+1
SHN 7
ADN MS2W
CWM RPEB,TR *MST/TRT PARITY ERROR.*
* PROCESS FAST ATTACH FILES.
LDN 20 SET RETRY COUNT
STD EA+4
RPE1 SOD EA+4
ZJN RPEX IF UNABLE TO INTERLOCK FAT
SFLAG FATI,RPE1 SET FAT INTERLOCK
LDM TPPR+AFAM
LMC AFP
ZJP RPE8 IF *AFAM* PRESET NOT EXECUTED YET
* SEARCH FNT FOR GLOBAL FAST ATTACH FILES.
LDN FNTP
CRD OR
RPE2 LDN FNTE ADVANCE FNT ADDRESS
RAD OR+1
SHN -14
RAD OR READ FST
SHN 14
ADD OR+1
ADK FNTG
CRD FN
ADK FSTG-FNTG
CRD FS
SOD OR+2
MJP RPE8 IF END OF FNT
LDD FN+4
SHN -6
LMN FAFT
NJN RPE2 IF NOT FAST ATTACH FILE
LDD FN+3
LPN 77
ZJN RPE2 IF NOT GLOBAL FAST ATTACH
SHN FATS COMPUTE FAT ADDRESS
ADM AFAA+1
STD EA+1
SHN -14
ADM AFAA
LPN 77
STD EA
LDD FS SAVE EQUIPMENT AND TRACK
LPC 777
STD T7
LDD FS+1
STD T6
LDD FN+3 SET FILE NAME IN FAT WORD 0
SCN 77
STD FN+3
LDN 0
STD FN+4
WRITEM 1,FN WRITE FILE NAME TO FAT
LDK MMFL BUILD LOCAL FAT WORD
CRD CM
LDM MI+1 ADVANCE ADDRESS TO LOCAL FAT WORD
ADN 1
RAD EA+1
SHN -14
RAD EA
LDD CM SET MACHINE ID IN LOCAL FAT WORD
STD FS
LDN 0
STD FS+1
WRITEM 1,FS WRITE LOCAL FAT WORD
LDN MXMF+1 ADVANCE TO FAMILY NAME WORD
SBM MI+1
RAD EA+1
SHN -14
RAD EA
SFA EST,T7 READ FAMILY NAME FROM MST
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADN PFGL
CRD FN
LDN 0
STD FN+4
WRITEM 1,FN WRITE FAMILY NAME WORD
* READ LOCAL WORDS CHECKING FOR ERRORS AND ACCUMULATING COUNTS.
LDN ZERL CLEAR GLOBAL COUNTS
CRD FN
LDD T6 SET TRACK
STD FN+1
LDN MXMF SET COUNTER
STD T7
RPE3 SOD EA+1 ADVANCE BACKWARD FROM FAMILY NAME WORD
PJN RPE4 IF NO UNDERFLOW
AOD EA+1
SOD EA
RPE4 SOD T7
MJN RPE6 IF END OF LOCAL WORDS TO READ
READEM 1,FS,RPE5 NOTE IF ERROR
LDD FS+4
RAD FN+4
SHN -14
NJN RPE6 IF INVALID BITS SET
LDD FS+3
RAD FN+3
SHN -14
NJN RPE6 IF INVALID BITS SET
LDD FS+2
RAD FN+2
SHN -14
ZJN RPE3 IF NOT INVALID BITS SET
RPE5 AOM RPEA ADVANCE ERROR COUNT
UJN RPE7 ADVANCE TO NEXT FILE
RPE6 WRITEM 1,FN WRITE GLOBAL WORD
RPE7 LJM RPE2 ADVANCE TO NEXT FILE
RPE8 CFLAG FATI CLEAR FAT INTERLOCK
* PROCESS MST/TRT EXTENDED MEMORY ERRORS.
LDN 20 SET RETRY COUNT
STD EA+4
RPE9 SOD EA+4
ZJP RPEX IF UNABLE TO INTERLOCK
SFLAG TRTI,RPE9 SET TRT INTERLOCK
* SEARCH EST FOR SHARED DEVICES.
LDN ESTP
CRD OR
LDN NOPE-1
STD OR
UJN RPE11 ENTER SEARCH LOOP
RPE10 AOM RPEA NOTE ERROR
RPE11 AOD OR
LMD OR+3
ZJP RPE14 IF END OF DEVICES
SFA EST,OR
ADK EQDE
CRD FN
LDD FN
LPC 5020
LMC 5000
NJN RPE11 IF NOT MMF SHARED
LDD FN+4 READ *SDGL* MST WORD FROM EXTENDED MEMORY
SHN 3
ADK SDGL
CRD EA
LDK SDGL
RAD EA+1
SHN -14
RAD EA
READEM 1,FS,RPE10 NOTE ERROR ON EXTENDED MEMORY READ
LDD FS+4
LPN 77
NJN RPE11 IF DEVICE INTERLOCKED
LDD EA+1 CHECK DATA READ
SBN SDGL
SBD FS+1
LMD EA
SBD FS
NJP RPE10 IF ERROR IN ADDRESS
LDD EA+4
LMD FS+4
NJP RPE11 IF NOT UP-TO-DATE IN THIS MACHINE
LDD EA+3
LMD FS+3
NJP RPE11 IF NOT UP-TO-DATE IN THIS MACHINE
LDD EA+2
LMD FS+2
NJP RPE11 IF NOT UP-TO-DATE IN THIS MACHINE
* THIS MACHINE HAS THE UP-TO-DATE COPY OF THE MST/TRT.
* WRITE THESE TABLES TO EXTENDED MEMORY TO CORRECT ANY ERRORS.
LDD FN+4 RESET ADDRESS OF MST
SHN 3
ADK SDGL
CRD EA
ADK TDGL-SDGL
CRM MBUF,TR
WRITEM SDGL+1,MBUF WRITE MST GLOBAL WORDS
LDM MBUF+2 SET TRT LENGTH
STD T7
LDD HN SET BUFFER SIZE
STD WC
LDD FN+4 GET TRT ADDRESS
SHN 3
ADN TRLL
CRD FS
LDK TRST*100-MSST*100 ADVANCE EM ADDRESS TO TRT
RAD EA+1
SHN -14
RAD EA
RPE12 LDD T7
SBD WC
PJN RPE13 IF FULL BUFFER TO WRITE
RAD WC
ZJP RPE11 IF END OF TRT
LDN 0
RPE13 STD T7
LDD FS+3 READ TRT BUFFER
SHN 14
ADD FS+4
CRM TBUF,WC
STD FS+4 ADVANCE CM ADDRESS
SHN -14
STD FS+3
WRITEM *,TBUF
LDD WC ADVANCE EXTENDED MEMORY ADDRESS
RAD EA+1
SHN -14
RAD EA
UJP RPE12 ADVANCE TO NEXT BUFFER
* CLEAR TRTI FLAG INTERLOCK.
RPE14 CFLAG TRTI
* CHECK FOR COMPLETION OF ERROR PROCESSING.
LDM RPEA
NJN RPE15 IF INCOMPLETE ERROR PROCESSING
CFLAG COMI,NW CLEAR ERROR PROCESSING FLAG BIT
RPE15 LJM RPEX RETURN
RPEA CON 0 ERROR COUNTER
RPEB DATA C* MST/TRT PARITY ERROR.*
CCOMI VFD 24/70000000+.COMI
ERRNG EBUF-* *2EB* OVERFLOW
SPACE 4,10
TITLE MTE/7EA - EXTENDED MEMORY ERROR PROCESSING.
QUAL 7EA
IDENT 7EA,L7EA
*COMMENT MTE - EXTENDED MEMORY ERROR PROCESSING.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
L7EA EQU EPFW+3 LOAD ADDRESS FOR *7EA*
ORG L7EA
SPACE 4,15
*** 7EA - EXTENDED MEMORY ERROR PROCESSING.
*
* *7EA* IS CALLED WHEN AN ERROR IS DETECTED IN COMMUNICATING
* WITH EXTENDED MEMORY.
*
* *7EA* PERFORMS THE FOLLOWING RECOVERY PROCEEDURES.
* 1. REVERSE THE ORDER OF CHANNEL ASSIGNMENT PRIORITY.
* 2. RELEASE AND REQUEST THE CHANNEL TO TRY ANOTHER
* CHANNEL WHEN PRESENT.
* 3. RETRY THE ENTIRE OPERATION, INCLUDING STEPS 1 AND 2
* UP TO 8 TIMES.
* 4. THE MESSAGE *MMF LINK DEVICE ERROR.* IS DISPLAYED AT
* THE SYSTEM CONTROL POINT.
PER BSS 0 ENTRY
* SEARCH TABLE FOR OPERATION TYPE.
PER1 LDN 2
RAD T1
LDI T1
ZJN * IF END OF TABLE
LMM SFN
NJN PER1 IF FUNCTION CALLER NOT FOUND
LDM 1,T1
STD T2
LMC CKS
NJN PER3 IF NOT CALLED FROM CHECK STATUS
LDM CKS
LMC RDWX
ZJN PER2 IF READ OPERATION
LDK WTW-RDW
PER2 ADC RDW
STD T2
PER3 LDM RECA
NJN PER4 IF EXIT ADDRESS PREVIOUSLY SET
LDI T2 SET EXIT ADDRESS
STM RECA
LDC REC SET EXIT TO *REC*
STI T2
* (T2) = *RDW*, *WTW*, OR *IFR*.
PER4 AOD RC INCREMENT ERROR COUNTER
* DISPLAY ERROR MESSAGE AT SYSTEM CONTROL POINT.
LDK NCPL
CRD CM
AOD CM+1
SHN 7
ADN MS2W
CWM PERA,TR *MMF LINK DEVICE ERROR.*
LDD EA SAVE PARITY ERROR DATA
STM PERB+2
LDD EA+1
STM PERB+3
LDD WC
STM PERB+1
LDM CKSA
STM PERB
LDD ST
STM PERB+4
* REVERSE ORDER OF CHANNEL ASSIGNMENT PRIORITY.
LDD T5
STD CM+1
LDK RVCS
STD CM+3
MONITOR SCSM
* ATTEMPT TO TRY OTHER CHANNEL BY RELEASING AND REQUESTING.
LDN 0 RELEASE CHANNEL
RJM DSW
LDN 1 REQUEST CHANNEL
RJM DSW
LDD RC
SBN 10
PJN PER6 IF UNRECOVERED ERROR
LJM 3,T2 RETRY OPERATION
* PROCESS UNRECOVERED ERROR.
PER6 LCN 2 CHECK FOR ERROR PROCESSOR
STD T1
LDM RECA SET EXIT ADDRESS
STD T2
PER7 LDN 2
RAD T1
LDM TERP,T1
ZJN PER8 IF END OF TABLE
LMD T2
NJN PER7 IF ERROR PROCESSOR NOT FOUND
LDM TERP+1,T1 GET ERROR PROCESSOR ADDRESS
STD T2
PER8 LDN 0 CLEAR ERROR INDICATION
STD RC
STM RECA
LDN 1 RETURN ERROR STATUS
LJM 0,T2 RETURN
PERA DATA C*MMF LINK DEVICE ERROR.*
PERB CON 0,0,0,0,0 PARITY ERROR INFORMATION
TPER SPACE 4,10
** TPER - TABLE OF FUNCTION CALLER ADDRESSES.
*
* ENTRY = TWO WORDS.
* WORD 1 = *SFN* CALLER RETURN ADDRESS.
* WORD 2 = ROUTINE CALLING *SFN*, EITHER *RDW*, *WTW* OR *CKS*.
TPER BSS 0
LIST G
ECHO 1,A=(".SFN")
CON A
LIST *
TERP SPACE 4,10
** TERP - TABLE OF ERROR PROCESSOR ADDRESSES.
*
* ENTRY = TWO WORDS.
* WORD 1 = *RDW/WTW* CALLER RETURN ADDRESS.
* WORD 2 = ERROR PROCESSOR ADDRESS FOR *RDW/WTW*.
TERP BSS 0
LIST G
ECHO 1,A=(".ERP")
CON A
LIST *
BSS 10000-* SPARES
CON PER-1 (T0) = ENTRY ADDRESS - 1
CON TPER-2 (T1) = TABLE SEARCH POINTER
CON RECA (T2) = POINTER TO RECOVERY ADDRESS
ERRNZ 10003-* CODE DOES NOT WRAP PP CORRECTLY
OVLL EQU *-L7EA LENGTH OF OVERLAY
ERRNZ OVLL/5*5-OVLL CODE DOES NOT WRAP PP CORRECTLY
QUAL *
SPACE 4
END