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
  1. IDENT MTR,0
  2. PERIPH J
  3. BASE MIXED
  4. SST FTN,IA,PPR,TH,.EST,SSCP
  5. *COMMENT MTR - PPU MONITOR.
  6. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  7. TITLE MTR - PP MONITOR.
  8. SPACE 4
  9. *** MTR - PP MONITOR.
  10. * G. R. MANSFIELD. 70/12/13.
  11. * R. E. TATE. 76/11/10.
  12. SPACE 4
  13. *** *MTR* IS LOADED INTO PP 0 AT DEAD START TIME AND
  14. * REMAINS THERE FOR THE DURATION OF SYSTEM EXECUTION.
  15. *
  16. * *MTR* PERFORMS THE FOLLOWING FUNCTIONS.
  17. * 1. PROCESS CERTAIN PPU REQUESTS.
  18. * 2. ALLOCATION OF CENTRAL MEMORY.
  19. * 3. MAINTAIN TIME OF DAY AND DATE.
  20. * 4. MAINTAIN THE REAL TIME CLOCK.
  21. * 5. CHECK THE CONTENTS OF (RA+1) OF ACTIVE CENTRAL
  22. * PROGRAMS FOR SYSTEM REQUESTS.
  23. *
  24. * *MTR* INPUT REGISTER.
  25. *
  26. *T, IR 18/ *MTR*,6/ SC,36/0
  27. *
  28. * SC SYSTEM CONTROL POINT NUMBER.
  29. *
  30. * *MTR* MAINTAINS THE FOLLOWING DATA IN THE
  31. * STATISTICAL DATA AREA.
  32. *
  33. *T, MTRS 12/0,12/ CLOCK,12/ MXN,12/ WCT,12/ CCT
  34. *
  35. * CLOCK COUNT OF TIMES *TIM* CALLED AND CLOCK UPDATE MISSED.
  36. * MXN WORST CASE TIME TO DO AN MXN. (MICRO SECONDS)
  37. * WCT WORST CASE CYCLE TIME. (MILLISECONDS)
  38. * CCT CURRENT CYCLE TIME. (MILLISECONDS)
  39. SPACE 4
  40. *CALL COMPMAC
  41. *CALL COMPIOU
  42. *CALL COMSCPS
  43. *CALL COMSMSC
  44. QUAL DSL
  45. *CALL COMSDSL
  46. QUAL *
  47. *CALL COMSDFT
  48. *CALL COMSDST
  49. *CALL COMSIOU
  50. *CALL COMSJCE
  51. LIST X
  52. *CALL COMSMTR
  53. LIST *
  54. *CALL COMSMST
  55. *CALL COMSPIM
  56. *CALL COMSPRD
  57. QUAL REM
  58. *CALL COMSREM
  59. QUAL *
  60. *CALL COMSSSD
  61. QUAL MSP
  62. *CALL COMSMSP
  63. QUAL *
  64. *CALL COMSSCR
  65. QUAL IOU
  66. *CALL COMSIOU
  67. QUAL *
  68. SPACE 4
  69. **** DIRECT LOCATION ASSIGNENTS.
  70.  
  71.  
  72. ORG 0
  73.  
  74. T0 CON PRS-1 TEMPORARY STORAGE
  75.  
  76. PD EQU T0 - T0+4 PACKED DATE AND TIME (*PDTL*)
  77.  
  78. T1 CON 0
  79. T2 CON 0
  80. T3 CON 0
  81. T4 CON 0
  82. T5 CON 0
  83. T6 CON 0
  84. T7 CON 0
  85.  
  86.  
  87. CM VFD 60/0 CM WORD BUFFER
  88. TI EQU CM - CM+4 DISPLAY CODE TIME (*TIML*)
  89.  
  90. T8 CON 0 TEMPORARY STORAGE
  91. MB CON 0,0 MEMORY BLOCKS - TEMPORARY
  92.  
  93.  
  94. CN VFD 60/0 CM WORD BUFFER
  95. LS CON 7777 LATEST SECOND COUNT
  96. BA CON 0 BYTE ADDRESS
  97. PA CON 0 PARAMETER ADDRESS
  98.  
  99.  
  100. CS VFD 60/0 CONTROL POINT STATUS WORD
  101.  
  102. RC CON RQRL RECALL STACK POINTER
  103. RQ CON RQRL *RQRL* POINTER
  104. CF CON 1 CHANNEL TABLE WRITE FLAG
  105.  
  106.  
  107. MM BSS 0 MEMORY MANAGEMENT
  108. MM.0 CON 7777 CONTROL POINT MOVING
  109. MM.1 CON 0 MOVE INCREMENT
  110. MM.2 CON 0 LOWER MOVE CONTROL POINT
  111. MM.3 CON 0 CONTROL POINT REQUESTING MOVE
  112. MM.4 CON 0 PP REQUESTING MOVE
  113.  
  114. NP CON 0 NUMBER OF PPS
  115. NC CON 0 NUMBER OF CONTROL POINTS
  116.  
  117.  
  118. TM BSS 0 REAL TIME CLOCK
  119. VFD 24/0 SECONDS
  120. VFD 36/0 MILLISECONDS
  121.  
  122. MS CON 0 LAST MICROSECOND COUNT
  123. ST CON 1000D SECOND TIMER
  124.  
  125. FT CON 4000 CONSTANT 4000
  126. SC CON SCRL *SCRL* POINTER
  127.  
  128.  
  129. OR VFD 60/0 PP OUTPUT REGISTER
  130.  
  131. OF CON 0 ADDRESS OF FIRST PP OUTPUT REGISTER
  132. PP CON 0 CURRENT PP NUMBER
  133. PR CON 0 PRIORITY SEEK REQUEST PP
  134. ON CON 1 CONSTANT 1
  135. HN CON 100 CONSTANT 100
  136. FR CON 4 CONSTANT FOUR
  137. TR CON 3 CONSTANT 3
  138. CP CON 0 CONTROL POINT NUMBER
  139. CY CON 0 START OF CURRENT CYCLE
  140. OA CON 0 CURRENT OUTPUT REGISTER ADDRESS
  141.  
  142. ZR VFD 60/0 CM ZERO WORD (5 LOCATIONS)
  143.  
  144.  
  145.  
  146.  
  147. * ASSEMBLY CONSTANTS.
  148.  
  149.  
  150. MLSC EQU 1000D MICROSECONDS/MILLISECOND
  151. CH EQU CHSC S/C REGISTER CHANNEL
  152. MR EQU CHMR CYBER 170-8X5 MAINTENANCE CHANNEL
  153. MXRC EQU 3 MAXIMUM RECALL REQUESTS PER LOOP
  154. MBCS EQU 6 MEMORY BLOCK CONVERSION SHIFT COUNT
  155.  
  156.  
  157. ****
  158. TITLE MACRO DEFINITIONS.
  159. PPR SPACE 4
  160. MSTA SPACE 4,20
  161. ** MSTA - GENERATE MST ADDRESS.
  162. *
  163. * THIS MACRO IS TO BE USED FOR ALL MST ADDRESSES IN ORDER TO
  164. * ALLOW FOR EST EXPANSION.
  165. *
  166. * MSTA WORD,PP,DC,EO
  167. * ENTRY WORD = MST WORD DESIRED.
  168. * PP = PP NUMBER USED TO ACCESS PP TABLE OF MST
  169. * ADDRESSES (*TPMS*).
  170. * DC = 5 BYTES OF SCRATCH DIRECT CELLS.
  171. * EO = IF SUPPLIED, (A) = EST ORDINAL.
  172. *
  173. * EXIT (A) = CM ADDRESS IF *WORD* SUPPLIED.
  174. * (DC - DC+4) = *EQDE* WORD OF EST ENTRY IF *DC* IS
  175. * SUPPLIED.
  176. *
  177. * IF *DC* IS SUPPLIED MST ADDRESS IS OBTAINED FROM THE
  178. * EST, AND IF *PP* IS SUPPLIED, IT IS STORED INTO *TPMS*.
  179. * IF *DC* IS NOT SUPPLIED, THE MST ADDRESS IS OBTAINED FROM
  180. * *TPMS*. IF *WORD* IS NOT SUPPLIED THE CM ADDRESS IS NOT
  181. * RETURNED.
  182.  
  183.  
  184. MSTA MACRO WORD,PP,DC,EO
  185. MACREF MSTA
  186. .M1 IFC NE,*DC**
  187. IFC EQ,*EO**,1
  188. LDD T5
  189. SFA EST
  190. ADK EQDE
  191. CRD DC
  192. LDD DC+4
  193. IFC NE,*PP**,1
  194. STM TPMS,PP
  195. .M1 ELSE
  196. LDM TPMS,PP
  197. .M1 ENDIF
  198. IFC NE,*WORD**,2
  199. SHN 3
  200. ADN WORD
  201. ENDM
  202. NSDJ SPACE 4,10
  203. ** NSDJ - NO SHARED DEVICES JUMP.
  204. *
  205. * THE INSTRUCTION FOLLOWING THIS MACRO IS REPLACED BY A *UJN*
  206. * IF THERE ARE NO SHARED DEVICES IN THE SYSTEM.
  207. *
  208. * NSDJ ADDR
  209. * ENTRY ADDR = ADDRESS TO JUMP TO.
  210.  
  211.  
  212. NSDJ MACRO A
  213. LOCAL AA
  214. MACREF NSDJ
  215. AA EQU *
  216. NSDJ RMT
  217. CON AA
  218. LOC AA
  219. UJN A
  220. LOC *O
  221. NSDJ RMT
  222. ENDM
  223. N8SJ SPACE 4,10
  224. ** N8SJ - NO ISD SUBSYSTEM JUMP.
  225. *
  226. * THE INSTRUCTION FOLLOWING THIS MACRO IS REPLACED BY A *UJN*
  227. * IF THERE IS NO ISD SUBSYSTEM PRESENT.
  228. *
  229. * N8SJ ADDR
  230. * ENTRY ADDR = ADDRESS TO JUMP TO.
  231.  
  232.  
  233. N8SJ MACRO A
  234. LOCAL AA
  235. MACREF N8SJ
  236. AA EQU *
  237. N8SJ RMT
  238. CON AA
  239. LOC AA
  240. UJN A
  241. LOC *O
  242. N8SJ RMT
  243. ENDM
  244. PPR SPACE 4,10
  245. ** PPR - SET PP REQUEST PROCESSOR.
  246. *
  247. * PPR FCN,PRC
  248. * ENTRY *FCN* = FUNCTION NUMBER.
  249. * IF *PRC* IS SPECIFIED, *.PRC* IS ADDRESS OF PROCESSOR.
  250. * OTHERWISE, *.FCN* IS ADDRESS OF PROCESSOR.
  251.  
  252.  
  253. PPR MACRO FCN,PRC
  254. LOCAL J,K
  255. MACREF PPR
  256. J OCTMIC FCN
  257. IFC EQ,$PRC$$
  258. K MICRO 1,3, FCN
  259. K MICRO 1,4,*."K"*
  260. "K" CON FCN
  261. ORG *-1
  262. ELSE 1
  263. K MICRO 1,, PRC
  264. PPR RMT
  265. ORG TPPR+FCN
  266. CON "K"
  267. PPR RMT
  268. ENDM
  269. SUBFUN SPACE 4,10
  270. ** SUBFUN - SET SUBFUNCTION PROCESSOR.
  271. *
  272. *SFA SUBFUN FNC,SFN
  273. * ENTRY SFA = SUBFUNCTION PROCESSOR ENTRY NAME.
  274. * FNC = FUNCTION NAME.
  275. * SFN = SUBFUNCTION NAME.
  276. *
  277. * THIS MACRO BUILDS A TABLE OF SUBFUNCTION PROCESSORS.
  278. * THE TABLE IS NAMED T*FNC*, AND EACH ENTRY IS THE
  279. * ADDRESS OF THE PROCESSOR FOR THE SUBFUNCTION.
  280.  
  281.  
  282. MACRO SUBFUN,SFA,FNC,SFN
  283. MACREF SUBFUN
  284. SFA BSS 0
  285. IRP SFN
  286. T_FNC RMT
  287. ORG T_FNC+SFN
  288. CON SFA
  289. T_FNC RMT
  290. IRP
  291. ENDM
  292. TITLE MAIN PROGRAM.
  293. MRP SPACE 4,10
  294. ** MONITOR RE-ENTRY PROCESSOR.
  295.  
  296.  
  297. MRP CON 0 REENTRY ADDRESS
  298. LDM MRP
  299. STM TREA,PP
  300. * UJN MTR CHECK NEXT PP
  301. MTR SPACE 4,10
  302. ** MTR - MAIN PROGRAM.
  303.  
  304.  
  305. MTR AOD PP GET NEXT OUTPUT REGISTER ADDRESS
  306. MTRA SBN ** (NUMBER OF NON-CONCURRENT PPS)
  307. MTRB NJN MTR1 IF NOT LAST NPP
  308. * UJN MTR2 (NO CONCURRENT PPS PRESENT)
  309. * UJN MTR1 (MONITOR STEP SET)
  310. LDN PPRL CHECK FOR CPP REQUESTS
  311. CRD CM
  312. LDD CM
  313. ZJN MTR4 IF NO CPP REQUESTS
  314. LDN 0 CLEAR CPP REQUEST FLAG
  315. STD CM
  316. LDK PPRL
  317. CWD CM
  318. MTR1 SBN ** (NUMBER OF CONCURRENT PPS)
  319. MTRC EQU *-1
  320. ERRPL 10-PPRL *PPRL* MIGHT EQUAL NUMBER OF CPPS
  321. MTR2 ZJN MTR4 IF ALL OUTPUT REGISTERS CHECKED
  322. LDD PP READ PP-S OUTPUT REGISTER
  323. MTR3 SHN 3
  324. ADD OF
  325. STD OA
  326. CRD OR
  327. LDM TREA,PP GET PP-S REENTRY ADDRESS
  328. STM MTRD
  329. LDD OR
  330. ZJN MTR IF NO REQUEST
  331. LJM ** EXIT TO PROCESSOR
  332. MTRD EQU *-1
  333.  
  334. * PERFORM SYSTEM FUNCTIONS.
  335.  
  336. MTR4 RJM TIM UPDATE TIME
  337. RJM CRQ CHECK RECALL QUEUE
  338. LDD CF
  339. ZJN MTR5 IF NO CHANNEL UPDATES
  340. MTRE LDN CTALL WORD COUNT OF CHANNEL TABLE
  341. * LDN NCTAL (CCH-S NOT PRESENT)
  342. STD CF
  343. LDC ** WRITE CHANNEL TABLE
  344. MTRF EQU *-1
  345. CWM TCHS,CF
  346. LDN 0 CLEAR CHANNEL UPDATE FLAG
  347. STD CF
  348. MTR5 RJM PHE PROCESS HARDWARE ERRORS
  349. MTRG EQU *-2
  350. * UJN *+2 (6000 SERIES)
  351.  
  352. * UPDATE STATISTICAL DATA.
  353.  
  354. TLDC MTRS,SDA READ *MTR* STATISTICAL DATA
  355. CRD CM
  356. LDC ** UPDATE MISSED CLOCK UPDATE COUNT
  357. MTRI EQU *-1 (MISSED CLOCK UPDATE COUNT)
  358. RAD CM+1
  359. LDN 0 RESET CURRENT CYCLE MISSED CLOCK UPDATES
  360. STM MTRI
  361. LDD TM+4 CALCULATE ELAPSED CYCLE TIME
  362. SBD CY
  363. PJN MTR6 IF NO OVERFLOW
  364. ADC 10000
  365. MTR6 STD CM+4
  366. RAD CY
  367. LDD CM+4
  368. SBD CM+3
  369. MJN MTR7 IF NOT NEW WORST CASE TIME
  370. RAD CM+3 UPDATE WORST CASE CYCLE TIME
  371. MTR7 LDC ** SET WORST CASE *MXN* TIME
  372. MTRJ EQU *-1 (WORST CASE *MXN* TIME)
  373. SBD CM+2
  374. MJN MTR8 IF NOT WORST CASE *MXN* TIME
  375. RAD CM+2 UPDATE WORST CASE *MXN* TIME
  376. MTR8 LDN 0 RESET CURRENT CYCLE WORST CASE *MXN* TIME
  377. STM MTRJ
  378. TLDC MTRS,SDA WRITE *MTR* STATISTICAL DATA
  379. CWD CM
  380.  
  381. * THE CPU SWITCH IS DONE AS LONG AS POSSIBLE AFTER THE CALL
  382. * TO *CRQ* TO ALLOW *CPUMTR* TO HAVE FINISHED PROCESSING CPU
  383. * RECALLS. THE CALL TO *WXP* IS MADE TO INSURE ANY RECALLS
  384. * HAVE COMPLETED.
  385.  
  386. RJM WXP WAIT RECALL COMPLETION
  387. RJM CCS CHECK CPU SWITCH
  388. RJM CCP CHECK CENTRAL PROGRAM
  389. LDN 0 SET UP OUTPUT REGISTER SCAN
  390. STD PP
  391. LJM MTR LOOP
  392. TITLE TIMEKEEPING.
  393. AVC SPACE 4
  394. ** AVC - ADVANCE CLOCK.
  395. *
  396. * ENTRY MUST BE MADE AT LEAST EVERY 4 MILLISECONDS.
  397. *
  398. * IF THE MACHINE IS IN A MULTI-MAINFRAME COMPLEX THE
  399. * FOLLOWING IS DONE.
  400. * 1) STATUS FLAG REGISTER BITS.
  401. * 2) WRITE REAL TIME CLOCK TO ECS.
  402. * 3) STATUS MAINFRAMES ECS CLOCKS EVERY 2 SECONDS.
  403. *
  404. * USES CM - CM+4, T3.
  405. *
  406. * CALLS AVT, CPR, TIM.
  407.  
  408.  
  409. AVC4 BSS 0
  410. AVCB LDC 10000B+ARTF ADVANCE CPU-1 RUNNING TIME
  411. * UJN AVC5 (1 CPU)
  412. RJM CPR
  413. AVC5 LDD HN RESET RETURN
  414. STM AVCA
  415. RJM AVT ADVANCE TIME OF DAY
  416. AVCC LDD TM+1
  417. * UJN AVCD (NO MULTI-MAINFRAME PROCESSING)
  418. LPN 1
  419. STD CN+2 SET TIME TO STATUS MAINFRAMES
  420. AVCD LDN ARMF ADVANCE RUNNING TIME
  421. * LDN ARTF (NO MULTI-MAINFRAME PROCESSING)
  422. RJM CPR
  423.  
  424. AVC SUBR ENTRY/EXIT
  425. * UJN AVC4 (ONE SECOND ELAPSED)
  426. AVCA EQU *-2
  427. RJM TIM ADVANCE MILLISECOND CLOCK
  428. AVC1 TLDC CACX,CMT READ CPU 0 EXCHANGE REQUEST
  429. * UJN AVCX (1 CPU ONLY)
  430. CX1 EQU *-2
  431. CRD CM
  432. LDN 0 CLEAR EXCHANGE REQUEST OUTSTANDING FLAG
  433. STD T3
  434. LDD CM+1
  435. ADD CM+2
  436. ZJN AVC2 IF NO EXCHANGE REQUEST
  437. AOD T3
  438. LDN PCXF PROCESS CPU 0 EXCHANGE REQUEST
  439. RJM CPR
  440. AVC2 TLDC CACX+1,CMT READ CPU 1 EXCHANGE REQUEST
  441. CRD CM
  442. LDD CM+1
  443. ADD CM+2
  444. ZJN AVC3 IF NO EXCHANGE REQUEST
  445. AOD T3
  446. LDC 10000+PCXF PROCESS CPU 1 EXCHANGE REQUEST
  447. RJM CPR
  448. AVC3 LDD T3
  449. NJN AVC1 IF EXCHANGE REQUEST OUTSTANDING
  450. UJN AVCX RETURN
  451. TIM SPACE 4,20
  452. ** TIM - UPDATE REAL TIME CLOCK.
  453. *
  454. * THE REAL TIME CLOCK IN CM IS UPDATED EVERY MILLISECOND. THIS
  455. * ROUTINE WHEN CALLED FROM OTHER THAN *AVC* IS USED TO MAINTAIN
  456. * TIME ACCURACY WITHOUT CALLS TO *CPR*. ON CYBER 180 AND
  457. * CYBER 170-865/875 MAINFRAMES, THE REAL TIME CLOCK IS READ
  458. * AFTER EVERY EXCHANGE TO *CPUMTR*, SINCE *CPUMTR* CONTROLS
  459. * THE CLOCK USING THE CPU CLOCK. BETWEEN EXCHANGES, *MTR*
  460. * MAINTAINS THE REAL TIME CLOCK IN THE USUAL WAY TO ENSURE
  461. * ACCURACY DURING PERIODS WHEN *CPUMTR* IS INACTIVE.
  462. *
  463. * EXIT (RTCL) UPDATED IN CM IF MILLISECOND OR MORE ELAPSED.
  464. * (MTRI) = COUNT OF TIMES CLOCK UPDATE MISSED.
  465. *
  466. * USES LS, MS, ST, CM - CM+4, TM - TM+4.
  467. *
  468. * CALLS ETA.
  469.  
  470.  
  471. TIM5 LDD HN RESET RETURN
  472. STM TIMX
  473. UJN TIM1 REENTER LOOP
  474.  
  475. TIM6 STD MS
  476. TLDC /EXPACS/MXP+6,XBP READ (MA), (A6), (B6)
  477. CRD CM
  478. LDD CM
  479. ADD CM+1
  480. NJN TIMX IF EXCHANGE PACKAGE NOT READY
  481. LDC RTCL
  482. CRD TM READ THE MILLISECOND CLOCK
  483. LDD TM+1
  484. SBD LS
  485. ZJN TIM8 IF NO CHANGE IN SECONDS
  486. PJN TIM7 IF NO OVERFLOW
  487. ADC 10000
  488. TIM7 RJM ETA ENABLE TIME ADVANCE
  489. LDD TM+1 MARK CURRENT SECONDS
  490. STD LS
  491. TIM8 LDN PSNI RESET EXCHANGE SWITCH
  492. STM TIMB
  493.  
  494. TIM SUBR ENTRY/EXIT
  495. TIM1 IAN 14 READ CLOCK
  496. TIMB PSN NORMAL
  497. * UJN TIM6 EXCHANGE OUTSTANDING (CPU CLOCK)
  498. SBD MS
  499. PJN TIM2 IF NO OVERFLOW
  500. ADC 10000
  501. TIM2 ADC -MLSC+35 CYCLES TILL RTCL WRITTEN
  502. * ADC -MLSC+17 (2X PP SPEED)
  503. * ADC -MLSC+10 (4X PP SPEED)
  504. TIMA EQU *-1
  505. MJN TIMX IF NOT .GE. 1 MILLISECOND ELAPSED
  506. SHN -12
  507. ZJN TIM3 IF REMAINDER .LT. 1024 MICROSECONDS
  508. AOM MTRI COUNT MISSED CLOCK UPDATE
  509. ISTORE TIMX,(UJN TIM5) SET UP TO LOOP
  510. TIM3 LDC MLSC
  511. RAD MS
  512. AOD TM+4 ADVANCE MILLISECOND CLOCK
  513. SHN -14
  514. ZJN TIM4 IF NO OVERFLOW
  515. RAD TM+3 UPDATE MILLISECONDS ON OVERFLOW
  516. SHN -14
  517. RAD TM+2
  518. TIM4 SOD ST UPDATE SECOND TIMER
  519. NJN TIM4.1 IF NOT 1 SECOND ELAPSED
  520. LDN 1 SET INCREMENT FOR *AVT*
  521. RJM ETA ENABLE TIME ADVANCE
  522. AOD TM+1 UPDATE SECONDS
  523. STD LS MARK CURRENT SECONDS
  524. SHN -14
  525. RAD TM
  526. TIM4.1 LDC RTCL UPDATE CLOCK
  527. CWD TM
  528. LJM TIMX EXIT
  529. ETA SPACE 4
  530. ** ETA - ENABLE TIME ADVANCE.
  531. *
  532. * THE UPDATE OF THE DATE AND TIME IS ENABLED, THE
  533. * NUMBER OF SECONDS TO ADVANCE IT IS ESTABLISHED,
  534. * AND THE SECOND TIMER IS RESET.
  535. *
  536. * ENTRY (A) .EQ. NUMBER OF SECONDS TO ADVANCE TIME.
  537. *
  538. * EXIT TIME ADVANCE IS ENABLED.
  539.  
  540.  
  541. ETA SUBR ENTRY/EXIT
  542. STM AVTC SET SECONDS INCREMENT
  543. ISTORE AVCA,(UJN AVC4) ENABLE CLOCK UPDATE
  544. LDC 1000D RESET SECOND TIMER
  545. STD ST
  546. UJN ETAX EXIT
  547. AVT SPACE 4,10
  548. ** AVT - ADVANCE TIME.
  549. *
  550. * ADVANCES THE TIME OF DAY AND DATE IN RESPONSE TO THE REAL
  551. * TIME CLOCK AND STORES THEM IN CENTRAL MEMORY. ON THE HOUR,
  552. * THE TIME PROCESSING FUNCTION CODE IS SET IN THE *1MB* CALL
  553. * WORD.
  554. *
  555. * EXIT (PDTL), (JDAL), (TIML), (DTEL) UPDATED IN CMR.
  556. *
  557. * USES CN, PD - PD+4(T0 - T0+4), TI - TI+4(CM - CM+4).
  558. *
  559. * CALLS CPR.
  560.  
  561.  
  562. AVT2 LDN PDTL WRITE *PDTL* AND *TIML*
  563. CWD PD
  564. ADK TIML-PDTL
  565. CWD TI
  566. LDD CN
  567. NJN AVTX IF NOT TOP OF HOUR
  568. * LDN 0 CLEAR BUFFER ADDRESS
  569. * STD CN
  570. LDN ADTF CALL *CPUMTR* TO COMPLETE THE ADVANCE
  571. RJM CPR
  572.  
  573. AVT SUBR ENTRY/EXIT
  574. LDN PDTL READ *PDTL* AND *TIML*
  575. CRD PD
  576. ADK TIML-PDTL
  577. CRD TI
  578. LDC 1 ADVANCE SECONDS
  579. AVTC EQU *-1
  580. STD CN INITIALIZE TOP OF HOUR FLAG
  581. RAD PD+4
  582. LDM AVTC
  583. SHN 6
  584. RAD TI+4
  585. SHN -6
  586. SBN 1R9+1
  587. AVT1 MJN AVT2 IF NOT 10 SECONDS
  588. SHN 6
  589. ADC 2R0. RESET SECONDS
  590. STD TI+4
  591. AOD TI+3 ADVANCE 10 SECONDS
  592. LPN 77
  593. SBN 1R6
  594. MJN AVT1 IF NOT 60 SECONDS
  595. LDN 100-60D ADVANCE MINUTES, RESET SECONDS
  596. RAD PD+4
  597. LDC 2R.0 RESET 10 SECONDS
  598. STD TI+3
  599. AOD TI+2 ADVANCE MINUTES
  600. LPN 77
  601. SBN 1R9+1
  602. MJN AVT1 IF NOT 10 MINUTES
  603. LDN 100+1R0-1R9-1 ADVANCE 10 MINUTES
  604. RAD TI+2
  605. SHN -6
  606. SBN 1R6
  607. MJN AVT1 IF NOT 60 MINUTES
  608. LDM PHED+2
  609. SCN SPTP
  610. AVTA LMN SPTP SET TIME PROCESSING FUNCTION FOR *1MB*
  611. * LMN 0 (NO TIME CALL FOR C70 NON-SIMULATION)
  612. ERRNZ SPTP-1 (ERROR IF TIME FUNCTION VALUE CHANGES)
  613. STM PHED+2
  614. LDN 0 CLEAR BUFFER ADDRESS
  615. STD CN
  616. LJM AVT2 CALL *CPUMTR* TO COMPLETE THE ADVANCE
  617. TITLE RECALL CRITERION PROCESSING.
  618. CRQ SPACE 4,10
  619. ** CRQ - CHECK RECALL CRITERION.
  620. *
  621. * THIS ROUTINE PROCESSED UP TO *MXRC* ENTRIES OF THE RECALL
  622. * REQUEST QUEUE. EACH ENTRY IS CHECKED TO SEE IF THE
  623. * RECALL CRITERION HAS BEEN SATISFIED. IF IT HAS, *CPUMTR* IS
  624. * CALLED TO BRING THE REQUEST OUT OF RECALL.
  625. *
  626. * CALLS CPR, RCP.
  627.  
  628.  
  629. CRQ6 LDD CN+2 CHECK REQUEST
  630. LPN 77
  631. LMN CRCW-100
  632. ERRNG CRCW-100 *CRCW* MUST BE .GE. 100
  633. ZJN CRQ7 IF CPU IN RECALL
  634. LDC 10000+PRQF
  635. RJM CPR
  636. UJN CRQ3 CHECK NEXT REQUEST
  637.  
  638. CRQ7 RJM RCP RECALL CPU
  639.  
  640. CRQ SUBR ENTRY/EXIT
  641. LDN MXRC SET MAXIMUM NUMBER OF REQUESTS TO PROCESS
  642. STD T3
  643. LDD RC
  644. LMD RQ
  645. NJN CRQ4 IF NOT POINTER WORD
  646. AOD T3
  647.  
  648. * THIS CODE IS USED TO RESET THE LIST POINTER TO THE
  649. * BEGINNING IN THE INFREQUENT EVENT THAT *MTR* TRIES
  650. * TO USE A BAD POINTER, WHICH IS USUALLY CAUSED BY
  651. * *CPUMTR* MAKING CHANGES IN THE LIST WHILE *MTR* IS
  652. * SCANNING IT.
  653.  
  654. CRQ2 LDD RQ RESET TO START OF LIST
  655. CRD CM
  656. LDD CM+4 SET TO PROCESS FIRST ENTRY
  657. STD RC
  658. CRQ3 SOD T3
  659. MJN CRQX IF LIMIT OF ENTRIES TO PROCESS
  660. CRQ4 LDD RC
  661. CRQ5 CRD CM
  662. STD CN+2
  663. LDD CM+4 SET NEXT ENTRY
  664. STD RC
  665. SCN 17
  666. ZJN CRQ2 IF END OF LIST
  667.  
  668. * THE FOLLOWING LOGIC IS DEPENDENT ON THE RECALL TYPES BEING
  669. * IN A CERTAIN ORDER.
  670.  
  671. ERRNZ PCBF-1 LOGIC REQUIRES THIS VALUE
  672. ERRNZ PTRF-2 LOGIC REQUIRES THIS VALUE
  673. ERRNZ PTMF-3 LOGIC REQUIRES THIS VALUE
  674.  
  675. LDD CM
  676. SBN PTMF
  677. ZJN PTM IF TIMED RECALL
  678. PJN CRQ2 IF ILLEGAL RECALL CRITERION
  679. ADN -PCBF+PTMF
  680. CRQA ZJN PCB IF PROCESS COMPLETION BIT
  681. * ZJN PCB3 (CME PRESENT)
  682. MJN CRQ2 IF NOT TIMED RECALL
  683. PTM SPACE 4,10
  684. ** PTM - TIMED RECALL PROCESSOR.
  685. *
  686. *T, CM 12/ PTMF,36/ RT,12/ LK
  687. * RT RECALL TIME.
  688. * LK NEXT RECALL ENTRY.
  689.  
  690.  
  691. PTM LDD TM+2
  692. SBD CM+1
  693. NJN PTM1 IF LIMIT PASSED OR NOT REACHED
  694. LDD TM+3
  695. SBD CM+2
  696. NJN PTM1 IF LIMIT PASSED OR NOT REACHED
  697. LDD TM+4
  698. SBD CM+3
  699. PTM1 MJN PTM3 IF NOT TIME TO RECALL REQUEST
  700. PTM2 LJM CRQ6 RECALL REQUEST
  701.  
  702. PTM3 LDD CM
  703. LMN PTRF
  704. ZJN PCB2 IF *PTRF* ENTRY PRESENT
  705. LDD RQ RESET POINTER TO START OF LIST
  706. STD RC
  707. LJM CRQX RETURN
  708. PCB SPACE 4,10
  709. ** PCB - COMPLETION BIT PROCESSOR.
  710. *
  711. *T, CM 12/ PCBF,12/,24/ AD,12/ LK
  712. * AD ADDRESS OF WORD TO CHECK COMPLETION BIT.
  713. * LK NEXT RECALL ENTRY.
  714.  
  715.  
  716. PCB LDD CM+2 CHECK COMPLETION BIT
  717. PCB1 SHN 14
  718. ADD CM+3
  719. CRD OR
  720. LDD OR+4
  721. LPN 1
  722. NJN PTM2 IF COMPLETE
  723. PCB2 LJM CRQ3 CHECK NEXT REQUEST
  724.  
  725. * COMPLETION BIT PROCESSOR FOR CME MAINFRAMES.
  726.  
  727. PCB3 LDD CM+2 SET R-REGISTER TO UPPER 12 BITS
  728. SHN 6
  729. STD OR+1
  730. SHN -14
  731. STD OR
  732. LDC 0 GET UPPER HALF OF MACHINE SIZE/100B
  733. PCBA EQU *-1
  734. SBD OR
  735. MJN PCB2 IF ADDRESS .GT. MACHINE SIZE
  736. NJN PCB4 IF ADDRESS .LT. MACHINE SIZE
  737. LDD CM+3
  738. SHN -6
  739. ADD OR+1
  740. STD T0
  741. LDC 0 GET LOWER HALF OF MACHINE SIZE/100B
  742. PCBB EQU *-1
  743. SBD T0
  744. MJN PCB2 IF ADDRESS .GT. MACHINE SIZE
  745. ZJN PCB2 IF ADDRESS .EQ. MACHINE SIZE
  746. PCB4 LRD OR LOAD R-REGISTER
  747. LDN 40 SET R-REGISTER BIT IN A
  748. UJN PCB1 READ COMPLETION ADDRESS
  749. TITLE PROCESS HARDWARE ERRORS.
  750. PHE SPACE 4,20
  751. ** PHE - PROCESS HARDWARE ERRORS.
  752. *
  753. * EXIT (A) = 0 IF *1MB* CALL NOT REQUIRED.
  754. * = 1 IF *1MB* WAS CALLED OR WAS ALREADY CALLED.
  755. *
  756. * USES CP, T4, CM - CM+4, CS - CS+4.
  757. *
  758. * CALLS FTN, ODW, PSE.
  759. *
  760. * NOTE *1MB* IS CALLED IF ONE OR MORE OF THE FOLLOWING
  761. * CONDITIONS HAVE BEEN DETECTED WHEN CHECKING THE
  762. * S/C REGISTERS AND THE *1MB* INHIBIT BIT IS NOT SET.
  763. * 1) A UNIQUE SINGLE BIT SECDED ERROR HAS OCCURRED.
  764. * 2) ERRORS OTHER THAN UNIQUE SINGLE BIT SECDED
  765. * ERRORS HAVE OCCURRED.
  766. * 3) TOP-OF-HOUR PROCESSING HAS BEEN SPECIFIED.
  767. *
  768. * *1MB* IS CALLED FOR MAINTENANCE REGISTER PROCESSING
  769. * AND TIME PROCESSING IF THE MACHINE IS A CYBER 180.
  770.  
  771.  
  772. PHE SUBR ENTRY/EXIT
  773.  
  774. * CHECK CYBER 180 MAINTENANCE REGISTERS.
  775. *
  776. * NOTE THE FOLLWING CODE IS ALTERED BY *PRESET* TO PROCESS
  777. * HARDWARE ERRORS ON VARIOUS MAINFRAMES.
  778.  
  779.  
  780. PHEA LDC ** (ADDRESS OF *DFT* CONTROL WORD)
  781. CRD CM READ *DFT* CONTROL WORD
  782. PHEF LDC ** (ADDRESS OF NOS REQUEST HEADER)
  783. CRD CS
  784. LDD CM+4
  785. SHN 21-2
  786. MJN PHE0 IF NOT DEDICATED *DFT*
  787. LDD CM+4
  788. LPN 1
  789. UJN PHE3 CHECK FOR *1MB* CALL
  790.  
  791. PHE0 SCF PHEX,MR IF CHANNEL RESERVED BY ANOTHER PP
  792. FNC /IOU/MRSS,MR SUMMARY STATUS
  793. IJM PHE1,MR IF CHANNEL RESPONDED TO FUNCTION
  794. DCN MR+40
  795. CCF *,MR
  796. UJN PHEX RETURN
  797.  
  798. PHE1 ACN MR
  799. IAN MR READ SUMMARY STATUS
  800. DCN MR+40
  801. CFM PHE2,MR IF NO ERRORS OCCURRED
  802. LDN 1 ERROR IN READING SS REGISTER
  803. PHE2 CCF *,MR
  804. * UJN PHE3 PROCESS *1MB* CALL
  805.  
  806. * ACCESS CYBER 70, 170, 700 SERIES AND 865/875 S/C REGISTER.
  807.  
  808. PHEE RMT
  809. LOC PHEA
  810. LDC FCTE TEST ERROR FUNCTION
  811. * LDC FCTB (CYBER 70 NON-SCR SIMULATION)
  812. FJM PHEX,CH IF CHANNEL HUNG FULL
  813. * FJM PHEX,15 (CYBER 70)
  814. RJM ODW
  815. UJN PHE3 SAVE ERROR STATUS
  816. LOC *O
  817. PHEE RMT
  818.  
  819. * SAVE ERROR PRESENT STATUS.
  820. * CHECK IF *1MB* CALL IS NEEDED.
  821.  
  822. PHE3 STD T0 SAVE ERROR STATUS
  823. PHEG ADD CS+4 INCLUDE *DFT* REQUEST PRESENT STATUS
  824. * PSN (NON-CYBER 180 MAINFRAME)
  825. ADM PHED+2
  826. ZJN PHE4.1 IF *1MB* CALL NOT REQUIRED
  827. LDD SC CHECK INHIBIT BIT
  828. CRD CS
  829. LDD CS
  830. SHN 0-13
  831. NJN PHE4.1 IF *1MB* ALREADY CALLED
  832. LDD T0 GET ERROR STATUS
  833. UJN PHE5 PROCESS CYBER 180 ERROR
  834. * ZJN PHE5 (CYBER 170, 865/875 ERROR/TIME PROCESSING)
  835. * UJN PHE5 (CYBER 70 AND NO SIMULATION)
  836. PHEB EQU *-1
  837.  
  838. RJM PSE PROCESS SINGLE BIT ERRORS
  839. LDC FCTE TEST FOR OTHER ERRORS
  840. RJM ODW
  841. STD T4
  842. LDC FCCL+DSBL ENABLE SINGLE BIT LOGGING
  843. RJM ODW
  844. UJN PHE4 TEST FOR NEED TO CALL *1MB*
  845.  
  846. * PSN (CYBER 176)
  847. PHEC EQU *-1
  848. LDC FCCL+DLSL ENABLE 176 LCME SINGLE BIT LOGGING
  849. RJM ODW
  850. PHE4 LDM PHED+2 TEST FOR NEED TO CALL *1MB*
  851. ADD T4
  852. NJN PHE5 IF TIME/ERROR PROCESSING REQUIRED
  853. PHE4.1 LJM PHEX RETURN
  854.  
  855. * CALL *1MB* VIA *1MP*.
  856.  
  857. PHE5 LDD FT SET INHIBIT BIT
  858. RAD CS
  859. LDD SC
  860. CWD CS
  861. LDD NC SYSTEM CONTROL POINT NUMBER
  862. STD CP
  863. LDD OF PP0 OUTPUT REGISTER ADDRESS
  864. ADN 1
  865. CWM PHED,ON WRITE PP CALL TO MESSAGE BUFFER
  866. LDN 0
  867. STD CM+1
  868. MONITOR RPPM REQUEST PP
  869. EXECUTE 1MP,=
  870. * LDN SPLG RESTORE LOGGING FUNCTION
  871. ERRNZ SPLG CODE DEPENDS ON VALUE
  872. STM PHED+2
  873. STM PHED+4
  874. LDN 1 SET ERROR FOUND
  875. UJN PHE4.1 RETURN
  876.  
  877. PHED VFD 18/3L1MP,6/**,12/0,24/0
  878. PSE SPACE 4,10
  879. ** PSE - PROCESS SINGLE BIT ERRORS.
  880. *
  881. * ENTRY (PSEA) = CORRECT MAINFRAME TABLE INDEX.
  882. *
  883. * CALLS BIS, ODW.
  884.  
  885.  
  886. PSE SUBR ENTRY/EXIT
  887. LDC FCSB+DSBL DISABLE CM SINGLE BIT LOGGING
  888. RJM ODW
  889. LDC FCTB+SECD TEST FOR SECDED ERROR
  890. RJM ODW
  891. ZJN PSE1 IF NO SECDED ERROR
  892. LDC FCTB+SDSC TEST FOR DOUBLE BIT ERROR
  893. RJM ODW
  894. NJN PSE1 IF DOUBLE BIT ERROR
  895. PSEA LDN 0 PASS MAINFRAME TABLE INDEX
  896. * LDN 1 (CYBER 176)
  897. RJM BIS SEARCH FOR MATCHING IDENTIFIER
  898. PSE1 UJN PSEX RETURN
  899. * PSN (CYBER 176)
  900. PSEB EQU *-1
  901.  
  902. * PROCESS CYBER 176 LCM ERRORS.
  903.  
  904. LDC FCSB+DLSL DISABLE LCME SINGLE BIT LOGGING
  905. RJM ODW
  906. LDC FCTB+LSCD TEST FOR LCME SECDED ERROR
  907. RJM ODW
  908. ZJN PSEX IF NO LCME SECDED ERROR
  909. LDC FCTB+LDSC TEST FOR LCME DOUBLE SECDED ERROR
  910. RJM ODW
  911. NJN PSE2 IF DOUBLE BIT ERROR
  912. LDN UIDL ADD OFFSET FOR LCME ID TABLE
  913. RAM BISD
  914. LDN 2 LOAD IDENTIFIER FOR 176 LCME
  915. RJM BIS SEARCH FOR MATCHING IDENTIFIER
  916. LCN UIDL RESTORE OFFSET FOR CM ID TABLE
  917. RAM BISD
  918. PSE2 LJM PSEX EXIT
  919. ODW SPACE 4,10
  920. ** ODW - OUTPUT DESCRIPTOR WORD.
  921. *
  922. * ENTRY (A) = DESCRIPTOR WORD.
  923. *
  924. * EXIT (A) = SCR REPLY WORD.
  925.  
  926.  
  927. ODW SUBR ENTRY/EXIT
  928. OAN CHSC OUTPUT DESCRIPTOR WORD
  929. * OAN 15 (CYBER 70)
  930. ODWA EQU *-1
  931. IAN CHSC INPUT SCR REPLY WORD
  932. * IAN 15 (CYBER 70)
  933. ODWB EQU *-1
  934. UJN ODWX EXIT
  935. BIS SPACE 4,10
  936. ** BIS - BUILD ID AND SEARCH TABLE.
  937. *
  938. * ENTRY (A) = 0 - BUILD ID FOR CYBER 170 AND 865/875.
  939. * 1 - BUILD ID FOR 176 CM.
  940. * 2 - BUILD ID FOR 176 LCME.
  941. *
  942. * EXIT (CM-CM+4) = ERROR COUNTS IN *CECL* UPDATED.
  943. *
  944. * USES T1, T2, T4, T6, T7, CM - CM+4, CN - CN+4, CS - CS+4.
  945. *
  946. * CALLS ODW.
  947.  
  948.  
  949. BIS8 AOD CM+4 INITIALIZE ID ERROR COUNT
  950. LDD T6 STORE UNIQUE ID INTO TABLE
  951. SHN 14
  952. ADD T4
  953. CWD CM
  954. LDD T2 SET APPROPRIATE FUNCTION BIT
  955. LMN 2
  956. ZJN BIS9 IF LCME SECDED ERROR
  957. LDN SPCS-SPLS SET CM SECDED ERROR FUNCTION BIT
  958. BIS9 ADN SPLS SET LCME SECDED ERROR FUNCTION BIT
  959. RAM PHED+2
  960.  
  961. BIS SUBR ENTRY/EXIT
  962. STD T2 SAVE ID BUILD TYPE
  963. LDM TBIS,T2 SAVE FWA OF ID BUILD ROUTINE
  964. STD T7
  965. LDN ZERL CLEAR FIELD FOR BUILDING ID
  966. CRD CM
  967.  
  968. * BUILD ID FOR APPROPRIATE MACHINE.
  969.  
  970. LDN CM INITIALIZE ID BUILD ADDRESS
  971. STD T6
  972. BIS1 AOD T7
  973. LDI T7 GET NEXT SCR WORD INFORMATION
  974. ZJN BIS2 IF ID BUILD COMPLETE
  975. STM BISA SET APPROPRIATE MASK FOR SCR BYTES
  976. AOD T7
  977. LDI T7 GET SHIFT COUNT
  978. LPN 77
  979. ADC SHNI BUILD SHIFT INSTRUCTION
  980. STM BISB
  981. LDI T7 GET SCR WORD FROM TABLE AND READ
  982. SHN -6
  983. LPN 37
  984. IFNE FCRD,0,1 (ADJUST IF READ FUNCTION CHANGES)
  985. ADC FCRD
  986. RJM ODW
  987. LPC *
  988. BISA EQU *-1 MASK OFF DESIRED SCR BITS
  989. SHN 0
  990. BISB EQU *-1 POSITION FOR ID BIT MERGE
  991. RAI T6 MERGE ID BITS
  992. LDI T7 CONTINUE ID BUILD IN APPROPRIATE BYTE
  993. SHN 0-13
  994. RAD T6
  995. UJN BIS1 GET NEXT SCR WORD
  996.  
  997. * SCAN UNIQUE ID TABLE BACKWARDS TO SEE IF
  998. * THERE IS ALREADY AN ENTRY FOR THIS ERROR.
  999.  
  1000. BIS2 LDN UIDL UNIQUE ID TABLE LENGTH
  1001. STD T1
  1002. BIS3 SOD T1 DECREMENT CURRENT ENTRY OFFSET
  1003. MJN BIS5 IF SCAN COMPLETE
  1004. ADC ** FWA OF UNIQUE ID TABLE
  1005. BISC EQU *-1
  1006. BISD ADN 0 ADD OFFSET FOR APPROPRIATE ID TABLE
  1007. CRD CN
  1008. STD T4 STORE UNIQUE ID TABLE ADDRESS
  1009. SHN -14
  1010. STD T6
  1011. LDD CN TEST IF ENTRY IS AVAILABLE
  1012. ADD CN+1
  1013. ADD CN+2
  1014. NJN BIS4 IF LOCATION CONTAINS AN IDENTIFIER
  1015. LJM BIS8 IF LOCATION IS AVAILABLE
  1016.  
  1017. BIS4 LDD CM TEST IF BYTE 0 MATCHES
  1018. LMD CN
  1019. NJN BIS3 IF NO MATCH
  1020. LDD CM+1 TEST IF BYTE 1 MATCHES
  1021. LMD CN+1
  1022. NJN BIS3 IF NO MATCH
  1023. LDD CM+2 TEST IF BYTE 2 MATCHES
  1024. LMD CN+2
  1025. NJN BIS3 IF NO MATCH
  1026.  
  1027. * THE NEWLY-BUILT IDENTIFIER MATCHES A TABLE ENTRY.
  1028.  
  1029. LDN 77
  1030. LMD CN+4
  1031. ZJN BIS5 IF REACHED THRESHOLD
  1032. AOD CN+4 INCREMENT COUNTER
  1033. LDD T6 REWRITE UPDATED ID AND COUNT
  1034. SHN 14
  1035. ADD T4
  1036. CWD CN
  1037.  
  1038. * TEST WHICH RANK AND/OR SECDED BITS TO CLEAR.
  1039.  
  1040. BIS5 AOD T7 ISSUE SECDED CLEARING FUNCTION(S)
  1041. LDI T7
  1042. RJM ODW
  1043. AOD T7
  1044. BISE LDI T7
  1045. * UJN BIS6 (CYBER 170 OR 865/875)
  1046. RJM ODW SET C176 CM/LCME RANK II CLEAR
  1047. AOD T7
  1048. LDI T7 CLEAR C176 CM/LCME RANK II CLEAR
  1049. RJM ODW
  1050. BIS6 LDD T2 INCREMENT APPROPRIATE ERROR COUNT
  1051. SHN -1
  1052. ADN CM+3
  1053. STD T2
  1054. LDK CECL
  1055. CRD CM
  1056. LDI T2
  1057. LMC 7777
  1058. ZJN BIS7 IF CM/LCME ERROR COUNT THRESHOLD REACHED
  1059. AOI T2
  1060. LDK CECL
  1061. CWD CM UPDATE *CECL*
  1062. BIS7 LJM BISX RETURN
  1063.  
  1064. * TBIS - TABLE OF ID BUILD ENTRY POINTS.
  1065.  
  1066. TBIS BSS 0
  1067. LOC 0
  1068. CON BISF-1 BUILD ID FOR LOWER C170 CM.
  1069. CON BISF-1 BUILD ID FOR C176 CM.
  1070. CON BISG-1 BUILD ID FOR C176 LCME.
  1071. LOC *O
  1072.  
  1073. * THE TABLE FIELDS BELOW CONTAIN THE FOLLOWING INFORMATION.
  1074. *
  1075. * 12/MASK, 1/INCR, 5/SCR WORD, 6/SHIFT.
  1076. * WHERE INCR = 0, IF NO INCREMENT TO NEXT ID CELL.
  1077. * = 1, IF INCREMENT REQUIRED.
  1078. * SHIFT = BIT ALIGNMENT NEEDED TO MERGE SCR BITS
  1079. * INTO ID.
  1080. *
  1081. * FOLLOWING THE TERMINATOR FOR EACH ID TYPE ARE THE
  1082. * ERROR-CLEARING FUNCTION CODES TO BE ISSUED TO THE SCR.
  1083. * EACH FUNCTION USES 12 BITS.
  1084.  
  1085. BISF BSS 0 C176 CM ID INFORMATION
  1086. VFD 12/7777,1/1,5/LCMW,6/0
  1087. VFD 12/77,1/0,5/CMAW,6/6
  1088. VFD 12/7700,1/1,5/SYNW,6/-6
  1089. VFD 12/60,1/0,5/SYNW,6/6
  1090. CON 0 C176 CM ID BUILD TERMINATOR
  1091. CON FCCL+SECD
  1092. CON FCSB+CCRT
  1093. CON FCCL+CCRT
  1094. BISFL EQU *-BISF LENGTH OF TABLE
  1095.  
  1096. *BISF BSS 0 C170 CM ID INFORMATION
  1097. * VFD 12/6000,1/0,5/CSEW,6/0
  1098. * VFD 12/77,1/0,5/CMAW,6/4
  1099. * VFD 12/7400,1/1,5/SYNW,6/-10
  1100. * VFD 12/360,1/0,5/SYNW,6/4
  1101. * CON 0 C170 ID BUILD TERMINATOR
  1102. * CON FCCL+SECD
  1103. * CON 0 TERMINATOR FOR C170 CLEARING FUNCTIONS
  1104. * CON 0
  1105.  
  1106. BISG BSS 0 C176 LCME ID INFORMATION
  1107. VFD 12/377,1/0,5/LSYW,6/4
  1108. VFD 12/1400,1/0,5/LERW,6/-6
  1109. VFD 12/60,1/1,5/LCAW,6/-4
  1110. VFD 12/17,1/0,5/LCAW,6/10
  1111. CON 0 C176 LCME ID BUILD TERMINATOR
  1112. CON FCCL+LSCD
  1113. CON FCSB+LCRT
  1114. CON FCCL+LCRT
  1115. TITLE PP REQUEST PROCESSING.
  1116. *** PP FUNCTION REQUESTS.
  1117. *
  1118. * PP FUNCTION REQUESTS ARE MADE TO *MTR* BY PLACING
  1119. * THE FUNCTION CODE IN BYTE 0 OF THE PP-S OUTPUT REGISTER.
  1120. * WHEN THE REQUEST IS COMPLETED, *MTR* CLEARS BYTE 0 OF
  1121. * THE OUTPUT REGISTER.
  1122. SPACE 4,10
  1123. ** PP REQUEST PROCESSOR.
  1124. * NOTE - FOLLOWING CODE MUST BE IN ORDER.
  1125. HNG SPACE 4
  1126. ** HNG - HANG PPU AND DISPLAY MESSAGE
  1127.  
  1128.  
  1129. HNGB DATA 7777 A REGISTER SAVE AREA
  1130.  
  1131. HNG CON ** ADDRESS OF CALLER
  1132. HNG1 STM HNGB SAVE (A)
  1133. LDD OA
  1134. ADN 6
  1135. CRD CN
  1136. LDN PDTL SET PACKED DATE AND TIME
  1137. CRD CM
  1138. LDC 2RHN ADD *HNG/* TO PACKED DATE/TIME
  1139. STD CM
  1140. LDC 2RG/
  1141. STD CM+1
  1142. LMD CN+1
  1143. NJN HNG2 IF INITIAL DETECTION OF HUNG PP
  1144. LDD CM
  1145. LMD CN
  1146. ZJN HNG3 IF NOT INITIAL DETECTION OF HUNG PP
  1147. HNG2 LDD OA
  1148. ADN 6
  1149. CWD CM
  1150. LDD OA ADD PP NAME TO *HUNG PP* MESSAGE
  1151. SBN 1
  1152. CRD CM
  1153. LDD CM
  1154. STM HNGC
  1155. LDD CM+1
  1156. SCN 77
  1157. STM HNGC+1
  1158. HNG3 LDC MS2W+** DISPLAY SYSTEM CP MESSAGE
  1159. HNGD EQU *-1
  1160. CWM HNGA,TR
  1161. UJN DSD1 RETURN
  1162.  
  1163.  
  1164. HNGA DATA H*HUNG PP - *
  1165. HNGC DATA C*XXX* NAME OF HUNG PP
  1166. DSD SPACE 4,10
  1167. ** DSD - PROCESS *DSD* REQUEST.
  1168.  
  1169.  
  1170. DSD LDC 7000 CHECK REQUEST
  1171. RAD OR
  1172. SHN 21-11
  1173. MJN DSD1 IF PREVIOUSLY PROCESSED
  1174. LDD OR
  1175. SBN CPUM
  1176. MJN PPR1 IF MTR FUNCTION
  1177. LDD OA WRITE *OR* WITH CLEARED INTERLOCK
  1178. CWD OR
  1179. RJM CPR PROCESS CPU FUNCTION
  1180. DSD1 UJN FNR FUNCTION RETURN
  1181. PPR SPACE 4,10
  1182. ** PPR - PROCESS PP REQUEST.
  1183. *
  1184. * ENTRY (A) = REQUEST.
  1185. * (OA) = PP OUTPUT REGISTER ADDRESS.
  1186. * (OR - OR+4) = PP OUTPUT REGISTER.
  1187. *
  1188. * EXIT TO FUNCTION PROCESSOR WITH (A) = (OA).
  1189.  
  1190.  
  1191. PPR SBN CPUM
  1192. PPRA EQU *-1
  1193. * UJN MSC (STEP MODE)
  1194. PJN FNR1 IF NOT AN *MTR* FUNCTION
  1195. PPR1 LDM TPPR,OR SET FUNCTION PROCESSOR
  1196. STD T8
  1197. LDD OA
  1198. LJM 0,T8 PROCESS FUNCTION
  1199. FNZ SPACE 4
  1200. ** FNZ - FUNCTION RETURN TO CLEAR OUTPUT REGISTER.
  1201.  
  1202.  
  1203. FNZ LDD OA CLEAR OUTPUT REGISTER
  1204. CWD ZR
  1205. * UJN FNR
  1206. FNR SPACE 4
  1207. ** FNR - FUNCTION RETURN.
  1208.  
  1209.  
  1210. FNR RJM CCP CHECK CENTRAL PROGRAM
  1211. FNR1 LJM MTR RETURN TO MAIN LOOP
  1212. FNC SPACE 4
  1213. ** FNC - FUNCTION RETURN TO CLEAR UPPER BYTE OF *OR*.
  1214.  
  1215.  
  1216. FNC LDN 0
  1217. FNC1 STD OR
  1218. LDD OA
  1219. CWD OR
  1220. UJN FNR FUNCTION RETURN
  1221. MSC SPACE 4
  1222. ** MSC - MONITOR STEP CONTROL.
  1223.  
  1224.  
  1225. MSC LDD OA READ INPUT REGISTER
  1226. SBN 1
  1227. CRD CM
  1228. LDN OR
  1229. RJM CFS CHECK FOR STEP CRITERION
  1230. NJN MSC5 IF STEP CRITERION NOT MET
  1231. LDC 7777
  1232. * LDC 0 (STEP REQUESTED BY *DSD*)
  1233. MSCA EQU *-1
  1234. NJN FNR IF NOT STEPPED
  1235. LDD OA
  1236. SBD OF
  1237. LMC ** (NEXT PP TO STEP)
  1238. MSCB EQU *-1
  1239. ZJN MSC4 IF THIS PP
  1240. RJM SNP SET NEXT PP TO STEP
  1241. MSC3 UJN FNR IGNORE REQUEST
  1242.  
  1243. MSC4 LCN 0 RESET STEP FLAG
  1244. STM MSCA
  1245. LDN 10 ADVANCE PP
  1246. RAM MSCB
  1247. MSC5 RJM TIM UPDATE TIME
  1248. RJM SNP SET NEXT PPU TO STEP
  1249.  
  1250. * PROCESS FUNCTION.
  1251.  
  1252. LDD OR CHECK FUNCTION
  1253. SBN CPUM
  1254. PJN MSC6 IF CPU FUNCTION
  1255. RJM TIM UPDATE TIME
  1256. LJM PPR1 PROCESS REQUEST
  1257.  
  1258. MSC6 LDD OR
  1259. SHN 0-11
  1260. LMN 1
  1261. NJN MSC3 IF NOT *STEP* ONLY
  1262. LDD OR CLEAR FLAGS
  1263. LPC 177
  1264. STD OR
  1265. LDD OA
  1266. CWD OR
  1267. RJM CPR
  1268. UJN MSC3 COMPLETE FUNCTION
  1269. SNP SPACE 4
  1270. ** SNP - SET NEXT PP TO STEP.
  1271. *
  1272. * ENTRY (MSCB) = CURRENT PP.
  1273. *
  1274. * EXIT (MSCB) = NEXT PP.
  1275. *
  1276. * USES T1, T2, T4, CM - CM+4, CN - CN+4.
  1277. *
  1278. * CALLS CFS.
  1279.  
  1280.  
  1281. SNP5 LDN 20
  1282. UJN SNP1 RESET PP 2
  1283.  
  1284. SNP SUBR ENTRY/EXIT
  1285. LDN 1 SET PP COUNT
  1286. STD T1
  1287. LDM MSCB SET PP
  1288. SNP1 STD T2
  1289. SNP2 STM MSCB
  1290. SHN -3
  1291. STD T4 SAVE PP NUMBER
  1292. LMD NP
  1293. ZJN SNP5 IF LAST PP
  1294. AOD T1 ADVANCE PP COUNT
  1295. LMD NP
  1296. SNP3 ZJN SNPX IF ALL PP-S CHECKED
  1297. LDD T2 READ INPUT REGISTER
  1298. ADD OF
  1299. CRD CN
  1300. SBN 1
  1301. CRD CM
  1302. LDD CM
  1303. ZJN SNP4 IF PP NOT ASSIGNED
  1304. LDD CN
  1305. ZJN SNP4 IF NO FUNCTION REQUEST
  1306. LDN CN
  1307. RJM CFS CHECK FOR STEP
  1308. NJN SNP4 IF STEP CRITERION NOT MET
  1309. LDM TREA,T4
  1310. LMC PPR
  1311. ZJN SNP3 IF NO REENTRY PROCESSING
  1312. SNP4 LDN 10 ADVANCE PP
  1313. RAD T2
  1314. UJN SNP2 LOOP
  1315. TITLE PP REQUEST FUNCTION PROCESSORS.
  1316. ** NOTE - EXIT CONDITION REFERENCES TO (OR - OR+4) SPECIFY
  1317. * THE STATUS OF THE PP OUTPUT REGISTER IN CENTRAL MEMORY.
  1318. * IN ALL CASES, (OR) = 0. IF A BYTE IS NOT SPECIFIED,
  1319. * THAT BYTE IS NOT CHANGED.
  1320. * THE DIRECT LOCATIONS *OR - OR+4* MAY DIFFER IN CONTENT
  1321. * FROM THE ACTUAL OUTPUT REGISTER.
  1322. ASCM SPACE 4,10
  1323. *** *ASCM* IS A *PPR* FUNCTION. IT IS USED TO TELL PP RESIDENT
  1324. * ROUTINE *PLL* THAT THE LIBRARY HAS BEEN SEARCHED DURING
  1325. * ASSIGNMENT OF THE PP. NO *MTR* PROCESSING IS REQUIRED.
  1326.  
  1327.  
  1328. PPR ASCM,FNR1
  1329. BOTM SPACE 4,10
  1330. *** *BOTM* IS A *PPR* FUNCTION. IT IS USED TO TELL PP RESIDENT
  1331. * ROUTINE *FTN* TO LOAD A BOOTSTRAP PROGRAM. NO *MTR*
  1332. * PROCESSING IS REQUIRED.
  1333.  
  1334.  
  1335. PPR BOTM,FNR1
  1336. CCHM SPACE 4,10
  1337. *** CCHM - CHECK CHANNEL.
  1338. *
  1339. * ASSIGN CHANNEL IF NOT IN USE.
  1340. *
  1341. * ENTRY
  1342. *T, OR 12/ CCHM,6/ ,1/ C,5/ CH,36/
  1343. * C SET IF CONCURRENT CHANNEL.
  1344. * CH CHANNEL NUMBER.
  1345. *
  1346. * EXIT
  1347. *T, OR 12/ 0,12/ CH,12/ ST,24/
  1348. * CH CHANNEL ASSIGNED IF ST = 1.
  1349. * BIT 2**5 OF CH SET IF DOWN CHANNEL IN USE BY ANOTHER
  1350. * MAINTENANCE USER.
  1351. * ST = 1 IF CHANNEL ASSIGNED.
  1352. * ST = 0 IF CHANNEL NOT ASSIGNED.
  1353.  
  1354.  
  1355. PPR CCHM
  1356.  
  1357. LDD OR+1 CHECK CHANNEL
  1358. RJM TCH
  1359. ZJN CCH3 IF FREE
  1360. MJN CCH2 IF DOWN
  1361. CCH1 LJM FNZ REJECT FUNCTION
  1362.  
  1363. CCH2 SHN 5-21
  1364. LPN 37
  1365. NJN CCH1 IF DOWN CHANNEL IN USE
  1366. LDD T2
  1367. RJM GCE GET CHANNEL ASSIGNMENT TABLE ENTRY
  1368. ZJN CCH3 IF CHANNEL IS NOT ASSIGNED TO A JOB
  1369. LMD CN
  1370. NJN CCH6 IF CHANNEL IS NOT ASSIGNED TO THIS JOB
  1371. CCH3 LDN 1 SET OUTPUT REGISTER
  1372. STD OR+2
  1373.  
  1374. * ENTRY FROM *RCHM*.
  1375.  
  1376. CCH4 LDD T2 SET CHANNEL
  1377. LPN 37
  1378. STD OR+1
  1379. LDD PP SET ASSIGNMENT TO THIS PP
  1380. STD CF SET FLAG FOR CHANNEL UPDATE
  1381. LMM TCHS,T2
  1382. LPC -4000
  1383. STM TCHS,T2
  1384. CCH5 LJM FNC COMPLETE FUNCTION
  1385.  
  1386. CCH6 LDD OR+1 INDICATE DOWN CHANNEL IN USE
  1387. SCN 40
  1388. LMN 40
  1389. STD OR+1
  1390. UJN CCH5 COMPLETE FUNCTION
  1391.  
  1392. CDBM SPACE 4,15
  1393. *** CDBM - CHECK DAYFILE BUSY.
  1394. *
  1395. * CHECK STATUS OF SPECIFIED DAYFILE.
  1396. *
  1397. * ENTRY
  1398. *T, OR 12/ CDBM, 12/ BC, 12/ MO, 12/ CP+SF, 12/ DI
  1399. * BC BYTE COUNT OF MESSAGE.
  1400. * MO MESSAGE OPTION.
  1401. * CP CONTROL POINT ADDRESS.
  1402. * SF = 0 TO WAIT ON SPACE IN DAYFILE BUFFER.
  1403. * = 1 TO WAIT UNTIL PP DUMP BUFFER NOT BUSY.
  1404. * DI DAYFILE INDEX.
  1405. * 0 = JOB DAYFILE.
  1406. * 1 = MASTER DAYFILE.
  1407. * 2 = ACCOUNT DAYFILE.
  1408. * 3 = ERRLOG DAYFILE.
  1409. * 4 = MAINLOG DAYFILE.
  1410. *
  1411. * EXIT (SUBFUNCTION (SF) REQUEST SATISFIED)
  1412. *T, OR 12/ DFMM, 12/ BC, 12/ MO, 12/, 12/
  1413.  
  1414.  
  1415. PPR CDBM
  1416.  
  1417. LDD OR+3 CHECK FOR MOVE
  1418. SHN 0-7
  1419. LMD MM.0
  1420. ZJP FNR IF CP SCHEDULED FOR MOVE
  1421. LDD OR+3 CHECK REQUEST
  1422. LPN 1
  1423. ZJN CDB1 IF WAITING ON SPACE IN BUFFER
  1424. LDN DFPP
  1425. CRD CS
  1426. LJM CDB5 CHECK DUMP BUFFER BUSY
  1427.  
  1428. CDB1 LDD OR+4
  1429. ZJN CDB2 IF JOB DAYFILE
  1430. SHN 1
  1431. CDBA ADC ** (FWA-3 OF DAYFILE POINTERS)
  1432. ADD OR+4
  1433. UJN CDB3 CONTINUE PROCESSING
  1434.  
  1435. CDB2 LDD OA REREAD INPUT REGISTER
  1436. SBN 1
  1437. CRD CM
  1438. LDD CM+1 EXTRACT CONTROL POINT NUMBER
  1439. LPN 37
  1440. SHN 7
  1441. CDBB ADN FLSW GET RA FROM FL CONTROL WORD
  1442. * ADN FLSW+1 (CME PRESENT)
  1443. CRD CM
  1444. LRD CM+1
  1445. LDD CM+3 READ BUFFER POINTERS FROM NFL
  1446. SHN 6
  1447. SBN DAPN
  1448. CDB3 CRD CM
  1449. ADN 1
  1450. CRD CN
  1451. ADN 1
  1452. CRD CS
  1453. LDD CN+4 OUT - IN
  1454. SBD CM+4
  1455. ZJN CDB6 IF BUFFER EMPTY
  1456. PJN CDB4 IF OUT .GT. IN
  1457. ADD CN+2 ADD BUFFER LENGTH
  1458. CDB4 SBN MXML
  1459. PJN CDB6 IF SPACE IN BUFFER
  1460. CDB5 LDD CS+4
  1461. LPN 1
  1462. ZJN CDB7 IF DAYFILE BUSY
  1463. CDB6 LDC DFMM+5000 HAVE PP REISSUE REQUEST WITHOUT DELAY
  1464. STD OR
  1465. LDD OA STORE OUTPUT REGISTER
  1466. CWD OR
  1467. CDB7 LJM FNR RETURN
  1468. DCHM SPACE 4,10
  1469. *** DCHM - DROP CHANNEL.
  1470. *
  1471. * RELEASE CHANNEL FROM ASSIGNMENT.
  1472. *
  1473. * ENTRY
  1474. *T, OR 12/ DCHM,6/ 0,1/ C,5/ CH,36/
  1475. * C SET IF CONCURRENT CHANNEL SPECIFIED IN CH.
  1476. * CH CHANNEL TO DROP.
  1477. *
  1478. * EXIT
  1479. *T, OR 60/ 0
  1480.  
  1481.  
  1482. PPR DCHM
  1483.  
  1484. LDD OR+1 CHECK LEGAL CHANNEL NUMBER
  1485. RJM VCN
  1486. LDD PP
  1487. LMM TCHS,T2
  1488. LPN 37
  1489. ZJN DCH1 IF CHANNEL ASSIGNED TO THIS PP
  1490. LDD PP
  1491. SBN 1
  1492. NJN DCH2 IF NOT *DSD*
  1493. DCH1 LDD OA CLEAR OUTPUT REGISTER
  1494. STD CF SET FLAG FOR CHANNEL UPDATE
  1495. CWD ZR
  1496. LDM TCHS,T2
  1497. LPC 140 UPDATE CHANNEL RESERVATION TABLE
  1498. STM TCHS,T2
  1499. UJN CDB7 RETURN
  1500.  
  1501. DCH2 RJM HNG HANG PP
  1502. DRCM SPACE 4
  1503. *** DRCM - DRIVER RECALL CPU.
  1504. *
  1505. * PERFORMS AN RCLM IF THE JOB IS IN RECALL. THIS IS USED BY
  1506. * THE TAPE AND MASS STORAGE DRIVERS WHO WRITE THIS FUNCTION TO
  1507. * THEIR OUTPUT REGISTER WITHOUT WAITING FOR AN ACCEPT.
  1508. *
  1509. * ENTRY
  1510. *T, OR 12/ DRCM,48/
  1511. *
  1512. * EXIT
  1513. *T, OR 60/ 0
  1514.  
  1515.  
  1516. PPR DRCM
  1517.  
  1518. CWD ZR CLEAR OUTPUT REGISTER
  1519. LDD PP GET ASSIGNED CP/PCP
  1520. SHN PPXES
  1521. TADC ACPP,PPX
  1522. CRD CM
  1523. LDD CM+4 SET CP ADDRESS
  1524. STD CN+2
  1525. ADN STSW CHECK RECALL STATUS
  1526. CRD CS
  1527. DCRA ADN FLSW-STSW
  1528. * ADN FLSW+1-STSW (CME PRESENT)
  1529. CRD CM
  1530. LDD CS
  1531. SHN -11
  1532. LMN XCPS
  1533. ZJN DRC1 IF *X* STATUS
  1534. LDD CN+2
  1535. ADN CWQW
  1536. CRD CM
  1537. LDD CM+1
  1538. SHN 21-12
  1539. PJN DRC2 IF TO RECALL CPU
  1540. UJN DRC4 RETURN
  1541.  
  1542. DRC1 LRD CM+1
  1543. LDD CM+3 CHECK (RA+1)
  1544. SHN 6
  1545. ADN 1
  1546. CRD CM
  1547. LDD CM
  1548. NJN DRC4 IF (RA+1) .NE. 0
  1549. DRC2 RJM RCP RECALL CPU
  1550. DRC4 LJM FNR RETURN
  1551. DSWM SPACE 4,70
  1552. *** DSWM - DRIVER SEEK WAIT.
  1553. *
  1554. * CAUTION, STORAGE MOVE MAY OCCUR DURING *DSWM* PROCESSING.
  1555. *
  1556. * ENTRY
  1557. *T, OR 12/ DSWM,12/,12/,12/ F,12/
  1558. *T, MB 12/ T4,12/ T5,12/ T6,12/ T7,12/ CHRV
  1559. *T, MB+1 12/ LU,6/ SF,6/ PU,12/ PC,12/ PT,12/ PS
  1560. * F = SUBFUNCTION CODE.
  1561. * 0 = DROP CHANNEL.
  1562. * 1 = REQUEST CHANNEL, AND EQUIPMENT IF READSYS.
  1563. * 2 = SEEK IN PROGRESS.
  1564. * 4 = UNIT SWITCH.
  1565. * 10 = DRIVE RESERVE.
  1566. * 11 = REQUEST CHANNEL, UNIT, AND EQUIPMENT IF READSYS.
  1567. * 20 = WRITE IN PROGRESS (ISD ONLY).
  1568. * 2000 = CONTROLLER RESERVED.
  1569. * T4 = CHANNEL.
  1570. * T5 = EQUIPMENT.
  1571. * T6 = LOGICAL TRACK.
  1572. * T7 = LOGICAL SECTOR.
  1573. * CHRV = WORD *CHRV*.
  1574. * LU = LOGICAL UNIT NUMBER.
  1575. * SF = SEEK TYPE (USED ON ISD DEVICES ONLY).
  1576. * 0 = NORMAL SEEK.
  1577. * 1 = WRITE/SEEK.
  1578. * 2 = READ/SEEK.
  1579. * 3 = CHECK WRITE COMPLETE.
  1580. * PU = PHYSICAL UNIT NUMBER.
  1581. * PC = CYLINDER ADDRESS.
  1582. * PT = PHYSICAL TRACK.
  1583. * PS = PHYSICAL SECTOR.
  1584. *
  1585. * HANG CONDITIONS -
  1586. *
  1587. * BAD CHANNEL NUMBER.
  1588. * EQUIPMENT *EQ* NOT MASS STORAGE.
  1589. * CHANNEL NOT ASSIGNED WHEN BIT 0 OF *CHRV* .NE. 0.
  1590. *
  1591. *
  1592. * EXIT
  1593. *T, OR 12/ 0,12/ RF,12/ CC,12/ ST,12/ T4
  1594. *T, MB 60/ SAME AS INPUT WITH *CHRV* UPDATED.
  1595. *T, MB+1 60/ *PU* UPDATED IF READSYS, *SF* SET TO 3 IF SUBFUNCTION 20
  1596. * RF = RELEASE FUNCTION.
  1597. * A DRIVE RELEASE FUNCTION IS RETURNED IF SEEK WAITS
  1598. * ARE OUTSTANDING ON THE CHANNEL FOR SHARED DEVICES.
  1599. * AN OPERATION COMPLETE IS RETURNED IN ALL OTHER CASES.
  1600. * THE OPERATION COMPLETE RELEASES BOTH THE DRIVE AND
  1601. * THE CONTROLLER.
  1602. * CC = 1, IF ISD AND FUNCTION WAS *WRITE IN PROGRESS*.
  1603. * 12, OTHERWISE.
  1604. * ST = (CHRV), IF OK TO SEEK.
  1605. * COMPLEMENT OF EC, IF ERROR DETECTED.
  1606. * EC = CRSE, IF CONTROLLER RESERVE TIME OUT.
  1607. * EC = CHFE, IF INCORRECT *DSWM* FUNCTION NUMBER.
  1608. * EC = DRVE, IF DRIVE RESERVE TIMEOUT.
  1609. * EC = LNRE, IF LOGICAL NOT READY.
  1610. *
  1611. * RE-ENTRY
  1612. *T, OR 12/ DSWM,12/ RP,12/ CPM,12/ CH,5/ CP,7/ FG
  1613. * RP = REENTRY PROCESSOR ADDRESS.
  1614. * CPM = CONTROL POINT/PSEUDO-CONTROL POINT FOR MOVE CHECK.
  1615. * CH = CHANNEL(S) TO REQUEST.
  1616. * CP = CONTROL POINT NUMBER FOR PRIVILEGES CHECK.
  1617. * FG = FLAGS.
  1618. * 1 = REQUEST FOR CHANNEL AND UNIT ON NEW SEEK.
  1619. * 2 = SEEK WAIT FLAG.
  1620. * 4 = EQUIPMENT IS A SHARED DEVICE.
  1621. * 10 = SEEK OUTSTANDING ON SHARED DEVICE.
  1622. * 20 = CALLER SELECTED CHANNEL.
  1623. * 40 = ISD DEVICE FLAG.
  1624. * 100 = WRITE IN PROGRESS (ISD ONLY).
  1625. *T, MB SAME AS INPUT WITH (T4) = ALLOWABLE CHANNEL(S).
  1626. SPACE 4,20
  1627. ** MAXIMIZATION OF SEEK OVERLAP.
  1628. *
  1629. * THE THROUGHPUT OF THE MASS STORAGE SUBSYSTEM CAN BE ENHANCED
  1630. * BY MAXIMIZING THE SEEK OPERATIONS WHICH ARE PERFORMED IN
  1631. * PARALLEL WITH DATA TRANSFERS, IE. SEEK OVERLAP. IN ORDER TO
  1632. * MAXIMIZE SEEK OVERLAPS WE MUST GIVE PRIORITY TO THE
  1633. * INITIATION OF NEW SEEKS, WHICH WILL START THE POSITIONER
  1634. * MOVING. WE SHOULD NOT GIVE THE CHANNEL TO A PP WHICH IS
  1635. * CHECKING FOR THE COMPLETION OF A SEEK OPERATION IF ANOTHER
  1636. * PP IS WAITING TO INITIATE A SEEK. DOING SO WOULD TEND TO
  1637. * SERIALIZE THE SEEK AND DATA TRANSFER OPERATIONS.
  1638. *
  1639. * TO GIVE PRIORITY TO THE ASSIGNMENT OF THE CHANNEL TO INITIAL
  1640. * SEEK OPERATIONS, *DSWM* KEEPS TRACK OF THE FOLLOWING.
  1641. * 1) FOR EACH CHANNEL REQUESTED BY A PP FOR AN INITIAL
  1642. * SEEK, THE PP NUMBER OF THE REQUESTING PP IS SAVED
  1643. * IN *TCHR*.
  1644. * 2) FOR EACH EQUIPMENT THE PP REQUESTING LOGICAL UNIT
  1645. * ZERO IS SAVED IN *DALL* BYTE 3.
  1646. * USING THIS INFORMATION WE KNOW WHEN RELEASING A RESOURCE
  1647. * (IE. CHANNEL OR LOGICAL UNIT ZERO OF AN EQUIPMENT) IF
  1648. * ANOTHER PP NEEDS THE RESOURCE TO INITIATE A SEEK OPERATION.
  1649. * WHEN ANOTHER PP DOES NEED THE RESOURCE TO INITIATE A SEEK
  1650. * THIS IS TERMED A *PRIORITY SEEK REQUEST*.
  1651. *
  1652. * THE MECHANISM OF GIVING PRIORITY TO A PARTICULAR PP IS
  1653. * ACCOMPLISHED BY PROCESSING THE PRIORITY SEEK REQUEST UPON
  1654. * EXIT OF THE *DSWM* PROCESSING. WHEN A *DSWM* FUNCTION
  1655. * RESULTS IN THE FREEING OF A RESOURCE (IE. UNIT OR CHANNEL),
  1656. * THE RESOURCE WOULD NORMALLY BE ASSIGNED TO THE NEXT PP IN
  1657. * NUMERIC ORDER WHICH IS WAITING FOR IT. TO ASSIGN IT TO A
  1658. * PRIORITY PP, NOT THE NEXT NUMERICAL PP, THE PP NUMBER IS
  1659. * SAVED IN DIRECT CELL *PR* WHEN THE RESOURCE IS RELEASED.
  1660. * WHEN THE *DSWM* REQUEST WHICH RELEASED THE RESOURCE, AND SET
  1661. * *PR* IS COMPLETE OR GOES INTO REENTRY PROCESSING, A CHECK IS
  1662. * MADE FOR A PENDING PRIORITY REQUEST. IF ONE IS PRESENT,
  1663. * THEN BEFORE RETURNING TO THE MAIN LOOP OF MTR, THE PRIORITY
  1664. * SEEK REQUEST IS PROCESSED. THIS IS ACCOMPLISHED BY SETTING
  1665. * THE REGISTERS TO LOOK EXACTLY LIKE THE REQUEST WAS SENSED
  1666. * BY THE MAIN LOOP IN MTR. IN EFFECT THE PROCESSING OF A
  1667. * PRIORITY SEEK REQUEST LOOKS AS THOUGH THE REQUEST WERE
  1668. * INSERTED AS THE NEXT REQUEST IN THE MAIN LOOP OF MTR. THIS
  1669. * APPROACH USES ALL THE NORMAL REENTRY LOGIC FOR RESOURCE
  1670. * ASSIGNMENT, THUS MINIMIZING SPECIAL CASE LOGIC.
  1671.  
  1672.  
  1673. ** MSEK - THIS TAG DEFINES THE MAXIMUM NUMBER OF SEEK WAITS
  1674. * ON A CHANNEL WITH SHARED DEVICES BEFORE ACCESS TO THE
  1675. * CHANNEL FOR NEW SHARED DEVICE ACTIVITY IS
  1676. * DISALLOWED. THE TABLE *TSCA* CONTAINS THE NUMBER
  1677. * OF SEEK WAITS FOR SHARED DEVICES WHICH ARE OUTSTANDING
  1678. * ON A CHANNEL. WHEN THERE ARE OUTSTANDING SEEKS ON
  1679. * SHARED DEVICES, A DRIVE RELEASE FUNCTION WILL BE
  1680. * ISSUED INSTEAD OF AN OPERATION COMPLETE FOR ALL
  1681. * DEVICES ON THE CHANNEL. THE
  1682. * CONTINUED ISSUANCE OF DRIVE RELEASES INSTEAD OF
  1683. * OPERATION COMPLETES WILL LOCK OUT ACCESS BY OTHER
  1684. * MACHINES TO THE CONTROLLER AND DRIVES. THUS THE
  1685. * NEED FOR A LIMIT ON THE NUMBER OF TIMES A DRIVE
  1686. * RELEASE IS ISSUED. *MSEK* PROVIDES A LIMIT TO
  1687. * THE CONTINUED ACCESS OF A CONTROLLER BY A SINGLE
  1688. * MACHINE. THIS NUMBER DOES NOT HAVE A DIRECT
  1689. * CORRESPONDENCE TO THE NUMBER OF CONTIGUOUS I/O
  1690. * REQUESTS ALLOWED ON A CHANNEL. THIS IS BECAUSE
  1691. * THE TABLE *TSEK* WHICH *MSEK* LIMITS IS NOT A
  1692. * COUNT OF I/O REQUESTS BUT RATHER IT IS A COUNT
  1693. * OF THE NUMBER TIMES A SEEK WAIT IS ISSUED WITH
  1694. * MULTIPLE SHARED DEVICE SEEKS OUTSTANDING. THUS
  1695. * THE CONTINUED ACCESS BY A SINGLE MACHINE WILL
  1696. * BE LIMITED BUT NOT TO ANY SPECIFIC NUMBER OF
  1697. * REQUESTS.
  1698.  
  1699. MSEK EQU 40
  1700.  
  1701.  
  1702. PPR DSWM
  1703. ADN 1 READ PARAMETERS
  1704. CRD T4
  1705. LDD PP GET ASSIGNED CP/PCP
  1706. SHN PPXES
  1707. TADC ACPP,PPX
  1708. CRD CN
  1709. LDD CN SET ASSIGNED CP/PCP FOR MOVE CHECK
  1710. STD OR+2
  1711. LDD CN+4
  1712. STD OR+4 SET CP FOR PRIVILEGES CHECK
  1713. LDD CM SET CALLER SELECTED CHANNEL FLAG
  1714. LPN 20
  1715. RAD OR+4
  1716. MSTA DALL,PP,CS GET EST, SAVE MST ADDRESS, READ DALL
  1717. CRD CN
  1718. LDD CS
  1719. SHN 21-13
  1720. MJN DSW1 IF MASS STORAGE
  1721. LDD T5
  1722. NJP DSW7 IF NOT PERFORMING ON-LINE RECONFIGURATION
  1723. DSW1 N8SJ DSW3 (NO ISD SUBSYSTEM JUMP)
  1724. LDD CS+3
  1725. LMC 2RDG
  1726. ZJN DSW2 IF 836 DEVICE
  1727. LMN 1RD&1RG
  1728. NJN DSW3 IF NOT 834 DEVICE
  1729. DSW2 LDN 40
  1730. RAD OR+4
  1731. DSW3 NSDJ DSW4 (NO SHARED DEVICE JUMP)
  1732. LDD CS
  1733. SHN 2-11
  1734. LPN 4 SET SHARED DEVICE FLAG
  1735. RAD OR+4
  1736. DSW4 LDD CM
  1737. LPN 1
  1738. ZJP DSW12 IF CHANNEL NOT RESERVED
  1739.  
  1740. * PROCESS RELEASE OF CHANNEL.
  1741.  
  1742. LDN MXNC
  1743. STD CF SET FLAG FOR CHANNEL UPDATE
  1744. SBD T4
  1745. DSW5 MJN DSW7 IF INVALID CHANNEL
  1746. LDM TCHR,T4 SET REQUESTING PP
  1747. ZJN DSW6 IF NO PRIORITY SEEK REQUEST
  1748. STD PR
  1749. LDN 0 CLEAR PRIORITY SEEK REQUEST
  1750. STM TCHR,T4
  1751. DSW6 LDM TCHS,T4
  1752. LMD PP
  1753. STD T1
  1754. LPN 37
  1755. ZJN DSW8 IF ASSIGNED TO THIS PP
  1756. DSW7 RJM HNG HANG PP
  1757. DSW8 LDD T1 CLEAR CHANNEL ASSIGNMENT
  1758. LPC -4000
  1759. STM TCHS,T4
  1760. NSDJ DSW9 (NO SHARED DEVICE JUMP)
  1761. LDD OR+4
  1762. SHN 21-2
  1763. PJN DSW8.1 IF NOT SHARED DEVICE
  1764. LDD OR+3
  1765. SCN 4
  1766. NJN DSW9 IF NOT ENDMS OR UNIT SWITCH FUNCTION
  1767. DSW8.1 LDM TSCA,T4
  1768. NJN DSW9 IF SHARED CHANNEL ACTIVITY
  1769. STM TSEK,T4 CLEAR SEEK COUNT
  1770. DSW9 N8SJ DSW12 (NO ISD SUBSYSTEM JUMP)
  1771. LDD OR+3
  1772. LPN 22
  1773. NJN DSW12 IF SEEK OR BUFFER FLUSH WAIT
  1774. LDD OR+4
  1775. LPN 40
  1776. DSW10 ZJN DSW12 IF NOT ISD DEVICE
  1777.  
  1778. * DECREMENT CONTROL MODULE ACTIVITY EXCEPT DURING SEEK
  1779. * WAITS OR WRITE IN PROGRESS WAITS. MAINTAINING THE
  1780. * CONTROL MODULE ACTIVITY INSURES THE REQUEST WILL RECEIVE
  1781. * THE SAME CHANNEL ASSIGNMENT.
  1782.  
  1783. LDM TCMN,PP
  1784. SHN -3
  1785. ADC TCMA
  1786. STD T1
  1787. SOI T1
  1788. LPN 77
  1789. NJN DSW11 IF NOT DECREMENT TO ZERO
  1790. STI T1 CLEAR CHANNEL ASSIGNMENT
  1791. LDD CN+4 REVERSE CHANNEL PRIORITY
  1792. SHN 6
  1793. LMD CN+4
  1794. SHN 6
  1795. STD CN+4
  1796. LDN 0
  1797. DSW11 LPN 40
  1798. NJN DSW15 IF UNDERFLOW
  1799. DSW12 LDD OR+3 VALIDATE FUNCTION CODE
  1800. SBN MXDSWM
  1801. MJN DSW14 IF FUNCTION IN TABLE
  1802. SBN 20-MXDSWM
  1803. ZJP WIP IF ISD BUFFER FLUSH WAIT
  1804. SBK 2000-20
  1805. ZJN RSV IF CONTROLLER RESERVE
  1806. DSW13 LCN /MSP/CHFE SET CHANNEL FAILURE CODE
  1807. LJM RCE6 RETURN INCORRECT FUNCTION STATUS
  1808.  
  1809. DSW14 LDM TDSWM,OR+3
  1810. STD T8
  1811. LJM 0,T8 ENTER PROCESSOR
  1812.  
  1813. DSW15 RJM HNG HANG PP
  1814.  
  1815. MXDSWM EQU 12 MAXIMUM VALUE OF DSWM SUBFUNCTION
  1816. RSV SPACE 4,10
  1817. ** RSV - *DSWM* ROUTINE TO PROCESS RESERVE SITUATIONS.
  1818. *
  1819. * FUNCTION 10 = DRIVE RESERVE.
  1820. * FUNCTION 2000 = CONTROLLER RESERVE.
  1821. *
  1822. * THESE FUNCTIONS SHOULD ONLY BE EXECUTED IN A MULTI-MAINFRAME
  1823. * CONFIGURATION OR WHERE CONTROLLERS ARE BEING SHARED BETWEEN
  1824. * MACHINES. THE PURPOSE OF THESE FUNCTIONS ARE TO RETRY THE
  1825. * REQUEST UNTIL THE APPROPRIATE RESERVES CAN BE GAINED OR
  1826. * UNTIL THE FIVE SECOND TIME OUT HAS EXPIRED. WHEN A TIME
  1827. * OUT OCCURS, THE DRIVER WILL CALL THE ERROR PROCESSOR AND
  1828. * THE APPROPRIATE ERROR PROCESSING WILL BE EXECUTED DEPENDING
  1829. * ON THE CALLER SELECTED OPTIONS.
  1830.  
  1831.  
  1832. RSV SUBFUN DSWM,10 DRIVE RESERVE PROCESSOR ENTRY
  1833. SUBFUN DSWM,2000 CONTROLLER RESERVE ENTRY
  1834. LDD CN+4 REVERSE CHANNELS IN MST
  1835. SHN 6
  1836. LMD CN+4
  1837. SHN 6
  1838. STD CN+4
  1839. MSTA DALL,PP
  1840. CWD CN
  1841. LDD OA
  1842. ADN 3
  1843. CRD CS
  1844. LDD OR+3
  1845. SBD CS
  1846. ZJN RSV3 IF START TIME SET
  1847. RAD CS
  1848. LDD TM+1
  1849. STD CS+4
  1850. LDD OA REWRITE TIME WORD
  1851. ADN 3
  1852. CWD CS
  1853. RSV3 LDD TM+1
  1854. SBD CS+4
  1855. PJN RSV4 IF NO ROLL OVER
  1856. ADC 10000
  1857. RSV4 SBN 20D
  1858. MJN RSV6 IF 20 SECONDS HAVE NOT ELAPSED
  1859. LCN 0 SET UNIT NUMBER CLEARED
  1860. STD CS
  1861. RJM CDA CLEAR DEVICE ACTIVITY
  1862. LDD OR+3
  1863. LMN 10
  1864. ZJN RSV5 IF DRIVE RESERVED
  1865. LCN /MSP/CRSE-/MSP/DRVE
  1866. RSV5 SBN /MSP/DRVE
  1867. LJM RCE6 SET ERROR CODE
  1868.  
  1869. RSV6 RJM SCS SET CHANNEL SELECTION PROCESSING
  1870. LJM RER REASSIGN CHANNEL UPON REENTRY
  1871. SPACE 4,20
  1872. ** RCE - *DSWM* ROUTINE TO REQUEST IO RESOURCES.
  1873. *
  1874. * FUNCTION 11 = REQUEST CHANNEL, UNIT, AND EQUIPMENT.
  1875. *
  1876. * THIS FUNCTION REQUESTS ALL THE RESOURCES THAT ARE NEEDED TO
  1877. * PERFORM AN I/O OPERATION FOR THE *6DI* AND *6DJ* DRIVERS.
  1878. * THE ORDER OF RESOURCE ASSIGNMENT IS AS FOLLOWS.
  1879. * FIRST, IF A SYSTEM REQUEST IS PENDING AND MORE THAN ONE
  1880. * SYSTEM DEVICE IS PRESENT, THE SYSTEM EQUIPMENT WILL BE
  1881. * SELECTED. THE SELECTION CRITERION IS DOCUMENTED IN *RSY*.
  1882. * SECOND, THE SOFTWARE UNIT INTERLOCK IN *DALL* IS GAINED.
  1883. * THIS IS AN IMPORTANT INTERLOCK IN THAT IT INSURES ONLY
  1884. * ONE REQUEST IS PROCESSED FOR A UNIT AT A TIME.
  1885. * THIRDLY, A CHANNEL IS SELECTED AND RESERVED.
  1886. *
  1887. * FUNCTION 4 = UNIT SWITCH.
  1888. *
  1889. * THE UNIT INTERLOCK FOR THE PREVIOUS UNIT IS RELEASED AND THE
  1890. * INTERLOCK FOR THE NEXT OR CURRENT UNIT IS REQUESTED.
  1891. *
  1892. * ACCESS TO AN *OFF* OR *SUSPECT* DEVICE WILL NOT NORMALLY BE
  1893. * GRANTED. HOWEVER, IT WILL BE ALLOWED IF ONE OF THE FOLLOWING
  1894. * CONDITIONS IS MET -
  1895. * 1. THE OPERATION IS A *READSYS* AND NO *ON* OR *IDLE*
  1896. * SYSTEM DEVICE EXISTS.
  1897. * 2. THE *AD* OR *NS* *SETMS* ERROR PROCESSING OPTIONS
  1898. * WERE SELECTED.
  1899. * 3. THE JOB TO WHICH THE CALLING PP IS ASSIGNED HAS AT
  1900. * LEAST ONE OF THE FOLLOWING ATTRIBUTES -
  1901. * A. IT-S A SUBSYSTEM.
  1902. * B. IT HAS THE *UTL=* ENTRY POINT.
  1903. * C. IT IS IN THE PROCESS OF BEING
  1904. * UNCONDITIONALLY TERMINATED BY THE
  1905. * OPERATOR.
  1906. * ACCESS TO A *DOWN* DEVICE WILL BE GRANTED ONLY IF THE CALLER
  1907. * SPECIFIED THE *AD* *SETMS* ERROR PROCESSING OPTION. ALTHOUGH
  1908. * THE CHECK FOR A *DOWN* DEVICE IS BYPASSED FOR *READSYS*
  1909. * OPERATIONS, ACCESS TO A *DOWN* DEVICE WILL NOT BE GRANTED
  1910. * SINCE ROUTINE *RSY* WILL ALWAYS SELECT A NON-*DOWN* DEVICE
  1911. * AND IT IS NOT POSSIBLE TO *DOWN* THE LAST SYSTEM DEVICE.
  1912.  
  1913.  
  1914. RCE SUBFUN DSWM,(11,4) REQUEST CHANNEL AND UNIT PROCESSOR ENTRY
  1915. LDD OA
  1916. ADN 2
  1917. CRD CS
  1918. AOD OR+4 SET INITIAL SEEK REQUEST
  1919. N8SJ RCE1 (NO ISD SUBSYSTEM JUMP)
  1920. LPN 40
  1921. ZJN RCE1 IF NOT ISD DEVICE
  1922. LDD CS+1 STORE UNIT NUMBER IN *TCMN*
  1923. LPN 77
  1924. STM TCMN,PP
  1925. RCE1 RJM CDA CLEAR CURRENT UNIT ACTIVITY
  1926. LDD CM
  1927. SHN 21-5
  1928. PJN RCE1.1 IF NOT *READSYS*
  1929. UJN RCE2 CONTINUE
  1930. * LDC RSY (MULTIPLE SYSTEM DEVICES EXIST)
  1931. RCEA EQU *-1
  1932. CON RSY
  1933. LJM RCE8 SET REENTRY PROCESSOR ADDRESS
  1934.  
  1935. RCE1.1 SHN 5-1
  1936. MJN RCE2.2 IF ACCESS TO A *DOWN* DEVICE ALLOWED
  1937. LDD CN
  1938. SHN 21-7
  1939. PJN RCE2.0 IF DEVICE IS ACCESSIBLE
  1940. LDK INWL
  1941. CRD CM+1
  1942. LDD CM+1+3
  1943. SHN 21-3
  1944. RCE2 MJN RCE2.2 IF DEADSTART SEQUENCING NOT COMPLETE
  1945. LDD CN
  1946. SHN 0-10
  1947. LPN 3
  1948. LMN 3
  1949. NJN RCE2.1 IF DEVICE NOT *DOWN*
  1950. MSTA ACGL,PP
  1951. CRD CM+1
  1952. LDD CM+1+4
  1953. SHN 21-GRDR+GRDR/12D*12D
  1954. PJP RCE5 IF NOT BEING REDEFINED
  1955. LCN /MSP/RDFE
  1956. UJP RCE6 SET ERROR CODE
  1957.  
  1958. RCE2.0 UJN RCE3 CONTINUE
  1959.  
  1960. RCE2.1 LDD CM
  1961. SHN 21-2
  1962. RCE2.2 MJN RCE4 IF *NS* *SETMS* OPTION SELECTED
  1963. LDD OR+4
  1964. LPC 7600
  1965. ADK TFSW
  1966. CRD CM+1
  1967. ADK SEPW-TFSW
  1968. CRD CM+2
  1969. ADK JCIW-SEPW
  1970. CRD CM+3
  1971. LDD CM+5
  1972. SBK LSSI+1
  1973. RCE3 PJN RCE7 IF SUBSYSTEM
  1974. LDD CM+2
  1975. SHN 21-10
  1976. RCE4 MJN RCE7 IF *UTL=* ENTRY POINT PRESENT
  1977. LDD CM+1
  1978. CFI EJT,,CM+1
  1979. RCEB ADC SCHE
  1980. CRD CM+1
  1981. LDD CM+3
  1982. SHN 21-12
  1983. ERRNZ UCTM-2 CODE ASSUMES VALUE
  1984. MJN RCE7 IF UNCONDITIONAL JOB TERMINATION MODE
  1985. RCE5 LCN /MSP/LNRE SET ERROR CODE
  1986. RCE6 STD OR+3
  1987. LDD OA WRITE PARAMETERS
  1988. ADN 1
  1989. CWD T4
  1990. LDN 0
  1991. LJM RRX2 RETURN ERROR STATUS
  1992.  
  1993. RCE7 LDC CUI SET REENTRY PROCESSOR ADDRESS
  1994. RCE8 STD OR+1
  1995. LDM TMSK,CS SET UNIT MASK
  1996. STD OR+3
  1997. UJN RCO1 CHECK FOR RESOURCES AVAILABLE
  1998. RCO SPACE 4
  1999. ** RCO - *DSWM* ROUTINE TO REQUEST A CHANNEL ONLY.
  2000. *
  2001. * FUNCTION 1 = REQUEST CHANNEL.
  2002. *
  2003. * THIS FUNCTION IS USED BY DRIVERS WHO DO NOT USE THE UNIT
  2004. * INTERLOCK SCHEME. THUS THE ONLY RESOURCE THEY NEED TO
  2005. * EXECUTE A DRIVER REQUEST IS THE CHANNEL.
  2006.  
  2007.  
  2008. RCO SUBFUN DSWM,1 REQUEST CHANNEL ONLY PROCESSOR ENTRY
  2009. AOD OR+4 SET INITIAL SEEK FOR PRIORITY SEEK REQUEST
  2010. RJM SCS SET CHANNEL SELECTION PROCESSING
  2011. LDM TPPI,PP
  2012. NJN RCO2 IF ACTIVITY SET
  2013. AOD CN
  2014. MSTA DALL,PP
  2015. CWD CN
  2016. LDN 1
  2017. RCO1 STM TPPI,PP ENTER HERE FROM *RCE*
  2018. LDD OA WRITE REENTRY PARAMETERS
  2019. CWD OR
  2020. RCO2 LJM RER2 CHECK FOR RESOURCES AVAILABLE
  2021. SPACE 4,10
  2022. ** EMS - *DSWM* ROUTINE TO RELEASE IO RESOURCES.
  2023. *
  2024. * FUNCTION 0 = END MASS STORAGE OPERATION.
  2025. *
  2026. * THIS ROUTINE RELEASES THE CHANNEL AND SOFTWARE UNIT RESERVE
  2027. * WHEN PRESENT.
  2028.  
  2029.  
  2030. EMS SUBFUN DSWM,0 END MASS STORAGE PROCESSOR ENTRY
  2031. LDD T4 INSURE VALID CHANNEL
  2032. LPN 37
  2033. STD T4
  2034. LCN 0 SET NO UNIT ASSIGNED
  2035. STD CS
  2036. RJM CDA CLEAR DEVICE ACTIVITY
  2037. LDD OA WRITE PARAMETERS
  2038. ADN 1
  2039. CWD T4
  2040. LDD OR+2 CHECK FOR MOVE
  2041. LMD MM.0
  2042. NJP RRX IF NO MOVE REQUESTED
  2043. LDC CHD SET CHANNEL DROP PROCESSOR
  2044. STD OR+1
  2045. LDD OA WRITE REENTRY PARAMETERS
  2046. CWD OR
  2047. LJM RER RETRY DROP ON REENTRY
  2048. WIP SPACE 4,10
  2049. ** WIP - *DSWM* ISD WRITE WAIT PROCESSOR.
  2050. *
  2051. * FUNCTION 20 = ISD WRITE IN PROGRESS.
  2052. *
  2053. * THIS FUNCTION GIVES UP THE CHANNEL DURING AN ISD WRITE
  2054. * OPERATION SO THAT OTHER PP-S MAY USE THE CHANNEL. IT SETS
  2055. * *CHECK WRITE COMPLETE* IN THE SEEK PARAMETERS, ALLOWING *6DJ*
  2056. * TO PROPERLY CHECK FOR WRITE COMPLETION WHEN IT GETS THE
  2057. * CHANNEL BACK. *WIP* MUST ALSO RESTORE THE UNIT NUMBER PART
  2058. * OF THE SEEK PARAMETERS SINCE THE CALLING PP MAY HAVE USED THE
  2059. * MESSAGE BUFFER FOR OTHER PURPOSES BETWEEN WRITING SECTORS.
  2060.  
  2061.  
  2062. *WIP SUBFUN DSWM,20 WAIT FOR WRITE IN PROGRESS
  2063. WIP LDM TCMN,PP RESTORE UNIT NUMBER SEEK PARAMETER
  2064. ADC 300 SET *CHECK WRITE COMPLETE*
  2065. STD CS+1
  2066. LDD OA REWRITE SEEK PARAMETER WORD
  2067. ADN 2
  2068. CWD CS
  2069. LDC 102 SET SEEK AND WAIT FOR WRITE COMPLETE
  2070. UJN SEK2 SET FLAGS
  2071. SPACE 4,20
  2072. ** SEK - *DSWM* SEEK WAIT PROCESSOR.
  2073. *
  2074. * FUNCTION 2 = SEEK IN PROGRESS.
  2075. *
  2076. * THIS FUNCTION GIVES UP THE CHANNEL DURING A SEEK OPERATION
  2077. * SO THAT OTHER REQUESTS MAY USE THE CHANNEL. THE DRIVE IS
  2078. * PROTECTED FROM OTHER REQUESTS BY TWO METHODS.
  2079. *
  2080. * FIRST, FOR A NON-SHARED DEVICE, THE SOFTWARE
  2081. * UNIT RESERVE IN *DALL* INSURES THAT OTHER REQUESTS IN THIS
  2082. * MACHINE WILL NOT ACCESS THE SEEKING DRIVE.
  2083. * THIS IS NEEDED BECAUSE THE DRIVER RELEASES THE DRIVE AFTER
  2084. * INITIATING THE SEEK TO ALLOW OTHER PP-S TO ACCESS OTHER
  2085. * DRIVES ON THE CHANNEL DURING THE SEEK OPERATION. SINCE THE
  2086. * DRIVE IS RELEASED WHILE SEEKING, THE OPERATION CAN BE
  2087. * CONTINUED ON A CHANNEL DIFFERENT FROM THE ONE WHICH INITIATED
  2088. * THE SEEK. THIS CAPABILITY GIVES A SIGNIFICANT PERFORMANCE
  2089. * GAIN FOR DUAL CHANNEL ACCESS TO NON-SHARED DEVICES.
  2090. *
  2091. * SECOND, FOR A SHARED DEVICE, SINCE THE SOFTWARE UNIT
  2092. * INTERLOCK ONLY APPLIES TO ONE MACHINE, THE CONTROLLER AND
  2093. * UNIT RESERVES ARE MAINTAINED WHILE SEEKING SO THAT REQUESTS
  2094. * ON ANOTHER MACHINE DO NOT GAIN ACCESS TO THE DRIVE.
  2095. * THE RESERVES MUST BE HELD DURING AN ENTIRE I/O SEQUENCE
  2096. * (INCLUDING ERROR PROCESSING) ON INDEPENDENT SHARED DEVICES
  2097. * SINCE THEY PROVIDE THE INTERLOCK FOR UPDATING TABLES ON THE
  2098. * DEVICE. MMF DOES NOT DEPEND ON THE RESERVES FOR INTERLOCKS,
  2099. * HOWEVER, THIS SCHEME IMPROVES PERFORMANCE BY ELIMINATING
  2100. * RESEEKS FROM OTHER MACHINES DURING AN ACCESS.
  2101. *
  2102. * ENTRY (CN - CN+4) = MST WORD *DALL*.
  2103.  
  2104.  
  2105. SEK SUBFUN DSWM,2 SEEK WAIT PROCESSOR ENTRY
  2106. AOM TSEK,T4 INCREMENT TOTAL SEEK COUNT
  2107. LDD T6
  2108. SBD CN+2
  2109. ZJN SEK1 IF NO CHANGE IN POSITION
  2110. RAD CN+2
  2111. MSTA DALL,PP UPDATE DEVICE ACTIVITY WORD
  2112. CWD CN
  2113. SEK1 LDN 2 SET SEEK WAIT
  2114. SEK2 RAD OR+4 CHECK FOR SHARED SEEK
  2115. LPN 4
  2116. ZJN SEK3 IF NOT SHARED DEVICE
  2117. AOM TSCA,T4 INCREMENT SHARED SEEK CHANNEL ACTIVITY
  2118. LDN 10
  2119. RAD OR+4
  2120. SEK3 RJM SCS SET CHANNEL SELECTION PROCESSING
  2121. * UJN RER REASSIGN CHANNEL UPON REENTRY
  2122. TITLE RER - REENTRY PROCESSING.
  2123. ** RER - *DSWM* REENTRY PROCESSING.
  2124. *
  2125. * THIS ROUTINE ASSIGNS THE RESOURCES REQUIRED FOR THE I/O
  2126. * OPERATION. THE MAIN *DSWM* ROUTINE ALONG WITH THE
  2127. * FUNCTION PROCESSORS SETS UP THE RESOURCE REQUIREMENTS
  2128. * WHICH CAN THEN BE PROCESSED UPON INITIAL OR REENTRY.
  2129. *
  2130. * NOTE - A LARGE PART OF *MTR-S* EXECUTION TIME IS SPENT IN
  2131. * THIS SUBROUTINE. IT IS EXTREMELY IMPORTANT TO OPTIMIZE AND
  2132. * REDUCE OVERHEAD IN THIS CODE IN ORDER TO NOT MAKE THE *MTR*
  2133. * CYCLE TIME TOO LARGE. A LARGE *MTR* CYCLE TIME AFFECTS
  2134. * OVERALL SYSTEM PERFORMANCE.
  2135.  
  2136.  
  2137. * ENTER HERE TO ALLOW ACCESS TO RESOURCES BY OTHER PPS BEFORE
  2138. * REASSIGNING TO THIS REQUEST.
  2139.  
  2140. RER LDD PR CHECK IF PRIORITY REQUEST
  2141. ZJN RER1 IF NO PRIORITY SEEK REQUEST
  2142. RJM PRR PROCESS PRIORITY REQUEST
  2143. RER1 RJM TIM UPDATE TIME
  2144. RJM MRP RETURN TO MAIN LOOP
  2145.  
  2146. * ENTER HERE TO IMMEDIATELY CHECK RESOURCES.
  2147.  
  2148. RER2 LDD OR+2 CHECK FOR MOVE
  2149. LMD MM.0
  2150. ZJN RER IF MOVE REQUESTED, RETRY UPON REENTRY
  2151. LJM 0,OR+1 JUMP TO PROCESSOR
  2152. C1M SPACE 4,20
  2153. ** C1M - CHECK FOR ONE CONTROL MODULE CHANNEL FREE.
  2154. *
  2155. * WHEN ATTEMPTING ASSIGNMENT OF A SPECIFIC CHANNEL FOR
  2156. * CONTROL MODULE ACCESS, ONE OF THE FOLLOWING CASES EXISTS.
  2157. * 1) NO CHANNEL IS PRESENTLY ASSIGNED TO THE REQUIRED
  2158. * CONTROL MODULE.
  2159. * THE REQUESTED CHANNEL MAY BE ASSIGNED IF IT IS FREE.
  2160. * THIS CHANNEL WILL THEN BECOME ASSIGNED TO THE CONTROL
  2161. * MODULE.
  2162. * 2) A CHANNEL IS PRESENTLY ASSIGNED TO THE CONTROL MODULE
  2163. * AND IS THE SAME AS THE REQUESTED CHANNEL.
  2164. * THE REQUESTED CHANNEL MAY BE ASSIGNED IF IT IS FREE.
  2165. * 3) A CHANNEL IS PRESENTLY ASSIGNED TO THE CONTROL MODULE
  2166. * AND IS DIFFERENT FROM THE REQUESTED CHANNEL.
  2167. * NO CHANNEL ASSIGNMENT IS POSSIBLE. THE REQUEST MUST
  2168. * WAIT UNTIL ALL CONTROL MODULE REQUESTS ARE COMPLETE
  2169. * AT WHICH TIME CASE (1) EXISTS, AND AN ASSIGNMENT MAY
  2170. * BE ALLOWED.
  2171.  
  2172.  
  2173. C1M LDM TCMN,PP
  2174. SHN -3
  2175. ADC TCMA
  2176. STD T1
  2177. LDI T1
  2178. ZJN C2M1 IF CHANNEL NOT ASSIGNED TO CONTROL MODULE
  2179. SHN -6
  2180. LMD OR+3
  2181. ZJN C2M1 IF REQUEST FOR CHANNEL ASSIGNED TO C. M.
  2182. UJN RER RETRY ASSIGNMENT ON REENTRY
  2183. C2M SPACE 4,15
  2184. ** C2M - CHECK FOR ONE OF TWO CONTROL MODULE CHANNELS FREE.
  2185. *
  2186. * WHEN ATTEMPTING ASSIGNMENT OF ONE OF TWO CHANNELS FOR
  2187. * CONTROL MODULE ACCESS, ONE OF THE FOLLOWING CASES EXISTS.
  2188. * 1) NO CHANNEL IS PRESENTLY ASSIGNED TO THE REQUIRED
  2189. * CONTROL MODULE.
  2190. * EITHER CHANNEL MAY BE ASSIGNED IF IT IS FREE AND THE
  2191. * SEEK LIMIT IS NOT REACHED.
  2192. * THIS CHANNEL WILL THEN BECOME ASSIGNED TO THE CONTROL
  2193. * MODULE.
  2194. * 2) A CHANNEL IS PRESENTLY ASSIGNED TO THE CONTROL MODULE.
  2195. * THIS CHANNEL MAY BE ASSIGNED IF IT IS FREE AND THE
  2196. * SEEK LIMIT IS NOT REACHED. IF THIS CHANNEL MAY NOT
  2197. * BE ASSIGNED, THE OTHER CHANNEL IS NOT CHECKED.
  2198.  
  2199.  
  2200. C2M LDM TCMN,PP GET THE CONTROL MODULE NUMBER
  2201. SHN -3
  2202. ADC TCMA
  2203. STD T1
  2204. LDI T1
  2205. ZJN C2C IF CHANNEL NOT ASSIGNED TO CONTROL MODULE
  2206. SHN -6
  2207. STD OR+3
  2208. C2M1 UJN C1C CHECK FOR FREE CHANNEL
  2209. C1C SPACE 4,15
  2210. ** C1C - CHECK FOR SINGLE CHANNEL FREE.
  2211. *
  2212. * IF THE REQUESTED CHANNEL IS FREE AND HAS NOT REACHED THE
  2213. * SHARED DEVICE SEEK LIMIT, IT IS ASSIGNED.
  2214. * IF THE CHANNEL IS BEING REASSIGNED TO A REQUEST
  2215. * WHICH IS SEEKING ON A SHARED DEVICE, THEN THE
  2216. * SHARED SEEK COUNTER FOR THE CHANNEL IS DECREMENTED.
  2217. *
  2218. * IF THE REQUESTED CHANNEL IS NOT FREE, THE CHANNEL
  2219. * REQUESTED BIT IS SET. A PRIORITY SEEK REQUEST IS
  2220. * ALSO SET IF THE CHANNEL IS REQUESTED FOR AN INITIAL
  2221. * SEEK OPERATION.
  2222. C2C SPACE 4,10
  2223. ** C2C - CHECK FOR ONE OF TWO CHANNELS FREE.
  2224. *
  2225. * IF EITHER CHANNEL IS FREE AND HAS NOT REACHED THE
  2226. * SHARED DEVICE SEEK LIMIT, IT IS ASSIGNED.
  2227. *
  2228. * IF NEITHER CHANNEL IS FREE, THE CHANNEL REQUESTED BIT
  2229. * IS SET FOR THE PRIMARY CHANNEL. A PRIORITY SEEK REQUEST IS
  2230. * ALSO SET FOR EACH OF THE CHANNELS. AN INITIAL SEEK PRIORITY
  2231. * REQUEST IS ONLY SET IF THE SEEK LIMIT HAS NOT BEEN REACHED.
  2232. * INITIAL SEEK REQUESTS HAVE PRIORITY OVER OTHER SEEKS.
  2233.  
  2234.  
  2235. C2C LDD OR+3
  2236. SHN 14
  2237. STD OR+3
  2238. SHN -14
  2239. STD T2
  2240. LDM TCHS,T2
  2241. NJN C2C3 IF PRIMARY CHANNEL NOT FREE
  2242.  
  2243. * CHECK SEEK LIMIT REACHED FOR PRIMARY CHANNEL.
  2244.  
  2245. NSDJ C2C1 (NON-SHARED DEVICE JUMP)
  2246. LDD OR+4
  2247. LPN 6
  2248. LMN 4
  2249. NJN C2C1 IF NOT SHARED DEVICE OR SEEK WAIT
  2250. LDM TSEK,T2
  2251. ADK -MSEK
  2252. PJN C2C3 IF SEEK LIMIT REACHED - TRY OTHER CHANNEL
  2253. C2C1 LDD T2 SET PRIMARY CHANNEL
  2254. STD OR+3
  2255. C2C2 LJM C2C10 ASSIGN CHANNEL - CANNOT BE SHARED SEEK
  2256.  
  2257. * CHECK SINGLE CHANNEL, OR SECOND OF DUAL CHANNELS.
  2258.  
  2259. C1C BSS 0 SINGLE CHANNEL REQUESTED PROCESSOR
  2260. LDD FT INDICATE SINGLE CHANNEL
  2261. STD T2
  2262. C2C3 LDM TCHS,OR+3
  2263. NJN C2C5 IF SECONDARY CHANNEL IS NOT FREE
  2264. NSDJ C2C2 (NON-SHARED DEVICE JUMP)
  2265. LDD OR+4
  2266. LPN 16
  2267. LMN 04
  2268. NJP C2C9 IF NOT SHARED DEVICE OR SEEK WAIT
  2269. LDK MSEK-1
  2270. SBM TSEK,OR+3
  2271. PJN C2C2 IF SEEK LIMIT NOT REACHED
  2272. LJM RER RETRY UPON REENTRY
  2273.  
  2274. C2C5 LPC -4000 SET THE CHANNEL REQUESTED FLAG
  2275. LMD FT
  2276. STD CF SET FLAG FOR CHANNEL UPDATE
  2277. STM TCHS,OR+3
  2278.  
  2279. * SET PRIORITY REQUEST.
  2280.  
  2281. LDD T2
  2282. LMD FT
  2283. NJN C2C5.1 IF NOT CHANNEL SPECIFIC REQUEST
  2284. LDM TCHS,OR+3
  2285. LPN 37
  2286. ZJN C2C8.1 IF CHANNEL NOT ASSIGNED
  2287. C2C5.1 LDD OR+4 SET PRIMARY CHANNEL REQUESTED
  2288. LPN 1
  2289. ZJN C2C6 IF NOT INITIAL SEEK
  2290. LDM TSEK,T2
  2291. ADK -MSEK
  2292. PJN C2C7.1 IF SEEK LIMIT REACHED
  2293. UJN C2C7 CONTINUE PROCESSING
  2294.  
  2295. C2C6 LDM TCHR,T2
  2296. NJN C2C7.1 IF REQUEST ALREADY SET
  2297. C2C7 LDD PP SET CHANNEL REQUESTED
  2298. STM TCHR,T2
  2299. C2C7.1 LDD OR+4 SET SECOND CHANNEL
  2300. LPN 1
  2301. ZJN C2C7.3 IF NOT INITIAL CHANNEL REQUEST
  2302. LDM TSEK,OR+3
  2303. ADK -MSEK
  2304. PJN C2C8 IF SEEK LIMIT REACHED
  2305. UJN C2C7.4 CONTINUE PROCESSING
  2306.  
  2307. C2C7.3 LDM TCHR,OR+3
  2308. NJN C2C8 IF REQUEST ALREADY SET
  2309. C2C7.4 LDD PP SET THIS PP AS REQUESTING CHANNEL
  2310. STM TCHR,OR+3
  2311. C2C8 LJM RER RETRY ASSIGNMENT UPON REENTRY
  2312.  
  2313. C2C8.1 LDD OR+4
  2314. C2C9 LPN 10
  2315. ZJN C2C10 IF NO SHARED DEVICE SEEK
  2316. SOM TSCA,OR+3
  2317.  
  2318. * CHANNEL ASSIGNMENT ALLOWED.
  2319.  
  2320. C2C10 LDD OA READ CHANNEL PARAMETER
  2321. ADN 1
  2322. CRD T4
  2323. LDD OR+3 ASSIGN CHANNEL
  2324. STD T4
  2325. LDD CM
  2326. SCN 11
  2327. LMN 1
  2328. STD CM
  2329. LDD OA REWRITE PARAMETERS
  2330. STD CF SET FLAG FOR CHANNEL UPDATE
  2331. ADN 1
  2332. CWD T4
  2333. LDM TCHS,T4 RESERVE CHANNEL
  2334. LPC -4000
  2335. LMD PP
  2336. STM TCHS,T4
  2337. N8SJ RRX (NO ISD SUBSYSTEM JUMP)
  2338. LDD OR+4
  2339. LPN 42
  2340. LMN 40
  2341. NJN RRX IF NOT ISD DEVICE OR SEEK WAIT ASSIGNMENT
  2342. AOI T1
  2343. LMN 1
  2344. NJN RRX IF NOT FIRST ACTIVITY ON CONTROL MODULE
  2345. LDD T4
  2346. SHN 6
  2347. RAI T1
  2348. UJN RRX EXIT REENTRY PROCESSING
  2349. CHD SPACE 4,10
  2350. ** CHD - CHANNEL DROP PROCESSOR.
  2351. *
  2352. * COMPLETE THE CHANNEL DROP AFTER STORAGE MOVE COMPLETES.
  2353.  
  2354.  
  2355. CHD LDD OA READ CHANNEL STATUS
  2356. ADN 1
  2357. CRD T4
  2358. * UJN RRX COMPLETE FUNCTION
  2359. RRX SPACE 4,10
  2360. ** RRX - EXIT *DSWM* REENTRY PROCESSING.
  2361.  
  2362.  
  2363. RRX LDD CM SET CHANNEL STATUS
  2364. STD OR+3
  2365. NSDJ RRX2 (NO SHARED DEVICES JUMP)
  2366. LPN 1
  2367. ZJN RRX2 IF NO CHANNEL ASSIGNED UPON EXIT
  2368. LDM TSCA,T4
  2369. ZJN RRX2 IF NO SHARED DEVICE ACTIVITY
  2370. LDD OR+4
  2371. LPN 40
  2372. ZJN RRX1 IF NOT ISD DEVICE
  2373. LDI T1
  2374. LPN 76
  2375. ZJN RRX2 IF NO OTHER CONTROL MODULE ACTIVITY
  2376. RRX1 LDN 20-10 SET DRIVE RELEASE
  2377. RRX2 ADN 10
  2378. * LDN 10 (NO SHARED DEVICES)
  2379. RRXA EQU *-1
  2380. STD OR+1
  2381. LDN 0 COMPLETE FUNCTION
  2382. STD OR
  2383. N8SJ RRX3 (NO ISD SUBSYSTEM JUMP)
  2384. LDD OR+4
  2385. LPC 100
  2386. ZJN RRX3 IF ISD WRITE IN PROGRESS
  2387. LCN 12-1
  2388. RRX3 ADN 12
  2389. STD OR+2
  2390. LDD T4 SET CHANNEL IN REPLY
  2391. LPN 37
  2392. STD OR+4
  2393. LDD OA
  2394. CWD OR
  2395. LDC PPR RESET REENTRY ADDRESS
  2396. STM TREA,PP
  2397. LDD PR
  2398. ZJN RRX4 IF NO PRIORITY REQUEST
  2399. RJM PRR PROCESS REQUEST
  2400. RRX4 LJM FNR RETURN TO MAIN LOOP
  2401. SPACE 4,10
  2402. ** RSY - SELECT SYSTEM DEVICE.
  2403. *
  2404. * THIS ROUTINE SELECTS A SYSTEM DEVICE BASED UPON THE
  2405. * FOLLOWING CRITERION.
  2406. * 1) SELECT DEVICE WITH LEAST ACTIVITY.
  2407. * 2) IF ACTIVITY COUNTS EQUAL, SELECT DEVICE WHICH WILL
  2408. * REQUIRE THE LEAST MOVE OF THE POSITIONER.
  2409.  
  2410.  
  2411. RSY LDD OA READ PARAMETERS FROM MESSAGE BUFFER
  2412. ADN 1
  2413. CRD T4
  2414. RJM TIM
  2415. LCN 0
  2416. STD CM+1 (CM+1) = LEAST ACTIVITY FOUND
  2417. STD CM+2 (CM+2) = TABLE INDEX
  2418. UJN RSY4 ENTER SEARCH LOOP
  2419.  
  2420. RSY1 RAD CM+1 SET NEW LEAST ACTIVITY
  2421. LDD CN+2
  2422. SBD T6
  2423. PJN RSY2 IF POSITIVE DISTANCE
  2424. LMC -0
  2425. RSY2 STD CM+4 (CM+4) = LEAST DISTANCE TO POSITION
  2426. RSY3 LDD CM+2 SET BEST EQUIPMENT
  2427. STD CM+3 (CM+3) = *TSYD* INDEX OF EQUIPMENT FOUND
  2428.  
  2429. * SEARCH SYSTEM DEVICES FOR FREE UNIT INTERLOCK.
  2430.  
  2431. RSY4 AOD CM+2 INCREMENT TO NEXT SYSTEM DEVICE
  2432. LDM TSYM,CM+2
  2433. ZJN RSY6 IF END OF LIST
  2434. SHN 3
  2435. ADN DALL
  2436. CRD CN
  2437. LDD CN
  2438. LPC 7677 IGNORE LOW SPACE INDICATOR
  2439. SBD CM+1
  2440. MJN RSY1 IF LESS ACTIVITY
  2441. NJN RSY4 IF MORE ACTIVITY
  2442. LDD CN+2
  2443. SBD T6
  2444. PJN RSY5 IF POSITIVE DISTANCE
  2445. LMC -0
  2446. RSY5 SBD CM+4
  2447. PJN RSY4 IF .GE. PREVIOUS DISTANCE
  2448. RAD CM+4
  2449. UJN RSY3 SET BEST EQUIPMENT
  2450.  
  2451. RSY6 LDM TSYD,CM+3
  2452. SBD T5
  2453. ZJP RSY11 IF NO EQUIPMENT CHANGE
  2454.  
  2455. * CHANGE EQUIPMENT DEPENDENT PARAMETERS.
  2456.  
  2457. RAD T5 SET NEW EQUIPMENT
  2458. NSDJ RSY7 (NO SHARED DEVICES JUMP)
  2459. LDD OR+4 RESET SHARED FLAG
  2460. SCN 4
  2461. LMM TSHS,CM+3
  2462. STD OR+4
  2463. RSY7 LDD OA RESET UNIT NUMBER
  2464. ADN 2
  2465. CRD CS
  2466. LDM TSYM,CM+3 SET NEW MST
  2467. STM TPMS,PP
  2468. SHN 3
  2469. ADN DDLL
  2470. CRD CN READ NEW UNIT LIST
  2471. LDN CN*2+11 SET BYTE POINTER = CN+4 - LU/2
  2472. SBD CS
  2473. SHN 21
  2474. STD T2
  2475. SCN 77
  2476. LMI T2
  2477. MJN RSY8 IF FIRST UNIT IN BYTE
  2478. SHN -6
  2479. RSY8 BSS 0
  2480. RSYA LPN 77
  2481. *RSYA LPN 37 (33502 SYSTEM)
  2482. RSYB UJN RSY9 (NOT 33502 SYSTEM JUMP)
  2483. *RSYB LMD CS+1
  2484. LPN 37
  2485. LMD CS+1
  2486. RSY9 STD CS+1
  2487. N8SJ RSY10 (NO ISD SUBSYSTEM JUMP)
  2488. STM TCMN,PP
  2489. LMC 200 RESTORE READ/SEEK PARAMETER
  2490. STD CS+1
  2491. RSY10 LDD OA WRITE NEW EQUIPMENT NUMBER
  2492. ADN 1
  2493. CWD T4
  2494. ADN 1 WRITE NEW PHYSICAL UNIT NUMBER
  2495. CWD CS
  2496. RSY11 BSS 0
  2497. * UJN CUI CHECK UNIT INTERLOCK
  2498. CUI SPACE 4,10
  2499. ** CUI - CHECK FOR UNIT INTERLOCK FREE.
  2500. *
  2501. * NOTE THAT THE ACTIVITY COUNT IS NOT INCREMENTED UNTIL AFTER
  2502. * THE SYSTEM SELECTION HAS TAKEN PLACE. THIS IS DONE TO INSURE
  2503. * EQUAL TREATMENT OF ALL SYSTEM DEVICES. IT ALSO PREVENTS
  2504. * DEVICE ACTIVITY FROM BEING SET WHEN WAITING FOR STORAGE MOVE.
  2505. *
  2506. * *CUI* SETS THIS PP AS REQUESTING THE UNIT, IF THE UNIT
  2507. * INTERLOCK IS BUSY AND THE REQUEST IS FOR LOGICAL UNIT ZERO.
  2508. *
  2509. * A UNIT REQUEST WILL BE PROCESSED IMMEDIATELY UPON RELEASE OF
  2510. * THE UNIT, INSURING THE SEEK WILL BE INITIATED PRIOR TO
  2511. * ASSIGNING THE CHANNEL TO OTHER REQUESTS. WITHOUT THIS LOGIC
  2512. * THE CHANNEL MAY BE GIVEN TO A REQUEST WHICH IS ON-CYLINDER
  2513. * THUS PREVENTING THE SEEK FROM BEING INITIATED AND OVERLAPING
  2514. * WITH I/O OPERATIONS.
  2515.  
  2516.  
  2517. CUI MSTA DALL,PP ENTRY TO INCREMENT ACTIVITY COUNT
  2518. CRD CN
  2519. AOD CN
  2520. LDD CN+1
  2521. LMD OR+3
  2522. SBD CN+1
  2523. PJN CUI4 IF UNIT INTERLOCK AVAILABLE
  2524. LDC CUI3 RESET ENTRY TO CHECK UNIT INTERLOCK
  2525. STD OR+1
  2526. LDD OA WRITE UPDATED PROCESSOR ADDRESS
  2527. CWD OR
  2528. CUI1 LDD OR+3
  2529. SHN -13
  2530. ZJN CUI2 IF NOT FIRST UNIT OF DEVICE
  2531. LDD PP SET THIS PP AS REQUESTING UNIT
  2532. STD CN+3
  2533. CUI2 MSTA DALL,PP
  2534. CWD CN
  2535. LJM RER RECHECK INTERLOCK UPON REENTRY
  2536.  
  2537. CUI3 MSTA DALL,PP
  2538. CRD CN
  2539. LDD CN+1
  2540. LMD OR+3
  2541. SBD CN+1
  2542. MJN CUI1 IF UNIT INTERLOCK SET
  2543. CUI4 RAD CN+1 SET UNIT INTERLOCK
  2544. LDD OA READ TRACK
  2545. ADN 1
  2546. CRD T4
  2547. LDD T6 SET CURRENT POSITION
  2548. STD CN+2
  2549. MSTA DALL,PP WRITE UPDATED UNIT INTERLOCK
  2550. CWD CN
  2551. RJM SCS SET CHANNEL SELECTION PROCESSING
  2552. LJM 0,OR+1 CHECK CHANNEL
  2553. PRR SPACE 4,15
  2554. ** PRR - PROCESS PRIORITY REQUEST.
  2555. *
  2556. * *PRR* IS ENTERED TWICE, FIRST, TO PROCESS A PRIORITY
  2557. * REQUEST, AND SECOND, UPON COMPLETION OF PROCESSING A
  2558. * PRIORITY REQUEST.
  2559. *
  2560. * ENTRY (A) = (PR) = PRIORITY PP NUMBER ON INITIAL ENTRY.
  2561. * (A) = (PR) = PP OR ADDRESS FOR SECOND ENTRY.
  2562. *
  2563. * EXIT TO *RER2* TO PROCESS PRIORITY SEEK REQUEST.
  2564. * TO INITIAL RETURN ADDRESS FOR SECOND ENTRY.
  2565. *
  2566. * USES T1, PR.
  2567.  
  2568.  
  2569. PRR SUBR ENTRY/EXIT
  2570. STD T1
  2571. SHN -5
  2572. NJN PRR1 IF NOT INITIAL ENTRY
  2573. LDM PRR SAVE EXIT ADDRESS
  2574. STM PRRA
  2575. LDM TREA,T1
  2576. LMC RER2
  2577. NJN PRR2 IF NOT IN REENTRY PROCESSING
  2578. RJM TIM
  2579. LDD OA SET ORIGINAL OUTPUT REGISTER ADDRESS
  2580. STD PR
  2581. LDD T1
  2582. STD PP
  2583. LJM MTR3 PROCESS PRIORITY REQUEST
  2584.  
  2585. PRR1 LDD PR RESET OUTPUT REGISTER ADDRESS
  2586. STD OA
  2587. SBD OF RESET PP NUMBER
  2588. SHN -3
  2589. STD PP
  2590. PRR2 LDN 0
  2591. STD PR
  2592. LJM * RETURN TO ORIGINAL ENTRY
  2593. PRRA EQU *-1
  2594. SCS SPACE 4,30
  2595. ** SCS - SET *DSWM* CHANNEL SELECTION.
  2596. *
  2597. * THIS ROUTINE SELECTS THE CHANNEL ASSIGNMENT PROCESSOR BASED
  2598. * UPON THE FOLLOWING TABLE. THE TABLE CONTAINS ENTRIES FOR
  2599. * EACH OF THE POSSIBLE COMBINATIONS OF THE RELEVANT *DSWM*
  2600. * REENTRY FLAGS. THE RELEVANT *DSWM* REENTRY FLAGS ARE -
  2601. *
  2602. * BIT 5 ISD DEVICE.
  2603. * BIT 4 CHANNEL SELECTED BY CALLER.
  2604. * BIT 3 SEEK ON SHARED DEVICE.
  2605. *
  2606. * FLAGS PROCESSOR CHANNEL(S)
  2607. * 0X C2C CN+4
  2608. * 1X C1C T4
  2609. * 2X C1C T4
  2610. * 3X C1C T4
  2611. * 4X C2M CN+4
  2612. * 5X C1M T4
  2613. * 6X C1M T4
  2614. * 7X C1M T4
  2615. *
  2616. * SELECTION OF THE *C2C* OR *C2M* PROCESSOR WILL BE MADE ONLY
  2617. * IF NEITHER CHANNEL OF A DUAL ACCESS DEVICE IS BEING IDLED.
  2618. *
  2619. * ENTRY (OR+4) = *DSWM* REENTRY PROCESSING FLAGS.
  2620. * (CN+4) = CHANNELS FOR UNIT.
  2621. * (T4) = CURRENTLY SELECTED CHANNEL.
  2622. *
  2623. * EXIT (OR+1) = CHANNEL ASSIGNMENT PROCESSOR.
  2624. * (OR+3) = CHANNEL(S) FOR ASSIGNMENT PROCESSOR.
  2625. * (OR - OR+4) WRITTEN TO (OA).
  2626.  
  2627.  
  2628. SCS8 STD OR+3
  2629. LDD OA WRITE PARAMETERS
  2630. CWD OR
  2631.  
  2632. SCS SUBR ENTRY/EXIT
  2633. LDD OR+4
  2634. LPN 70
  2635. ZJN SCS5 IF NO SPECIAL PROCESSING, FLAGS = 0X
  2636. SBN 40
  2637. MJN SCS1 IF NOT ISD DEVICE, FLAGS = 1X, 2X, 3X
  2638. ZJN SCS4 IF NO CHANNEL SELECTION, FLAGS = 4X
  2639. SCS0 LDC C1M FLAGS = 5X, 6X, 7X
  2640. UJN SCS2 SELECT SINGLE CONTROL MODULE CHANNEL
  2641.  
  2642. SCS0.1 LDD OR+4
  2643. LPN 40
  2644. NJN SCS0 IF ISD
  2645. SCS1 LDC C1C
  2646. SCS2 STD OR+1 SET SINGLE CHANNEL PROCESSOR
  2647. LDD T4
  2648. SCS3 UJN SCS8 STORE OUTPUT REGISTER AND RETURN
  2649.  
  2650. SCS4 LCN C2C-C2M
  2651. SCS5 ADC C2C CHANNEL SELECTION PROCESSOR
  2652. STD OR+1
  2653. LDD CN+4
  2654. SHN 14
  2655. STD T1
  2656. SHN -14
  2657. SCS6 STD T4
  2658. LMD T1
  2659. ZJN SCS0.1 IF SINGLE CHANNEL ACCESS
  2660. LDM TCHS,T1
  2661. SHN 21-6
  2662. MJN SCS1 IF CHANNEL BEING IDLED
  2663. LDM TCHS,T4
  2664. SHN 21-6
  2665. PJN SCS7 IF CHANNEL NOT BEING IDLED
  2666. LDD T1
  2667. UJN SCS6 SELECT OTHER CHANNEL
  2668.  
  2669. SCS7 LDD CN+4 SET CHANNELS FOR SELECTION
  2670. UJN SCS3 STORE OUTPUT REGISTER AND RETURN
  2671. TDSWM SPACE 4,10
  2672. TDSWM BSS 0 TABLE OF *DSWM* SUBFUNCTION PROCESSORS
  2673. DUP MXDSWM,1
  2674. CON DSW15
  2675. TDSWM HERE
  2676. ORG TDSWM+MXDSWM
  2677. SPACE 4
  2678. ** TMSK - TABLE OF SINGLE BIT MASKS
  2679.  
  2680. TMSK BSS 0
  2681. CON 4000
  2682. CON 2000
  2683. CON 1000
  2684. CON 0400
  2685. CON 0200
  2686. CON 0100
  2687. CON 0040
  2688. CON 0020
  2689. ECXM TITLE PP REQUEST FUNCTION PROCESSORS.
  2690. HLTM SPACE 4,10
  2691. *** HLTM - HALT PP WHILE IN SYSTEM DEBUG MODE.
  2692. *
  2693. * ENTRY
  2694. *T, OR 12/ HLTM,12/,12/,12/,12/
  2695. *
  2696. * EXIT IF SYSTEM DEBUG MODE DISABLED
  2697. *T, OR 60/0
  2698. *
  2699. * EXIT IF SYSTEM DEBUG MODE ENABLED
  2700. *T, OR 12/ HLTM,12/,12/,12/,12/
  2701.  
  2702.  
  2703. PPR HLTM
  2704.  
  2705. LDK SSTL CHECK SYSTEM DEBUG DISABLED FLAG
  2706. CRD CM
  2707. LDD CM+3
  2708. SHN 21-1
  2709. PJN PRL1 IF SYSTEM DEBUG ENABLED
  2710.  
  2711. HLT1 LDC MS2W+** CLEAR PP HUNG MESSAGE AT SYSTEM CP
  2712. HLTA EQU *-1
  2713. CWD ZR
  2714. UJN PRL2 RETURN CLEARING OUTPUT REGISTER
  2715. PRLM SPACE 4
  2716. *** PRLM - PAUSE FOR STORAGE RELOCATION.
  2717. *
  2718. * ENTRY
  2719. *T, OR 12/ PRLM,12/,12/,12/,12/
  2720. *
  2721. * EXIT
  2722. *T, OR 12/ 0, 48/
  2723.  
  2724.  
  2725. PPR PRLM
  2726.  
  2727. LDD MM.4
  2728. ZJN PRL2 IF NO MOVE IN PROGRESS
  2729. LDD PP GET ASSIGNED CP/PCP
  2730. SHN PPXES
  2731. TADC ACPP,PPX
  2732. CRD CM
  2733. LDD CM CHECK CP/PCP ASSIGNMENT
  2734. LMD MM.0
  2735. NJN PRL2 IF NOT AT MOVE
  2736. PRL1 LJM FNR EXIT
  2737.  
  2738. PRL2 LJM FNC EXIT TO CLEAR OUTPUT REGISTER
  2739. RCHM SPACE 4,20
  2740. *** RCHM - REQUEST CHANNEL.
  2741. *
  2742. * REQUEST ASSIGNMENT OF 1 OF 2 POSSIBLE CHANNELS.
  2743. *
  2744. * ENTRY
  2745. *T, OR 12/ RCHM,1/R,5/ ,1/C,5/ CH0,6/ ,1/C,5/ CH1,24/
  2746. * R SET IF CALLER WANTS IMMEDIATE RETURN IF CHANNEL(S)
  2747. * DOWN.
  2748. * C SET IF CONCURRENT CHANNEL IS SPECIFIED BY CHX.
  2749. * CHX CHANNEL.
  2750. *
  2751. * EXIT
  2752. *T, OR 12/ 0,1/R,11/ CH,36/
  2753. * R SET IF CHANNEL(S) DOWN AND CALLER REQUESTED IMMEDIATE
  2754. * RETURN. THE *CH* FIELDS ARE UNCHANGED IN THIS CASE.
  2755. * CH CHANNEL ASSIGNED.
  2756.  
  2757.  
  2758. PPR RCHM
  2759.  
  2760. LDD PP GET ASSIGNED CP/PCP
  2761. SHN PPXES
  2762. TADC ACPP,PPX
  2763. CRD CM
  2764. LDD CM CHECK FOR MOVE
  2765. LMD MM.0
  2766. ZJN PRL1 IF MOVE REQUEST
  2767. LDD OR+1
  2768. LPN 77
  2769. RJM TCH
  2770. NJN RCH2 IF CHANNEL NOT AVAILABLE
  2771. RCH1 LJM CCH4 RESERVE THE CHANNEL
  2772.  
  2773. RCH2 SHN 0-21
  2774. STD T1 SAVE CHANNEL STATUS
  2775. LDD OR+2
  2776. NJN RCH4 IF SECOND CHANNEL SPECIFIED
  2777. AOD T1
  2778. RCH3 SHN -1
  2779. ZJN PRL1 IF AT LEAST 1 CHANNEL UP
  2780. LDD OR+1
  2781. SBD FT
  2782. MJN PRL1 IF REPLY NOT REQUESTED
  2783. LJM FNC RETURN REJECT STATUS
  2784.  
  2785. RCH4 RJM TCH
  2786. ZJN RCH1 IF CHANNEL AVAILABLE
  2787. SHN 0-21
  2788. RAD T1
  2789. UJN RCH3 CHECK FOR BOTH CHANNELS DOWN
  2790. RCXM SPACE 4,25
  2791. *** RCXM - PERFORM EM TRANSFER DURING ROLLIN/ROLLOUT.
  2792. *
  2793. * *RCXM* REQUESTS ARE ISSUED BY *1RI* AND *1RO* DURING THE
  2794. * ROLLIN/ROLLOUT OF USER EM. THE ISSUING PP PLACES THE REQUEST
  2795. * IN ITS OUTPUT REGISTER AND PERFORMS I/O ASYNCHRONOUSLY WITH
  2796. * THE COMPLETION OF THE REQUEST. *MTR* CHANGES THE REQUEST TO
  2797. * AN *ECXM* REQUEST AND PASSES IT ON TO *CPUMTR*. THE
  2798. * APPROPRIATE REQUEST BIT WILL BE SET IN *CPUMTR-S* *PR*
  2799. * PROGRAM MODE REQUEST WORD.
  2800. *
  2801. * ENTRY
  2802. *T, OR 12/ECXM, 1/C, 11/, 12/CPN, 5/, 1/T, 18/ADDR
  2803. * C SET IF ALTERNATE CP/PCP SPECIFIED.
  2804. * CPN ALTERNATE CP/PCP NUMBER IF *C* SELECTED.
  2805. * T FUNCTION TYPE -
  2806. * 0 READ.
  2807. * 1 WRITE.
  2808. * ADDR RESPONSE ADDRESS.
  2809. *
  2810. * EXIT
  2811. *T, OR 60/0
  2812. *T, ADDR 12/0, 12/ST, 36/0
  2813. * ST = STATUS.
  2814. * 0 NO ERROR IN TRANSFER.
  2815. * 7777 ERROR IN TRANSFER.
  2816.  
  2817.  
  2818. PPR RCXM
  2819.  
  2820. LDC ECXM+2000 CHANGE FUNCTION TO PROGRAM MODE *ECXM*
  2821. STD OR
  2822. LDD OA WRITE OUTPUT REGISTER
  2823. CWD OR
  2824. SBD OF COMPUTE PROGRAM MODE REQUEST STACK BIT
  2825. SHN -3
  2826. ADN 11D
  2827. STD CN+2
  2828. LDN EPRF ENTER PROGRAM MODE REQUEST
  2829. RJM CPR
  2830. LJM FNR RETURN WITHOUT CLEARING PP OR
  2831. SFLM SPACE 4,15
  2832. *** SFLM - SET FL INCREASE REJECTED.
  2833. *
  2834. * ENTRY
  2835. *T, OR 12/ SFLM,12/ FN,12/ CP,12/,12/
  2836. *
  2837. * FN FUNCTION
  2838. * 1 = SET CM INCREASE REJECTED.
  2839. * 2 = SET ECS INCREASE REJECTED.
  2840. * CP CONTROL POINT NUMBER.
  2841. *
  2842. * EXIT
  2843. *T, OR 12/ 0,48/
  2844.  
  2845.  
  2846. PPR SFLM
  2847.  
  2848.  
  2849. LDD OR+2
  2850. SBD NC
  2851. PJN SFR2 IF ILLEGAL CP NUMBER
  2852. ADD NC
  2853. SHN 7
  2854. ADN FLIW
  2855. STD OR+3
  2856. CRD CM
  2857. LDD CM+3
  2858. ADD CM+4
  2859. ZJN SFR1 IF INCREASE NO LONGER PENDING
  2860. LCN 0
  2861. LMD OR+1 SET MASK
  2862. STM SFRA
  2863. LDD CM+1 SET CORRECT BIT
  2864. LPC *
  2865. * LPC 7776 (SET CM INCREASE REJECT)
  2866. * LPC 7775 (SET ECS INCREASE REJECT)
  2867. SFRA EQU *-1
  2868. LMD OR+1
  2869. STD CM+1
  2870. LDD OR+3 REWRITE FL INCREASE CONTROL WORD
  2871. CWD CM
  2872. SFR1 LJM FNC COMPLETE FUNCTION
  2873.  
  2874. SFR2 RJM HNG HANG PP
  2875. RSTM SPACE 4,50
  2876. *** RSTM - REQUEST STORAGE.
  2877. *
  2878. * REQUEST CM OR ECS STORAGE ASSIGNMENT AT CONTROL POINT.
  2879. * CM AND ECS STORAGE REQUESTS ARE DEFINED TO BE
  2880. * .GE. 0 AND .LE. 3777B.
  2881. *
  2882. * A *HUNG PP* WILL BE GENERATED IF ANY OF THE FOLLOWING OCCURS.
  2883. * 1) REQUEST FOR ECS AND USER ECS IS NOT DEFINED.
  2884. * 2) REQUEST FOR NEGATIVE FL FOR ECS.
  2885. * 3) CMR REQUEST FOR NEGATIVE FL.
  2886. * 4) FL REQUEST GREATER THAN 3777B.
  2887. * 5) A SPECIAL REQUEST WAS MADE BY A PP OTHER THAN *VER*.
  2888. * 6) REQUEST IS FOR AN INVALID CONTROL POINT.
  2889. *
  2890. * THERE ARE SEVERAL CHECKS IN MEMORY ALLOCATION WHICH WILL
  2891. * STOP *MTR* IF SOMETHING IS WRONG. THIS TYPE OF LOGIC IS
  2892. * NEEDED TO PRESERVE CONDITIONS AND ENSURE SYSTEM INTEGRITY.
  2893. *
  2894. * ENTRY
  2895. *
  2896. *T, OR 12/ RSTM,12/ FL,12/ F,12/ PN,12/
  2897. * FL FIELD LENGTH DESIRED (CM FL/100, ECS FL/*UESB*).
  2898. * IF NEGATIVE, AMOUNT OF CM TO RETURN TO SYSTEM
  2899. * (SPECIAL *VER* REQUEST ONLY).
  2900. *
  2901. * F FLAG BITS.
  2902. * BIT 0 = TYPE OF STORAGE REQUEST (1 = XM).
  2903. * 1 = UNUSED.
  2904. * 2 = UNUSED.
  2905. * 3 = UNUSED.
  2906. * 4 = UNUSED.
  2907. * 5 = CLEAR STORAGE REQUEST COMPLETE.
  2908. * 6 = SET INCREASE IN *FLIW* IF NOT AVAILABLE.
  2909. * 7 = CHANGE EXECUTION FL (*VER* ONLY).
  2910. * 8 = CM REQUEST IS FOR NEGATIVE FL.
  2911. * 9 = CHANGE CMR SIZE.
  2912. * 10 = TRANSFER FL FROM CP TO PCP (PSEUDO-ROLLOUT).
  2913. * 11 = TRANSFER FL FROM PCP TO CP (PSEUDO-ROLLIN).
  2914. *
  2915. * PN PSEUDO-CONTROL POINT NUMBER IF CP/PCP TRANSFER (BIT 10
  2916. * OR BIT 11 SET).
  2917. *
  2918. * EXIT
  2919. *
  2920. *T, OR 60/ 0
  2921. * REQUEST HAS BEEN HONORED.
  2922. *
  2923. *T, OR 12/ 0,12/ FL,12/,12/,12/
  2924. * STORAGE IS NOT AVAILABLE.
  2925.  
  2926.  
  2927. PPR RSTM
  2928.  
  2929. SBD OF GET ASSIGNED CP OR PCP
  2930. SHN PPXES-PPCES
  2931. TADC ACPP,PPX
  2932. CRD CM
  2933. LDD MM.4
  2934. NJP FNR IF MOVE IN PROGRESS
  2935. LDD CM SET ASSIGNED CP/PCP NUMBER
  2936. STD CP
  2937. STD T6
  2938. ZJN RST2 IF INVALID CP/PCP NUMBER
  2939. SBM UFLA
  2940. PJN RST2 IF INVALID CP/PCP NUMBER
  2941. LDD OR+2
  2942. LPN 1 SET STORAGE TYPE
  2943. STD T5
  2944. RSTA SBN 2
  2945. * SBN 1 (USER ECS UNDEFINED)
  2946. PJN RST2 IF ILLEGAL REQUEST
  2947. LDD OR+2
  2948. SHN 0-11
  2949. ZJN RST3 IF NOT CP/PCP FL TRANSFER OR CMR REQUEST
  2950. SCN 1
  2951. NJN RST1 IF PSEUDO-ROLLIN OR PSEUDO-ROLLOUT
  2952. STD CP SET CMR MCT ORDINAL
  2953. STD T6
  2954. UJN RST3 SET FL CONTROL WORD ADDRESS = CMRL
  2955.  
  2956. RST1 LDD OR+3
  2957. STD T8 SAVE PCP NUMBER
  2958. SBM UFLA
  2959. RST2 PJN RST4 IF INVALID PCP NUMBER
  2960. RST3 LDM MAFA,T5
  2961. STD OR+3 SET FL CONTROL WORD ADDRESS
  2962. LDD CP
  2963. RJM SCP READ FL CONTROL WORD
  2964. ADD OR+3
  2965. CRD CS
  2966. LDD OR+2 SET BYTE INDEX
  2967. SHN -6
  2968. LPN 4
  2969. LMN 4
  2970. STD OR+4
  2971. NJN RST5 IF NOT NEGATIVE FL REQUEST
  2972. LDD T5
  2973. NJN RST4 IF XM REQUEST
  2974. LDD CP
  2975. ZJN RST4 IF CMR REQUEST
  2976. RJM STA
  2977. CRD CM GET MCT ENTRY FOR CP
  2978. LDD CM
  2979. STD T6 SET MCT ORDINAL TO BACKWARD LINK
  2980. LDD OR+1
  2981. SBN MNFL+1
  2982. MJN RST6 IF VALID NFL REQUEST
  2983.  
  2984. RST4 RJM HNG HANG PP
  2985.  
  2986. RST5 LDD OR+2 CHECK FLAG BITS
  2987. SHN 21-7
  2988. MJN RST8 IF SPECIAL REQUEST
  2989. LDD CS
  2990. ADD OR+1
  2991. SHN -13
  2992. NJN RST4 IF REQUEST .GT. 3777
  2993. RST6 LDD T5
  2994. RSTB ZJN RST7 IF NOT AN ECS REQUEST
  2995. * UJN RST7 (SINGLE CPU OR CPU-1 FOR NOS/VE ONLY)
  2996. * UJN RST7 (810/830 ALLOW USER XM ON EITHER CPU)
  2997. * UJN RST7 (865/875 ALLOW ECS ON EITHER CPU)
  2998. LDD NC
  2999. SBD CP
  3000. MJN RST7 IF PCP
  3001. LDN 1
  3002. STD CM+4 SET IMPLICIT CPU 0 SELECTION
  3003. LDN CPUS
  3004. STD CM+1 CHANGE JOB CONTROL PARAMETERS
  3005. MONITOR SJCM
  3006. RST7 LDD OA STORE OUTPUT REGISTER
  3007. CWD OR
  3008. LDD OR+2 CHECK FLAG BITS
  3009. SHN 0-12
  3010. NJN RST10 IF PSEUDO CONTROL POINT OPERATION
  3011. LDD OR+1 CHECK INCREASE
  3012. SBM CS,OR+4
  3013. NJN RST12 IF FL CHANGE
  3014. RJM CFL CLEAR FL INCREASE REQUEST
  3015. LJM FNZ CLEAR OUTPUT REGISTER
  3016.  
  3017. RST8 RJM PVE CHECK SPECIAL REQUEST FROM *VER*
  3018. PJN RST17 IF INCREASE
  3019. RST9 LJM RST22 PROCESS DECREASE
  3020.  
  3021. RST10 LJM RST19 PROCESS PCP REQUEST
  3022.  
  3023. RST12 STD T7 SAVE INCREMENT
  3024. PJN RST17 IF INCREASE
  3025.  
  3026. * PROCESS STORAGE DECREASE.
  3027.  
  3028. LDD CP
  3029. ZJN RST9 IF CMR REQUEST
  3030. LMN 1
  3031. NJN RST15 IF NOT FIRST CP
  3032. LDD OR+4
  3033. ZJN RST9 IF NEGATIVE FL REQUEST
  3034. RST15 LDD CP
  3035. RSTE SBN ** CHECK CONTROL POINT
  3036. * SBN (NC)-1
  3037. NJN RST16 IF NOT LAST CONTROL POINT
  3038. LDD OR+4
  3039. NJN RST9 IF NOT NEGATIVE FL REQUEST
  3040. RST16 LDD OR+2
  3041. RSTC EQU RST16
  3042. * UJN RST20 (MEMORY CLEARING NOT ENABLED)
  3043. LPN 40
  3044. NJN RST20 IF STORAGE CLEARED
  3045. LJM RST26 SET UP *CSTM* REQUEST
  3046.  
  3047. * PROCESS STORAGE INCREASE.
  3048.  
  3049. RST17 LDD T6
  3050. RJM RSB FETCH UNASSIGNED MEMORY BLOCK
  3051. SBD T7
  3052. PJN RST20 IF INCREASE POSSIBLE WITH NO MOVE
  3053. RJM UFL CHECK UNASSIGNED FL
  3054. MJN RST21 IF MEMORY NOT AVAILABLE
  3055. RJM EMO EVALUATE MOVE OPTIONS
  3056. RST19 RJM CRA CHANGE REFERENCE ADDRESS
  3057. RST20 RJM MFL MODIFY FIELD LENGTH
  3058. LJM FNZ CLEAR OUTPUT REGISTER
  3059.  
  3060. RST21 RJM SFL SET FL INCREASE
  3061. LJM FNC COMPLETE FUNCTION
  3062.  
  3063. * MOVE CP 1 ON CMR DECREASE.
  3064. * MOVE LAST CONTROL POINT ON DECREASE.
  3065. * MOVE CP 1 ON CP 1 NEGATIVE FL DECREASE.
  3066.  
  3067. RST22 LDD CP SET REQUESTING CP
  3068. STD MM.3
  3069. NJN RST23 IF NOT CMR REQUEST
  3070. LDN 1
  3071. RST23 STD MM.0 SET CP/PCP FOR MOVE
  3072. STM AMVB
  3073. LMN 1
  3074. ZJN RST24 IF CMR REQUEST OR CP 1
  3075. LCN 0
  3076. RST24 LMD T7 SET MOVE INCREMENT
  3077. STD MM.1
  3078. RJM MFL MODIFY FIELD LENGTH
  3079. LJM EMO3 INITIATE MOVE
  3080.  
  3081. RST26 LDD OA SAVE *RSTM* REQUEST IN MB+5
  3082. ADN 6
  3083. CWD OR
  3084. LDC 400 SET SPECIAL *CSTM* REQUEST
  3085. STD OR+1
  3086. LDC CSTM+4000
  3087. STD OR
  3088. LDD OA
  3089. CWD OR
  3090. LJM FNR WAIT FOR *CSTM* TO COMPLETE
  3091. SCHM SPACE 4
  3092. SEQM SPACE 4,20
  3093. *** SEQM - SET EQUIPMENT PARAMETERS.
  3094. *
  3095. * ENTRY.
  3096. *T, OR 12/ SEQM,12/ P0,12/ SF,12/ P1,12/ P2
  3097. * WHERE -
  3098. * P0 EST ORDINAL FOR ALL SUBFUNCTIONS EXCEPT CCNS, ICNS.
  3099. * FOR SF = DNCS, IF *P0* = 0 THEN UNCONFIGURED CHANNEL
  3100. * IS BEING GLOBALLY DOWNED.
  3101. * P0 CONTROL POINT NUMBER FOR FUNCTIONS CCNS, ICNS.
  3102. * (IF 4000B + CONTROL POINT NUMBER, *P2* = ALTERNATE
  3103. * EJT ORDINAL).
  3104. * SF SUBFUNCTION CODE.
  3105. * ONES = 0 = ON EQUIPMENT.
  3106. * IDES = 1 = IDLE EQUIPMENT.
  3107. * OFES = 2 = OFF EQUIPMENT.
  3108. * DWES = 3 = DOWN EQUIPMENT.
  3109. * SB0S = 4 = SET BYTE 0 OF EST.
  3110. * SB1S = 5 = SET BYTE 1 OF EST.
  3111. * SB2S = 6 = SET BYTE 2 OF EST.
  3112. * SB3S = 7 = SET BYTE 3 OF EST.
  3113. * SB4S = 10 = SET BYTE 4 OF EST.
  3114. * DNCS = 11 = DOWN CHANNEL.
  3115. * UPCS = 12 = UP CHANNEL.
  3116. * 13 = RESERVED.
  3117. * CCNS = 14 = RELEASE CHANNEL FROM MAINTENANCE JOB.
  3118. * ICNS = 15 = ASSIGN CHANNEL TO MAINTENANCE JOB.
  3119. * 16 = RESERVED.
  3120. * 17 = RESERVED.
  3121. * SMNS = 20 = SET EQUIPMENT MNEMONIC.
  3122. * CSES = 21 = CLEAR SUSPECT FLAG.
  3123. * SSES = 22 = SET SUSPECT FLAG.
  3124. * CRES = 23 = CLEAR RESTRICT NEW ACTIVITY FLAG.
  3125. * SRES = 24 = SET RESTRICT NEW ACTIVITY FLAG.
  3126. * 25 = RESERVED.
  3127. * CKPS = 26 = CHECKPOINT SYSTEM.
  3128. *
  3129. * P1 EQUIPMENT MNEMONIC FOR SUBFUNCTION SMNS.
  3130. * P1 MASK FOR SUBFUNCTIONS SB0S - SB4S.
  3131. * P1 6/ 0,6/ CH FOR SF = DNCS, UPCS, CCNS AND ICNS.
  3132. * CH = CHANNEL, INCLUDING CONCURRENCY FLAG.
  3133. * P2 VALUE FOR SUBFUNCTIONS SB0S - SB4S.
  3134. * P2 MUX CHANNEL INDICATOR FOR SUBFUNCTIONS DNCS, UPCS.
  3135. * P2 ALTERNATE EJT ORDINAL TO ASSIGN/RELEASE CHANNEL
  3136. * TO/FROM FOR FUNCTIONS CCNS, ICNS, IF *P0* = 4000B +
  3137. * CONTROL POINT NUMBER.
  3138. *
  3139. * EXIT.
  3140. *
  3141. *T, OR 12/ 0,48/ UNCHANGED.
  3142. * REQUEST HAS BEEN HONORED.
  3143. *
  3144. *T, OR 60/ 0 FOR SUBFUNCTIONS ONES, IDES AND OFES WHEN THE DEVICE IS
  3145. * DOWN AND ASSIGNED TO A DIAGNOSTIC.
  3146. *
  3147. *T, OR 60/ 0 FOR SUBFUNCTION DWES WHEN ATTEMPTING TO DOWN THE LAST
  3148. * SYSTEM DEVICE.
  3149. *
  3150. *T, OR 12/ 0,12/ ST,36/ UNCHANGED FOR SUBFUNCTION DNCS WHEN UNABLE
  3151. * TO PROCESS REQUEST NORMALLY.
  3152. * ST = 0 IF ONLY ONE NON-DOWN ACCESS REMAINS ON A
  3153. * NON-DOWN DEVICE.
  3154. *
  3155. *T, OR 60/ 0 FOR SUBFUNCTION UPCS WHEN -
  3156. * A MAINTENANCE USER IS ACTIVE ON THE CHANNEL.
  3157. *
  3158. * HANG CONDITIONS -
  3159. *
  3160. * MUX CHANNEL AND CONCURRENT CHANNEL SPECIFIED ON
  3161. * UP/DOWN CHANNEL REQUEST (SUBFUNCTIONS DNCS, UPCS)
  3162. * THE VALUE OF THE CHANNEL DESCRIPTOR (1/C,5/CH)
  3163. * EXCEEDS 51B (SUBFUNCTIONS DNCS, UPCS, CCNS, ICNS).
  3164. * FOR SUBFUNCTION CCNS IF CHANNEL NOT ASSIGNED
  3165. * TO CALLER (OR ALTERNATE EJT ORDINAL).
  3166.  
  3167.  
  3168. PPR SEQM
  3169.  
  3170. LDD PP GET ASSIGNED CP/PCP
  3171. SHN PPXES
  3172. TADC ACPP,PPX
  3173. CRD CM
  3174. LDD CM CHECK FOR MOVE
  3175. LMD MM.0
  3176. ZJP FNR IF MOVE IN PROGRESS
  3177. LDD OR+2 CHECK SUBFUNCTION
  3178. SBN CCNS
  3179. ZJN SEQ4 IF MAINTENANCE JOB REQUEST
  3180. SBN ICNS-CCNS
  3181. ZJN SEQ4 IF MAINTENANCE JOB REQUEST
  3182. SBN TSEQL-ICNS
  3183. MJN SEQ2 IF VALID SUBFUNCTION
  3184. SEQ1 RJM HNG HANG PP
  3185.  
  3186. SEQ2 LDD OR+1 FETCH EST ENTRY
  3187. SFA EST
  3188. ADK EQDE
  3189. CRD CS
  3190. LDD OR+2
  3191. SBN DNCS
  3192. NJN SEQ3 IF NOT DOWN CHANNEL REQUEST
  3193. LDD OR+1
  3194. NJN SEQ3 IF EST ORDINAL SPECIFIED
  3195. LDD FT
  3196. STD CM+1
  3197. LJM DNC10 SET GLOBAL DOWN FLAG
  3198.  
  3199. SEQ3 LDC 0 VALIDATE EST ORDINAL
  3200. SEQA EQU *-1
  3201. SBD OR+1
  3202. MJN SEQ1 IF INVALID ORDINAL
  3203. SEQ4 LDM TSEQM,OR+2 SET PROCESSOR ADDRESS
  3204. STD T8
  3205. LDD OR+3 GET MASK
  3206. LJM 0,T8 JUMP TO PROCESSOR
  3207.  
  3208. SST SPACE 4,10
  3209. *** SST - SET EQUIPMENT STATE.
  3210. * ON, IDLE, OFF, DOWN EQUIPMENT.
  3211.  
  3212.  
  3213. SST SUBFUN SEQM,DWES DOWN EQUIPMENT
  3214. LDD CS
  3215. SHN 21-13
  3216. PJP SST4 IF NOT MASS STORAGE
  3217. SHN 13-12
  3218. PJN SST3 IF NOT SYSTEM DEVICE
  3219. LCN 0
  3220. STD T1
  3221. STD T2
  3222. SST1 AOD T2 INCREMENT NON-DOWN SYSTEM DEVICE COUNT
  3223. SST1.1 AOD T1 ADVANCE SYSTEM DEVICE TABLE INDEX
  3224. LDM TSYM,T1
  3225. ZJN SST2 IF END OF SYSTEM DEVICE LIST
  3226. SHN 3
  3227. ADK DALL
  3228. CRD CN
  3229. LDD CN
  3230. SHN 0-10
  3231. LMN 3
  3232. NJN SST1 IF NOT DOWN, COUNT IT
  3233. UJN SST1.1 AVOID COUNTING DOWN DEVICE
  3234.  
  3235. SST2 LDD T2
  3236. SHN -1
  3237. ZJP FNZ IF ONLY ONE NON-DOWN SYSTEM DEVICE REMAINS
  3238. SST3 LDD OR+1
  3239. STD CM+1
  3240. MONITOR CDAM CHECK DEVICE ACTIVITY
  3241. LDD CM+1
  3242. NJP FNR IF ACTIVITY REMAINS
  3243.  
  3244. SST4 SUBFUN SEQM,(ONES,IDES,OFES)
  3245. LDD CS SET NEW DOWN BIT
  3246. SCN 3
  3247. LMD OR+2
  3248. STD CS
  3249. LDD OR+2 BITS TO SET 2/ STATE, 1/ SUSPECT, 1/
  3250. SHN 2
  3251. LMD OR+2
  3252. LPN 16
  3253. SHN 14
  3254. LMN 16
  3255. UJN SST9 SET STATE IN MST
  3256.  
  3257. * SET/CLEAR SUSPECT BIT.
  3258.  
  3259. SST5 SUBFUN SEQM,SSES
  3260. LDC 20002
  3261. UJN SST9 SET SUSPECT BIT
  3262.  
  3263. SST6 SUBFUN SEQM,CSES CLEAR SUSPECT BIT
  3264. LDD CS
  3265. LPN 2
  3266. NJP FNC IF OFF OR DOWN, DO NOT CLEAR SUSPECT
  3267. LDN 2
  3268. UJN SST9 ADJUST BITS IN MST
  3269.  
  3270. * SET/CLEAR RESTRICT NEW ACTIVITY BIT.
  3271.  
  3272. SST7 SUBFUN SEQM,SRES SET RESTRICT NEW ACTIVITY BIT
  3273. LDC 10001
  3274. UJN SST9 SET BIT IN MST
  3275.  
  3276. SST8 SUBFUN SEQM,CRES CLEAR RESTRICT NEW ACTIVITY BIT
  3277. LDN 1
  3278. SST9 STD CM+4 SET BITS TO CHANGE
  3279. SHN -14
  3280. STD CM+2 NEW BIT VALUES
  3281. LDD CS
  3282. SHN 21-13
  3283. PJN SMN1 IF NOT MASS STORAGE
  3284. LDN SSTS SET EQUIPMENT STATE BITS VIA CPUMTR
  3285. STD CM+3
  3286. LDD OR+1 SET EQUIPMENT
  3287. STD CM+1
  3288. MONITOR SMDM
  3289. LDD CM+1
  3290. ZJN SMN1 IF DEVICE NOT ASSIGNED TO DIAGNOSTIC
  3291. LJM FNZ REJECT FUNCTION
  3292. SEB SPACE 4,10
  3293. *** SEB - SET EST BYTES.
  3294.  
  3295.  
  3296. SEB SUBFUN SEQM,(SB0S,SB1S,SB2S,SB3S,SB4S) SET BYTES OF EST
  3297. STM SEBA SET CLEARING MASK
  3298. LDM CS-SB0S,OR+2
  3299. LPC 0
  3300. SEBA EQU *-1
  3301. LMD OR+4 MERGE IN NEW BITS
  3302. STM CS-SB0S,OR+2
  3303. UJN SMN1 WRITE EST TO MEMORY
  3304. SMN SPACE 4,10
  3305. *** SMN - SET EQUIPMENT MNEMONIC.
  3306.  
  3307.  
  3308. SMN SUBFUN SEQM,SMNS
  3309. STD CS+3
  3310. SMN1 SFA EST,OR+1 UPDATE EST ENTRY
  3311. ADK EQDE
  3312. CWD CS
  3313. LJM FNC COMPLETE FUNCTION
  3314. UPC SPACE 4,10
  3315. *** UPC - UP CHANNEL.
  3316.  
  3317.  
  3318. UPC SUBFUN SEQM,UPCS UP CHANNEL
  3319. LDD OR+4
  3320. NJN UPC2 IF MUX CHANNEL
  3321. LDD OR+3
  3322. RJM VCN VERIFY CHANNEL NUMBER
  3323. LDM TCHS,OR+3
  3324. LPN 40
  3325. ZJN UPC2 IF NOT GLOBALLY DOWN
  3326. LDD OR+3
  3327. RJM GCE
  3328. ZJN UPC2 IF CHANNEL NOT ASSIGNED TO JOB
  3329. UPC1 LJM FNZ REJECT FUNCTION
  3330.  
  3331. UPC2 LDN UPSS
  3332. RJM RCS REQUEST CHANNEL STATE CHANGE
  3333. ZJN UPC1 IF FUNCTION REJECTED
  3334. LDD OR+4
  3335. NJN UPC3 IF MUX CHANNEL
  3336. AOD CF SET CHANNEL TABLE UPDATE FLAG
  3337. LDM TCHS,OR+3 ENSURE GLOBAL DOWN BIT CLEAR
  3338. SCN 40
  3339. STM TCHS,OR+3
  3340. UPC3 LJM FNC COMPLETE FUNCTION
  3341. DNC SPACE 4,10
  3342. *** DNC - DOWN CHANNEL.
  3343.  
  3344.  
  3345. DNC SUBFUN SEQM,DNCS DOWN CHANNEL
  3346. LDD OR+4
  3347. NJN DNC1 IF MUX CHANNEL
  3348. LDD OR+3
  3349. RJM VCN VERIFY CHANNEL NUMBER
  3350.  
  3351. * CHECK FOR DOWNING LAST ACCESS TO NON-DOWN DEVICE.
  3352.  
  3353. LDD CS
  3354. SHN 21-13
  3355. DNC1 PJP DNC9 IF NOT MASS STORAGE
  3356. LDN 2
  3357. STD T1
  3358. DNC2 SOD T1
  3359. PJN DNC3 IF NOT END OF CHECK
  3360. LDD CS
  3361. LPN 3
  3362. LMN 3
  3363. ZJN DNC4 IF DEVICE IS DOWN
  3364. LJM FNZ REJECT FUNCTION
  3365.  
  3366. DNC3 LDM CS+1,T1
  3367. SHN 21-13
  3368. PJN DNC2 IF ACCESS NOT PRESENT OR DISABLED
  3369. SHN 13-12
  3370. MJN DNC2 IF CHANNEL DOWN
  3371. SHN 12-21
  3372. LPN 77
  3373. LMD OR+3
  3374. ZJN DNC2 IF NOT ALTERNATE PATH
  3375. DNC4 LDD CS+4 READ *STLL* FROM MST
  3376. SHN 3
  3377. ADN STLL
  3378. CRD CM
  3379. LDD CM+1 CHECK *1MV* ACTIVE ON DEVICE
  3380. SHN 21-7
  3381. MJN DNC7 IF *1MV* ACTIVE, LEAVE REQUEST PENDING
  3382. LDM TCHS,T2 SET IDLEDOWN FLAG IN CHANNEL TABLE
  3383. LPC -100
  3384. LMD HN
  3385. STM TCHS,T2
  3386. STD CF SET CHANNEL TABLE UPDATE FLAG
  3387.  
  3388. * REQUEST *CPUMTR* TO SET CHANNEL STATE = *IDLE*.
  3389.  
  3390. LDK SICS REQUEST CHANNEL STATE CHANGE
  3391. RJM RCS
  3392.  
  3393. * CHECK FOR ACTIVITY ON 834/836 DEVICE THROUGH CHANNEL BEING
  3394. * DOWNED.
  3395.  
  3396. LDD CS+3
  3397. LMC 2RDG
  3398. ZJN DNC5 IF 836 DEVICE
  3399. LMN 1RD&1RG
  3400. NJN DNC8 IF NOT 834 DEVICE
  3401. DNC5 LDN 10 CHECK *TCMA* ENTRIES
  3402. STD T1
  3403. DNC6 SOD T1
  3404. MJN DNC8 IF ALL *TCMA* ENTRIES CHECKED
  3405. LDM TCMA,T1
  3406. ZJN DNC6 IF NO ACTIVITY ON THIS CONTROL MODULE
  3407. SHN -6
  3408. LMD OR+3
  3409. NJN DNC6 IF ACTIVITY THROUGH DIFFERENT CHANNEL
  3410. DNC7 LJM FNR LEAVE REQUEST PENDING
  3411.  
  3412. * CHECK FOR SEEK PENDING THROUGH THIS CHANNEL ON A SHARED
  3413. * NONBUFFERED DEVICE.
  3414.  
  3415. DNC8 LDD CS
  3416. LPC 1060
  3417. SHN 21-5
  3418. MJN DNC9 IF BUFFERED DEVICE
  3419. ZJN DNC9 IF NOT A SHARED DEVICE
  3420. LDM TCHS,OR+3
  3421. LPN 37
  3422. NJN DNC7 IF CHANNEL IS ASSIGNED
  3423. LDM TSCA,OR+3
  3424. NJN DNC7 IF SEEK PENDING THROUGH THIS CHANNEL
  3425.  
  3426. * REQUEST *CPUMTR* TO SET THE CHANNEL STATE = *DOWN*.
  3427.  
  3428. DNC9 LDK DWSS REQUEST CHANNEL STATE CHANGE
  3429. RJM RCS
  3430. ZJN DNC7 IF REQUEST WAS REJECTED
  3431. DNC10 LDD OR+4
  3432. NJN DNC11 IF MUX CHANNEL
  3433.  
  3434. * CLEAR THE IDLEDOWN AND GLOBAL DOWN FLAGS IN THE CHANNEL
  3435. * TABLE.
  3436.  
  3437. LDM TCHS,OR+3
  3438. LPC -140
  3439. STM TCHS,OR+3
  3440.  
  3441. * SET THE GLOBAL DOWN FLAG IF THE CHANNEL IS GLOBALLY DOWN.
  3442.  
  3443. LDD CM+1
  3444. STD CF SET CHANNEL UPDATE FLAG
  3445. SHN 0-13
  3446. SHN 5-0
  3447. RAM TCHS,OR+3
  3448. DNC11 LJM FNC COMPLETE THE FUNCTION
  3449. AMC SPACE 4,10
  3450. *** AMC - ASSIGN/RELEASE CHANNEL TO/FROM MAINTENANCE JOB.
  3451.  
  3452.  
  3453. AMC SUBFUN SEQM,(CCNS,ICNS)
  3454. * LDD OR+3 GET CHANNEL ASSIGNMENT STATUS
  3455. RJM GCE
  3456. LDD OR+1 CHECK FOR ALTERNATE EJT ORDINAL
  3457. SHN 21-13
  3458. PJN AMC1 IF NO ALTERNATE EJT ORDINAL
  3459. LDD OR+4
  3460. STD CN
  3461. AMC1 LDD OR+2
  3462. LMN ICNS
  3463. NJN AMC5 IF RELEASE CHANNEL
  3464. LDM TCHS,OR+3
  3465. LMN 40
  3466. ZJN AMC3 IF CHANNEL GLOBALLY DOWN
  3467. AMC2 LJM FNZ REJECT FUNCTION
  3468.  
  3469. AMC3 LDI T1
  3470. NJN AMC2 IF CHANNEL ASSIGNED TO A JOB
  3471. LDD CN INSERT NEW EST ORDINAL
  3472. AMC4 STI T1
  3473. LDC 0 WRITE CHANNEL ASSIGNMENT TABLE
  3474. SEQB EQU *-1
  3475. ADD T0 ADD CORRECT WORD INDEX
  3476. CWD CM
  3477. UJN CKP1 COMPLETE FUNCTION
  3478.  
  3479. AMC5 LDD CN CHECK EST ORDINAL
  3480. LMI T1
  3481. ZJN AMC4 IF CHANNEL ASSIGNED TO THIS JOB
  3482. RJM HNG HANG PP
  3483. CKP SPACE 4,10
  3484. *** CKP - FORCE SYSTEM CHECKPOINT.
  3485.  
  3486.  
  3487. CKP SUBFUN SEQM,CKPS
  3488. LDM PHED+2 SET *1MB* FUNCTION FLAG
  3489. SCN SPCP
  3490. LMN SPCP
  3491. STM PHED+2
  3492. CKP1 LJM FNC COMPLETE FUNCTION
  3493. TSEQM SPACE 4,10
  3494. TSEQM BSS 0
  3495. DUP MXSEQM,1
  3496. CON HNG1
  3497. TSEQL EQU MXSEQM
  3498. TSEQM HERE
  3499. ORG TSEQM+MXSEQM
  3500. DSRM SPACE 4,20
  3501. *** DSRM - DSD REQUESTS.
  3502. *
  3503. * NOTE - THIS FUNCTION WILL BE HONORED ONLY FROM *DSD*, OR IF
  3504. * REQUEST *SET EMERGENCY STEP* AND BIT 57 OF *SCRL* SET.
  3505. * REQUEST 02 - SET DATE AND TIME - WILL BE ACCEPTED FROM
  3506. * NON-DSD PROGRAMS TO SUPPORT *PLATO* MMF MODE.
  3507. *
  3508. * ENTRY
  3509. *T, OR 12/ DSRM,6/ P,6/ SF,36/ P
  3510. * P = PARAMETERS
  3511. * SF = SUBFUNCTION CODE
  3512. *
  3513. * EXIT (CM - CM+4) = (SCRL).
  3514. *
  3515. * USES T7.
  3516. *
  3517. * SUBFUNCTION MSPS - SET MONITOR STEP.
  3518. *
  3519. * ENTRY
  3520. *T, OR 12/ DSRM,6/ BN,6/ MSPS,12/ EO,12/ FN,12/ BV
  3521. * BN = BYTE NUMBER TO STEP ON.
  3522. * EO = EJT ORDINAL. ZERO IF ALL EXECUTING JOBS.
  3523. * FN = FUNCTION TO STEP. ZERO IF ALL FUNCTIONS.
  3524. * BV = BYTE VALUE TO STEP ON.
  3525. * IF B = 0, THEN
  3526. * V = 2/,1/ F,2/,7/ FN
  3527. * WHERE F = 1 IF FN IS *CPUMTR* FUNCTION.
  3528. *
  3529. * EXIT
  3530. *T, OR 60/ 0
  3531. *
  3532. * SUBFUNCTION STPS - STEP MONITOR.
  3533. *
  3534. * ENTRY
  3535. *T, OR 12/ DSRM,6/ ,6/ STPS,36/
  3536. *
  3537. * EXIT
  3538. *T, OR 60/ 0
  3539. *
  3540. * SUBFUNCTION EDTS - ENTER DATE AND TIME.
  3541. *
  3542. * ENTRY
  3543. *T, OR 12/ DSRM,6/ ,6/ EDTS,12/ ADDR,24/
  3544. *
  3545. * ADDR ADDRESS + 1 OF MESSAGE BUFFER
  3546. *
  3547. *T, MB+1 60/ JULIAN DATE
  3548. *T, MB+2 60/ PACKED DATE AND TIME
  3549. *T, MB+3 60/ TIME
  3550. *T, MB+4 60/ DATE
  3551. *T, MB+5 12/ DAY LIMIT, 48/ UNUSED
  3552. *
  3553. * EXIT
  3554. *
  3555. *T, OR 60/ 0
  3556. *
  3557. * SUBFUNCTION ESPS - SET EMERGENCY STEP.
  3558. *
  3559. * ENTRY
  3560. *T, OR 12/ DSRM,6/ BN,6/ MSPS,12/ 0,12/ FN,12/ BV
  3561. * BN = BYTE NUMBER TO STEP ON.
  3562. * FN = FUNCTION TO STEP.
  3563. * BV = BYTE VALUE TO STEP ON.
  3564. * IF B = 0, THEN
  3565. * V = 2/,1/ F,2/,7/ FN
  3566. * WHERE F = 1 IF FN IS *CPUMTR* FUNCTION.
  3567. *
  3568. * EXIT
  3569. *T, OR 60/ 0
  3570. *
  3571. * SUBFUNCTION CSPS - CLEAR MONITOR STEP.
  3572. *
  3573. * ENTRY
  3574. *T, OR 12/ DSRM,6/ ,6/ CSPS,36/
  3575. *
  3576. * EXIT
  3577. *T, OR 60/ 0
  3578. *
  3579. * SUBFUNCTION SKCS - SET K DISPLAY COMPLETE BIT.
  3580. *
  3581. * ENTRY
  3582. *T, OR 12/ DSRM,6/ SF,6/ SKCS,12/ CPA,12/
  3583. *
  3584. * SF = LEFT/RIGHT SCREEN FLAG
  3585. * = 0 IF LEFT SCREEN
  3586. * = 1 IF RIGHT SCREEN
  3587. * CPA = CONTROL POINT ADDRESS
  3588. *
  3589. * EXIT
  3590. *T, OR 60/ 0
  3591.  
  3592.  
  3593. PPR DSRM
  3594.  
  3595. LDD SC
  3596. CRD CM
  3597. LDD PP
  3598. SBN 1 CHECK REQUESTER
  3599. ZJN DSR1 IF *DSD*
  3600. LDD OR+1 CHECK FOR TIME SET
  3601. SBN 2
  3602. ZJN DSR1 IF TIME SET
  3603. MJN DSR2 IF NOT VALID *1MB* REQUEST
  3604. SBN 5-2
  3605. PJN DSR2 IF NOT VALID *1MB* REQUEST
  3606. LDD CM
  3607. SHN 21-11
  3608. PJN DSR2 IF NOT *1MB* REQUEST
  3609. DSR1 LDD OR+1
  3610. LPN 77
  3611. STD T7
  3612. LDM TDSRM,T7 SET REQUEST PROCESSOR
  3613. STD T7
  3614.  
  3615. * EXIT TO PROCESSOR WITH
  3616. * (A) = 0.
  3617. * (CM - CM+4) = *SCRL*.
  3618.  
  3619. LDN 0
  3620. LJM 0,T7 ENTER PROCESSOR
  3621.  
  3622. DSR2 RJM HNG HANG PP
  3623. SES SPACE 4,10
  3624. ** SES - SET EMERGENCY STEP.
  3625. *
  3626. * EXIT TO *MSP*.
  3627.  
  3628.  
  3629. SES SUBFUN DSRM,ESPS
  3630. LDN 1 SET EMERGENCY STEP FLAG
  3631. * UJN MSP EXIT TO *MSPS* PROCESSOR
  3632. MSP SPACE 4,10
  3633. ** MSP - SET MONITOR STEP.
  3634. *
  3635. * EXIT TO *FNZ* TO CLEAR OUTPUT REGISTER.
  3636. *
  3637. * USES CM, CN+2.
  3638. *
  3639. * CALLS CPR.
  3640. *
  3641. * MACROS ISTORE.
  3642.  
  3643.  
  3644. MSP SUBFUN DSRM,MSPS
  3645. ADN 1 SET STEP FLAG POSITION
  3646. SHN 7
  3647. STD T0
  3648. LMC -0 STEP FLAG MASK
  3649. STM MSPA
  3650. LDD CM
  3651. LPC 0
  3652. MSPA EQU *-1
  3653. LMD T0 SET STEP FLAG
  3654. STD CM
  3655. LDD SC
  3656. CWD CM
  3657. LDD OR+2 SET EJT ORDINAL
  3658. STM CFSA
  3659. LDD OR+3 SET FUNCTION TO TRAP
  3660. STM CFSB
  3661. LDD OR+1 SET BYTE NUMBER TO STEP
  3662. SHN -6
  3663. STM CFSC
  3664. LDD OR+4 SET BYTE VALUE TO STEP
  3665. STM CFSD
  3666. ISTORE MTRB,(UJN MTR1) FORCE CHECK OF CPP OUTPUT REGISTERS
  3667. ISTORE PPRA,(UJN MSC) SET TRANSFER TO *MSC*
  3668. STM MSCA
  3669. LDN 0 SET STEP MODE
  3670. STD CN+2
  3671. LDN MSCF CHANGE STEP MODE CONTROL
  3672. RJM CPR
  3673. LJM FNZ EXIT TO CLEAR OUTPUT REGISTER
  3674. CMS SPACE 4,10
  3675. ** CMS - CLEAR MONITOR STEP MODE.
  3676. *
  3677. * EXIT STEP MODE CLEARED.
  3678. * TO *STP* TO CLEAR OUTPUT REGISTER.
  3679. *
  3680. * USES CM, CN+2, T7, OR - OR+4.
  3681. *
  3682. * CALLS CPR.
  3683. *
  3684. * MACROS ISTORE.
  3685.  
  3686.  
  3687. CMS SUBFUN DSRM,CSPS
  3688. LDD CM CLEAR STEP SET
  3689. LPC 6177
  3690. STD CM
  3691. LDD SC
  3692. CWD CM
  3693. CMSA ISTORE MTRB,(NJN MTR1) RESET CONDITIONAL CPP CHECKING
  3694. * ISTORE MTRB,(UJN MTR2) (NO CPP-S PRESENT)
  3695. ISTORE PPRA,(SBN CPUM) RESET *PPR* PROCESSING
  3696. LDN 1 CLEAR STEP MODE
  3697. STD CN+2
  3698. LDN MSCF CHANGE STEP MODE CONTROL
  3699. RJM CPR
  3700. LDD OF SET PP 2
  3701. ADN 20
  3702. STD T7
  3703. CMS1 LDD T7 READ OUTPUT REGISTER
  3704. CRD OR
  3705. LDD OR
  3706. SHN 21-11
  3707. PJN CMS2 IF *MTR* FUNCTION OR NOT STEPPED
  3708. SHN 11-6
  3709. SHN 6-21
  3710. LMD FT
  3711. STD OR
  3712. LDD T7
  3713. CWD OR
  3714. CMS2 LDN 10 ADVANCE PP
  3715. RAD T7
  3716. SBD OF
  3717. SHN -3
  3718. LMD NP
  3719. NJN CMS1 IF NOT LAST PP
  3720. * UJN STP EXIT TO CLEAR OUTPUT REGISTER
  3721. STP SPACE 4,10
  3722. ** STP - STEP MONITOR.
  3723. *
  3724. * EXIT STEP MODE SET IF ENTERED FROM *STPS* SUBFUNCTION.
  3725. * STEP MODE CLEARED IF ENTERED FROM *CSPS* SUBFUNCTION.
  3726. * TO *FNZ* TO CLEAR OUTPUT REGISTER.
  3727.  
  3728.  
  3729. STP SUBFUN DSRM,STPS
  3730. STM MSCA
  3731. STP1 LJM FNZ EXIT TO CLEAR OUTPUT REGISTER
  3732. EDT SPACE 4,10
  3733. ** EDT - ENTER DATE AND TIME.
  3734. *
  3735. * EXIT *ADTF* FUNCTION ISSUED TO *CPUMTR* TO ALTER DATE AND
  3736. * TIME.
  3737. * TO *STP1* TO CLEAR OUTPUT REGISTER.
  3738. *
  3739. * USES CN.
  3740. *
  3741. * CALLS CPR.
  3742.  
  3743.  
  3744. EDT SUBFUN DSRM,EDTS
  3745. LDD OR+2 SET BUFFER ADDRESS
  3746. STD CN
  3747. LDN ADTF CALL *CPUMTR* TO ENTER DATE AND TIME
  3748. RJM CPR
  3749. UJN STP1 EXIT TO CLEAR OUTPUT REGISTER
  3750. SKC SPACE 4,10
  3751. ** SKC - SET K DISPLAY COMPLETE BIT.
  3752. *
  3753. * EXIT *SKCF* FUNCTION ISSUED TO *CPUMTR* TO SET K DISPLAY
  3754. * COMPLETE BIT.
  3755. * TO *STP1* TO CLEAR OUTPUT REGISTER.
  3756. *
  3757. * USES CN+1, CN+2.
  3758. *
  3759. * CALLS CPR.
  3760.  
  3761.  
  3762. SKC SUBFUN DSRM,SKCS
  3763. LDD OR+1 SET LEFT/RIGHT SCREEN FLAG
  3764. STD CN+1
  3765. LDD OR+2 SET CP ADDRESS
  3766. STD CN+2
  3767. LDN SKCF CALL *CPUMTR* TO SET COMPLETE BIT
  3768. RJM CPR
  3769. UJN STP1 EXIT TO CLEAR OUTPUT REGISTER
  3770. TDSRM SPACE 4,10
  3771. TDSRM BSS 0
  3772. DUP MXDSRM,1
  3773. CON HNG1
  3774. TDSRL EQU MXDSRM
  3775. TDSRM HERE
  3776. ORG TDSRM+MXDSRM
  3777.  
  3778. TITLE CPU PROGRAM CONTROL ROUTINES.
  3779. CCP SPACE 4
  3780. ** CCP - CHECK CENTRAL PROGRAM.
  3781. *
  3782. * THE CONTENTS OF THE CPU OUTPUT REGISTER, (RA+1), ARE CHECKED
  3783. * AND *CPUMTR* IS REQUESTED TO PROCESS THE REQUEST.
  3784. * UPDATES CPU ASSIGNMENTS AMD PRIORITIES.
  3785. *
  3786. * USES CM - CM+4, CS - CS+4, OR - OR+4, T1, T7.
  3787. *
  3788. * CALLS AVC, CPR, MST.
  3789.  
  3790.  
  3791. CCP6 LDN SMRL CHECK STORAGE MOVE COMPLETE
  3792. CRD CM
  3793. LDD CM
  3794. NJN CCP1 IF MOVE NOT COMPLETE
  3795. CCP7 RJM MST. PROCESS COMPLETION
  3796. UJN CCP1 CHECK RA+1
  3797.  
  3798. CCP8 BSS 0 SET OTHER CPU
  3799. CCPD LDM CCPB
  3800. * UJN CCPX (SINGLE CPU)
  3801. ERRNZ ACPL-ACPL/2*2 *ACPL* MUST BE EVEN
  3802. LMN 1
  3803. STM CCPB
  3804.  
  3805. CCP SUBR ENTRY/EXIT
  3806.  
  3807. * CHECK STORAGE MOVE STATUS.
  3808.  
  3809. CCPA CON 0
  3810. * UJN CCP6 (STORAGE MOVE IN PROGRESS)
  3811. CCP1 RJM AVC ADVANCE CLOCK
  3812. CCPB LDN ACPL READ ADDRESS OF ACTIVE RA
  3813. * LDN ACPL+1 (CHECKING CPU 1)
  3814. STD T7
  3815. CRD CM
  3816. LDD CM
  3817. ZJN CCP8 IF NO RA+1 TO CHECK
  3818. CCPC UJN CCP2 READ RA+1
  3819.  
  3820. * SHN 6 (CME PRESENT)
  3821.  
  3822. STD OR+1
  3823. SHN 6
  3824. STD OR
  3825. LRD OR
  3826. LDN 40
  3827. CCP2 SHN 14
  3828. ADD CM+1
  3829. ADN 1 READ RA+1
  3830. CRD OR
  3831. LDD OR
  3832. ZJN CCP4 IF (RA+1) = 0
  3833.  
  3834. * REQUEST *CPUMTR* TO PROCESS (RA+1) REQUEST.
  3835.  
  3836. LDN ZERL
  3837. CRD CN
  3838. ERRNZ CCPF CODE REQUIRES VALUE
  3839. LDD T7 REQUEST (RA+1) CHECK
  3840. SBN ACPL
  3841. SHN 14
  3842. RJM CPR
  3843. CCP3 LJM CCP8 SET OTHER CPU
  3844.  
  3845. CCP4 LDD CM+2
  3846. ADD CM+3
  3847. ZJN CCP3 IF NO SUB-CONTROL POINT
  3848. LDD TM+2 CHECK FOR LIMIT
  3849. SBD CM+2
  3850. NJN CCP5 IF LIMIT PASSED OR NOT REACHED
  3851. LDD TM+3
  3852. SBD CM+3
  3853. NJN CCP5 IF LIMIT PASSED OR NOT REACHED
  3854. LDD TM+4
  3855. SBD CM+4
  3856. CCP5 MJN CCP3 IF LIMIT NOT REACHED
  3857. LDD T7 SET CPU NUMBER
  3858. SBN ACPL
  3859. SHN 14
  3860. ADN CSLF CHECK SUB-CONTROL POINT LIMIT
  3861. RJM CPR
  3862. UJN CCP3 SET NEXT CPU
  3863. CCS SPACE 4,10
  3864. ** CCS - CHECK FOR CPU SWITCH.
  3865. *
  3866. * EXIT CPU SWITCH INITIATED AS NEEDED.
  3867. *
  3868. * USES T7, CM - CM+4, CN - CN+4.
  3869. *
  3870. * CALLS CPR.
  3871.  
  3872.  
  3873. * REQUEST CPU SWITCH. *CSWF* IS ISSUED IF A SWITCH REQUEST WAS
  3874. * DETECTED IN *CSWL* SO THAT *CPR* WILL NOT RETRY IF THE
  3875. * EXCHANGE REQUEST IS REJECTED. IF THE CPU IS ALREADY IN
  3876. * MONITOR MODE, *CPUMTR* WILL MOST LIKELY DETECT THE *CSWL*
  3877. * REQUEST ON EXIT FROM MONITOR MODE.
  3878.  
  3879. CCS8 LDN CSWF SET SWITCH CPU FUNCTION
  3880. CCS9 SHN 6
  3881. ADD T7
  3882. SHN 14
  3883. RJM CPR REQUEST CPU SWITCH
  3884.  
  3885. CCS SUBR ENTRY/EXIT
  3886.  
  3887. * CHECK CPU SWITCH REQUEST AND CPU SLICE EXPIRED.
  3888.  
  3889. LDM CCSB TOGGLE CPU NUMBER IF DUAL CPU
  3890. CCSA LMN 3
  3891. * LMN 0 (SINGLE CPU)
  3892. STM CCSB
  3893. LPN 1 SET CPU NUMBER
  3894. STD T7
  3895. ADN CSWL
  3896. CRD CN
  3897. ADN TSCL-CSWL
  3898. CRD CM
  3899. LDD CN
  3900. SHN 21-13
  3901. MJN CCS8 IF CPU SWITCH REQUESTED
  3902. LDD TM+2 CHECK CPU SLICE LIMIT
  3903. SBD CN+2
  3904. NJN CCS1 IF LIMIT PASSED OR NOT REACHED
  3905. LDD TM+3
  3906. SBD CN+3
  3907. NJN CCS1 IF LIMIT PASSED OR NOT REACHED
  3908. LDD TM+4
  3909. SBD CN+4
  3910. CCS1 MJN CCS3 IF NOT TIME TO SWITCH CPU
  3911. CCS2 LDN TCSF SET TIME SLICE CPU SWITCH FUNCTION
  3912. UJN CCS9 SWITCH CPU
  3913.  
  3914. * CHECK RECALL SLICE EXPIRED.
  3915.  
  3916. CCS3 LDD CM CHECK RECALL FLAG
  3917. SHN 21-0
  3918. CCS4 PJN CCSX IF RECALL SLICE NOT IN EFFECT
  3919. LDD TM+2 CHECK RECALL CPU SLICE LIMIT
  3920. SBD CM+2
  3921. NJN CCS5 IF LIMIT PASSED OR NOT REACHED
  3922. LDD TM+3
  3923. SBD CM+3
  3924. NJN CCS5 IF LIMIT PASSED OR NOT REACHED
  3925. LDD TM+4
  3926. SBD CM+4
  3927. CCS5 MJN CCS7 IF RECALL CPU SLICE NOT EXPIRED
  3928. LDC WQRL GET *WQ* POINTER
  3929. CRD CN
  3930. CCS6 LDD CN+3
  3931. LPN 77
  3932. SHN 14
  3933. LMD CN+4
  3934. ZJN CCS4 IF JOB WAS REMOVED FROM *WQ*
  3935. CRD CN
  3936. LDC TSCL GET PRIORITY OF JOB IN THIS CPU
  3937. ADD T7
  3938. CRD CM
  3939. LDD CN COMPARE PRIORITIES AND FLAGS
  3940. SBD CM
  3941. MJN CCS7 IF PRIORITY/FLAGS DO NOT ALLOW CPU SWITCH
  3942. LDD CN+2 CHECK CPU SELECTION AND BYPASS FLAG
  3943. CCSB LPN 6
  3944. * LPN 5 (CHECKING CPU 1)
  3945. NJN CCS6 IF CANNOT ASSIGN CPU TO JOB
  3946. LJM CCS2 SWITCH CPU
  3947.  
  3948. CCS7 LJM CCSX RETURN
  3949. CPR SPACE 4,15
  3950. ** CPR - CPUMTR REQUEST PROCESSOR.
  3951. *
  3952. * *CPUMTR* WILL TYPICALLY BE IN MONITOR MODE ON EXIT.
  3953. *
  3954. * ENTRY (A) BITS 0 - 11 = REQUEST.
  3955. * (A) BITS 12 - 17 = CPU NUMBER.
  3956. * (CN - CN+3) = PARAMETERS.
  3957. *
  3958. * EXIT (MTRJ) = MAXIMUM WAIT TO MONITOR EXCHANGE TIME.
  3959. *
  3960. * USES CN+3, CN+4, T1, T2, CM - CM+4.
  3961. *
  3962. * CALLS TIM, WXP.
  3963. *
  3964. * MACROS ISTORE.
  3965.  
  3966.  
  3967. CPR SUBR ENTRY/EXIT
  3968. STD CN+4 SET REQUEST
  3969. CPRB SHN -14
  3970. * UJN CPR1 (1 CPU ONLY)
  3971. LMC MXNI SET *MXN* INSTRUCTION
  3972. STM MXN
  3973. LPN 7 SET (A0)
  3974. SHN 6
  3975. STM CPRA+3
  3976. CPR1 RJM WXP WAIT EXCHANGE PACKAGE READY
  3977. LDD CN+3
  3978. SCN 77 CLEAR UNUSED FIELD
  3979. STD CN+3
  3980. RJM TIM MAKE SURE *TIMB* EXCHANGE SWITCH RESET
  3981. LDN PPXL SET *PP EXCHANGE PENDING* FLAG
  3982. CWD HN
  3983. IAN 14 SAVE CURRENT CLOCK VALUE
  3984. STD T1
  3985.  
  3986. * ENTER REQUEST. SINCE THE MICROCODE FOR RUNNING DUAL-CPU
  3987. * *NOS* ON A CACHE MACHINE CHECKS (B0) TO DETERMINE IF THE
  3988. * EXCHANGE PACKAGE IS READY, THE WORD CONTAINING (B0) *MUST*
  3989. * BE THE LAST WORD STORED INTO THE EXCHANGE PACKAGE.
  3990. * OTHERWISE, IF A *PURGE ALTERNATE CACHE* REQUEST WAS BEING
  3991. * PROCESSED BY MICROCODE AT THE SAME TIME THAT *MTR* WAS
  3992. * PREPARING THE EXCHANGE PACKAGE, THE EXCHANGE COULD OCCUR
  3993. * BEFORE THE EXCHANGE PACKAGE WAS READY.
  3994.  
  3995. TLDC /EXPACS/MXP+10,XBP STORE (X0)
  3996. CWD CN
  3997. SBN 10 STORE (P), (A0), (B0)
  3998. CWM CPRA,ON
  3999.  
  4000. * EXCHANGE CPU. TO EXCHANGE CPU 1 ON A DUAL CPU CACHE MACHINE,
  4001. * AN EXTERNAL INTERRUPT (*INPN*) IS USED INSTEAD OF AN *MXN*.
  4002. * SINCE THE *INPN* DOES NOT WAIT FOR THE EXCHANGE TO SUCCEED
  4003. * OR FAIL BEFORE COMPLETING, *MTR* MUST WAIT 25 MICROSECONDS
  4004. * BEFORE CHECKING THE EXCHANGE PACKAGE. SINCE THE EXCHANGE MAY
  4005. * OCCUR AFTER AN EVEN LONGER INTERVAL IN SOME CASES, *MTR* MUST
  4006. * NEVER ABANDON AN ATTEMPT TO EXCHANGE CPU 1. SINCE THE *INPN*
  4007. * WILL INTERRUPT A UEM BLOCK COPY EVEN IN MONITOR MODE, *MTR*
  4008. * MUST DELAY 125 MICROSECONDS AFTER AN APPARENT FAILED EXCHANGE
  4009. * BEFORE RETRYING, IF CPU 1 IS CURRENTLY IN MONITOR MODE.
  4010.  
  4011. CPR2 UJN CPR3 EXCHANGE CPU
  4012. * LDM CPRA+3 (DUAL CPU CACHE MACHINE)
  4013. CON CPRA+3
  4014. CPRC EQU *-2
  4015. ZJN CPR3 IF EXCHANGING CPU 0
  4016. INPN 4 INTERRUPT PROCESSOR 1 ON PORT 2
  4017. CPRE LDN ** WAIT 25 MICROSECONDS BEFORE CHECKING
  4018. SBN 1
  4019. NJN *-1 IF DELAY NOT COMPLETE
  4020. TLDC /EXPACS/MXP+0,XBP
  4021. CRD CM
  4022. LDD CM+4
  4023. ZJN CPR4 IF EXCHANGE TAKEN
  4024. CPRG LDC **+CMST+1 CHECK FOR CPU 1 IN MONITOR MODE
  4025. CRD CM
  4026. LDD CM+1
  4027. ADD CM+2
  4028. ADD CM+3
  4029. ADD CM+4
  4030. ZJN CPR5 IF CPU 1 NOT IN MONITOR MODE
  4031. CPRH LDC ** WAIT 125 MICROSECONDS BEFORE RETRYING
  4032. SBN 1
  4033. NJN *-1 IF DELAY NOT COMPLETE
  4034. UJN CPR5 UPDATE TIME AND RETRY
  4035.  
  4036. CPR3 TLDC /EXPACS/MXP+0,XBP EXCHANGE CPU
  4037. MXN MXN 0
  4038. CRD CM READ (P), (A0), (B0)
  4039. LDD CM+4
  4040. CPR4 ZJN CPR10 IF EXCHANGE TAKEN
  4041. * ZJN CPR9 IF EXCHANGE TAKEN (CME MACHINE)
  4042. CPRF EQU *-1
  4043. LDD CN+4
  4044. SBN NXWF
  4045. MJN CPR10 IF NO WAIT FOR EXCHANGE REQUIRED
  4046. CPR5 RJM TIM UPDATE TIME
  4047. IAN 14
  4048. SBD T1
  4049. STD T2
  4050. PJN CPR6 IF NO ROLL OVER
  4051. AOD T2
  4052. CPR6 ADC -MLSC
  4053. MJN CPR7 IF NOT ONE MILLISECOND
  4054. LDN 1 HAVE CPUMTR NOTE EXCHANGE REQUEST
  4055. STD CM+4
  4056. LDN CPSL
  4057. CWD CM
  4058. CPR7 LDD T2 CHECK FOR MAXIMUM EXCHANGE WAIT
  4059. SBM MTRJ
  4060. MJN CPR8 IF NOT MAXIMUM
  4061. RAM MTRJ UPDATE WORST-CASE *MXN* TIME
  4062. CPR8 LJM CPR2 RETRY EXCHANGE
  4063.  
  4064. CPR9 ISTORE TIMB,(UJN TIM6) SET UP EXCHANGE PACKAGE CHECK
  4065. CPR10 LJM CPRX EXIT
  4066. WXP SPACE 4,10
  4067. ** WXP - WAIT EXCHANGE PACKAGE READY.
  4068. *
  4069. * INSURES *CPUMTR* HAS EXITED FROM MONITOR MODE ON LAST CPR
  4070. * REQUEST. ALSO ADVANCES TIME WHILE WAITING.
  4071. *
  4072. * EXIT (A) = 0.
  4073. *
  4074. * USES CM - CM+4.
  4075. *
  4076. * CALLS TIM.
  4077.  
  4078.  
  4079. WXP SUBR ENTRY/EXIT
  4080. WXP1 RJM TIM
  4081. TLDC /EXPACS/MXP+6,XBP READ (MA), (A6), (B6)
  4082. CRD CM
  4083. LDD CM
  4084. ADD CM+1
  4085. ZJN WXPX IF PACKAGE READY
  4086. UJN WXP1 LOOP
  4087. TITLE MEMORY ALLOCATION ROUTINES.
  4088. *** MEMORY ALLOCATION.
  4089. *
  4090. * CENTRAL MEMORY IS ALLOCATED TO EACH CONTROL POINT IN
  4091. * CONTIGUOUS BLOCKS FOR EACH JOB. UNALLOCATED MEMORY
  4092. * GENERALLY RESIDES BETWEEN JOBS. IF A JOB REQUIRES MORE
  4093. * MEMORY THAN IS AVAILABLE ABOVE IT-S CURRENT MEMORY, A
  4094. * STORAGE MOVE IS REQUIRED. THE JOBS ARE MOVED ONE AT A
  4095. * TIME TO MOVE THE REQUIRED AMOUNT OF UNALLOCATED MEMORY
  4096. * TO THE REQUESTING JOB.
  4097. MST SPACE 4,25
  4098. ** MST - MOVE STORAGE.
  4099. *
  4100. * *MST* WILL LOOP MOVING CONTROL POINTS UNTIL THE MOVE IS
  4101. * COMPLETE, A CONTROL POINT CANNOT BE MOVED DUE TO PP ACTIVITY,
  4102. * OR UNTIL 10B CONTROL POINTS HAVE BEEN MOVED. IF ANY OF
  4103. * THESE CONDITIONS ARE ENCOUNTERED AN EXIT IS MADE SO THAT THE
  4104. * THE ROUTINE WILL BE REENTERED.
  4105. *
  4106. * ENTRY (MM - MM+4) = MOVE PARAMETERS.
  4107. * (OR+1) = REQUESTED FIELD LENGTH.
  4108. * (OR+2) = XX00 IF CM REQUEST.
  4109. * = XX01 IF ECS REQUEST.
  4110. * (OR+3) = *CMRL*/*FLSW* IF CM REQUEST.
  4111. * = *ECRL*/*ECSW* IF ECS REQUEST.
  4112. * (OR+4) = 4 IF POSITIVE FL/ECS REQUEST.
  4113. * = 0 IF NEGATIVE FL REQUEST.
  4114. *
  4115. * USES CP, T1, T5, MM+1, CM - CM+6, CN - CN+3, CS - CS+4,
  4116. * OR - OR+4.
  4117. *
  4118. * CALLS AMV, AVC, CPR, ISR, MRP, PHE, SCP, STA, TIM.
  4119. *
  4120. * MACROS MONITOR.
  4121.  
  4122.  
  4123. MSTX RJM MRP RETURN TO MAIN LOOP
  4124. LDM CCPA
  4125. NJN MSTX IF MOVE NOT COMPLETE
  4126.  
  4127. * CHECK IF PP-S PAUSED.
  4128.  
  4129. MST RJM TIM UPDATE TIME
  4130. LDD MM.0
  4131. STD CP SET CP FOR MOVE
  4132. RJM SCP
  4133. ADN STSW GET CP STATUS
  4134. CRD CS
  4135. LDD OR+2 SET STORAGE TYPE
  4136. LPN 1
  4137. STD T5
  4138. LDD CS CHECK CP STATUS
  4139. LPN 37
  4140. ZJN MST3 IF NO PP-S ASSIGNED
  4141. LMN 1
  4142. SHN 14
  4143. LMD CP CHECK IF MOVE OF REQUESTING CP
  4144. LMD MM.3
  4145. NJN MST1 IF NOT ONLY REQUESTING PP
  4146. LDD OR+2
  4147. LPC 200
  4148. ZJN MST3 IF NOT SPECIAL REQUEST
  4149. MST1 LDN PPXE SET PP1 *ACPP* OFFSET
  4150. STD T1
  4151. MST2 LDN PPXE ADVANCE TO NEXT PP
  4152. RAD T1
  4153. TADC ACPP,PPX READ CP/PCP ASSIGNMENT
  4154. CRD CM
  4155. TLMC ACPP,PPX (LAST *ACPP* WORD + *PPXE*)
  4156. MSTA EQU *-1
  4157. MST3 ZJN MST6 IF END OF SCAN
  4158. LDD CM
  4159. LMD MM.0
  4160. NJN MST2 IF PP NOT ACCESSING MOVE CP/PCP
  4161.  
  4162. ** IMPORTANT NOTE -
  4163. *
  4164. * ALL MONITOR FUNCTIONS SHOULD BE CONSIDERED STORAGE MOVABLE
  4165. * WHILE THE REQUEST IS PENDING. THEREFORE, PP ROUTINES
  4166. * SHOULD RECOMPUTE ANY ABSOLUTE ADDRESSES AFTER ISSUING ANY
  4167. * MONITOR FUNCTION. THIS WILL ALLOW FOR THE FUTURE GOAL OF
  4168. * ACTUALLY ACHIEVING THIS OBJECTIVE.
  4169.  
  4170. LDD T1 SET PP COMMUNICATION AREA OFFSET
  4171. SHN PPCES-PPXES
  4172. ADD OF READ OUTPUT REGISTER
  4173. CRD CM
  4174. LDD CM
  4175. ZJN MST5 IF NO FUNCTION
  4176. SHN 21-10
  4177. MJN MST2 IF STORAGE MOVE ALLOWED
  4178. SHN 10-21
  4179. SBN SMAM
  4180. MJN MST5 IF NON-MOVABLE *MTR* FUNCTION
  4181. SBN SMEM-SMAM
  4182. MJN MST2 IF MOVABLE FUNCTION
  4183. MST5 RJM AVC
  4184. LJM MSTX RETURN
  4185.  
  4186. * CP READY TO MOVE.
  4187.  
  4188. MST6 LDD MM.0 SET CP/PCP ADDRESS
  4189. RJM SCP
  4190. ADD OR+3 GET FL CONTROL WORD
  4191. CRD CS
  4192. SBD OR+3
  4193. ADN ECSW CHECK *ECXM* INTERLOCK
  4194. CRD CM
  4195. LDD CM+1
  4196. SHN 21-13
  4197. MJN MST5 IF *ECXM* IN PROGRESS
  4198. LDD MM.0
  4199. RJM STA FETCH MEMORY TABLE ENTRY
  4200. CRD CM
  4201. LDD CM+1 CHECK FORWARD LINK
  4202. LMD NC
  4203. NJN MST9 IF NOT LAST CP
  4204. LDD MM.1
  4205. SHN 21-13
  4206. PJN MST9 IF UPWARD MOVE
  4207. LDD OR+2
  4208. SHN 21-7
  4209. PJN MST7 IF NOT SPECIAL REQUEST
  4210. LDN 0
  4211. UJN MST8 SAVE INCREMENT
  4212.  
  4213. MST7 LDM CS,OR+4 MOVE DOWN BY INCREASE
  4214. MST8 SBD OR+1
  4215. STD MM.1
  4216. MST9 LDD CS+4 CHECK CURRENT FL
  4217. ADD CS
  4218. NJN MST11 IF FL .NE. 0
  4219.  
  4220. * UPDATE RA FOR CONTROL POINT IF FL = 0.
  4221.  
  4222. STD CN+3
  4223. LDD MM.1 SET MEMORY INCREMENT
  4224. STD CN
  4225. LDD T5 STORAGE TYPE
  4226. STD CN+1
  4227. LDN MRAF MODIFY REFERENCE ADDRESS
  4228. RJM ISR
  4229. RJM AMV ADVANCE MOVE
  4230. LDD MM.4
  4231. ZJN MST10 IF MOVE COMPLETED
  4232. CRD OR
  4233. LJM MST LOOP
  4234.  
  4235. MST10 LJM FNR EXIT
  4236.  
  4237. * INITIATE STORAGE MOVE.
  4238.  
  4239. MST11 LDN 0 PRESET NO CPU STATUS
  4240. STD CM+1
  4241. LDD MM.0 CHECK CP AT MOVE
  4242. SBD NC
  4243. PJN MST13 IF PSEUDO CONTROL POINT
  4244. LDN SMRL
  4245. CWD CP-4 SET *JAV* INTERLOCK
  4246. MONITOR DCPM
  4247. LDD CM+1 SAVE CPU STATUS FROM *DCPM*
  4248. STM MSTE
  4249. LDD CP GET CPA ERROR FLAG
  4250. SHN 7
  4251. ADN STSW
  4252. CRD CS
  4253. LDD CS+1
  4254. LPN 37
  4255. LMN PEET
  4256. NJN MST12 IF NOT PARITY ERROR
  4257. MSTC RJM PHE VALIDATE PARITY ERROR
  4258. * UJN *+2 (NO S/C REGISTER OR SIMULATOR)
  4259. NJN MST15 IF ERROR IN SCR
  4260. MST12 LDC 0 SET CPU STATUS
  4261. MSTE EQU *-1
  4262. STD CM+1
  4263. MST13 LDD MM.1 SET MOVE INCREMENT
  4264. STD CM
  4265. LDC 0 SET/CLEAR BLOCK MOVE
  4266. MSTG EQU *-1
  4267. STD CM+2
  4268. LDN 0 CLEAR BLOCK MOVE INDICATOR
  4269. STM MSTG
  4270. LDD T5 INSERT MEMORY TYPE
  4271. STD CM+3
  4272. LDD CP SET CONTROL POINT NUMBER
  4273. STD CM+4
  4274. LDN SMRL STORE MOVE REQUEST
  4275. CWD CM
  4276. LDC 0 SET MOVE IN PROGRESS FLAG
  4277. ORG *-1
  4278. LOC CCPA
  4279. UJN CCP6 STORAGE MOVE IN PROGRESS
  4280. LOC *O
  4281. STM CCPA
  4282. LDM MAFC,CM+3 REQUEST STORAGE MOVE
  4283. STD CN+2
  4284. LDN EPRF ENTER PROGRAM MODE REQUEST
  4285. RJM CPR
  4286. LJM MSTX RETURN
  4287.  
  4288. * SET STORAGE UNAVAILABLE WHEN FATAL ERROR SET.
  4289.  
  4290. MST15 LDC FNC SET RETURN FOR COMPLETING MOVE
  4291. STM AMV
  4292. LDN SMRL CLEAR *SMRL*
  4293. CWD ZR
  4294. LJM AMV10 COMPLETE MOVE
  4295.  
  4296. * COMPLETE MOVE PROCESSING.
  4297. *
  4298. * ENTRY (CM - CM+4) = (SMRL).
  4299.  
  4300. MSTX. LJM * RETURN EXIT COMPLETION CODE
  4301.  
  4302. MST. EQU *-1
  4303. LDD CM+1
  4304. ZJN MST16 IF NO ERROR ON MOVE
  4305. LDD MM.0
  4306. RJM SCP SET CP / PCP ADDRESS
  4307. ADN TFSW
  4308. CRD CM+2 (CM+2) = EJT ORDINAL
  4309. LDN 0
  4310. STD CP INDICATE REQUEST FROM CP 0
  4311. LDC 4000+ECET
  4312. STD CM+1 SET ERROR FLAG
  4313. MONITOR CEFM
  4314. * LDN 0 CLEAR MOVE IN PROGRESS FLAG
  4315. MST16 STM CCPA
  4316. LDD MM.0 SET MOVE CP / PCP
  4317. STD CP
  4318. LDD MM.4 RE-READ OUTPUT REGISTER
  4319. CRD OR
  4320. LDD OR+2 RESET STORAGE TYPE
  4321. LPN 1
  4322. STD T5
  4323. RJM AMV ADVANCE MOVE
  4324. UJN MSTX. RETURN
  4325. AMF SPACE 4,15
  4326. ** AMF - ADJUST MACHINE FL.
  4327. *
  4328. * ENTRY (A) = 10, TO UPDATE *MABL*, *ACML*, AND MCT OF LAST CP.
  4329. * (A) = 11, TO UPDATE MCT OF LAST CP ONLY.
  4330. * (OR+1) = MEMORY DECREMENT (IF POSITIVE).
  4331. * (OR+1) = MEMORY INCREMENT (IF NEGATIVE).
  4332. *
  4333. * USES CN, CN+1.
  4334. *
  4335. * CALLS CPR, WXP.
  4336.  
  4337.  
  4338. AMF SUBR ENTRY/EXIT
  4339. STD CN+1 SAVE REQUEST TYPE
  4340. LDD OR+1 SET MEMORY INCREMENT/DECREMENT
  4341. STD CN
  4342. LDN MFLF MODIFY MACHINE FL
  4343. RJM CPR ISSUE REQUEST
  4344. RJM WXP WAIT FOR REQUEST TO COMPLETE
  4345. UJN AMFX RETURN
  4346. AMM SPACE 4,25
  4347. ** AMM - ACCUMULATE MEMORY TO MOVE.
  4348. *
  4349. * ENTRY (A) = ADDRESS OF ORDINAL OF MCT ENTRY.
  4350. * (T3) = UNASSIGNED MEMORY ACCUMULATOR.
  4351. * (T5) = 0 IF CM REQUEST.
  4352. * = 1 IF XM REQUEST.
  4353. * (T7) = AMOUNT OF MEMORY REQUIRED.
  4354. * (OR+3) = *FLSW* IF CM REQUEST.
  4355. * = *ECSW* IF XM REQUEST.
  4356. * (MM+1) = MOVE COUNT ACCUMULATOR.
  4357. * (MM+4) = ASSIGNED MEMORY ACCUMULATOR.
  4358. *
  4359. * EXIT (A) = INITIAL MOVE INCREMENT.
  4360. * (MM+3) = ASSIGNED MEMORY TO MOVE.
  4361. * (CS) = FIRST CP/PCP FOR LOWER MOVE.
  4362. * (CS+1) = FIRST CP/PCP FOR UPPER MOVE.
  4363. * (CS+2) = FIRST LOWER MOVE INCREMENT.
  4364. * (CS+3) = FIRST UPPER MOVE INCREMENT.
  4365. * (CS+4) = NUMBER OF CP/PCP-S TO MOVE.
  4366. *
  4367. * USES BA, PA, MM+1, MM+2, MM+4, T3, CN - CN+4.
  4368. *
  4369. * CALLS RSB, SCP, TIM.
  4370.  
  4371.  
  4372. AMM5 LDD CS+4 RESET MOVE COUNT FOR REENTRY
  4373. STD MM+1
  4374. LDD MM+3 RESET MOVE BLOCKS FOR REENTRY
  4375. STD MM+4
  4376. LDN 0 INDICATE SEARCH INCOMPLETE
  4377.  
  4378. AMM SUBR ENTRY/EXIT
  4379. STD PA
  4380. LPN 1
  4381. ADN CM SET ADDRESS OF BACKWARD/FORWARD LINK
  4382. STD BA
  4383. AMM1 LDI PA SET CP/PCP AREA ADDRESS
  4384. RJM SCP
  4385. ADD OR+3 GET FL CONTROL WORD
  4386. CRD CN
  4387. LDD CN+4 ACCUMULATE MEMORY TO MOVE
  4388. ADD CN
  4389. ZJN AMM4 IF NO ASSIGNED MEMORY
  4390. RAD MM+4
  4391. SHN -14
  4392. ZJN AMM2 IF NO OVERFLOW
  4393. LCN 0
  4394. STD MM+4 SET MAXIMUM MEMORY
  4395. AMM2 AOD MM+1
  4396. AMM3 MJN AMM1 IF MORE MEMORY REQUIRED
  4397. AMM4 LDI PA
  4398. ZJN AMM5 IF END OF MCT SCAN
  4399. STD MM+2
  4400. LDI BA SAVE LINK
  4401. STM AMMA
  4402. RJM TIM UPDATE CLOCK
  4403. LDC ** READ MCT ENTRY
  4404. AMMA EQU *-1
  4405. RJM RSB
  4406. ZJN AMM1 IF NO UNASSIGNED MEMORY FOUND
  4407.  
  4408. * ACCUMULATE UNASSIGNED MEMORY.
  4409.  
  4410. LDD MM+2 SET CP/PCP FOR MOVE
  4411. STM CS-CM,BA
  4412. LDD MM+1 SAVE MOVE COUNT
  4413. STD CS+4
  4414. LDD MM+4 SAVE BLOCKS TO MOVE
  4415. STD MM+3
  4416. LDD T0 SAVE BLOCK SIZE
  4417. STM CS+2-CM,BA
  4418. RAD T3 ACCUMULATE UNASSIGNED MEMORY
  4419. SBD T7
  4420. MJN AMM3 IF MORE MEMORY REQUIRED
  4421. SBD T0
  4422. LMC -0 SET PARTIAL BLOCK
  4423. STM CS+2-CM,BA
  4424. LJM AMMX RETURN
  4425. AMV SPACE 4,20
  4426. ** AMV - ADVANCE MOVE.
  4427. *
  4428. * ENTRY (T5) = 0 IF CM REQUEST.
  4429. * = 1 IF XM REQUEST.
  4430. * (OR+1) = REQUESTED MEMORY.
  4431. * (OR+2) = *RSTM* FLAGS.
  4432. * (OR+3) = *CMRL*/*FLSW* IF CM REQUEST.
  4433. * = *ECRL*/*ECSW* IF ECS REQUEST.
  4434. * (OR+4) = 4 IF POSITIVE FL/ECS REQUEST.
  4435. * = 0 IF NEGATIVE FL REQUEST.
  4436. * (MM - MM+4) = MOVE PARAMETERS.
  4437. *
  4438. * EXIT (MM - MM+4) UPDATED.
  4439. * *MABL* AND *ACML* ADJUSTED, IF SPECIAL *VER* REQUEST.
  4440. *
  4441. * USES CP, T4, CN - CN+4, CS - CS+4, MM - MM+4.
  4442. *
  4443. * CALLS AMF, MFL, RSB, SCP.
  4444.  
  4445.  
  4446. AMV8 LDD MM.3 REQUESTING CP NUMBER
  4447. STD CP
  4448. RJM SCP SET CP ADDRESS
  4449. ADD OR+3
  4450. CRD CS
  4451. RJM MFL
  4452. LDD OR+2
  4453. SHN 21-7
  4454. PJN AMV9 IF NOT *VER* SPECIAL REQUEST
  4455. LDN 10 SET REQUEST TYPE
  4456. RJM AMF ADJUST MACHINE FL
  4457. LDK MABL READ NEW *MABL*
  4458. CRD CN
  4459. LDD CN+2 SAVE NEW SIZE FOR COMPLETION BIT TESTING
  4460. STM PCBA
  4461. LDD CN+3
  4462. STM PCBB
  4463. AMV9 LDD MM.4 SET *RSTM* COMPLETE
  4464. CWD ZR
  4465. AMV10 LDD MM.4 EXTRACT REENTRY TABLE INDEX
  4466. SHN -3
  4467. STD MM.4
  4468. LDC PPR RESET MAIN LOOP
  4469. STM TREA,MM.4
  4470. * STM TREA-(OF)/10,MM.4
  4471. AMVC EQU *-1
  4472. LDN ZERL CLEAR MOVE PARAMETERS
  4473. CRD MM
  4474. LCN 0 SET MOVE COMPLETE
  4475. STD MM.0
  4476.  
  4477. AMVX LDN CMCL STORE CONTROL WORD
  4478. CWD MM
  4479. RJM PCM PURGE CACHE IF CPU 1 IN MONITOR MODE
  4480.  
  4481. LJM * RETURN EXIT
  4482. AMV EQU *-1
  4483. LDD MM.0 GET MCT ENTRY FOR MOVE CP
  4484. RJM RSB
  4485. STD T4
  4486. LDD CM+1 CHECK FORWARD LINK
  4487. LMD NC
  4488. ZJN AMV4 IF LAST CP
  4489. LDD MM.1
  4490. SHN 6
  4491. MJN AMV5 IF DOWNWARD MOVE
  4492. LDD MM.0
  4493. LMD MM.3
  4494. ZJN AMV3 IF REQUESTING CP JUST MOVED
  4495. LDD CM
  4496. STD MM.0 SET NEXT CP/PCP FOR MOVE
  4497. LMD MM.3
  4498. NJN AMV1 IF UPPER MOVE NOT COMPLETE
  4499. LDD OR+4
  4500. NJN AMV3 IF NOT NEGATIVE FL REQUEST
  4501. AMV1 LDD MM.0
  4502. RJM RSB FETCH NEXT MOVE INCREMENT
  4503. AMV2 STD MM.1
  4504. UJP AMVX RETURN
  4505.  
  4506. * BEGIN LOWER MOVE.
  4507.  
  4508. AMV3 LDC 0 INITIAL LOWER MOVE INCREMENT
  4509. AMVA EQU *-1
  4510. ZJN AMV4 IF NO LOWER MOVE
  4511. STD T4
  4512. LDD MM.2
  4513. NJN AMV6 IF NOT CMR REQUEST
  4514. AMV4 LJM AMV8 COMPLETE MOVE
  4515.  
  4516. * ADVANCE LOWER MOVE.
  4517.  
  4518. AMV5 LDD MM.0 CHECK CP/PCP JUST MOVED
  4519. LMC 0
  4520. AMVB EQU *-1
  4521. ZJN AMV4 IF REQUESTING CP
  4522. LDD CM+1
  4523. AMV6 STD MM.0 SET NEXT CP/PCP FOR MOVE
  4524. LMD MM.3
  4525. NJN AMV7 IF LOWER MOVE NOT COMPLETE
  4526. LDD OR+4
  4527. ZJN AMV4 IF NEGATIVE FL REQUEST
  4528.  
  4529. AMV7 LCN 0 NEXT MOVE INCREMENT
  4530. LMD T4
  4531. UJN AMV2 SET NEGATIVE INCREMENT
  4532. CFL SPACE 4,10
  4533. ** CFL - CLEAR FL INCREASE.
  4534. *
  4535. * ENTRY (CP) = CONTROL POINT NUMBER.
  4536. * (T5) = 0 IF CM REQUEST.
  4537. * = 1 IF XM REQUEST.
  4538. *
  4539. * USES CM - CM+4.
  4540. *
  4541. * CALLS SCP.
  4542.  
  4543.  
  4544. CFL1 LDN 0 CLEAR ECS INCREASE
  4545. STD CM+3
  4546. LDD CM+1
  4547. SCN 2
  4548. CFL2 STD CM+1
  4549. LDD CP SET CP/PCP ADDRESS
  4550. RJM SCP
  4551. ADN FLIW REWRITE FL INCREASE CONTROL WORD
  4552. CWD CM
  4553.  
  4554. CFL SUBR ENTRY/EXIT
  4555. LDD CP
  4556. ZJN CFLX IF CMR REQUEST
  4557. RJM SCP
  4558. ADN FLIW READ FL INCREASE WORD
  4559. CRD CM
  4560. LDD T5
  4561. NJN CFL1 IF XM REQUEST
  4562. STD CM+2
  4563. STD CM+4 CLEAR FL INCREASE
  4564. LDD CM+1
  4565. SCN 1
  4566. UJN CFL2 REWRITE FL INCREASE CONTROL WORD
  4567. CRA SPACE 4,15
  4568. ** CRA - CHANGE REFERENCE ADDRESS.
  4569. *
  4570. * ENTRY (CP) = CP/PCP NUMBER.
  4571. * (T5) = 0 IF CM REQUEST.
  4572. * = 1 IF XM REQUEST.
  4573. * (T8) = MCT ORDINAL OF HOLE.
  4574. * (OR+2) = *RSTM* FLAGS.
  4575. *
  4576. * USES CP, CN - CN+4.
  4577. *
  4578. * CALLS ISR.
  4579.  
  4580.  
  4581. CRA1 LDD T8 SET MCT ORDINAL OF HOLE
  4582. STD CN
  4583. CRA2 LDD T5 INSERT STORAGE TYPE
  4584. STD CN+1
  4585. LDN CRAF CHANGE RA IN CPA, XP AND MCT
  4586. RJM ISR
  4587.  
  4588. CRA SUBR ENTRY/EXIT
  4589. LDD OR+2
  4590. SCN 77 PRESERVE PCP FLAGS
  4591. STD CN+3
  4592. SHN 21-12
  4593. PJN CRA1 IF NOT PSEUDO-ROLLOUT
  4594. LDD CP
  4595. STD CN
  4596. LDD T8 SET (CP) TO PCP NUMBER
  4597. STD CP
  4598. UJN CRA2 COMPLETE REQUEST
  4599. EMO SPACE 4,15
  4600. ** EMO - EVALUATE MOVE OPTIONS.
  4601. *
  4602. * ENTRY (T8) = MCT ORDINAL OF HOLE.
  4603. * (CS - CS+4) = FL CONTROL WORD OF REQUESTING CP.
  4604. *
  4605. * EXIT TO CALLER IF NO FIELD LENGTH ASSIGNED.
  4606. * TO *MST* TO INITIATE MOVE IF FL PRESENT.
  4607. *
  4608. * USES MB, MM - MM+4.
  4609. *
  4610. * CALLS IMV.
  4611.  
  4612.  
  4613. EMO5 LDD T8
  4614. ZJN EMO2 IF NO HOLE FOUND
  4615.  
  4616. EMO SUBR ENTRY/EXIT
  4617. LDD CS
  4618. ADD CS+4
  4619. ZJN EMO1 IF NO ASSIGNED FL
  4620. SHN -MBCS
  4621. ADN 1 CONVERT MEMORY MOVE COUNT
  4622. EMO1 STD MB
  4623. ZJN EMO5 IF NEW JOB / NEW XM REQUEST
  4624.  
  4625. * INVESTIGATE INCREMENTAL MOVE.
  4626.  
  4627. EMO2 RJM IMV INITIATE MOVE
  4628. LDD CS+4
  4629. SBD MB
  4630. MJN EMO4 IF INCREMENTAL CHEAPER THAN BLOCK MOVE
  4631. LDD T8
  4632. ZJN EMO4 IF NO HOLE FOUND
  4633. STM MSTG
  4634. LDD MM.3 SET CP FOR MOVE
  4635. STD MM.0
  4636. * LDN 1 FAKE POSITIVE MOVE INCREMENT
  4637. STD MM.1
  4638. EMO3 LDN 0 CLEAR LOWER MOVE
  4639. STD MM.2
  4640. EMO4 LDD OA SET REQUESTING PP OR ADDRESS
  4641. STD MM.4
  4642. LDN CMCL STORE MOVE CONTROL WORD
  4643. CWD MM
  4644. RJM PCM PURGE CACHE IF CPU 1 IN MONITOR MODE
  4645. LJM MST MOVE STORAGE
  4646. IMV SPACE 4
  4647. ** IMV - INITIATE INCREMENTAL MOVE.
  4648. *
  4649. * ENTRY (CP) = CONTROL POINT NUMBER / MCT ORDINAL.
  4650. * (T5) = 0 IF CM REQUEST.
  4651. * = 1 IF XM REQUEST.
  4652. * (T6) = MCT ORDINAL IF NORMAL FL OR XM REQUEST.
  4653. * = ORDINAL OF BACKWARD LINK IF NFL REQUEST.
  4654. * (T7) = AMOUNT OF MEMORY REQUIRED.
  4655. * (OR+4) = 4 IF POSITIVE FL OR XM REQUEST.
  4656. * = 0 IF NEGATIVE FL REQUEST.
  4657. *
  4658. * EXIT (CS+4) = MOVE OVERHEAD COUNT.
  4659. * (MM - MM+3) SET UP FOR FIRST MOVE.
  4660. *
  4661. * USES MB+1, T2, T3, T4, CM - CM+4, CS - CS+4, MM - MM+4.
  4662. *
  4663. * CALLS AMM, RSB, STA, TIM.
  4664. *
  4665. * ERROR EXIT TO *HGM* IF MOVE CANNOT BE COMPLETED.
  4666.  
  4667.  
  4668. IMV SUBR ENTRY/EXIT
  4669. LDN ZERL
  4670. CRD CS
  4671. LDD T6 FETCH UNASSIGNED MEMORY BLOCK
  4672. RJM RSB
  4673. STD T3 SET HOLE SIZE ABOUT THIS CP
  4674. LDD CM+1
  4675. STD T4 SAVE FORWARD LINK
  4676.  
  4677. * COMPUTE UPPER + LOWER MOVE.
  4678.  
  4679. LDN CM+1 ACCUMULATE MEMORY FOR UPPER MOVE
  4680. RJM AMM
  4681. NJN IMV2 IF REQUEST SATISFIED WITH UPPER MOVE
  4682. LDD T6
  4683. STD T2
  4684. RJM STA GET MCT ENTRY
  4685. CRD CM
  4686. LDN T2 ACCUMULATE MEMORY FOR LOWER MOVE
  4687. RJM AMM
  4688. NJN IMV2 IF MOVE CAN BE COMPLETED
  4689.  
  4690. IMV1 RJM HGM HANG *MTR* (NO RETURN)
  4691.  
  4692. IMV2 LDD MM+3 CONVERT MOVE MEMORY TO COUNT
  4693. SHN -MBCS
  4694. RAD CS+4 APPEND TO MOVE COUNT
  4695. STD MB+1
  4696. RJM TIM UPDATE CLOCK
  4697. LDN CMCL
  4698. CRD MM
  4699. CWD CS SAVE COMPUTED VALUES
  4700. LDD CP
  4701. SBN 2
  4702. MJN IMV5 IF CMR REQUEST OR CP 1
  4703.  
  4704. * COMPUTE LOWER + UPPER MOVE.
  4705.  
  4706. LDD T6 GET UNASSIGNED MEMORY BLOCK
  4707. RJM RSB
  4708. STD T3 SET HOLE SIZE ABOUT THIS CP
  4709. LDN ZERL
  4710. CRD CS
  4711. LDN T2 ACCUMULATE MEMORY FOR LOWER MOVE
  4712. RJM AMM
  4713. NJN IMV3 IF REQUEST SATISFIED WITH LOWER MOVE
  4714. LDD T4
  4715. STD CM+1
  4716. LDN CM+1 ACCUMULATE MEMORY FOR UPPER MOVE
  4717. RJM AMM
  4718. ZJN IMV1 IF MOVE CANNOT BE COMPLETED
  4719. IMV3 LDD MM+3
  4720. SHN -MBCS CONVERT MOVE MEMORY TO COUNT
  4721. RAD CS+4
  4722.  
  4723. * COMPARE OVERHEAD OF UPPER/LOWER VS LOWER/UPPER MOVES.
  4724.  
  4725. SBD MB+1
  4726. MJN IMV4 IF LOWER/UPPER MOVE CHEAPER
  4727. LDN CMCL
  4728. CRD CS RESET UPPER/LOWER PARAMETERS
  4729. IMV4 RJM TIM
  4730. IMV5 LDD CS+1
  4731. NJN IMV6 IF UPPER MOVE PRESENT
  4732. STD MM.2
  4733. LDD CS SET INITIAL CP/PCP FOR LOWER MOVE
  4734. STD MM.0
  4735. LDD CS+2 DEFINE NEGATIVE INCREMENT
  4736. LMC -0
  4737. UJN IMV7 SET INCREMENT
  4738.  
  4739. IMV6 STD MM.0 SET INITIAL CP/PCP FOR UPPER MOVE
  4740. LDD CS
  4741. STD MM.2 SET INITIAL CP/PCP FOR LOWER MOVE
  4742. LDD CS+2
  4743. STM AMVA SET INITIAL LOWER MOVE INCREMENT
  4744. LDD CS+3
  4745. IMV7 STD MM.1 SET MOVE INCREMENT
  4746. LDD CP
  4747. STD MM.3 SET REQUESTING CP
  4748. STM AMVB
  4749. LJM IMVX RETURN
  4750. ISR SPACE 4,15
  4751. ** ISR - ISSUE STORAGE REQUEST.
  4752. *
  4753. * ENTRY (A) = MONITOR FUNCTION.
  4754. * (CP) = CONTROL POINT NUMBER.
  4755. * (CN, CN+1, CN+3) = PARAMETERS.
  4756. *
  4757. * EXIT (A) = 0.
  4758. *
  4759. * USES CN - CN+4.
  4760. *
  4761. * CALLS CPR, TIM.
  4762.  
  4763.  
  4764. ISR SUBR ENTRY/EXIT
  4765. STM ISRA
  4766. LDD CP SET CP NUMBER IN X0 IMAGE
  4767. STD CN+2
  4768. LDN 0 CLEAR UNUSED BYTE
  4769. STD CN+4
  4770. LDN SMRL STORE FUNCTION IN PROGRESS
  4771. CWD CN
  4772. LDC 10000 ISSUE *CPUMTR* REQUEST
  4773. ISRA EQU *-1
  4774. RJM CPR
  4775. ISR1 RJM TIM UPDATE TIME
  4776. LDN SMRL
  4777. CRD CN GET FUNCTION STATUS
  4778. LDD CN
  4779. NJN ISR1 IF NOT COMPLETE
  4780. * LDN 0
  4781. UJN ISRX RETURN
  4782. MFL SPACE 4,20
  4783. ** MFL - MODIFY FIELD LENGTH.
  4784. *
  4785. * ENTRY (CP) = CONTROL POINT NUMBER.
  4786. * (T5) = 0 IF CM REQUEST.
  4787. * = 1 IF XM REQUEST.
  4788. * (OR+1) = NEW FIELD LENGTH.
  4789. * (OR+2) = *RSTM* FLAGS.
  4790. * (OR+3) = *CMRL*/*FLSW* IF CM REQUEST.
  4791. * = *ECRL*/*ECSW* IF ECS REQUEST.
  4792. * (OR+4) = 4 IF POSITIVE FL/ECS REQUEST.
  4793. * = 0 IF NEGATIVE FL REQUEST.
  4794. * (CS - CS+4) = FL STATUS.
  4795. *
  4796. * USES CM - CM+4, CN - CN+4.
  4797. *
  4798. * CALLS CFL, CPR, ISR, SCP, WXP.
  4799. *
  4800. * ERROR EXIT TO *HGM* IF CMR SIZE .GE. MCMR*100B.
  4801.  
  4802.  
  4803. MFL4 LDD CP SET CP/PCP NUMBER
  4804. STD CN+2
  4805. LDN 0 CLEAR UNUSED FIELDS
  4806. STD CN+4
  4807. LDN SMRL SET REQUEST IN PROGRESS
  4808. CWD CN
  4809. MFL5 LDD CP FORM CP/PCP AREA ADDRESS
  4810. RJM SCP
  4811. ADN STSW GET STATUS WORD
  4812. CRD CM
  4813. LDD CM CHECK CPU STATUS
  4814. SHN -11
  4815. LMN ACPS
  4816. ZJN MFL6 IF ACTIVITY IN CPU - 0
  4817. LDC 10000
  4818. MFL6 LMN MFLF MODIFY FIELD LENGTH
  4819. RJM CPR
  4820. RJM WXP WAIT REQUEST COMPLETE
  4821. LDN SMRL
  4822. CRD CN FETCH REQUEST STATUS
  4823. LDD CN
  4824. NJN MFL5 IF CHANGE NOT MADE
  4825.  
  4826. MFL SUBR ENTRY/EXIT
  4827. LDD OR+2
  4828. LPC 1S11+1S10+1S7
  4829. NJN MFLX IF SPECIAL REQUEST
  4830. STD CN+3
  4831. LDD CP
  4832. NJN MFL2 IF NOT CMR REQUEST
  4833. LDD OR+1
  4834. SBK MCMR
  4835. MJN MFL3 IF REQUEST .LT. MCMR*100B
  4836.  
  4837. MFL1 RJM HGM HANG *MTR* (NO RETURN)
  4838.  
  4839. MFL2 RJM CFL CLEAR FL INCREASE REQUEST
  4840. MFL3 LDD OR+1
  4841. SBM CS,OR+4 SET MEMORY INCREMENT
  4842. STD CN
  4843. ZJN MFLX IF NO CHANGE
  4844. LDD OR+4
  4845. SHN 6 SET TYPE OF FL + TYPE OF MEMORY
  4846. LMD T5
  4847. STD CN+1
  4848. MFLA LJM MFL4 (DUAL CPU)
  4849.  
  4850. * LDN MFLF (SINGLE CPU)
  4851. * RJM ISR
  4852. CON ISR
  4853. UJP MFLX RETURN
  4854. PVE SPACE 4,20
  4855. ** PVE - PROCESS SPECIAL REQUEST.
  4856. *
  4857. * ENTRY (T5) = 0 IF CM REQUEST.
  4858. * (T5) = 1 IF XM REQUEST.
  4859. * (OR+1) = REQUESTED MEMORY INCREMENT.
  4860. * (OR - OR+4) = UPDATED OUTPUT REGISTER.
  4861. *
  4862. * EXIT (A) .GT. 0 IF INCREASE.
  4863. * .LT. 0 IF DECREASE.
  4864. * (CP) = LAST CONTROL POINT.
  4865. * (T6) = MCT ORDINAL OF LAST CONTROL POINT.
  4866. * (T7) = AMOUNT OF INCREASE / DECREASE.
  4867. * (CS - CS+4) = FL CONTROL WORD FOR LAST CONTROL POINT.
  4868. *
  4869. * USES CP, T6, T7, CM - CM+4, CS - CS+4.
  4870. *
  4871. * CALLS AMF, HNG, SCP.
  4872.  
  4873.  
  4874. PVE2 LDN ** SET CP TO LAST CONTROL POINT
  4875. * LDN (NC)-1
  4876. PVEA EQU *-1
  4877. STD CP
  4878. STD T6
  4879. RJM SCP READ FL CONTROL WORD
  4880. ADD OR+3
  4881. CRD CS
  4882. LDD OA STORE OUTPUT REGISTER
  4883. CWD OR
  4884. LDD OR+1 SET MEMORY INCREMENT
  4885. STD T7
  4886. SHN 21-13 CHECK REQUEST TYPE
  4887. PJN PVEX IF *VER* REQUESTING MEMORY
  4888. LDN 11 SET REQUEST TYPE
  4889. RJM AMF SET UNASSIGNED MEMORY AFTER LAST CP
  4890. LCN 1 INDICATE *VER* RETURNING MEMORY
  4891.  
  4892. PVE SUBR ENTRY/EXIT
  4893. LDD OA VERIFY CALLER
  4894. SBN 1
  4895. CRD CM
  4896. LDD CM+1
  4897. SCN 77
  4898. SHN 6
  4899. LMD CM
  4900. LMC 3RRVE
  4901. ZJN PVE2 IF CALLER IS *VER*
  4902. PVE1 RJM HNG HANG PP
  4903. RSB SPACE 4,15
  4904. ** RSB - RETURN SIZE OF UNASSIGNED MEMORY BLOCK.
  4905. *
  4906. * ENTRY (A) = ORDINAL OF MCT ENTRY.
  4907. * (T5) = 0 IF CM REQUEST.
  4908. * = 1 IF XM REQUEST.
  4909. *
  4910. * EXIT (A) = (T0) = BLOCK SIZE.
  4911. * (T2) = ORDINAL OF MCT ENTRY.
  4912. * (CM - CM+4) = MCT ENTRY.
  4913. *
  4914. * USES T0, T2, CM - CM+4.
  4915. *
  4916. * CALLS STA.
  4917. *
  4918. * ERROR TO *HGM* IF MCT ENTRY DESTROYED.
  4919.  
  4920.  
  4921. RSB2 LDC 3777 RETURN MAXIMUM MEMORY
  4922. RSB3 STD T0
  4923.  
  4924. RSB SUBR ENTRY/EXIT
  4925. STD T2
  4926. RJM STA FETCH MCT ENTRY
  4927. CRD CM
  4928. LDD CM+3 VERIFY ENTRY
  4929. SHN 21-13
  4930. MJN RSB1 IF MCT ENTRY BAD
  4931. SHN 14-6
  4932. LMD CM+4 CHECK UNASSIGNED MEMORY
  4933. SBK 3777
  4934. PJN RSB2 IF .GE. MAXIMUM FOR JOB
  4935. LDD CM+4
  4936. UJN RSB3 RETURN
  4937.  
  4938. RSB1 RJM HGM HANG *MTR* (NO RETURN)
  4939. SCP SPACE 4,10
  4940. ** SCP - SET CP/PCP AREA ADDRESS.
  4941. *
  4942. * ENTRY (A) = CP/PCP NUMBER.
  4943. * (NC) = SYSTEM CP NUMBER.
  4944. *
  4945. * EXIT (A) = CPA/PCPA ADDRESS.
  4946.  
  4947.  
  4948. SCP1 ADD NC SET REAL CP AREA ADDRESS
  4949. SHN 7
  4950.  
  4951. SCP SUBR ENTRY/EXIT
  4952. SBD NC
  4953. MJN SCP1 IF REAL CP
  4954. ZJN SCP1 IF SYSTEM CP
  4955. SHN 7
  4956. ADC 0 ADD BASE PCPA ADDRESS - CPA LENGTH
  4957. SCPA EQU *-1
  4958. UJN SCPX RETURN
  4959. SFL SPACE 4,15
  4960. ** SFL - SET FL INCREASE.
  4961. *
  4962. * ENTRY (CP) = CONTROL POINT NUMBER.
  4963. * (T5) = 0 IF CM REQUEST.
  4964. * = 1 IF XM REQUEST.
  4965. * (OR+1) = FL TO SET FOR INCREASE.
  4966. * (OR+4) = 0 IF NEGATIVE FL REQUEST.
  4967. * (CS - CS+4) = CP FL STATUS WORD.
  4968. *
  4969. * USES CM - CM+4.
  4970. *
  4971. * MACROS MONITOR.
  4972.  
  4973.  
  4974. SFL5 LDD OR+1 SET XM FL REQUIRED
  4975. STD CM+3
  4976. SFL6 LDD CP SET CP ADDRESS
  4977. SHN 7
  4978. ADN FLIW REWRITE FL INCREASE CONTROL WORD
  4979. CWD CM
  4980. LDN 0 CLEAR INPUT FILE SCHEDULING FLAG
  4981. STD CM+2
  4982. MONITOR RSJM REQUEST JOB SCHEDULER
  4983.  
  4984. SFL SUBR ENTRY/EXIT
  4985. LDD OR+2
  4986. SHN 21-6
  4987. PJN SFLX IF DO NOT SET *FLIW*
  4988. LDD CP
  4989. SHN 7
  4990. ADN FLIW READ FL INCREASE CONTROL WORD
  4991. CRD CM
  4992. LDD T5
  4993. NJN SFL5 IF XM REQUEST
  4994. LDD CM+4
  4995. ZJN SFL4 IF NO CM INCREASE PENDING
  4996. LDD OR+4
  4997. ZJN SFL2 IF NFL REQUEST
  4998. SFL1 LDD CS
  4999. UJN SFL3 COMPUTE TOTAL CM FL
  5000.  
  5001. SFL2 LDD CM+2
  5002. NJN SFLX IF REISSUE OF NFL REQUEST
  5003. LDD OR+1
  5004. SBD CS
  5005. STD CM+2 COMPUTE NFL INCREASE AMOUNT
  5006. LDD CM+4
  5007. SBD CS
  5008. SFL3 ADD OR+1
  5009. STD CM+4
  5010. LJM SFL6 REWRITE FL INCREASE CONTROL WORD
  5011.  
  5012. SFL4 LDD OR+4
  5013. NJN SFL1 IF NOT NFL INCREASE
  5014. LDD OR+1
  5015. SBD CS
  5016. STD CM+2 COMPUTE NFL INCREASE
  5017. LDD CS+4
  5018. UJN SFL3 ADD NFL TO CM FL
  5019. STA SPACE 4,10
  5020. ** STA - SET MEMORY CONTROL TABLE ADDRESS.
  5021. *
  5022. * ENTRY (A) = CP/PCP NUMBER.
  5023. * (T5) = 0 IF CM REQUEST.
  5024. * = 1 IF XM REQUEST.
  5025. *
  5026. * EXIT (A) = ABSOLUTE TABLE ADDRESS.
  5027.  
  5028.  
  5029. STA SUBR ENTRY/EXIT
  5030. SHN 1
  5031. ADC 0 APPEND BASE MCT ADDRESS
  5032. STAA EQU *-1
  5033. ADD T5
  5034. UJN STAX RETURN
  5035. UFL SPACE 4,20
  5036. ** UFL - SET UNASSIGNED FIELD LENGTHS.
  5037. *
  5038. * ENTRY (CP) = CP/PCP NUMBER.
  5039. * (NC) = SYSTEM CP NUMBER.
  5040. * (T5) = 0 IF CM REQUEST.
  5041. * = 1 IF XM REQUEST.
  5042. * (T7) = AMOUNT OF MEMORY REQUIRED.
  5043. * (OR+4) = 0 IF NFL REQUEST.
  5044. * (CS - CS+4) = FL CONTROL WORD OF REQUESTING CP.
  5045. *
  5046. * EXIT (A) .LT. 0 IF MEMORY UNAVAILABLE.
  5047. * (T8) = MCT ORDINAL OF MEMORY HOLE.
  5048. *
  5049. * USES T1, T3, T4, T7, T8, CM - CM+4, CN - CN+4.
  5050. *
  5051. * CALLS RSB, TIM.
  5052.  
  5053.  
  5054. UFL11 LDD T4
  5055. NJN UFL12 IF CP HAS MEMORY ASSIGNED
  5056. LDD OR+4
  5057. ZJN UFL12 IF NFL REQUEST
  5058. LDN MSCL GET MEMORY PAD SIZE
  5059. CRD CN
  5060. LDD T7 CHECK REQUEST SIZE
  5061. ADD CN+4
  5062. SBK 3770
  5063. MJN UFL12 IF REQUEST SHORT ENOUGH TO PAD
  5064. LDN 0
  5065. STD CN+4
  5066. UFL12 LDD CM CHECK CENTRAL MEMORY
  5067. SHN 14
  5068. LMD CM+1 TOTAL UNASSIGNED MEMORY
  5069. UFL13 SBD T7
  5070. PJN UFL1 IF SUFFICIENT TO SATISFY REQUEST
  5071.  
  5072. UFL SUBR ENTRY/EXIT
  5073. LDD CS
  5074. ADD CS+4 TOTAL ASSIGNED MEMORY
  5075. STD T4
  5076. LDN ACML FETCH UNASSIGNED MEMORY COUNT
  5077. CRD CM
  5078. LDN 0 CLEAR MEMORY ASSIGNMENT PAD
  5079. STD CN+4
  5080. STD T8 SET MEMORY HOLE NOT FOUND
  5081. LDD T5
  5082. ZJN UFL11 IF REQUEST FOR CENTRAL MEMORY
  5083. LDD CM+3
  5084. UJN UFL13 CHECK UNASSIGNED EXTENDED MEMORY
  5085.  
  5086. UFL1 SBD CN+4
  5087. PJN UFL3 IF SUFFICIENT MEMORY FOR REQUEST + PAD
  5088. ADD CN+4
  5089. SBD T4
  5090. PJN UFL6 IF ENOUGH MEMORY TO WARRANT HOLE SEARCH
  5091. UFL2 LDN 0
  5092. UJN UFLX RETURN
  5093.  
  5094. UFL3 SBD T4
  5095. PJN UFL5 IF HOLE SEARCH FOR REQUEST + PAD
  5096. LDD CN+4
  5097. RAD T7
  5098. UFL4 UJN UFLX RETURN
  5099.  
  5100. UFL5 LDD CN+4 APPEND PAD TO REQUEST
  5101. RAD T7
  5102. UFL6 LDD OR+4
  5103. ZJN UFLX IF NFL REQUEST
  5104. LDD CP
  5105. SBN 2
  5106. MJN UFL2 IF CMR OR CP 1
  5107. ADN 3
  5108. LMD NC
  5109. UFL7 ZJN UFL4 IF LAST REAL CP
  5110. LDD T7
  5111. RAD T4 INCLUDE CURRENT INCREASE
  5112. LDC 0
  5113. UFLA EQU *-1 (NUMBER OF MCT ENTRIES)
  5114. SBN 3
  5115. STD T1
  5116. LDN 1 INITIALIZE FORWARD LINK
  5117. STD CM+1
  5118. LCN 0 PRESET HOLE SIZE
  5119. STD T3
  5120. UFL8 LDD CM+1 SAVE FORWARD LINK
  5121. STM UFLB
  5122. RJM TIM UPDATE CLOCK
  5123. LDC **
  5124. UFLB EQU *-1
  5125. RJM RSB
  5126. SBD T4
  5127. MJN UFL9 IF HOLE NOT FOUND
  5128. SBD T3
  5129. PJN UFL9 IF THIS HOLE LARGER
  5130. RAD T3
  5131. LDD T2 SAVE ORDINAL OF HOLE
  5132. STD T8
  5133. LDD T0 CHECK HOLE SIZE
  5134. SBD T4
  5135. ZJN UFL7 IF EXACT FIT
  5136. UFL9 SOD T1
  5137. ZJN UFL7 IF SCAN COMPLETE
  5138. UJN UFL8 CHECK NEXT MCT ENTRY
  5139. SPACE 4,10
  5140. * MEMORY ALLOCATION ADDRESSES / FUNCTIONS.
  5141.  
  5142.  
  5143. MAFA CON FLSW,ECSW
  5144. MAFC CON MSTF,MECF
  5145.  
  5146. ERRNZ FLSW-CMRL
  5147. ERRNZ ECSW-ECRL
  5148. TITLE SUBROUTINES.
  5149. ACP SPACE 4
  5150. ** NOTE - SUBROUTINES WILL NOT ALTER OA, CP, OR - OR+4.
  5151. CDA SPACE 4,15
  5152. ** CDA - CLEAR DEVICE ACTIVITY.
  5153. *
  5154. * ENTRY (T4 - CM) = *DSWM* PARAMETERS FROM MESSAGE BUFFER.
  5155. * (CS) = UNIT TO WRITE TO *DRQP*.
  5156. * (CN - CN+4) = DEVICE ACTIVITY WORD.
  5157. *
  5158. * EXIT PP ACTIVITY WORD WRITTEN.
  5159. * (PR) = PP NUMBER WAITING FOR THE UNIT BEING RELEASED.
  5160. *
  5161. * USES CM, CN, CN+1, CN+3, PR.
  5162. *
  5163. * MACROS MSTA.
  5164.  
  5165.  
  5166. CDA6 LDD PP STORE *DRQP*
  5167. SHN PPXES
  5168. TADC DRQP,PPX
  5169. CWD CS
  5170.  
  5171. CDA SUBR ENTRY/EXIT
  5172. LDD CM CLEAR *CHRV* CHANNEL STATUS
  5173. SCN 11
  5174. STD CM
  5175. LDM TPPI,PP
  5176. ZJN CDA6 IF NO INTERLOCK HELD
  5177. SCN 1
  5178. ZJN CDA3 IF NO INTERLOCK SET
  5179. LMD CN+1
  5180. STD CN+1
  5181. SHN -13
  5182. NJN CDA2 IF FIRST UNIT NOT FREE
  5183. LDD PR
  5184. NJN CDA1 IF REQUEST FOR CHANNEL BY OTHER UNIT
  5185. LDD CN+3
  5186. ZJN CDA3 IF UNIT NOT REQUESTED
  5187. STD PR
  5188. CDA1 LDN 0 CLEAR UNIT REQUEST
  5189. STD CN+3
  5190. CDA2 LDN 0
  5191. CDA3 STM TPPI,PP
  5192. LDD CN+1
  5193. SCN 17
  5194. NJN CDA4 IF OTHER LOGICAL RESERVE(S) STILL SET
  5195. LDN 1
  5196. STD CN+1 CLEAR *DALL* UPDATE INTERLOCK
  5197. CDA4 SOD CN
  5198. SHN 21-5
  5199. PJN CDA5 IF NO UNDERFLOW
  5200. SHN 5-21+22
  5201. ADN 1 FIX UNDERFLOW PROBLEM
  5202. STD CN
  5203. CDA5 MSTA DALL,PP UPDATE DEVICE ACTIVITY
  5204. CWD CN
  5205. LJM CDA6 RETURN
  5206. CFS SPACE 4,10
  5207. ** CFS - CHECK FOR STEP CRITERION MET.
  5208. *
  5209. * ENTRY (A) = POINTER TO OUTPUT REGISTER.
  5210. * (CM - CM+4) = INPUT REGISTER.
  5211. *
  5212. * EXIT (A) = 0 IF STEP CRITERION MET BY THIS PPU.
  5213. *
  5214. * USES T3, CM - CM+4.
  5215.  
  5216.  
  5217. CFS SUBR ENTRY/EXIT
  5218. STD T3 SAVE OUTPUT REGISTER ADDRESS
  5219. LDD CM+1
  5220. LPN 37
  5221. SHN 7
  5222. ADN TFSW READ CALLING CP EJT ORDINAL
  5223. CRD CM
  5224. LDC 0 EJT ORDINAL TO STEP
  5225. CFSA EQU *-1
  5226. ZJN CFS1 IF NOT EJT ORDINAL STEP
  5227. LMD CM
  5228. ZJN CFS1 IF CORRECT EJT ORDINAL
  5229. LDD T3
  5230. SBD OF
  5231. SHN PPXES-PPCES
  5232. TADC ACPP,PPX
  5233. CRD CM GET ALTERNATE CP/PCP ASSIGNMENT IF PRESENT
  5234. LDD CM+1
  5235. SHN 14
  5236. ADD CM+2
  5237. ADK TFSW READ POSSIBLE ALTERNATE CP/PCP EJT ORDINAL
  5238. CRD CM
  5239. LDD CM
  5240. LMM CFSA
  5241. NJN CFSX IF NOT CORRECT EJT ORDINAL
  5242. CFS1 LDC ** FUNCTION TO STEP
  5243. CFSB EQU *-1
  5244. ZJN CFSX IF NO FUNCTION TO STEP
  5245. LMI T3
  5246. LPC 177
  5247. NJN CFS2 IF INCORRECT FUNCTION
  5248. LDM **,T3
  5249. CFSC EQU *-1 BYTE NUMBER STEPING ON
  5250. LMC ** BYTE VALUE TO STEP ON
  5251. CFSD EQU *-1
  5252. CFS2 LJM CFSX RETURN
  5253. FTN SPACE 4,15
  5254. ** FTN - PROCESS MONITOR FUNCTION.
  5255. *
  5256. * ENTRY (A) = FUNCTION.
  5257. * (CP) = CONTROL POINT NUMBER.
  5258. * (CM+1 - CM+4) = PARAMETERS.
  5259. *
  5260. * EXIT (CM - CM+4) = RESPONSE.
  5261. * (A) = 0.
  5262. *
  5263. * USES CN - CN+4.
  5264. *
  5265. * CALLS AVC, CPR.
  5266.  
  5267.  
  5268. FTN4 LDN ZERL INITIALIZE *ACPP*
  5269. CRD CN
  5270. LDD CP SET CONTROL POINT NUMBER
  5271. STD CN
  5272. SHN 7 SET CONTROL POINT ADDRESS
  5273. STD CN+2
  5274. STD CN+4
  5275. TLDC ACPP,PPX WRITE *ACPP*
  5276. CWD CN
  5277. LDD OF WRITE OUTPUT REGISTER
  5278. CWD CM
  5279. FTNB LMC 0 MERGE CPU NUMBER
  5280. RJM CPR
  5281. FTN5 RJM AVC ADVANCE CLOCK
  5282. LDD OF READ OUTPUT REGISTER
  5283. CRD CM
  5284. LDD CM
  5285. NJN FTN5 IF NOT COMPLETE
  5286.  
  5287. FTN SUBR ENTRY/EXIT
  5288. STD CM SET REQUEST
  5289. FTNA LDC LMCI
  5290. * UJN FTN4 (1 CPU ONLY)
  5291. STM FTNB
  5292. LDD CM
  5293. LMN DCPM
  5294. ZJN FTN1 IF FUNCTION REQUIRING CORRECT CPU
  5295. LMN CEFM&DCPM
  5296. NJN FTN3 IF FUNCTION DOES NOT REQUIRE CORRECT CPU
  5297. FTN1 LDD CP CHECK CPU SELECTION
  5298. SHN 7
  5299. ADN CWQW
  5300. CRD CN
  5301. LDD CN+2
  5302. LPN 3
  5303. SBN 3
  5304. ZJN FTN3 IF NEITHER CPU ASSIGNABLE
  5305. ADN 3-1
  5306. PJN FTN2 IF CPU SELECTION
  5307. LDD CP CHECK FOR ACTIVE JOB
  5308. SHN 7
  5309. ADN STSW
  5310. CRD CN
  5311. LDD CN
  5312. SHN -11
  5313. ZJN FTN3 IF NOT ACTIVE
  5314. SBN 3
  5315. PJN FTN3 IF NOT ACTIVE
  5316. ADN 2
  5317. FTN2 RAM FTNB SET CORRECT CPU
  5318. FTN3 LJM FTN4 ISSUE REQUEST
  5319. GCE SPACE 4,15
  5320. ** GCE - GET CHANNEL ASSIGNMENT TABLE ENTRY.
  5321. *
  5322. * ENTRY (A) = CHANNEL NUMBER.
  5323. *
  5324. * EXIT (A) = ((T1)) = CHANNEL ASSIGNMENT TABLE ENTRY.
  5325. * (CM - CM+4) = CHANNEL ASSIGNMENT TABLE WORD.
  5326. * (CN) = REQUESTING JOB-S EJT ORDINAL.
  5327. * (T0) = WORD INDEX FOR CHANNEL ASSIGNMENT TABLE.
  5328. *
  5329. * USES T0, T1, CM - CM+4, CN - CN+4.
  5330. *
  5331. * CALLS VCN.
  5332. *
  5333.  
  5334.  
  5335. GCE SUBR ENTRY/EXIT
  5336. STD T1 SAVE CHANNEL NUMBER
  5337. RJM VCN VERIFY CHANNEL NUMBER
  5338. LCN 0 INITIALIZE WORD INDEX
  5339. STD T0
  5340. GCE1 AOD T0 INCREMENT WORD INDEX
  5341. LCN 5 DIVIDE BY 5 LOOP
  5342. RAD T1
  5343. PJN GCE1 IF NOT CORRECT INDEX
  5344. ADN 5+CM
  5345. STD T1
  5346. LDC 0 READ CHANNEL ASSIGNMENT TABLE WORD
  5347. GCEA EQU *-1
  5348. ADD T0 ADD CORRECT WORD INDEX
  5349. CRD CM
  5350. LDD OA GET JOB-S CP NUMBER
  5351. SBN 1
  5352. CRD CN
  5353. LDD CN+1 GET REQUESTING JOB-S EJT ORDINAL
  5354. LPN 37
  5355. SHN 7
  5356. ADN TFSW
  5357. CRD CN
  5358. LDI T1
  5359. UJN GCEX RETURN
  5360. HGM SPACE 4,10
  5361. ** HGM - HANG *MTR*.
  5362.  
  5363.  
  5364. HGM CON ** CALLER-S ADDRESS
  5365. HGM1 LDC MS2W+** DISPLAY MESSAGE
  5366. HGMB EQU *-1
  5367. CWM HGMA,ON
  5368. UJN HGM1 LOOP
  5369.  
  5370.  
  5371. HGMA DATA C*MTR HUNG*
  5372. PCM SPACE 4,10
  5373. ** PCM - PURGE CACHE IF CPU 1 IN MONITOR MODE.
  5374. *
  5375. * PURGE CACHE IN CPU 1 ON A DUAL CPU MACHINE WITH
  5376. * CACHE, IF CPU 1 IS IN MONITOR MODE.
  5377. *
  5378. * EXIT CPU 1 CACHE PURGED IF DUAL-CPU NOS AND MONITOR MODE.
  5379. *
  5380. * USES CM - CM+4.
  5381.  
  5382.  
  5383. PCM SUBR ENTRY/EXIT
  5384. PCMA UJN PCMX IF NOT DUAL-CPU NOS CACHE MACHINE
  5385. * LDC **+CMST+1 (DUAL-CPU NOS CACHE MACHINE)
  5386. CON ** CHECK IF CPU 1 IN MONITOR MODE
  5387. CRD CM
  5388. LDD CM+1
  5389. ADD CM+2
  5390. ADD CM+3
  5391. ADD CM+4
  5392. ZJN PCMX IF CPU 1 NOT IN MONITOR MODE
  5393. LDN ZERL
  5394. CRD CM
  5395. LDC 1S8 BIT 56 (IN 4 16-BIT BYTES) SELECTS CPU 1
  5396. STD CM
  5397. LDK EIBP SET MICROCODE CPU 1 CACHE PURGE BIT
  5398. RDSL CM CENTRAL READ AND SET LOCK (SELECT CPU 1)
  5399. INPN 4 PURGE CACHE IN SELECTED CPU (CPU 1)
  5400. UJN PCMX RETURN
  5401. RCP SPACE 4,10
  5402. ** RCP - RECALL CPU.
  5403. *
  5404. * ENTRY (CN+2) = CONTROL POINT AREA ADDRESS.
  5405. *
  5406. * USES T7, CM - CM+4.
  5407. *
  5408. * CALLS CPR.
  5409.  
  5410.  
  5411. * THE FOLLOWING CODE WILL SELECT CPU 0 IF NEITHER CPU CAN BE
  5412. * CURRENTLY ASSIGNED ON A DUAL CPU MACHINE WITH CACHE.
  5413.  
  5414. RCP1 ADN CWQW GET CPU SELECTION
  5415. CRD CM
  5416. LDD CM+2
  5417. LPN 3
  5418. ZJN RCP1.1 IF EITHER CPU ASSIGNABLE
  5419. LMN 3
  5420. LPN 1 SELECT CPU FOR RECALL
  5421. UJN RCP2.1 RECALL CPU
  5422.  
  5423. * SELECT CPU WITH LOWEST PRIORITY JOB.
  5424.  
  5425. RCP1.1 LDC TSCL CPU - 0 PRIORITY
  5426. CRD T7
  5427. ADN 1 CPU - 1 PRIORITY
  5428. CRD CM
  5429. LDD CM
  5430. SBD T7
  5431. RCP2 SHN 0-21 SIGN BIT TO RECALL CPU - 1
  5432. RCP2.1 SHN 14
  5433. LMN RCLF
  5434. RJM CPR
  5435.  
  5436. RCP SUBR ENTRY/EXIT
  5437. LDD CN+2
  5438. LPC 7600 SET CONTROL POINT ADDRESS
  5439. STD CN+2
  5440. RCPA UJN RCP1 CHECK CPU SELECTION
  5441. * UJN RCP2 (SINGLE CPU)
  5442. RCS SPACE 4,15
  5443. ** RCS - REQUEST CHANNEL STATE CHANGE.
  5444. *
  5445. * ENTRY (A) = *SCSM* SUBFUNCTION.
  5446. * (OR+1) = EST ORDINAL.
  5447. * (OR+3) = CHANNEL NUMBER.
  5448. *
  5449. * EXIT (A) = (CM+1) = *SCSM* REPLY.
  5450. * = 0 IF FUNCTION WAS REJECTED.
  5451. *
  5452. * USES CM+1 - CM+3.
  5453. *
  5454. * MACROS MONITOR.
  5455.  
  5456.  
  5457. RCS SUBR ENTRY/EXIT
  5458. STD CM+3 SUBFUNCTION
  5459. LDD OR+1 EST ORDINAL
  5460. STD CM+1
  5461. LDD OR+3 CHANNEL
  5462. STD CM+2
  5463. MONITOR SCSM
  5464. LDD CM+1
  5465. UJN RCSX RETURN
  5466. TCH SPACE 4
  5467. ** TCH - TEST CHANNEL.
  5468. *
  5469. * ENTRY (A) = CHANNEL NUMBER.
  5470. *
  5471. * EXIT (T2) = CHANNEL.
  5472. * (A) = 0 IF CHANNEL FREE.
  5473. * (A) .GT. 0 IF CHANNEL IS RESERVED.
  5474. * (A) = NEGATIVE IF CHANNEL DOWN.
  5475. *
  5476. * CALLS VCN.
  5477.  
  5478.  
  5479. TCH SUBR ENTRY/EXIT
  5480. RJM VCN VERIFY CHANNEL NUMBER
  5481. LDM TCHS,T2
  5482. ZJN TCHX IF CHANNEL IS FREE AND UP
  5483. SHN 21-5
  5484. MJN TCHX IF CHANNEL DOWN
  5485. SHN -14
  5486. ZJN TCHX IF CHANNEL UNASSIGNED
  5487. STD CF SET CHANNEL UPDATE FLAG
  5488. LDM TCHS,T2 SET CHANNEL REQUESTED FLAG
  5489. LPC -4000
  5490. LMD FT
  5491. STM TCHS,T2
  5492. UJN TCHX RETURN
  5493. VCN SPACE 4,10
  5494. ** VCN - VERIFY CHANNEL NUMBER.
  5495. *
  5496. * ENTRY (A) = CHANNEL DESCRIPTOR.
  5497. *
  5498. * EXIT (T2) = CHANNEL NUMBER.
  5499. *
  5500. * ERROR TO *HNG* IF INVALID CHANNEL NUMBER.
  5501.  
  5502.  
  5503. VCN SUBR ENTRY/EXIT
  5504. LPN 77
  5505. STD T2 EXTRACT CHANNEL NUMBER
  5506. VCNA SBN 0
  5507. MJN VCNX IF NON-CONCURRENT CHANNEL
  5508. VCNB SBN 40-0
  5509. MJN VCN1 IF UNDEFINED CHANNEL
  5510. VCNC SBN 0
  5511. MJN VCNX IF CONCURRENT CHANNEL
  5512. VCN1 RJM HNG HANG PP
  5513. COMMON SPACE 4,10
  5514. ** COMMON DECKS.
  5515.  
  5516.  
  5517. EST$ EQU 1 SELECT EST PROCESSOR
  5518. IFP$ EQU 1 SELECT REMOTE INITIALIZATION
  5519. *CALL COMPGFP
  5520. TITLE TABLES.
  5521. TCHS SPACE 4,10
  5522. ** TCHS - CHANNEL TABLE.
  5523. *
  5524. * ENTRY = 1 WORD.
  5525. * INDEXED BY CHANNEL NUMBER.
  5526. *
  5527. *T, TCHS 1/ R,4/,1/ I,1/ D,5/ ST
  5528. * R SET IF CHANNEL IS REQUESTED.
  5529. * I SET IF CHANNEL BEING IDLED DOWN.
  5530. * D SET IF CHANNEL IS DOWN.
  5531. * ST 0 IF CHANNEL FREE.
  5532. * ST PP NUMBER IF CHANNEL BUSY.
  5533.  
  5534. TCHS EQU *
  5535. TCHSL EQU MXCH+1 CHANNEL NUMBER VALIDATION
  5536. TPPR SPACE 4
  5537. * TPPR - TABLE OF *MTR* PP REQUESTS.
  5538. * ENTRY = 1 WORD.
  5539. * INDEXED BY MONITOR FUNCTION CODE.
  5540. *
  5541. *T, 12/ ADDR
  5542.  
  5543.  
  5544. TPPR EQU TCHS+CTALL*5
  5545. ORG TPPR
  5546.  
  5547. DUP CPUM,1
  5548. CON HNG1
  5549.  
  5550. PPR HERE INSERT REQUEST PROCESSOR ADDRESSES
  5551. ORG TPPR+CPUM
  5552. TREA SPACE 4,10
  5553. ** TREA - TABLE OF REENTRY ADDRESSES.
  5554. * ENTRY = 1 WORD.
  5555. *
  5556. *T, TREA 12/ ADDR
  5557. * ADDR ADDRESS OF CURRENT PROCESSOR FOR THE PP.
  5558. * = 0, IF PP IS TURNED OFF.
  5559.  
  5560.  
  5561. TREA EQU *-1
  5562. CON DSD
  5563. DUP 30D-2,1 NO ENTRY FOR *MTR*, SPECIAL ONE FOR *DSD*
  5564. CON PPR
  5565. SPACE 4
  5566. ** CPRA - (P), (A0), (B0) FOR EXCHANGE PACKAGE.
  5567.  
  5568.  
  5569. CPRA BSS 5
  5570. SPACE 4
  5571. ** BEGIN TABLES OVERLAYED BY PRESET.
  5572.  
  5573.  
  5574. BEGIN BSSN CPRA+5
  5575. TSYD SPACE 4,10
  5576. ** TSYD - TABLE OF SYSTEM DEVICES.
  5577. * ENTRY = 1 WORD.
  5578. *
  5579. *T, TSYD 12/ EQ
  5580. * EQ NEXT SYSTEM DEVICE EST ORDINAL.
  5581.  
  5582.  
  5583. TSYD EQU *
  5584. BSSN MXSY
  5585. TSHS SPACE 4,10
  5586. ** TSHS - TABLE OF SHARED SYSTEM DEVICES.
  5587. * ENTRY = 1 WORD.
  5588. *
  5589. *T, TSHS 12/ V
  5590. * V 4, IF THIS SYSTEM DEVICE IS SHARED, ELSE 0.
  5591.  
  5592.  
  5593. TSHS EQU *
  5594. BSSN MXSY
  5595. TSYM SPACE 4,10
  5596. ** TSYM - TABLE OF SYSTEM DEVICE MST ADDRESSES.
  5597. * ENTRY = ONE WORD, ZERO WORD TERMINATES TABLE.
  5598. *
  5599. *T, TSYM 12/ MSTA
  5600. * MSTA MST ADDRESS OF SYSTEM EQUIPMENT IN *TSYD* WITH SAME
  5601. * RELATIVE TABLE POSITION.
  5602.  
  5603.  
  5604. TSYM EQU *
  5605. BSSN MXSY+1 FORCE ZERO TERMINATOR
  5606. TCHR SPACE 4,10
  5607. ** TCHR - TABLE OF PRIORITY SEEK REQUESTS.
  5608. * ENTRY = ONE WORD, INDEXED BY CHANNEL NUMBER.
  5609. *
  5610. *T, TCHR 12/ PPN
  5611. * PPN NUMBER OF PP WITH A PRIORITY REQUEST FOR THE CHANNEL.
  5612. * A PRIORITY REQUEST IS ONE TO PERFORM THE INITIAL
  5613. * POSITION ON A UNIT.
  5614.  
  5615.  
  5616. TCHR EQU *
  5617. BSSN MXNC+1
  5618. SPACE 4,10
  5619. ** THE FOLLOWING TABLES ARE PRESET TO ZERO.
  5620. TCMA SPACE 4,10
  5621. ** TCMA - TABLE OF CONTROL MODULE ACTIVITY.
  5622. * ENTRY = 1 WORD.
  5623. * INDEXED BY CONTROL MODULE NUMBER.
  5624. *
  5625. *T, TCMA 6/ CH,6/ AC
  5626. * CH CHANNEL NUMBER.
  5627. * AC ACTIVITY COUNT.
  5628.  
  5629.  
  5630. TCMA EQU *
  5631. BSSN 8D
  5632. TCMN SPACE 4,10
  5633. ** TCMN - TABLE OF DEVICE UNIT NUMBERS.
  5634. * ENTRY = 1 WORD.
  5635. * INDEXED BY PP NUMBER.
  5636. *
  5637. *T, TCMN 12/ UN
  5638. * UN DEVICE UNIT NUMBER.
  5639.  
  5640.  
  5641. TCMN EQU *-2
  5642. BSSN 20D-2 NO TABLE ENTRY FOR PP0, PP1
  5643. TPPI SPACE 4,10
  5644. ** TPPI - TABLE OF PPU INTERLOCK BITS.
  5645. * ENTRY = 1 WORD.
  5646. * INDEXED BY PPU NUMBER.
  5647. *
  5648. *T, TPPI 8/ IL,3/,1/ AC
  5649. * IL INTERLOCK HELD BY PPU.
  5650. * AC ACTIVITY BIT.
  5651.  
  5652.  
  5653. TPPI EQU *-2
  5654. BSSN 20D-2 NO TABLE ENTRY FOR PP0, PP1
  5655. TSCA SPACE 4,10
  5656. ** TSCA - TABLE OF SHARED DEVICE OUTSTANDING SEEKS.
  5657. * ENTRY = 1 WORD.
  5658. * INDEXED BY CHANNEL NUMBER.
  5659. *
  5660. *T, TSCA 12/ N
  5661. * N = NUMBER OF SEEK WAITS FOR SHARED DEVICES ON THIS CHANNEL.
  5662.  
  5663.  
  5664. TSCA BSSN MXNC+1
  5665. TSEK SPACE 4,10
  5666. ** TSEK - TABLE OF SEEK WAITS ON SHARED DEVICES.
  5667. * ENTRY = 1 WORD.
  5668. * INDEXED BY CHANNEL NUMBER.
  5669. *
  5670. *T, TSEK 12/ N
  5671. * N = NUMBER OF SEEK WAITS PROCESSED FOR THIS CHANNEL
  5672. * SINCE A TIME WHEN NO SHARED DEVICE ACTIVITY WAS
  5673. * PRESENT ON THE CHANNEL. WHEN THIS COUNTER REACHES
  5674. * A PREDEFINED CONSTANT FURTHER ASSIGNMENT OF THE
  5675. * CHANNEL FOR SHARED DEVICE ACCESS WILL BE DISALLOWED
  5676. * UNTIL ALL REQUESTS COMPLETE AND OTHER MACHINES ARE
  5677. * ALLOWED ACCESS TO THE CONTROLLER.
  5678.  
  5679.  
  5680. TSEK BSSN MXNC+1
  5681.  
  5682. EZOT EQU * END OF ZEROED OUT TABLES
  5683. TPMS SPACE 4,15
  5684. ** TPMS - TABLE OF MST ADDRESSES BY PP.
  5685. * ENTRY = 1 WORD.
  5686. * INDEXED BY PPU NUMBER.
  5687. *
  5688. *T, TPMS 12/ MSTA
  5689. * MSTA MST ADDRESS / 10.
  5690.  
  5691.  
  5692. TPMS EQU *-1
  5693. BSSN 20D-1 NO TABLE ENTRY FOR PP0
  5694.  
  5695. ERRNG 7776-* TABLE OVERFLOW
  5696. END BSSN
  5697. TITLE MONITOR PRESET.
  5698. PRS SPACE 4,10
  5699. PRS8 CRD CM
  5700. ADN 1
  5701. CRM OVLL,CM+4 LOAD NEXT PRESET OVERLAY
  5702.  
  5703. OVLL BSS 0 PRESET OVERLAY LOAD ADDRESS
  5704.  
  5705. ** PRS - PRESET TABLES AND CONSTANTS.
  5706.  
  5707.  
  5708. PRS BSS 0 ENTRY
  5709. LDN PPCP FETCH PP COMMUNICATION AREA POINTER
  5710. CRD CM
  5711. AOD CM+4 SET FIRST OUTPUT REGISTER ADDRESS
  5712. STD OF
  5713. SHN -3
  5714. LMC -0
  5715. RAM AMVC
  5716.  
  5717. * SET PP COMMUNICATION ADDRESSES.
  5718.  
  5719. PRS1 LDN PPUL SET PP STATUS
  5720. CRD CN
  5721. LDD CN SET MAXIMUM CHANNEL NUMBER + 1
  5722. ERRNZ NCHL-PPUL CODE DEPENDS ON VALUE
  5723. RAM VCNA
  5724. LDN 0
  5725. SBD CN
  5726. RAM VCNB
  5727. LDD CN+3 SET NUMBER OF CONCURRENT PPS
  5728. * ERRNZ CPPL-PPUL CODE DEPENDS ON VALUE
  5729. LPN 77
  5730. STD CN+3
  5731. NJN PRS2 IF CONCURRENT PPS PRESENT
  5732. ISTORE MTRB,(UJN MTR2) SKIP CPP PROCESSING
  5733. STM CMSA+1
  5734. ISTORE MTRE,(LDN NCTAL) WRITE ONLY NON CCH-S
  5735. PRS2 LDD CN+3
  5736. RAM MTRC
  5737. STM VCNC
  5738. LDD CN+2 SET NUMBER OF NON-CONCURRENT PPS
  5739. LMK 10D
  5740. ZJN PRS3 IF 10 PP-S
  5741. LDN 10D
  5742. PRS3 ADN 10D
  5743. RAM MTRA
  5744. LPN 77 SET TOTAL NUMBER OF PPS
  5745. ADD CN+3
  5746. STD NP
  5747. SHN PPXES SET END OF PP-S FOR STORAGE MOVE CHECK
  5748. ADN PPXE ALLOW FOR PSEUDO-PP
  5749. STM MSTA
  5750. LDN 1 SET PP 1
  5751. STD T1
  5752. PRS4 LDD T1 CHECK FOR UNAVAILABLE PPS
  5753. SHN 3
  5754. ADD OF
  5755. SBN 1 READ INPUT REGISTER
  5756. CRD CM
  5757. LDD CM CHECK PP STATUS
  5758. LMC 2R**
  5759. NJN PRS5 IF AVAILABLE
  5760. LDC MTR INHIBIT PROCESSING
  5761. STM TREA,T1
  5762. PRS5 AOD T1 ADVANCE PP NUMBER
  5763. LMD NP
  5764. NJN PRS4 IF NOT ALL PPS CHECKED
  5765.  
  5766. * RELOCATE CENTRAL MEMORY ADDRESS CONSTANTS.
  5767.  
  5768. LDK CMTP READ *CPUMTR* FWA
  5769. CRD CM
  5770. LDD CM+3
  5771. SHN 14
  5772. ADD CM+4
  5773. ADK CXBP READ *EXPACS* BLOCK POINTER
  5774. CRD T4
  5775. LDK PPCP READ EXTENDED PP COMMUNICATION BLOCK FWA
  5776. CRD CN
  5777. LDK SDAP READ STATISTICAL DATA AREA POINTER
  5778. CRD CS
  5779. LDC TSIC SET RELOCATION TABLE ADDRESS
  5780. RJM SIC RELOCATE INSTRUCTIONS
  5781.  
  5782. ERRPL CPRA-* CODE DESTROYED READING EXCHANGE PACKAGE
  5783.  
  5784. TLDC /EXPACS/MXP+0,XBP READ EXCHANGE PACKAGE
  5785. CRM CPRA,ON
  5786. LDC 210B SET *B0* (MICROCODE REQUIRES THIS VALUE)
  5787. STM CPRA+4
  5788.  
  5789. * LOAD *4MZ* AND CONTINUE PRESET.
  5790.  
  5791. LDC RPLP
  5792. CRD CM
  5793. LDD CM
  5794. SHN 14
  5795. ADD CM+1
  5796. LJM PRS8 OVERLAY WITH NEXT PRESET OVERLAY
  5797. SPACE 4,10
  5798. ** INSTRUCTION RELOCATION EQUIVALENCES.
  5799.  
  5800.  
  5801. CMT EQU CM+3 *CPUMTR* FWA
  5802. XBP EQU T4+3 *CPUMTR* *EXPACS* BLOCK POINTER
  5803. PPX EQU CN+0 EXTENDED PP CONTROL BLOCK POINTER
  5804. SDA EQU CS+0 STATISTICAL DATA AREA POINTER
  5805. SPACE 4,10
  5806. ** COMMON DECKS.
  5807.  
  5808.  
  5809. *CALL COMPSIC
  5810. TSIC SPACE 4,10
  5811. ** TSIC - INSTRUCTION RELOCATION TABLE.
  5812.  
  5813.  
  5814. TSIC BSS 0
  5815. LIST D
  5816. SIC HERE
  5817. CON 0 TERMINATE ENTRIES
  5818. LIST *
  5819.  
  5820. ERRNG 7777-*-5
  5821. 4MZ TTL 4MZ - MTR PRESET (PART 2).
  5822. 4MZ TITLE MONITOR PRESET.
  5823. IDENT 4MZ,FMZ
  5824. *COMMENT MTR - PRESET (PART 2).
  5825. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  5826. 4MZ SPACE 4,10
  5827. *** 4MZ - MTR PRESET (PART 2).
  5828. *
  5829. * TO FREE SPACE IN *MTR*, SEVERAL PRESET OVERLAYS HAVE BEEN
  5830. * DEFINED. THESE OVERLAYS ARE -
  5831. * *4MZ*, *4MY*, *4MX*, *4MW*, *4MV* AND *4MU*.
  5832. * *STL* LOADS THESE OVERLAYS INTO THE RPL BEFORE RELEASING
  5833. * *MTR*. ONCE *MTR* HAS FINISHED PRESET, *STL* LOADS THE
  5834. * DEADSTART RPL OVER THESE OVERLAYS. *STL* IS PREVENTED FROM
  5835. * OVERWRITING THE PRESET OVERLAYS BEFORE *MTR* HAS READ THEM
  5836. * BY THE FOLLOWING SCHEME -
  5837. * 1) AFTER RELEASING *MTR*, *STL* INITIALIZES *DIO*
  5838. * RESIDENT AND ATTEMPTS TO READ THE NEXT TAPE BLOCK.
  5839. * 2) THE TAPE BLOCK CANNOT BE READ UNTIL *DIO* FINISHES
  5840. * INITIALIZING ITSELF, WHICH INCLUDES REQUESTING A CHANNEL
  5841. * WITH A *RCHM* MONITOR FUNCTION.
  5842. * 3) THE *RCHM* FUNCTION CANNOT COMPLETE UNTIL *MTR* HAS
  5843. * READ ALL PRESET OVERLAYS AND BEGUN EXECUTING.
  5844.  
  5845.  
  5846. ORG OVLL
  5847.  
  5848.  
  5849. FMZ BSS 0 ENTRY
  5850. LDN DFPP SET FWA-3 OF DAYFILE POINTERS FOR *CDBM*
  5851. CRD CM
  5852. LDD CM
  5853. SHN 14
  5854. ADD CM+1
  5855. SBN 3
  5856. STM CDBA+1
  5857. SHN -14
  5858. RAM CDBA
  5859. LDN ECRL CHECK USER ECS ENABLED
  5860. CRD CM
  5861. LDD CM+1 CHECK USER EXTENDED MEMORY SIZE
  5862. SBD CM+4
  5863. NJN FMZ0 IF USER EM DEFINED
  5864. SOM RSTA
  5865. LDC HNG1 DISABLE *RCXM* FUNCTION
  5866. STM TPPR+RCXM
  5867. FMZ0 LDK MABL
  5868. CRD CN
  5869. ADN CHTP-MABL READ CHANNEL TABLE POINTER
  5870. CRD CM
  5871.  
  5872. * PRESET CHANNEL TABLE.
  5873.  
  5874. LDD CM+3 SET CHANNEL STATUS TABLE ADDRESS
  5875. STM MTRF
  5876. ADN CTALL SET CHANNEL ASSIGNMENT TABLE ADDRESS
  5877. STM SEQB
  5878. STM GCEA
  5879. SHN -14
  5880. STD T0 SAVE OVERFLOW, IF ANY
  5881. LDD CM+2
  5882. RAM MTRF-1
  5883. ADD T0
  5884. STM SEQB-1
  5885. STM GCEA-1
  5886. LDN CTALL READ CHANNEL TABLE
  5887. STD T1
  5888. LDD CM+2
  5889. SHN 14
  5890. LMD CM+3
  5891. CRM TCHS,T1
  5892.  
  5893. * COMPLETE CHANNEL TABLE PRESET.
  5894.  
  5895. LDK MXCH
  5896. STD T1
  5897. FMZ1 LDM TCHS,T1 PRESERVE DOWN STATUS
  5898. LPN 40
  5899. STM TCHS,T1
  5900. SOD T1
  5901. PJN FMZ1 IF MORE CHANNELS
  5902. AOM TCHS+CHDS ASSIGN DISPLAY CHANNEL TO *DSD*
  5903.  
  5904. * ADJUST FOR MACHINE SIZE, PP SPEED AND MEMORY CLEARING.
  5905.  
  5906. LDM FMZA,CN+4 SET *RTCL* BASED ON PP SPEED
  5907. STM TIMA
  5908. LDD CN+2 SAVE MACHINE SIZE
  5909. STM PCBA
  5910. LDD CN+3
  5911. STM PCBB
  5912. LDK SSTL CHECK FOR MEMORY CLEARING ENABLED
  5913. CRD CM
  5914. LDD CM
  5915. SHN 21-12
  5916. PJN FMZ2 IF MEMORY CLEARING ENABLED
  5917. ISTORE RSTC,(UJN RST20) DISABLE MEMORY CLEARING
  5918.  
  5919. * PRESET SECDED PROCESSING.
  5920.  
  5921. FMZ2 LDD SC SAVE ADDRESS OF UID TABLE
  5922. CRD CM
  5923. LDD CM
  5924. LPN 77
  5925. RAM BISC-1
  5926. LDD CM+1
  5927. STM BISC
  5928. LDD CN+1
  5929. SHN -11
  5930. LMN 7
  5931. ZJN FMZ4 IF CYBER 176
  5932. ISTORE BISE,(UJN BIS6) DISABLE CYBER 176 PROCESSING
  5933.  
  5934. * MOVE SECDED PROCESSING TABLE FOR NON-176 INTO *BIS*.
  5935.  
  5936. LDN FMZBL SET LENGTH TO MOVE
  5937. STD T1
  5938. FMZ3 LDM FMZB-1,T1
  5939. STM BISF-1,T1
  5940. SOD T1
  5941. NJN FMZ3 IF NOT DONE MOVING
  5942.  
  5943. * LOAD *4MY* AND CONTINUE PRESET.
  5944.  
  5945. FMZ4 LDK RPLP
  5946. CRD CM
  5947. LDD CM
  5948. SHN 14
  5949. ADD CM+1
  5950. CRD CM
  5951. ADD CM+4
  5952. LJM PRS8 LOAD NEXT PRESET OVERLAY
  5953.  
  5954.  
  5955. FMZA BSS 0 CYCLES UNTIL *RTCL* WRITTEN
  5956. LOC 0
  5957. CON -MLSC+35 1X PP SPEED
  5958. CON -MLSC+17 2X PP SPEED
  5959. CON -MLSC+10 4X PP SPEED
  5960. LOC *O
  5961.  
  5962. FMZB BSS 0 C170 CM ID INFORMATION
  5963. VFD 12/6000,1/0,5/CSEW,6/0
  5964. VFD 12/77,1/0,5/CMAW,6/4
  5965. VFD 12/7400,1/1,5/SYNW,6/-10
  5966. VFD 12/360,1/0,5/SYNW,6/4
  5967. CON 0 C170 ID BUILD TERMINATOR
  5968. CON FCCL+SECD
  5969. CON 0 TERMINATOR FOR C170 CLEARING FUNCTIONS
  5970. CON 0
  5971. FMZBL EQU *-FMZB TABLE LENGTH
  5972.  
  5973. ERRNZ FMZBL-BISFL TABLE LENGTH ERROR
  5974. SPACE 4,10
  5975. ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
  5976. 4MY TTL 4MY - MTR PRESET (PART 3).
  5977. 4MY TITLE MONITOR PRESET.
  5978. IDENT 4MY,FMY
  5979. *COMMENT MTR - PRESET (PART 3).
  5980. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  5981. 4MY SPACE 4,10
  5982. *** 4MY - MTR PRESET (PART 3).
  5983. *
  5984. * ENTRY (CN - CN+4) = MABL.
  5985.  
  5986.  
  5987. ORG OVLL
  5988.  
  5989.  
  5990. FMY BSS 0 ENTRY
  5991.  
  5992. * PRESET CYBER 180 HARDWARE ERROR PROCESSING.
  5993.  
  5994. LDD CN+1
  5995. SHN 21-13
  5996. MJP FMY2 IF LARGE CENTRAL MEMORY NOT PRESENT
  5997. ISTORE CPRF,(ZJN CPR9) ENABLE *CPUMTR* CONTROL OF *RTCL*
  5998. AOM CDBB READ *FLSW* + 1
  5999. AOM DCRA
  6000. ISTORE CCPC,(SHN 6) CHANGE TO CME CODE
  6001. ISTORE CRQA,(ZJN PCB3) CHANGE TO CME PROCESSOR
  6002. LDC UJNI-ZJNI PREVENT CPU SELECTION FOR ECS
  6003. RAM RSTB
  6004. LDD CN+1 CHECK FOR CYBER 170 S/C REGISTER
  6005. SHN 21-6
  6006. PJP FMY2 IF CYBER 170-865/875
  6007. LDK EIBP READ *EICB* POINTER
  6008. CRD CM
  6009. LDD CM
  6010. SHN 21-12
  6011. PJP FMY1 IF NOT DUAL CPU MACHINE WITH CACHE
  6012. LDC LDMI+0 ENABLE CPU 0 CHECK
  6013. STM CPRC
  6014. LDK CMTP SET *CPUMTR* BASE ADDRESS
  6015. CRD T1
  6016. LDD T1+3
  6017. SHN 14
  6018. LMD T1+4
  6019. RAM CPRG+1
  6020. STM PCMA+1
  6021. SHN -14
  6022. RAM CPRG
  6023. STM PCMA
  6024. LDM FMYA,CN+4 SET COUNTER FOR 25 MICROSECOND DELAY
  6025. RAM CPRE
  6026. LDM FMYB,CN+4 SET COUNTER FOR 125 MICROSECOND DELAY
  6027. STM CPRH+1
  6028. SCF *,MR GET MAINTENANCE CHANNEL
  6029. DCN MR+40
  6030. FNC MRDC,MR KILL DEADMAN TIMER
  6031. DCN MR+40
  6032. LDC STII+T3+1S15 (STIL INSTRUCTION)
  6033. ACN MR
  6034. OAN MR
  6035. LDN 1
  6036. IAM FMYD,MR READ *STIL* TO MEMORY
  6037. DCN MR+40 ENSURE MAINTENANCE CHANNEL INACTIVE
  6038. CCF *,MR RELEASE CHANNEL
  6039. LDC FMYC SET UP INSTRUCTION TABLE ADDRESS
  6040. STD T2
  6041. FMY0 LDI T2 ADDRESS OF 16-BIT INSTRUCTION
  6042. ZJN FMY1 IF FINISHED
  6043. STD T3
  6044. LDI T3
  6045. LMC 1S15 CONVERT TO 16-BIT INSTRUCTION
  6046. FMYD STI T3 SET LONG INSTRUCTIONS
  6047. * STIL T3 SET LONG INSTRUCTIONS
  6048. AOD T2
  6049. UJN FMY0 PROCESS NEXT INSTRUCTION
  6050.  
  6051. FMY1 LDD CM+3
  6052. SHN 14
  6053. LMD CM+4
  6054. ADN DSCM+3 READ DFT/OS BUFFER POINTER
  6055. CRD CM
  6056. LDD CM+2 SAVE ADDRESS OF *DFT* CONTROL WORD
  6057. SHN 14
  6058. LMD CM+3
  6059. SHN -4
  6060. SHN 6
  6061. LMD CM
  6062. STM PHEA+1
  6063. SHN -14
  6064. RAM PHEA
  6065. LPN 37
  6066. SHN 14 READ NOS REQUEST AREA POINTER
  6067. ADM PHEA+1
  6068. ADN DFRQ
  6069. CRD CM
  6070. LDD CM+2 SAVE ADDRESS OF NOS REQUEST HEADER
  6071. SHN 14
  6072. LMD CM+3
  6073. SHN -4
  6074. SHN 6
  6075. LMD CM
  6076. STM PHEF+1
  6077. SHN -14
  6078. RAM PHEF
  6079.  
  6080. * LOAD *4MX* AND CONTINUE PRESET.
  6081.  
  6082. FMY2 LDK RPLP
  6083. CRD CM
  6084. LDD CM
  6085. SHN 14
  6086. ADD CM+1
  6087. CRD CM
  6088. ADD CM+4
  6089. CRD CM
  6090. ADD CM+4
  6091. LJM PRS8 LOAD NEXT PRESET OVERLAY
  6092.  
  6093.  
  6094. FMYA CON 14,30,61 COUNTERS FOR 25 MICROSECOND DELAY
  6095. FMYB CON 75,173,370 COUNTERS FOR 125 MICROSECOND DELAY
  6096. FMYC LIST16 LIST OF LOCATIONS OF 16-BIT INSTRUCTIONS
  6097. SPACE 4,10
  6098. ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
  6099. 4MX TTL 4MX - MTR PRESET (PART 4).
  6100. 4MX TITLE MONITOR PRESET.
  6101. IDENT 4MX,OMU
  6102. *COMMENT MTR - PRESET (PART 4).
  6103. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  6104. 4MX SPACE 4,10
  6105. *** 4MX - MTR PRESET (PART 4).
  6106. *
  6107. * ENTRY (CN - CN+4) = MABL.
  6108.  
  6109.  
  6110. ORG OVLL
  6111.  
  6112.  
  6113. OMU BSS 0 ENTRY
  6114.  
  6115. * PRESET CYBER 70, 170 HARDWARE ERROR PROCESSING.
  6116.  
  6117. LDD CN+1
  6118. SHN 21-13
  6119. MJN OMU1 IF LARGE CENTRAL MEMORY NOT PRESENT
  6120. SHN 21-6-21+13
  6121. PJN OMU2 IF CYBER 865/875
  6122. LJM OMU7 LOAD NEXT OVERLAY
  6123.  
  6124. OMU1 SHN 21-6-21+13
  6125. MJN OMU3 IF NOT CYBER 170 S/C REGISTER
  6126. OMU2 LDD HN CHANGE TO TIME PROCESSING
  6127. * LDC ZJNI-UJNI
  6128. ERRNZ 100-ZJNI+UJNI (ADJUST IF INSTRUCTIONS CHANGE)
  6129. RAM PHEB
  6130. LDD CN+1
  6131. SHN -11
  6132. LMN 7
  6133. NJN OMU4 IF NOT CYBER 176
  6134. AOM PSEA
  6135. LDN PSNI
  6136. STM PHEC
  6137. STM PSEB
  6138. UJN OMU4 LOAD CYBER 170 PROCESSER
  6139.  
  6140. OMU3 SHN 21-7-21+6+22
  6141. MJN OMU6 IF NOT CYBER 70 INTERLOCK REGISTER
  6142. SOM OMUC CHANGE TO INTERLOCK REGISTER
  6143. SOM ODWA
  6144. SOM ODWB
  6145. LDN SSTL GET SUB-SYSTEM STATUS
  6146. CRD CM
  6147. LDD CM+3 CHECK SIMULATED SCR
  6148. SHN 21-3
  6149. PJN OMU4 IF SIMULATED SCR IS SELECTED
  6150. SOM AVTA NO TIME CALL FOR C70 NON-SIMULATION
  6151. LDC FCTB TEST BIT 0 FUNCTION
  6152. STM OMUB
  6153.  
  6154. * MOVE CYBER 70, 170, 700 SERIES, 865/875 BLOCK INTO *PHE*.
  6155.  
  6156. OMU4 LDN OMUAL LENGTH TO MOVE
  6157. STD T1
  6158. ISTORE PHEG,(PSN) DISABLE *DFT* CHECK IF NOT CYBER 180
  6159. OMU5 LDM OMUA-1,T1
  6160. STM PHEA-1,T1
  6161. SOD T1
  6162. NJN OMU5 IF MOVE NOT DONE
  6163. UJN OMU7 CONTINUE
  6164.  
  6165. OMU6 LDC UJNI+2 DISABLE *1MB* CALL
  6166. STM MTRG
  6167. STM MSTC
  6168.  
  6169. * LOAD *4MW* AND CONTINUE PRESET.
  6170.  
  6171. OMU7 LDK RPLP
  6172. CRD CM
  6173. LDD CM
  6174. SHN 14
  6175. ADD CM+1
  6176. CRD CM
  6177. ADD CM+4
  6178. CRD CM
  6179. ADD CM+4
  6180. CRD CM
  6181. ADD CM+4
  6182. LJM PRS8 LOAD NEXT PRESET OVERLAY
  6183.  
  6184. OMUA BSS 0 CYBER 170 ERROR PROCESSOR
  6185. LIST D
  6186. PHEE HERE
  6187. LIST *
  6188. OMUAL EQU *-OMUA
  6189. OMUB EQU OMUA+1
  6190. OMUC EQU OMUA+2
  6191. SPACE 4,10
  6192. ERRNG PHE3-PHEA-OMUAL OVERFLOW OF *PHE*
  6193. ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
  6194. 4MW TTL 4MW - MTR PRESET (PART 5).
  6195. 4MW TITLE MONITOR PRESET.
  6196. IDENT 4MW,SCC
  6197. *COMMENT MTR - PRESET (PART 5).
  6198. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  6199. 4MW SPACE 4,10
  6200. ** 4MW - MTR PRESET (PART 5).
  6201.  
  6202.  
  6203. ORG OVLL
  6204.  
  6205.  
  6206. SCC BSS 0 ENTRY
  6207. LDK MCTP GET MEMORY CONTROL TABLE POINTER
  6208. CRD CN
  6209. LDD CN+1 SET MCT BASE ADDRESS
  6210. STM STAA
  6211. LDD CN
  6212. RAM STAA-1
  6213. LDD CN+2 SET NUMBER OF MCT ENTRIES
  6214. STM UFLA
  6215. ERRNZ MCTP-PCPP CODE DEPENDS ON VALUE
  6216. LDD CN+3
  6217. SHN 14 FORM BASE PCPA ADDRESS
  6218. LMD CN+4
  6219. SBK CPAS
  6220. STM SCPA SET ADDRESS - *CPAS*
  6221. SHN -14
  6222. RAM SCPA-1
  6223. LDN NCPL READ NUMBER OF CONTROL POINTS
  6224. CRD CM
  6225. AOD CM+1 SET SYSTEM CONTROL POINT
  6226. STD NC
  6227. SBN 1 SET LAST CONTROL POINT
  6228. RAM RSTE
  6229. LPN 77
  6230. RAM PVEA
  6231. LDD NC SET ADDRESS OF *MS2W* OF SYSTEM CP
  6232. SHN 7
  6233. RAM HGMB
  6234. STM HNGD
  6235. STM HLTA
  6236. RJM IFP INITIALIZE *COMPGFP*
  6237. LDN ACPL READ CPU 0 STATUS
  6238. CRD CM
  6239. LDD CM CHECK CPU 0
  6240. SHN 6
  6241. PJN SCC3 IF AVAILABLE
  6242. LDD HN
  6243. * LDC 100 (SAVES 1 BYTE)
  6244. RAM CPRA+3 SET CPU - 1
  6245. AOM MXN
  6246. AOM CCPB
  6247. SOM CCSB
  6248. SCC1 LDC SCCA
  6249. STD T1 SAVE TABLE ADDRESS
  6250. SCC2 LDI T1
  6251. ZJN SCC4 IF NO MORE INSTRUCTIONS TO MODIFY
  6252. STD T2
  6253. AOD T1
  6254. LDI T1 GET NEW INSTRUCTION VALUE
  6255. STI T2 STORE ON TOP OF OLD INSTRUCTION
  6256. AOD T1
  6257. UJN SCC2 MODIFY THE NEXT INSTRUCTION
  6258.  
  6259. SCC3 LDN ACPL+1 READ CPU 1 STATUS
  6260. CRD CM
  6261. LDD CM CHECK CPU 1
  6262. SHN 6
  6263. MJN SCC1 IF NOT AVAILABLE
  6264.  
  6265. * LOAD *4MV* AND CONTINUE PRESET.
  6266.  
  6267. SCC4 LDK RPLP
  6268. CRD CM
  6269. LDD CM
  6270. SHN 14
  6271. LMD CM+1
  6272. CRD CM
  6273. ADD CM+4
  6274. CRD CM
  6275. ADD CM+4
  6276. CRD CM
  6277. ADD CM+4
  6278. CRD CM
  6279. ADD CM+4
  6280. LJM PRS8 LOAD NEXT PRESET OVERLAY
  6281.  
  6282.  
  6283. * TABLE OF INSTRUCTION MODIFICATIONS FOR SINGLE CPU OPERATION.
  6284.  
  6285. SCCA BSS 0
  6286.  
  6287. CON AVCB
  6288. LOC AVCB
  6289. UJN AVC5 SKIP PROCESSING FOR OTHER CPU
  6290. LOC *O
  6291.  
  6292. CON CCPD
  6293. LOC CCPD
  6294. UJN CCPX RETURN
  6295. LOC *O
  6296.  
  6297. CON CCSA
  6298. LOC CCSA
  6299. LMN 0
  6300. LOC *O
  6301.  
  6302. CON CPRB
  6303. LOC CPRB
  6304. UJN CPR1
  6305. LOC *O
  6306.  
  6307. CON CX1
  6308. LOC CX1
  6309. UJN AVCX RETURN
  6310. LOC *O
  6311.  
  6312. CON MFLA
  6313. LOC MFLA
  6314. CON LDNI+MFLF
  6315. LOC *O
  6316.  
  6317. CON MFLA+1
  6318. LOC MFLA+1
  6319. CON RJMI
  6320. LOC *O
  6321.  
  6322. CON FTNA
  6323. LOC FTNA
  6324. UJN FTN4 AVOID CPU SELECTION
  6325. LOC *O
  6326.  
  6327. CON RCPA
  6328. LOC RCPA
  6329. UJN RCP2 AVOID CPU SELECTION
  6330. LOC *O
  6331.  
  6332. CON RSTB
  6333. LOC RSTB
  6334. UJN RST7 AVOID CPU SELECTION
  6335. LOC *O
  6336.  
  6337. CON 0 END OF TABLE
  6338. SPACE 4,10
  6339. IFP HERE *COMPGFP* INITIALIZATION CODE
  6340. SPACE 4,10
  6341. ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
  6342. 4MV TTL 4MV - MTR PRESET (PART 6).
  6343. 4MV TITLE MONITOR PRESET.
  6344. IDENT 4MV,THU
  6345. *COMMENT MTR - PRESET (PART 6).
  6346. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  6347. 4MV SPACE 4,10
  6348. ** 4MV - MTR PRESET (PART 6).
  6349.  
  6350.  
  6351. ORG OVLL
  6352.  
  6353.  
  6354. THU BSS 0 ENTRY
  6355.  
  6356. * SET MULTI-MAINFRAME PROCESSING.
  6357.  
  6358. LDK MMFL CHECK MMF ENVIRONMENT
  6359. CRD CS
  6360. ADN EFRL-MMFL CHECK ERROR IN PRESET
  6361. CRD CN
  6362. LDD CN+4
  6363. NJN THU1 IF ERROR DETECTED IN *CPUMTR* PRESET
  6364. LDD CS+1
  6365. LPC 777
  6366. NJN THU2 IF MMF PRESENT
  6367. THU1 ISTORE AVCC,(UJN AVCD) DISABLE MULTI-MAINFRAME PROCESSING
  6368. LCN ARMF-ARTF
  6369. RAM AVCD
  6370. LDD CS+1
  6371. NJN THU2 IF INDEPENDENT SHARED DEVICES PRESENT
  6372. LDC NSDJ DISABLE SHARED DEVICE CODE
  6373. RJM MMI MODIFY *MTR* INSTRUCTIONS
  6374. LDC LDNI+10
  6375. STM RRXA
  6376. THU2 LDK CFGL
  6377. CRD CM
  6378. LDD CM+3
  6379. SHN 21-11
  6380. MJN THU3 IF ISD SUBSYSTEM PRESENT
  6381. LDC N8SJ DISABLE ISD SUBSYSTEM CODE
  6382. RJM MMI MODIFY *MTR* INSTRUCTIONS
  6383. THU3 LDC RTCL INITIALIZE REAL-TIME CLOCK
  6384. CRD TM
  6385. LDD TM+4 INITIALIZE CYCLE TIME
  6386. STD CY
  6387.  
  6388. * LOAD *4MU* AND CONTINUE PRESET.
  6389.  
  6390. LDK RPLP
  6391. CRD CM
  6392. LDD CM
  6393. SHN 14
  6394. LMD CM+1
  6395. CRD CM
  6396. ADD CM+4
  6397. CRD CM
  6398. ADD CM+4
  6399. CRD CM
  6400. ADD CM+4
  6401. CRD CM
  6402. ADD CM+4
  6403. CRD CM
  6404. ADD CM+4
  6405. LJM PRS8 LOAD NEXT PRESET OVERLAY
  6406. NSDJ SPACE 4,10
  6407. ** NSDJ - TABLE OF NO SHARED DEVICE JUMP INSTRUCTIONS.
  6408. *
  6409. *T, NSDJ 12/ ADDRESS,12/ *UJN* INSTRUCTION
  6410.  
  6411.  
  6412. NSDJ BSS 0
  6413. NSDJ HERE
  6414. CON 0
  6415. N8SJ SPACE 4,10
  6416. ** N8SJ - TABLE OF ISD SUBSYSTEM JUMP INSTRUCTIONS.
  6417. *
  6418. *T, N8SJ 12/ ADDRESS,12/ *UJN* INSTRUCTION
  6419.  
  6420.  
  6421. N8SJ BSS 0
  6422. N8SJ HERE
  6423. CON 0
  6424. MMI SPACE 4,10
  6425. ** MMI - MODIFY *MTR* INSTRUCTIONS.
  6426. *
  6427. * ENTRY (A) = ADDRESS OF MODIFICATION TABLE.
  6428. *
  6429. * EXIT INSTRUCTIONS MODIFIED.
  6430. *
  6431. * USES T1, T2.
  6432.  
  6433.  
  6434. MMI SUBR ENTRY/EXIT
  6435. STD T1 SAVE TABLE ADDRESS
  6436. MMI1 LDI T1
  6437. ZJN MMIX IF NO MORE INSTRUCTIONS TO MODIFY
  6438. STD T2
  6439. AOD T1
  6440. LDI T1 GET NEW INSTRUCTION VALUE
  6441. STI T2 STORE ON TOP OF OLD INSTRUCTION
  6442. AOD T1
  6443. UJN MMI1 MODIFY THE NEXT INSTRUCTION
  6444. SPACE 4,10
  6445. ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
  6446. 4MU TTL 4MU - MTR PRESET (PART 7).
  6447. 4MU TITLE MONITOR PRESET.
  6448. IDENT 4MU,FMV
  6449. *COMMENT MTR - PRESET (PART 7).
  6450. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  6451. 4MU SPACE 4,10
  6452. ** 4MU - MTR PRESET (PART 7).
  6453.  
  6454.  
  6455. ORG OVLL
  6456.  
  6457.  
  6458. FMV BSS 0 ENTRY
  6459. LDK ESTP READ EST POINTER
  6460. CRD OR
  6461. ADK EJTP-ESTP READ EJT POINTER
  6462. CRD CM
  6463. SOD OR+2 SET EST SIZE
  6464. STM SEQA
  6465. LDD CM+1 SET EJT FWA + *SCHE* OFFSET
  6466. RAM RCEB+1
  6467. SHN -14
  6468. ADD CM
  6469. RAM RCEB
  6470. LDK NOPE INITIALIZE EST ORDINAL FOR SEARCH
  6471. STD OR+1
  6472.  
  6473. * BUILD MASS STORAGE TABLES.
  6474.  
  6475. LDN 0
  6476. STD T1 INITIALIZE SYSTEM DEVICE COUNT
  6477. LDC TSYM SET SYSTEM MST TABLE ADDRESS
  6478. STD T2
  6479. ERRNG *-TSYM-MXSY TABLE OVERLAYS CODE
  6480. FMV1 SFA EST,OR+1 READ EST ENTRY
  6481. ADK EQDE
  6482. CRD CS
  6483. LDD CS
  6484. SHN 0-12
  6485. LMN 3
  6486. NJN FMV3 IF NOT SYSTEM DEVICE
  6487. AOD T1
  6488. SHN -1
  6489. ZJN FMV2 IF NOT MORE THAN 1 SYSTEM DEVICE
  6490. LDC LDCI ENABLE SYSTEM DEVICE SELECTION CODE
  6491. STM RCEA
  6492. FMV2 LDD OR+1 SET EST ORDINAL
  6493. STM TSYD-TSYM,T2
  6494. LDD CS SET SHARED FLAG
  6495. SHN 2-11
  6496. LPN 4
  6497. STM TSHS-TSYM,T2
  6498. LDD CS+4 SET MST ADDRESS
  6499. STI T2
  6500. AOD T2
  6501. LDD CS+3
  6502. LMC 2RDA
  6503. FMV3 NJN FMV4 IF NOT 33502
  6504. ISTORE RSYA,(LPN 37) ENABLE 33502 SYSTEM PROCESSING
  6505. ISTORE RSYB,(LMD CS+1)
  6506. FMV4 AOD OR+1
  6507. LMD OR+3 LAST MASS STORAGE ORDINAL + 1
  6508. NJP FMV1 IF NOT END OF EQUIPMENT
  6509. IAN 14
  6510. STD MS
  6511. LDC EZOT
  6512. STD T1
  6513. LDN DSCL SET UP *MTR* ACTIVE STATUS
  6514. CRD CM
  6515. STD CM+2
  6516. IFPL EZOT-*,1
  6517. BSSZ EZOT-* INSURE CODE TO ZERO TABLE IS BEYOND TABLE
  6518. FMV5 LDN 0 CLEAR TABLES
  6519. STI T2
  6520. AOD T2
  6521. LMD T1
  6522. NJN FMV5 IF NOT END OF TABLES
  6523. LDN DSCL SET *MTR* ACTIVE STATUS
  6524. CWD CM
  6525. LJM MTR4 ENTER MAIN LOOP
  6526. SPACE 4,10
  6527. ERRNG 7777-*-10D OVERFLOW ON OVERLAY LOAD
  6528. TTL MTR - PP MONITOR.
  6529. SPACE 4,10
  6530. END