cdc:nos2.source:opl871:mtr
Table of Contents
MTR
Table Of Contents
- [00007] MTR - PP MONITOR.
- [00009] PP MONITOR.
- [00158] MACRO DEFINITIONS.
- [00161] MSTA - GENERATE MST ADDRESS.
- [00203] NSDJ - NO SHARED DEVICES JUMP.
- [00224] N8SJ - NO ISD SUBSYSTEM JUMP.
- [00245] PPR - SET PP REQUEST PROCESSOR.
- [00270] SUBFUN - SET SUBFUNCTION PROCESSOR.
- [00292] MAIN PROGRAM.
- [00302] MAIN PROGRAM.
- [00392] TIMEKEEPING.
- [00394] AVC - ADVANCE CLOCK.
- [00452] TIM - UPDATE REAL TIME CLOCK.
- [00530] ETA - ENABLE TIME ADVANCE.
- [00548] AVT - ADVANCE TIME.
- [00617] RECALL CRITERION PROCESSING.
- [00619] CRQ - CHECK RECALL CRITERION.
- [00684] PTM - TIMED RECALL PROCESSOR.
- [00709] PCB - COMPLETION BIT PROCESSOR.
- [00749] PROCESS HARDWARE ERRORS.
- [00751] PHE - PROCESS HARDWARE ERRORS.
- [00879] PSE - PROCESS SINGLE BIT ERRORS.
- [00920] ODW - OUTPUT DESCRIPTOR WORD.
- [00936] BIS - BUILD ID AND SEARCH TABLE.
- [01115] PP REQUEST PROCESSING.
- [01126] HNG - HANG PPU AND DISPLAY MESSAGE
- [01167] DSD - PROCESS *DSD* REQUEST.
- [01182] PPR - PROCESS PP REQUEST.
- [01200] FNZ - FUNCTION RETURN TO CLEAR OUTPUT REGISTER.
- [01207] FNR - FUNCTION RETURN.
- [01213] FNC - FUNCTION RETURN TO CLEAR UPPER BYTE OF *OR*.
- [01222] MSC - MONITOR STEP CONTROL.
- [01270] SNP - SET NEXT PP TO STEP.
- [01315] PP REQUEST FUNCTION PROCESSORS.
- [01316] NOTE - EXIT CONDITION REFERENCES TO (OR - OR+4) SPECIFY
- [01673] MSEK - THIS TAG DEFINES THE MAXIMUM NUMBER OF SEEK WAITS
- [01817] RSV - *DSWM* ROUTINE TO PROCESS RESERVE SITUATIONS.
- [01872] RCE - *DSWM* ROUTINE TO REQUEST IO RESOURCES.
- [01999] RCO - *DSWM* ROUTINE TO REQUEST A CHANNEL ONLY.
- [02022] EMS - *DSWM* ROUTINE TO RELEASE IO RESOURCES.
- [02049] WIP - *DSWM* ISD WRITE WAIT PROCESSOR.
- [02072] SEK - *DSWM* SEEK WAIT PROCESSOR.
- [02122] RER - REENTRY PROCESSING.
- [02123] RER - *DSWM* REENTRY PROCESSING.
- [02153] C1M - CHECK FOR ONE CONTROL MODULE CHANNEL FREE.
- [02184] C2M - CHECK FOR ONE OF TWO CONTROL MODULE CHANNELS FREE.
- [02210] C1C - CHECK FOR SINGLE CHANNEL FREE.
- [02223] C2C - CHECK FOR ONE OF TWO CHANNELS FREE.
- [02350] CHD - CHANNEL DROP PROCESSOR.
- [02360] RRX - EXIT *DSWM* REENTRY PROCESSING.
- [02402] RSY - SELECT SYSTEM DEVICE.
- [02499] CUI - CHECK FOR UNIT INTERLOCK FREE.
- [02554] PRR - PROCESS PRIORITY REQUEST.
- [02595] SCS - SET *DSWM* CHANNEL SELECTION.
- [02678] TMSK - TABLE OF SINGLE BIT MASKS
- [03624] SES - SET EMERGENCY STEP.
- [03633] MSP - SET MONITOR STEP.
- [03675] CMS - CLEAR MONITOR STEP MODE.
- [03722] STP - STEP MONITOR.
- [03733] EDT - ENTER DATE AND TIME.
- [03751] SKC - SET K DISPLAY COMPLETE BIT.
- [03778] CPU PROGRAM CONTROL ROUTINES.
- [03780] CCP - CHECK CENTRAL PROGRAM.
- [03864] CCS - CHECK FOR CPU SWITCH.
- [03950] CPR - CPUMTR REQUEST PROCESSOR.
- [04067] WXP - WAIT EXCHANGE PACKAGE READY.
- [04087] MEMORY ALLOCATION ROUTINES.
- [04098] MST - MOVE STORAGE.
- [04326] AMF - ADJUST MACHINE FL.
- [04347] AMM - ACCUMULATE MEMORY TO MOVE.
- [04426] AMV - ADVANCE MOVE.
- [04533] CFL - CLEAR FL INCREASE.
- [04568] CRA - CHANGE REFERENCE ADDRESS.
- [04600] EMO - EVALUATE MOVE OPTIONS.
- [04647] IMV - INITIATE INCREMENTAL MOVE.
- [04751] ISR - ISSUE STORAGE REQUEST.
- [04783] MFL - MODIFY FIELD LENGTH.
- [04855] PVE - PROCESS SPECIAL REQUEST.
- [04904] RSB - RETURN SIZE OF UNASSIGNED MEMORY BLOCK.
- [04940] SCP - SET CP/PCP AREA ADDRESS.
- [04960] SFL - SET FL INCREASE.
- [05020] STA - SET MEMORY CONTROL TABLE ADDRESS.
- [05036] UFL - SET UNASSIGNED FIELD LENGTHS.
- [05148] SUBROUTINES.
- [05150] NOTE - SUBROUTINES WILL NOT ALTER OA, CP, OR - OR+4.
- [05152] CDA - CLEAR DEVICE ACTIVITY.
- [05207] CFS - CHECK FOR STEP CRITERION MET.
- [05254] FTN - PROCESS MONITOR FUNCTION.
- [05320] GCE - GET CHANNEL ASSIGNMENT TABLE ENTRY.
- [05361] HGM - HANG *MTR*.
- [05373] PCM - PURGE CACHE IF CPU 1 IN MONITOR MODE.
- [05402] RCP - RECALL CPU.
- [05443] RCS - REQUEST CHANNEL STATE CHANGE.
- [05467] TCH - TEST CHANNEL.
- [05494] VCN - VERIFY CHANNEL NUMBER.
- [05520] TABLES.
- [05522] TCHS - CHANNEL TABLE.
- [05553] TREA - TABLE OF REENTRY ADDRESSES.
- [05566] CPRA - (P), (A0), (B0) FOR EXCHANGE PACKAGE.
- [05576] TSYD - TABLE OF SYSTEM DEVICES.
- [05586] TSHS - TABLE OF SHARED SYSTEM DEVICES.
- [05596] TSYM - TABLE OF SYSTEM DEVICE MST ADDRESSES.
- [05607] TCHR - TABLE OF PRIORITY SEEK REQUESTS.
- [05621] TCMA - TABLE OF CONTROL MODULE ACTIVITY.
- [05633] TCMN - TABLE OF DEVICE UNIT NUMBERS.
- [05644] TPPI - TABLE OF PPU INTERLOCK BITS.
- [05656] TSCA - TABLE OF SHARED DEVICE OUTSTANDING SEEKS.
- [05666] TSEK - TABLE OF SEEK WAITS ON SHARED DEVICES.
- [05684] TPMS - TABLE OF MST ADDRESSES BY PP.
- [05697] MONITOR PRESET.
- [05705] PRS - PRESET TABLES AND CONSTANTS.
- [05811] TSIC - INSTRUCTION RELOCATION TABLE.
- [06200] 4MW - MTR PRESET (PART 5).
- [06348] 4MV - MTR PRESET (PART 6).
- [06407] NSDJ - TABLE OF NO SHARED DEVICE JUMP INSTRUCTIONS.
- [06416] N8SJ - TABLE OF ISD SUBSYSTEM JUMP INSTRUCTIONS.
- [06425] MMI - MODIFY *MTR* INSTRUCTIONS.
- [06452] 4MU - MTR PRESET (PART 7).
Source Code
- MTR.txt
- IDENT MTR,0
- PERIPH J
- BASE MIXED
- SST FTN,IA,PPR,TH,.EST,SSCP
- *COMMENT MTR - PPU MONITOR.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE MTR - PP MONITOR.
- SPACE 4
- *** MTR - PP MONITOR.
- * G. R. MANSFIELD. 70/12/13.
- * R. E. TATE. 76/11/10.
- SPACE 4
- *** *MTR* IS LOADED INTO PP 0 AT DEAD START TIME AND
- * REMAINS THERE FOR THE DURATION OF SYSTEM EXECUTION.
- *
- * *MTR* PERFORMS THE FOLLOWING FUNCTIONS.
- * 1. PROCESS CERTAIN PPU REQUESTS.
- * 2. ALLOCATION OF CENTRAL MEMORY.
- * 3. MAINTAIN TIME OF DAY AND DATE.
- * 4. MAINTAIN THE REAL TIME CLOCK.
- * 5. CHECK THE CONTENTS OF (RA+1) OF ACTIVE CENTRAL
- * PROGRAMS FOR SYSTEM REQUESTS.
- *
- * *MTR* INPUT REGISTER.
- *
- *T, IR 18/ *MTR*,6/ SC,36/0
- *
- * SC SYSTEM CONTROL POINT NUMBER.
- *
- * *MTR* MAINTAINS THE FOLLOWING DATA IN THE
- * STATISTICAL DATA AREA.
- *
- *T, MTRS 12/0,12/ CLOCK,12/ MXN,12/ WCT,12/ CCT
- *
- * CLOCK COUNT OF TIMES *TIM* CALLED AND CLOCK UPDATE MISSED.
- * MXN WORST CASE TIME TO DO AN MXN. (MICRO SECONDS)
- * WCT WORST CASE CYCLE TIME. (MILLISECONDS)
- * CCT CURRENT CYCLE TIME. (MILLISECONDS)
- SPACE 4
- *CALL COMPMAC
- *CALL COMPIOU
- *CALL COMSCPS
- *CALL COMSMSC
- QUAL DSL
- *CALL COMSDSL
- QUAL *
- *CALL COMSDFT
- *CALL COMSDST
- *CALL COMSIOU
- *CALL COMSJCE
- LIST X
- *CALL COMSMTR
- LIST *
- *CALL COMSMST
- *CALL COMSPIM
- *CALL COMSPRD
- QUAL REM
- *CALL COMSREM
- QUAL *
- *CALL COMSSSD
- QUAL MSP
- *CALL COMSMSP
- QUAL *
- *CALL COMSSCR
- QUAL IOU
- *CALL COMSIOU
- QUAL *
- SPACE 4
- **** DIRECT LOCATION ASSIGNENTS.
- ORG 0
- T0 CON PRS-1 TEMPORARY STORAGE
- PD EQU T0 - T0+4 PACKED DATE AND TIME (*PDTL*)
- T1 CON 0
- T2 CON 0
- T3 CON 0
- T4 CON 0
- T5 CON 0
- T6 CON 0
- T7 CON 0
- CM VFD 60/0 CM WORD BUFFER
- TI EQU CM - CM+4 DISPLAY CODE TIME (*TIML*)
- T8 CON 0 TEMPORARY STORAGE
- MB CON 0,0 MEMORY BLOCKS - TEMPORARY
- CN VFD 60/0 CM WORD BUFFER
- LS CON 7777 LATEST SECOND COUNT
- BA CON 0 BYTE ADDRESS
- PA CON 0 PARAMETER ADDRESS
- CS VFD 60/0 CONTROL POINT STATUS WORD
- RC CON RQRL RECALL STACK POINTER
- RQ CON RQRL *RQRL* POINTER
- CF CON 1 CHANNEL TABLE WRITE FLAG
- MM BSS 0 MEMORY MANAGEMENT
- MM.0 CON 7777 CONTROL POINT MOVING
- MM.1 CON 0 MOVE INCREMENT
- MM.2 CON 0 LOWER MOVE CONTROL POINT
- MM.3 CON 0 CONTROL POINT REQUESTING MOVE
- MM.4 CON 0 PP REQUESTING MOVE
- NP CON 0 NUMBER OF PPS
- NC CON 0 NUMBER OF CONTROL POINTS
- TM BSS 0 REAL TIME CLOCK
- VFD 24/0 SECONDS
- VFD 36/0 MILLISECONDS
- MS CON 0 LAST MICROSECOND COUNT
- ST CON 1000D SECOND TIMER
- FT CON 4000 CONSTANT 4000
- SC CON SCRL *SCRL* POINTER
- OR VFD 60/0 PP OUTPUT REGISTER
- OF CON 0 ADDRESS OF FIRST PP OUTPUT REGISTER
- PP CON 0 CURRENT PP NUMBER
- PR CON 0 PRIORITY SEEK REQUEST PP
- ON CON 1 CONSTANT 1
- HN CON 100 CONSTANT 100
- FR CON 4 CONSTANT FOUR
- TR CON 3 CONSTANT 3
- CP CON 0 CONTROL POINT NUMBER
- CY CON 0 START OF CURRENT CYCLE
- OA CON 0 CURRENT OUTPUT REGISTER ADDRESS
- ZR VFD 60/0 CM ZERO WORD (5 LOCATIONS)
- * ASSEMBLY CONSTANTS.
- MLSC EQU 1000D MICROSECONDS/MILLISECOND
- CH EQU CHSC S/C REGISTER CHANNEL
- MR EQU CHMR CYBER 170-8X5 MAINTENANCE CHANNEL
- MXRC EQU 3 MAXIMUM RECALL REQUESTS PER LOOP
- MBCS EQU 6 MEMORY BLOCK CONVERSION SHIFT COUNT
- ****
- TITLE MACRO DEFINITIONS.
- PPR SPACE 4
- MSTA SPACE 4,20
- ** MSTA - GENERATE MST ADDRESS.
- *
- * THIS MACRO IS TO BE USED FOR ALL MST ADDRESSES IN ORDER TO
- * ALLOW FOR EST EXPANSION.
- *
- * MSTA WORD,PP,DC,EO
- * ENTRY WORD = MST WORD DESIRED.
- * PP = PP NUMBER USED TO ACCESS PP TABLE OF MST
- * ADDRESSES (*TPMS*).
- * DC = 5 BYTES OF SCRATCH DIRECT CELLS.
- * EO = IF SUPPLIED, (A) = EST ORDINAL.
- *
- * EXIT (A) = CM ADDRESS IF *WORD* SUPPLIED.
- * (DC - DC+4) = *EQDE* WORD OF EST ENTRY IF *DC* IS
- * SUPPLIED.
- *
- * IF *DC* IS SUPPLIED MST ADDRESS IS OBTAINED FROM THE
- * EST, AND IF *PP* IS SUPPLIED, IT IS STORED INTO *TPMS*.
- * IF *DC* IS NOT SUPPLIED, THE MST ADDRESS IS OBTAINED FROM
- * *TPMS*. IF *WORD* IS NOT SUPPLIED THE CM ADDRESS IS NOT
- * RETURNED.
- MSTA MACRO WORD,PP,DC,EO
- MACREF MSTA
- .M1 IFC NE,*DC**
- IFC EQ,*EO**,1
- LDD T5
- SFA EST
- ADK EQDE
- CRD DC
- LDD DC+4
- IFC NE,*PP**,1
- STM TPMS,PP
- .M1 ELSE
- LDM TPMS,PP
- .M1 ENDIF
- IFC NE,*WORD**,2
- SHN 3
- ADN WORD
- ENDM
- NSDJ SPACE 4,10
- ** NSDJ - NO SHARED DEVICES JUMP.
- *
- * THE INSTRUCTION FOLLOWING THIS MACRO IS REPLACED BY A *UJN*
- * IF THERE ARE NO SHARED DEVICES IN THE SYSTEM.
- *
- * NSDJ ADDR
- * ENTRY ADDR = ADDRESS TO JUMP TO.
- NSDJ MACRO A
- LOCAL AA
- MACREF NSDJ
- AA EQU *
- NSDJ RMT
- CON AA
- LOC AA
- UJN A
- LOC *O
- NSDJ RMT
- ENDM
- N8SJ SPACE 4,10
- ** N8SJ - NO ISD SUBSYSTEM JUMP.
- *
- * THE INSTRUCTION FOLLOWING THIS MACRO IS REPLACED BY A *UJN*
- * IF THERE IS NO ISD SUBSYSTEM PRESENT.
- *
- * N8SJ ADDR
- * ENTRY ADDR = ADDRESS TO JUMP TO.
- N8SJ MACRO A
- LOCAL AA
- MACREF N8SJ
- AA EQU *
- N8SJ RMT
- CON AA
- LOC AA
- UJN A
- LOC *O
- N8SJ RMT
- ENDM
- PPR SPACE 4,10
- ** PPR - SET PP REQUEST PROCESSOR.
- *
- * PPR FCN,PRC
- * ENTRY *FCN* = FUNCTION NUMBER.
- * IF *PRC* IS SPECIFIED, *.PRC* IS ADDRESS OF PROCESSOR.
- * OTHERWISE, *.FCN* IS ADDRESS OF PROCESSOR.
- PPR MACRO FCN,PRC
- LOCAL J,K
- MACREF PPR
- J OCTMIC FCN
- IFC EQ,$PRC$$
- K MICRO 1,3, FCN
- K MICRO 1,4,*."K"*
- "K" CON FCN
- ORG *-1
- ELSE 1
- K MICRO 1,, PRC
- PPR RMT
- ORG TPPR+FCN
- CON "K"
- PPR RMT
- ENDM
- SUBFUN SPACE 4,10
- ** 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.
- MACRO SUBFUN,SFA,FNC,SFN
- MACREF SUBFUN
- SFA BSS 0
- IRP SFN
- T_FNC RMT
- ORG T_FNC+SFN
- CON SFA
- T_FNC RMT
- IRP
- ENDM
- TITLE MAIN PROGRAM.
- MRP SPACE 4,10
- ** MONITOR RE-ENTRY PROCESSOR.
- MRP CON 0 REENTRY ADDRESS
- LDM MRP
- STM TREA,PP
- * UJN MTR CHECK NEXT PP
- MTR SPACE 4,10
- ** MTR - MAIN PROGRAM.
- MTR AOD PP GET NEXT OUTPUT REGISTER ADDRESS
- MTRA SBN ** (NUMBER OF NON-CONCURRENT PPS)
- MTRB NJN MTR1 IF NOT LAST NPP
- * UJN MTR2 (NO CONCURRENT PPS PRESENT)
- * UJN MTR1 (MONITOR STEP SET)
- LDN PPRL CHECK FOR CPP REQUESTS
- CRD CM
- LDD CM
- ZJN MTR4 IF NO CPP REQUESTS
- LDN 0 CLEAR CPP REQUEST FLAG
- STD CM
- LDK PPRL
- CWD CM
- MTR1 SBN ** (NUMBER OF CONCURRENT PPS)
- MTRC EQU *-1
- ERRPL 10-PPRL *PPRL* MIGHT EQUAL NUMBER OF CPPS
- MTR2 ZJN MTR4 IF ALL OUTPUT REGISTERS CHECKED
- LDD PP READ PP-S OUTPUT REGISTER
- MTR3 SHN 3
- ADD OF
- STD OA
- CRD OR
- LDM TREA,PP GET PP-S REENTRY ADDRESS
- STM MTRD
- LDD OR
- ZJN MTR IF NO REQUEST
- LJM ** EXIT TO PROCESSOR
- MTRD EQU *-1
- * PERFORM SYSTEM FUNCTIONS.
- MTR4 RJM TIM UPDATE TIME
- RJM CRQ CHECK RECALL QUEUE
- LDD CF
- ZJN MTR5 IF NO CHANNEL UPDATES
- MTRE LDN CTALL WORD COUNT OF CHANNEL TABLE
- * LDN NCTAL (CCH-S NOT PRESENT)
- STD CF
- LDC ** WRITE CHANNEL TABLE
- MTRF EQU *-1
- CWM TCHS,CF
- LDN 0 CLEAR CHANNEL UPDATE FLAG
- STD CF
- MTR5 RJM PHE PROCESS HARDWARE ERRORS
- MTRG EQU *-2
- * UJN *+2 (6000 SERIES)
- * UPDATE STATISTICAL DATA.
- TLDC MTRS,SDA READ *MTR* STATISTICAL DATA
- CRD CM
- LDC ** UPDATE MISSED CLOCK UPDATE COUNT
- MTRI EQU *-1 (MISSED CLOCK UPDATE COUNT)
- RAD CM+1
- LDN 0 RESET CURRENT CYCLE MISSED CLOCK UPDATES
- STM MTRI
- LDD TM+4 CALCULATE ELAPSED CYCLE TIME
- SBD CY
- PJN MTR6 IF NO OVERFLOW
- ADC 10000
- MTR6 STD CM+4
- RAD CY
- LDD CM+4
- SBD CM+3
- MJN MTR7 IF NOT NEW WORST CASE TIME
- RAD CM+3 UPDATE WORST CASE CYCLE TIME
- MTR7 LDC ** SET WORST CASE *MXN* TIME
- MTRJ EQU *-1 (WORST CASE *MXN* TIME)
- SBD CM+2
- MJN MTR8 IF NOT WORST CASE *MXN* TIME
- RAD CM+2 UPDATE WORST CASE *MXN* TIME
- MTR8 LDN 0 RESET CURRENT CYCLE WORST CASE *MXN* TIME
- STM MTRJ
- TLDC MTRS,SDA WRITE *MTR* STATISTICAL DATA
- CWD CM
- * THE CPU SWITCH IS DONE AS LONG AS POSSIBLE AFTER THE CALL
- * TO *CRQ* TO ALLOW *CPUMTR* TO HAVE FINISHED PROCESSING CPU
- * RECALLS. THE CALL TO *WXP* IS MADE TO INSURE ANY RECALLS
- * HAVE COMPLETED.
- RJM WXP WAIT RECALL COMPLETION
- RJM CCS CHECK CPU SWITCH
- RJM CCP CHECK CENTRAL PROGRAM
- LDN 0 SET UP OUTPUT REGISTER SCAN
- STD PP
- LJM MTR LOOP
- TITLE TIMEKEEPING.
- AVC SPACE 4
- ** AVC - ADVANCE CLOCK.
- *
- * ENTRY MUST BE MADE AT LEAST EVERY 4 MILLISECONDS.
- *
- * IF THE MACHINE IS IN A MULTI-MAINFRAME COMPLEX THE
- * FOLLOWING IS DONE.
- * 1) STATUS FLAG REGISTER BITS.
- * 2) WRITE REAL TIME CLOCK TO ECS.
- * 3) STATUS MAINFRAMES ECS CLOCKS EVERY 2 SECONDS.
- *
- * USES CM - CM+4, T3.
- *
- * CALLS AVT, CPR, TIM.
- AVC4 BSS 0
- AVCB LDC 10000B+ARTF ADVANCE CPU-1 RUNNING TIME
- * UJN AVC5 (1 CPU)
- RJM CPR
- AVC5 LDD HN RESET RETURN
- STM AVCA
- RJM AVT ADVANCE TIME OF DAY
- AVCC LDD TM+1
- * UJN AVCD (NO MULTI-MAINFRAME PROCESSING)
- LPN 1
- STD CN+2 SET TIME TO STATUS MAINFRAMES
- AVCD LDN ARMF ADVANCE RUNNING TIME
- * LDN ARTF (NO MULTI-MAINFRAME PROCESSING)
- RJM CPR
- AVC SUBR ENTRY/EXIT
- * UJN AVC4 (ONE SECOND ELAPSED)
- AVCA EQU *-2
- RJM TIM ADVANCE MILLISECOND CLOCK
- AVC1 TLDC CACX,CMT READ CPU 0 EXCHANGE REQUEST
- * UJN AVCX (1 CPU ONLY)
- CX1 EQU *-2
- CRD CM
- LDN 0 CLEAR EXCHANGE REQUEST OUTSTANDING FLAG
- STD T3
- LDD CM+1
- ADD CM+2
- ZJN AVC2 IF NO EXCHANGE REQUEST
- AOD T3
- LDN PCXF PROCESS CPU 0 EXCHANGE REQUEST
- RJM CPR
- AVC2 TLDC CACX+1,CMT READ CPU 1 EXCHANGE REQUEST
- CRD CM
- LDD CM+1
- ADD CM+2
- ZJN AVC3 IF NO EXCHANGE REQUEST
- AOD T3
- LDC 10000+PCXF PROCESS CPU 1 EXCHANGE REQUEST
- RJM CPR
- AVC3 LDD T3
- NJN AVC1 IF EXCHANGE REQUEST OUTSTANDING
- UJN AVCX RETURN
- TIM SPACE 4,20
- ** TIM - UPDATE REAL TIME CLOCK.
- *
- * THE REAL TIME CLOCK IN CM IS UPDATED EVERY MILLISECOND. THIS
- * ROUTINE WHEN CALLED FROM OTHER THAN *AVC* IS USED TO MAINTAIN
- * TIME ACCURACY WITHOUT CALLS TO *CPR*. ON CYBER 180 AND
- * CYBER 170-865/875 MAINFRAMES, THE REAL TIME CLOCK IS READ
- * AFTER EVERY EXCHANGE TO *CPUMTR*, SINCE *CPUMTR* CONTROLS
- * THE CLOCK USING THE CPU CLOCK. BETWEEN EXCHANGES, *MTR*
- * MAINTAINS THE REAL TIME CLOCK IN THE USUAL WAY TO ENSURE
- * ACCURACY DURING PERIODS WHEN *CPUMTR* IS INACTIVE.
- *
- * EXIT (RTCL) UPDATED IN CM IF MILLISECOND OR MORE ELAPSED.
- * (MTRI) = COUNT OF TIMES CLOCK UPDATE MISSED.
- *
- * USES LS, MS, ST, CM - CM+4, TM - TM+4.
- *
- * CALLS ETA.
- TIM5 LDD HN RESET RETURN
- STM TIMX
- UJN TIM1 REENTER LOOP
- TIM6 STD MS
- TLDC /EXPACS/MXP+6,XBP READ (MA), (A6), (B6)
- CRD CM
- LDD CM
- ADD CM+1
- NJN TIMX IF EXCHANGE PACKAGE NOT READY
- LDC RTCL
- CRD TM READ THE MILLISECOND CLOCK
- LDD TM+1
- SBD LS
- ZJN TIM8 IF NO CHANGE IN SECONDS
- PJN TIM7 IF NO OVERFLOW
- ADC 10000
- TIM7 RJM ETA ENABLE TIME ADVANCE
- LDD TM+1 MARK CURRENT SECONDS
- STD LS
- TIM8 LDN PSNI RESET EXCHANGE SWITCH
- STM TIMB
- TIM SUBR ENTRY/EXIT
- TIM1 IAN 14 READ CLOCK
- TIMB PSN NORMAL
- * UJN TIM6 EXCHANGE OUTSTANDING (CPU CLOCK)
- SBD MS
- PJN TIM2 IF NO OVERFLOW
- ADC 10000
- TIM2 ADC -MLSC+35 CYCLES TILL RTCL WRITTEN
- * ADC -MLSC+17 (2X PP SPEED)
- * ADC -MLSC+10 (4X PP SPEED)
- TIMA EQU *-1
- MJN TIMX IF NOT .GE. 1 MILLISECOND ELAPSED
- SHN -12
- ZJN TIM3 IF REMAINDER .LT. 1024 MICROSECONDS
- AOM MTRI COUNT MISSED CLOCK UPDATE
- ISTORE TIMX,(UJN TIM5) SET UP TO LOOP
- TIM3 LDC MLSC
- RAD MS
- AOD TM+4 ADVANCE MILLISECOND CLOCK
- SHN -14
- ZJN TIM4 IF NO OVERFLOW
- RAD TM+3 UPDATE MILLISECONDS ON OVERFLOW
- SHN -14
- RAD TM+2
- TIM4 SOD ST UPDATE SECOND TIMER
- NJN TIM4.1 IF NOT 1 SECOND ELAPSED
- LDN 1 SET INCREMENT FOR *AVT*
- RJM ETA ENABLE TIME ADVANCE
- AOD TM+1 UPDATE SECONDS
- STD LS MARK CURRENT SECONDS
- SHN -14
- RAD TM
- TIM4.1 LDC RTCL UPDATE CLOCK
- CWD TM
- LJM TIMX EXIT
- ETA SPACE 4
- ** ETA - ENABLE TIME ADVANCE.
- *
- * THE UPDATE OF THE DATE AND TIME IS ENABLED, THE
- * NUMBER OF SECONDS TO ADVANCE IT IS ESTABLISHED,
- * AND THE SECOND TIMER IS RESET.
- *
- * ENTRY (A) .EQ. NUMBER OF SECONDS TO ADVANCE TIME.
- *
- * EXIT TIME ADVANCE IS ENABLED.
- ETA SUBR ENTRY/EXIT
- STM AVTC SET SECONDS INCREMENT
- ISTORE AVCA,(UJN AVC4) ENABLE CLOCK UPDATE
- LDC 1000D RESET SECOND TIMER
- STD ST
- UJN ETAX EXIT
- AVT SPACE 4,10
- ** AVT - ADVANCE TIME.
- *
- * ADVANCES THE TIME OF DAY AND DATE IN RESPONSE TO THE REAL
- * TIME CLOCK AND STORES THEM IN CENTRAL MEMORY. ON THE HOUR,
- * THE TIME PROCESSING FUNCTION CODE IS SET IN THE *1MB* CALL
- * WORD.
- *
- * EXIT (PDTL), (JDAL), (TIML), (DTEL) UPDATED IN CMR.
- *
- * USES CN, PD - PD+4(T0 - T0+4), TI - TI+4(CM - CM+4).
- *
- * CALLS CPR.
- AVT2 LDN PDTL WRITE *PDTL* AND *TIML*
- CWD PD
- ADK TIML-PDTL
- CWD TI
- LDD CN
- NJN AVTX IF NOT TOP OF HOUR
- * LDN 0 CLEAR BUFFER ADDRESS
- * STD CN
- LDN ADTF CALL *CPUMTR* TO COMPLETE THE ADVANCE
- RJM CPR
- AVT SUBR ENTRY/EXIT
- LDN PDTL READ *PDTL* AND *TIML*
- CRD PD
- ADK TIML-PDTL
- CRD TI
- LDC 1 ADVANCE SECONDS
- AVTC EQU *-1
- STD CN INITIALIZE TOP OF HOUR FLAG
- RAD PD+4
- LDM AVTC
- SHN 6
- RAD TI+4
- SHN -6
- SBN 1R9+1
- AVT1 MJN AVT2 IF NOT 10 SECONDS
- SHN 6
- ADC 2R0. RESET SECONDS
- STD TI+4
- AOD TI+3 ADVANCE 10 SECONDS
- LPN 77
- SBN 1R6
- MJN AVT1 IF NOT 60 SECONDS
- LDN 100-60D ADVANCE MINUTES, RESET SECONDS
- RAD PD+4
- LDC 2R.0 RESET 10 SECONDS
- STD TI+3
- AOD TI+2 ADVANCE MINUTES
- LPN 77
- SBN 1R9+1
- MJN AVT1 IF NOT 10 MINUTES
- LDN 100+1R0-1R9-1 ADVANCE 10 MINUTES
- RAD TI+2
- SHN -6
- SBN 1R6
- MJN AVT1 IF NOT 60 MINUTES
- LDM PHED+2
- SCN SPTP
- AVTA LMN SPTP SET TIME PROCESSING FUNCTION FOR *1MB*
- * LMN 0 (NO TIME CALL FOR C70 NON-SIMULATION)
- ERRNZ SPTP-1 (ERROR IF TIME FUNCTION VALUE CHANGES)
- STM PHED+2
- LDN 0 CLEAR BUFFER ADDRESS
- STD CN
- LJM AVT2 CALL *CPUMTR* TO COMPLETE THE ADVANCE
- TITLE RECALL CRITERION PROCESSING.
- CRQ SPACE 4,10
- ** CRQ - CHECK RECALL CRITERION.
- *
- * THIS ROUTINE PROCESSED UP TO *MXRC* ENTRIES OF THE RECALL
- * REQUEST QUEUE. EACH ENTRY IS CHECKED TO SEE IF THE
- * RECALL CRITERION HAS BEEN SATISFIED. IF IT HAS, *CPUMTR* IS
- * CALLED TO BRING THE REQUEST OUT OF RECALL.
- *
- * CALLS CPR, RCP.
- CRQ6 LDD CN+2 CHECK REQUEST
- LPN 77
- LMN CRCW-100
- ERRNG CRCW-100 *CRCW* MUST BE .GE. 100
- ZJN CRQ7 IF CPU IN RECALL
- LDC 10000+PRQF
- RJM CPR
- UJN CRQ3 CHECK NEXT REQUEST
- CRQ7 RJM RCP RECALL CPU
- CRQ SUBR ENTRY/EXIT
- LDN MXRC SET MAXIMUM NUMBER OF REQUESTS TO PROCESS
- STD T3
- LDD RC
- LMD RQ
- NJN CRQ4 IF NOT POINTER WORD
- AOD T3
- * THIS CODE IS USED TO RESET THE LIST POINTER TO THE
- * BEGINNING IN THE INFREQUENT EVENT THAT *MTR* TRIES
- * TO USE A BAD POINTER, WHICH IS USUALLY CAUSED BY
- * *CPUMTR* MAKING CHANGES IN THE LIST WHILE *MTR* IS
- * SCANNING IT.
- CRQ2 LDD RQ RESET TO START OF LIST
- CRD CM
- LDD CM+4 SET TO PROCESS FIRST ENTRY
- STD RC
- CRQ3 SOD T3
- MJN CRQX IF LIMIT OF ENTRIES TO PROCESS
- CRQ4 LDD RC
- CRQ5 CRD CM
- STD CN+2
- LDD CM+4 SET NEXT ENTRY
- STD RC
- SCN 17
- ZJN CRQ2 IF END OF LIST
- * THE FOLLOWING LOGIC IS DEPENDENT ON THE RECALL TYPES BEING
- * IN A CERTAIN ORDER.
- ERRNZ PCBF-1 LOGIC REQUIRES THIS VALUE
- ERRNZ PTRF-2 LOGIC REQUIRES THIS VALUE
- ERRNZ PTMF-3 LOGIC REQUIRES THIS VALUE
- LDD CM
- SBN PTMF
- ZJN PTM IF TIMED RECALL
- PJN CRQ2 IF ILLEGAL RECALL CRITERION
- ADN -PCBF+PTMF
- CRQA ZJN PCB IF PROCESS COMPLETION BIT
- * ZJN PCB3 (CME PRESENT)
- MJN CRQ2 IF NOT TIMED RECALL
- PTM SPACE 4,10
- ** PTM - TIMED RECALL PROCESSOR.
- *
- *T, CM 12/ PTMF,36/ RT,12/ LK
- * RT RECALL TIME.
- * LK NEXT RECALL ENTRY.
- PTM LDD TM+2
- SBD CM+1
- NJN PTM1 IF LIMIT PASSED OR NOT REACHED
- LDD TM+3
- SBD CM+2
- NJN PTM1 IF LIMIT PASSED OR NOT REACHED
- LDD TM+4
- SBD CM+3
- PTM1 MJN PTM3 IF NOT TIME TO RECALL REQUEST
- PTM2 LJM CRQ6 RECALL REQUEST
- PTM3 LDD CM
- LMN PTRF
- ZJN PCB2 IF *PTRF* ENTRY PRESENT
- LDD RQ RESET POINTER TO START OF LIST
- STD RC
- LJM CRQX RETURN
- PCB SPACE 4,10
- ** PCB - COMPLETION BIT PROCESSOR.
- *
- *T, CM 12/ PCBF,12/,24/ AD,12/ LK
- * AD ADDRESS OF WORD TO CHECK COMPLETION BIT.
- * LK NEXT RECALL ENTRY.
- PCB LDD CM+2 CHECK COMPLETION BIT
- PCB1 SHN 14
- ADD CM+3
- CRD OR
- LDD OR+4
- LPN 1
- NJN PTM2 IF COMPLETE
- PCB2 LJM CRQ3 CHECK NEXT REQUEST
- * COMPLETION BIT PROCESSOR FOR CME MAINFRAMES.
- PCB3 LDD CM+2 SET R-REGISTER TO UPPER 12 BITS
- SHN 6
- STD OR+1
- SHN -14
- STD OR
- LDC 0 GET UPPER HALF OF MACHINE SIZE/100B
- PCBA EQU *-1
- SBD OR
- MJN PCB2 IF ADDRESS .GT. MACHINE SIZE
- NJN PCB4 IF ADDRESS .LT. MACHINE SIZE
- LDD CM+3
- SHN -6
- ADD OR+1
- STD T0
- LDC 0 GET LOWER HALF OF MACHINE SIZE/100B
- PCBB EQU *-1
- SBD T0
- MJN PCB2 IF ADDRESS .GT. MACHINE SIZE
- ZJN PCB2 IF ADDRESS .EQ. MACHINE SIZE
- PCB4 LRD OR LOAD R-REGISTER
- LDN 40 SET R-REGISTER BIT IN A
- UJN PCB1 READ COMPLETION ADDRESS
- TITLE PROCESS HARDWARE ERRORS.
- PHE SPACE 4,20
- ** PHE - PROCESS HARDWARE ERRORS.
- *
- * EXIT (A) = 0 IF *1MB* CALL NOT REQUIRED.
- * = 1 IF *1MB* WAS CALLED OR WAS ALREADY CALLED.
- *
- * USES CP, T4, CM - CM+4, CS - CS+4.
- *
- * CALLS FTN, ODW, PSE.
- *
- * NOTE *1MB* IS CALLED IF ONE OR MORE OF THE FOLLOWING
- * CONDITIONS HAVE BEEN DETECTED WHEN CHECKING THE
- * S/C REGISTERS AND THE *1MB* INHIBIT BIT IS NOT SET.
- * 1) A UNIQUE SINGLE BIT SECDED ERROR HAS OCCURRED.
- * 2) ERRORS OTHER THAN UNIQUE SINGLE BIT SECDED
- * ERRORS HAVE OCCURRED.
- * 3) TOP-OF-HOUR PROCESSING HAS BEEN SPECIFIED.
- *
- * *1MB* IS CALLED FOR MAINTENANCE REGISTER PROCESSING
- * AND TIME PROCESSING IF THE MACHINE IS A CYBER 180.
- PHE SUBR ENTRY/EXIT
- * CHECK CYBER 180 MAINTENANCE REGISTERS.
- *
- * NOTE THE FOLLWING CODE IS ALTERED BY *PRESET* TO PROCESS
- * HARDWARE ERRORS ON VARIOUS MAINFRAMES.
- PHEA LDC ** (ADDRESS OF *DFT* CONTROL WORD)
- CRD CM READ *DFT* CONTROL WORD
- PHEF LDC ** (ADDRESS OF NOS REQUEST HEADER)
- CRD CS
- LDD CM+4
- SHN 21-2
- MJN PHE0 IF NOT DEDICATED *DFT*
- LDD CM+4
- LPN 1
- UJN PHE3 CHECK FOR *1MB* CALL
- PHE0 SCF PHEX,MR IF CHANNEL RESERVED BY ANOTHER PP
- FNC /IOU/MRSS,MR SUMMARY STATUS
- IJM PHE1,MR IF CHANNEL RESPONDED TO FUNCTION
- DCN MR+40
- CCF *,MR
- UJN PHEX RETURN
- PHE1 ACN MR
- IAN MR READ SUMMARY STATUS
- DCN MR+40
- CFM PHE2,MR IF NO ERRORS OCCURRED
- LDN 1 ERROR IN READING SS REGISTER
- PHE2 CCF *,MR
- * UJN PHE3 PROCESS *1MB* CALL
- * ACCESS CYBER 70, 170, 700 SERIES AND 865/875 S/C REGISTER.
- PHEE RMT
- LOC PHEA
- LDC FCTE TEST ERROR FUNCTION
- * LDC FCTB (CYBER 70 NON-SCR SIMULATION)
- FJM PHEX,CH IF CHANNEL HUNG FULL
- * FJM PHEX,15 (CYBER 70)
- RJM ODW
- UJN PHE3 SAVE ERROR STATUS
- LOC *O
- PHEE RMT
- * SAVE ERROR PRESENT STATUS.
- * CHECK IF *1MB* CALL IS NEEDED.
- PHE3 STD T0 SAVE ERROR STATUS
- PHEG ADD CS+4 INCLUDE *DFT* REQUEST PRESENT STATUS
- * PSN (NON-CYBER 180 MAINFRAME)
- ADM PHED+2
- ZJN PHE4.1 IF *1MB* CALL NOT REQUIRED
- LDD SC CHECK INHIBIT BIT
- CRD CS
- LDD CS
- SHN 0-13
- NJN PHE4.1 IF *1MB* ALREADY CALLED
- LDD T0 GET ERROR STATUS
- UJN PHE5 PROCESS CYBER 180 ERROR
- * ZJN PHE5 (CYBER 170, 865/875 ERROR/TIME PROCESSING)
- * UJN PHE5 (CYBER 70 AND NO SIMULATION)
- PHEB EQU *-1
- RJM PSE PROCESS SINGLE BIT ERRORS
- LDC FCTE TEST FOR OTHER ERRORS
- RJM ODW
- STD T4
- LDC FCCL+DSBL ENABLE SINGLE BIT LOGGING
- RJM ODW
- UJN PHE4 TEST FOR NEED TO CALL *1MB*
- * PSN (CYBER 176)
- PHEC EQU *-1
- LDC FCCL+DLSL ENABLE 176 LCME SINGLE BIT LOGGING
- RJM ODW
- PHE4 LDM PHED+2 TEST FOR NEED TO CALL *1MB*
- ADD T4
- NJN PHE5 IF TIME/ERROR PROCESSING REQUIRED
- PHE4.1 LJM PHEX RETURN
- * CALL *1MB* VIA *1MP*.
- PHE5 LDD FT SET INHIBIT BIT
- RAD CS
- LDD SC
- CWD CS
- LDD NC SYSTEM CONTROL POINT NUMBER
- STD CP
- LDD OF PP0 OUTPUT REGISTER ADDRESS
- ADN 1
- CWM PHED,ON WRITE PP CALL TO MESSAGE BUFFER
- LDN 0
- STD CM+1
- MONITOR RPPM REQUEST PP
- EXECUTE 1MP,=
- * LDN SPLG RESTORE LOGGING FUNCTION
- ERRNZ SPLG CODE DEPENDS ON VALUE
- STM PHED+2
- STM PHED+4
- LDN 1 SET ERROR FOUND
- UJN PHE4.1 RETURN
- PHED VFD 18/3L1MP,6/**,12/0,24/0
- PSE SPACE 4,10
- ** PSE - PROCESS SINGLE BIT ERRORS.
- *
- * ENTRY (PSEA) = CORRECT MAINFRAME TABLE INDEX.
- *
- * CALLS BIS, ODW.
- PSE SUBR ENTRY/EXIT
- LDC FCSB+DSBL DISABLE CM SINGLE BIT LOGGING
- RJM ODW
- LDC FCTB+SECD TEST FOR SECDED ERROR
- RJM ODW
- ZJN PSE1 IF NO SECDED ERROR
- LDC FCTB+SDSC TEST FOR DOUBLE BIT ERROR
- RJM ODW
- NJN PSE1 IF DOUBLE BIT ERROR
- PSEA LDN 0 PASS MAINFRAME TABLE INDEX
- * LDN 1 (CYBER 176)
- RJM BIS SEARCH FOR MATCHING IDENTIFIER
- PSE1 UJN PSEX RETURN
- * PSN (CYBER 176)
- PSEB EQU *-1
- * PROCESS CYBER 176 LCM ERRORS.
- LDC FCSB+DLSL DISABLE LCME SINGLE BIT LOGGING
- RJM ODW
- LDC FCTB+LSCD TEST FOR LCME SECDED ERROR
- RJM ODW
- ZJN PSEX IF NO LCME SECDED ERROR
- LDC FCTB+LDSC TEST FOR LCME DOUBLE SECDED ERROR
- RJM ODW
- NJN PSE2 IF DOUBLE BIT ERROR
- LDN UIDL ADD OFFSET FOR LCME ID TABLE
- RAM BISD
- LDN 2 LOAD IDENTIFIER FOR 176 LCME
- RJM BIS SEARCH FOR MATCHING IDENTIFIER
- LCN UIDL RESTORE OFFSET FOR CM ID TABLE
- RAM BISD
- PSE2 LJM PSEX EXIT
- ODW SPACE 4,10
- ** ODW - OUTPUT DESCRIPTOR WORD.
- *
- * ENTRY (A) = DESCRIPTOR WORD.
- *
- * EXIT (A) = SCR REPLY WORD.
- ODW SUBR ENTRY/EXIT
- OAN CHSC OUTPUT DESCRIPTOR WORD
- * OAN 15 (CYBER 70)
- ODWA EQU *-1
- IAN CHSC INPUT SCR REPLY WORD
- * IAN 15 (CYBER 70)
- ODWB EQU *-1
- UJN ODWX EXIT
- BIS SPACE 4,10
- ** BIS - BUILD ID AND SEARCH TABLE.
- *
- * ENTRY (A) = 0 - BUILD ID FOR CYBER 170 AND 865/875.
- * 1 - BUILD ID FOR 176 CM.
- * 2 - BUILD ID FOR 176 LCME.
- *
- * EXIT (CM-CM+4) = ERROR COUNTS IN *CECL* UPDATED.
- *
- * USES T1, T2, T4, T6, T7, CM - CM+4, CN - CN+4, CS - CS+4.
- *
- * CALLS ODW.
- BIS8 AOD CM+4 INITIALIZE ID ERROR COUNT
- LDD T6 STORE UNIQUE ID INTO TABLE
- SHN 14
- ADD T4
- CWD CM
- LDD T2 SET APPROPRIATE FUNCTION BIT
- LMN 2
- ZJN BIS9 IF LCME SECDED ERROR
- LDN SPCS-SPLS SET CM SECDED ERROR FUNCTION BIT
- BIS9 ADN SPLS SET LCME SECDED ERROR FUNCTION BIT
- RAM PHED+2
- BIS SUBR ENTRY/EXIT
- STD T2 SAVE ID BUILD TYPE
- LDM TBIS,T2 SAVE FWA OF ID BUILD ROUTINE
- STD T7
- LDN ZERL CLEAR FIELD FOR BUILDING ID
- CRD CM
- * BUILD ID FOR APPROPRIATE MACHINE.
- LDN CM INITIALIZE ID BUILD ADDRESS
- STD T6
- BIS1 AOD T7
- LDI T7 GET NEXT SCR WORD INFORMATION
- ZJN BIS2 IF ID BUILD COMPLETE
- STM BISA SET APPROPRIATE MASK FOR SCR BYTES
- AOD T7
- LDI T7 GET SHIFT COUNT
- LPN 77
- ADC SHNI BUILD SHIFT INSTRUCTION
- STM BISB
- LDI T7 GET SCR WORD FROM TABLE AND READ
- SHN -6
- LPN 37
- IFNE FCRD,0,1 (ADJUST IF READ FUNCTION CHANGES)
- ADC FCRD
- RJM ODW
- LPC *
- BISA EQU *-1 MASK OFF DESIRED SCR BITS
- SHN 0
- BISB EQU *-1 POSITION FOR ID BIT MERGE
- RAI T6 MERGE ID BITS
- LDI T7 CONTINUE ID BUILD IN APPROPRIATE BYTE
- SHN 0-13
- RAD T6
- UJN BIS1 GET NEXT SCR WORD
- * SCAN UNIQUE ID TABLE BACKWARDS TO SEE IF
- * THERE IS ALREADY AN ENTRY FOR THIS ERROR.
- BIS2 LDN UIDL UNIQUE ID TABLE LENGTH
- STD T1
- BIS3 SOD T1 DECREMENT CURRENT ENTRY OFFSET
- MJN BIS5 IF SCAN COMPLETE
- ADC ** FWA OF UNIQUE ID TABLE
- BISC EQU *-1
- BISD ADN 0 ADD OFFSET FOR APPROPRIATE ID TABLE
- CRD CN
- STD T4 STORE UNIQUE ID TABLE ADDRESS
- SHN -14
- STD T6
- LDD CN TEST IF ENTRY IS AVAILABLE
- ADD CN+1
- ADD CN+2
- NJN BIS4 IF LOCATION CONTAINS AN IDENTIFIER
- LJM BIS8 IF LOCATION IS AVAILABLE
- BIS4 LDD CM TEST IF BYTE 0 MATCHES
- LMD CN
- NJN BIS3 IF NO MATCH
- LDD CM+1 TEST IF BYTE 1 MATCHES
- LMD CN+1
- NJN BIS3 IF NO MATCH
- LDD CM+2 TEST IF BYTE 2 MATCHES
- LMD CN+2
- NJN BIS3 IF NO MATCH
- * THE NEWLY-BUILT IDENTIFIER MATCHES A TABLE ENTRY.
- LDN 77
- LMD CN+4
- ZJN BIS5 IF REACHED THRESHOLD
- AOD CN+4 INCREMENT COUNTER
- LDD T6 REWRITE UPDATED ID AND COUNT
- SHN 14
- ADD T4
- CWD CN
- * TEST WHICH RANK AND/OR SECDED BITS TO CLEAR.
- BIS5 AOD T7 ISSUE SECDED CLEARING FUNCTION(S)
- LDI T7
- RJM ODW
- AOD T7
- BISE LDI T7
- * UJN BIS6 (CYBER 170 OR 865/875)
- RJM ODW SET C176 CM/LCME RANK II CLEAR
- AOD T7
- LDI T7 CLEAR C176 CM/LCME RANK II CLEAR
- RJM ODW
- BIS6 LDD T2 INCREMENT APPROPRIATE ERROR COUNT
- SHN -1
- ADN CM+3
- STD T2
- LDK CECL
- CRD CM
- LDI T2
- LMC 7777
- ZJN BIS7 IF CM/LCME ERROR COUNT THRESHOLD REACHED
- AOI T2
- LDK CECL
- CWD CM UPDATE *CECL*
- BIS7 LJM BISX RETURN
- * TBIS - TABLE OF ID BUILD ENTRY POINTS.
- TBIS BSS 0
- LOC 0
- CON BISF-1 BUILD ID FOR LOWER C170 CM.
- CON BISF-1 BUILD ID FOR C176 CM.
- CON BISG-1 BUILD ID FOR C176 LCME.
- LOC *O
- * THE TABLE FIELDS BELOW CONTAIN THE FOLLOWING INFORMATION.
- *
- * 12/MASK, 1/INCR, 5/SCR WORD, 6/SHIFT.
- * WHERE INCR = 0, IF NO INCREMENT TO NEXT ID CELL.
- * = 1, IF INCREMENT REQUIRED.
- * SHIFT = BIT ALIGNMENT NEEDED TO MERGE SCR BITS
- * INTO ID.
- *
- * FOLLOWING THE TERMINATOR FOR EACH ID TYPE ARE THE
- * ERROR-CLEARING FUNCTION CODES TO BE ISSUED TO THE SCR.
- * EACH FUNCTION USES 12 BITS.
- BISF BSS 0 C176 CM ID INFORMATION
- VFD 12/7777,1/1,5/LCMW,6/0
- VFD 12/77,1/0,5/CMAW,6/6
- VFD 12/7700,1/1,5/SYNW,6/-6
- VFD 12/60,1/0,5/SYNW,6/6
- CON 0 C176 CM ID BUILD TERMINATOR
- CON FCCL+SECD
- CON FCSB+CCRT
- CON FCCL+CCRT
- BISFL EQU *-BISF LENGTH OF TABLE
- *BISF BSS 0 C170 CM ID INFORMATION
- * VFD 12/6000,1/0,5/CSEW,6/0
- * VFD 12/77,1/0,5/CMAW,6/4
- * VFD 12/7400,1/1,5/SYNW,6/-10
- * VFD 12/360,1/0,5/SYNW,6/4
- * CON 0 C170 ID BUILD TERMINATOR
- * CON FCCL+SECD
- * CON 0 TERMINATOR FOR C170 CLEARING FUNCTIONS
- * CON 0
- BISG BSS 0 C176 LCME ID INFORMATION
- VFD 12/377,1/0,5/LSYW,6/4
- VFD 12/1400,1/0,5/LERW,6/-6
- VFD 12/60,1/1,5/LCAW,6/-4
- VFD 12/17,1/0,5/LCAW,6/10
- CON 0 C176 LCME ID BUILD TERMINATOR
- CON FCCL+LSCD
- CON FCSB+LCRT
- CON FCCL+LCRT
- TITLE PP REQUEST PROCESSING.
- *** PP FUNCTION REQUESTS.
- *
- * PP FUNCTION REQUESTS ARE MADE TO *MTR* BY PLACING
- * THE FUNCTION CODE IN BYTE 0 OF THE PP-S OUTPUT REGISTER.
- * WHEN THE REQUEST IS COMPLETED, *MTR* CLEARS BYTE 0 OF
- * THE OUTPUT REGISTER.
- SPACE 4,10
- ** PP REQUEST PROCESSOR.
- * NOTE - FOLLOWING CODE MUST BE IN ORDER.
- HNG SPACE 4
- ** HNG - HANG PPU AND DISPLAY MESSAGE
- HNGB DATA 7777 A REGISTER SAVE AREA
- HNG CON ** ADDRESS OF CALLER
- HNG1 STM HNGB SAVE (A)
- LDD OA
- ADN 6
- CRD CN
- LDN PDTL SET PACKED DATE AND TIME
- CRD CM
- LDC 2RHN ADD *HNG/* TO PACKED DATE/TIME
- STD CM
- LDC 2RG/
- STD CM+1
- LMD CN+1
- NJN HNG2 IF INITIAL DETECTION OF HUNG PP
- LDD CM
- LMD CN
- ZJN HNG3 IF NOT INITIAL DETECTION OF HUNG PP
- HNG2 LDD OA
- ADN 6
- CWD CM
- LDD OA ADD PP NAME TO *HUNG PP* MESSAGE
- SBN 1
- CRD CM
- LDD CM
- STM HNGC
- LDD CM+1
- SCN 77
- STM HNGC+1
- HNG3 LDC MS2W+** DISPLAY SYSTEM CP MESSAGE
- HNGD EQU *-1
- CWM HNGA,TR
- UJN DSD1 RETURN
- HNGA DATA H*HUNG PP - *
- HNGC DATA C*XXX* NAME OF HUNG PP
- DSD SPACE 4,10
- ** DSD - PROCESS *DSD* REQUEST.
- DSD LDC 7000 CHECK REQUEST
- RAD OR
- SHN 21-11
- MJN DSD1 IF PREVIOUSLY PROCESSED
- LDD OR
- SBN CPUM
- MJN PPR1 IF MTR FUNCTION
- LDD OA WRITE *OR* WITH CLEARED INTERLOCK
- CWD OR
- RJM CPR PROCESS CPU FUNCTION
- DSD1 UJN FNR FUNCTION RETURN
- PPR SPACE 4,10
- ** PPR - PROCESS PP REQUEST.
- *
- * ENTRY (A) = REQUEST.
- * (OA) = PP OUTPUT REGISTER ADDRESS.
- * (OR - OR+4) = PP OUTPUT REGISTER.
- *
- * EXIT TO FUNCTION PROCESSOR WITH (A) = (OA).
- PPR SBN CPUM
- PPRA EQU *-1
- * UJN MSC (STEP MODE)
- PJN FNR1 IF NOT AN *MTR* FUNCTION
- PPR1 LDM TPPR,OR SET FUNCTION PROCESSOR
- STD T8
- LDD OA
- LJM 0,T8 PROCESS FUNCTION
- FNZ SPACE 4
- ** FNZ - FUNCTION RETURN TO CLEAR OUTPUT REGISTER.
- FNZ LDD OA CLEAR OUTPUT REGISTER
- CWD ZR
- * UJN FNR
- FNR SPACE 4
- ** FNR - FUNCTION RETURN.
- FNR RJM CCP CHECK CENTRAL PROGRAM
- FNR1 LJM MTR RETURN TO MAIN LOOP
- FNC SPACE 4
- ** FNC - FUNCTION RETURN TO CLEAR UPPER BYTE OF *OR*.
- FNC LDN 0
- FNC1 STD OR
- LDD OA
- CWD OR
- UJN FNR FUNCTION RETURN
- MSC SPACE 4
- ** MSC - MONITOR STEP CONTROL.
- MSC LDD OA READ INPUT REGISTER
- SBN 1
- CRD CM
- LDN OR
- RJM CFS CHECK FOR STEP CRITERION
- NJN MSC5 IF STEP CRITERION NOT MET
- LDC 7777
- * LDC 0 (STEP REQUESTED BY *DSD*)
- MSCA EQU *-1
- NJN FNR IF NOT STEPPED
- LDD OA
- SBD OF
- LMC ** (NEXT PP TO STEP)
- MSCB EQU *-1
- ZJN MSC4 IF THIS PP
- RJM SNP SET NEXT PP TO STEP
- MSC3 UJN FNR IGNORE REQUEST
- MSC4 LCN 0 RESET STEP FLAG
- STM MSCA
- LDN 10 ADVANCE PP
- RAM MSCB
- MSC5 RJM TIM UPDATE TIME
- RJM SNP SET NEXT PPU TO STEP
- * PROCESS FUNCTION.
- LDD OR CHECK FUNCTION
- SBN CPUM
- PJN MSC6 IF CPU FUNCTION
- RJM TIM UPDATE TIME
- LJM PPR1 PROCESS REQUEST
- MSC6 LDD OR
- SHN 0-11
- LMN 1
- NJN MSC3 IF NOT *STEP* ONLY
- LDD OR CLEAR FLAGS
- LPC 177
- STD OR
- LDD OA
- CWD OR
- RJM CPR
- UJN MSC3 COMPLETE FUNCTION
- SNP SPACE 4
- ** SNP - SET NEXT PP TO STEP.
- *
- * ENTRY (MSCB) = CURRENT PP.
- *
- * EXIT (MSCB) = NEXT PP.
- *
- * USES T1, T2, T4, CM - CM+4, CN - CN+4.
- *
- * CALLS CFS.
- SNP5 LDN 20
- UJN SNP1 RESET PP 2
- SNP SUBR ENTRY/EXIT
- LDN 1 SET PP COUNT
- STD T1
- LDM MSCB SET PP
- SNP1 STD T2
- SNP2 STM MSCB
- SHN -3
- STD T4 SAVE PP NUMBER
- LMD NP
- ZJN SNP5 IF LAST PP
- AOD T1 ADVANCE PP COUNT
- LMD NP
- SNP3 ZJN SNPX IF ALL PP-S CHECKED
- LDD T2 READ INPUT REGISTER
- ADD OF
- CRD CN
- SBN 1
- CRD CM
- LDD CM
- ZJN SNP4 IF PP NOT ASSIGNED
- LDD CN
- ZJN SNP4 IF NO FUNCTION REQUEST
- LDN CN
- RJM CFS CHECK FOR STEP
- NJN SNP4 IF STEP CRITERION NOT MET
- LDM TREA,T4
- LMC PPR
- ZJN SNP3 IF NO REENTRY PROCESSING
- SNP4 LDN 10 ADVANCE PP
- RAD T2
- UJN SNP2 LOOP
- TITLE PP REQUEST FUNCTION PROCESSORS.
- ** NOTE - EXIT CONDITION REFERENCES TO (OR - OR+4) SPECIFY
- * THE STATUS OF THE PP OUTPUT REGISTER IN CENTRAL MEMORY.
- * IN ALL CASES, (OR) = 0. IF A BYTE IS NOT SPECIFIED,
- * THAT BYTE IS NOT CHANGED.
- * THE DIRECT LOCATIONS *OR - OR+4* MAY DIFFER IN CONTENT
- * FROM THE ACTUAL OUTPUT REGISTER.
- ASCM SPACE 4,10
- *** *ASCM* IS A *PPR* FUNCTION. IT IS USED TO TELL PP RESIDENT
- * ROUTINE *PLL* THAT THE LIBRARY HAS BEEN SEARCHED DURING
- * ASSIGNMENT OF THE PP. NO *MTR* PROCESSING IS REQUIRED.
- PPR ASCM,FNR1
- BOTM SPACE 4,10
- *** *BOTM* IS A *PPR* FUNCTION. IT IS USED TO TELL PP RESIDENT
- * ROUTINE *FTN* TO LOAD A BOOTSTRAP PROGRAM. NO *MTR*
- * PROCESSING IS REQUIRED.
- PPR BOTM,FNR1
- CCHM SPACE 4,10
- *** CCHM - CHECK CHANNEL.
- *
- * ASSIGN CHANNEL IF NOT IN USE.
- *
- * ENTRY
- *T, OR 12/ CCHM,6/ ,1/ C,5/ CH,36/
- * C SET IF CONCURRENT CHANNEL.
- * CH CHANNEL NUMBER.
- *
- * EXIT
- *T, OR 12/ 0,12/ CH,12/ ST,24/
- * CH CHANNEL ASSIGNED IF ST = 1.
- * BIT 2**5 OF CH SET IF DOWN CHANNEL IN USE BY ANOTHER
- * MAINTENANCE USER.
- * ST = 1 IF CHANNEL ASSIGNED.
- * ST = 0 IF CHANNEL NOT ASSIGNED.
- PPR CCHM
- LDD OR+1 CHECK CHANNEL
- RJM TCH
- ZJN CCH3 IF FREE
- MJN CCH2 IF DOWN
- CCH1 LJM FNZ REJECT FUNCTION
- CCH2 SHN 5-21
- LPN 37
- NJN CCH1 IF DOWN CHANNEL IN USE
- LDD T2
- RJM GCE GET CHANNEL ASSIGNMENT TABLE ENTRY
- ZJN CCH3 IF CHANNEL IS NOT ASSIGNED TO A JOB
- LMD CN
- NJN CCH6 IF CHANNEL IS NOT ASSIGNED TO THIS JOB
- CCH3 LDN 1 SET OUTPUT REGISTER
- STD OR+2
- * ENTRY FROM *RCHM*.
- CCH4 LDD T2 SET CHANNEL
- LPN 37
- STD OR+1
- LDD PP SET ASSIGNMENT TO THIS PP
- STD CF SET FLAG FOR CHANNEL UPDATE
- LMM TCHS,T2
- LPC -4000
- STM TCHS,T2
- CCH5 LJM FNC COMPLETE FUNCTION
- CCH6 LDD OR+1 INDICATE DOWN CHANNEL IN USE
- SCN 40
- LMN 40
- STD OR+1
- UJN CCH5 COMPLETE FUNCTION
- CDBM SPACE 4,15
- *** CDBM - CHECK DAYFILE BUSY.
- *
- * CHECK STATUS OF SPECIFIED DAYFILE.
- *
- * ENTRY
- *T, OR 12/ CDBM, 12/ BC, 12/ MO, 12/ CP+SF, 12/ DI
- * BC BYTE COUNT OF MESSAGE.
- * MO MESSAGE OPTION.
- * CP CONTROL POINT ADDRESS.
- * SF = 0 TO WAIT ON SPACE IN DAYFILE BUFFER.
- * = 1 TO WAIT UNTIL PP DUMP BUFFER NOT BUSY.
- * DI DAYFILE INDEX.
- * 0 = JOB DAYFILE.
- * 1 = MASTER DAYFILE.
- * 2 = ACCOUNT DAYFILE.
- * 3 = ERRLOG DAYFILE.
- * 4 = MAINLOG DAYFILE.
- *
- * EXIT (SUBFUNCTION (SF) REQUEST SATISFIED)
- *T, OR 12/ DFMM, 12/ BC, 12/ MO, 12/, 12/
- PPR CDBM
- LDD OR+3 CHECK FOR MOVE
- SHN 0-7
- LMD MM.0
- ZJP FNR IF CP SCHEDULED FOR MOVE
- LDD OR+3 CHECK REQUEST
- LPN 1
- ZJN CDB1 IF WAITING ON SPACE IN BUFFER
- LDN DFPP
- CRD CS
- LJM CDB5 CHECK DUMP BUFFER BUSY
- CDB1 LDD OR+4
- ZJN CDB2 IF JOB DAYFILE
- SHN 1
- CDBA ADC ** (FWA-3 OF DAYFILE POINTERS)
- ADD OR+4
- UJN CDB3 CONTINUE PROCESSING
- CDB2 LDD OA REREAD INPUT REGISTER
- SBN 1
- CRD CM
- LDD CM+1 EXTRACT CONTROL POINT NUMBER
- LPN 37
- SHN 7
- CDBB ADN FLSW GET RA FROM FL CONTROL WORD
- * ADN FLSW+1 (CME PRESENT)
- CRD CM
- LRD CM+1
- LDD CM+3 READ BUFFER POINTERS FROM NFL
- SHN 6
- SBN DAPN
- CDB3 CRD CM
- ADN 1
- CRD CN
- ADN 1
- CRD CS
- LDD CN+4 OUT - IN
- SBD CM+4
- ZJN CDB6 IF BUFFER EMPTY
- PJN CDB4 IF OUT .GT. IN
- ADD CN+2 ADD BUFFER LENGTH
- CDB4 SBN MXML
- PJN CDB6 IF SPACE IN BUFFER
- CDB5 LDD CS+4
- LPN 1
- ZJN CDB7 IF DAYFILE BUSY
- CDB6 LDC DFMM+5000 HAVE PP REISSUE REQUEST WITHOUT DELAY
- STD OR
- LDD OA STORE OUTPUT REGISTER
- CWD OR
- CDB7 LJM FNR RETURN
- DCHM SPACE 4,10
- *** DCHM - DROP CHANNEL.
- *
- * RELEASE CHANNEL FROM ASSIGNMENT.
- *
- * ENTRY
- *T, OR 12/ DCHM,6/ 0,1/ C,5/ CH,36/
- * C SET IF CONCURRENT CHANNEL SPECIFIED IN CH.
- * CH CHANNEL TO DROP.
- *
- * EXIT
- *T, OR 60/ 0
- PPR DCHM
- LDD OR+1 CHECK LEGAL CHANNEL NUMBER
- RJM VCN
- LDD PP
- LMM TCHS,T2
- LPN 37
- ZJN DCH1 IF CHANNEL ASSIGNED TO THIS PP
- LDD PP
- SBN 1
- NJN DCH2 IF NOT *DSD*
- DCH1 LDD OA CLEAR OUTPUT REGISTER
- STD CF SET FLAG FOR CHANNEL UPDATE
- CWD ZR
- LDM TCHS,T2
- LPC 140 UPDATE CHANNEL RESERVATION TABLE
- STM TCHS,T2
- UJN CDB7 RETURN
- DCH2 RJM HNG HANG PP
- DRCM SPACE 4
- *** DRCM - DRIVER RECALL CPU.
- *
- * PERFORMS AN RCLM IF THE JOB IS IN RECALL. THIS IS USED BY
- * THE TAPE AND MASS STORAGE DRIVERS WHO WRITE THIS FUNCTION TO
- * THEIR OUTPUT REGISTER WITHOUT WAITING FOR AN ACCEPT.
- *
- * ENTRY
- *T, OR 12/ DRCM,48/
- *
- * EXIT
- *T, OR 60/ 0
- PPR DRCM
- CWD ZR CLEAR OUTPUT REGISTER
- LDD PP GET ASSIGNED CP/PCP
- SHN PPXES
- TADC ACPP,PPX
- CRD CM
- LDD CM+4 SET CP ADDRESS
- STD CN+2
- ADN STSW CHECK RECALL STATUS
- CRD CS
- DCRA ADN FLSW-STSW
- * ADN FLSW+1-STSW (CME PRESENT)
- CRD CM
- LDD CS
- SHN -11
- LMN XCPS
- ZJN DRC1 IF *X* STATUS
- LDD CN+2
- ADN CWQW
- CRD CM
- LDD CM+1
- SHN 21-12
- PJN DRC2 IF TO RECALL CPU
- UJN DRC4 RETURN
- DRC1 LRD CM+1
- LDD CM+3 CHECK (RA+1)
- SHN 6
- ADN 1
- CRD CM
- LDD CM
- NJN DRC4 IF (RA+1) .NE. 0
- DRC2 RJM RCP RECALL CPU
- DRC4 LJM FNR RETURN
- DSWM SPACE 4,70
- *** DSWM - DRIVER SEEK WAIT.
- *
- * CAUTION, STORAGE MOVE MAY OCCUR DURING *DSWM* PROCESSING.
- *
- * ENTRY
- *T, OR 12/ DSWM,12/,12/,12/ F,12/
- *T, MB 12/ T4,12/ T5,12/ T6,12/ T7,12/ CHRV
- *T, MB+1 12/ LU,6/ SF,6/ PU,12/ PC,12/ PT,12/ PS
- * F = SUBFUNCTION CODE.
- * 0 = DROP CHANNEL.
- * 1 = REQUEST CHANNEL, AND EQUIPMENT IF READSYS.
- * 2 = SEEK IN PROGRESS.
- * 4 = UNIT SWITCH.
- * 10 = DRIVE RESERVE.
- * 11 = REQUEST CHANNEL, UNIT, AND EQUIPMENT IF READSYS.
- * 20 = WRITE IN PROGRESS (ISD ONLY).
- * 2000 = CONTROLLER RESERVED.
- * T4 = CHANNEL.
- * T5 = EQUIPMENT.
- * T6 = LOGICAL TRACK.
- * T7 = LOGICAL SECTOR.
- * CHRV = WORD *CHRV*.
- * LU = LOGICAL UNIT NUMBER.
- * SF = SEEK TYPE (USED ON ISD DEVICES ONLY).
- * 0 = NORMAL SEEK.
- * 1 = WRITE/SEEK.
- * 2 = READ/SEEK.
- * 3 = CHECK WRITE COMPLETE.
- * PU = PHYSICAL UNIT NUMBER.
- * PC = CYLINDER ADDRESS.
- * PT = PHYSICAL TRACK.
- * PS = PHYSICAL SECTOR.
- *
- * HANG CONDITIONS -
- *
- * BAD CHANNEL NUMBER.
- * EQUIPMENT *EQ* NOT MASS STORAGE.
- * CHANNEL NOT ASSIGNED WHEN BIT 0 OF *CHRV* .NE. 0.
- *
- *
- * EXIT
- *T, OR 12/ 0,12/ RF,12/ CC,12/ ST,12/ T4
- *T, MB 60/ SAME AS INPUT WITH *CHRV* UPDATED.
- *T, MB+1 60/ *PU* UPDATED IF READSYS, *SF* SET TO 3 IF SUBFUNCTION 20
- * RF = RELEASE FUNCTION.
- * A DRIVE RELEASE FUNCTION IS RETURNED IF SEEK WAITS
- * ARE OUTSTANDING ON THE CHANNEL FOR SHARED DEVICES.
- * AN OPERATION COMPLETE IS RETURNED IN ALL OTHER CASES.
- * THE OPERATION COMPLETE RELEASES BOTH THE DRIVE AND
- * THE CONTROLLER.
- * CC = 1, IF ISD AND FUNCTION WAS *WRITE IN PROGRESS*.
- * 12, OTHERWISE.
- * ST = (CHRV), IF OK TO SEEK.
- * COMPLEMENT OF EC, IF ERROR DETECTED.
- * EC = CRSE, IF CONTROLLER RESERVE TIME OUT.
- * EC = CHFE, IF INCORRECT *DSWM* FUNCTION NUMBER.
- * EC = DRVE, IF DRIVE RESERVE TIMEOUT.
- * EC = LNRE, IF LOGICAL NOT READY.
- *
- * RE-ENTRY
- *T, OR 12/ DSWM,12/ RP,12/ CPM,12/ CH,5/ CP,7/ FG
- * RP = REENTRY PROCESSOR ADDRESS.
- * CPM = CONTROL POINT/PSEUDO-CONTROL POINT FOR MOVE CHECK.
- * CH = CHANNEL(S) TO REQUEST.
- * CP = CONTROL POINT NUMBER FOR PRIVILEGES CHECK.
- * FG = FLAGS.
- * 1 = REQUEST FOR CHANNEL AND UNIT ON NEW SEEK.
- * 2 = SEEK WAIT FLAG.
- * 4 = EQUIPMENT IS A SHARED DEVICE.
- * 10 = SEEK OUTSTANDING ON SHARED DEVICE.
- * 20 = CALLER SELECTED CHANNEL.
- * 40 = ISD DEVICE FLAG.
- * 100 = WRITE IN PROGRESS (ISD ONLY).
- *T, MB SAME AS INPUT WITH (T4) = ALLOWABLE CHANNEL(S).
- SPACE 4,20
- ** MAXIMIZATION OF SEEK OVERLAP.
- *
- * THE THROUGHPUT OF THE MASS STORAGE SUBSYSTEM CAN BE ENHANCED
- * BY MAXIMIZING THE SEEK OPERATIONS WHICH ARE PERFORMED IN
- * PARALLEL WITH DATA TRANSFERS, IE. SEEK OVERLAP. IN ORDER TO
- * MAXIMIZE SEEK OVERLAPS WE MUST GIVE PRIORITY TO THE
- * INITIATION OF NEW SEEKS, WHICH WILL START THE POSITIONER
- * MOVING. WE SHOULD NOT GIVE THE CHANNEL TO A PP WHICH IS
- * CHECKING FOR THE COMPLETION OF A SEEK OPERATION IF ANOTHER
- * PP IS WAITING TO INITIATE A SEEK. DOING SO WOULD TEND TO
- * SERIALIZE THE SEEK AND DATA TRANSFER OPERATIONS.
- *
- * TO GIVE PRIORITY TO THE ASSIGNMENT OF THE CHANNEL TO INITIAL
- * SEEK OPERATIONS, *DSWM* KEEPS TRACK OF THE FOLLOWING.
- * 1) FOR EACH CHANNEL REQUESTED BY A PP FOR AN INITIAL
- * SEEK, THE PP NUMBER OF THE REQUESTING PP IS SAVED
- * IN *TCHR*.
- * 2) FOR EACH EQUIPMENT THE PP REQUESTING LOGICAL UNIT
- * ZERO IS SAVED IN *DALL* BYTE 3.
- * USING THIS INFORMATION WE KNOW WHEN RELEASING A RESOURCE
- * (IE. CHANNEL OR LOGICAL UNIT ZERO OF AN EQUIPMENT) IF
- * ANOTHER PP NEEDS THE RESOURCE TO INITIATE A SEEK OPERATION.
- * WHEN ANOTHER PP DOES NEED THE RESOURCE TO INITIATE A SEEK
- * THIS IS TERMED A *PRIORITY SEEK REQUEST*.
- *
- * THE MECHANISM OF GIVING PRIORITY TO A PARTICULAR PP IS
- * ACCOMPLISHED BY PROCESSING THE PRIORITY SEEK REQUEST UPON
- * EXIT OF THE *DSWM* PROCESSING. WHEN A *DSWM* FUNCTION
- * RESULTS IN THE FREEING OF A RESOURCE (IE. UNIT OR CHANNEL),
- * THE RESOURCE WOULD NORMALLY BE ASSIGNED TO THE NEXT PP IN
- * NUMERIC ORDER WHICH IS WAITING FOR IT. TO ASSIGN IT TO A
- * PRIORITY PP, NOT THE NEXT NUMERICAL PP, THE PP NUMBER IS
- * SAVED IN DIRECT CELL *PR* WHEN THE RESOURCE IS RELEASED.
- * WHEN THE *DSWM* REQUEST WHICH RELEASED THE RESOURCE, AND SET
- * *PR* IS COMPLETE OR GOES INTO REENTRY PROCESSING, A CHECK IS
- * MADE FOR A PENDING PRIORITY REQUEST. IF ONE IS PRESENT,
- * THEN BEFORE RETURNING TO THE MAIN LOOP OF MTR, THE PRIORITY
- * SEEK REQUEST IS PROCESSED. THIS IS ACCOMPLISHED BY SETTING
- * THE REGISTERS TO LOOK EXACTLY LIKE THE REQUEST WAS SENSED
- * BY THE MAIN LOOP IN MTR. IN EFFECT THE PROCESSING OF A
- * PRIORITY SEEK REQUEST LOOKS AS THOUGH THE REQUEST WERE
- * INSERTED AS THE NEXT REQUEST IN THE MAIN LOOP OF MTR. THIS
- * APPROACH USES ALL THE NORMAL REENTRY LOGIC FOR RESOURCE
- * ASSIGNMENT, THUS MINIMIZING SPECIAL CASE LOGIC.
- ** MSEK - THIS TAG DEFINES THE MAXIMUM NUMBER OF SEEK WAITS
- * ON A CHANNEL WITH SHARED DEVICES BEFORE ACCESS TO THE
- * CHANNEL FOR NEW SHARED DEVICE ACTIVITY IS
- * DISALLOWED. THE TABLE *TSCA* CONTAINS THE NUMBER
- * OF SEEK WAITS FOR SHARED DEVICES WHICH ARE OUTSTANDING
- * ON A CHANNEL. WHEN THERE ARE OUTSTANDING SEEKS ON
- * SHARED DEVICES, A DRIVE RELEASE FUNCTION WILL BE
- * ISSUED INSTEAD OF AN OPERATION COMPLETE FOR ALL
- * DEVICES ON THE CHANNEL. THE
- * CONTINUED ISSUANCE OF DRIVE RELEASES INSTEAD OF
- * OPERATION COMPLETES WILL LOCK OUT ACCESS BY OTHER
- * MACHINES TO THE CONTROLLER AND DRIVES. THUS THE
- * NEED FOR A LIMIT ON THE NUMBER OF TIMES A DRIVE
- * RELEASE IS ISSUED. *MSEK* PROVIDES A LIMIT TO
- * THE CONTINUED ACCESS OF A CONTROLLER BY A SINGLE
- * MACHINE. THIS NUMBER DOES NOT HAVE A DIRECT
- * CORRESPONDENCE TO THE NUMBER OF CONTIGUOUS I/O
- * REQUESTS ALLOWED ON A CHANNEL. THIS IS BECAUSE
- * THE TABLE *TSEK* WHICH *MSEK* LIMITS IS NOT A
- * COUNT OF I/O REQUESTS BUT RATHER IT IS A COUNT
- * OF THE NUMBER TIMES A SEEK WAIT IS ISSUED WITH
- * MULTIPLE SHARED DEVICE SEEKS OUTSTANDING. THUS
- * THE CONTINUED ACCESS BY A SINGLE MACHINE WILL
- * BE LIMITED BUT NOT TO ANY SPECIFIC NUMBER OF
- * REQUESTS.
- MSEK EQU 40
- PPR DSWM
- ADN 1 READ PARAMETERS
- CRD T4
- LDD PP GET ASSIGNED CP/PCP
- SHN PPXES
- TADC ACPP,PPX
- CRD CN
- LDD CN SET ASSIGNED CP/PCP FOR MOVE CHECK
- STD OR+2
- LDD CN+4
- STD OR+4 SET CP FOR PRIVILEGES CHECK
- LDD CM SET CALLER SELECTED CHANNEL FLAG
- LPN 20
- RAD OR+4
- MSTA DALL,PP,CS GET EST, SAVE MST ADDRESS, READ DALL
- CRD CN
- LDD CS
- SHN 21-13
- MJN DSW1 IF MASS STORAGE
- LDD T5
- NJP DSW7 IF NOT PERFORMING ON-LINE RECONFIGURATION
- DSW1 N8SJ DSW3 (NO ISD SUBSYSTEM JUMP)
- LDD CS+3
- LMC 2RDG
- ZJN DSW2 IF 836 DEVICE
- LMN 1RD&1RG
- NJN DSW3 IF NOT 834 DEVICE
- DSW2 LDN 40
- RAD OR+4
- DSW3 NSDJ DSW4 (NO SHARED DEVICE JUMP)
- LDD CS
- SHN 2-11
- LPN 4 SET SHARED DEVICE FLAG
- RAD OR+4
- DSW4 LDD CM
- LPN 1
- ZJP DSW12 IF CHANNEL NOT RESERVED
- * PROCESS RELEASE OF CHANNEL.
- LDN MXNC
- STD CF SET FLAG FOR CHANNEL UPDATE
- SBD T4
- DSW5 MJN DSW7 IF INVALID CHANNEL
- LDM TCHR,T4 SET REQUESTING PP
- ZJN DSW6 IF NO PRIORITY SEEK REQUEST
- STD PR
- LDN 0 CLEAR PRIORITY SEEK REQUEST
- STM TCHR,T4
- DSW6 LDM TCHS,T4
- LMD PP
- STD T1
- LPN 37
- ZJN DSW8 IF ASSIGNED TO THIS PP
- DSW7 RJM HNG HANG PP
- DSW8 LDD T1 CLEAR CHANNEL ASSIGNMENT
- LPC -4000
- STM TCHS,T4
- NSDJ DSW9 (NO SHARED DEVICE JUMP)
- LDD OR+4
- SHN 21-2
- PJN DSW8.1 IF NOT SHARED DEVICE
- LDD OR+3
- SCN 4
- NJN DSW9 IF NOT ENDMS OR UNIT SWITCH FUNCTION
- DSW8.1 LDM TSCA,T4
- NJN DSW9 IF SHARED CHANNEL ACTIVITY
- STM TSEK,T4 CLEAR SEEK COUNT
- DSW9 N8SJ DSW12 (NO ISD SUBSYSTEM JUMP)
- LDD OR+3
- LPN 22
- NJN DSW12 IF SEEK OR BUFFER FLUSH WAIT
- LDD OR+4
- LPN 40
- DSW10 ZJN DSW12 IF NOT ISD DEVICE
- * DECREMENT CONTROL MODULE ACTIVITY EXCEPT DURING SEEK
- * WAITS OR WRITE IN PROGRESS WAITS. MAINTAINING THE
- * CONTROL MODULE ACTIVITY INSURES THE REQUEST WILL RECEIVE
- * THE SAME CHANNEL ASSIGNMENT.
- LDM TCMN,PP
- SHN -3
- ADC TCMA
- STD T1
- SOI T1
- LPN 77
- NJN DSW11 IF NOT DECREMENT TO ZERO
- STI T1 CLEAR CHANNEL ASSIGNMENT
- LDD CN+4 REVERSE CHANNEL PRIORITY
- SHN 6
- LMD CN+4
- SHN 6
- STD CN+4
- LDN 0
- DSW11 LPN 40
- NJN DSW15 IF UNDERFLOW
- DSW12 LDD OR+3 VALIDATE FUNCTION CODE
- SBN MXDSWM
- MJN DSW14 IF FUNCTION IN TABLE
- SBN 20-MXDSWM
- ZJP WIP IF ISD BUFFER FLUSH WAIT
- SBK 2000-20
- ZJN RSV IF CONTROLLER RESERVE
- DSW13 LCN /MSP/CHFE SET CHANNEL FAILURE CODE
- LJM RCE6 RETURN INCORRECT FUNCTION STATUS
- DSW14 LDM TDSWM,OR+3
- STD T8
- LJM 0,T8 ENTER PROCESSOR
- DSW15 RJM HNG HANG PP
- MXDSWM EQU 12 MAXIMUM VALUE OF DSWM SUBFUNCTION
- RSV SPACE 4,10
- ** RSV - *DSWM* ROUTINE TO PROCESS RESERVE SITUATIONS.
- *
- * FUNCTION 10 = DRIVE RESERVE.
- * FUNCTION 2000 = CONTROLLER RESERVE.
- *
- * THESE FUNCTIONS SHOULD ONLY BE EXECUTED IN A MULTI-MAINFRAME
- * CONFIGURATION OR WHERE CONTROLLERS ARE BEING SHARED BETWEEN
- * MACHINES. THE PURPOSE OF THESE FUNCTIONS ARE TO RETRY THE
- * REQUEST UNTIL THE APPROPRIATE RESERVES CAN BE GAINED OR
- * UNTIL THE FIVE SECOND TIME OUT HAS EXPIRED. WHEN A TIME
- * OUT OCCURS, THE DRIVER WILL CALL THE ERROR PROCESSOR AND
- * THE APPROPRIATE ERROR PROCESSING WILL BE EXECUTED DEPENDING
- * ON THE CALLER SELECTED OPTIONS.
- RSV SUBFUN DSWM,10 DRIVE RESERVE PROCESSOR ENTRY
- SUBFUN DSWM,2000 CONTROLLER RESERVE ENTRY
- LDD CN+4 REVERSE CHANNELS IN MST
- SHN 6
- LMD CN+4
- SHN 6
- STD CN+4
- MSTA DALL,PP
- CWD CN
- LDD OA
- ADN 3
- CRD CS
- LDD OR+3
- SBD CS
- ZJN RSV3 IF START TIME SET
- RAD CS
- LDD TM+1
- STD CS+4
- LDD OA REWRITE TIME WORD
- ADN 3
- CWD CS
- RSV3 LDD TM+1
- SBD CS+4
- PJN RSV4 IF NO ROLL OVER
- ADC 10000
- RSV4 SBN 20D
- MJN RSV6 IF 20 SECONDS HAVE NOT ELAPSED
- LCN 0 SET UNIT NUMBER CLEARED
- STD CS
- RJM CDA CLEAR DEVICE ACTIVITY
- LDD OR+3
- LMN 10
- ZJN RSV5 IF DRIVE RESERVED
- LCN /MSP/CRSE-/MSP/DRVE
- RSV5 SBN /MSP/DRVE
- LJM RCE6 SET ERROR CODE
- RSV6 RJM SCS SET CHANNEL SELECTION PROCESSING
- LJM RER REASSIGN CHANNEL UPON REENTRY
- SPACE 4,20
- ** RCE - *DSWM* ROUTINE TO REQUEST IO RESOURCES.
- *
- * FUNCTION 11 = REQUEST CHANNEL, UNIT, AND EQUIPMENT.
- *
- * THIS FUNCTION REQUESTS ALL THE RESOURCES THAT ARE NEEDED TO
- * PERFORM AN I/O OPERATION FOR THE *6DI* AND *6DJ* DRIVERS.
- * THE ORDER OF RESOURCE ASSIGNMENT IS AS FOLLOWS.
- * FIRST, IF A SYSTEM REQUEST IS PENDING AND MORE THAN ONE
- * SYSTEM DEVICE IS PRESENT, THE SYSTEM EQUIPMENT WILL BE
- * SELECTED. THE SELECTION CRITERION IS DOCUMENTED IN *RSY*.
- * SECOND, THE SOFTWARE UNIT INTERLOCK IN *DALL* IS GAINED.
- * THIS IS AN IMPORTANT INTERLOCK IN THAT IT INSURES ONLY
- * ONE REQUEST IS PROCESSED FOR A UNIT AT A TIME.
- * THIRDLY, A CHANNEL IS SELECTED AND RESERVED.
- *
- * FUNCTION 4 = UNIT SWITCH.
- *
- * THE UNIT INTERLOCK FOR THE PREVIOUS UNIT IS RELEASED AND THE
- * INTERLOCK FOR THE NEXT OR CURRENT UNIT IS REQUESTED.
- *
- * ACCESS TO AN *OFF* OR *SUSPECT* DEVICE WILL NOT NORMALLY BE
- * GRANTED. HOWEVER, IT WILL BE ALLOWED IF ONE OF THE FOLLOWING
- * CONDITIONS IS MET -
- * 1. THE OPERATION IS A *READSYS* AND NO *ON* OR *IDLE*
- * SYSTEM DEVICE EXISTS.
- * 2. THE *AD* OR *NS* *SETMS* ERROR PROCESSING OPTIONS
- * WERE SELECTED.
- * 3. THE JOB TO WHICH THE CALLING PP IS ASSIGNED HAS AT
- * LEAST ONE OF THE FOLLOWING ATTRIBUTES -
- * A. IT-S A SUBSYSTEM.
- * B. IT HAS THE *UTL=* ENTRY POINT.
- * C. IT IS IN THE PROCESS OF BEING
- * UNCONDITIONALLY TERMINATED BY THE
- * OPERATOR.
- * ACCESS TO A *DOWN* DEVICE WILL BE GRANTED ONLY IF THE CALLER
- * SPECIFIED THE *AD* *SETMS* ERROR PROCESSING OPTION. ALTHOUGH
- * THE CHECK FOR A *DOWN* DEVICE IS BYPASSED FOR *READSYS*
- * OPERATIONS, ACCESS TO A *DOWN* DEVICE WILL NOT BE GRANTED
- * SINCE ROUTINE *RSY* WILL ALWAYS SELECT A NON-*DOWN* DEVICE
- * AND IT IS NOT POSSIBLE TO *DOWN* THE LAST SYSTEM DEVICE.
- RCE SUBFUN DSWM,(11,4) REQUEST CHANNEL AND UNIT PROCESSOR ENTRY
- LDD OA
- ADN 2
- CRD CS
- AOD OR+4 SET INITIAL SEEK REQUEST
- N8SJ RCE1 (NO ISD SUBSYSTEM JUMP)
- LPN 40
- ZJN RCE1 IF NOT ISD DEVICE
- LDD CS+1 STORE UNIT NUMBER IN *TCMN*
- LPN 77
- STM TCMN,PP
- RCE1 RJM CDA CLEAR CURRENT UNIT ACTIVITY
- LDD CM
- SHN 21-5
- PJN RCE1.1 IF NOT *READSYS*
- UJN RCE2 CONTINUE
- * LDC RSY (MULTIPLE SYSTEM DEVICES EXIST)
- RCEA EQU *-1
- CON RSY
- LJM RCE8 SET REENTRY PROCESSOR ADDRESS
- RCE1.1 SHN 5-1
- MJN RCE2.2 IF ACCESS TO A *DOWN* DEVICE ALLOWED
- LDD CN
- SHN 21-7
- PJN RCE2.0 IF DEVICE IS ACCESSIBLE
- LDK INWL
- CRD CM+1
- LDD CM+1+3
- SHN 21-3
- RCE2 MJN RCE2.2 IF DEADSTART SEQUENCING NOT COMPLETE
- LDD CN
- SHN 0-10
- LPN 3
- LMN 3
- NJN RCE2.1 IF DEVICE NOT *DOWN*
- MSTA ACGL,PP
- CRD CM+1
- LDD CM+1+4
- SHN 21-GRDR+GRDR/12D*12D
- PJP RCE5 IF NOT BEING REDEFINED
- LCN /MSP/RDFE
- UJP RCE6 SET ERROR CODE
- RCE2.0 UJN RCE3 CONTINUE
- RCE2.1 LDD CM
- SHN 21-2
- RCE2.2 MJN RCE4 IF *NS* *SETMS* OPTION SELECTED
- LDD OR+4
- LPC 7600
- ADK TFSW
- CRD CM+1
- ADK SEPW-TFSW
- CRD CM+2
- ADK JCIW-SEPW
- CRD CM+3
- LDD CM+5
- SBK LSSI+1
- RCE3 PJN RCE7 IF SUBSYSTEM
- LDD CM+2
- SHN 21-10
- RCE4 MJN RCE7 IF *UTL=* ENTRY POINT PRESENT
- LDD CM+1
- CFI EJT,,CM+1
- RCEB ADC SCHE
- CRD CM+1
- LDD CM+3
- SHN 21-12
- ERRNZ UCTM-2 CODE ASSUMES VALUE
- MJN RCE7 IF UNCONDITIONAL JOB TERMINATION MODE
- RCE5 LCN /MSP/LNRE SET ERROR CODE
- RCE6 STD OR+3
- LDD OA WRITE PARAMETERS
- ADN 1
- CWD T4
- LDN 0
- LJM RRX2 RETURN ERROR STATUS
- RCE7 LDC CUI SET REENTRY PROCESSOR ADDRESS
- RCE8 STD OR+1
- LDM TMSK,CS SET UNIT MASK
- STD OR+3
- UJN RCO1 CHECK FOR RESOURCES AVAILABLE
- RCO SPACE 4
- ** RCO - *DSWM* ROUTINE TO REQUEST A CHANNEL ONLY.
- *
- * FUNCTION 1 = REQUEST CHANNEL.
- *
- * THIS FUNCTION IS USED BY DRIVERS WHO DO NOT USE THE UNIT
- * INTERLOCK SCHEME. THUS THE ONLY RESOURCE THEY NEED TO
- * EXECUTE A DRIVER REQUEST IS THE CHANNEL.
- RCO SUBFUN DSWM,1 REQUEST CHANNEL ONLY PROCESSOR ENTRY
- AOD OR+4 SET INITIAL SEEK FOR PRIORITY SEEK REQUEST
- RJM SCS SET CHANNEL SELECTION PROCESSING
- LDM TPPI,PP
- NJN RCO2 IF ACTIVITY SET
- AOD CN
- MSTA DALL,PP
- CWD CN
- LDN 1
- RCO1 STM TPPI,PP ENTER HERE FROM *RCE*
- LDD OA WRITE REENTRY PARAMETERS
- CWD OR
- RCO2 LJM RER2 CHECK FOR RESOURCES AVAILABLE
- SPACE 4,10
- ** EMS - *DSWM* ROUTINE TO RELEASE IO RESOURCES.
- *
- * FUNCTION 0 = END MASS STORAGE OPERATION.
- *
- * THIS ROUTINE RELEASES THE CHANNEL AND SOFTWARE UNIT RESERVE
- * WHEN PRESENT.
- EMS SUBFUN DSWM,0 END MASS STORAGE PROCESSOR ENTRY
- LDD T4 INSURE VALID CHANNEL
- LPN 37
- STD T4
- LCN 0 SET NO UNIT ASSIGNED
- STD CS
- RJM CDA CLEAR DEVICE ACTIVITY
- LDD OA WRITE PARAMETERS
- ADN 1
- CWD T4
- LDD OR+2 CHECK FOR MOVE
- LMD MM.0
- NJP RRX IF NO MOVE REQUESTED
- LDC CHD SET CHANNEL DROP PROCESSOR
- STD OR+1
- LDD OA WRITE REENTRY PARAMETERS
- CWD OR
- LJM RER RETRY DROP ON REENTRY
- WIP SPACE 4,10
- ** WIP - *DSWM* ISD WRITE WAIT PROCESSOR.
- *
- * FUNCTION 20 = ISD WRITE IN PROGRESS.
- *
- * THIS FUNCTION GIVES UP THE CHANNEL DURING AN ISD WRITE
- * OPERATION SO THAT OTHER PP-S MAY USE THE CHANNEL. IT SETS
- * *CHECK WRITE COMPLETE* IN THE SEEK PARAMETERS, ALLOWING *6DJ*
- * TO PROPERLY CHECK FOR WRITE COMPLETION WHEN IT GETS THE
- * CHANNEL BACK. *WIP* MUST ALSO RESTORE THE UNIT NUMBER PART
- * OF THE SEEK PARAMETERS SINCE THE CALLING PP MAY HAVE USED THE
- * MESSAGE BUFFER FOR OTHER PURPOSES BETWEEN WRITING SECTORS.
- *WIP SUBFUN DSWM,20 WAIT FOR WRITE IN PROGRESS
- WIP LDM TCMN,PP RESTORE UNIT NUMBER SEEK PARAMETER
- ADC 300 SET *CHECK WRITE COMPLETE*
- STD CS+1
- LDD OA REWRITE SEEK PARAMETER WORD
- ADN 2
- CWD CS
- LDC 102 SET SEEK AND WAIT FOR WRITE COMPLETE
- UJN SEK2 SET FLAGS
- SPACE 4,20
- ** SEK - *DSWM* SEEK WAIT PROCESSOR.
- *
- * FUNCTION 2 = SEEK IN PROGRESS.
- *
- * THIS FUNCTION GIVES UP THE CHANNEL DURING A SEEK OPERATION
- * SO THAT OTHER REQUESTS MAY USE THE CHANNEL. THE DRIVE IS
- * PROTECTED FROM OTHER REQUESTS BY TWO METHODS.
- *
- * FIRST, FOR A NON-SHARED DEVICE, THE SOFTWARE
- * UNIT RESERVE IN *DALL* INSURES THAT OTHER REQUESTS IN THIS
- * MACHINE WILL NOT ACCESS THE SEEKING DRIVE.
- * THIS IS NEEDED BECAUSE THE DRIVER RELEASES THE DRIVE AFTER
- * INITIATING THE SEEK TO ALLOW OTHER PP-S TO ACCESS OTHER
- * DRIVES ON THE CHANNEL DURING THE SEEK OPERATION. SINCE THE
- * DRIVE IS RELEASED WHILE SEEKING, THE OPERATION CAN BE
- * CONTINUED ON A CHANNEL DIFFERENT FROM THE ONE WHICH INITIATED
- * THE SEEK. THIS CAPABILITY GIVES A SIGNIFICANT PERFORMANCE
- * GAIN FOR DUAL CHANNEL ACCESS TO NON-SHARED DEVICES.
- *
- * SECOND, FOR A SHARED DEVICE, SINCE THE SOFTWARE UNIT
- * INTERLOCK ONLY APPLIES TO ONE MACHINE, THE CONTROLLER AND
- * UNIT RESERVES ARE MAINTAINED WHILE SEEKING SO THAT REQUESTS
- * ON ANOTHER MACHINE DO NOT GAIN ACCESS TO THE DRIVE.
- * THE RESERVES MUST BE HELD DURING AN ENTIRE I/O SEQUENCE
- * (INCLUDING ERROR PROCESSING) ON INDEPENDENT SHARED DEVICES
- * SINCE THEY PROVIDE THE INTERLOCK FOR UPDATING TABLES ON THE
- * DEVICE. MMF DOES NOT DEPEND ON THE RESERVES FOR INTERLOCKS,
- * HOWEVER, THIS SCHEME IMPROVES PERFORMANCE BY ELIMINATING
- * RESEEKS FROM OTHER MACHINES DURING AN ACCESS.
- *
- * ENTRY (CN - CN+4) = MST WORD *DALL*.
- SEK SUBFUN DSWM,2 SEEK WAIT PROCESSOR ENTRY
- AOM TSEK,T4 INCREMENT TOTAL SEEK COUNT
- LDD T6
- SBD CN+2
- ZJN SEK1 IF NO CHANGE IN POSITION
- RAD CN+2
- MSTA DALL,PP UPDATE DEVICE ACTIVITY WORD
- CWD CN
- SEK1 LDN 2 SET SEEK WAIT
- SEK2 RAD OR+4 CHECK FOR SHARED SEEK
- LPN 4
- ZJN SEK3 IF NOT SHARED DEVICE
- AOM TSCA,T4 INCREMENT SHARED SEEK CHANNEL ACTIVITY
- LDN 10
- RAD OR+4
- SEK3 RJM SCS SET CHANNEL SELECTION PROCESSING
- * UJN RER REASSIGN CHANNEL UPON REENTRY
- TITLE RER - REENTRY PROCESSING.
- ** RER - *DSWM* REENTRY PROCESSING.
- *
- * THIS ROUTINE ASSIGNS THE RESOURCES REQUIRED FOR THE I/O
- * OPERATION. THE MAIN *DSWM* ROUTINE ALONG WITH THE
- * FUNCTION PROCESSORS SETS UP THE RESOURCE REQUIREMENTS
- * WHICH CAN THEN BE PROCESSED UPON INITIAL OR REENTRY.
- *
- * NOTE - A LARGE PART OF *MTR-S* EXECUTION TIME IS SPENT IN
- * THIS SUBROUTINE. IT IS EXTREMELY IMPORTANT TO OPTIMIZE AND
- * REDUCE OVERHEAD IN THIS CODE IN ORDER TO NOT MAKE THE *MTR*
- * CYCLE TIME TOO LARGE. A LARGE *MTR* CYCLE TIME AFFECTS
- * OVERALL SYSTEM PERFORMANCE.
- * ENTER HERE TO ALLOW ACCESS TO RESOURCES BY OTHER PPS BEFORE
- * REASSIGNING TO THIS REQUEST.
- RER LDD PR CHECK IF PRIORITY REQUEST
- ZJN RER1 IF NO PRIORITY SEEK REQUEST
- RJM PRR PROCESS PRIORITY REQUEST
- RER1 RJM TIM UPDATE TIME
- RJM MRP RETURN TO MAIN LOOP
- * ENTER HERE TO IMMEDIATELY CHECK RESOURCES.
- RER2 LDD OR+2 CHECK FOR MOVE
- LMD MM.0
- ZJN RER IF MOVE REQUESTED, RETRY UPON REENTRY
- LJM 0,OR+1 JUMP TO PROCESSOR
- C1M SPACE 4,20
- ** C1M - CHECK FOR ONE CONTROL MODULE CHANNEL FREE.
- *
- * WHEN ATTEMPTING ASSIGNMENT OF A SPECIFIC CHANNEL FOR
- * CONTROL MODULE ACCESS, ONE OF THE FOLLOWING CASES EXISTS.
- * 1) NO CHANNEL IS PRESENTLY ASSIGNED TO THE REQUIRED
- * CONTROL MODULE.
- * THE REQUESTED CHANNEL MAY BE ASSIGNED IF IT IS FREE.
- * THIS CHANNEL WILL THEN BECOME ASSIGNED TO THE CONTROL
- * MODULE.
- * 2) A CHANNEL IS PRESENTLY ASSIGNED TO THE CONTROL MODULE
- * AND IS THE SAME AS THE REQUESTED CHANNEL.
- * THE REQUESTED CHANNEL MAY BE ASSIGNED IF IT IS FREE.
- * 3) A CHANNEL IS PRESENTLY ASSIGNED TO THE CONTROL MODULE
- * AND IS DIFFERENT FROM THE REQUESTED CHANNEL.
- * NO CHANNEL ASSIGNMENT IS POSSIBLE. THE REQUEST MUST
- * WAIT UNTIL ALL CONTROL MODULE REQUESTS ARE COMPLETE
- * AT WHICH TIME CASE (1) EXISTS, AND AN ASSIGNMENT MAY
- * BE ALLOWED.
- C1M LDM TCMN,PP
- SHN -3
- ADC TCMA
- STD T1
- LDI T1
- ZJN C2M1 IF CHANNEL NOT ASSIGNED TO CONTROL MODULE
- SHN -6
- LMD OR+3
- ZJN C2M1 IF REQUEST FOR CHANNEL ASSIGNED TO C. M.
- UJN RER RETRY ASSIGNMENT ON REENTRY
- C2M SPACE 4,15
- ** C2M - CHECK FOR ONE OF TWO CONTROL MODULE CHANNELS FREE.
- *
- * WHEN ATTEMPTING ASSIGNMENT OF ONE OF TWO CHANNELS FOR
- * CONTROL MODULE ACCESS, ONE OF THE FOLLOWING CASES EXISTS.
- * 1) NO CHANNEL IS PRESENTLY ASSIGNED TO THE REQUIRED
- * CONTROL MODULE.
- * EITHER CHANNEL MAY BE ASSIGNED IF IT IS FREE AND THE
- * SEEK LIMIT IS NOT REACHED.
- * THIS CHANNEL WILL THEN BECOME ASSIGNED TO THE CONTROL
- * MODULE.
- * 2) A CHANNEL IS PRESENTLY ASSIGNED TO THE CONTROL MODULE.
- * THIS CHANNEL MAY BE ASSIGNED IF IT IS FREE AND THE
- * SEEK LIMIT IS NOT REACHED. IF THIS CHANNEL MAY NOT
- * BE ASSIGNED, THE OTHER CHANNEL IS NOT CHECKED.
- C2M LDM TCMN,PP GET THE CONTROL MODULE NUMBER
- SHN -3
- ADC TCMA
- STD T1
- LDI T1
- ZJN C2C IF CHANNEL NOT ASSIGNED TO CONTROL MODULE
- SHN -6
- STD OR+3
- C2M1 UJN C1C CHECK FOR FREE CHANNEL
- C1C SPACE 4,15
- ** C1C - CHECK FOR SINGLE CHANNEL FREE.
- *
- * IF THE REQUESTED CHANNEL IS FREE AND HAS NOT REACHED THE
- * SHARED DEVICE SEEK LIMIT, IT IS ASSIGNED.
- * IF THE CHANNEL IS BEING REASSIGNED TO A REQUEST
- * WHICH IS SEEKING ON A SHARED DEVICE, THEN THE
- * SHARED SEEK COUNTER FOR THE CHANNEL IS DECREMENTED.
- *
- * IF THE REQUESTED CHANNEL IS NOT FREE, THE CHANNEL
- * REQUESTED BIT IS SET. A PRIORITY SEEK REQUEST IS
- * ALSO SET IF THE CHANNEL IS REQUESTED FOR AN INITIAL
- * SEEK OPERATION.
- C2C SPACE 4,10
- ** C2C - CHECK FOR ONE OF TWO CHANNELS FREE.
- *
- * IF EITHER CHANNEL IS FREE AND HAS NOT REACHED THE
- * SHARED DEVICE SEEK LIMIT, IT IS ASSIGNED.
- *
- * IF NEITHER CHANNEL IS FREE, THE CHANNEL REQUESTED BIT
- * IS SET FOR THE PRIMARY CHANNEL. A PRIORITY SEEK REQUEST IS
- * ALSO SET FOR EACH OF THE CHANNELS. AN INITIAL SEEK PRIORITY
- * REQUEST IS ONLY SET IF THE SEEK LIMIT HAS NOT BEEN REACHED.
- * INITIAL SEEK REQUESTS HAVE PRIORITY OVER OTHER SEEKS.
- C2C LDD OR+3
- SHN 14
- STD OR+3
- SHN -14
- STD T2
- LDM TCHS,T2
- NJN C2C3 IF PRIMARY CHANNEL NOT FREE
- * CHECK SEEK LIMIT REACHED FOR PRIMARY CHANNEL.
- NSDJ C2C1 (NON-SHARED DEVICE JUMP)
- LDD OR+4
- LPN 6
- LMN 4
- NJN C2C1 IF NOT SHARED DEVICE OR SEEK WAIT
- LDM TSEK,T2
- ADK -MSEK
- PJN C2C3 IF SEEK LIMIT REACHED - TRY OTHER CHANNEL
- C2C1 LDD T2 SET PRIMARY CHANNEL
- STD OR+3
- C2C2 LJM C2C10 ASSIGN CHANNEL - CANNOT BE SHARED SEEK
- * CHECK SINGLE CHANNEL, OR SECOND OF DUAL CHANNELS.
- C1C BSS 0 SINGLE CHANNEL REQUESTED PROCESSOR
- LDD FT INDICATE SINGLE CHANNEL
- STD T2
- C2C3 LDM TCHS,OR+3
- NJN C2C5 IF SECONDARY CHANNEL IS NOT FREE
- NSDJ C2C2 (NON-SHARED DEVICE JUMP)
- LDD OR+4
- LPN 16
- LMN 04
- NJP C2C9 IF NOT SHARED DEVICE OR SEEK WAIT
- LDK MSEK-1
- SBM TSEK,OR+3
- PJN C2C2 IF SEEK LIMIT NOT REACHED
- LJM RER RETRY UPON REENTRY
- C2C5 LPC -4000 SET THE CHANNEL REQUESTED FLAG
- LMD FT
- STD CF SET FLAG FOR CHANNEL UPDATE
- STM TCHS,OR+3
- * SET PRIORITY REQUEST.
- LDD T2
- LMD FT
- NJN C2C5.1 IF NOT CHANNEL SPECIFIC REQUEST
- LDM TCHS,OR+3
- LPN 37
- ZJN C2C8.1 IF CHANNEL NOT ASSIGNED
- C2C5.1 LDD OR+4 SET PRIMARY CHANNEL REQUESTED
- LPN 1
- ZJN C2C6 IF NOT INITIAL SEEK
- LDM TSEK,T2
- ADK -MSEK
- PJN C2C7.1 IF SEEK LIMIT REACHED
- UJN C2C7 CONTINUE PROCESSING
- C2C6 LDM TCHR,T2
- NJN C2C7.1 IF REQUEST ALREADY SET
- C2C7 LDD PP SET CHANNEL REQUESTED
- STM TCHR,T2
- C2C7.1 LDD OR+4 SET SECOND CHANNEL
- LPN 1
- ZJN C2C7.3 IF NOT INITIAL CHANNEL REQUEST
- LDM TSEK,OR+3
- ADK -MSEK
- PJN C2C8 IF SEEK LIMIT REACHED
- UJN C2C7.4 CONTINUE PROCESSING
- C2C7.3 LDM TCHR,OR+3
- NJN C2C8 IF REQUEST ALREADY SET
- C2C7.4 LDD PP SET THIS PP AS REQUESTING CHANNEL
- STM TCHR,OR+3
- C2C8 LJM RER RETRY ASSIGNMENT UPON REENTRY
- C2C8.1 LDD OR+4
- C2C9 LPN 10
- ZJN C2C10 IF NO SHARED DEVICE SEEK
- SOM TSCA,OR+3
- * CHANNEL ASSIGNMENT ALLOWED.
- C2C10 LDD OA READ CHANNEL PARAMETER
- ADN 1
- CRD T4
- LDD OR+3 ASSIGN CHANNEL
- STD T4
- LDD CM
- SCN 11
- LMN 1
- STD CM
- LDD OA REWRITE PARAMETERS
- STD CF SET FLAG FOR CHANNEL UPDATE
- ADN 1
- CWD T4
- LDM TCHS,T4 RESERVE CHANNEL
- LPC -4000
- LMD PP
- STM TCHS,T4
- N8SJ RRX (NO ISD SUBSYSTEM JUMP)
- LDD OR+4
- LPN 42
- LMN 40
- NJN RRX IF NOT ISD DEVICE OR SEEK WAIT ASSIGNMENT
- AOI T1
- LMN 1
- NJN RRX IF NOT FIRST ACTIVITY ON CONTROL MODULE
- LDD T4
- SHN 6
- RAI T1
- UJN RRX EXIT REENTRY PROCESSING
- CHD SPACE 4,10
- ** CHD - CHANNEL DROP PROCESSOR.
- *
- * COMPLETE THE CHANNEL DROP AFTER STORAGE MOVE COMPLETES.
- CHD LDD OA READ CHANNEL STATUS
- ADN 1
- CRD T4
- * UJN RRX COMPLETE FUNCTION
- RRX SPACE 4,10
- ** RRX - EXIT *DSWM* REENTRY PROCESSING.
- RRX LDD CM SET CHANNEL STATUS
- STD OR+3
- NSDJ RRX2 (NO SHARED DEVICES JUMP)
- LPN 1
- ZJN RRX2 IF NO CHANNEL ASSIGNED UPON EXIT
- LDM TSCA,T4
- ZJN RRX2 IF NO SHARED DEVICE ACTIVITY
- LDD OR+4
- LPN 40
- ZJN RRX1 IF NOT ISD DEVICE
- LDI T1
- LPN 76
- ZJN RRX2 IF NO OTHER CONTROL MODULE ACTIVITY
- RRX1 LDN 20-10 SET DRIVE RELEASE
- RRX2 ADN 10
- * LDN 10 (NO SHARED DEVICES)
- RRXA EQU *-1
- STD OR+1
- LDN 0 COMPLETE FUNCTION
- STD OR
- N8SJ RRX3 (NO ISD SUBSYSTEM JUMP)
- LDD OR+4
- LPC 100
- ZJN RRX3 IF ISD WRITE IN PROGRESS
- LCN 12-1
- RRX3 ADN 12
- STD OR+2
- LDD T4 SET CHANNEL IN REPLY
- LPN 37
- STD OR+4
- LDD OA
- CWD OR
- LDC PPR RESET REENTRY ADDRESS
- STM TREA,PP
- LDD PR
- ZJN RRX4 IF NO PRIORITY REQUEST
- RJM PRR PROCESS REQUEST
- RRX4 LJM FNR RETURN TO MAIN LOOP
- SPACE 4,10
- ** RSY - SELECT SYSTEM DEVICE.
- *
- * THIS ROUTINE SELECTS A SYSTEM DEVICE BASED UPON THE
- * FOLLOWING CRITERION.
- * 1) SELECT DEVICE WITH LEAST ACTIVITY.
- * 2) IF ACTIVITY COUNTS EQUAL, SELECT DEVICE WHICH WILL
- * REQUIRE THE LEAST MOVE OF THE POSITIONER.
- RSY LDD OA READ PARAMETERS FROM MESSAGE BUFFER
- ADN 1
- CRD T4
- RJM TIM
- LCN 0
- STD CM+1 (CM+1) = LEAST ACTIVITY FOUND
- STD CM+2 (CM+2) = TABLE INDEX
- UJN RSY4 ENTER SEARCH LOOP
- RSY1 RAD CM+1 SET NEW LEAST ACTIVITY
- LDD CN+2
- SBD T6
- PJN RSY2 IF POSITIVE DISTANCE
- LMC -0
- RSY2 STD CM+4 (CM+4) = LEAST DISTANCE TO POSITION
- RSY3 LDD CM+2 SET BEST EQUIPMENT
- STD CM+3 (CM+3) = *TSYD* INDEX OF EQUIPMENT FOUND
- * SEARCH SYSTEM DEVICES FOR FREE UNIT INTERLOCK.
- RSY4 AOD CM+2 INCREMENT TO NEXT SYSTEM DEVICE
- LDM TSYM,CM+2
- ZJN RSY6 IF END OF LIST
- SHN 3
- ADN DALL
- CRD CN
- LDD CN
- LPC 7677 IGNORE LOW SPACE INDICATOR
- SBD CM+1
- MJN RSY1 IF LESS ACTIVITY
- NJN RSY4 IF MORE ACTIVITY
- LDD CN+2
- SBD T6
- PJN RSY5 IF POSITIVE DISTANCE
- LMC -0
- RSY5 SBD CM+4
- PJN RSY4 IF .GE. PREVIOUS DISTANCE
- RAD CM+4
- UJN RSY3 SET BEST EQUIPMENT
- RSY6 LDM TSYD,CM+3
- SBD T5
- ZJP RSY11 IF NO EQUIPMENT CHANGE
- * CHANGE EQUIPMENT DEPENDENT PARAMETERS.
- RAD T5 SET NEW EQUIPMENT
- NSDJ RSY7 (NO SHARED DEVICES JUMP)
- LDD OR+4 RESET SHARED FLAG
- SCN 4
- LMM TSHS,CM+3
- STD OR+4
- RSY7 LDD OA RESET UNIT NUMBER
- ADN 2
- CRD CS
- LDM TSYM,CM+3 SET NEW MST
- STM TPMS,PP
- SHN 3
- ADN DDLL
- CRD CN READ NEW UNIT LIST
- LDN CN*2+11 SET BYTE POINTER = CN+4 - LU/2
- SBD CS
- SHN 21
- STD T2
- SCN 77
- LMI T2
- MJN RSY8 IF FIRST UNIT IN BYTE
- SHN -6
- RSY8 BSS 0
- RSYA LPN 77
- *RSYA LPN 37 (33502 SYSTEM)
- RSYB UJN RSY9 (NOT 33502 SYSTEM JUMP)
- *RSYB LMD CS+1
- LPN 37
- LMD CS+1
- RSY9 STD CS+1
- N8SJ RSY10 (NO ISD SUBSYSTEM JUMP)
- STM TCMN,PP
- LMC 200 RESTORE READ/SEEK PARAMETER
- STD CS+1
- RSY10 LDD OA WRITE NEW EQUIPMENT NUMBER
- ADN 1
- CWD T4
- ADN 1 WRITE NEW PHYSICAL UNIT NUMBER
- CWD CS
- RSY11 BSS 0
- * UJN CUI CHECK UNIT INTERLOCK
- CUI SPACE 4,10
- ** CUI - CHECK FOR UNIT INTERLOCK FREE.
- *
- * NOTE THAT THE ACTIVITY COUNT IS NOT INCREMENTED UNTIL AFTER
- * THE SYSTEM SELECTION HAS TAKEN PLACE. THIS IS DONE TO INSURE
- * EQUAL TREATMENT OF ALL SYSTEM DEVICES. IT ALSO PREVENTS
- * DEVICE ACTIVITY FROM BEING SET WHEN WAITING FOR STORAGE MOVE.
- *
- * *CUI* SETS THIS PP AS REQUESTING THE UNIT, IF THE UNIT
- * INTERLOCK IS BUSY AND THE REQUEST IS FOR LOGICAL UNIT ZERO.
- *
- * A UNIT REQUEST WILL BE PROCESSED IMMEDIATELY UPON RELEASE OF
- * THE UNIT, INSURING THE SEEK WILL BE INITIATED PRIOR TO
- * ASSIGNING THE CHANNEL TO OTHER REQUESTS. WITHOUT THIS LOGIC
- * THE CHANNEL MAY BE GIVEN TO A REQUEST WHICH IS ON-CYLINDER
- * THUS PREVENTING THE SEEK FROM BEING INITIATED AND OVERLAPING
- * WITH I/O OPERATIONS.
- CUI MSTA DALL,PP ENTRY TO INCREMENT ACTIVITY COUNT
- CRD CN
- AOD CN
- LDD CN+1
- LMD OR+3
- SBD CN+1
- PJN CUI4 IF UNIT INTERLOCK AVAILABLE
- LDC CUI3 RESET ENTRY TO CHECK UNIT INTERLOCK
- STD OR+1
- LDD OA WRITE UPDATED PROCESSOR ADDRESS
- CWD OR
- CUI1 LDD OR+3
- SHN -13
- ZJN CUI2 IF NOT FIRST UNIT OF DEVICE
- LDD PP SET THIS PP AS REQUESTING UNIT
- STD CN+3
- CUI2 MSTA DALL,PP
- CWD CN
- LJM RER RECHECK INTERLOCK UPON REENTRY
- CUI3 MSTA DALL,PP
- CRD CN
- LDD CN+1
- LMD OR+3
- SBD CN+1
- MJN CUI1 IF UNIT INTERLOCK SET
- CUI4 RAD CN+1 SET UNIT INTERLOCK
- LDD OA READ TRACK
- ADN 1
- CRD T4
- LDD T6 SET CURRENT POSITION
- STD CN+2
- MSTA DALL,PP WRITE UPDATED UNIT INTERLOCK
- CWD CN
- RJM SCS SET CHANNEL SELECTION PROCESSING
- LJM 0,OR+1 CHECK CHANNEL
- PRR SPACE 4,15
- ** PRR - PROCESS PRIORITY REQUEST.
- *
- * *PRR* IS ENTERED TWICE, FIRST, TO PROCESS A PRIORITY
- * REQUEST, AND SECOND, UPON COMPLETION OF PROCESSING A
- * PRIORITY REQUEST.
- *
- * ENTRY (A) = (PR) = PRIORITY PP NUMBER ON INITIAL ENTRY.
- * (A) = (PR) = PP OR ADDRESS FOR SECOND ENTRY.
- *
- * EXIT TO *RER2* TO PROCESS PRIORITY SEEK REQUEST.
- * TO INITIAL RETURN ADDRESS FOR SECOND ENTRY.
- *
- * USES T1, PR.
- PRR SUBR ENTRY/EXIT
- STD T1
- SHN -5
- NJN PRR1 IF NOT INITIAL ENTRY
- LDM PRR SAVE EXIT ADDRESS
- STM PRRA
- LDM TREA,T1
- LMC RER2
- NJN PRR2 IF NOT IN REENTRY PROCESSING
- RJM TIM
- LDD OA SET ORIGINAL OUTPUT REGISTER ADDRESS
- STD PR
- LDD T1
- STD PP
- LJM MTR3 PROCESS PRIORITY REQUEST
- PRR1 LDD PR RESET OUTPUT REGISTER ADDRESS
- STD OA
- SBD OF RESET PP NUMBER
- SHN -3
- STD PP
- PRR2 LDN 0
- STD PR
- LJM * RETURN TO ORIGINAL ENTRY
- PRRA EQU *-1
- SCS SPACE 4,30
- ** SCS - SET *DSWM* CHANNEL SELECTION.
- *
- * THIS ROUTINE SELECTS THE CHANNEL ASSIGNMENT PROCESSOR BASED
- * UPON THE FOLLOWING TABLE. THE TABLE CONTAINS ENTRIES FOR
- * EACH OF THE POSSIBLE COMBINATIONS OF THE RELEVANT *DSWM*
- * REENTRY FLAGS. THE RELEVANT *DSWM* REENTRY FLAGS ARE -
- *
- * BIT 5 ISD DEVICE.
- * BIT 4 CHANNEL SELECTED BY CALLER.
- * BIT 3 SEEK ON SHARED DEVICE.
- *
- * FLAGS PROCESSOR CHANNEL(S)
- * 0X C2C CN+4
- * 1X C1C T4
- * 2X C1C T4
- * 3X C1C T4
- * 4X C2M CN+4
- * 5X C1M T4
- * 6X C1M T4
- * 7X C1M T4
- *
- * SELECTION OF THE *C2C* OR *C2M* PROCESSOR WILL BE MADE ONLY
- * IF NEITHER CHANNEL OF A DUAL ACCESS DEVICE IS BEING IDLED.
- *
- * ENTRY (OR+4) = *DSWM* REENTRY PROCESSING FLAGS.
- * (CN+4) = CHANNELS FOR UNIT.
- * (T4) = CURRENTLY SELECTED CHANNEL.
- *
- * EXIT (OR+1) = CHANNEL ASSIGNMENT PROCESSOR.
- * (OR+3) = CHANNEL(S) FOR ASSIGNMENT PROCESSOR.
- * (OR - OR+4) WRITTEN TO (OA).
- SCS8 STD OR+3
- LDD OA WRITE PARAMETERS
- CWD OR
- SCS SUBR ENTRY/EXIT
- LDD OR+4
- LPN 70
- ZJN SCS5 IF NO SPECIAL PROCESSING, FLAGS = 0X
- SBN 40
- MJN SCS1 IF NOT ISD DEVICE, FLAGS = 1X, 2X, 3X
- ZJN SCS4 IF NO CHANNEL SELECTION, FLAGS = 4X
- SCS0 LDC C1M FLAGS = 5X, 6X, 7X
- UJN SCS2 SELECT SINGLE CONTROL MODULE CHANNEL
- SCS0.1 LDD OR+4
- LPN 40
- NJN SCS0 IF ISD
- SCS1 LDC C1C
- SCS2 STD OR+1 SET SINGLE CHANNEL PROCESSOR
- LDD T4
- SCS3 UJN SCS8 STORE OUTPUT REGISTER AND RETURN
- SCS4 LCN C2C-C2M
- SCS5 ADC C2C CHANNEL SELECTION PROCESSOR
- STD OR+1
- LDD CN+4
- SHN 14
- STD T1
- SHN -14
- SCS6 STD T4
- LMD T1
- ZJN SCS0.1 IF SINGLE CHANNEL ACCESS
- LDM TCHS,T1
- SHN 21-6
- MJN SCS1 IF CHANNEL BEING IDLED
- LDM TCHS,T4
- SHN 21-6
- PJN SCS7 IF CHANNEL NOT BEING IDLED
- LDD T1
- UJN SCS6 SELECT OTHER CHANNEL
- SCS7 LDD CN+4 SET CHANNELS FOR SELECTION
- UJN SCS3 STORE OUTPUT REGISTER AND RETURN
- TDSWM SPACE 4,10
- TDSWM BSS 0 TABLE OF *DSWM* SUBFUNCTION PROCESSORS
- DUP MXDSWM,1
- CON DSW15
- TDSWM HERE
- ORG TDSWM+MXDSWM
- SPACE 4
- ** TMSK - TABLE OF SINGLE BIT MASKS
- TMSK BSS 0
- CON 4000
- CON 2000
- CON 1000
- CON 0400
- CON 0200
- CON 0100
- CON 0040
- CON 0020
- ECXM TITLE PP REQUEST FUNCTION PROCESSORS.
- HLTM SPACE 4,10
- *** HLTM - HALT PP WHILE IN SYSTEM DEBUG MODE.
- *
- * ENTRY
- *T, OR 12/ HLTM,12/,12/,12/,12/
- *
- * EXIT IF SYSTEM DEBUG MODE DISABLED
- *T, OR 60/0
- *
- * EXIT IF SYSTEM DEBUG MODE ENABLED
- *T, OR 12/ HLTM,12/,12/,12/,12/
- PPR HLTM
- LDK SSTL CHECK SYSTEM DEBUG DISABLED FLAG
- CRD CM
- LDD CM+3
- SHN 21-1
- PJN PRL1 IF SYSTEM DEBUG ENABLED
- HLT1 LDC MS2W+** CLEAR PP HUNG MESSAGE AT SYSTEM CP
- HLTA EQU *-1
- CWD ZR
- UJN PRL2 RETURN CLEARING OUTPUT REGISTER
- PRLM SPACE 4
- *** PRLM - PAUSE FOR STORAGE RELOCATION.
- *
- * ENTRY
- *T, OR 12/ PRLM,12/,12/,12/,12/
- *
- * EXIT
- *T, OR 12/ 0, 48/
- PPR PRLM
- LDD MM.4
- ZJN PRL2 IF NO MOVE IN PROGRESS
- LDD PP GET ASSIGNED CP/PCP
- SHN PPXES
- TADC ACPP,PPX
- CRD CM
- LDD CM CHECK CP/PCP ASSIGNMENT
- LMD MM.0
- NJN PRL2 IF NOT AT MOVE
- PRL1 LJM FNR EXIT
- PRL2 LJM FNC EXIT TO CLEAR OUTPUT REGISTER
- RCHM SPACE 4,20
- *** RCHM - REQUEST CHANNEL.
- *
- * REQUEST ASSIGNMENT OF 1 OF 2 POSSIBLE CHANNELS.
- *
- * ENTRY
- *T, OR 12/ RCHM,1/R,5/ ,1/C,5/ CH0,6/ ,1/C,5/ CH1,24/
- * R SET IF CALLER WANTS IMMEDIATE RETURN IF CHANNEL(S)
- * DOWN.
- * C SET IF CONCURRENT CHANNEL IS SPECIFIED BY CHX.
- * CHX CHANNEL.
- *
- * EXIT
- *T, OR 12/ 0,1/R,11/ CH,36/
- * R SET IF CHANNEL(S) DOWN AND CALLER REQUESTED IMMEDIATE
- * RETURN. THE *CH* FIELDS ARE UNCHANGED IN THIS CASE.
- * CH CHANNEL ASSIGNED.
- PPR RCHM
- LDD PP GET ASSIGNED CP/PCP
- SHN PPXES
- TADC ACPP,PPX
- CRD CM
- LDD CM CHECK FOR MOVE
- LMD MM.0
- ZJN PRL1 IF MOVE REQUEST
- LDD OR+1
- LPN 77
- RJM TCH
- NJN RCH2 IF CHANNEL NOT AVAILABLE
- RCH1 LJM CCH4 RESERVE THE CHANNEL
- RCH2 SHN 0-21
- STD T1 SAVE CHANNEL STATUS
- LDD OR+2
- NJN RCH4 IF SECOND CHANNEL SPECIFIED
- AOD T1
- RCH3 SHN -1
- ZJN PRL1 IF AT LEAST 1 CHANNEL UP
- LDD OR+1
- SBD FT
- MJN PRL1 IF REPLY NOT REQUESTED
- LJM FNC RETURN REJECT STATUS
- RCH4 RJM TCH
- ZJN RCH1 IF CHANNEL AVAILABLE
- SHN 0-21
- RAD T1
- UJN RCH3 CHECK FOR BOTH CHANNELS DOWN
- RCXM SPACE 4,25
- *** RCXM - PERFORM EM TRANSFER DURING ROLLIN/ROLLOUT.
- *
- * *RCXM* REQUESTS ARE ISSUED BY *1RI* AND *1RO* DURING THE
- * ROLLIN/ROLLOUT OF USER EM. THE ISSUING PP PLACES THE REQUEST
- * IN ITS OUTPUT REGISTER AND PERFORMS I/O ASYNCHRONOUSLY WITH
- * THE COMPLETION OF THE REQUEST. *MTR* CHANGES THE REQUEST TO
- * AN *ECXM* REQUEST AND PASSES IT ON TO *CPUMTR*. THE
- * APPROPRIATE REQUEST BIT WILL BE SET IN *CPUMTR-S* *PR*
- * PROGRAM MODE REQUEST WORD.
- *
- * ENTRY
- *T, OR 12/ECXM, 1/C, 11/, 12/CPN, 5/, 1/T, 18/ADDR
- * C SET IF ALTERNATE CP/PCP SPECIFIED.
- * CPN ALTERNATE CP/PCP NUMBER IF *C* SELECTED.
- * T FUNCTION TYPE -
- * 0 READ.
- * 1 WRITE.
- * ADDR RESPONSE ADDRESS.
- *
- * EXIT
- *T, OR 60/0
- *T, ADDR 12/0, 12/ST, 36/0
- * ST = STATUS.
- * 0 NO ERROR IN TRANSFER.
- * 7777 ERROR IN TRANSFER.
- PPR RCXM
- LDC ECXM+2000 CHANGE FUNCTION TO PROGRAM MODE *ECXM*
- STD OR
- LDD OA WRITE OUTPUT REGISTER
- CWD OR
- SBD OF COMPUTE PROGRAM MODE REQUEST STACK BIT
- SHN -3
- ADN 11D
- STD CN+2
- LDN EPRF ENTER PROGRAM MODE REQUEST
- RJM CPR
- LJM FNR RETURN WITHOUT CLEARING PP OR
- SFLM SPACE 4,15
- *** SFLM - SET FL INCREASE REJECTED.
- *
- * ENTRY
- *T, OR 12/ SFLM,12/ FN,12/ CP,12/,12/
- *
- * FN FUNCTION
- * 1 = SET CM INCREASE REJECTED.
- * 2 = SET ECS INCREASE REJECTED.
- * CP CONTROL POINT NUMBER.
- *
- * EXIT
- *T, OR 12/ 0,48/
- PPR SFLM
- LDD OR+2
- SBD NC
- PJN SFR2 IF ILLEGAL CP NUMBER
- ADD NC
- SHN 7
- ADN FLIW
- STD OR+3
- CRD CM
- LDD CM+3
- ADD CM+4
- ZJN SFR1 IF INCREASE NO LONGER PENDING
- LCN 0
- LMD OR+1 SET MASK
- STM SFRA
- LDD CM+1 SET CORRECT BIT
- LPC *
- * LPC 7776 (SET CM INCREASE REJECT)
- * LPC 7775 (SET ECS INCREASE REJECT)
- SFRA EQU *-1
- LMD OR+1
- STD CM+1
- LDD OR+3 REWRITE FL INCREASE CONTROL WORD
- CWD CM
- SFR1 LJM FNC COMPLETE FUNCTION
- SFR2 RJM HNG HANG PP
- RSTM SPACE 4,50
- *** RSTM - REQUEST STORAGE.
- *
- * REQUEST CM OR ECS STORAGE ASSIGNMENT AT CONTROL POINT.
- * CM AND ECS STORAGE REQUESTS ARE DEFINED TO BE
- * .GE. 0 AND .LE. 3777B.
- *
- * A *HUNG PP* WILL BE GENERATED IF ANY OF THE FOLLOWING OCCURS.
- * 1) REQUEST FOR ECS AND USER ECS IS NOT DEFINED.
- * 2) REQUEST FOR NEGATIVE FL FOR ECS.
- * 3) CMR REQUEST FOR NEGATIVE FL.
- * 4) FL REQUEST GREATER THAN 3777B.
- * 5) A SPECIAL REQUEST WAS MADE BY A PP OTHER THAN *VER*.
- * 6) REQUEST IS FOR AN INVALID CONTROL POINT.
- *
- * THERE ARE SEVERAL CHECKS IN MEMORY ALLOCATION WHICH WILL
- * STOP *MTR* IF SOMETHING IS WRONG. THIS TYPE OF LOGIC IS
- * NEEDED TO PRESERVE CONDITIONS AND ENSURE SYSTEM INTEGRITY.
- *
- * ENTRY
- *
- *T, OR 12/ RSTM,12/ FL,12/ F,12/ PN,12/
- * FL FIELD LENGTH DESIRED (CM FL/100, ECS FL/*UESB*).
- * IF NEGATIVE, AMOUNT OF CM TO RETURN TO SYSTEM
- * (SPECIAL *VER* REQUEST ONLY).
- *
- * F FLAG BITS.
- * BIT 0 = TYPE OF STORAGE REQUEST (1 = XM).
- * 1 = UNUSED.
- * 2 = UNUSED.
- * 3 = UNUSED.
- * 4 = UNUSED.
- * 5 = CLEAR STORAGE REQUEST COMPLETE.
- * 6 = SET INCREASE IN *FLIW* IF NOT AVAILABLE.
- * 7 = CHANGE EXECUTION FL (*VER* ONLY).
- * 8 = CM REQUEST IS FOR NEGATIVE FL.
- * 9 = CHANGE CMR SIZE.
- * 10 = TRANSFER FL FROM CP TO PCP (PSEUDO-ROLLOUT).
- * 11 = TRANSFER FL FROM PCP TO CP (PSEUDO-ROLLIN).
- *
- * PN PSEUDO-CONTROL POINT NUMBER IF CP/PCP TRANSFER (BIT 10
- * OR BIT 11 SET).
- *
- * EXIT
- *
- *T, OR 60/ 0
- * REQUEST HAS BEEN HONORED.
- *
- *T, OR 12/ 0,12/ FL,12/,12/,12/
- * STORAGE IS NOT AVAILABLE.
- PPR RSTM
- SBD OF GET ASSIGNED CP OR PCP
- SHN PPXES-PPCES
- TADC ACPP,PPX
- CRD CM
- LDD MM.4
- NJP FNR IF MOVE IN PROGRESS
- LDD CM SET ASSIGNED CP/PCP NUMBER
- STD CP
- STD T6
- ZJN RST2 IF INVALID CP/PCP NUMBER
- SBM UFLA
- PJN RST2 IF INVALID CP/PCP NUMBER
- LDD OR+2
- LPN 1 SET STORAGE TYPE
- STD T5
- RSTA SBN 2
- * SBN 1 (USER ECS UNDEFINED)
- PJN RST2 IF ILLEGAL REQUEST
- LDD OR+2
- SHN 0-11
- ZJN RST3 IF NOT CP/PCP FL TRANSFER OR CMR REQUEST
- SCN 1
- NJN RST1 IF PSEUDO-ROLLIN OR PSEUDO-ROLLOUT
- STD CP SET CMR MCT ORDINAL
- STD T6
- UJN RST3 SET FL CONTROL WORD ADDRESS = CMRL
- RST1 LDD OR+3
- STD T8 SAVE PCP NUMBER
- SBM UFLA
- RST2 PJN RST4 IF INVALID PCP NUMBER
- RST3 LDM MAFA,T5
- STD OR+3 SET FL CONTROL WORD ADDRESS
- LDD CP
- RJM SCP READ FL CONTROL WORD
- ADD OR+3
- CRD CS
- LDD OR+2 SET BYTE INDEX
- SHN -6
- LPN 4
- LMN 4
- STD OR+4
- NJN RST5 IF NOT NEGATIVE FL REQUEST
- LDD T5
- NJN RST4 IF XM REQUEST
- LDD CP
- ZJN RST4 IF CMR REQUEST
- RJM STA
- CRD CM GET MCT ENTRY FOR CP
- LDD CM
- STD T6 SET MCT ORDINAL TO BACKWARD LINK
- LDD OR+1
- SBN MNFL+1
- MJN RST6 IF VALID NFL REQUEST
- RST4 RJM HNG HANG PP
- RST5 LDD OR+2 CHECK FLAG BITS
- SHN 21-7
- MJN RST8 IF SPECIAL REQUEST
- LDD CS
- ADD OR+1
- SHN -13
- NJN RST4 IF REQUEST .GT. 3777
- RST6 LDD T5
- RSTB ZJN RST7 IF NOT AN ECS REQUEST
- * UJN RST7 (SINGLE CPU OR CPU-1 FOR NOS/VE ONLY)
- * UJN RST7 (810/830 ALLOW USER XM ON EITHER CPU)
- * UJN RST7 (865/875 ALLOW ECS ON EITHER CPU)
- LDD NC
- SBD CP
- MJN RST7 IF PCP
- LDN 1
- STD CM+4 SET IMPLICIT CPU 0 SELECTION
- LDN CPUS
- STD CM+1 CHANGE JOB CONTROL PARAMETERS
- MONITOR SJCM
- RST7 LDD OA STORE OUTPUT REGISTER
- CWD OR
- LDD OR+2 CHECK FLAG BITS
- SHN 0-12
- NJN RST10 IF PSEUDO CONTROL POINT OPERATION
- LDD OR+1 CHECK INCREASE
- SBM CS,OR+4
- NJN RST12 IF FL CHANGE
- RJM CFL CLEAR FL INCREASE REQUEST
- LJM FNZ CLEAR OUTPUT REGISTER
- RST8 RJM PVE CHECK SPECIAL REQUEST FROM *VER*
- PJN RST17 IF INCREASE
- RST9 LJM RST22 PROCESS DECREASE
- RST10 LJM RST19 PROCESS PCP REQUEST
- RST12 STD T7 SAVE INCREMENT
- PJN RST17 IF INCREASE
- * PROCESS STORAGE DECREASE.
- LDD CP
- ZJN RST9 IF CMR REQUEST
- LMN 1
- NJN RST15 IF NOT FIRST CP
- LDD OR+4
- ZJN RST9 IF NEGATIVE FL REQUEST
- RST15 LDD CP
- RSTE SBN ** CHECK CONTROL POINT
- * SBN (NC)-1
- NJN RST16 IF NOT LAST CONTROL POINT
- LDD OR+4
- NJN RST9 IF NOT NEGATIVE FL REQUEST
- RST16 LDD OR+2
- RSTC EQU RST16
- * UJN RST20 (MEMORY CLEARING NOT ENABLED)
- LPN 40
- NJN RST20 IF STORAGE CLEARED
- LJM RST26 SET UP *CSTM* REQUEST
- * PROCESS STORAGE INCREASE.
- RST17 LDD T6
- RJM RSB FETCH UNASSIGNED MEMORY BLOCK
- SBD T7
- PJN RST20 IF INCREASE POSSIBLE WITH NO MOVE
- RJM UFL CHECK UNASSIGNED FL
- MJN RST21 IF MEMORY NOT AVAILABLE
- RJM EMO EVALUATE MOVE OPTIONS
- RST19 RJM CRA CHANGE REFERENCE ADDRESS
- RST20 RJM MFL MODIFY FIELD LENGTH
- LJM FNZ CLEAR OUTPUT REGISTER
- RST21 RJM SFL SET FL INCREASE
- LJM FNC COMPLETE FUNCTION
- * MOVE CP 1 ON CMR DECREASE.
- * MOVE LAST CONTROL POINT ON DECREASE.
- * MOVE CP 1 ON CP 1 NEGATIVE FL DECREASE.
- RST22 LDD CP SET REQUESTING CP
- STD MM.3
- NJN RST23 IF NOT CMR REQUEST
- LDN 1
- RST23 STD MM.0 SET CP/PCP FOR MOVE
- STM AMVB
- LMN 1
- ZJN RST24 IF CMR REQUEST OR CP 1
- LCN 0
- RST24 LMD T7 SET MOVE INCREMENT
- STD MM.1
- RJM MFL MODIFY FIELD LENGTH
- LJM EMO3 INITIATE MOVE
- RST26 LDD OA SAVE *RSTM* REQUEST IN MB+5
- ADN 6
- CWD OR
- LDC 400 SET SPECIAL *CSTM* REQUEST
- STD OR+1
- LDC CSTM+4000
- STD OR
- LDD OA
- CWD OR
- LJM FNR WAIT FOR *CSTM* TO COMPLETE
- SCHM SPACE 4
- SEQM SPACE 4,20
- *** SEQM - SET EQUIPMENT PARAMETERS.
- *
- * ENTRY.
- *T, OR 12/ SEQM,12/ P0,12/ SF,12/ P1,12/ P2
- * WHERE -
- * P0 EST ORDINAL FOR ALL SUBFUNCTIONS EXCEPT CCNS, ICNS.
- * FOR SF = DNCS, IF *P0* = 0 THEN UNCONFIGURED CHANNEL
- * IS BEING GLOBALLY DOWNED.
- * P0 CONTROL POINT NUMBER FOR FUNCTIONS CCNS, ICNS.
- * (IF 4000B + CONTROL POINT NUMBER, *P2* = ALTERNATE
- * EJT ORDINAL).
- * SF SUBFUNCTION CODE.
- * ONES = 0 = ON EQUIPMENT.
- * IDES = 1 = IDLE EQUIPMENT.
- * OFES = 2 = OFF EQUIPMENT.
- * DWES = 3 = DOWN EQUIPMENT.
- * SB0S = 4 = SET BYTE 0 OF EST.
- * SB1S = 5 = SET BYTE 1 OF EST.
- * SB2S = 6 = SET BYTE 2 OF EST.
- * SB3S = 7 = SET BYTE 3 OF EST.
- * SB4S = 10 = SET BYTE 4 OF EST.
- * DNCS = 11 = DOWN CHANNEL.
- * UPCS = 12 = UP CHANNEL.
- * 13 = RESERVED.
- * CCNS = 14 = RELEASE CHANNEL FROM MAINTENANCE JOB.
- * ICNS = 15 = ASSIGN CHANNEL TO MAINTENANCE JOB.
- * 16 = RESERVED.
- * 17 = RESERVED.
- * SMNS = 20 = SET EQUIPMENT MNEMONIC.
- * CSES = 21 = CLEAR SUSPECT FLAG.
- * SSES = 22 = SET SUSPECT FLAG.
- * CRES = 23 = CLEAR RESTRICT NEW ACTIVITY FLAG.
- * SRES = 24 = SET RESTRICT NEW ACTIVITY FLAG.
- * 25 = RESERVED.
- * CKPS = 26 = CHECKPOINT SYSTEM.
- *
- * P1 EQUIPMENT MNEMONIC FOR SUBFUNCTION SMNS.
- * P1 MASK FOR SUBFUNCTIONS SB0S - SB4S.
- * P1 6/ 0,6/ CH FOR SF = DNCS, UPCS, CCNS AND ICNS.
- * CH = CHANNEL, INCLUDING CONCURRENCY FLAG.
- * P2 VALUE FOR SUBFUNCTIONS SB0S - SB4S.
- * P2 MUX CHANNEL INDICATOR FOR SUBFUNCTIONS DNCS, UPCS.
- * P2 ALTERNATE EJT ORDINAL TO ASSIGN/RELEASE CHANNEL
- * TO/FROM FOR FUNCTIONS CCNS, ICNS, IF *P0* = 4000B +
- * CONTROL POINT NUMBER.
- *
- * EXIT.
- *
- *T, OR 12/ 0,48/ UNCHANGED.
- * REQUEST HAS BEEN HONORED.
- *
- *T, OR 60/ 0 FOR SUBFUNCTIONS ONES, IDES AND OFES WHEN THE DEVICE IS
- * DOWN AND ASSIGNED TO A DIAGNOSTIC.
- *
- *T, OR 60/ 0 FOR SUBFUNCTION DWES WHEN ATTEMPTING TO DOWN THE LAST
- * SYSTEM DEVICE.
- *
- *T, OR 12/ 0,12/ ST,36/ UNCHANGED FOR SUBFUNCTION DNCS WHEN UNABLE
- * TO PROCESS REQUEST NORMALLY.
- * ST = 0 IF ONLY ONE NON-DOWN ACCESS REMAINS ON A
- * NON-DOWN DEVICE.
- *
- *T, OR 60/ 0 FOR SUBFUNCTION UPCS WHEN -
- * A MAINTENANCE USER IS ACTIVE ON THE CHANNEL.
- *
- * HANG CONDITIONS -
- *
- * MUX CHANNEL AND CONCURRENT CHANNEL SPECIFIED ON
- * UP/DOWN CHANNEL REQUEST (SUBFUNCTIONS DNCS, UPCS)
- * THE VALUE OF THE CHANNEL DESCRIPTOR (1/C,5/CH)
- * EXCEEDS 51B (SUBFUNCTIONS DNCS, UPCS, CCNS, ICNS).
- * FOR SUBFUNCTION CCNS IF CHANNEL NOT ASSIGNED
- * TO CALLER (OR ALTERNATE EJT ORDINAL).
- PPR SEQM
- LDD PP GET ASSIGNED CP/PCP
- SHN PPXES
- TADC ACPP,PPX
- CRD CM
- LDD CM CHECK FOR MOVE
- LMD MM.0
- ZJP FNR IF MOVE IN PROGRESS
- LDD OR+2 CHECK SUBFUNCTION
- SBN CCNS
- ZJN SEQ4 IF MAINTENANCE JOB REQUEST
- SBN ICNS-CCNS
- ZJN SEQ4 IF MAINTENANCE JOB REQUEST
- SBN TSEQL-ICNS
- MJN SEQ2 IF VALID SUBFUNCTION
- SEQ1 RJM HNG HANG PP
- SEQ2 LDD OR+1 FETCH EST ENTRY
- SFA EST
- ADK EQDE
- CRD CS
- LDD OR+2
- SBN DNCS
- NJN SEQ3 IF NOT DOWN CHANNEL REQUEST
- LDD OR+1
- NJN SEQ3 IF EST ORDINAL SPECIFIED
- LDD FT
- STD CM+1
- LJM DNC10 SET GLOBAL DOWN FLAG
- SEQ3 LDC 0 VALIDATE EST ORDINAL
- SEQA EQU *-1
- SBD OR+1
- MJN SEQ1 IF INVALID ORDINAL
- SEQ4 LDM TSEQM,OR+2 SET PROCESSOR ADDRESS
- STD T8
- LDD OR+3 GET MASK
- LJM 0,T8 JUMP TO PROCESSOR
- SST SPACE 4,10
- *** SST - SET EQUIPMENT STATE.
- * ON, IDLE, OFF, DOWN EQUIPMENT.
- SST SUBFUN SEQM,DWES DOWN EQUIPMENT
- LDD CS
- SHN 21-13
- PJP SST4 IF NOT MASS STORAGE
- SHN 13-12
- PJN SST3 IF NOT SYSTEM DEVICE
- LCN 0
- STD T1
- STD T2
- SST1 AOD T2 INCREMENT NON-DOWN SYSTEM DEVICE COUNT
- SST1.1 AOD T1 ADVANCE SYSTEM DEVICE TABLE INDEX
- LDM TSYM,T1
- ZJN SST2 IF END OF SYSTEM DEVICE LIST
- SHN 3
- ADK DALL
- CRD CN
- LDD CN
- SHN 0-10
- LMN 3
- NJN SST1 IF NOT DOWN, COUNT IT
- UJN SST1.1 AVOID COUNTING DOWN DEVICE
- SST2 LDD T2
- SHN -1
- ZJP FNZ IF ONLY ONE NON-DOWN SYSTEM DEVICE REMAINS
- SST3 LDD OR+1
- STD CM+1
- MONITOR CDAM CHECK DEVICE ACTIVITY
- LDD CM+1
- NJP FNR IF ACTIVITY REMAINS
- SST4 SUBFUN SEQM,(ONES,IDES,OFES)
- LDD CS SET NEW DOWN BIT
- SCN 3
- LMD OR+2
- STD CS
- LDD OR+2 BITS TO SET 2/ STATE, 1/ SUSPECT, 1/
- SHN 2
- LMD OR+2
- LPN 16
- SHN 14
- LMN 16
- UJN SST9 SET STATE IN MST
- * SET/CLEAR SUSPECT BIT.
- SST5 SUBFUN SEQM,SSES
- LDC 20002
- UJN SST9 SET SUSPECT BIT
- SST6 SUBFUN SEQM,CSES CLEAR SUSPECT BIT
- LDD CS
- LPN 2
- NJP FNC IF OFF OR DOWN, DO NOT CLEAR SUSPECT
- LDN 2
- UJN SST9 ADJUST BITS IN MST
- * SET/CLEAR RESTRICT NEW ACTIVITY BIT.
- SST7 SUBFUN SEQM,SRES SET RESTRICT NEW ACTIVITY BIT
- LDC 10001
- UJN SST9 SET BIT IN MST
- SST8 SUBFUN SEQM,CRES CLEAR RESTRICT NEW ACTIVITY BIT
- LDN 1
- SST9 STD CM+4 SET BITS TO CHANGE
- SHN -14
- STD CM+2 NEW BIT VALUES
- LDD CS
- SHN 21-13
- PJN SMN1 IF NOT MASS STORAGE
- LDN SSTS SET EQUIPMENT STATE BITS VIA CPUMTR
- STD CM+3
- LDD OR+1 SET EQUIPMENT
- STD CM+1
- MONITOR SMDM
- LDD CM+1
- ZJN SMN1 IF DEVICE NOT ASSIGNED TO DIAGNOSTIC
- LJM FNZ REJECT FUNCTION
- SEB SPACE 4,10
- *** SEB - SET EST BYTES.
- SEB SUBFUN SEQM,(SB0S,SB1S,SB2S,SB3S,SB4S) SET BYTES OF EST
- STM SEBA SET CLEARING MASK
- LDM CS-SB0S,OR+2
- LPC 0
- SEBA EQU *-1
- LMD OR+4 MERGE IN NEW BITS
- STM CS-SB0S,OR+2
- UJN SMN1 WRITE EST TO MEMORY
- SMN SPACE 4,10
- *** SMN - SET EQUIPMENT MNEMONIC.
- SMN SUBFUN SEQM,SMNS
- STD CS+3
- SMN1 SFA EST,OR+1 UPDATE EST ENTRY
- ADK EQDE
- CWD CS
- LJM FNC COMPLETE FUNCTION
- UPC SPACE 4,10
- *** UPC - UP CHANNEL.
- UPC SUBFUN SEQM,UPCS UP CHANNEL
- LDD OR+4
- NJN UPC2 IF MUX CHANNEL
- LDD OR+3
- RJM VCN VERIFY CHANNEL NUMBER
- LDM TCHS,OR+3
- LPN 40
- ZJN UPC2 IF NOT GLOBALLY DOWN
- LDD OR+3
- RJM GCE
- ZJN UPC2 IF CHANNEL NOT ASSIGNED TO JOB
- UPC1 LJM FNZ REJECT FUNCTION
- UPC2 LDN UPSS
- RJM RCS REQUEST CHANNEL STATE CHANGE
- ZJN UPC1 IF FUNCTION REJECTED
- LDD OR+4
- NJN UPC3 IF MUX CHANNEL
- AOD CF SET CHANNEL TABLE UPDATE FLAG
- LDM TCHS,OR+3 ENSURE GLOBAL DOWN BIT CLEAR
- SCN 40
- STM TCHS,OR+3
- UPC3 LJM FNC COMPLETE FUNCTION
- DNC SPACE 4,10
- *** DNC - DOWN CHANNEL.
- DNC SUBFUN SEQM,DNCS DOWN CHANNEL
- LDD OR+4
- NJN DNC1 IF MUX CHANNEL
- LDD OR+3
- RJM VCN VERIFY CHANNEL NUMBER
- * CHECK FOR DOWNING LAST ACCESS TO NON-DOWN DEVICE.
- LDD CS
- SHN 21-13
- DNC1 PJP DNC9 IF NOT MASS STORAGE
- LDN 2
- STD T1
- DNC2 SOD T1
- PJN DNC3 IF NOT END OF CHECK
- LDD CS
- LPN 3
- LMN 3
- ZJN DNC4 IF DEVICE IS DOWN
- LJM FNZ REJECT FUNCTION
- DNC3 LDM CS+1,T1
- SHN 21-13
- PJN DNC2 IF ACCESS NOT PRESENT OR DISABLED
- SHN 13-12
- MJN DNC2 IF CHANNEL DOWN
- SHN 12-21
- LPN 77
- LMD OR+3
- ZJN DNC2 IF NOT ALTERNATE PATH
- DNC4 LDD CS+4 READ *STLL* FROM MST
- SHN 3
- ADN STLL
- CRD CM
- LDD CM+1 CHECK *1MV* ACTIVE ON DEVICE
- SHN 21-7
- MJN DNC7 IF *1MV* ACTIVE, LEAVE REQUEST PENDING
- LDM TCHS,T2 SET IDLEDOWN FLAG IN CHANNEL TABLE
- LPC -100
- LMD HN
- STM TCHS,T2
- STD CF SET CHANNEL TABLE UPDATE FLAG
- * REQUEST *CPUMTR* TO SET CHANNEL STATE = *IDLE*.
- LDK SICS REQUEST CHANNEL STATE CHANGE
- RJM RCS
- * CHECK FOR ACTIVITY ON 834/836 DEVICE THROUGH CHANNEL BEING
- * DOWNED.
- LDD CS+3
- LMC 2RDG
- ZJN DNC5 IF 836 DEVICE
- LMN 1RD&1RG
- NJN DNC8 IF NOT 834 DEVICE
- DNC5 LDN 10 CHECK *TCMA* ENTRIES
- STD T1
- DNC6 SOD T1
- MJN DNC8 IF ALL *TCMA* ENTRIES CHECKED
- LDM TCMA,T1
- ZJN DNC6 IF NO ACTIVITY ON THIS CONTROL MODULE
- SHN -6
- LMD OR+3
- NJN DNC6 IF ACTIVITY THROUGH DIFFERENT CHANNEL
- DNC7 LJM FNR LEAVE REQUEST PENDING
- * CHECK FOR SEEK PENDING THROUGH THIS CHANNEL ON A SHARED
- * NONBUFFERED DEVICE.
- DNC8 LDD CS
- LPC 1060
- SHN 21-5
- MJN DNC9 IF BUFFERED DEVICE
- ZJN DNC9 IF NOT A SHARED DEVICE
- LDM TCHS,OR+3
- LPN 37
- NJN DNC7 IF CHANNEL IS ASSIGNED
- LDM TSCA,OR+3
- NJN DNC7 IF SEEK PENDING THROUGH THIS CHANNEL
- * REQUEST *CPUMTR* TO SET THE CHANNEL STATE = *DOWN*.
- DNC9 LDK DWSS REQUEST CHANNEL STATE CHANGE
- RJM RCS
- ZJN DNC7 IF REQUEST WAS REJECTED
- DNC10 LDD OR+4
- NJN DNC11 IF MUX CHANNEL
- * CLEAR THE IDLEDOWN AND GLOBAL DOWN FLAGS IN THE CHANNEL
- * TABLE.
- LDM TCHS,OR+3
- LPC -140
- STM TCHS,OR+3
- * SET THE GLOBAL DOWN FLAG IF THE CHANNEL IS GLOBALLY DOWN.
- LDD CM+1
- STD CF SET CHANNEL UPDATE FLAG
- SHN 0-13
- SHN 5-0
- RAM TCHS,OR+3
- DNC11 LJM FNC COMPLETE THE FUNCTION
- AMC SPACE 4,10
- *** AMC - ASSIGN/RELEASE CHANNEL TO/FROM MAINTENANCE JOB.
- AMC SUBFUN SEQM,(CCNS,ICNS)
- * LDD OR+3 GET CHANNEL ASSIGNMENT STATUS
- RJM GCE
- LDD OR+1 CHECK FOR ALTERNATE EJT ORDINAL
- SHN 21-13
- PJN AMC1 IF NO ALTERNATE EJT ORDINAL
- LDD OR+4
- STD CN
- AMC1 LDD OR+2
- LMN ICNS
- NJN AMC5 IF RELEASE CHANNEL
- LDM TCHS,OR+3
- LMN 40
- ZJN AMC3 IF CHANNEL GLOBALLY DOWN
- AMC2 LJM FNZ REJECT FUNCTION
- AMC3 LDI T1
- NJN AMC2 IF CHANNEL ASSIGNED TO A JOB
- LDD CN INSERT NEW EST ORDINAL
- AMC4 STI T1
- LDC 0 WRITE CHANNEL ASSIGNMENT TABLE
- SEQB EQU *-1
- ADD T0 ADD CORRECT WORD INDEX
- CWD CM
- UJN CKP1 COMPLETE FUNCTION
- AMC5 LDD CN CHECK EST ORDINAL
- LMI T1
- ZJN AMC4 IF CHANNEL ASSIGNED TO THIS JOB
- RJM HNG HANG PP
- CKP SPACE 4,10
- *** CKP - FORCE SYSTEM CHECKPOINT.
- CKP SUBFUN SEQM,CKPS
- LDM PHED+2 SET *1MB* FUNCTION FLAG
- SCN SPCP
- LMN SPCP
- STM PHED+2
- CKP1 LJM FNC COMPLETE FUNCTION
- TSEQM SPACE 4,10
- TSEQM BSS 0
- DUP MXSEQM,1
- CON HNG1
- TSEQL EQU MXSEQM
- TSEQM HERE
- ORG TSEQM+MXSEQM
- DSRM SPACE 4,20
- *** DSRM - DSD REQUESTS.
- *
- * NOTE - THIS FUNCTION WILL BE HONORED ONLY FROM *DSD*, OR IF
- * REQUEST *SET EMERGENCY STEP* AND BIT 57 OF *SCRL* SET.
- * REQUEST 02 - SET DATE AND TIME - WILL BE ACCEPTED FROM
- * NON-DSD PROGRAMS TO SUPPORT *PLATO* MMF MODE.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ P,6/ SF,36/ P
- * P = PARAMETERS
- * SF = SUBFUNCTION CODE
- *
- * EXIT (CM - CM+4) = (SCRL).
- *
- * USES T7.
- *
- * SUBFUNCTION MSPS - SET MONITOR STEP.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ BN,6/ MSPS,12/ EO,12/ FN,12/ BV
- * BN = BYTE NUMBER TO STEP ON.
- * EO = EJT ORDINAL. ZERO IF ALL EXECUTING JOBS.
- * FN = FUNCTION TO STEP. ZERO IF ALL FUNCTIONS.
- * BV = BYTE VALUE TO STEP ON.
- * IF B = 0, THEN
- * V = 2/,1/ F,2/,7/ FN
- * WHERE F = 1 IF FN IS *CPUMTR* FUNCTION.
- *
- * EXIT
- *T, OR 60/ 0
- *
- * SUBFUNCTION STPS - STEP MONITOR.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ ,6/ STPS,36/
- *
- * EXIT
- *T, OR 60/ 0
- *
- * SUBFUNCTION EDTS - ENTER DATE AND TIME.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ ,6/ EDTS,12/ ADDR,24/
- *
- * ADDR ADDRESS + 1 OF MESSAGE BUFFER
- *
- *T, MB+1 60/ JULIAN DATE
- *T, MB+2 60/ PACKED DATE AND TIME
- *T, MB+3 60/ TIME
- *T, MB+4 60/ DATE
- *T, MB+5 12/ DAY LIMIT, 48/ UNUSED
- *
- * EXIT
- *
- *T, OR 60/ 0
- *
- * SUBFUNCTION ESPS - SET EMERGENCY STEP.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ BN,6/ MSPS,12/ 0,12/ FN,12/ BV
- * BN = BYTE NUMBER TO STEP ON.
- * FN = FUNCTION TO STEP.
- * BV = BYTE VALUE TO STEP ON.
- * IF B = 0, THEN
- * V = 2/,1/ F,2/,7/ FN
- * WHERE F = 1 IF FN IS *CPUMTR* FUNCTION.
- *
- * EXIT
- *T, OR 60/ 0
- *
- * SUBFUNCTION CSPS - CLEAR MONITOR STEP.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ ,6/ CSPS,36/
- *
- * EXIT
- *T, OR 60/ 0
- *
- * SUBFUNCTION SKCS - SET K DISPLAY COMPLETE BIT.
- *
- * ENTRY
- *T, OR 12/ DSRM,6/ SF,6/ SKCS,12/ CPA,12/
- *
- * SF = LEFT/RIGHT SCREEN FLAG
- * = 0 IF LEFT SCREEN
- * = 1 IF RIGHT SCREEN
- * CPA = CONTROL POINT ADDRESS
- *
- * EXIT
- *T, OR 60/ 0
- PPR DSRM
- LDD SC
- CRD CM
- LDD PP
- SBN 1 CHECK REQUESTER
- ZJN DSR1 IF *DSD*
- LDD OR+1 CHECK FOR TIME SET
- SBN 2
- ZJN DSR1 IF TIME SET
- MJN DSR2 IF NOT VALID *1MB* REQUEST
- SBN 5-2
- PJN DSR2 IF NOT VALID *1MB* REQUEST
- LDD CM
- SHN 21-11
- PJN DSR2 IF NOT *1MB* REQUEST
- DSR1 LDD OR+1
- LPN 77
- STD T7
- LDM TDSRM,T7 SET REQUEST PROCESSOR
- STD T7
- * EXIT TO PROCESSOR WITH
- * (A) = 0.
- * (CM - CM+4) = *SCRL*.
- LDN 0
- LJM 0,T7 ENTER PROCESSOR
- DSR2 RJM HNG HANG PP
- SES SPACE 4,10
- ** SES - SET EMERGENCY STEP.
- *
- * EXIT TO *MSP*.
- SES SUBFUN DSRM,ESPS
- LDN 1 SET EMERGENCY STEP FLAG
- * UJN MSP EXIT TO *MSPS* PROCESSOR
- MSP SPACE 4,10
- ** MSP - SET MONITOR STEP.
- *
- * EXIT TO *FNZ* TO CLEAR OUTPUT REGISTER.
- *
- * USES CM, CN+2.
- *
- * CALLS CPR.
- *
- * MACROS ISTORE.
- MSP SUBFUN DSRM,MSPS
- ADN 1 SET STEP FLAG POSITION
- SHN 7
- STD T0
- LMC -0 STEP FLAG MASK
- STM MSPA
- LDD CM
- LPC 0
- MSPA EQU *-1
- LMD T0 SET STEP FLAG
- STD CM
- LDD SC
- CWD CM
- LDD OR+2 SET EJT ORDINAL
- STM CFSA
- LDD OR+3 SET FUNCTION TO TRAP
- STM CFSB
- LDD OR+1 SET BYTE NUMBER TO STEP
- SHN -6
- STM CFSC
- LDD OR+4 SET BYTE VALUE TO STEP
- STM CFSD
- ISTORE MTRB,(UJN MTR1) FORCE CHECK OF CPP OUTPUT REGISTERS
- ISTORE PPRA,(UJN MSC) SET TRANSFER TO *MSC*
- STM MSCA
- LDN 0 SET STEP MODE
- STD CN+2
- LDN MSCF CHANGE STEP MODE CONTROL
- RJM CPR
- LJM FNZ EXIT TO CLEAR OUTPUT REGISTER
- CMS SPACE 4,10
- ** CMS - CLEAR MONITOR STEP MODE.
- *
- * EXIT STEP MODE CLEARED.
- * TO *STP* TO CLEAR OUTPUT REGISTER.
- *
- * USES CM, CN+2, T7, OR - OR+4.
- *
- * CALLS CPR.
- *
- * MACROS ISTORE.
- CMS SUBFUN DSRM,CSPS
- LDD CM CLEAR STEP SET
- LPC 6177
- STD CM
- LDD SC
- CWD CM
- CMSA ISTORE MTRB,(NJN MTR1) RESET CONDITIONAL CPP CHECKING
- * ISTORE MTRB,(UJN MTR2) (NO CPP-S PRESENT)
- ISTORE PPRA,(SBN CPUM) RESET *PPR* PROCESSING
- LDN 1 CLEAR STEP MODE
- STD CN+2
- LDN MSCF CHANGE STEP MODE CONTROL
- RJM CPR
- LDD OF SET PP 2
- ADN 20
- STD T7
- CMS1 LDD T7 READ OUTPUT REGISTER
- CRD OR
- LDD OR
- SHN 21-11
- PJN CMS2 IF *MTR* FUNCTION OR NOT STEPPED
- SHN 11-6
- SHN 6-21
- LMD FT
- STD OR
- LDD T7
- CWD OR
- CMS2 LDN 10 ADVANCE PP
- RAD T7
- SBD OF
- SHN -3
- LMD NP
- NJN CMS1 IF NOT LAST PP
- * UJN STP EXIT TO CLEAR OUTPUT REGISTER
- STP SPACE 4,10
- ** STP - STEP MONITOR.
- *
- * EXIT STEP MODE SET IF ENTERED FROM *STPS* SUBFUNCTION.
- * STEP MODE CLEARED IF ENTERED FROM *CSPS* SUBFUNCTION.
- * TO *FNZ* TO CLEAR OUTPUT REGISTER.
- STP SUBFUN DSRM,STPS
- STM MSCA
- STP1 LJM FNZ EXIT TO CLEAR OUTPUT REGISTER
- EDT SPACE 4,10
- ** EDT - ENTER DATE AND TIME.
- *
- * EXIT *ADTF* FUNCTION ISSUED TO *CPUMTR* TO ALTER DATE AND
- * TIME.
- * TO *STP1* TO CLEAR OUTPUT REGISTER.
- *
- * USES CN.
- *
- * CALLS CPR.
- EDT SUBFUN DSRM,EDTS
- LDD OR+2 SET BUFFER ADDRESS
- STD CN
- LDN ADTF CALL *CPUMTR* TO ENTER DATE AND TIME
- RJM CPR
- UJN STP1 EXIT TO CLEAR OUTPUT REGISTER
- SKC SPACE 4,10
- ** SKC - SET K DISPLAY COMPLETE BIT.
- *
- * EXIT *SKCF* FUNCTION ISSUED TO *CPUMTR* TO SET K DISPLAY
- * COMPLETE BIT.
- * TO *STP1* TO CLEAR OUTPUT REGISTER.
- *
- * USES CN+1, CN+2.
- *
- * CALLS CPR.
- SKC SUBFUN DSRM,SKCS
- LDD OR+1 SET LEFT/RIGHT SCREEN FLAG
- STD CN+1
- LDD OR+2 SET CP ADDRESS
- STD CN+2
- LDN SKCF CALL *CPUMTR* TO SET COMPLETE BIT
- RJM CPR
- UJN STP1 EXIT TO CLEAR OUTPUT REGISTER
- TDSRM SPACE 4,10
- TDSRM BSS 0
- DUP MXDSRM,1
- CON HNG1
- TDSRL EQU MXDSRM
- TDSRM HERE
- ORG TDSRM+MXDSRM
- TITLE CPU PROGRAM CONTROL ROUTINES.
- CCP SPACE 4
- ** CCP - CHECK CENTRAL PROGRAM.
- *
- * THE CONTENTS OF THE CPU OUTPUT REGISTER, (RA+1), ARE CHECKED
- * AND *CPUMTR* IS REQUESTED TO PROCESS THE REQUEST.
- * UPDATES CPU ASSIGNMENTS AMD PRIORITIES.
- *
- * USES CM - CM+4, CS - CS+4, OR - OR+4, T1, T7.
- *
- * CALLS AVC, CPR, MST.
- CCP6 LDN SMRL CHECK STORAGE MOVE COMPLETE
- CRD CM
- LDD CM
- NJN CCP1 IF MOVE NOT COMPLETE
- CCP7 RJM MST. PROCESS COMPLETION
- UJN CCP1 CHECK RA+1
- CCP8 BSS 0 SET OTHER CPU
- CCPD LDM CCPB
- * UJN CCPX (SINGLE CPU)
- ERRNZ ACPL-ACPL/2*2 *ACPL* MUST BE EVEN
- LMN 1
- STM CCPB
- CCP SUBR ENTRY/EXIT
- * CHECK STORAGE MOVE STATUS.
- CCPA CON 0
- * UJN CCP6 (STORAGE MOVE IN PROGRESS)
- CCP1 RJM AVC ADVANCE CLOCK
- CCPB LDN ACPL READ ADDRESS OF ACTIVE RA
- * LDN ACPL+1 (CHECKING CPU 1)
- STD T7
- CRD CM
- LDD CM
- ZJN CCP8 IF NO RA+1 TO CHECK
- CCPC UJN CCP2 READ RA+1
- * SHN 6 (CME PRESENT)
- STD OR+1
- SHN 6
- STD OR
- LRD OR
- LDN 40
- CCP2 SHN 14
- ADD CM+1
- ADN 1 READ RA+1
- CRD OR
- LDD OR
- ZJN CCP4 IF (RA+1) = 0
- * REQUEST *CPUMTR* TO PROCESS (RA+1) REQUEST.
- LDN ZERL
- CRD CN
- ERRNZ CCPF CODE REQUIRES VALUE
- LDD T7 REQUEST (RA+1) CHECK
- SBN ACPL
- SHN 14
- RJM CPR
- CCP3 LJM CCP8 SET OTHER CPU
- CCP4 LDD CM+2
- ADD CM+3
- ZJN CCP3 IF NO SUB-CONTROL POINT
- LDD TM+2 CHECK FOR LIMIT
- SBD CM+2
- NJN CCP5 IF LIMIT PASSED OR NOT REACHED
- LDD TM+3
- SBD CM+3
- NJN CCP5 IF LIMIT PASSED OR NOT REACHED
- LDD TM+4
- SBD CM+4
- CCP5 MJN CCP3 IF LIMIT NOT REACHED
- LDD T7 SET CPU NUMBER
- SBN ACPL
- SHN 14
- ADN CSLF CHECK SUB-CONTROL POINT LIMIT
- RJM CPR
- UJN CCP3 SET NEXT CPU
- CCS SPACE 4,10
- ** CCS - CHECK FOR CPU SWITCH.
- *
- * EXIT CPU SWITCH INITIATED AS NEEDED.
- *
- * USES T7, CM - CM+4, CN - CN+4.
- *
- * CALLS CPR.
- * REQUEST CPU SWITCH. *CSWF* IS ISSUED IF A SWITCH REQUEST WAS
- * DETECTED IN *CSWL* SO THAT *CPR* WILL NOT RETRY IF THE
- * EXCHANGE REQUEST IS REJECTED. IF THE CPU IS ALREADY IN
- * MONITOR MODE, *CPUMTR* WILL MOST LIKELY DETECT THE *CSWL*
- * REQUEST ON EXIT FROM MONITOR MODE.
- CCS8 LDN CSWF SET SWITCH CPU FUNCTION
- CCS9 SHN 6
- ADD T7
- SHN 14
- RJM CPR REQUEST CPU SWITCH
- CCS SUBR ENTRY/EXIT
- * CHECK CPU SWITCH REQUEST AND CPU SLICE EXPIRED.
- LDM CCSB TOGGLE CPU NUMBER IF DUAL CPU
- CCSA LMN 3
- * LMN 0 (SINGLE CPU)
- STM CCSB
- LPN 1 SET CPU NUMBER
- STD T7
- ADN CSWL
- CRD CN
- ADN TSCL-CSWL
- CRD CM
- LDD CN
- SHN 21-13
- MJN CCS8 IF CPU SWITCH REQUESTED
- LDD TM+2 CHECK CPU SLICE LIMIT
- SBD CN+2
- NJN CCS1 IF LIMIT PASSED OR NOT REACHED
- LDD TM+3
- SBD CN+3
- NJN CCS1 IF LIMIT PASSED OR NOT REACHED
- LDD TM+4
- SBD CN+4
- CCS1 MJN CCS3 IF NOT TIME TO SWITCH CPU
- CCS2 LDN TCSF SET TIME SLICE CPU SWITCH FUNCTION
- UJN CCS9 SWITCH CPU
- * CHECK RECALL SLICE EXPIRED.
- CCS3 LDD CM CHECK RECALL FLAG
- SHN 21-0
- CCS4 PJN CCSX IF RECALL SLICE NOT IN EFFECT
- LDD TM+2 CHECK RECALL CPU SLICE LIMIT
- SBD CM+2
- NJN CCS5 IF LIMIT PASSED OR NOT REACHED
- LDD TM+3
- SBD CM+3
- NJN CCS5 IF LIMIT PASSED OR NOT REACHED
- LDD TM+4
- SBD CM+4
- CCS5 MJN CCS7 IF RECALL CPU SLICE NOT EXPIRED
- LDC WQRL GET *WQ* POINTER
- CRD CN
- CCS6 LDD CN+3
- LPN 77
- SHN 14
- LMD CN+4
- ZJN CCS4 IF JOB WAS REMOVED FROM *WQ*
- CRD CN
- LDC TSCL GET PRIORITY OF JOB IN THIS CPU
- ADD T7
- CRD CM
- LDD CN COMPARE PRIORITIES AND FLAGS
- SBD CM
- MJN CCS7 IF PRIORITY/FLAGS DO NOT ALLOW CPU SWITCH
- LDD CN+2 CHECK CPU SELECTION AND BYPASS FLAG
- CCSB LPN 6
- * LPN 5 (CHECKING CPU 1)
- NJN CCS6 IF CANNOT ASSIGN CPU TO JOB
- LJM CCS2 SWITCH CPU
- CCS7 LJM CCSX RETURN
- CPR SPACE 4,15
- ** CPR - CPUMTR REQUEST PROCESSOR.
- *
- * *CPUMTR* WILL TYPICALLY BE IN MONITOR MODE ON EXIT.
- *
- * ENTRY (A) BITS 0 - 11 = REQUEST.
- * (A) BITS 12 - 17 = CPU NUMBER.
- * (CN - CN+3) = PARAMETERS.
- *
- * EXIT (MTRJ) = MAXIMUM WAIT TO MONITOR EXCHANGE TIME.
- *
- * USES CN+3, CN+4, T1, T2, CM - CM+4.
- *
- * CALLS TIM, WXP.
- *
- * MACROS ISTORE.
- CPR SUBR ENTRY/EXIT
- STD CN+4 SET REQUEST
- CPRB SHN -14
- * UJN CPR1 (1 CPU ONLY)
- LMC MXNI SET *MXN* INSTRUCTION
- STM MXN
- LPN 7 SET (A0)
- SHN 6
- STM CPRA+3
- CPR1 RJM WXP WAIT EXCHANGE PACKAGE READY
- LDD CN+3
- SCN 77 CLEAR UNUSED FIELD
- STD CN+3
- RJM TIM MAKE SURE *TIMB* EXCHANGE SWITCH RESET
- LDN PPXL SET *PP EXCHANGE PENDING* FLAG
- CWD HN
- IAN 14 SAVE CURRENT CLOCK VALUE
- STD T1
- * ENTER REQUEST. SINCE THE MICROCODE FOR RUNNING DUAL-CPU
- * *NOS* ON A CACHE MACHINE CHECKS (B0) TO DETERMINE IF THE
- * EXCHANGE PACKAGE IS READY, THE WORD CONTAINING (B0) *MUST*
- * BE THE LAST WORD STORED INTO THE EXCHANGE PACKAGE.
- * OTHERWISE, IF A *PURGE ALTERNATE CACHE* REQUEST WAS BEING
- * PROCESSED BY MICROCODE AT THE SAME TIME THAT *MTR* WAS
- * PREPARING THE EXCHANGE PACKAGE, THE EXCHANGE COULD OCCUR
- * BEFORE THE EXCHANGE PACKAGE WAS READY.
- TLDC /EXPACS/MXP+10,XBP STORE (X0)
- CWD CN
- SBN 10 STORE (P), (A0), (B0)
- CWM CPRA,ON
- * EXCHANGE CPU. TO EXCHANGE CPU 1 ON A DUAL CPU CACHE MACHINE,
- * AN EXTERNAL INTERRUPT (*INPN*) IS USED INSTEAD OF AN *MXN*.
- * SINCE THE *INPN* DOES NOT WAIT FOR THE EXCHANGE TO SUCCEED
- * OR FAIL BEFORE COMPLETING, *MTR* MUST WAIT 25 MICROSECONDS
- * BEFORE CHECKING THE EXCHANGE PACKAGE. SINCE THE EXCHANGE MAY
- * OCCUR AFTER AN EVEN LONGER INTERVAL IN SOME CASES, *MTR* MUST
- * NEVER ABANDON AN ATTEMPT TO EXCHANGE CPU 1. SINCE THE *INPN*
- * WILL INTERRUPT A UEM BLOCK COPY EVEN IN MONITOR MODE, *MTR*
- * MUST DELAY 125 MICROSECONDS AFTER AN APPARENT FAILED EXCHANGE
- * BEFORE RETRYING, IF CPU 1 IS CURRENTLY IN MONITOR MODE.
- CPR2 UJN CPR3 EXCHANGE CPU
- * LDM CPRA+3 (DUAL CPU CACHE MACHINE)
- CON CPRA+3
- CPRC EQU *-2
- ZJN CPR3 IF EXCHANGING CPU 0
- INPN 4 INTERRUPT PROCESSOR 1 ON PORT 2
- CPRE LDN ** WAIT 25 MICROSECONDS BEFORE CHECKING
- SBN 1
- NJN *-1 IF DELAY NOT COMPLETE
- TLDC /EXPACS/MXP+0,XBP
- CRD CM
- LDD CM+4
- ZJN CPR4 IF EXCHANGE TAKEN
- CPRG LDC **+CMST+1 CHECK FOR CPU 1 IN MONITOR MODE
- CRD CM
- LDD CM+1
- ADD CM+2
- ADD CM+3
- ADD CM+4
- ZJN CPR5 IF CPU 1 NOT IN MONITOR MODE
- CPRH LDC ** WAIT 125 MICROSECONDS BEFORE RETRYING
- SBN 1
- NJN *-1 IF DELAY NOT COMPLETE
- UJN CPR5 UPDATE TIME AND RETRY
- CPR3 TLDC /EXPACS/MXP+0,XBP EXCHANGE CPU
- MXN MXN 0
- CRD CM READ (P), (A0), (B0)
- LDD CM+4
- CPR4 ZJN CPR10 IF EXCHANGE TAKEN
- * ZJN CPR9 IF EXCHANGE TAKEN (CME MACHINE)
- CPRF EQU *-1
- LDD CN+4
- SBN NXWF
- MJN CPR10 IF NO WAIT FOR EXCHANGE REQUIRED
- CPR5 RJM TIM UPDATE TIME
- IAN 14
- SBD T1
- STD T2
- PJN CPR6 IF NO ROLL OVER
- AOD T2
- CPR6 ADC -MLSC
- MJN CPR7 IF NOT ONE MILLISECOND
- LDN 1 HAVE CPUMTR NOTE EXCHANGE REQUEST
- STD CM+4
- LDN CPSL
- CWD CM
- CPR7 LDD T2 CHECK FOR MAXIMUM EXCHANGE WAIT
- SBM MTRJ
- MJN CPR8 IF NOT MAXIMUM
- RAM MTRJ UPDATE WORST-CASE *MXN* TIME
- CPR8 LJM CPR2 RETRY EXCHANGE
- CPR9 ISTORE TIMB,(UJN TIM6) SET UP EXCHANGE PACKAGE CHECK
- CPR10 LJM CPRX EXIT
- WXP SPACE 4,10
- ** WXP - WAIT EXCHANGE PACKAGE READY.
- *
- * INSURES *CPUMTR* HAS EXITED FROM MONITOR MODE ON LAST CPR
- * REQUEST. ALSO ADVANCES TIME WHILE WAITING.
- *
- * EXIT (A) = 0.
- *
- * USES CM - CM+4.
- *
- * CALLS TIM.
- WXP SUBR ENTRY/EXIT
- WXP1 RJM TIM
- TLDC /EXPACS/MXP+6,XBP READ (MA), (A6), (B6)
- CRD CM
- LDD CM
- ADD CM+1
- ZJN WXPX IF PACKAGE READY
- UJN WXP1 LOOP
- TITLE MEMORY ALLOCATION ROUTINES.
- *** MEMORY ALLOCATION.
- *
- * CENTRAL MEMORY IS ALLOCATED TO EACH CONTROL POINT IN
- * CONTIGUOUS BLOCKS FOR EACH JOB. UNALLOCATED MEMORY
- * GENERALLY RESIDES BETWEEN JOBS. IF A JOB REQUIRES MORE
- * MEMORY THAN IS AVAILABLE ABOVE IT-S CURRENT MEMORY, A
- * STORAGE MOVE IS REQUIRED. THE JOBS ARE MOVED ONE AT A
- * TIME TO MOVE THE REQUIRED AMOUNT OF UNALLOCATED MEMORY
- * TO THE REQUESTING JOB.
- MST SPACE 4,25
- ** MST - MOVE STORAGE.
- *
- * *MST* WILL LOOP MOVING CONTROL POINTS UNTIL THE MOVE IS
- * COMPLETE, A CONTROL POINT CANNOT BE MOVED DUE TO PP ACTIVITY,
- * OR UNTIL 10B CONTROL POINTS HAVE BEEN MOVED. IF ANY OF
- * THESE CONDITIONS ARE ENCOUNTERED AN EXIT IS MADE SO THAT THE
- * THE ROUTINE WILL BE REENTERED.
- *
- * ENTRY (MM - MM+4) = MOVE PARAMETERS.
- * (OR+1) = REQUESTED FIELD LENGTH.
- * (OR+2) = XX00 IF CM REQUEST.
- * = XX01 IF ECS REQUEST.
- * (OR+3) = *CMRL*/*FLSW* IF CM REQUEST.
- * = *ECRL*/*ECSW* IF ECS REQUEST.
- * (OR+4) = 4 IF POSITIVE FL/ECS REQUEST.
- * = 0 IF NEGATIVE FL REQUEST.
- *
- * USES CP, T1, T5, MM+1, CM - CM+6, CN - CN+3, CS - CS+4,
- * OR - OR+4.
- *
- * CALLS AMV, AVC, CPR, ISR, MRP, PHE, SCP, STA, TIM.
- *
- * MACROS MONITOR.
- MSTX RJM MRP RETURN TO MAIN LOOP
- LDM CCPA
- NJN MSTX IF MOVE NOT COMPLETE
- * CHECK IF PP-S PAUSED.
- MST RJM TIM UPDATE TIME
- LDD MM.0
- STD CP SET CP FOR MOVE
- RJM SCP
- ADN STSW GET CP STATUS
- CRD CS
- LDD OR+2 SET STORAGE TYPE
- LPN 1
- STD T5
- LDD CS CHECK CP STATUS
- LPN 37
- ZJN MST3 IF NO PP-S ASSIGNED
- LMN 1
- SHN 14
- LMD CP CHECK IF MOVE OF REQUESTING CP
- LMD MM.3
- NJN MST1 IF NOT ONLY REQUESTING PP
- LDD OR+2
- LPC 200
- ZJN MST3 IF NOT SPECIAL REQUEST
- MST1 LDN PPXE SET PP1 *ACPP* OFFSET
- STD T1
- MST2 LDN PPXE ADVANCE TO NEXT PP
- RAD T1
- TADC ACPP,PPX READ CP/PCP ASSIGNMENT
- CRD CM
- TLMC ACPP,PPX (LAST *ACPP* WORD + *PPXE*)
- MSTA EQU *-1
- MST3 ZJN MST6 IF END OF SCAN
- LDD CM
- LMD MM.0
- NJN MST2 IF PP NOT ACCESSING MOVE CP/PCP
- ** IMPORTANT NOTE -
- *
- * ALL MONITOR FUNCTIONS SHOULD BE CONSIDERED STORAGE MOVABLE
- * WHILE THE REQUEST IS PENDING. THEREFORE, PP ROUTINES
- * SHOULD RECOMPUTE ANY ABSOLUTE ADDRESSES AFTER ISSUING ANY
- * MONITOR FUNCTION. THIS WILL ALLOW FOR THE FUTURE GOAL OF
- * ACTUALLY ACHIEVING THIS OBJECTIVE.
- LDD T1 SET PP COMMUNICATION AREA OFFSET
- SHN PPCES-PPXES
- ADD OF READ OUTPUT REGISTER
- CRD CM
- LDD CM
- ZJN MST5 IF NO FUNCTION
- SHN 21-10
- MJN MST2 IF STORAGE MOVE ALLOWED
- SHN 10-21
- SBN SMAM
- MJN MST5 IF NON-MOVABLE *MTR* FUNCTION
- SBN SMEM-SMAM
- MJN MST2 IF MOVABLE FUNCTION
- MST5 RJM AVC
- LJM MSTX RETURN
- * CP READY TO MOVE.
- MST6 LDD MM.0 SET CP/PCP ADDRESS
- RJM SCP
- ADD OR+3 GET FL CONTROL WORD
- CRD CS
- SBD OR+3
- ADN ECSW CHECK *ECXM* INTERLOCK
- CRD CM
- LDD CM+1
- SHN 21-13
- MJN MST5 IF *ECXM* IN PROGRESS
- LDD MM.0
- RJM STA FETCH MEMORY TABLE ENTRY
- CRD CM
- LDD CM+1 CHECK FORWARD LINK
- LMD NC
- NJN MST9 IF NOT LAST CP
- LDD MM.1
- SHN 21-13
- PJN MST9 IF UPWARD MOVE
- LDD OR+2
- SHN 21-7
- PJN MST7 IF NOT SPECIAL REQUEST
- LDN 0
- UJN MST8 SAVE INCREMENT
- MST7 LDM CS,OR+4 MOVE DOWN BY INCREASE
- MST8 SBD OR+1
- STD MM.1
- MST9 LDD CS+4 CHECK CURRENT FL
- ADD CS
- NJN MST11 IF FL .NE. 0
- * UPDATE RA FOR CONTROL POINT IF FL = 0.
- STD CN+3
- LDD MM.1 SET MEMORY INCREMENT
- STD CN
- LDD T5 STORAGE TYPE
- STD CN+1
- LDN MRAF MODIFY REFERENCE ADDRESS
- RJM ISR
- RJM AMV ADVANCE MOVE
- LDD MM.4
- ZJN MST10 IF MOVE COMPLETED
- CRD OR
- LJM MST LOOP
- MST10 LJM FNR EXIT
- * INITIATE STORAGE MOVE.
- MST11 LDN 0 PRESET NO CPU STATUS
- STD CM+1
- LDD MM.0 CHECK CP AT MOVE
- SBD NC
- PJN MST13 IF PSEUDO CONTROL POINT
- LDN SMRL
- CWD CP-4 SET *JAV* INTERLOCK
- MONITOR DCPM
- LDD CM+1 SAVE CPU STATUS FROM *DCPM*
- STM MSTE
- LDD CP GET CPA ERROR FLAG
- SHN 7
- ADN STSW
- CRD CS
- LDD CS+1
- LPN 37
- LMN PEET
- NJN MST12 IF NOT PARITY ERROR
- MSTC RJM PHE VALIDATE PARITY ERROR
- * UJN *+2 (NO S/C REGISTER OR SIMULATOR)
- NJN MST15 IF ERROR IN SCR
- MST12 LDC 0 SET CPU STATUS
- MSTE EQU *-1
- STD CM+1
- MST13 LDD MM.1 SET MOVE INCREMENT
- STD CM
- LDC 0 SET/CLEAR BLOCK MOVE
- MSTG EQU *-1
- STD CM+2
- LDN 0 CLEAR BLOCK MOVE INDICATOR
- STM MSTG
- LDD T5 INSERT MEMORY TYPE
- STD CM+3
- LDD CP SET CONTROL POINT NUMBER
- STD CM+4
- LDN SMRL STORE MOVE REQUEST
- CWD CM
- LDC 0 SET MOVE IN PROGRESS FLAG
- ORG *-1
- LOC CCPA
- UJN CCP6 STORAGE MOVE IN PROGRESS
- LOC *O
- STM CCPA
- LDM MAFC,CM+3 REQUEST STORAGE MOVE
- STD CN+2
- LDN EPRF ENTER PROGRAM MODE REQUEST
- RJM CPR
- LJM MSTX RETURN
- * SET STORAGE UNAVAILABLE WHEN FATAL ERROR SET.
- MST15 LDC FNC SET RETURN FOR COMPLETING MOVE
- STM AMV
- LDN SMRL CLEAR *SMRL*
- CWD ZR
- LJM AMV10 COMPLETE MOVE
- * COMPLETE MOVE PROCESSING.
- *
- * ENTRY (CM - CM+4) = (SMRL).
- MSTX. LJM * RETURN EXIT COMPLETION CODE
- MST. EQU *-1
- LDD CM+1
- ZJN MST16 IF NO ERROR ON MOVE
- LDD MM.0
- RJM SCP SET CP / PCP ADDRESS
- ADN TFSW
- CRD CM+2 (CM+2) = EJT ORDINAL
- LDN 0
- STD CP INDICATE REQUEST FROM CP 0
- LDC 4000+ECET
- STD CM+1 SET ERROR FLAG
- MONITOR CEFM
- * LDN 0 CLEAR MOVE IN PROGRESS FLAG
- MST16 STM CCPA
- LDD MM.0 SET MOVE CP / PCP
- STD CP
- LDD MM.4 RE-READ OUTPUT REGISTER
- CRD OR
- LDD OR+2 RESET STORAGE TYPE
- LPN 1
- STD T5
- RJM AMV ADVANCE MOVE
- UJN MSTX. RETURN
- AMF SPACE 4,15
- ** AMF - ADJUST MACHINE FL.
- *
- * ENTRY (A) = 10, TO UPDATE *MABL*, *ACML*, AND MCT OF LAST CP.
- * (A) = 11, TO UPDATE MCT OF LAST CP ONLY.
- * (OR+1) = MEMORY DECREMENT (IF POSITIVE).
- * (OR+1) = MEMORY INCREMENT (IF NEGATIVE).
- *
- * USES CN, CN+1.
- *
- * CALLS CPR, WXP.
- AMF SUBR ENTRY/EXIT
- STD CN+1 SAVE REQUEST TYPE
- LDD OR+1 SET MEMORY INCREMENT/DECREMENT
- STD CN
- LDN MFLF MODIFY MACHINE FL
- RJM CPR ISSUE REQUEST
- RJM WXP WAIT FOR REQUEST TO COMPLETE
- UJN AMFX RETURN
- AMM SPACE 4,25
- ** AMM - ACCUMULATE MEMORY TO MOVE.
- *
- * ENTRY (A) = ADDRESS OF ORDINAL OF MCT ENTRY.
- * (T3) = UNASSIGNED MEMORY ACCUMULATOR.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (T7) = AMOUNT OF MEMORY REQUIRED.
- * (OR+3) = *FLSW* IF CM REQUEST.
- * = *ECSW* IF XM REQUEST.
- * (MM+1) = MOVE COUNT ACCUMULATOR.
- * (MM+4) = ASSIGNED MEMORY ACCUMULATOR.
- *
- * EXIT (A) = INITIAL MOVE INCREMENT.
- * (MM+3) = ASSIGNED MEMORY TO MOVE.
- * (CS) = FIRST CP/PCP FOR LOWER MOVE.
- * (CS+1) = FIRST CP/PCP FOR UPPER MOVE.
- * (CS+2) = FIRST LOWER MOVE INCREMENT.
- * (CS+3) = FIRST UPPER MOVE INCREMENT.
- * (CS+4) = NUMBER OF CP/PCP-S TO MOVE.
- *
- * USES BA, PA, MM+1, MM+2, MM+4, T3, CN - CN+4.
- *
- * CALLS RSB, SCP, TIM.
- AMM5 LDD CS+4 RESET MOVE COUNT FOR REENTRY
- STD MM+1
- LDD MM+3 RESET MOVE BLOCKS FOR REENTRY
- STD MM+4
- LDN 0 INDICATE SEARCH INCOMPLETE
- AMM SUBR ENTRY/EXIT
- STD PA
- LPN 1
- ADN CM SET ADDRESS OF BACKWARD/FORWARD LINK
- STD BA
- AMM1 LDI PA SET CP/PCP AREA ADDRESS
- RJM SCP
- ADD OR+3 GET FL CONTROL WORD
- CRD CN
- LDD CN+4 ACCUMULATE MEMORY TO MOVE
- ADD CN
- ZJN AMM4 IF NO ASSIGNED MEMORY
- RAD MM+4
- SHN -14
- ZJN AMM2 IF NO OVERFLOW
- LCN 0
- STD MM+4 SET MAXIMUM MEMORY
- AMM2 AOD MM+1
- AMM3 MJN AMM1 IF MORE MEMORY REQUIRED
- AMM4 LDI PA
- ZJN AMM5 IF END OF MCT SCAN
- STD MM+2
- LDI BA SAVE LINK
- STM AMMA
- RJM TIM UPDATE CLOCK
- LDC ** READ MCT ENTRY
- AMMA EQU *-1
- RJM RSB
- ZJN AMM1 IF NO UNASSIGNED MEMORY FOUND
- * ACCUMULATE UNASSIGNED MEMORY.
- LDD MM+2 SET CP/PCP FOR MOVE
- STM CS-CM,BA
- LDD MM+1 SAVE MOVE COUNT
- STD CS+4
- LDD MM+4 SAVE BLOCKS TO MOVE
- STD MM+3
- LDD T0 SAVE BLOCK SIZE
- STM CS+2-CM,BA
- RAD T3 ACCUMULATE UNASSIGNED MEMORY
- SBD T7
- MJN AMM3 IF MORE MEMORY REQUIRED
- SBD T0
- LMC -0 SET PARTIAL BLOCK
- STM CS+2-CM,BA
- LJM AMMX RETURN
- AMV SPACE 4,20
- ** AMV - ADVANCE MOVE.
- *
- * ENTRY (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (OR+1) = REQUESTED MEMORY.
- * (OR+2) = *RSTM* FLAGS.
- * (OR+3) = *CMRL*/*FLSW* IF CM REQUEST.
- * = *ECRL*/*ECSW* IF ECS REQUEST.
- * (OR+4) = 4 IF POSITIVE FL/ECS REQUEST.
- * = 0 IF NEGATIVE FL REQUEST.
- * (MM - MM+4) = MOVE PARAMETERS.
- *
- * EXIT (MM - MM+4) UPDATED.
- * *MABL* AND *ACML* ADJUSTED, IF SPECIAL *VER* REQUEST.
- *
- * USES CP, T4, CN - CN+4, CS - CS+4, MM - MM+4.
- *
- * CALLS AMF, MFL, RSB, SCP.
- AMV8 LDD MM.3 REQUESTING CP NUMBER
- STD CP
- RJM SCP SET CP ADDRESS
- ADD OR+3
- CRD CS
- RJM MFL
- LDD OR+2
- SHN 21-7
- PJN AMV9 IF NOT *VER* SPECIAL REQUEST
- LDN 10 SET REQUEST TYPE
- RJM AMF ADJUST MACHINE FL
- LDK MABL READ NEW *MABL*
- CRD CN
- LDD CN+2 SAVE NEW SIZE FOR COMPLETION BIT TESTING
- STM PCBA
- LDD CN+3
- STM PCBB
- AMV9 LDD MM.4 SET *RSTM* COMPLETE
- CWD ZR
- AMV10 LDD MM.4 EXTRACT REENTRY TABLE INDEX
- SHN -3
- STD MM.4
- LDC PPR RESET MAIN LOOP
- STM TREA,MM.4
- * STM TREA-(OF)/10,MM.4
- AMVC EQU *-1
- LDN ZERL CLEAR MOVE PARAMETERS
- CRD MM
- LCN 0 SET MOVE COMPLETE
- STD MM.0
- AMVX LDN CMCL STORE CONTROL WORD
- CWD MM
- RJM PCM PURGE CACHE IF CPU 1 IN MONITOR MODE
- LJM * RETURN EXIT
- AMV EQU *-1
- LDD MM.0 GET MCT ENTRY FOR MOVE CP
- RJM RSB
- STD T4
- LDD CM+1 CHECK FORWARD LINK
- LMD NC
- ZJN AMV4 IF LAST CP
- LDD MM.1
- SHN 6
- MJN AMV5 IF DOWNWARD MOVE
- LDD MM.0
- LMD MM.3
- ZJN AMV3 IF REQUESTING CP JUST MOVED
- LDD CM
- STD MM.0 SET NEXT CP/PCP FOR MOVE
- LMD MM.3
- NJN AMV1 IF UPPER MOVE NOT COMPLETE
- LDD OR+4
- NJN AMV3 IF NOT NEGATIVE FL REQUEST
- AMV1 LDD MM.0
- RJM RSB FETCH NEXT MOVE INCREMENT
- AMV2 STD MM.1
- UJP AMVX RETURN
- * BEGIN LOWER MOVE.
- AMV3 LDC 0 INITIAL LOWER MOVE INCREMENT
- AMVA EQU *-1
- ZJN AMV4 IF NO LOWER MOVE
- STD T4
- LDD MM.2
- NJN AMV6 IF NOT CMR REQUEST
- AMV4 LJM AMV8 COMPLETE MOVE
- * ADVANCE LOWER MOVE.
- AMV5 LDD MM.0 CHECK CP/PCP JUST MOVED
- LMC 0
- AMVB EQU *-1
- ZJN AMV4 IF REQUESTING CP
- LDD CM+1
- AMV6 STD MM.0 SET NEXT CP/PCP FOR MOVE
- LMD MM.3
- NJN AMV7 IF LOWER MOVE NOT COMPLETE
- LDD OR+4
- ZJN AMV4 IF NEGATIVE FL REQUEST
- AMV7 LCN 0 NEXT MOVE INCREMENT
- LMD T4
- UJN AMV2 SET NEGATIVE INCREMENT
- CFL SPACE 4,10
- ** CFL - CLEAR FL INCREASE.
- *
- * ENTRY (CP) = CONTROL POINT NUMBER.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- *
- * USES CM - CM+4.
- *
- * CALLS SCP.
- CFL1 LDN 0 CLEAR ECS INCREASE
- STD CM+3
- LDD CM+1
- SCN 2
- CFL2 STD CM+1
- LDD CP SET CP/PCP ADDRESS
- RJM SCP
- ADN FLIW REWRITE FL INCREASE CONTROL WORD
- CWD CM
- CFL SUBR ENTRY/EXIT
- LDD CP
- ZJN CFLX IF CMR REQUEST
- RJM SCP
- ADN FLIW READ FL INCREASE WORD
- CRD CM
- LDD T5
- NJN CFL1 IF XM REQUEST
- STD CM+2
- STD CM+4 CLEAR FL INCREASE
- LDD CM+1
- SCN 1
- UJN CFL2 REWRITE FL INCREASE CONTROL WORD
- CRA SPACE 4,15
- ** CRA - CHANGE REFERENCE ADDRESS.
- *
- * ENTRY (CP) = CP/PCP NUMBER.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (T8) = MCT ORDINAL OF HOLE.
- * (OR+2) = *RSTM* FLAGS.
- *
- * USES CP, CN - CN+4.
- *
- * CALLS ISR.
- CRA1 LDD T8 SET MCT ORDINAL OF HOLE
- STD CN
- CRA2 LDD T5 INSERT STORAGE TYPE
- STD CN+1
- LDN CRAF CHANGE RA IN CPA, XP AND MCT
- RJM ISR
- CRA SUBR ENTRY/EXIT
- LDD OR+2
- SCN 77 PRESERVE PCP FLAGS
- STD CN+3
- SHN 21-12
- PJN CRA1 IF NOT PSEUDO-ROLLOUT
- LDD CP
- STD CN
- LDD T8 SET (CP) TO PCP NUMBER
- STD CP
- UJN CRA2 COMPLETE REQUEST
- EMO SPACE 4,15
- ** EMO - EVALUATE MOVE OPTIONS.
- *
- * ENTRY (T8) = MCT ORDINAL OF HOLE.
- * (CS - CS+4) = FL CONTROL WORD OF REQUESTING CP.
- *
- * EXIT TO CALLER IF NO FIELD LENGTH ASSIGNED.
- * TO *MST* TO INITIATE MOVE IF FL PRESENT.
- *
- * USES MB, MM - MM+4.
- *
- * CALLS IMV.
- EMO5 LDD T8
- ZJN EMO2 IF NO HOLE FOUND
- EMO SUBR ENTRY/EXIT
- LDD CS
- ADD CS+4
- ZJN EMO1 IF NO ASSIGNED FL
- SHN -MBCS
- ADN 1 CONVERT MEMORY MOVE COUNT
- EMO1 STD MB
- ZJN EMO5 IF NEW JOB / NEW XM REQUEST
- * INVESTIGATE INCREMENTAL MOVE.
- EMO2 RJM IMV INITIATE MOVE
- LDD CS+4
- SBD MB
- MJN EMO4 IF INCREMENTAL CHEAPER THAN BLOCK MOVE
- LDD T8
- ZJN EMO4 IF NO HOLE FOUND
- STM MSTG
- LDD MM.3 SET CP FOR MOVE
- STD MM.0
- * LDN 1 FAKE POSITIVE MOVE INCREMENT
- STD MM.1
- EMO3 LDN 0 CLEAR LOWER MOVE
- STD MM.2
- EMO4 LDD OA SET REQUESTING PP OR ADDRESS
- STD MM.4
- LDN CMCL STORE MOVE CONTROL WORD
- CWD MM
- RJM PCM PURGE CACHE IF CPU 1 IN MONITOR MODE
- LJM MST MOVE STORAGE
- IMV SPACE 4
- ** IMV - INITIATE INCREMENTAL MOVE.
- *
- * ENTRY (CP) = CONTROL POINT NUMBER / MCT ORDINAL.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (T6) = MCT ORDINAL IF NORMAL FL OR XM REQUEST.
- * = ORDINAL OF BACKWARD LINK IF NFL REQUEST.
- * (T7) = AMOUNT OF MEMORY REQUIRED.
- * (OR+4) = 4 IF POSITIVE FL OR XM REQUEST.
- * = 0 IF NEGATIVE FL REQUEST.
- *
- * EXIT (CS+4) = MOVE OVERHEAD COUNT.
- * (MM - MM+3) SET UP FOR FIRST MOVE.
- *
- * USES MB+1, T2, T3, T4, CM - CM+4, CS - CS+4, MM - MM+4.
- *
- * CALLS AMM, RSB, STA, TIM.
- *
- * ERROR EXIT TO *HGM* IF MOVE CANNOT BE COMPLETED.
- IMV SUBR ENTRY/EXIT
- LDN ZERL
- CRD CS
- LDD T6 FETCH UNASSIGNED MEMORY BLOCK
- RJM RSB
- STD T3 SET HOLE SIZE ABOUT THIS CP
- LDD CM+1
- STD T4 SAVE FORWARD LINK
- * COMPUTE UPPER + LOWER MOVE.
- LDN CM+1 ACCUMULATE MEMORY FOR UPPER MOVE
- RJM AMM
- NJN IMV2 IF REQUEST SATISFIED WITH UPPER MOVE
- LDD T6
- STD T2
- RJM STA GET MCT ENTRY
- CRD CM
- LDN T2 ACCUMULATE MEMORY FOR LOWER MOVE
- RJM AMM
- NJN IMV2 IF MOVE CAN BE COMPLETED
- IMV1 RJM HGM HANG *MTR* (NO RETURN)
- IMV2 LDD MM+3 CONVERT MOVE MEMORY TO COUNT
- SHN -MBCS
- RAD CS+4 APPEND TO MOVE COUNT
- STD MB+1
- RJM TIM UPDATE CLOCK
- LDN CMCL
- CRD MM
- CWD CS SAVE COMPUTED VALUES
- LDD CP
- SBN 2
- MJN IMV5 IF CMR REQUEST OR CP 1
- * COMPUTE LOWER + UPPER MOVE.
- LDD T6 GET UNASSIGNED MEMORY BLOCK
- RJM RSB
- STD T3 SET HOLE SIZE ABOUT THIS CP
- LDN ZERL
- CRD CS
- LDN T2 ACCUMULATE MEMORY FOR LOWER MOVE
- RJM AMM
- NJN IMV3 IF REQUEST SATISFIED WITH LOWER MOVE
- LDD T4
- STD CM+1
- LDN CM+1 ACCUMULATE MEMORY FOR UPPER MOVE
- RJM AMM
- ZJN IMV1 IF MOVE CANNOT BE COMPLETED
- IMV3 LDD MM+3
- SHN -MBCS CONVERT MOVE MEMORY TO COUNT
- RAD CS+4
- * COMPARE OVERHEAD OF UPPER/LOWER VS LOWER/UPPER MOVES.
- SBD MB+1
- MJN IMV4 IF LOWER/UPPER MOVE CHEAPER
- LDN CMCL
- CRD CS RESET UPPER/LOWER PARAMETERS
- IMV4 RJM TIM
- IMV5 LDD CS+1
- NJN IMV6 IF UPPER MOVE PRESENT
- STD MM.2
- LDD CS SET INITIAL CP/PCP FOR LOWER MOVE
- STD MM.0
- LDD CS+2 DEFINE NEGATIVE INCREMENT
- LMC -0
- UJN IMV7 SET INCREMENT
- IMV6 STD MM.0 SET INITIAL CP/PCP FOR UPPER MOVE
- LDD CS
- STD MM.2 SET INITIAL CP/PCP FOR LOWER MOVE
- LDD CS+2
- STM AMVA SET INITIAL LOWER MOVE INCREMENT
- LDD CS+3
- IMV7 STD MM.1 SET MOVE INCREMENT
- LDD CP
- STD MM.3 SET REQUESTING CP
- STM AMVB
- LJM IMVX RETURN
- ISR SPACE 4,15
- ** ISR - ISSUE STORAGE REQUEST.
- *
- * ENTRY (A) = MONITOR FUNCTION.
- * (CP) = CONTROL POINT NUMBER.
- * (CN, CN+1, CN+3) = PARAMETERS.
- *
- * EXIT (A) = 0.
- *
- * USES CN - CN+4.
- *
- * CALLS CPR, TIM.
- ISR SUBR ENTRY/EXIT
- STM ISRA
- LDD CP SET CP NUMBER IN X0 IMAGE
- STD CN+2
- LDN 0 CLEAR UNUSED BYTE
- STD CN+4
- LDN SMRL STORE FUNCTION IN PROGRESS
- CWD CN
- LDC 10000 ISSUE *CPUMTR* REQUEST
- ISRA EQU *-1
- RJM CPR
- ISR1 RJM TIM UPDATE TIME
- LDN SMRL
- CRD CN GET FUNCTION STATUS
- LDD CN
- NJN ISR1 IF NOT COMPLETE
- * LDN 0
- UJN ISRX RETURN
- MFL SPACE 4,20
- ** MFL - MODIFY FIELD LENGTH.
- *
- * ENTRY (CP) = CONTROL POINT NUMBER.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (OR+1) = NEW FIELD LENGTH.
- * (OR+2) = *RSTM* FLAGS.
- * (OR+3) = *CMRL*/*FLSW* IF CM REQUEST.
- * = *ECRL*/*ECSW* IF ECS REQUEST.
- * (OR+4) = 4 IF POSITIVE FL/ECS REQUEST.
- * = 0 IF NEGATIVE FL REQUEST.
- * (CS - CS+4) = FL STATUS.
- *
- * USES CM - CM+4, CN - CN+4.
- *
- * CALLS CFL, CPR, ISR, SCP, WXP.
- *
- * ERROR EXIT TO *HGM* IF CMR SIZE .GE. MCMR*100B.
- MFL4 LDD CP SET CP/PCP NUMBER
- STD CN+2
- LDN 0 CLEAR UNUSED FIELDS
- STD CN+4
- LDN SMRL SET REQUEST IN PROGRESS
- CWD CN
- MFL5 LDD CP FORM CP/PCP AREA ADDRESS
- RJM SCP
- ADN STSW GET STATUS WORD
- CRD CM
- LDD CM CHECK CPU STATUS
- SHN -11
- LMN ACPS
- ZJN MFL6 IF ACTIVITY IN CPU - 0
- LDC 10000
- MFL6 LMN MFLF MODIFY FIELD LENGTH
- RJM CPR
- RJM WXP WAIT REQUEST COMPLETE
- LDN SMRL
- CRD CN FETCH REQUEST STATUS
- LDD CN
- NJN MFL5 IF CHANGE NOT MADE
- MFL SUBR ENTRY/EXIT
- LDD OR+2
- LPC 1S11+1S10+1S7
- NJN MFLX IF SPECIAL REQUEST
- STD CN+3
- LDD CP
- NJN MFL2 IF NOT CMR REQUEST
- LDD OR+1
- SBK MCMR
- MJN MFL3 IF REQUEST .LT. MCMR*100B
- MFL1 RJM HGM HANG *MTR* (NO RETURN)
- MFL2 RJM CFL CLEAR FL INCREASE REQUEST
- MFL3 LDD OR+1
- SBM CS,OR+4 SET MEMORY INCREMENT
- STD CN
- ZJN MFLX IF NO CHANGE
- LDD OR+4
- SHN 6 SET TYPE OF FL + TYPE OF MEMORY
- LMD T5
- STD CN+1
- MFLA LJM MFL4 (DUAL CPU)
- * LDN MFLF (SINGLE CPU)
- * RJM ISR
- CON ISR
- UJP MFLX RETURN
- PVE SPACE 4,20
- ** PVE - PROCESS SPECIAL REQUEST.
- *
- * ENTRY (T5) = 0 IF CM REQUEST.
- * (T5) = 1 IF XM REQUEST.
- * (OR+1) = REQUESTED MEMORY INCREMENT.
- * (OR - OR+4) = UPDATED OUTPUT REGISTER.
- *
- * EXIT (A) .GT. 0 IF INCREASE.
- * .LT. 0 IF DECREASE.
- * (CP) = LAST CONTROL POINT.
- * (T6) = MCT ORDINAL OF LAST CONTROL POINT.
- * (T7) = AMOUNT OF INCREASE / DECREASE.
- * (CS - CS+4) = FL CONTROL WORD FOR LAST CONTROL POINT.
- *
- * USES CP, T6, T7, CM - CM+4, CS - CS+4.
- *
- * CALLS AMF, HNG, SCP.
- PVE2 LDN ** SET CP TO LAST CONTROL POINT
- * LDN (NC)-1
- PVEA EQU *-1
- STD CP
- STD T6
- RJM SCP READ FL CONTROL WORD
- ADD OR+3
- CRD CS
- LDD OA STORE OUTPUT REGISTER
- CWD OR
- LDD OR+1 SET MEMORY INCREMENT
- STD T7
- SHN 21-13 CHECK REQUEST TYPE
- PJN PVEX IF *VER* REQUESTING MEMORY
- LDN 11 SET REQUEST TYPE
- RJM AMF SET UNASSIGNED MEMORY AFTER LAST CP
- LCN 1 INDICATE *VER* RETURNING MEMORY
- PVE SUBR ENTRY/EXIT
- LDD OA VERIFY CALLER
- SBN 1
- CRD CM
- LDD CM+1
- SCN 77
- SHN 6
- LMD CM
- LMC 3RRVE
- ZJN PVE2 IF CALLER IS *VER*
- PVE1 RJM HNG HANG PP
- RSB SPACE 4,15
- ** RSB - RETURN SIZE OF UNASSIGNED MEMORY BLOCK.
- *
- * ENTRY (A) = ORDINAL OF MCT ENTRY.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- *
- * EXIT (A) = (T0) = BLOCK SIZE.
- * (T2) = ORDINAL OF MCT ENTRY.
- * (CM - CM+4) = MCT ENTRY.
- *
- * USES T0, T2, CM - CM+4.
- *
- * CALLS STA.
- *
- * ERROR TO *HGM* IF MCT ENTRY DESTROYED.
- RSB2 LDC 3777 RETURN MAXIMUM MEMORY
- RSB3 STD T0
- RSB SUBR ENTRY/EXIT
- STD T2
- RJM STA FETCH MCT ENTRY
- CRD CM
- LDD CM+3 VERIFY ENTRY
- SHN 21-13
- MJN RSB1 IF MCT ENTRY BAD
- SHN 14-6
- LMD CM+4 CHECK UNASSIGNED MEMORY
- SBK 3777
- PJN RSB2 IF .GE. MAXIMUM FOR JOB
- LDD CM+4
- UJN RSB3 RETURN
- RSB1 RJM HGM HANG *MTR* (NO RETURN)
- SCP SPACE 4,10
- ** SCP - SET CP/PCP AREA ADDRESS.
- *
- * ENTRY (A) = CP/PCP NUMBER.
- * (NC) = SYSTEM CP NUMBER.
- *
- * EXIT (A) = CPA/PCPA ADDRESS.
- SCP1 ADD NC SET REAL CP AREA ADDRESS
- SHN 7
- SCP SUBR ENTRY/EXIT
- SBD NC
- MJN SCP1 IF REAL CP
- ZJN SCP1 IF SYSTEM CP
- SHN 7
- ADC 0 ADD BASE PCPA ADDRESS - CPA LENGTH
- SCPA EQU *-1
- UJN SCPX RETURN
- SFL SPACE 4,15
- ** SFL - SET FL INCREASE.
- *
- * ENTRY (CP) = CONTROL POINT NUMBER.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (OR+1) = FL TO SET FOR INCREASE.
- * (OR+4) = 0 IF NEGATIVE FL REQUEST.
- * (CS - CS+4) = CP FL STATUS WORD.
- *
- * USES CM - CM+4.
- *
- * MACROS MONITOR.
- SFL5 LDD OR+1 SET XM FL REQUIRED
- STD CM+3
- SFL6 LDD CP SET CP ADDRESS
- SHN 7
- ADN FLIW REWRITE FL INCREASE CONTROL WORD
- CWD CM
- LDN 0 CLEAR INPUT FILE SCHEDULING FLAG
- STD CM+2
- MONITOR RSJM REQUEST JOB SCHEDULER
- SFL SUBR ENTRY/EXIT
- LDD OR+2
- SHN 21-6
- PJN SFLX IF DO NOT SET *FLIW*
- LDD CP
- SHN 7
- ADN FLIW READ FL INCREASE CONTROL WORD
- CRD CM
- LDD T5
- NJN SFL5 IF XM REQUEST
- LDD CM+4
- ZJN SFL4 IF NO CM INCREASE PENDING
- LDD OR+4
- ZJN SFL2 IF NFL REQUEST
- SFL1 LDD CS
- UJN SFL3 COMPUTE TOTAL CM FL
- SFL2 LDD CM+2
- NJN SFLX IF REISSUE OF NFL REQUEST
- LDD OR+1
- SBD CS
- STD CM+2 COMPUTE NFL INCREASE AMOUNT
- LDD CM+4
- SBD CS
- SFL3 ADD OR+1
- STD CM+4
- LJM SFL6 REWRITE FL INCREASE CONTROL WORD
- SFL4 LDD OR+4
- NJN SFL1 IF NOT NFL INCREASE
- LDD OR+1
- SBD CS
- STD CM+2 COMPUTE NFL INCREASE
- LDD CS+4
- UJN SFL3 ADD NFL TO CM FL
- STA SPACE 4,10
- ** STA - SET MEMORY CONTROL TABLE ADDRESS.
- *
- * ENTRY (A) = CP/PCP NUMBER.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- *
- * EXIT (A) = ABSOLUTE TABLE ADDRESS.
- STA SUBR ENTRY/EXIT
- SHN 1
- ADC 0 APPEND BASE MCT ADDRESS
- STAA EQU *-1
- ADD T5
- UJN STAX RETURN
- UFL SPACE 4,20
- ** UFL - SET UNASSIGNED FIELD LENGTHS.
- *
- * ENTRY (CP) = CP/PCP NUMBER.
- * (NC) = SYSTEM CP NUMBER.
- * (T5) = 0 IF CM REQUEST.
- * = 1 IF XM REQUEST.
- * (T7) = AMOUNT OF MEMORY REQUIRED.
- * (OR+4) = 0 IF NFL REQUEST.
- * (CS - CS+4) = FL CONTROL WORD OF REQUESTING CP.
- *
- * EXIT (A) .LT. 0 IF MEMORY UNAVAILABLE.
- * (T8) = MCT ORDINAL OF MEMORY HOLE.
- *
- * USES T1, T3, T4, T7, T8, CM - CM+4, CN - CN+4.
- *
- * CALLS RSB, TIM.
- UFL11 LDD T4
- NJN UFL12 IF CP HAS MEMORY ASSIGNED
- LDD OR+4
- ZJN UFL12 IF NFL REQUEST
- LDN MSCL GET MEMORY PAD SIZE
- CRD CN
- LDD T7 CHECK REQUEST SIZE
- ADD CN+4
- SBK 3770
- MJN UFL12 IF REQUEST SHORT ENOUGH TO PAD
- LDN 0
- STD CN+4
- UFL12 LDD CM CHECK CENTRAL MEMORY
- SHN 14
- LMD CM+1 TOTAL UNASSIGNED MEMORY
- UFL13 SBD T7
- PJN UFL1 IF SUFFICIENT TO SATISFY REQUEST
- UFL SUBR ENTRY/EXIT
- LDD CS
- ADD CS+4 TOTAL ASSIGNED MEMORY
- STD T4
- LDN ACML FETCH UNASSIGNED MEMORY COUNT
- CRD CM
- LDN 0 CLEAR MEMORY ASSIGNMENT PAD
- STD CN+4
- STD T8 SET MEMORY HOLE NOT FOUND
- LDD T5
- ZJN UFL11 IF REQUEST FOR CENTRAL MEMORY
- LDD CM+3
- UJN UFL13 CHECK UNASSIGNED EXTENDED MEMORY
- UFL1 SBD CN+4
- PJN UFL3 IF SUFFICIENT MEMORY FOR REQUEST + PAD
- ADD CN+4
- SBD T4
- PJN UFL6 IF ENOUGH MEMORY TO WARRANT HOLE SEARCH
- UFL2 LDN 0
- UJN UFLX RETURN
- UFL3 SBD T4
- PJN UFL5 IF HOLE SEARCH FOR REQUEST + PAD
- LDD CN+4
- RAD T7
- UFL4 UJN UFLX RETURN
- UFL5 LDD CN+4 APPEND PAD TO REQUEST
- RAD T7
- UFL6 LDD OR+4
- ZJN UFLX IF NFL REQUEST
- LDD CP
- SBN 2
- MJN UFL2 IF CMR OR CP 1
- ADN 3
- LMD NC
- UFL7 ZJN UFL4 IF LAST REAL CP
- LDD T7
- RAD T4 INCLUDE CURRENT INCREASE
- LDC 0
- UFLA EQU *-1 (NUMBER OF MCT ENTRIES)
- SBN 3
- STD T1
- LDN 1 INITIALIZE FORWARD LINK
- STD CM+1
- LCN 0 PRESET HOLE SIZE
- STD T3
- UFL8 LDD CM+1 SAVE FORWARD LINK
- STM UFLB
- RJM TIM UPDATE CLOCK
- LDC **
- UFLB EQU *-1
- RJM RSB
- SBD T4
- MJN UFL9 IF HOLE NOT FOUND
- SBD T3
- PJN UFL9 IF THIS HOLE LARGER
- RAD T3
- LDD T2 SAVE ORDINAL OF HOLE
- STD T8
- LDD T0 CHECK HOLE SIZE
- SBD T4
- ZJN UFL7 IF EXACT FIT
- UFL9 SOD T1
- ZJN UFL7 IF SCAN COMPLETE
- UJN UFL8 CHECK NEXT MCT ENTRY
- SPACE 4,10
- * MEMORY ALLOCATION ADDRESSES / FUNCTIONS.
- MAFA CON FLSW,ECSW
- MAFC CON MSTF,MECF
- ERRNZ FLSW-CMRL
- ERRNZ ECSW-ECRL
- TITLE SUBROUTINES.
- ACP SPACE 4
- ** NOTE - SUBROUTINES WILL NOT ALTER OA, CP, OR - OR+4.
- CDA SPACE 4,15
- ** CDA - CLEAR DEVICE ACTIVITY.
- *
- * ENTRY (T4 - CM) = *DSWM* PARAMETERS FROM MESSAGE BUFFER.
- * (CS) = UNIT TO WRITE TO *DRQP*.
- * (CN - CN+4) = DEVICE ACTIVITY WORD.
- *
- * EXIT PP ACTIVITY WORD WRITTEN.
- * (PR) = PP NUMBER WAITING FOR THE UNIT BEING RELEASED.
- *
- * USES CM, CN, CN+1, CN+3, PR.
- *
- * MACROS MSTA.
- CDA6 LDD PP STORE *DRQP*
- SHN PPXES
- TADC DRQP,PPX
- CWD CS
- CDA SUBR ENTRY/EXIT
- LDD CM CLEAR *CHRV* CHANNEL STATUS
- SCN 11
- STD CM
- LDM TPPI,PP
- ZJN CDA6 IF NO INTERLOCK HELD
- SCN 1
- ZJN CDA3 IF NO INTERLOCK SET
- LMD CN+1
- STD CN+1
- SHN -13
- NJN CDA2 IF FIRST UNIT NOT FREE
- LDD PR
- NJN CDA1 IF REQUEST FOR CHANNEL BY OTHER UNIT
- LDD CN+3
- ZJN CDA3 IF UNIT NOT REQUESTED
- STD PR
- CDA1 LDN 0 CLEAR UNIT REQUEST
- STD CN+3
- CDA2 LDN 0
- CDA3 STM TPPI,PP
- LDD CN+1
- SCN 17
- NJN CDA4 IF OTHER LOGICAL RESERVE(S) STILL SET
- LDN 1
- STD CN+1 CLEAR *DALL* UPDATE INTERLOCK
- CDA4 SOD CN
- SHN 21-5
- PJN CDA5 IF NO UNDERFLOW
- SHN 5-21+22
- ADN 1 FIX UNDERFLOW PROBLEM
- STD CN
- CDA5 MSTA DALL,PP UPDATE DEVICE ACTIVITY
- CWD CN
- LJM CDA6 RETURN
- CFS SPACE 4,10
- ** CFS - CHECK FOR STEP CRITERION MET.
- *
- * ENTRY (A) = POINTER TO OUTPUT REGISTER.
- * (CM - CM+4) = INPUT REGISTER.
- *
- * EXIT (A) = 0 IF STEP CRITERION MET BY THIS PPU.
- *
- * USES T3, CM - CM+4.
- CFS SUBR ENTRY/EXIT
- STD T3 SAVE OUTPUT REGISTER ADDRESS
- LDD CM+1
- LPN 37
- SHN 7
- ADN TFSW READ CALLING CP EJT ORDINAL
- CRD CM
- LDC 0 EJT ORDINAL TO STEP
- CFSA EQU *-1
- ZJN CFS1 IF NOT EJT ORDINAL STEP
- LMD CM
- ZJN CFS1 IF CORRECT EJT ORDINAL
- LDD T3
- SBD OF
- SHN PPXES-PPCES
- TADC ACPP,PPX
- CRD CM GET ALTERNATE CP/PCP ASSIGNMENT IF PRESENT
- LDD CM+1
- SHN 14
- ADD CM+2
- ADK TFSW READ POSSIBLE ALTERNATE CP/PCP EJT ORDINAL
- CRD CM
- LDD CM
- LMM CFSA
- NJN CFSX IF NOT CORRECT EJT ORDINAL
- CFS1 LDC ** FUNCTION TO STEP
- CFSB EQU *-1
- ZJN CFSX IF NO FUNCTION TO STEP
- LMI T3
- LPC 177
- NJN CFS2 IF INCORRECT FUNCTION
- LDM **,T3
- CFSC EQU *-1 BYTE NUMBER STEPING ON
- LMC ** BYTE VALUE TO STEP ON
- CFSD EQU *-1
- CFS2 LJM CFSX RETURN
- FTN SPACE 4,15
- ** FTN - PROCESS MONITOR FUNCTION.
- *
- * ENTRY (A) = FUNCTION.
- * (CP) = CONTROL POINT NUMBER.
- * (CM+1 - CM+4) = PARAMETERS.
- *
- * EXIT (CM - CM+4) = RESPONSE.
- * (A) = 0.
- *
- * USES CN - CN+4.
- *
- * CALLS AVC, CPR.
- FTN4 LDN ZERL INITIALIZE *ACPP*
- CRD CN
- LDD CP SET CONTROL POINT NUMBER
- STD CN
- SHN 7 SET CONTROL POINT ADDRESS
- STD CN+2
- STD CN+4
- TLDC ACPP,PPX WRITE *ACPP*
- CWD CN
- LDD OF WRITE OUTPUT REGISTER
- CWD CM
- FTNB LMC 0 MERGE CPU NUMBER
- RJM CPR
- FTN5 RJM AVC ADVANCE CLOCK
- LDD OF READ OUTPUT REGISTER
- CRD CM
- LDD CM
- NJN FTN5 IF NOT COMPLETE
- FTN SUBR ENTRY/EXIT
- STD CM SET REQUEST
- FTNA LDC LMCI
- * UJN FTN4 (1 CPU ONLY)
- STM FTNB
- LDD CM
- LMN DCPM
- ZJN FTN1 IF FUNCTION REQUIRING CORRECT CPU
- LMN CEFM&DCPM
- NJN FTN3 IF FUNCTION DOES NOT REQUIRE CORRECT CPU
- FTN1 LDD CP CHECK CPU SELECTION
- SHN 7
- ADN CWQW
- CRD CN
- LDD CN+2
- LPN 3
- SBN 3
- ZJN FTN3 IF NEITHER CPU ASSIGNABLE
- ADN 3-1
- PJN FTN2 IF CPU SELECTION
- LDD CP CHECK FOR ACTIVE JOB
- SHN 7
- ADN STSW
- CRD CN
- LDD CN
- SHN -11
- ZJN FTN3 IF NOT ACTIVE
- SBN 3
- PJN FTN3 IF NOT ACTIVE
- ADN 2
- FTN2 RAM FTNB SET CORRECT CPU
- FTN3 LJM FTN4 ISSUE REQUEST
- GCE SPACE 4,15
- ** GCE - GET CHANNEL ASSIGNMENT TABLE ENTRY.
- *
- * ENTRY (A) = CHANNEL NUMBER.
- *
- * EXIT (A) = ((T1)) = CHANNEL ASSIGNMENT TABLE ENTRY.
- * (CM - CM+4) = CHANNEL ASSIGNMENT TABLE WORD.
- * (CN) = REQUESTING JOB-S EJT ORDINAL.
- * (T0) = WORD INDEX FOR CHANNEL ASSIGNMENT TABLE.
- *
- * USES T0, T1, CM - CM+4, CN - CN+4.
- *
- * CALLS VCN.
- *
- GCE SUBR ENTRY/EXIT
- STD T1 SAVE CHANNEL NUMBER
- RJM VCN VERIFY CHANNEL NUMBER
- LCN 0 INITIALIZE WORD INDEX
- STD T0
- GCE1 AOD T0 INCREMENT WORD INDEX
- LCN 5 DIVIDE BY 5 LOOP
- RAD T1
- PJN GCE1 IF NOT CORRECT INDEX
- ADN 5+CM
- STD T1
- LDC 0 READ CHANNEL ASSIGNMENT TABLE WORD
- GCEA EQU *-1
- ADD T0 ADD CORRECT WORD INDEX
- CRD CM
- LDD OA GET JOB-S CP NUMBER
- SBN 1
- CRD CN
- LDD CN+1 GET REQUESTING JOB-S EJT ORDINAL
- LPN 37
- SHN 7
- ADN TFSW
- CRD CN
- LDI T1
- UJN GCEX RETURN
- HGM SPACE 4,10
- ** HGM - HANG *MTR*.
- HGM CON ** CALLER-S ADDRESS
- HGM1 LDC MS2W+** DISPLAY MESSAGE
- HGMB EQU *-1
- CWM HGMA,ON
- UJN HGM1 LOOP
- HGMA DATA C*MTR HUNG*
- PCM SPACE 4,10
- ** PCM - PURGE CACHE IF CPU 1 IN MONITOR MODE.
- *
- * PURGE CACHE IN CPU 1 ON A DUAL CPU MACHINE WITH
- * CACHE, IF CPU 1 IS IN MONITOR MODE.
- *
- * EXIT CPU 1 CACHE PURGED IF DUAL-CPU NOS AND MONITOR MODE.
- *
- * USES CM - CM+4.
- PCM SUBR ENTRY/EXIT
- PCMA UJN PCMX IF NOT DUAL-CPU NOS CACHE MACHINE
- * LDC **+CMST+1 (DUAL-CPU NOS CACHE MACHINE)
- CON ** CHECK IF CPU 1 IN MONITOR MODE
- CRD CM
- LDD CM+1
- ADD CM+2
- ADD CM+3
- ADD CM+4
- ZJN PCMX IF CPU 1 NOT IN MONITOR MODE
- LDN ZERL
- CRD CM
- LDC 1S8 BIT 56 (IN 4 16-BIT BYTES) SELECTS CPU 1
- STD CM
- LDK EIBP SET MICROCODE CPU 1 CACHE PURGE BIT
- RDSL CM CENTRAL READ AND SET LOCK (SELECT CPU 1)
- INPN 4 PURGE CACHE IN SELECTED CPU (CPU 1)
- UJN PCMX RETURN
- RCP SPACE 4,10
- ** RCP - RECALL CPU.
- *
- * ENTRY (CN+2) = CONTROL POINT AREA ADDRESS.
- *
- * USES T7, CM - CM+4.
- *
- * CALLS CPR.
- * THE FOLLOWING CODE WILL SELECT CPU 0 IF NEITHER CPU CAN BE
- * CURRENTLY ASSIGNED ON A DUAL CPU MACHINE WITH CACHE.
- RCP1 ADN CWQW GET CPU SELECTION
- CRD CM
- LDD CM+2
- LPN 3
- ZJN RCP1.1 IF EITHER CPU ASSIGNABLE
- LMN 3
- LPN 1 SELECT CPU FOR RECALL
- UJN RCP2.1 RECALL CPU
- * SELECT CPU WITH LOWEST PRIORITY JOB.
- RCP1.1 LDC TSCL CPU - 0 PRIORITY
- CRD T7
- ADN 1 CPU - 1 PRIORITY
- CRD CM
- LDD CM
- SBD T7
- RCP2 SHN 0-21 SIGN BIT TO RECALL CPU - 1
- RCP2.1 SHN 14
- LMN RCLF
- RJM CPR
- RCP SUBR ENTRY/EXIT
- LDD CN+2
- LPC 7600 SET CONTROL POINT ADDRESS
- STD CN+2
- RCPA UJN RCP1 CHECK CPU SELECTION
- * UJN RCP2 (SINGLE CPU)
- RCS SPACE 4,15
- ** RCS - REQUEST CHANNEL STATE CHANGE.
- *
- * ENTRY (A) = *SCSM* SUBFUNCTION.
- * (OR+1) = EST ORDINAL.
- * (OR+3) = CHANNEL NUMBER.
- *
- * EXIT (A) = (CM+1) = *SCSM* REPLY.
- * = 0 IF FUNCTION WAS REJECTED.
- *
- * USES CM+1 - CM+3.
- *
- * MACROS MONITOR.
- RCS SUBR ENTRY/EXIT
- STD CM+3 SUBFUNCTION
- LDD OR+1 EST ORDINAL
- STD CM+1
- LDD OR+3 CHANNEL
- STD CM+2
- MONITOR SCSM
- LDD CM+1
- UJN RCSX RETURN
- TCH SPACE 4
- ** TCH - TEST CHANNEL.
- *
- * ENTRY (A) = CHANNEL NUMBER.
- *
- * EXIT (T2) = CHANNEL.
- * (A) = 0 IF CHANNEL FREE.
- * (A) .GT. 0 IF CHANNEL IS RESERVED.
- * (A) = NEGATIVE IF CHANNEL DOWN.
- *
- * CALLS VCN.
- TCH SUBR ENTRY/EXIT
- RJM VCN VERIFY CHANNEL NUMBER
- LDM TCHS,T2
- ZJN TCHX IF CHANNEL IS FREE AND UP
- SHN 21-5
- MJN TCHX IF CHANNEL DOWN
- SHN -14
- ZJN TCHX IF CHANNEL UNASSIGNED
- STD CF SET CHANNEL UPDATE FLAG
- LDM TCHS,T2 SET CHANNEL REQUESTED FLAG
- LPC -4000
- LMD FT
- STM TCHS,T2
- UJN TCHX RETURN
- VCN SPACE 4,10
- ** VCN - VERIFY CHANNEL NUMBER.
- *
- * ENTRY (A) = CHANNEL DESCRIPTOR.
- *
- * EXIT (T2) = CHANNEL NUMBER.
- *
- * ERROR TO *HNG* IF INVALID CHANNEL NUMBER.
- VCN SUBR ENTRY/EXIT
- LPN 77
- STD T2 EXTRACT CHANNEL NUMBER
- VCNA SBN 0
- MJN VCNX IF NON-CONCURRENT CHANNEL
- VCNB SBN 40-0
- MJN VCN1 IF UNDEFINED CHANNEL
- VCNC SBN 0
- MJN VCNX IF CONCURRENT CHANNEL
- VCN1 RJM HNG HANG PP
- COMMON SPACE 4,10
- ** COMMON DECKS.
- EST$ EQU 1 SELECT EST PROCESSOR
- IFP$ EQU 1 SELECT REMOTE INITIALIZATION
- *CALL COMPGFP
- TITLE TABLES.
- TCHS SPACE 4,10
- ** TCHS - CHANNEL TABLE.
- *
- * ENTRY = 1 WORD.
- * INDEXED BY CHANNEL NUMBER.
- *
- *T, TCHS 1/ R,4/,1/ I,1/ D,5/ ST
- * R SET IF CHANNEL IS REQUESTED.
- * I SET IF CHANNEL BEING IDLED DOWN.
- * D SET IF CHANNEL IS DOWN.
- * ST 0 IF CHANNEL FREE.
- * ST PP NUMBER IF CHANNEL BUSY.
- TCHS EQU *
- TCHSL EQU MXCH+1 CHANNEL NUMBER VALIDATION
- TPPR SPACE 4
- * TPPR - TABLE OF *MTR* PP REQUESTS.
- * ENTRY = 1 WORD.
- * INDEXED BY MONITOR FUNCTION CODE.
- *
- *T, 12/ ADDR
- TPPR EQU TCHS+CTALL*5
- ORG TPPR
- DUP CPUM,1
- CON HNG1
- PPR HERE INSERT REQUEST PROCESSOR ADDRESSES
- ORG TPPR+CPUM
- TREA SPACE 4,10
- ** TREA - TABLE OF REENTRY ADDRESSES.
- * ENTRY = 1 WORD.
- *
- *T, TREA 12/ ADDR
- * ADDR ADDRESS OF CURRENT PROCESSOR FOR THE PP.
- * = 0, IF PP IS TURNED OFF.
- TREA EQU *-1
- CON DSD
- DUP 30D-2,1 NO ENTRY FOR *MTR*, SPECIAL ONE FOR *DSD*
- CON PPR
- SPACE 4
- ** CPRA - (P), (A0), (B0) FOR EXCHANGE PACKAGE.
- CPRA BSS 5
- SPACE 4
- ** BEGIN TABLES OVERLAYED BY PRESET.
- BEGIN BSSN CPRA+5
- TSYD SPACE 4,10
- ** TSYD - TABLE OF SYSTEM DEVICES.
- * ENTRY = 1 WORD.
- *
- *T, TSYD 12/ EQ
- * EQ NEXT SYSTEM DEVICE EST ORDINAL.
- TSYD EQU *
- BSSN MXSY
- TSHS SPACE 4,10
- ** TSHS - TABLE OF SHARED SYSTEM DEVICES.
- * ENTRY = 1 WORD.
- *
- *T, TSHS 12/ V
- * V 4, IF THIS SYSTEM DEVICE IS SHARED, ELSE 0.
- TSHS EQU *
- BSSN MXSY
- TSYM SPACE 4,10
- ** TSYM - TABLE OF SYSTEM DEVICE MST ADDRESSES.
- * ENTRY = ONE WORD, ZERO WORD TERMINATES TABLE.
- *
- *T, TSYM 12/ MSTA
- * MSTA MST ADDRESS OF SYSTEM EQUIPMENT IN *TSYD* WITH SAME
- * RELATIVE TABLE POSITION.
- TSYM EQU *
- BSSN MXSY+1 FORCE ZERO TERMINATOR
- TCHR SPACE 4,10
- ** TCHR - TABLE OF PRIORITY SEEK REQUESTS.
- * ENTRY = ONE WORD, INDEXED BY CHANNEL NUMBER.
- *
- *T, TCHR 12/ PPN
- * PPN NUMBER OF PP WITH A PRIORITY REQUEST FOR THE CHANNEL.
- * A PRIORITY REQUEST IS ONE TO PERFORM THE INITIAL
- * POSITION ON A UNIT.
- TCHR EQU *
- BSSN MXNC+1
- SPACE 4,10
- ** THE FOLLOWING TABLES ARE PRESET TO ZERO.
- TCMA SPACE 4,10
- ** TCMA - TABLE OF CONTROL MODULE ACTIVITY.
- * ENTRY = 1 WORD.
- * INDEXED BY CONTROL MODULE NUMBER.
- *
- *T, TCMA 6/ CH,6/ AC
- * CH CHANNEL NUMBER.
- * AC ACTIVITY COUNT.
- TCMA EQU *
- BSSN 8D
- TCMN SPACE 4,10
- ** TCMN - TABLE OF DEVICE UNIT NUMBERS.
- * ENTRY = 1 WORD.
- * INDEXED BY PP NUMBER.
- *
- *T, TCMN 12/ UN
- * UN DEVICE UNIT NUMBER.
- TCMN EQU *-2
- BSSN 20D-2 NO TABLE ENTRY FOR PP0, PP1
- TPPI SPACE 4,10
- ** TPPI - TABLE OF PPU INTERLOCK BITS.
- * ENTRY = 1 WORD.
- * INDEXED BY PPU NUMBER.
- *
- *T, TPPI 8/ IL,3/,1/ AC
- * IL INTERLOCK HELD BY PPU.
- * AC ACTIVITY BIT.
- TPPI EQU *-2
- BSSN 20D-2 NO TABLE ENTRY FOR PP0, PP1
- TSCA SPACE 4,10
- ** TSCA - TABLE OF SHARED DEVICE OUTSTANDING SEEKS.
- * ENTRY = 1 WORD.
- * INDEXED BY CHANNEL NUMBER.
- *
- *T, TSCA 12/ N
- * N = NUMBER OF SEEK WAITS FOR SHARED DEVICES ON THIS CHANNEL.
- TSCA BSSN MXNC+1
- TSEK SPACE 4,10
- ** TSEK - TABLE OF SEEK WAITS ON SHARED DEVICES.
- * ENTRY = 1 WORD.
- * INDEXED BY CHANNEL NUMBER.
- *
- *T, TSEK 12/ N
- * N = NUMBER OF SEEK WAITS PROCESSED FOR THIS CHANNEL
- * SINCE A TIME WHEN NO SHARED DEVICE ACTIVITY WAS
- * PRESENT ON THE CHANNEL. WHEN THIS COUNTER REACHES
- * A PREDEFINED CONSTANT FURTHER ASSIGNMENT OF THE
- * CHANNEL FOR SHARED DEVICE ACCESS WILL BE DISALLOWED
- * UNTIL ALL REQUESTS COMPLETE AND OTHER MACHINES ARE
- * ALLOWED ACCESS TO THE CONTROLLER.
- TSEK BSSN MXNC+1
- EZOT EQU * END OF ZEROED OUT TABLES
- TPMS SPACE 4,15
- ** TPMS - TABLE OF MST ADDRESSES BY PP.
- * ENTRY = 1 WORD.
- * INDEXED BY PPU NUMBER.
- *
- *T, TPMS 12/ MSTA
- * MSTA MST ADDRESS / 10.
- TPMS EQU *-1
- BSSN 20D-1 NO TABLE ENTRY FOR PP0
- ERRNG 7776-* TABLE OVERFLOW
- END BSSN
- TITLE MONITOR PRESET.
- PRS SPACE 4,10
- PRS8 CRD CM
- ADN 1
- CRM OVLL,CM+4 LOAD NEXT PRESET OVERLAY
- OVLL BSS 0 PRESET OVERLAY LOAD ADDRESS
- ** PRS - PRESET TABLES AND CONSTANTS.
- PRS BSS 0 ENTRY
- LDN PPCP FETCH PP COMMUNICATION AREA POINTER
- CRD CM
- AOD CM+4 SET FIRST OUTPUT REGISTER ADDRESS
- STD OF
- SHN -3
- LMC -0
- RAM AMVC
- * SET PP COMMUNICATION ADDRESSES.
- PRS1 LDN PPUL SET PP STATUS
- CRD CN
- LDD CN SET MAXIMUM CHANNEL NUMBER + 1
- ERRNZ NCHL-PPUL CODE DEPENDS ON VALUE
- RAM VCNA
- LDN 0
- SBD CN
- RAM VCNB
- LDD CN+3 SET NUMBER OF CONCURRENT PPS
- * ERRNZ CPPL-PPUL CODE DEPENDS ON VALUE
- LPN 77
- STD CN+3
- NJN PRS2 IF CONCURRENT PPS PRESENT
- ISTORE MTRB,(UJN MTR2) SKIP CPP PROCESSING
- STM CMSA+1
- ISTORE MTRE,(LDN NCTAL) WRITE ONLY NON CCH-S
- PRS2 LDD CN+3
- RAM MTRC
- STM VCNC
- LDD CN+2 SET NUMBER OF NON-CONCURRENT PPS
- LMK 10D
- ZJN PRS3 IF 10 PP-S
- LDN 10D
- PRS3 ADN 10D
- RAM MTRA
- LPN 77 SET TOTAL NUMBER OF PPS
- ADD CN+3
- STD NP
- SHN PPXES SET END OF PP-S FOR STORAGE MOVE CHECK
- ADN PPXE ALLOW FOR PSEUDO-PP
- STM MSTA
- LDN 1 SET PP 1
- STD T1
- PRS4 LDD T1 CHECK FOR UNAVAILABLE PPS
- SHN 3
- ADD OF
- SBN 1 READ INPUT REGISTER
- CRD CM
- LDD CM CHECK PP STATUS
- LMC 2R**
- NJN PRS5 IF AVAILABLE
- LDC MTR INHIBIT PROCESSING
- STM TREA,T1
- PRS5 AOD T1 ADVANCE PP NUMBER
- LMD NP
- NJN PRS4 IF NOT ALL PPS CHECKED
- * RELOCATE CENTRAL MEMORY ADDRESS CONSTANTS.
- LDK CMTP READ *CPUMTR* FWA
- CRD CM
- LDD CM+3
- SHN 14
- ADD CM+4
- ADK CXBP READ *EXPACS* BLOCK POINTER
- CRD T4
- LDK PPCP READ EXTENDED PP COMMUNICATION BLOCK FWA
- CRD CN
- LDK SDAP READ STATISTICAL DATA AREA POINTER
- CRD CS
- LDC TSIC SET RELOCATION TABLE ADDRESS
- RJM SIC RELOCATE INSTRUCTIONS
- ERRPL CPRA-* CODE DESTROYED READING EXCHANGE PACKAGE
- TLDC /EXPACS/MXP+0,XBP READ EXCHANGE PACKAGE
- CRM CPRA,ON
- LDC 210B SET *B0* (MICROCODE REQUIRES THIS VALUE)
- STM CPRA+4
- * LOAD *4MZ* AND CONTINUE PRESET.
- LDC RPLP
- CRD CM
- LDD CM
- SHN 14
- ADD CM+1
- LJM PRS8 OVERLAY WITH NEXT PRESET OVERLAY
- SPACE 4,10
- ** INSTRUCTION RELOCATION EQUIVALENCES.
- CMT EQU CM+3 *CPUMTR* FWA
- XBP EQU T4+3 *CPUMTR* *EXPACS* BLOCK POINTER
- PPX EQU CN+0 EXTENDED PP CONTROL BLOCK POINTER
- SDA EQU CS+0 STATISTICAL DATA AREA POINTER
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPSIC
- TSIC SPACE 4,10
- ** TSIC - INSTRUCTION RELOCATION TABLE.
- TSIC BSS 0
- LIST D
- SIC HERE
- CON 0 TERMINATE ENTRIES
- LIST *
- ERRNG 7777-*-5
- 4MZ TTL 4MZ - MTR PRESET (PART 2).
- 4MZ TITLE MONITOR PRESET.
- IDENT 4MZ,FMZ
- *COMMENT MTR - PRESET (PART 2).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 4MZ SPACE 4,10
- *** 4MZ - MTR PRESET (PART 2).
- *
- * TO FREE SPACE IN *MTR*, SEVERAL PRESET OVERLAYS HAVE BEEN
- * DEFINED. THESE OVERLAYS ARE -
- * *4MZ*, *4MY*, *4MX*, *4MW*, *4MV* AND *4MU*.
- * *STL* LOADS THESE OVERLAYS INTO THE RPL BEFORE RELEASING
- * *MTR*. ONCE *MTR* HAS FINISHED PRESET, *STL* LOADS THE
- * DEADSTART RPL OVER THESE OVERLAYS. *STL* IS PREVENTED FROM
- * OVERWRITING THE PRESET OVERLAYS BEFORE *MTR* HAS READ THEM
- * BY THE FOLLOWING SCHEME -
- * 1) AFTER RELEASING *MTR*, *STL* INITIALIZES *DIO*
- * RESIDENT AND ATTEMPTS TO READ THE NEXT TAPE BLOCK.
- * 2) THE TAPE BLOCK CANNOT BE READ UNTIL *DIO* FINISHES
- * INITIALIZING ITSELF, WHICH INCLUDES REQUESTING A CHANNEL
- * WITH A *RCHM* MONITOR FUNCTION.
- * 3) THE *RCHM* FUNCTION CANNOT COMPLETE UNTIL *MTR* HAS
- * READ ALL PRESET OVERLAYS AND BEGUN EXECUTING.
- ORG OVLL
- FMZ BSS 0 ENTRY
- LDN DFPP SET FWA-3 OF DAYFILE POINTERS FOR *CDBM*
- CRD CM
- LDD CM
- SHN 14
- ADD CM+1
- SBN 3
- STM CDBA+1
- SHN -14
- RAM CDBA
- LDN ECRL CHECK USER ECS ENABLED
- CRD CM
- LDD CM+1 CHECK USER EXTENDED MEMORY SIZE
- SBD CM+4
- NJN FMZ0 IF USER EM DEFINED
- SOM RSTA
- LDC HNG1 DISABLE *RCXM* FUNCTION
- STM TPPR+RCXM
- FMZ0 LDK MABL
- CRD CN
- ADN CHTP-MABL READ CHANNEL TABLE POINTER
- CRD CM
- * PRESET CHANNEL TABLE.
- LDD CM+3 SET CHANNEL STATUS TABLE ADDRESS
- STM MTRF
- ADN CTALL SET CHANNEL ASSIGNMENT TABLE ADDRESS
- STM SEQB
- STM GCEA
- SHN -14
- STD T0 SAVE OVERFLOW, IF ANY
- LDD CM+2
- RAM MTRF-1
- ADD T0
- STM SEQB-1
- STM GCEA-1
- LDN CTALL READ CHANNEL TABLE
- STD T1
- LDD CM+2
- SHN 14
- LMD CM+3
- CRM TCHS,T1
- * COMPLETE CHANNEL TABLE PRESET.
- LDK MXCH
- STD T1
- FMZ1 LDM TCHS,T1 PRESERVE DOWN STATUS
- LPN 40
- STM TCHS,T1
- SOD T1
- PJN FMZ1 IF MORE CHANNELS
- AOM TCHS+CHDS ASSIGN DISPLAY CHANNEL TO *DSD*
- * ADJUST FOR MACHINE SIZE, PP SPEED AND MEMORY CLEARING.
- LDM FMZA,CN+4 SET *RTCL* BASED ON PP SPEED
- STM TIMA
- LDD CN+2 SAVE MACHINE SIZE
- STM PCBA
- LDD CN+3
- STM PCBB
- LDK SSTL CHECK FOR MEMORY CLEARING ENABLED
- CRD CM
- LDD CM
- SHN 21-12
- PJN FMZ2 IF MEMORY CLEARING ENABLED
- ISTORE RSTC,(UJN RST20) DISABLE MEMORY CLEARING
- * PRESET SECDED PROCESSING.
- FMZ2 LDD SC SAVE ADDRESS OF UID TABLE
- CRD CM
- LDD CM
- LPN 77
- RAM BISC-1
- LDD CM+1
- STM BISC
- LDD CN+1
- SHN -11
- LMN 7
- ZJN FMZ4 IF CYBER 176
- ISTORE BISE,(UJN BIS6) DISABLE CYBER 176 PROCESSING
- * MOVE SECDED PROCESSING TABLE FOR NON-176 INTO *BIS*.
- LDN FMZBL SET LENGTH TO MOVE
- STD T1
- FMZ3 LDM FMZB-1,T1
- STM BISF-1,T1
- SOD T1
- NJN FMZ3 IF NOT DONE MOVING
- * LOAD *4MY* AND CONTINUE PRESET.
- FMZ4 LDK RPLP
- CRD CM
- LDD CM
- SHN 14
- ADD CM+1
- CRD CM
- ADD CM+4
- LJM PRS8 LOAD NEXT PRESET OVERLAY
- FMZA BSS 0 CYCLES UNTIL *RTCL* WRITTEN
- LOC 0
- CON -MLSC+35 1X PP SPEED
- CON -MLSC+17 2X PP SPEED
- CON -MLSC+10 4X PP SPEED
- LOC *O
- FMZB BSS 0 C170 CM ID INFORMATION
- VFD 12/6000,1/0,5/CSEW,6/0
- VFD 12/77,1/0,5/CMAW,6/4
- VFD 12/7400,1/1,5/SYNW,6/-10
- VFD 12/360,1/0,5/SYNW,6/4
- CON 0 C170 ID BUILD TERMINATOR
- CON FCCL+SECD
- CON 0 TERMINATOR FOR C170 CLEARING FUNCTIONS
- CON 0
- FMZBL EQU *-FMZB TABLE LENGTH
- ERRNZ FMZBL-BISFL TABLE LENGTH ERROR
- SPACE 4,10
- ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
- 4MY TTL 4MY - MTR PRESET (PART 3).
- 4MY TITLE MONITOR PRESET.
- IDENT 4MY,FMY
- *COMMENT MTR - PRESET (PART 3).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 4MY SPACE 4,10
- *** 4MY - MTR PRESET (PART 3).
- *
- * ENTRY (CN - CN+4) = MABL.
- ORG OVLL
- FMY BSS 0 ENTRY
- * PRESET CYBER 180 HARDWARE ERROR PROCESSING.
- LDD CN+1
- SHN 21-13
- MJP FMY2 IF LARGE CENTRAL MEMORY NOT PRESENT
- ISTORE CPRF,(ZJN CPR9) ENABLE *CPUMTR* CONTROL OF *RTCL*
- AOM CDBB READ *FLSW* + 1
- AOM DCRA
- ISTORE CCPC,(SHN 6) CHANGE TO CME CODE
- ISTORE CRQA,(ZJN PCB3) CHANGE TO CME PROCESSOR
- LDC UJNI-ZJNI PREVENT CPU SELECTION FOR ECS
- RAM RSTB
- LDD CN+1 CHECK FOR CYBER 170 S/C REGISTER
- SHN 21-6
- PJP FMY2 IF CYBER 170-865/875
- LDK EIBP READ *EICB* POINTER
- CRD CM
- LDD CM
- SHN 21-12
- PJP FMY1 IF NOT DUAL CPU MACHINE WITH CACHE
- LDC LDMI+0 ENABLE CPU 0 CHECK
- STM CPRC
- LDK CMTP SET *CPUMTR* BASE ADDRESS
- CRD T1
- LDD T1+3
- SHN 14
- LMD T1+4
- RAM CPRG+1
- STM PCMA+1
- SHN -14
- RAM CPRG
- STM PCMA
- LDM FMYA,CN+4 SET COUNTER FOR 25 MICROSECOND DELAY
- RAM CPRE
- LDM FMYB,CN+4 SET COUNTER FOR 125 MICROSECOND DELAY
- STM CPRH+1
- SCF *,MR GET MAINTENANCE CHANNEL
- DCN MR+40
- FNC MRDC,MR KILL DEADMAN TIMER
- DCN MR+40
- LDC STII+T3+1S15 (STIL INSTRUCTION)
- ACN MR
- OAN MR
- LDN 1
- IAM FMYD,MR READ *STIL* TO MEMORY
- DCN MR+40 ENSURE MAINTENANCE CHANNEL INACTIVE
- CCF *,MR RELEASE CHANNEL
- LDC FMYC SET UP INSTRUCTION TABLE ADDRESS
- STD T2
- FMY0 LDI T2 ADDRESS OF 16-BIT INSTRUCTION
- ZJN FMY1 IF FINISHED
- STD T3
- LDI T3
- LMC 1S15 CONVERT TO 16-BIT INSTRUCTION
- FMYD STI T3 SET LONG INSTRUCTIONS
- * STIL T3 SET LONG INSTRUCTIONS
- AOD T2
- UJN FMY0 PROCESS NEXT INSTRUCTION
- FMY1 LDD CM+3
- SHN 14
- LMD CM+4
- ADN DSCM+3 READ DFT/OS BUFFER POINTER
- CRD CM
- LDD CM+2 SAVE ADDRESS OF *DFT* CONTROL WORD
- SHN 14
- LMD CM+3
- SHN -4
- SHN 6
- LMD CM
- STM PHEA+1
- SHN -14
- RAM PHEA
- LPN 37
- SHN 14 READ NOS REQUEST AREA POINTER
- ADM PHEA+1
- ADN DFRQ
- CRD CM
- LDD CM+2 SAVE ADDRESS OF NOS REQUEST HEADER
- SHN 14
- LMD CM+3
- SHN -4
- SHN 6
- LMD CM
- STM PHEF+1
- SHN -14
- RAM PHEF
- * LOAD *4MX* AND CONTINUE PRESET.
- FMY2 LDK RPLP
- CRD CM
- LDD CM
- SHN 14
- ADD CM+1
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- LJM PRS8 LOAD NEXT PRESET OVERLAY
- FMYA CON 14,30,61 COUNTERS FOR 25 MICROSECOND DELAY
- FMYB CON 75,173,370 COUNTERS FOR 125 MICROSECOND DELAY
- FMYC LIST16 LIST OF LOCATIONS OF 16-BIT INSTRUCTIONS
- SPACE 4,10
- ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
- 4MX TTL 4MX - MTR PRESET (PART 4).
- 4MX TITLE MONITOR PRESET.
- IDENT 4MX,OMU
- *COMMENT MTR - PRESET (PART 4).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 4MX SPACE 4,10
- *** 4MX - MTR PRESET (PART 4).
- *
- * ENTRY (CN - CN+4) = MABL.
- ORG OVLL
- OMU BSS 0 ENTRY
- * PRESET CYBER 70, 170 HARDWARE ERROR PROCESSING.
- LDD CN+1
- SHN 21-13
- MJN OMU1 IF LARGE CENTRAL MEMORY NOT PRESENT
- SHN 21-6-21+13
- PJN OMU2 IF CYBER 865/875
- LJM OMU7 LOAD NEXT OVERLAY
- OMU1 SHN 21-6-21+13
- MJN OMU3 IF NOT CYBER 170 S/C REGISTER
- OMU2 LDD HN CHANGE TO TIME PROCESSING
- * LDC ZJNI-UJNI
- ERRNZ 100-ZJNI+UJNI (ADJUST IF INSTRUCTIONS CHANGE)
- RAM PHEB
- LDD CN+1
- SHN -11
- LMN 7
- NJN OMU4 IF NOT CYBER 176
- AOM PSEA
- LDN PSNI
- STM PHEC
- STM PSEB
- UJN OMU4 LOAD CYBER 170 PROCESSER
- OMU3 SHN 21-7-21+6+22
- MJN OMU6 IF NOT CYBER 70 INTERLOCK REGISTER
- SOM OMUC CHANGE TO INTERLOCK REGISTER
- SOM ODWA
- SOM ODWB
- LDN SSTL GET SUB-SYSTEM STATUS
- CRD CM
- LDD CM+3 CHECK SIMULATED SCR
- SHN 21-3
- PJN OMU4 IF SIMULATED SCR IS SELECTED
- SOM AVTA NO TIME CALL FOR C70 NON-SIMULATION
- LDC FCTB TEST BIT 0 FUNCTION
- STM OMUB
- * MOVE CYBER 70, 170, 700 SERIES, 865/875 BLOCK INTO *PHE*.
- OMU4 LDN OMUAL LENGTH TO MOVE
- STD T1
- ISTORE PHEG,(PSN) DISABLE *DFT* CHECK IF NOT CYBER 180
- OMU5 LDM OMUA-1,T1
- STM PHEA-1,T1
- SOD T1
- NJN OMU5 IF MOVE NOT DONE
- UJN OMU7 CONTINUE
- OMU6 LDC UJNI+2 DISABLE *1MB* CALL
- STM MTRG
- STM MSTC
- * LOAD *4MW* AND CONTINUE PRESET.
- OMU7 LDK RPLP
- CRD CM
- LDD CM
- SHN 14
- ADD CM+1
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- LJM PRS8 LOAD NEXT PRESET OVERLAY
- OMUA BSS 0 CYBER 170 ERROR PROCESSOR
- LIST D
- PHEE HERE
- LIST *
- OMUAL EQU *-OMUA
- OMUB EQU OMUA+1
- OMUC EQU OMUA+2
- SPACE 4,10
- ERRNG PHE3-PHEA-OMUAL OVERFLOW OF *PHE*
- ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
- 4MW TTL 4MW - MTR PRESET (PART 5).
- 4MW TITLE MONITOR PRESET.
- IDENT 4MW,SCC
- *COMMENT MTR - PRESET (PART 5).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 4MW SPACE 4,10
- ** 4MW - MTR PRESET (PART 5).
- ORG OVLL
- SCC BSS 0 ENTRY
- LDK MCTP GET MEMORY CONTROL TABLE POINTER
- CRD CN
- LDD CN+1 SET MCT BASE ADDRESS
- STM STAA
- LDD CN
- RAM STAA-1
- LDD CN+2 SET NUMBER OF MCT ENTRIES
- STM UFLA
- ERRNZ MCTP-PCPP CODE DEPENDS ON VALUE
- LDD CN+3
- SHN 14 FORM BASE PCPA ADDRESS
- LMD CN+4
- SBK CPAS
- STM SCPA SET ADDRESS - *CPAS*
- SHN -14
- RAM SCPA-1
- LDN NCPL READ NUMBER OF CONTROL POINTS
- CRD CM
- AOD CM+1 SET SYSTEM CONTROL POINT
- STD NC
- SBN 1 SET LAST CONTROL POINT
- RAM RSTE
- LPN 77
- RAM PVEA
- LDD NC SET ADDRESS OF *MS2W* OF SYSTEM CP
- SHN 7
- RAM HGMB
- STM HNGD
- STM HLTA
- RJM IFP INITIALIZE *COMPGFP*
- LDN ACPL READ CPU 0 STATUS
- CRD CM
- LDD CM CHECK CPU 0
- SHN 6
- PJN SCC3 IF AVAILABLE
- LDD HN
- * LDC 100 (SAVES 1 BYTE)
- RAM CPRA+3 SET CPU - 1
- AOM MXN
- AOM CCPB
- SOM CCSB
- SCC1 LDC SCCA
- STD T1 SAVE TABLE ADDRESS
- SCC2 LDI T1
- ZJN SCC4 IF NO MORE INSTRUCTIONS TO MODIFY
- STD T2
- AOD T1
- LDI T1 GET NEW INSTRUCTION VALUE
- STI T2 STORE ON TOP OF OLD INSTRUCTION
- AOD T1
- UJN SCC2 MODIFY THE NEXT INSTRUCTION
- SCC3 LDN ACPL+1 READ CPU 1 STATUS
- CRD CM
- LDD CM CHECK CPU 1
- SHN 6
- MJN SCC1 IF NOT AVAILABLE
- * LOAD *4MV* AND CONTINUE PRESET.
- SCC4 LDK RPLP
- CRD CM
- LDD CM
- SHN 14
- LMD CM+1
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- LJM PRS8 LOAD NEXT PRESET OVERLAY
- * TABLE OF INSTRUCTION MODIFICATIONS FOR SINGLE CPU OPERATION.
- SCCA BSS 0
- CON AVCB
- LOC AVCB
- UJN AVC5 SKIP PROCESSING FOR OTHER CPU
- LOC *O
- CON CCPD
- LOC CCPD
- UJN CCPX RETURN
- LOC *O
- CON CCSA
- LOC CCSA
- LMN 0
- LOC *O
- CON CPRB
- LOC CPRB
- UJN CPR1
- LOC *O
- CON CX1
- LOC CX1
- UJN AVCX RETURN
- LOC *O
- CON MFLA
- LOC MFLA
- CON LDNI+MFLF
- LOC *O
- CON MFLA+1
- LOC MFLA+1
- CON RJMI
- LOC *O
- CON FTNA
- LOC FTNA
- UJN FTN4 AVOID CPU SELECTION
- LOC *O
- CON RCPA
- LOC RCPA
- UJN RCP2 AVOID CPU SELECTION
- LOC *O
- CON RSTB
- LOC RSTB
- UJN RST7 AVOID CPU SELECTION
- LOC *O
- CON 0 END OF TABLE
- SPACE 4,10
- IFP HERE *COMPGFP* INITIALIZATION CODE
- SPACE 4,10
- ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
- 4MV TTL 4MV - MTR PRESET (PART 6).
- 4MV TITLE MONITOR PRESET.
- IDENT 4MV,THU
- *COMMENT MTR - PRESET (PART 6).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 4MV SPACE 4,10
- ** 4MV - MTR PRESET (PART 6).
- ORG OVLL
- THU BSS 0 ENTRY
- * SET MULTI-MAINFRAME PROCESSING.
- LDK MMFL CHECK MMF ENVIRONMENT
- CRD CS
- ADN EFRL-MMFL CHECK ERROR IN PRESET
- CRD CN
- LDD CN+4
- NJN THU1 IF ERROR DETECTED IN *CPUMTR* PRESET
- LDD CS+1
- LPC 777
- NJN THU2 IF MMF PRESENT
- THU1 ISTORE AVCC,(UJN AVCD) DISABLE MULTI-MAINFRAME PROCESSING
- LCN ARMF-ARTF
- RAM AVCD
- LDD CS+1
- NJN THU2 IF INDEPENDENT SHARED DEVICES PRESENT
- LDC NSDJ DISABLE SHARED DEVICE CODE
- RJM MMI MODIFY *MTR* INSTRUCTIONS
- LDC LDNI+10
- STM RRXA
- THU2 LDK CFGL
- CRD CM
- LDD CM+3
- SHN 21-11
- MJN THU3 IF ISD SUBSYSTEM PRESENT
- LDC N8SJ DISABLE ISD SUBSYSTEM CODE
- RJM MMI MODIFY *MTR* INSTRUCTIONS
- THU3 LDC RTCL INITIALIZE REAL-TIME CLOCK
- CRD TM
- LDD TM+4 INITIALIZE CYCLE TIME
- STD CY
- * LOAD *4MU* AND CONTINUE PRESET.
- LDK RPLP
- CRD CM
- LDD CM
- SHN 14
- LMD CM+1
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- CRD CM
- ADD CM+4
- LJM PRS8 LOAD NEXT PRESET OVERLAY
- NSDJ SPACE 4,10
- ** NSDJ - TABLE OF NO SHARED DEVICE JUMP INSTRUCTIONS.
- *
- *T, NSDJ 12/ ADDRESS,12/ *UJN* INSTRUCTION
- NSDJ BSS 0
- NSDJ HERE
- CON 0
- N8SJ SPACE 4,10
- ** N8SJ - TABLE OF ISD SUBSYSTEM JUMP INSTRUCTIONS.
- *
- *T, N8SJ 12/ ADDRESS,12/ *UJN* INSTRUCTION
- N8SJ BSS 0
- N8SJ HERE
- CON 0
- MMI SPACE 4,10
- ** MMI - MODIFY *MTR* INSTRUCTIONS.
- *
- * ENTRY (A) = ADDRESS OF MODIFICATION TABLE.
- *
- * EXIT INSTRUCTIONS MODIFIED.
- *
- * USES T1, T2.
- MMI SUBR ENTRY/EXIT
- STD T1 SAVE TABLE ADDRESS
- MMI1 LDI T1
- ZJN MMIX IF NO MORE INSTRUCTIONS TO MODIFY
- STD T2
- AOD T1
- LDI T1 GET NEW INSTRUCTION VALUE
- STI T2 STORE ON TOP OF OLD INSTRUCTION
- AOD T1
- UJN MMI1 MODIFY THE NEXT INSTRUCTION
- SPACE 4,10
- ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
- 4MU TTL 4MU - MTR PRESET (PART 7).
- 4MU TITLE MONITOR PRESET.
- IDENT 4MU,FMV
- *COMMENT MTR - PRESET (PART 7).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 4MU SPACE 4,10
- ** 4MU - MTR PRESET (PART 7).
- ORG OVLL
- FMV BSS 0 ENTRY
- LDK ESTP READ EST POINTER
- CRD OR
- ADK EJTP-ESTP READ EJT POINTER
- CRD CM
- SOD OR+2 SET EST SIZE
- STM SEQA
- LDD CM+1 SET EJT FWA + *SCHE* OFFSET
- RAM RCEB+1
- SHN -14
- ADD CM
- RAM RCEB
- LDK NOPE INITIALIZE EST ORDINAL FOR SEARCH
- STD OR+1
- * BUILD MASS STORAGE TABLES.
- LDN 0
- STD T1 INITIALIZE SYSTEM DEVICE COUNT
- LDC TSYM SET SYSTEM MST TABLE ADDRESS
- STD T2
- ERRNG *-TSYM-MXSY TABLE OVERLAYS CODE
- FMV1 SFA EST,OR+1 READ EST ENTRY
- ADK EQDE
- CRD CS
- LDD CS
- SHN 0-12
- LMN 3
- NJN FMV3 IF NOT SYSTEM DEVICE
- AOD T1
- SHN -1
- ZJN FMV2 IF NOT MORE THAN 1 SYSTEM DEVICE
- LDC LDCI ENABLE SYSTEM DEVICE SELECTION CODE
- STM RCEA
- FMV2 LDD OR+1 SET EST ORDINAL
- STM TSYD-TSYM,T2
- LDD CS SET SHARED FLAG
- SHN 2-11
- LPN 4
- STM TSHS-TSYM,T2
- LDD CS+4 SET MST ADDRESS
- STI T2
- AOD T2
- LDD CS+3
- LMC 2RDA
- FMV3 NJN FMV4 IF NOT 33502
- ISTORE RSYA,(LPN 37) ENABLE 33502 SYSTEM PROCESSING
- ISTORE RSYB,(LMD CS+1)
- FMV4 AOD OR+1
- LMD OR+3 LAST MASS STORAGE ORDINAL + 1
- NJP FMV1 IF NOT END OF EQUIPMENT
- IAN 14
- STD MS
- LDC EZOT
- STD T1
- LDN DSCL SET UP *MTR* ACTIVE STATUS
- CRD CM
- STD CM+2
- IFPL EZOT-*,1
- BSSZ EZOT-* INSURE CODE TO ZERO TABLE IS BEYOND TABLE
- FMV5 LDN 0 CLEAR TABLES
- STI T2
- AOD T2
- LMD T1
- NJN FMV5 IF NOT END OF TABLES
- LDN DSCL SET *MTR* ACTIVE STATUS
- CWD CM
- LJM MTR4 ENTER MAIN LOOP
- SPACE 4,10
- ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
- TTL MTR - PP MONITOR.
- SPACE 4,10
- END
cdc/nos2.source/opl871/mtr.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator