User Tools

Site Tools


cdc:nos2.source:opl871:lfm

Table of Contents

LFM

Table Of Contents

  • [00010] LFM - LOCAL FILE MANAGER.
  • [00012] LOCAL FILE MANAGER.
  • [00142] NOTE - MONITOR FUNCTION *HNGM* WILL BE ISSUED IF *LFM*
  • [00219] OVERLAY COMMUNICATION MACROS.
  • [00221] OVERLAY - GENERATE OVERLAY CONSTANTS.
  • [00246] ENTRY - DEFINE OVERLAY ENTRY POINT.
  • [00261] CSR - DEFINE 24 BIT QUANTITY FROM 18 BIT EQUATE.
  • [00282] TBLM - GENERATE LIST OF MASS STORAGE DEVICE MNEMONICS.
  • [00291] MAIN PROGRAM.
  • [00293] MAIN PROGRAM.
  • [00319] DPP - DROP PP.
  • [00332] RESIDENT SUBROUTINES.
  • [00334] CKE - CHECK ERROR PROCESSING.
  • [00368] CLF - CREATE LOCAL FILE.
  • [00394] CPA - COMPUTE PARAMETER ADDRESS.
  • [00410] DEQ - DROP EQUIPMENT.
  • [00442] DRF - DROP FILE.
  • [00463] EER - EVALUATE MASS STORAGE ERROR RETURN.
  • [00492] EFN - ENTER FILE NAME.
  • [00547] ABT - ABORT JOB.
  • [00560] CFL - CHECK FET LENGTH.
  • [00574] ERR - PROCESS ERROR.
  • [00592] RCL - RECALL *LFM*.
  • [00652] RSP - RECALL STACK ENTRY PROCESSOR.
  • [00675] SFS - SET FILE STATUS.
  • [00709] SIF - SEARCH FOR AND INTERLOCK FILE.
  • [00732] SNB - SET FILE(S) NOT BUSY.
  • [00769] SPB - SET/CLEAR PAUSE BIT.
  • [00794] SVF - SEARCH FOR VSN ENTRY FILE.
  • [00824] UPP - UPDATE PRIMARY FILE POINTERS.
  • [00887] SUBROUTINES WHICH MAY BE OVERLAID.
  • [00889] PRS - PRESET PROGRAM.
  • [01008] CRX - CHECK RESEX CALL.
  • [01037] FCN - DEFINE FUNCTION PROCESSOR.
  • [01060] TFCN - TABLE OF FUNCTION CODE PROCESSORS.
  • [01106] RESIDENT PROCESSORS.
  • [01355] RNI - RENAME INITIALIZATION.
  • [01362] RQI - EQUIPMENT REQUEST INITIALIZATION.
  • [01381] LBI - LABEL REQUEST INITIALIZATION.
  • [01389] RESIDENT PROCESSOR SUBROUTINES.
  • [01391] CPF - COMPARE FILE NAMES.
  • [01414] CRF - CREATE RELOCATABLE ROUTINE FNT.
  • [01483] SSA - SET SYSTEM FILE FNT ENTRY ADDRESS.
  • [01519] ERP - ERROR PPROCESSOR.
  • [02224] TUW - TRANSFER UDT WORDS.
  • [02943] TAFT - TABLE OF FILE TYPES.
  • [02959] TAFM - TABLE OF FILE MODES.
  • [02985] TAPK - TABLE OF PARAMETER BLOCK KEYS.
  • [03004] TDEN - TABLE OF DENSITY CONVERSIONS.
  • [03017] TMDS - TABLE OF DIRECT ACCESS FILE VALIDATION SIZES.
  • [03030] SUBROUTINES.
  • [03032] CDP - CHECK FOR DMP= PROGRAM.
  • [03060] CFT - CHECK FILE TYPE.
  • [03101] TPFT - TABLE OF PROPAGATED FILE TYPES.
  • [03108] CTE - CHECK FOR TAPE EQUIPMENT.
  • [03135] TAI - TRANSFER ADDITIONAL INFORMATION FROM UDT.
  • [03753] ASF - ASSIGN NON-TAPE FILE.
  • [03913] CDT - CHECK DEVICE TYPE.
  • [03937] TBLM - DEFINE MACRO TO PRODUCE *CDTA* TABLE.
  • [03958] SUBROUTINES.
  • [03960] CEA - CHECK EQUIPMENT ACCESS LEVELS.
  • [03985] CEN - CHECK EST ORDINAL.
  • [04051] COE - CLEAR OR RESET OPERATOR ASSIGNED EQUIPMENT.
  • [04081] CSJ - CHECK FOR SSJ= ENTRY POINT.
  • [04097] CTE - CHECK FOR TAPE EQUIPMENT.
  • [04123] GVA - GET AND VALIDATE ACCESS LEVEL.
  • [04191] RAW - READ ACCESS CONTROL WORD.
  • [04219] REA - REQUEST EQUIPMENT ASSIGNMENT.
  • [04259] ROA - REQUEST OPERATOR ASSIGNMENT.
  • [04393] SEQ - SEARCH FOR EQUIPMENT.
  • [04529] TAEQ - TABLE OF EQUIPMENT MNEMONICS.
  • [04574] UPC - UPDATE PRU COUNTER.
  • [04634] VAE - VALIDATE ASSIGNED EQUIPMENT.
  • [04651] VSJ - VALIDATE SSJ=.
  • [04672] VSO - VALIDATE SYSTEM ORIGIN PRIVLEDGES.
  • [04691] VTE - VERIFY TAPE ENTRY.
  • [05188] PCF - POSITION COMMAND FILE.
  • [05299] ERX - EVALUATE MASS STORAGE ERROR RETURN.
  • [05352] GETFNT
  • [05662] PRIMARY
  • [05673] PRI - PROCESS PRIMARY FUNCTION.
  • [05847] SUBROUTINES
  • [05849] CCP - CRACK CALLING PARAMETERS IN FET+CGNT.
  • [05916] CFS - CHECK FILE SELECTIVITY.
  • [05965] CMS - CHECK FOR MASS STORAGE RESIDENT FILE.
  • [05988] MFF - MODIFY FILE S FST.
  • [06196] PCF - PROCESS CHECKPOINT FILE.
  • [06239] RFE - REFORMAT FNT ENTRY.
  • [06326] SQD - SEARCH QFT FOR DISPOSITION CODE.
  • [06375] WDS - WRITE MASS STORAGE.
  • [06392] TAFM - TABLE OF FILE MODES.
  • [06416] TFTS - TABLE OF FILE TYPE SHIFTS.

Source Code

LFM.txt
  1. IDENT LFM,LFM
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. EQV$ EQU 1 DEFINE NO EQUIPMENT CHECK FOR *COMPRSS*
  6. MSR$ EQU 1 DEFINE ERROR PROCESSING FOR *COMPRNS*
  7. QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
  8. *COMMENT LFM - LOCAL FILE MANAGER.
  9. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  10. TITLE LFM - LOCAL FILE MANAGER.
  11. SPACE 4,10
  12. *** LFM - LOCAL FILE MANAGER.
  13. * G. R. MANSFIELD. 70/12/18.
  14. * M. S. CARTER. 76/06/24.
  15. SPACE 4,10
  16. *** LFM PERFORMS VARIOUS FILE MANAGING TASKS FOR A JOB.
  17. SPACE 4,10
  18. *** CALL.
  19. *
  20. *T, 18/ *LFM*, 1/1, 5/ , 12/ CODE, 6/ FP, 18/ FET
  21. * CODE FUNCTION CODE
  22. * FP FUNCTION PARAMETER -
  23. * FOR FUNCTION 3, FP = FILE STATUS.
  24. * FOR STATUS FUNCTION 13, FP=1, IF ADDITIONAL TAPE
  25. * INFORMATION IS REQUESTED.
  26. * FOR EQUIPMENT ASSIGMENT FUNCTIONS 14B, 15B AND
  27. * 26B, IF BIT 19 IS SET, NO DAYFILE MESSAGE
  28. * INDICATING THE EQUIPMENT ASSIGNED IS ISSUED.
  29. * FOR OPERATOR EQUIPMENT ASSIGNMENT FUNCTION 26B,
  30. * IF BIT 18 IS SET, OPERATOR TAPE ASSIGNMENT FOR
  31. * DUPLICATE *VSN* IS REQUIRED.
  32. * FOR FUNCTION 20B, FP = 0 TO ACCESS LIBRARY FILE,
  33. * FP = 1 IF *SYSTEM* FILE TO BE ASSIGNED.
  34. * FET ADDRESS OF FET
  35. *
  36. *T FET 42/ *FILE NAME*,17/,1/0
  37. *T 12/ EQ,3/,1/E,44/
  38. * EQ EQUIPMENT TYPE
  39. * E RETURN ERROR CODE
  40. *
  41. * RETURN.
  42. *
  43. *T FET 42/ *FILE NAME*,8/ EC,9/,1/1
  44. * EC ERROR CODE
  45. SPACE 4,10
  46. *** DAYFILE MESSAGES.
  47. *
  48. * * LFM INCORRECT REQUEST.* = *LFM* WAS CALLED WITHOUT
  49. * AUTO RECALL OR WITH INCORRECT FUNCTION CODE.
  50. *
  51. * * COMMAND FILE ERROR.* = AN UNRECOVERABLE MASS STORAGE ERROR
  52. * OCCURRED ON THE JOBS COMMAND FILE.
  53. *
  54. * * DUPLICATE FILE NAME.* = FILE ALREADY EXISTS FOR USER JOB.
  55. *
  56. * * FILE EMPTY.* = FILE EXISTS BUT IS EMPTY.
  57. *
  58. * * FILE NAME ERROR.* = FILE NAME CONTAINS INCORRECT CHARACTERS
  59. * OR MORE THAN SEVEN CHARACTERS.
  60. *
  61. * * FILE NOT FOUND.* = REQUESTED FILE WAS NOT FOUND.
  62. *
  63. * * INCORRECT EQUIPMENT.* = USER SPECIFIED EQUIPMENT THAT DOES
  64. * NOT EXIST OR IS NOT ALLOWED.
  65. *
  66. * * INCORRECT FILE STATUS.* - FILE STATUS IS OUT OF RANGE OF
  67. * DEFINED VALUES.
  68. *
  69. * * INCORRECT FILE TYPE.* = FILE WAS NOT CORRECT TYPE FOR
  70. * FUNCTION.
  71. *
  72. * * INCORRECT FILE MODE.* = FUNCTION NOT ALLOWED ON
  73. * EXECUTE-ONLY FILE.
  74. *
  75. * * USER ACCESS NOT VALID.* = USER ATTEMPTED TO ACCESS
  76. * SOMETHING WITHOUT REQUIRED VALIDATION.
  77. *
  78. * * ACCESS LEVEL NOT VALID FOR FILE.* = *LFM* WAS CALLED BY
  79. * A USER WHO ATTEMPTED TO SET A FILE-S ACCESS LEVEL TO A
  80. * LEVEL NOT VALID FOR THAT USER, OR FOR THE EQUIPMENT UPON
  81. * WHICH THAT FILE RESIDED.
  82. *
  83. * * EQUIPMENT NOT AVAILABLE.* = EQUIPMENT IS IN USE OR DOES
  84. * NOT EXIST, NO EQUIPMENT WITH THE PROPER ACCESS LEVEL CAN
  85. * BE FOUND, OR THE MASS STORAGE DEVICE ENCOUNTERED AN I/O
  86. * ERROR.
  87. *
  88. * * NO MASS STORAGE AVAILABLE.* = NO TRACKS COULD BE FOUND
  89. * OF THE CORRECT TYPE.
  90. *
  91. * * FET TOO SHORT.* = FET IS NOT LONG ENOUGH TO ACCOMPLISH
  92. * FUNCTION.
  93. *
  94. * * GETFNT TABLE TOO LARGE.* = TABLE USED BY GETFNT
  95. * FUNCTION EXTENDS OUTSIDE FIELD LENGTH.
  96. *
  97. * * ADDRESS OUT OF RANGE.* = SOME PORTION OF THE PARAMETER
  98. * BLOCK OR FET IS BEYOND THE USERS FIELD LENGTH.
  99. *
  100. * * PARAMETER BLOCK BUSY.* = COMPLETION BIT IS SET BEFORE
  101. * PROCESSING OF FUNCTION BEGINS.
  102. *
  103. * * I/O SEQUENCE ERROR.* = A REQUEST WAS MADE ON A BUSY FILE.
  104. *
  105. * * MAGNETIC TAPE SUBSYSTEM NOT ACTIVE.* = NO UDT ADDRESS
  106. * IN FST, OR MAGNET NOT PRESENT.
  107. *
  108. * * SYSTEM ERROR.* = LFM CANNOT COMPLETE THE REQUESTED LFM
  109. * FUNCTION BECAUSE THE CALLING PROGRAM HAS A *DMP=* ENTRY
  110. * POINT.
  111. *
  112. * * INCORRECT RANDOM ADDRESS.* = THE REQUESTED *LFM*
  113. * FUNCTION SPECIFIED A CURRENT RANDOM ADDRESS OF ZERO.
  114. *
  115. * *XX, ASSIGNED TO FILENAM.* = *MSAL* DEVICE TYPE XX ASSIGNED.
  116. *
  117. * *TTXXX, ASSIGNED TO FILENAM.* = EST ORDINAL XXX WITH TYPE TT
  118. * WAS ASSIGNED.
  119. SPACE 4,10
  120. *** ACCOUNT DAYFILE MESSAGES.
  121. *
  122. *
  123. * *MFFI, FILENAME, LEVELNAME.* = AN INVALID ATTEMPT WAS MADE TO
  124. * CHANGE THE ACCESS LEVEL ON FILE FILENAME TO LEVEL LEVELNAME.
  125. SPACE 4,10
  126. *** OPERATOR MESSAGES.
  127. *
  128. * * TRACK LIMIT.* = *LFM* IS WAITING FOR MASS STORAGE SPACE.
  129. *
  130. * *EQXXX, TRACK LIMIT.* = *LFM* IS WAITING FOR MASS STORAGE
  131. * SPACE ON EST ORDINAL XXX.
  132. *
  133. * *REQUEST NNNNNNN, EQ* = JOB IS REQUESTING ASSIGNMENT
  134. * OF EQUIPMENT TYPE *EQ* TO BE ASSIGNED TO FILE *NNNNNNN*.
  135. SPACE 4,10
  136. ** ROUTINES CALLED.
  137. *
  138. *
  139. * 0BF - BEGIN FILE.
  140. * 0DF - DROP FILE.
  141. SPACE 4,10
  142. ** NOTE - MONITOR FUNCTION *HNGM* WILL BE ISSUED IF *LFM*
  143. * DETECTS AN INCORRECT FILE STATUS IN THE FNT WHEN PROCESSING A
  144. * *FILINFO* REQUEST.
  145. * THE *FNT* ENTRY.
  146. SPACE 4
  147. ** COMMON DECKS.
  148.  
  149.  
  150. *CALL COMPMAC
  151. LIST X
  152. *CALL COMSLFM
  153. LIST *
  154. SPACE 4
  155. ORG PPFW
  156. QUAL MTX
  157. *CALL COMSMTX
  158. QUAL *
  159. *CALL COMSEVT
  160. *CALL COMSLFD
  161. *CALL COMSCPS
  162. *CALL COMSJIO
  163. *CALL COMSMLS
  164. *CALL COMSMSP
  165. *CALL COMSPFM
  166. *CALL COMSSCD
  167. *CALL COMSPIM
  168. *CALL COMSSSD
  169. *CALL COMSSSE
  170. *CALL COMSSSJ
  171. *CALL COMSWEI
  172. *CALL COMSZOL
  173. SPACE 4
  174. **** DIRECT LOCATION ASSIGNMENTS.
  175.  
  176.  
  177. FS EQU 20 - 24 FST ENTRY (5 LOCATIONS)
  178. EQ EQU 25 EST ORDINAL
  179. AL EQU 26 ACCESS LEVEL
  180. FP EQU 27 FUNCTION PARAMETER
  181. CN EQU 30 - 34 CM WORD BUFFER (5 LOCATIONS)
  182. AB EQU CN FOR USE ON CALL TO *COMPCLD*
  183. RI EQU 35 - 36 RANDOM INDEX
  184. FF EQU 37 FET SPECIFIED FNT ADDRESS
  185. FN EQU 40 - 44 FILE NAME (5 LOCATIONS)
  186. UN EQU FN USER NAME (5 LOCATIONS)
  187. FE EQU 45 FET LENGTH - 1
  188. LS EQU 46 LAST FET STATUS
  189. OC EQU 47 JOB ORIGIN CODE
  190. FA EQU 57 ADDRESS OF FNT ENTRY
  191. FT EQU 60 - 64 FNT POINTERS
  192.  
  193. ****
  194. SPACE 4
  195. ** ADDITIONAL DIRECT LOCATION ASSIGNMENTS DEFINED
  196. * LOCALLY TO OVERLAYS.
  197. *
  198. * UD = 60-64 - OVERLAY 3LB.
  199. * VS = 60-64 - OVERLAY 3LC.
  200. * SP = 60-64 - OVERLAY 3LF.
  201. * ST = 65 - OVERLAY 3LB.
  202. * CF = 65 - OVERLAY 3LE.
  203. * CB = 65 - OVERLAY 3LG.
  204. * SX = 66 - OVERLAY 3LB.
  205. * WO = 66 - OVERLAY 3LE.
  206. * SB = 66-67 - OVERLAY 3LG.
  207. SPACE 4
  208. ** ASSEMBLY CONSTANTS.
  209.  
  210.  
  211. DNFS EQU 200 DEFAULT NUMBER OF FILES - GETFNT FCN.
  212. CGNT EQU 10 FET PARAMETER WORD - GETFNT FCN.
  213. SPACE 4
  214. * OVERLAY CONTROL.
  215.  
  216.  
  217. .N SET 0
  218. OVLB MICRO 1,, 3L BASE OVERLAY NAME
  219. TITLE OVERLAY COMMUNICATION MACROS.
  220. OVERLAY SPACE 4
  221. ** OVERLAY - GENERATE OVERLAY CONSTANTS.
  222. *
  223. *
  224. * OVERLAY (TEXT)
  225. * ENTRY *TEXT* = TEXT OF SUBTITLE.
  226.  
  227.  
  228. PURGMAC OVERLAY
  229.  
  230. OVERLAY MACRO TEXT
  231. QUAL
  232. .N SET .N+1
  233. .M MICRO .N,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
  234. .O MICRO 1,3, "OVLB"".M"
  235. QUAL ".O"
  236. TTL LFM/".O" - TEXT
  237. TITLE
  238. IDENT ".O",OVL TEXT
  239. *COMMENT LFM - TEXT
  240. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  241. ORG OVL
  242. LJM *
  243. UJN *-2
  244. ENDM
  245. ENTRY SPACE 4
  246. ** ENTRY - DEFINE OVERLAY ENTRY POINT.
  247. *
  248. *
  249. * ENTRY NAME
  250. * ENTRY *NAME* = NAME OF ENTRY ADDRESS.
  251.  
  252.  
  253. PURGMAC ENTRY
  254.  
  255. ENTRY MACRO NAME
  256. QUAL
  257. NAME EQU *+1R".M"*10000
  258. QUAL ".O"
  259. ENDM
  260. CSR SPACE 4,10
  261. ** CSR - DEFINE 24 BIT QUANTITY FROM 18 BIT EQUATE.
  262. *
  263. * CSR R
  264. *
  265. * *R* = VALUE TO BE EXPANDED TO 24 BITS.
  266. * IF *R* = 0, 77777777B WILL BE STORED.
  267.  
  268. CSR MACRO R
  269. LOCAL N,O,P,Q
  270. MACREF CSR
  271. N SET R
  272. IFNE R,0
  273. O SET R/100B
  274. P SET O*100B
  275. Q SET R-P
  276. CON O,Q*100B
  277. ELSE
  278. CON 7777B,7777B
  279. ENDIF
  280. CSR ENDM
  281. TBLM SPACE 4,10
  282. ** TBLM - GENERATE LIST OF MASS STORAGE DEVICE MNEMONICS.
  283. *
  284. * TBLM EQ
  285. * EQ = DEVICE MNEMONIC.
  286.  
  287.  
  288. TBLM MACRO EQ
  289. CON 2R_EQ
  290. TBLM ENDM
  291. TITLE MAIN PROGRAM.
  292. LFM SPACE 4
  293. ** LFM - MAIN PROGRAM.
  294.  
  295.  
  296. ORG PPFW
  297. LFM RJM PRS PRESET PROGRAM
  298. LFM1 LDC 0
  299. LFMA EQU *-1 (OVERLAY NAME)
  300. ZJN LFM2 IF NO OVERLAY REQUIRED
  301. LMC 2L"OVLB" LOAD OVERLAY
  302. RJM EXR
  303. LFM2 LJM * PROCESS REQUEST
  304. LFMB EQU *-1
  305.  
  306. LFMX RJM SNB SET FILE(S) NOT BUSY
  307. LFM3 RJM SFS SET FILE STATUS
  308. LDM DPPB CHECK FOR *UADM* DATA
  309. SHN 14
  310. ADM DPPB+1
  311. ZJN DPP IF NO DATA
  312. LDD MA ISSUE *UADM* FUNCTION
  313. CWM DPPA,ON
  314. LDN 1
  315. STD CM+1
  316. STD CM+2
  317. MONITOR UADM
  318. DPP SPACE 4,10
  319. ** DPP - DROP PP.
  320.  
  321.  
  322. DPP MONITOR DPPM DROP PPU
  323. LJM PPR RETURN TO PP RESIDENT
  324.  
  325. * *UADM* PARAMETER WORD.
  326.  
  327. DPPA CON CDCS DECREMENT CONTROL POINT AREA
  328. * CON (CICS) INCREMENT CONTROL POINT AREA
  329. CON ACLW
  330. CON 0D*100+18D
  331. DPPB CON 0,0
  332. TITLE RESIDENT SUBROUTINES.
  333. CKE SPACE 4,10
  334. ** CKE - CHECK ERROR PROCESSING.
  335. *
  336. * ENTRY (A) = ERROR CODE.
  337. *
  338. * EXIT (EQ) = ERROR CODE.
  339. *
  340. * USES CM - CM+4.
  341. *
  342. * CALLS CPA, DRF.
  343.  
  344.  
  345. CKE SUBR ENTRY/EXIT
  346. STD EQ SAVE MESSAGE CODE
  347. ADN 1 SET FET ERROR CODE
  348. SHN 12
  349. STM SFSC
  350. SHN -14
  351. STM SFSB
  352. RJM CPA READ FIRST
  353. ADN 1
  354. CRD CM
  355. LDD CM+1
  356. SHN 21-8D
  357. PJN CKEX RETURN IF USER NOT PROCESSING ERROR
  358. LDD EQ
  359. LMN /ERR/LNV
  360. ZJN CKEX IF ACCESS LEVEL NOT VALID FOR FILE
  361. LMN /ERR/IOE&/ERR/LNV
  362. ZJN CKEX IF I/O SEQUENCE ERROR
  363. LMN /ERR/NMA&/ERR/IOE
  364. NJN CKE1 IF NOT TRACK LIMIT
  365. RJM DRF DROP FILE
  366. CKE1 LJM LFMX EXIT
  367. CLF SPACE 4,10
  368. ** CLF - CREATE LOCAL FILE.
  369. *
  370. * ENTRY (EQ) = EST ORDINAL.
  371. * (FN - FN+4) = FILE NAME.
  372. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  373. *
  374. * EXIT SEE *EFN*.
  375. * (FN+4) = *SSST* FILE STATUS CLEARED.
  376. *
  377. * CALLS EFN.
  378. *
  379. * MACROS NFA.
  380.  
  381.  
  382. CLF SUBR ENTRY/EXIT
  383. RJM EFN ENTER FILE
  384. LDD FN+4 CHECK FILE STATUS
  385. LPN 77
  386. LMN SSST
  387. NJN CLFX IF NOT SPECIAL SYSTEM FILE
  388. LCN SSST CLEAR SPECIAL SYSTEM FILE STATUS
  389. RAD FN+4
  390. NFA FA,R
  391. CWD FN
  392. UJN CLFX RETURN
  393. CPA SPACE 4,10
  394. ** CPA - COMPUTE PARAMETER ADDRESS.
  395. *
  396. * ENTRY (IR+3 - IR+4) = RELATIVE PARAMETER ADDRESS.
  397. *
  398. * EXIT (A) = ABSOLUTE PARAMETER ADDRESS.
  399.  
  400.  
  401. CPA SUBR ENTRY/EXIT
  402. LDD IR+3
  403. LPN 37
  404. SHN 6
  405. ADD RA
  406. SHN 6
  407. ADD IR+4
  408. UJN CPAX RETURN
  409. DEQ SPACE 4,10
  410. ** DEQ - DROP EQUIPMENT.
  411. *
  412. * ENTRY (EQ) = EST ORDINAL.
  413. *
  414. * USES T0, CM - CM+4.
  415. *
  416. * MACROS MONITOR, SFA.
  417.  
  418.  
  419. DEQ SUBR ENTRY/EXIT
  420. LDD EQ READ EST ENTRY
  421. LPC 777
  422. STD T0 SAVE EST ORDINAL
  423. ZJN DEQX IF NO EQUIPMENT PRESENT
  424. SFA EST
  425. ADK EQDE
  426. CRD CM
  427. LDD CM
  428. SHN 21-13
  429. MJN DEQX IF MASS STORAGE
  430. SHN 13-12
  431. PJN DEQ1 IF NOT ALLOCATABLE
  432. SFA EST,T0 CHECK EQUIPMENT ASSIGNMENT
  433. ADK EQAE
  434. CRD CM
  435. LDD CM+4
  436. ZJN DEQX IF NOT ASSIGNED
  437. DEQ1 LDD T0
  438. STD CM+1
  439. MONITOR DEQM RELEASE EQUIPMENT
  440. UJN DEQX RETURN
  441. DRF SPACE 4,10
  442. ** DRF - DROP FILE.
  443. *
  444. * ENTRY (FA) = RELATIVE ADDRESS OF FNT ENTRY IN NFL.
  445. *
  446. * EXIT (A) = (FA) = 0.
  447. *
  448. * ERROR TO *EER3*.
  449. *
  450. * CALLS *0DF*.
  451. *
  452. * MACROS EXECUTE.
  453.  
  454.  
  455. DRF SUBR ENTRY/EXIT
  456. LDN 1 SET *UNLOAD* FILE FLAG FOR *0DF*
  457. STM OVL0
  458. EXECUTE 0DF,OVL0+1 DROP FILE
  459. NJN EER3 IF MASS STORAGE DEVICE INACCESSIBLE
  460. * STD FA
  461. UJN DRFX RETURN
  462. EER SPACE 4,10
  463. ** EER - EVALUATE MASS STORAGE ERROR RETURN.
  464. *
  465. * ENTRY (A) = ERROR RESPONSE FROM DRIVER.
  466. * (T5) = EST ORDINAL.
  467. *
  468. * USES IR+4.
  469. *
  470. * CALLS ERR, SNB, *1RJ*.
  471. *
  472. * MACROS EXECUTE, PAUSE.
  473.  
  474.  
  475. EER PSN ENTRY
  476. SHN 21-12
  477. PJN EER2 IF ERROR RECOVERABLE
  478. EER1 LDN /ERR/WEQ
  479. LJM ERR PROCESS ERROR
  480.  
  481. EER2 LDM MSD CHECK CALLER
  482. SHN 21-13
  483. PJN EER1 IF SUBSYSTEM
  484. EER3 PAUSE
  485. LDD CM+1
  486. NJP LFMX IF ERROR FLAG SET
  487. RJM SNB
  488. LDD T5 SET EST ORDINAL
  489. STD IR+4
  490. EXECUTE 1RJ RECALL JOB
  491. EFN SPACE 4,20
  492. ** EFN - ENTER FILE NAME.
  493. *
  494. * ENTRY (FN - FN+4) = FILE NAME.
  495. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  496. * (EQ) = EST ORDINAL.
  497. *
  498. * EXIT (FA) = ADDRESS OF FNT ENTRY.
  499. * (FN - FN+4) = FNT ENTRY.
  500. * (FS - FS+4) = FST ENTRY.
  501. * TO *RSP* IF WAIT FOR NFL INCREASE TO CREATE
  502. * FNT ENTRY.
  503. *
  504. * ERROR EXIT TO *ERR* IF DUPLICATE FILE NAME OR
  505. * FILE NAME ERROR.
  506. * EQUIPMENT RELEASED IF FILE NAME ERROR.
  507. *
  508. * USES FA, FS.
  509. *
  510. * CALLS COE, DEQ, VFN, *0BF*.
  511. *
  512. * MACROS EXECUTE.
  513.  
  514.  
  515. EFN SUBR ENTRY/EXIT
  516. RJM VFN VERIFY FILE NAME
  517. NJN EFN1 IF NO ERROR
  518. RJM DEQ RELEASE EQUIPMENT
  519. LDN /ERR/FLN
  520. UJN EFN2 PROCESS ERROR
  521.  
  522. EFN1 LDD EQ SET EQUIPMENT ASSIGNMENT
  523. STD FS
  524. LDD AL
  525. SHN 6 PASS FILE ACCESS LEVEL TO *0BF*
  526. ADN 2 RETURN TO ENTER PP STACK FOR NFL INCREASE
  527. STM OVL0
  528. EXECUTE 0BF,OVL0+1
  529. UJN EFN3 CHECK RETURN STATUS
  530.  
  531. * DUPLICATE FILE FOUND.
  532.  
  533. LDN 0 CLEAR FNT ADDRESS
  534. STD FA
  535. LDN /ERR/DFN DUPLICATE FILE NAME
  536. EFN2 UJN ERR PROCESS ERROR
  537.  
  538. EFN3 ZJN EFNX IF FNT ENTRY CREATED
  539. RJM DEQ RELEASE EQUIPMENT
  540. LDC 0
  541. EFNA EQU *-1
  542. ZJN EFN4 IF NO OPERATOR ASSIGNED EQUIPMENT TO RESET
  543. RJM COE RESET OPERATOR ASSIGNED EQUIPMENT
  544. EFN4 LDN NFIR REASON CODE = NFL INCREASE PENDING
  545. LJM RSP ENTER PP RECALL STACK
  546. ABT SPACE 4,10
  547. ** ABT - ABORT JOB.
  548. *
  549. * ENTRY (A) = ADDRESS OF MESSAGE.
  550. *
  551. * CALLS DFM.
  552. *
  553. * MACROS MONITOR.
  554.  
  555.  
  556. ABT RJM DFM ISSUE DAYFILE MESSAGE
  557. MONITOR ABTM
  558. LJM PPR RETURN TO PP RESIDENT
  559. CFL SPACE 4,10
  560. ** CFL - CHECK FET LENGTH.
  561. *
  562. * ENTRY (A) = COMPLEMENT OF (MINIMUM LENGTH - 1).
  563. * (FE) = FET LENGTH - 1.
  564. *
  565. * EXIT TO *ERR*, IF ERROR.
  566.  
  567.  
  568. CFL SUBR ENTRY/EXIT
  569. ADD FE
  570. PJN CFLX IF FET LENGTH SUFFICIENT
  571. LDN /ERR/FTS * FET TOO SHORT.*
  572. * LJM ERR ABORT
  573. ERR SPACE 4,10
  574. ** ERR - PROCESS ERROR.
  575. *
  576. * ENTRY (A) = ERROR CODE.
  577.  
  578.  
  579. ERR STD T0
  580. LMN /ERR/IOE
  581. NJN ERR1 IF NOT I/O SEQUENCE ERROR
  582. STD FA CLEAR FNT ADDRESS
  583.  
  584. ERR1 LDD T0
  585. RJM CKE CHECK ERROR PROCESSING
  586. LDC ERP SET ERROR PROCESSOR ADDRESS
  587. STM LFMB
  588. SHN -14 SET OVERLAY NAME
  589. STM LFMA
  590. LJM LFM1 PROCESS ERROR
  591. RCL SPACE 4,15
  592. ** RCL - RECALL *LFM*.
  593. *
  594. * ENTRY (A) = MESSAGE CODE.
  595. * (T7) = MESSAGE ADDRESS.
  596. *
  597. * EXIT TO *DPP* TO DROP PP.
  598. * TO *RSP* TO ENTER PP RECALL STACK.
  599. *
  600. * USES FS+4, CM - CM+4, CN - CN+4.
  601. *
  602. * CALLS CKE, DRF, SPB.
  603. *
  604. * MACROS MONITOR, NFA.
  605.  
  606.  
  607. RCL RJM CKE CHECK ERROR PROCESSING
  608. LDD T7 SET MESSAGE ADDRESS
  609. ZJN RCL2 IF NO MESSAGE
  610. STM RCLA
  611. LDD EQ
  612. LMN /ERR/NMA
  613. ZJN RCL1 IF TRACK LIMIT
  614. LDN 1
  615. RJM SPB SET PAUSE BIT
  616. RCL1 LDD CP STORE CONSOLE MESSAGE
  617. ADN MS2W
  618. CWM *,TR
  619. RCLA EQU *-1
  620. RCL2 AOD FS+4 SET FILE STATUS NOT BUSY
  621. LDD FA
  622. ZJN RCL3 IF NO FNT ENTRY
  623. NFA FA,R
  624. ADN FSTL
  625. CWD FS STORE FST ENTRY
  626. RCL3 LDD CP CHECK FOR ERROR FLAGS
  627. ADN STSW
  628. CRD CM
  629. ADN SNSW-STSW
  630. CRD CN
  631. LDD CN+3
  632. LPN 10
  633. ADD CM+1
  634. ZJN RCL4 IF NO ERROR FLAGS SET OR NO SUBSYSTEM IDLE
  635. LJM DPP DROP PP AND EXIT TO PP RESIDENT
  636.  
  637. RCL4 LDD EQ
  638. LMN /ERR/NMA
  639. NJN RCL5 IF NOT TRACK LIMIT
  640. RJM DRF CLEAR FNT ENTRY
  641. LDN ZERL SET TRACK LIMIT EVENT
  642. CRD CM
  643. LDN TKLE
  644. STD CM+4
  645. MONITOR EATM
  646. LDN TRLR SET TRACK LIMIT REASON CODE
  647. UJN RSP ENTER PP RECALL STACK
  648.  
  649. RCL5 LDN WEAR SET WAIT EQUIPMENT ASSIGNMENT REASON CODE
  650. * UJN RSP ENTER PP RECALL STACK
  651. RSP SPACE 4,10
  652. ** RSP - RECALL STACK ENTRY PROCESSOR.
  653. *
  654. * ENTRY (A) = RECALL STACK REASON CODE.
  655. * (IR - IR+4) = PP CALL.
  656. *
  657. * EXIT TO *PPR*.
  658. *
  659. * USES CM - CM+5.
  660. *
  661. * MACROS MONITOR.
  662.  
  663.  
  664. RSP BSS 0 ENTRY
  665. STD CM
  666. LDN ZERL
  667. CRD CM+1
  668. LDD MA WRITE PP CALL
  669. CWD IR
  670. ADN 1 WRITE PARAMETER WORD
  671. CWD CM
  672. MONITOR RECM ENTER DEFAULT TIMED RECALL
  673. LJM PPR EXIT TO PP RESIDENT
  674. SFS SPACE 4,15
  675. ** SFS - SET FILE STATUS.
  676. *
  677. * ENTRY (LS) = LAST FET STATUS.
  678. * (FN - FN+3) = FILE NAME FOR FET.
  679. * (IR+3 - IR+4) = FET ADDRESS.
  680. * (SFSB) = FET ERROR CODE (IF PERTINENT), SET BY *CKE*.
  681. * (SFSA) = RETURN FILE FUNCTION FLAG, SET BY *PRS*.
  682. * (SFSC) = FET ERROR CODE (IF PERTINENT), SET BY *CKE*.
  683. *
  684. * EXIT FET STATUS MADE *NOT BUSY* AND ERROR CODE FIELD SET.
  685. *
  686. * USES LS, FN+3, FN+4.
  687. *
  688. * CALLS CPA.
  689.  
  690.  
  691. SFS SUBR ENTRY/EXIT
  692. AOD LS MAKE FET NOT BUSY
  693. STD FN+4
  694. SFSA LDN 0
  695. * LDN 1 (RETURN FILE INFORMATION)
  696. NJN SFS1 IF RETURN FILE INFORMATION
  697. LDD FN+3 SET FET ERROR CODE FIELD
  698. SCN 77
  699. LMC 0 LEFT 6 BITS OF 8 BIT ERROR CODE FIELD
  700. SFSB EQU *-1
  701. STD FN+3
  702. LDC 0
  703. SFSC EQU *-1
  704. RAD FN+4
  705. SFS1 RJM CPA REWRITE FET+0
  706. CWD FN
  707. UJN SFSX RETURN
  708. SIF SPACE 4,15
  709. ** SIF - SEARCH FOR AND INTERLOCK FILE.
  710. *
  711. * ENTRY (A) = INITIAL FNT ADDRESS FOR SEARCH.
  712. * (A) = 0, IF NO INITIAL FNT ADDRESS.
  713. * (FN - FN+4) = FILE NAME.
  714. *
  715. * EXIT FNT/FST FOR FILE SET BUSY, ELSE TO *ERR*.
  716. * (FA) = FNT ADDRESS IN NFL.
  717. * (CM - CM+4) = FNT WORD.
  718. * (FS - FS+4) = FST WORD.
  719. *
  720. * CALLS SAF, SFB.
  721.  
  722.  
  723. SIF SUBR ENTRY/EXIT
  724. RJM SAF SEARCH FOR ASSIGNED FILE
  725. ZJN SIF1 IF FILE NOT FOUND
  726. RJM SFB SET FILE BUSY
  727. ZJN SIFX IF FILE SET BUSY
  728. LDN /ERR/IOE&/ERR/FNF *I/O SEQUENCE ERROR*
  729. SIF1 LMN /ERR/FNF *FILE NOT FOUND*
  730. LJM ERR PROCESS ERROR
  731. SNB SPACE 4,15
  732. ** SNB - SET FILE(S) NOT BUSY.
  733. *
  734. * ENTRY (FA) = FNT ADDRESS OF BUSY FILE.
  735. * (FS - FS+4) = FST ENTRY OF FILE.
  736. * (SNBA) = FNT ADDRESS OF SECOND FILE.
  737. * = 0 IF NO SECOND FILE.
  738. *
  739. * EXIT (A) = (FA) = (SNBA) = 0.
  740. *
  741. * USES FA, FS - FS+4.
  742. *
  743. * MACROS NFA.
  744.  
  745.  
  746. SNB SUBR ENTRY/EXIT
  747. LDD FA
  748. ZJN SNB1 IF ONE FILE NOT BUSY
  749. AOD FS+4
  750. NFA FA,R STORE FST ENTRY
  751. ADN FSTL
  752. CWD FS
  753. SNB1 LDC 0 POSSIBLE SECOND FILE FNT ADDRESS
  754. SNBA EQU *-1
  755. STD FA
  756. ZJN SNBX IF NO SECOND FILE
  757. NFA FA,R
  758. ADK FSTL
  759. CRD FS
  760. AOD FS+4 SET FILE NOT BUSY
  761. NFA FA,R
  762. ADK FSTL STORE FST INFORMATION
  763. CWD FS
  764. LDN 0 CLEAR FNT ADDRESS
  765. STD FA
  766. STM SNBA
  767. UJP SNBX RETURN
  768. SPB SPACE 4,10
  769. ** SPB - SET/CLEAR PAUSE BIT.
  770. *
  771. * ENTRY (A) = 0 CLEAR PAUSE BIT.
  772. * (A) = 1 SET PAUSE BIT.
  773. *
  774. * EXIT (A) = ADDRESS OF *SNSW* IN CP AREA.
  775. * (CM - CM+4) = *SNSW*.
  776. *
  777. * USES T1, CM - CM+4.
  778.  
  779.  
  780. SPB SUBR ENTRY/EXIT
  781. STD T1 SAVE PAUSE OPTION
  782. LDD CP READ SWITCH WORD
  783. ADN SNSW
  784. CRD CM
  785. LDD CM+3 SET/CLEAR PAUSE BIT
  786. SCN 1
  787. LMD T1
  788. STD CM+3
  789. LDD CP UPDATE SWITCH WORD
  790. ADN SNSW
  791. CWD CM
  792. UJN SPBX RETURN
  793. SVF SPACE 4,15
  794. ** SVF - SEARCH FOR VSN ENTRY FILE.
  795. *
  796. * ENTRY (FN - FN+4) = FILE NAME
  797. *
  798. * EXIT (A) = 0 NO FILE FOUND OR VSN ENTRY FILE FOUND
  799. * (FA) = FNT ADDRESS.
  800. * (FS - FS+4) = FNT ENTRY.
  801. *
  802. * USES CM - CM+4.
  803. *
  804. * CALLS SAF.
  805. *
  806. * MACROS NFA, SFA.
  807.  
  808.  
  809. SVF SUBR ENTRY/EXIT
  810. LDN 0 SET NO INITIAL FNT ADDRESS
  811. RJM SAF SEARCH FOR ASSIGNED FILE
  812. ZJN SVFX IF NO FILE
  813. NFA FA,R READ FST
  814. ADN FSTL
  815. CRD CM
  816. LDD CM CHECK EQUIPTMENT
  817. SFA EST
  818. ADK EQDE
  819. CRD CM READ EST ENTRY
  820. LDD CM+3
  821. LMC 2RTE
  822. UJN SVFX RETURN
  823. UPP SPACE 4,10
  824. ** UPP - UPDATE PRIMARY FILE POINTERS.
  825. *
  826. * ENTRY (FA) = PRIMARY FILE FNT ADDRESS/OFFSET.
  827. * (FS - FS+4) = PRIMARY FILE FST ENTRY.
  828. *
  829. * USES CM - CM+4.
  830. *
  831. * MACROS SFA, MONITOR.
  832.  
  833.  
  834. UPP SUBR ENTRY/EXIT
  835.  
  836. * UPDATE WORD *TFSW* OF THE CONTROL POINT AREA.
  837.  
  838. LDD CP
  839. ADK TFSW
  840. CRD CM
  841. LDD FA
  842. STD CM+1
  843. LDD CP
  844. ADK TFSW
  845. CWD CM
  846.  
  847. * UPDATE EJT ENTRY.
  848.  
  849. LDD FS STORE EQUIPMENT IN *UTEM* PARAMETER BLOCK
  850. STM UPPA+3
  851. LDD FS+1 STORE TRACK IN *UTEM* PARAMETER BLOCK
  852. STM UPPA+4
  853. LDD MA
  854. CWM UPPA,ON
  855. SFA EJT,CM SET EJT ENTRY ADDRESS FOR *UTEM*
  856. STD CM+4
  857. SHN -14
  858. STD CM+3
  859. LDN 1 SET NUMBER OF PARAMETERS FOR *UTEM*
  860. STD CM+1
  861. MONITOR UTEM UPDATE EJT ENTRY
  862. UJN UPPX RETURN
  863.  
  864.  
  865. UPPA VFD 1/0,5/PRFE,6/24D *UTEM* PARAMETER BLOCK
  866. VFD 6/0,6/0
  867. CON 0,0,0
  868. SPACE 4,10
  869. ** COMMON DECKS.
  870.  
  871.  
  872. QUAL COMPACS
  873. *CALL COMPACS
  874. QUAL *
  875. EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
  876. QFT$ EQU 0 DEFINE *COMPGFP* ACCESS TO QFT
  877. IFP$ EQU 0 GENERATE *IFP* REMOTE CODE
  878. *CALL COMPGFP
  879. SAF$ EQU 0 SET INITIAL FNT ADDRESS PROVIDED
  880. *CALL COMPSAF
  881. *CALL COMPSEI
  882. *CALL COMPSFB
  883. *CALL COMPSRA
  884. *CALL COMPVFN
  885. USE OVERLAY
  886. OVL EQU *+10
  887. TITLE SUBROUTINES WHICH MAY BE OVERLAID.
  888. PRS SPACE 4,20
  889. ** PRS - PRESET PROGRAM.
  890. *
  891. * ENTRY (IR - IR+4) = INPUT REGISTER.
  892. *
  893. * EXIT (AL) = 0.
  894. * (EQ) = 0.
  895. * (FA) = 0.
  896. * (FE) = FET LENGTH - 1.
  897. * (FF) = FET SPECIFIED FNT ADDRESS.
  898. * (FP) = *LFM* FUNCTION CODE.
  899. * (LS) = LAST FET STATUS.
  900. * (OC) = ORIGIN CODE.
  901. * (IR+3 - IR+4) = FET ADDRESS.
  902. * (FN - FN+3) = FILE NAME.
  903. *
  904. * ERROR TO *ABT* IF INCORRECT REQUEST OR INCORRECT ADDRESS.
  905. *
  906. * CALLS CPA, CRS, IFP.
  907. *
  908. * MACROS SFA.
  909.  
  910.  
  911. PRS SUBR ENTRY/EXIT
  912. RJM CRS CHECK RECALL STATUS
  913. NJN PRS1 IF CALLED WITH AUTO RECALL
  914. LJM PRS6 ISSUE ERROR
  915.  
  916. PRS1 LDD IR+3 SAVE FUNCTION PARAMETER
  917. SHN -6
  918. STD FP
  919. RJM IFP INITIALIZE EJT ACCESS
  920.  
  921. * CHECK FOR RETURN FILE INFORMATION FUNCTION.
  922.  
  923. LDD IR+2 CHECK FUNCTION CODE
  924. SBN 32
  925. NJN PRS2 IF NOT RETURN FILE INFORMATION
  926. AOM SFSA
  927. RJM CPA READ PARAMETER BLOCK LENGTH
  928. CRD CM
  929. LDD CM+3
  930. LPN 77
  931. ZJN PRS3 IF NO LENGTH
  932. SBN 1
  933. UJN PRS3 SAVE LENGTH
  934.  
  935. * CHECK IF FET IS CONTAINED IN FIELD LENGTH.
  936.  
  937. PRS2 RJM CPA READ FET LENGTH
  938. ADN 1
  939. CRD CM
  940. LDD CM+3
  941. SHN -6
  942. ADN 5-1
  943. PRS3 STD FE SAVE FET LENGTH - 1
  944. LDD IR+3
  945. LPN 77
  946. SHN 14
  947. MJN PRS4 IF OUT OF RANGE
  948. LMD IR+4
  949. ADD FE
  950. SHN -6
  951. SBD FL
  952. MJN PRS5 IF FET CONTAINED IN FL
  953. PRS4 LDC AORM * ADDRESS OUT OF RANGE.*
  954. LJM ABT ABORT
  955.  
  956. * CHECK FUNCTION CODE.
  957.  
  958. PRS5 LDD IR+2 CHECK FUNCTION CODE
  959. SHN 1
  960. STD T7
  961. ADC -TFCNL
  962. MJN PRS7 IF LEGAL CODE
  963. PRS6 LDC ILRM * LFM INCORRECT REQUEST.*
  964. LJM ABT ABORT
  965.  
  966. PRS7 LDD CP FETCH EJT ORDINAL
  967. ADN TFSW
  968. CRD CM
  969. SFA EJT,CM GET JOB ORIGIN TYPE FROM EJT ENTRY
  970. ADN SCLE
  971. CRD CM
  972. LDD CM SET JOB ORIGIN TYPE
  973. LPN 17
  974. STD OC
  975. LDM TFCN+1,T7 SET PROCESSOR ADDRESS
  976. STM LFMB
  977. ZJN PRS6 IF NOT DEFINED
  978.  
  979. * SET OVERLAY NAME.
  980.  
  981. LDM TFCN,T7
  982. LPN 77
  983. STM LFMA
  984. RJM CPA
  985. ADN 4
  986. CRD CM
  987. LDD CM
  988. STD FF
  989. RJM CPA READ FILE NAME
  990. CRD FN
  991. LDD FN+4 SAVE LAST FET STATUS
  992. LPC 1776
  993. STD LS
  994. STD FN+4
  995. LDD FN+3 CLEAR ERROR CODES
  996. SCN 77
  997. STD FN+3
  998. LDN 0 CLEAR FNT ADDRESS
  999. STD FA
  1000. STD EQ CLEAR EST ORDINAL
  1001. STD AL CLEAR ACCESS LEVEL
  1002. LJM PRSX RETURN
  1003.  
  1004. AORM DATA C* ADDRESS OUT OF RANGE.*
  1005.  
  1006. ILRM DATA C* LFM INCORRECT REQUEST.*
  1007. CRX SPACE 4,10
  1008. ** CRX - CHECK RESEX CALL.
  1009. *
  1010. * EXIT RETURNS IF NOT CALLED.
  1011. * ABORTS IF RESEX DETECTED ERRORS.
  1012. * TERMINATES LFM IF CALL COMPLETED NORMALLY.
  1013. *
  1014. * USES T1, CM - CM+4, CN - CN+4.
  1015.  
  1016.  
  1017. CRX SUBR ENTRY/EXIT
  1018. LDD CP READ SPCW
  1019. ADC SPCW
  1020. CRD CM
  1021. LDD CM+2 CHECK RETURN STATUS
  1022. ZJN CRXX IF RESEX NOT CALLED
  1023. SCN 1
  1024. STD T1
  1025. LDN ZERL
  1026. CRD CN
  1027. LDD CP
  1028. ADC SPCW
  1029. CWD CN CLEAR SPCW
  1030. LDD T1
  1031. NJN CRX1 IF ERRORS FROM RESEX
  1032. LJM LFMX EXIT
  1033.  
  1034. CRX1 LDN /ERR/RDE * RESEX DETECTED ERRORS.*
  1035. LJM ERR PROCESS ERROR
  1036. FCN SPACE 4,10
  1037. ** FCN - DEFINE FUNCTION PROCESSOR.
  1038. *
  1039. *
  1040. * FCN NAME,ORD
  1041. *
  1042. * ENTRY *NAME* = NAME OF FUNCTION PROCESSOR.
  1043. * *ORD* = REQUIRED FUNCTION ORDINAL, IF ORDINAL MUST
  1044. * REMAIN A PARTICULAR VALUE. AN ASSEMBLY ERROR
  1045. * WILL OCCUR IF THE ORDINAL ASSEMBLED DOES NOT
  1046. * AGREE WITH THE SPECIFIED *ORD* VALUE.
  1047.  
  1048.  
  1049. NOREF .I
  1050. .I SET 0
  1051. FCN MACRO A,B
  1052. LOC .I/2
  1053. IFNE B,0
  1054. ERRNZ .I/2-B ASSEMBLED ORDINAL NOT AS SPECIFIED
  1055. ENDIF
  1056. CON A/10000,A-A/10000*10000
  1057. .I SET .I+2
  1058. ENDM
  1059. TFCN SPACE 4,10
  1060. ** TFCN - TABLE OF FUNCTION CODE PROCESSORS.
  1061. *
  1062. * 2 BYTES PER ENTRY.
  1063. *
  1064. *T, 12/ OV,12/ ADDR
  1065. * OV OVERLAY NAME
  1066. * ADDR ADDRESS OF FUNCTION PROCESSOR
  1067.  
  1068.  
  1069. TFCN BSS 0
  1070.  
  1071. FCN RNI RENAME INITIALIZATION
  1072. FCN 0 (UNUSED)
  1073. FCN 0 (UNUSED)
  1074. FCN STS SET FILE STATUS
  1075. FCN 0 (UNUSED)
  1076. FCN 0 (UNUSED)
  1077. FCN 0 (UNUSED)
  1078. FCN FSL SET FILE ACCESS LEVEL
  1079. FCN LCK LOCK FILE
  1080. FCN ULK UNLOCK FILE
  1081. FCN RLS RETURN LAST STATUS
  1082. FCN RCP RETURN CURRENT POSITION
  1083. FCN RQI REQUEST EQUIPMENT
  1084. FCN AEQ ASSIGN EQUIPMENT
  1085. FCN 0 (UNUSED)
  1086. FCN 0 (UNUSED)
  1087. FCN ALF ACCESS LIBRARY FILE
  1088. FCN ACS ATTACH COMMAND FILE
  1089. FCN ECS ENTER COMMAND FILE
  1090. FCN PCS POSITION COMMAND FILE
  1091. FCN LBI LABEL REQUEST
  1092. FCN GTF GET FNT/FST ENTRY
  1093. FCN OAE REQUEST OPERATOR ASSIGNMENT OF EQUIPMENT
  1094. FCN VSN ENTER VSN ENTRY FILE
  1095. FCN 0 (UNUSED)
  1096. FCN PRI MAKE FILE PRIMARY
  1097. FCN RFI RETURN FILE INFORMATION
  1098. FCN SLF SET LAST FILE EXECUTED
  1099. FCN 0 (UNUSED)
  1100. FCN 0,35 (RESERVED FOR INSTALLATIONS - MUST BE 35B)
  1101. FCN 0,36 (RESERVED FOR INSTALLATIONS - MUST BE 36B)
  1102. FCN 0,37 (RESERVED FOR INSTALLATIONS - MUST BE 37B)
  1103.  
  1104. LOC *O
  1105. TFCNL EQU *-TFCN
  1106. TITLE RESIDENT PROCESSORS.
  1107. ALF SPACE 4,25
  1108. *** FUNCTION 20.
  1109. * ACCESS LIBRARY FILE.
  1110. *
  1111. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  1112. * (FN - FN+3) = FILE NAME FROM FET+0.
  1113. * (FP) = FUNCTION PARAMETER.
  1114. * 0 = ACCESS LIBRARY FILE.
  1115. * 1 = ASSIGN *SYSTEM* FILE.
  1116. *
  1117. * EXIT FOR SUBFUNCTION 0 (ACCESS LIBRARY FILE), THE
  1118. * FOLLOWING INFORMATION IS RETURNED.
  1119. * RANDOM ADDRESS OF DIRECTORY STORED IN (FET+6).
  1120. * ADDRESS BIAS FOR DIRECTORY STORED IN (FET+7).
  1121. * SIGN BIT IN (FET+7) SET IF PROCEDURE FILE.
  1122. * IF FILE IS ACCESSED FROM *CLD*, A LOCAL FNT ENTRY IS
  1123. * CREATED, ASSIGNED TO THE CONTROL POINT AND POSITIONED
  1124. * AT THE FILE.
  1125. *
  1126. * FOR SUBFUNCTION 1 (ASSIGN *SYSTEM* FILE), A LOCAL
  1127. * FILE WITH *LIFT* FILE TYPE WILL BE CREATED TO
  1128. * ACCESS THE *SYSTEM* FILE IF THE JOB IS SYSTEM
  1129. * ORIGIN OR IF THE USER IS ALLOWED TO ACCESS
  1130. * THE SYSTEM FILE.
  1131.  
  1132.  
  1133. ALF LDD FP
  1134. ZJN ALF4 IF ACCESS LIBRARY FILE FUNCTION
  1135.  
  1136. * ASSIGN *SYSTEM* FILE.
  1137.  
  1138. LDD FF SET INITIAL LOCAL FNT ADDRESS
  1139. RJM SAF SEARCH FOR ASSIGNED FILE
  1140. NJN ALF3 IF LOCAL FILE PRESENT
  1141. ALF1 LDD OC CHECK JOB ORIGIN
  1142. LMK SYOT
  1143. ZJN ALF2 IF SYSTEM ORIGIN JOB
  1144. LDD CP CHECK USER ACCESS
  1145. ADK AACW
  1146. CRD CM
  1147. LDD CM+4
  1148. SHN 21-5
  1149. MJN ALF2 IF LEGAL TO ACCESS SYSTEM FILE
  1150. LDN /ERR/IUA * USER ACCESS NOT VALID.*
  1151. UJN ALF5 PROCESS ERROR
  1152.  
  1153. ALF2 RJM SSA SET SYSTEM FILE FNT ADDRESS
  1154. ERRNZ FNTG CHECK IF NOT WORD 0 OF SYSTEM FNT ENTRY
  1155. CRD CN READ SYSTEM FILE FNT WORD
  1156. RJM CPF COMPARE FILE NAMES
  1157. ZJN ALF3 IF FILE NAMES MATCH
  1158. LDN /ERR/FNF * FILE NOT FOUND.*
  1159. UJN ALF5 PROCESS ERROR
  1160.  
  1161. ALF3 RJM SSA READ SYSTEM FILE FST WORD
  1162. ADN FSTG
  1163. CRD CN
  1164. LJM ALF16 CONTINUE PROCESSING
  1165.  
  1166. * ACCESS LIBRARY FILE.
  1167.  
  1168. ALF4 LDN ZERL CLEAR FET+7
  1169. CRD CM
  1170. LDD FE
  1171. SBN 7
  1172. PJN ALF6 IF FET LONG ENOUGH
  1173. LDN /ERR/FTS * FET TOO SHORT.*
  1174. ALF5 LJM ERR PROCESS ERROR
  1175.  
  1176. ALF6 RJM CPA
  1177. ADN 7
  1178. CWD CM
  1179. LDD FF SET INITIAL FNT ADDRESS
  1180. RJM SAF SEARCH FOR ASSIGNED FILE
  1181.  
  1182. * SEARCH USER LIBRARY DIRECTORY (LBD).
  1183.  
  1184. LDD FE
  1185. SBN 10
  1186. MJN ALF6.5 IF FET LENGTH LESS THAN 9 WORDS
  1187. RJM CPA GET FILE NAME FROM FET+8
  1188. ADN 10
  1189. CRD FN
  1190. LDD FN
  1191. NJN ALF6.5 IF FILE NAME IS NON-ZERO
  1192. RJM CPA RESTORE FILE NAME FROM FET+0
  1193. CRD FN
  1194. ALF6.5 LDK LBDP GET LBD POINTER
  1195. CRD T1
  1196. LDD T3 MOVE POINTER
  1197. STD T1
  1198. LDD T3+1
  1199. STD T1+1
  1200. ALF7 LDD T1 READ DIRECTORY ENTRY
  1201. SHN 14
  1202. ADD T1+1
  1203. CRD CN
  1204. LDN 2 ADVANCE POINTER
  1205. RAD T1+1 ADVANCE DIRECTORY INDEX
  1206. SHN -14
  1207. RAD T1
  1208. LDD CN
  1209. ZJN ALF8 IF END OF DIRECTORY
  1210. RJM CPF COMPARE FILE NAMES
  1211. NJN ALF7 IF NO MATCH
  1212. AOM ALFB FLAG LBD PROCESSING
  1213. LJM AFL13 PROCESS MATCH
  1214.  
  1215. * SEARCH ENTRY POINT DIRECTORY (EPD).
  1216.  
  1217. ALF8 LDD MA SET ENTRY POINT NAME
  1218. CWD FN
  1219. CRD AB
  1220. LDD AB+3
  1221. SCN 77
  1222. STD AB+3
  1223. LDN 0
  1224. STD AB+4
  1225. RJM CLD SEARCH CENTRAL LIBRARY DIRECTORY
  1226. NJN ALF9 IF ENTRY FOUND
  1227. LDD FA
  1228. NJN AFL12 IF FILE ALREADY LOCAL
  1229. LJM ALF1 ASSIGN *SYSTEM* FILE
  1230.  
  1231.  
  1232. * PROCESS CLD ENTRY POINT.
  1233.  
  1234. ALF9 CRD CN READ PST ENTRY
  1235. SBN 1 READ SYSTEM FILE LOCATION
  1236. CRM CRFA,ON
  1237. LDD CN+1
  1238. LPN 37
  1239. LMN 3 RELOCATABLE TYPE RECORD
  1240. NJN ALF10 IF NOT RELOCATABLE
  1241. RJM CRF CREATE RELOCATABLE FNT FOR CLD
  1242. LJM ALF18 RETURN
  1243.  
  1244. ALF10 LMN 20&3 CHECK FOR *PROC*
  1245. ZJN ALF11 IF *PROC* RECORD
  1246. LMN 0&20 *TEXT* RECORD
  1247. NJN AFL12 IF NOT A *TEXT* RECORD
  1248. ALF11 LDN 1 FLAG *PROC* AND *TEXT* FILE PROCESSING
  1249. RJM CFN CREATE FNT ENTRY
  1250. ZJN ALF14 IF SAME ENTRY
  1251. AFL12 LDN 0 CLEAR FNT ADDRESS
  1252. STD FA
  1253. LDN /ERR/DFN * DUPLICATE FILE NAME.*
  1254. LJM ERR PROCESS ERROR
  1255.  
  1256. * BEGIN LBD PROCESSING.
  1257.  
  1258. AFL13 LDN 0 FLAG *ULIB* PROCESSING
  1259. RJM CFN CREATE FNT ENTRY
  1260. NJN AFL12 IF ERROR
  1261. ALF14 LDD T1 READ CONTROL WORD
  1262. SHN 14
  1263. ADD T1+1
  1264. ALFB SBN 0 EPD MATCH FOUND
  1265. * SBN 1 (LBD MATCH FOUND)
  1266. CRD CM
  1267. CRD T3
  1268. LDN 0
  1269. STD CM
  1270. STD T3
  1271. LDD CM+3
  1272. SHN 6
  1273. MJN AFL12 IF NOT RANDOM ADDRESS
  1274. LDC * SET *ULIB*/*PROC* BIT
  1275. * LDC 0 (ULIB PROCESSING)
  1276. * LDC 1 (PROC AND TEXT PROCESSING)
  1277. ALFA EQU *-1
  1278. STD CM
  1279. SOD CM+4
  1280. PJN ALF15 IF NO UNDERFLOW
  1281. AOD CM+4
  1282. SOD CM+3
  1283. ALF15 RJM CPA STORE FET + 6
  1284. ADN 6
  1285. CWD T3
  1286. ADN 1 STORE (FET+7)
  1287. CWD CM
  1288. ALF16 LDD FA
  1289. ZJN ALF17 IF FILE NOT ASSIGNED
  1290. LDN 0 CLEAR FNT ADDRESS
  1291. STD FA
  1292. LJM LFMX EXIT
  1293.  
  1294. ALF17 LDN NEEQ SET NULL EQUIPMENT
  1295. STD EQ
  1296. RJM CPA RESTORE FILE NAME FROM FET+0
  1297. CRD FN
  1298. RJM EFN ENTER FILE NAME
  1299. LDD CN SET FST ENTRY
  1300. STD FS
  1301. LDD CN+1
  1302. STD FS+1
  1303. STD FS+2
  1304. LDN FSMS
  1305. STD FS+3
  1306. ALF18 LDD TH
  1307. ERRNZ 1000-LIFT*100 ADJUST IF VALUE CHANGES
  1308. STD FN+4
  1309. LDD FN+3 SET LOCK
  1310. SCN 77
  1311. LMN 1
  1312. STD FN+3
  1313. NFA FA,R STORE FNT WORD
  1314. CWD FN
  1315. LJM LFMX EXIT
  1316. CFN SPACE 4,15
  1317. *** CFN - CREATE FNT ENTRY.
  1318. *
  1319. * ENTRY (A) = 0, IF NOT A PROC OR TEXT FILE.
  1320. * (A) = 1, IF IS A PROC OR TEXT FILE.
  1321. *
  1322. * EXIT (A) = 0, IF SAME FILE.
  1323. * (A) .NE. 0, IF NOT SAME FILE.
  1324. *
  1325. * USES CM - CM+4, CN - CN+4, FS - FS+4.
  1326. *
  1327. * CALLS SSA.
  1328. *
  1329. * MACROS NFA, SFA.
  1330.  
  1331.  
  1332. CFN SUBR ENTRY/EXIT
  1333. SHN 13
  1334. STM ALFA
  1335. RJM SSA SET SYSTEM FILE FNT ADDRESS
  1336. ADN FSTG
  1337. CRD CN
  1338. LDD FA
  1339. ZJN CFNX IF NO ASSIGNED FILE
  1340. NFA FA,R READ FST WORD
  1341. ADN FSTL
  1342. CRD FS
  1343. SFA EST,FS
  1344. ADK EQDE
  1345. CRD CM
  1346. LDD CM
  1347. SHN -12
  1348. LMN 3
  1349. NJN CFNX IF NOT A SYSTEM DEVICE
  1350. LDD CN+1
  1351. LMD FS+1
  1352. UJN CFNX RETURN
  1353.  
  1354. RNI SPACE 4,10
  1355. ** RNI - RENAME INITIALIZATION.
  1356.  
  1357.  
  1358. RNI RJM CRX CHECK RESEX CALL
  1359. LDC RNM SET ENTRY
  1360. UJN RQI3 SET OVERLAY REQUEST
  1361. RQI SPACE 4,10
  1362. ** RQI - EQUIPMENT REQUEST INITIALIZATION.
  1363. *
  1364. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  1365. * (FN - FN+3) = FILE NAME FROM FET+0.
  1366.  
  1367.  
  1368. RQI LDD FF SET INITIAL FNT ADDRESS
  1369. RJM SAF SEARCH FOR ASSIGNED FILE
  1370. ZJN RQI2 IF FILE NOT FOUND
  1371. RQI1 LDN 0 CLEAR FNT ADDRESS
  1372. STD FA
  1373. LJM LFMX EXIT
  1374.  
  1375. RQI2 LDC REQ SET ENTRY
  1376. RQI3 STM LFMB
  1377. SHN -14 SET OVERLAY NAME
  1378. STM LFMA
  1379. LJM LFM1 PROCESS REQUEST
  1380. LBI SPACE 4,10
  1381. ** LBI - LABEL REQUEST INITIALIZATION.
  1382.  
  1383.  
  1384. LBI RJM CRX CHECK RESEX CALL
  1385. RJM SVF SEARCH FOR VSN FILE
  1386. NJN RQI1 IF NON-VSN FILE FOUND
  1387. LDC LBR SET ENTRY
  1388. UJN RQI3 SET OVERLAY REQUEST
  1389. TITLE RESIDENT PROCESSOR SUBROUTINES.
  1390. CPF SPACE 4,10
  1391. ** CPF - COMPARE FILE NAMES.
  1392. *
  1393. * ENTRY (CN - CN+3) = FIRST FILE NAME.
  1394. * (FN - FN+3) = SECOND FILE NAME.
  1395. *
  1396. * EXIT (A) = 0 IF FILE NAMES MATCH.
  1397.  
  1398.  
  1399. CPF SUBR ENTRY/EXIT
  1400. LDD CN COMPARE FILE NAMES
  1401. LMD FN
  1402. NJN CPFX IF NO MATCH
  1403. LDD CN+1
  1404. LMD FN+1
  1405. NJN CPFX IF NO MATCH
  1406. LDD CN+2
  1407. LMD FN+2
  1408. NJN CPFX IF NO MATCH
  1409. LDD CN+3
  1410. LMD FN+3
  1411. SCN 77
  1412. UJN CPFX RETURN
  1413. CRF SPACE 4,20
  1414. ** CRF - CREATE RELOCATABLE ROUTINE FNT.
  1415. *
  1416. * ENTRY (FN - FN+4) = FILE NAME.
  1417. * (CN - CN+4) = DIRECTORY ENTRY.
  1418. * (T1 - T1+1) = POINTER TO ENTRY IN PST.
  1419. *
  1420. * EXIT (FA) = FILE FNT ADDRESS.
  1421. * (FS - FS+4) = FST INFORMATION.
  1422. *
  1423. * USES EQ, FS - FS+3, CM - CM+4, CN - CN+4.
  1424. *
  1425. * CALLS EFN, SSA.
  1426. *
  1427. * MACROS SFA.
  1428. *
  1429. * NOTE - *CRF* WILL POSITION THE FST TO THE LOCATION
  1430. * OF THE RELOCATABLE PROGRAM ON THE SYSTEM
  1431. * DEVICE OR THE *ASR* DEVICE.
  1432.  
  1433.  
  1434. CRF SUBR ENTRY/EXIT
  1435. LDD T1 READ PST CONTROL WORD
  1436. SHN 14
  1437. ADD T1+1
  1438. CRD CN
  1439. LDN NEEQ SET EST ORDINAL
  1440. STD EQ
  1441. RJM EFN ENTER FILE NAME
  1442.  
  1443. * SET FST INFORMATION.
  1444.  
  1445. LDD CN+2 SET EST ORDINAL
  1446. LPC 777
  1447. STD FS
  1448. LDD CN+1 CHECK FOR ASR RESIDENT PROGRAM
  1449. SHN 21-13
  1450. PJN CRF1 IF NOT *ASR* DEVICE
  1451. SFA EST,FS CHECK FOR DEVICE *ON*
  1452. ADK EQDE
  1453. CRD CM
  1454. LDD CM
  1455. SHN 21-1
  1456. MJN CRF2 IF DEVICE OFF
  1457. LDD CN+3 SET FIRST = CURRENT
  1458. STD FS+1
  1459. STD FS+2
  1460. LDD CN+4
  1461. STD FS+3
  1462. UJN CRFX RETURN
  1463.  
  1464. CRF1 LDD CN+3 GET TRACK
  1465. STM CRFA+3
  1466. LDD CN+4 GET SECTOR
  1467. STM CRFA+4
  1468. CRF2 RJM SSA SET SYSTEM FILE FNT ADDRESS
  1469. ADN FSTG
  1470. CRD CM
  1471. LDD CM SET SYSTEM EQUIPMENT
  1472. STD FS
  1473. LDM CRFA+3 SET FIRST = CURRENT
  1474. STD FS+1
  1475. STD FS+2
  1476. LDM CRFA+4 SET SECTOR
  1477. STD FS+3
  1478. LJM CRFX RETURN
  1479.  
  1480.  
  1481. CRFA BSS 5 SYSTEM DEVICE INFORMATION
  1482. SSA SPACE 4,10
  1483. ** SSA - SET SYSTEM FILE FNT ENTRY ADDRESS.
  1484. *
  1485. * EXIT (A) = ABSOLUTE ADDRESS OF SYSTEM FILE ENTRY.
  1486. *
  1487. * USES CM - CM+4.
  1488.  
  1489.  
  1490. SSA SUBR ENTRY/EXIT
  1491. LDN FNTP FETCH FNT POINTER
  1492. CRD CM
  1493. LDD CM GET SYSTEM FILE FNT ADDRESS
  1494. SHN 14
  1495. ADD CM+1
  1496. * ADN SYFO*FNTE
  1497. ERRNZ SYFO SYSTEM FILE IS NOT FIRST SYSTEM FNT ENTRY
  1498. UJN SSAX RETURN
  1499. SPACE 4,10
  1500. ** COMMON DECKS.
  1501.  
  1502.  
  1503. *CALL COMPCLD
  1504. *CALL COMPCRS
  1505. SPACE 4,10
  1506. IFP HERE DUMP *IFP* REMOTE CODE
  1507. SPACE 4
  1508. ** DEFINE ZERO LEVEL OVERLAY LOAD ADDRESS.
  1509.  
  1510.  
  1511. .L1 EQU 7777-1-ZBFL LENGTH OF *0BF*
  1512. .L2 EQU BFMS-1-ZDFL LENGTH OF *0DF*
  1513. .L3 MIN .L1,.L2
  1514. OVL0 EQU .L3 DEFINE ZERO LEVEL OVERLAY LOAD ADDRESS
  1515. SPACE 4,10
  1516. ERRNG OVL0-* CODE OVERFLOWS INTO ZERO LEVEL OVERLAYS
  1517. OVERLAY (ERROR PROCESSOR.)
  1518. ERP SPACE 4,10
  1519. ** ERP - ERROR PPROCESSOR.
  1520. *
  1521. * ENTRY (EQ) = ERROR NUMBER.
  1522.  
  1523.  
  1524. ENTRY ERP
  1525. LDM ERPA,EQ
  1526. ZJN ERP1 IF NO DAYFILE MESSAGES ARE TO BE ISSUED
  1527. LDC =C* LFM ERROR.*
  1528. RJM DFM ISSUE DAYFILE MESSAGE
  1529. LDD EQ
  1530. LMN /ERR/DFN
  1531. NJN ERP0 IF NOT *DUPLICATE FILE NAME*
  1532. STD FN+4 TERMINATE FILE NAME
  1533. LDD FN+3
  1534. SCN 77
  1535. STD FN+3
  1536. LDM ERPA,EQ ADD FILE NAME TO MESSAGE
  1537. ADN 13
  1538. STD T1
  1539. LDN FN
  1540. RJM /COMPACS/ACS
  1541. LDC =C*. * ADD PERIOD
  1542. RJM /COMPACS/ACS
  1543. ERP0 LDM ERPA,EQ
  1544. LMC CPON
  1545. RJM DFM ISSUE DAYFILE MESSAGE
  1546. ERP1 RJM SNB SET FILE(S) NOT BUSY
  1547. ERP2 RJM SFS SET FILE STATUS
  1548. LDD EQ
  1549. LMN /ERR/LNV
  1550. ZJN ERP4 IF *ACCESS LEVEL NOT VALID FOR FILE* ERROR
  1551. MONITOR ABTM ABORT CONTROL POINT
  1552. ERP3 LJM PPR EXIT TO PP RESIDENT
  1553.  
  1554. ERP4 LDN SVET SET SECURITY VIOLATION ERROR FLAG
  1555. STD CM+1
  1556. MONITOR CEFM SET ERROR FLAG
  1557. MONITOR DPPM DROP PP
  1558. UJN ERP3 EXIT TO PPR
  1559.  
  1560.  
  1561. ERPA BSS 0
  1562. QUAL ERR
  1563. LOC 0
  1564.  
  1565. FNF CON =C* FILE NOT FOUND.*
  1566. FLN CON =C* FILE NAME ERROR.*
  1567. IFT CON =C* INCORRECT FILE TYPE.*
  1568. FLE CON =C* FILE EMPTY.*
  1569. MNA CON =C* MAGNETIC TAPE SUBSYSTEM NOT ACTIVE.*
  1570. CFE CON =C* COMMAND FILE ERROR.*
  1571. IEQ CON =C* INCORRECT EQUIPMENT.*
  1572. WEQ CON =C* EQUIPMENT NOT AVAILABLE.*
  1573. DFN CON =C* DUPLICATE FILE NAME - *
  1574. IUA CON =C* USER ACCESS NOT VALID.*
  1575. LNV CON =C* ACCESS LEVEL NOT VALID FOR FILE.*
  1576. CON 0 NOT USED
  1577. RDE CON 0 RESEX DETECTED ERROR
  1578. IOE CON =C* I/O SEQUENCE ERROR.*
  1579. CON 0 NOT USED
  1580. CON 0 NOT USED
  1581. NMA CON =C* NO MASS STORAGE AVAILABLE.*
  1582. ILM CON =C* INCORRECT FILE MODE.*
  1583. FTS CON =C* FET TOO SHORT.*
  1584. GTL CON =C* GETFNT TABLE TOO LARGE.*
  1585. CON 0 NOT USED
  1586. PBB CON =C* PARAMETER BLOCK BUSY.*
  1587. AOR CON =C* ADDRESS OUT OF RANGE.*
  1588. SYE CON =C* SYSTEM ERROR.*
  1589. IRA CON =C* INCORRECT RANDOM ADDRESS.*
  1590. ODE CON =C* OPTICAL DISK SYSTEM ERROR.*
  1591. IFS CON =C* INCORRECT FILE STATUS.*
  1592.  
  1593. LOC *O
  1594. QUAL *
  1595. SPACE 4,10
  1596. ERRNG OVL0-* CODE OVERFLOWS INTO ZERO LEVEL OVERLAYS
  1597. OVERFLOW OVL
  1598. OVERLAY (LOCAL FILE FUNCTIONS.)
  1599. SPACE 4,10
  1600. **** ADDITIONAL DIRECT LOCATION ASSIGNMENTS.
  1601.  
  1602.  
  1603. UD EQU 60 - 64 UDT WORD BUFFER (5 LOCATIONS)
  1604. ST EQU 65 FILINFO STATUS BYTE (1 LOCATION)
  1605. SX EQU 66 FILINFO EXTENDED STATUS (1 LOCATION)
  1606.  
  1607. ****
  1608. RNM SPACE 4,25
  1609. *** FUNCTION 0.
  1610. * RENAME FILE.
  1611. *
  1612. * RENAME FILE TO THE NAME SPECIFIED IN (FET+6).
  1613. *
  1614. * RENAME,A=B.
  1615. * RENAME *B* TO *A*.
  1616. *
  1617. * 1. IF FILE *A* DOES NOT EXIST, THEN THE FILE NAME OF *B*
  1618. * IS CHANGED TO *A* IN THE LOCAL FNT.
  1619. *
  1620. * 2. IF FILE *A* EXISTS, THEN
  1621. * A. *0DF* IS CALLED TO DROP THE LOCAL AND GLOBAL FNT
  1622. * ENTRY FOR FILE *A*.
  1623. * NOTE - IF FILE *A* IS NAMED /INPUT/, *0DF* DOES NOT
  1624. * DROP THE FILE BUT RATHER CHANGES THE NAME TO /INPUT*/.
  1625. *
  1626. * B. THE FILE NAME OF *B* IS CHANGED TO *A* IN THE
  1627. * LOCAL FNT.
  1628. *
  1629. * * INCORRECT FILE TYPE.* - FILE *B* IS NOT TYPE LOFT, OR THE
  1630. * FILE TYPES OF *A* AND *B* ARE NOT THE SAME.
  1631. *
  1632. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  1633.  
  1634.  
  1635. ENTRY RNM
  1636. LCN 6 CHECK FET LENGTH .GE. 7
  1637. RJM CFL
  1638. LDD FF SET INITIAL FNT ADDRESS
  1639. RJM SIF SEARCH AND INTERLOCK FILE
  1640. LDD FA SET FNT ADDRESS OF *B*
  1641. STM RNMA
  1642. LDD FS+2 CHECK CURRENT TRACK
  1643. NJN RNM1 IF FILE HAS BEEN USED
  1644. AOM RNMD SET ERROR FLAG
  1645. RNM1 LDD FS SAVE EST ORDINAL IN *CFT*
  1646. STM CFTB
  1647. SFA EST
  1648. ADK EQDE
  1649. RJM CDP CHECK FOR DMP= CALLING PROGRAM
  1650. LDD CM+3
  1651. LPN 77
  1652. STM RNMC SET STATUS
  1653. LDD CM+4 CHECK FILE TYPE
  1654. STM RNMB PRESET FILE TYPE
  1655. SHN -6
  1656. RAM CFTA SET FILE TYPE
  1657.  
  1658. * GET NEW FILE NAME FROM FET.
  1659.  
  1660. RJM CPA READ NEW NAME - *A*
  1661. ADN 6
  1662. CRD FN
  1663. LDD FA SET FNT ADDRESS OF FILE *B*
  1664. STM SNBA
  1665. LDN 0 SET NO INITIAL FNT ADDRESS
  1666. RJM SAF SEARCH FOR ASSIGNED FILE
  1667. NJN RNM2 IF FILE *A* ALREADY EXISTS
  1668. * LDN 0
  1669. LJM RNM5 GET *B* FST
  1670.  
  1671. * CHECK FILE TYPE OF *A*.
  1672.  
  1673. RNM2 LMM RNMA
  1674. ZJN RNM3 IF SAME FILE
  1675. RJM SFB SET FILE *A* BUSY
  1676. ZJN RNM4 IF NO REJECT ON FILE INTERLOCK
  1677. LDN /ERR/IOE * I/O SEQUENCE ERROR.*
  1678. UJN RNM6 PROCESS ERROR
  1679.  
  1680. * EXIT WHEN FILE NAMES ARE THE SAME.
  1681.  
  1682. RNM3 STD FA
  1683. LJM LFMX EXIT
  1684.  
  1685. RNM4 RJM CFT CHECK FILE TYPE
  1686. NJN RNM7 IF INCORRECT FILE TYPE
  1687. RJM DRF DROP FILE *A*
  1688. * LDN 0
  1689. RNM5 STM SNBA
  1690. LDC 0 RESTORE FILE *B* FNT ADDRESS
  1691. RNMA EQU *-1
  1692. STD FA
  1693. NFA FA,R
  1694. ADN FSTL
  1695. CRD FS LOAD ORIGINAL FST ENTRY
  1696. RJM VFN VERIFY FILE NAME
  1697. NJN RNM8 IF NO ERROR
  1698. LDN /ERR/FLN FILE NAME ERROR
  1699. RNM6 LJM ERR PROCESS ERROR
  1700.  
  1701. * EXIT IF INCORRECT FILE TYPE ON FILE *B*.
  1702.  
  1703. RNM7 LDN /ERR/IFT * INCORRECT FILE TYPE.*
  1704. UJN RNM6 PROCESS ERROR
  1705.  
  1706. * CHANGE FILE NAME FROM *B* TO *A* IN FNT WORD.
  1707.  
  1708. RNM8 LDC * RESTORE FILE TYPE OF *B*
  1709. RNMB EQU *-1 FILE TYPE
  1710. STD FN+4
  1711. LDD FN+3 RESTORE FILE STATUS OF *B*
  1712. SCN 77
  1713. ADC *
  1714. RNMC EQU *-1 FILE STATUS
  1715. STD FN+3
  1716. NFA FA,R WRITE NEW FNT WORD
  1717. CWD FN
  1718. LDD FN+4
  1719. SHN -6
  1720. LMN PTFT
  1721. NJN RNM10 IF NOT PRIMARY TERMINAL TYPE
  1722. RNMD LDN 0
  1723. * LDN 1 (FILE NOT USED)
  1724. ZJN RNM9 IF FILE USED
  1725. LDN /ERR/FLE EMPTY FILE
  1726. LJM ERR PROCESS ERROR
  1727.  
  1728. RNM9 RJM UPP UPDATE PRIMARY FILE POINTERS
  1729. RNM10 LDN 0 SET TO NON-TAPE EQUIPMENT
  1730. * LDN 1 (TAPE EQUIPMENT)
  1731. RNME EQU *-1
  1732. NJN RNM11 IF TAPE EQUIPMENT
  1733. SFA EST,FS GET EQUIPMENT TYPE
  1734. ADK EQDE
  1735. CRD CM
  1736. LDD CM+3
  1737. LMC 2ROD
  1738. ZJP RNM12 IF OPTICAL DISK FILE
  1739. LJM LFMX EXIT
  1740.  
  1741. * PROCESS TAPE EQUIPMENT.
  1742.  
  1743. RNM11 LDN 0
  1744. STD CM+1
  1745. MONITOR ROCM ROLLOUT JOB
  1746. LDD IA READ REQUEST
  1747. CRD CM
  1748. CRD CN
  1749. LDD CN+1
  1750. SCN 77
  1751. ADN 20 SET RECALL PP PROCESSOR BIT
  1752. STD CN+1
  1753. STD CM+1
  1754. LDD CN+3
  1755. LPN 77
  1756. STD CN+3
  1757. LDD CP
  1758. ADC SPCW
  1759. CWD CN ENTER EXTERNAL CALL
  1760. LDD RA REWRITE USERS CALL
  1761. SHN 6
  1762. ADN 1
  1763. CWD CM
  1764. RJM CPA SET ORIGINAL NAME IN FET + 0
  1765. CRD FN
  1766. LJM LFMX EXIT
  1767.  
  1768. * PROCESS OPTICAL DISK EQUIPMENT.
  1769.  
  1770. RNM12 RJM CPA READ OLD FILE NAME
  1771. CRD FN
  1772. RJM SOF SEARCH OPTICAL DISK FILE
  1773. ZJN RNM14 IF FILE FOUND
  1774. RNM13 NFA FA,R RESTORE FNT/FST WORDS
  1775. CRD FN
  1776. ADN FSTL
  1777. CRD FS
  1778. LDN /ERR/ODE * OPTICAL DISK SYSTEM ERROR.*
  1779. LJM ERR PROCESS ERROR
  1780.  
  1781. RNM14 NFA FA,R SET NEW FILE NAME IN LABEL RECORD
  1782. CRM BFMS+2,ON
  1783. LDM BFMS+5
  1784. SCN 77
  1785. STM BFMS+5
  1786. LDN 0
  1787. STM BFMS+6
  1788. SETMS IO,RW
  1789. LDC BFMS+WLSF
  1790. RJM WDS WRITE SECTOR
  1791. MJN RNM13 IF WRITE ERROR
  1792. ENDMS
  1793. NFA FA,R RESTORE FNT/FST WORDS
  1794. CRD FN
  1795. ADN FSTL
  1796. CRD FS
  1797. LJM LFMX EXIT
  1798. STS SPACE 4,10
  1799. *** FUNCTION 3.
  1800. * SET FILE STATUS.
  1801. *
  1802. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  1803. * (FN - FN+3) = FILE NAME FROM FET+0.
  1804. * (FF) = FET SPECIFIED FNT ADDRESS.
  1805. * (FP) = FILE STATUS.
  1806.  
  1807.  
  1808. ENTRY STS ENTRY
  1809. LDD CP CHECK FOR *SSJ=* CALLER
  1810. ADC SEPW
  1811. CRD CM
  1812. LDD CM
  1813. SHN 21-2
  1814. MJN STS2 IF CALLER IS *SSJ=*
  1815.  
  1816. * FOR NON-*SSJ=* CALLER, VERIFY THAT VALUE SPECIFIED
  1817. * IS ALLOWED. OTHERWISE IGNORE REQUEST.
  1818.  
  1819. AOM STSA INDICATE NON-*SSJ=* CALLER
  1820. LDN TNFSL-1
  1821. STD T1
  1822. STS1 LDM TNFS,T1 CHECK IF SPECIFIED VALUE IS IN TABLE
  1823. LMD FP
  1824. ZJN STS2 IF NEW STATUS FOUND IN TABLE
  1825. SOD T1
  1826. PJN STS1 IF NOT END OF TABLE
  1827. LJM LFMX EXIT
  1828.  
  1829. STS2 LDD FP CHECK SPECIFIED STATUS
  1830. SBN MXST
  1831. MJN STS5 IF LEGAL STATUS
  1832. LDN /ERR/IFS * INCORRECT FILE STATUS.*
  1833. STS3 LJM ERR PROCESS ERROR
  1834.  
  1835. * CHECK CURRENT VALUE OF FILE STATUS FIELD.
  1836.  
  1837. STS4 NFA FA,R READ LOCAL FNT WORD
  1838. CRD FS
  1839. RJM SFB SET FILE BUSY
  1840. ZJN STS6 IF FILE SET BUSY
  1841. LDN /ERR/IOE * I/O SEQUENCE ERROR.*
  1842. UJN STS3 PROCESS ERROR
  1843.  
  1844. STS5 LDD FF SEARCH FOR ASSIGNED FILE
  1845. RJM SAF
  1846. NJN STS4 IF FILE FOUND
  1847. RJM EFN CREATE LOCAL FILE
  1848. NFA FA,R
  1849. CRD CM
  1850.  
  1851. * FOR A NON-*SSJ=* CALLER, VERIFY THAT THE CURRENT STATUS
  1852. * IS A VALUE THAT MAY BE CHANGED.
  1853.  
  1854. STS6 LDN 0
  1855. * LDN 1 (NON-*SSJ=* CALLER)
  1856. STSA EQU *-1
  1857. ZJN STS9 IF CALLER IS *SSJ=*
  1858. LDN TOFSL-1
  1859. STD T1
  1860. STS7 LDM TOFS,T1 COMPARE EXISTING STATUS WITH TABLE
  1861. LMD CM+4
  1862. LPN 77
  1863. ZJN STS9 IF EXISTING STATUS FOUND IN TABLE
  1864. SOD T1
  1865. PJN STS7 IF NOT END OF TABLE
  1866. STS8 LJM LFMX IGNORE REQUEST
  1867.  
  1868. * SET NEW FILE STATUS.
  1869.  
  1870. STS9 LDD CM+4
  1871. SCN 77
  1872. LMD FP
  1873. STD CM+4
  1874. NFA FA,R REWRITE FNT WORD
  1875. CWD CM
  1876. UJN STS8 EXIT
  1877.  
  1878.  
  1879. * TABLE OF STATUSES THAT MAY BE SET BY USER.
  1880.  
  1881. TNFS BSS 0
  1882. CON 0
  1883. CON NDST
  1884. TNFSL EQU *-TNFS
  1885.  
  1886.  
  1887. * TABLE OF STATUSES THAT MAY BE CHANGED BY USER.
  1888.  
  1889. TOFS BSS 0
  1890. CON 0
  1891. CON UPST
  1892. CON NDST
  1893. TOFSL EQU *-TOFS
  1894. FSL SPACE 4,20
  1895. *** FSL - FUNCTION 7.
  1896. *
  1897. * SET FILE ACCESS LEVEL.
  1898. *
  1899. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  1900. * (FET+1, BIT 39) = SECURITY PROCESSING BIT-
  1901. * = NONZERO, TAKE ACCESS LEVEL
  1902. * FROM FET+4, BITS 36-38.
  1903. * = ZERO, USE JOB SECURITY ACCESS LEVEL.
  1904. * (FN - FN+4) = FILE NAME.
  1905.  
  1906.  
  1907. ENTRY FSL
  1908. LDN 0 SET FILE BUSY
  1909. RJM SIF
  1910. SFA EST,FS READ EST ENTRY
  1911. ADK EQDE
  1912. CRD CN
  1913. LDD CN+3
  1914. RJM CTE CHECK FOR TAPE EQUIPMENT
  1915. PJN FSL0 IF TAPE FILE
  1916. LDD CM+4 CHECK FILE TYPE
  1917. SHN -6
  1918. LMN LOFT
  1919. ZJN FSL1 IF *LOFT*
  1920. LMN PTFT&LOFT
  1921. ZJN FSL1 IF *PTFT*
  1922. LMN QFFT&PTFT
  1923. ZJN FSL1 IF *QFFT*
  1924. FSL0 LDN /ERR/IFT * INCORRECT FILE TYPE.*
  1925. LJM ERR PROCESS ERROR
  1926.  
  1927. * EXTRACT REQUESTED SECURITY ACCESS LEVEL.
  1928.  
  1929. FSL1 RJM CPA READ FET+1
  1930. ADN 1
  1931. CRD CN
  1932. ADN 3 READ FET+4
  1933. CRD CM
  1934. LDD CN+1 CHECK *SP* BIT
  1935. SHN 21-3
  1936. PJN FSL2 IF NOT SET
  1937. LDD CM+1 EXTRACT SECURITY ACCESS LEVEL
  1938. UJN FSL3 CHECK REQUESTED LEVEL
  1939.  
  1940. FSL2 LDD CP READ JOB SECURITY WORD
  1941. ADC JSCW
  1942. CRD CM
  1943. LDD CM+1 EXTRACT JOB ACCESS LEVEL
  1944. SHN -11
  1945.  
  1946. * CHECK AND SET FILE SECURITY ACCESS LEVEL.
  1947.  
  1948. FSL3 LPN 7 SAVE REQUESTED LEVEL
  1949. STD CM+4
  1950. STM FSLB
  1951. LDD FA SET FNT ADDRESS
  1952. STD CM+3
  1953. LDN VSFS SET SUBFUNCTION
  1954. STD CM+1
  1955. MONITOR VSAM
  1956. LDD CM+1
  1957. NJN FSL4 IF INCORRECT ACCESS LEVEL
  1958. LJM LFMX EXIT
  1959.  
  1960. * PROCESS SECURITY VIOLATION.
  1961.  
  1962. FSL4 LDC FSLA+3 SET FILE NAME IN MESSAGE
  1963. STD T1
  1964. LDN FN
  1965. RJM /COMPACS/ACS
  1966. LDC =C*, * APPEND COMMA
  1967. RJM /COMPACS/ACS
  1968. LDC ** DETERMINE MNEMONIC OF ACCESS LEVEL
  1969. FSLB EQU *-1
  1970. SHN 2
  1971. ADC TALV APPEND NEW ACCESS LEVEL
  1972. RJM /COMPACS/ACS
  1973. LDC =C*. * TERMINATE MESSAGE WITH A PERIOD
  1974. RJM /COMPACS/ACS
  1975. LDC FSLA+ACFN ISSUE ACCOUNT FILE MESSAGE
  1976. RJM DFM
  1977. LDN /ERR/LNV * ACCESS LEVEL NOT VALID FOR FILE.*
  1978. LJM ERR PROCESS ERROR
  1979.  
  1980. FSLA DATA C*MFFI, *
  1981. BSSZ 12
  1982. LCK SPACE 4,10
  1983. *** FUNCTION 10.
  1984. * LOCK FILE.
  1985. * SET WRITE LOCKOUT FOR FILE.
  1986. * FILE MUST BE TYPE *LOFT* OR *PTFT*.
  1987. * THE FILE CAN ALSO BE TYPE *ROFT* IF CALLED BY *RESTART*.
  1988. *
  1989. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  1990.  
  1991.  
  1992. ENTRY LCK
  1993. LCK1 LDD FF SET INITIAL FNT ADDRESS
  1994. RJM SIF SEARCH AND INTERLOCK FILE
  1995. LDD CM+4
  1996. SHN -6
  1997. LMN LOFT
  1998. ZJN LCK3 IF LOCAL FILE TYPE
  1999. LMN PTFT&LOFT
  2000. ZJN LCK3 IF PRIMARY FILE TYPE
  2001. LMN ROFT&PTFT
  2002. NJN LCK1.1 IF NOT ROLLOUT FILE TYPE
  2003. LDM LCKA
  2004. LPN 1
  2005. ZJN LCK1.1 IF NOT *LOCK* FUNCTION
  2006. LDD CP
  2007. ADK SEPW
  2008. CRD CN
  2009. LDD CN+2
  2010. SHN 21-13
  2011. MJN LCK3 IF *RESTART*
  2012. LCK1.1 LDN /ERR/IFT * INCORRECT FILE TYPE.*
  2013. LCK2 LJM ERR PROCESS ERROR
  2014.  
  2015. LCK3 LDM LCKA
  2016. LPN 1
  2017. NJN LCK4 IF LOCK
  2018. LDD CM+3 CHECK FOR EXECUTE ONLY
  2019. SHN 21-2
  2020. PJN LCK4 IF NOT EXECUTE-ONLY
  2021. LDN /ERR/ILM * INCORRECT FILE MODE.*
  2022. UJN LCK2 PROCESS ERROR
  2023.  
  2024. LCK4 LDD CM+3
  2025. SCN 1
  2026. LCKA LMN 1
  2027. * LMN 0 (UNLOCK FUNCTION)
  2028. STD CM+3
  2029. NFA FA,R STORE FNT ENTRY
  2030. CWD CM
  2031. LJM LFMX EXIT
  2032. ULK SPACE 4,10
  2033. *** FUNCTION 11.
  2034. * UNLOCK FILE.
  2035. * CLEAR WRITE LOCKOUT FOR FILE.
  2036. * FILE MUST BE TYPE *LOFT* OR *PTFT* AND NOT EXECUTE-ONLY.
  2037.  
  2038.  
  2039. ENTRY ULK
  2040. SOM LCKA DO NOT SET WRITE LOCKOUT
  2041. LJM LCK1 PROCESS AS LOCK
  2042. RLS SPACE 4,10
  2043. *** FUNCTION 12.
  2044. * RETURN FILE FOUND/NOT FOUND.
  2045. *
  2046. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  2047. * (FN - FN+3) = FILE NAME FROM FET+0.
  2048.  
  2049.  
  2050. ENTRY RLS
  2051. LDD FF SET INITIAL FNT ADDRESS
  2052. RJM SAF SEARCH FOR ASSIGNED FILE
  2053. ZJN RLS2 IF NOT FOUND
  2054. RJM SFB SET FILE BUSY
  2055. ZJN RLS1 IF NO REJECT ON FILE INTERLOCK
  2056. LDN /ERR/IOE *I/O SEQUENCE ERROR.*
  2057. LJM ERR PROCESS ERROR
  2058.  
  2059. RLS1 LDN 2 FLAG FILE FOUND
  2060. RLS2 STD LS
  2061. LJM LFMX EXIT
  2062. RCP SPACE 4,20
  2063. *** FUNCTION 13.
  2064. * RETURN CURRENT POSITION AND STATUS.
  2065. * RETURN FILE ACCESS LEVEL IN FET+4 IF BIT 39 IN FET+1 IS SET.
  2066. * RETURN FNT ENTRY IN (FET+5).
  2067. * RETURN FST ENTRY IN (FET+6).
  2068. * OPTIONALLY RETURNS ADDITIONAL MAGNETIC TAPE INFORMATION
  2069. * TO FET+8 IN LABEL MACRO FORMAT.
  2070. * FIELDS RETURNED TO FET+8 INCLUDE -
  2071. * 1. LABEL BIT (58)
  2072. * 2. NONSTANDARD LABEL BIT (57)
  2073. * 3. TAPE DEVICE TYPE (55-56)
  2074. * 4. DENSITY (51-53)
  2075. * 5. CONVERSION MODE (48-50)
  2076. * 6. PROCESSING OPTIONS (36-47)
  2077. * 7. FORMAT (30-35)
  2078. * 8. NOISE SIZE (24-29) - IN FRAMES
  2079. * 9. BLOCK SIZE (0-23) - IN CM WORDS
  2080. * REFER TO LFM FUNCTION 24 DOCUMENTATION FOR FURTHER
  2081. * DETAILS ON CONTENTS OF FET+8 FIELDS.
  2082. *
  2083. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  2084.  
  2085.  
  2086. ENTRY RCP
  2087. LCN 6 CHECK FET LENGTH .GE. 7
  2088. RJM CFL
  2089. LDD FF SET INITIAL FNT ADDRESS
  2090. RJM SIF SEARCH AND INTERLOCK FILE
  2091. RJM CPA READ FIRST
  2092. ADN 1
  2093. CRD CN
  2094. ADN 3
  2095. CRD UD READ FET+4
  2096. ADN 1
  2097. CWD CM STORE FNT
  2098. ADN 1
  2099. CWD FS STORE FST
  2100. LDD CN+1 CHECK WHETHER TO RETURN FILE ACCESS LEVEL
  2101. SHN 21-3
  2102. PJN RCP0 IF NOT RETURNING FILE ACCESS LEVEL
  2103. NFA FA,R GET FILE ACCESS LEVEL
  2104. ADN FUTL
  2105. CRD CM
  2106. LDD CM+2 SET FILE ACCESS LEVEL IN FET+4
  2107. LMD UD+1
  2108. LPN 7
  2109. LMD UD+1
  2110. STD UD+1
  2111. RJM CPA WRITE FET+4
  2112. ADN 4
  2113. CWD UD
  2114. RCP0 LDN 0 INITIALIZE *FIRST* EQUIPMENT TYPE
  2115. STD CN
  2116. LDD FS READ EST ENTRY
  2117. ZJN RCP1 IF NO EQUIPMENT ASSIGNED
  2118. SFA EST
  2119. ADK EQDE
  2120. CRD CM
  2121. LDD CM+3 SET EQUIPMENT TYPE
  2122. STD CN
  2123. LDD CM CHECK EQUIPMENT TYPE
  2124. SHN 21-13
  2125. MJN RCP1 IF MASS STORAGE
  2126. SHN 21-12-21+13
  2127. MJN RCP1 IF ALLOCATABLE TYPE
  2128. LDC 4000
  2129. RAD CN
  2130. RCP1 RJM CPA STORE FIRST
  2131. ADN 1
  2132. CWD CN
  2133. LDD FP FUNCTION PARAMETER
  2134. LMN 1
  2135. NJN RCP2 IF EXTRA TAPE INFORMATION NOT REQUESTED
  2136. LDD CM+3
  2137. RJM CTE CHECK FOR TAPE EQUIPMENT
  2138. PJN RCP3 IF TAPE EQUIPMENT
  2139. RCP2 LJM LFMX EXIT
  2140.  
  2141. RCP3 STD FP SET TAPE DEVICE TYPE
  2142. LCN 10 CHECK FET LENGTH .GE. 9D
  2143. RJM CFL
  2144. LDN /MTX/UST4 GET *UST4* AND *UST5* WORDS FROM UDT
  2145. STD T1
  2146. LDN 2
  2147. RJM TUW READ UDT WORDS
  2148. LDD MA
  2149. CRD UD (UD - UD+4) = UST4
  2150. ADN 1
  2151. CRD CM (CM - CM+4) = UST5
  2152. LDN ZERL CLEAR FET+8 ASSEMBLY BUFFER
  2153. CRD CN
  2154. LDD UD SET LABELED FLAGS AND DEVICE TYPE
  2155. LPC 3700
  2156. STD CN
  2157. LDD CM CONVERT DENSITY
  2158. SHN -3
  2159. LPN 7
  2160. STD T2
  2161. LDD CM CONVERT CONVERSION MODE
  2162. LPN 7
  2163. SBN 1
  2164. RCP5 LMM TDEN-1,T2
  2165. RAD CN
  2166. LDD UD+1 SET PROCESSING OPTIONS
  2167. STD CN+1
  2168.  
  2169. * CONVERT NOISE BYTES (NB) AND FILL STATUS BACK TO NOISE SIZE
  2170. * (NS) IN FRAMES.
  2171. * 7-TRACK FORMULA -
  2172. * NS = NB * 2
  2173. * IF FILL STATUS, NS = NS - 1 = NB * 2 - 1
  2174. * 9-TRACK FORMULA -
  2175. * NS = ( NB * 3 ) / 2
  2176. * IF FILL STATUS, NS = NS - 1 = ( NB * 3 ) / 2 - 1
  2177.  
  2178. LDD FP CHECK TAPE DEVICE TYPE
  2179. LPN 1
  2180. NJN RCP7 IF *CT* OR *AT* DEVICE
  2181. LDD UD+2 FILL STATUS BIT
  2182. LPN 40
  2183. STD T1
  2184. LDD UD+2 NOISE SIZE IN BYTES
  2185. LPN 37
  2186. STD T2
  2187. SHN 1 NB * 2
  2188. STD CN+2
  2189. LDD FP
  2190. ZJN RCP6 IF 7-TRACK
  2191. LDD T2
  2192. ADD CN+2 NB + NB * 2
  2193. SHN -1 ( NB * 3 ) / 2
  2194. STD CN+2
  2195. RCP6 LDD T1
  2196. ZJN RCP7 IF NO FILL STATUS
  2197. SOD CN+2
  2198. RCP7 LDD UD+2 DATA FORMAT
  2199. LPC 7700
  2200. RAD CN+2
  2201.  
  2202. * RETURN BLOCK SIZE (IN CM WORDS).
  2203. * BLOCK SIZE = BLOCK WORD COUNT + CHUNK COUNT * 600B.
  2204.  
  2205. LDD UD+3 BLOCK WORD COUNT
  2206. STD CN+4
  2207. LDD UD+4 CHUNK COUNT
  2208. ZJN RCP9 IF NOT LONG BLOCK
  2209. STD T1
  2210. RCP8 LDC /MTX/LBWD
  2211. RAD CN+4
  2212. SHN -14
  2213. RAD CN+3
  2214. SOD T1
  2215. NJN RCP8 IF OVERFLOW COUNT NOT EXHAUSTED
  2216.  
  2217. * RETURN ADDITIONAL TAPE INFORMATION TO FET+8.
  2218.  
  2219. RCP9 RJM CPA STORE FET + 8
  2220. ADN 10
  2221. CWD CN
  2222. LJM LFMX EXIT
  2223. TUW SPACE 4,15
  2224. ** TUW - TRANSFER UDT WORDS.
  2225. *
  2226. * ENTRY (A) = NUMBER OF WORDS TO TRANSFER.
  2227. * (T1) = FIRST WORD FROM UDT TO BE TRANSFERRED.
  2228. * (FS+1) = UDT ADDRESS OF ASSIGNED TAPE.
  2229. *
  2230. * EXIT CONTIGUOUS UDT WORDS REQUESTED IN MESSAGE BUFFER.
  2231. *
  2232. * ERROR TO *ERR* IF *MAGNET* NOT PRESENT.
  2233. * TO *LFMX*, IF ERROR FLAG SET ON CONTROL POINT.
  2234. *
  2235. * USES T1, T2, CM - CM+4.
  2236. *
  2237. * MACROS DELAY, MONITOR, PAUSE.
  2238.  
  2239.  
  2240. TUW SUBR ENTRY/EXIT
  2241. SHN 6
  2242. STD T2
  2243. LDD FS+1 UDT ADDRESS OF ASSIGNED TAPE
  2244. ZJN TUW2 IF NO UDT ADDRESS IN FST WORD
  2245. RAD T1 FWA IN MAGNET TO BE TRANSFERRED
  2246. TUW1 LDD T2 NUMBER OF WORDS TO TRANSFER
  2247. STD CM+3
  2248. LDD T1
  2249. STD CM+4
  2250. LDN 0 SET READ
  2251. STD CM+1
  2252. LCN 7777-MTSI SET *MAGNET* SUBSYSTEM ID
  2253. STD CM+2
  2254. MONITOR TDAM GET UDT WORDS
  2255. LDD CM+1
  2256. ZJN TUWX IF TRANSFER COMPLETE
  2257. SBN 3
  2258. TUW2 PJN TUW3 IF *MAGNET* NOT UP OR FUNCTION REJECT
  2259. PAUSE
  2260. DELAY
  2261. LDD CM+1
  2262. ZJN TUW1 IF NO ERROR FLAGS SET ON CP
  2263. LJM LFMX EXIT
  2264.  
  2265. TUW3 LDN /ERR/MNA * MAGNETIC TAPE SUBSYSTEM NOT ACTIVE *
  2266. LJM ERR PROCESS ERROR
  2267. RFI SPACE 4,30
  2268. *** RFI - FUNCTION 32.
  2269. * RETURN FILE INFORMATION.
  2270. * RETURN FILE INFORMATION TO USER IN SPECIFIED PARAMETER BLOCK.
  2271. *
  2272. * ENTRY (IR+3 - IR+4) = ADDRESS OF PARAMETER BLOCK.
  2273. * THE PARAMETER BLOCK SHOULD HAVE THE FOLLOWING FORMAT.
  2274. * (FE) = LENGTH OF PARAMETER BLOCK - 1.
  2275. * (FF) = FET SPECIFIED FNT ADDRESS.
  2276. *
  2277. *T ADDR 42/LFN, 6/LEN, 11/0, 1/0
  2278. *T,ADDR+1 60/,
  2279. *T,ADDR+2 60/,
  2280. *T,ADDR+3 60/,
  2281. *T,ADDR+4 60/,
  2282. * LEN = LENGTH OF TABLE, MUST BE .GE. 5.
  2283. *
  2284. * EXIT TO *ERR* IF ERROR ENCOUNTERED.
  2285. * PARAMETER BLOCK RETURNED TO USER IN THE FOLLOWING
  2286. * FORMAT.
  2287. *
  2288. *T ADDR 42/LFN, 6/LEN, 11/0, 1/1
  2289. *T ADDR+1 12/DEVICE TYPE, 12/RESERVED, 30/STATUS BITS, 6/FT
  2290. *T,ADDR+2 12/EQ, 48/0
  2291. *T,ADDR+3 24/FILE LENGTH IN SECTORS, 6/0, 24/CRA, 6/0
  2292. *T,ADDR+4 60/RESERVED
  2293. * LEN = LENGTH OF TABLE.
  2294. * STATUS BITS -
  2295. * 9/RESERVED.
  2296. * 2/TAPE DEVICE TYPE.
  2297. * 0 = 7-TRACK TAPE (*MT*).
  2298. * 1 = CARTRIDGE TAPE (*CT*).
  2299. * 2 = 9-TRACK TAPE (*NT*).
  2300. * 3 = ACS CARTRIDGE TAPE (*AT*).
  2301. * 1/TAPE FILE.
  2302. * 1/FILE AT EOI (MASS STORAGE ONLY).
  2303. * 1/FILE AT EOF (MASS STORAGE ONLY).
  2304. * 1/FILE AT BOI (MASS STORAGE ONLY).
  2305. * 1/LABELED TAPE FILE.
  2306. * 1/9-TRACK TAPE FILE.
  2307. * 1/7-TRACK TAPE FILE.
  2308. * 1/FILE OPEN.
  2309. * 1/INTERACTIVE TERMINAL FILE.
  2310. * 1/MASS STORAGE FILE.
  2311. * 1/FILE ON INACCESSIBLE DEVICE.
  2312. * 1/RESERVED.
  2313. * 1/FILE IS EXECUTE-ONLY.
  2314. * 1/FILE IN *RA* OR *RM* MODE.
  2315. * 1/FILE IN *RU* OR *RM* MODE.
  2316. * 1/FILE MAY BE ALTERED (*U*, *M* OR *W* MODE).
  2317. * 1/FILE MAY BE EXTENDED (*A*, *M* OR *W* MODE).
  2318. * 1/FILE MAY BE SHORTENED (*W* MODE).
  2319. * 1/FILE MAY NOT BE WRITTEN.
  2320. * FT = FILE TYPE.
  2321. * EQ = EST ORDINAL.
  2322. * CRA = CURRENT RANDOM ADDRESS.
  2323. *
  2324. * ADDITIONAL INFORMATION IS RETURNED BASED ON THE *KEY*
  2325. * SPECIFIED IN BITS 0-4 OF EACH WORD DEFINED IN THE *FILINFO*
  2326. * PARAMETER BLOCK BEYOND THE STANDARD 5 WORD LENGTH. THE KEY
  2327. * WORDS BEGIN AT THE *FILINFO* PARAMETER BLOCK ADDRESS + 5
  2328. * AND CAN BE IN ANY ORDER.
  2329. *
  2330. * KEY RETURNED WORD (IF APPLICABLE - ELSE BIT 5 IS SET)
  2331. *
  2332. * 1 48/0, 6/F, 1/0, 5/1
  2333. * 2 41/0, 1/IEP, 6/LBTYP, 3/DEN, 3/CV, 1/0, 5/2
  2334. * 3 RESERVED FOR ANSI 1977 LBL. STD.
  2335. * 4-13B RESERVED FOR CDC (COMMON O/S)
  2336. * 14B 12/0, 24/BSIZE, 12/PO, 6/NOISE, 1/0, 5/14B
  2337. * 15B-17B RESERVED FOR CDC (NOS ONLY)
  2338. * 20B-27B RESERVED FOR CDC (OTHER O/S-S)
  2339. * 30B-37B RESERVED FOR INSTALLATIONS
  2340. * F = TAPE FORMAT.
  2341. * 0 = INTERNAL BINARY (I)
  2342. * 1 = NOS/BE INTERNAL BINARY (SI)
  2343. * 2 = FOREIGN (F)
  2344. * 3 = STRANGER (S)
  2345. * 4 = LONG BLOCK STRANGER (L)
  2346. * 5 = LONG BLOCK INTERNAL BINARY (LI)
  2347. * 6-77B = RESERVED FOR CDC
  2348. * IEP = ERROR PROCESSING INHIBITED (IF SET).
  2349. * LBTYP = LABEL TYPE.
  2350. * 0 = UNLABELED
  2351. * 1 = STANDARD (ANSI 1969 STD.)
  2352. * 2 = RESERVED FOR CDC (ANSI 1977 STD.)
  2353. * 3-10B = RESERVED FOR CDC
  2354. * 11B-13B = NOS/BE ONLY
  2355. * 14B = NONSTANDARD (SKIP LABELS)
  2356. * 15B-67B = RESERVED FOR CDC
  2357. * 70B-77B = RESERVED FOR INSTALLATIONS
  2358. * DEN = TAPE DENSITY.
  2359. * 0 = NOT APPLICABLE
  2360. * 1 = 556 BPI (7-TRACK)
  2361. * 2 = 200 BPI (7-TRACK)
  2362. * 3 = 800 BPI (7- OR 9-TRACK)
  2363. * 4 = 1600 CPI (9-TRACK)
  2364. * 5 = 6250 CPI (9-TRACK)
  2365. * 6 = 38000 CPI (CARTRIDGE)
  2366. * 7 = RESERVED FOR CDC
  2367. * CV = CONVERSION MODE.
  2368. * 0 = BCD CONVERSION (7-TRACK)
  2369. * 1 = ASCII CONVERSION (9-TRACK)
  2370. * 2 = EBCDIC CONVERSION (9-TRACK)
  2371. * 3-7 = RESERVED FOR CDC
  2372. * BSIZE = MAXIMUM BLOCK SIZE (IN CM WORDS).
  2373. * PO = PROCESSING OPTIONS.
  2374. * 0 = ABORT ON IRRECOVERABLE PARITY ERROR
  2375. * WITH EP SET
  2376. * 1 = DO NOT ABORT ON IRRECOVERABLE PARITY
  2377. * WITHOUT EP SET
  2378. * 2 = INHIBIT ERROR PROCESSING
  2379. * 3 = ENFORCE RING OUT
  2380. * 4 = ENFORCE RING IN
  2381. * 5 = INHIBIT UNLOAD
  2382. * 6 = DISABLE GCR HARDWARE WRITE ERROR CORRECTION
  2383. * 7 = ISSUE ALL ERROR RECOVERY MESSAGES TO USER
  2384. * DAYFILE
  2385. * 8 = RESERVED FOR CDC
  2386. * 9-11 = END-OF-REEL PROCESSING OPTION
  2387. * 9 = OPTION *S*
  2388. * 10 = OPTION *P*
  2389. * 11 = OPTION *I*
  2390. * NOISE = NOISE SIZE (IN FRAMES).
  2391.  
  2392.  
  2393. ENTRY RFI RETURN FILE INFORMATION
  2394. LDN 0 CLEAR STATUS BYTES
  2395. STD ST
  2396. STD SX
  2397. LDN FIPBL*5-1*5-1
  2398. STD T1
  2399. RFI1 LDN 0 INITIALIZE PARAMETER BLOCK BUFFER
  2400. STM FIPB,T1
  2401. SOD T1
  2402. PJN RFI1 IF MORE WORDS TO CLEAR
  2403. RJM CPA GET PARAMETER BLOCK ADDRESS
  2404. CRD FN READ FIRST WORD OF PARAMETER BLOCK
  2405. ADN 1
  2406. CWM FIPB,ON ZERO WORD ONE OF PARAMETER BLOCK
  2407. LDD FN+4 CHECK IF COMPLETION BIT SET
  2408. SHN 21-0
  2409. PJN RFI2 IF COMPLETION BIT NOT SET
  2410. LDN /ERR/PBB * PARAMETER BLOCK BUSY.*
  2411. LJM ERR EXIT TO ERROR PROCESSOR
  2412.  
  2413. RFI2 LCN FIPBL-1 CHECK FET LENGTH .GE. MINIMUM LENGTH
  2414. RJM CFL
  2415. LDD FF SET INITIAL FNT ADDRESS
  2416. RJM SAF SEARCH FOR ASSIGNED FILE
  2417. NJN RFI3 IF FILE FOUND
  2418. LDN FIPBL-2 CLEAR REMAINDER OF PARAMETER BLOCK
  2419. STD T4
  2420. RJM CPA DETERMINE RETURN ADDRESS
  2421. ADN 2
  2422. CWM FIPB,T4
  2423. LJM LFMX EXIT
  2424.  
  2425. RFI3 RJM SFB SET FILE BUSY
  2426. ZJN RFI4 IF NO REJECT ON FILE INTERLOCK
  2427. LDN 0
  2428. STD FA
  2429. LDN /ERR/IOE * I/O SEQUENCE ERROR.*
  2430. LJM ERR EXIT TO ERROR PROCESSOR
  2431.  
  2432. * DETERMINE FILE TYPE.
  2433.  
  2434. RFI4 STD T4
  2435. LDD CM+4 GET FILE TYPE FROM FNT
  2436. SHN -6
  2437. STD T3
  2438. RFI5 LDM TAFT,T4 CHECK TABLE FOR MATCH
  2439. LMD T3
  2440. ZJN RFI6 IF MATCH
  2441. AOD T4
  2442. LMN TAFTL
  2443. NJN RFI5 IF NOT END OF TABLE
  2444. LDN 77 SET FILE TYPE = OTHER
  2445. STD T4
  2446. RFI6 LDD T4
  2447. STM FIPB+4 PLACE FILE TYPE IN PARAMETER BLOCK
  2448. LDD CM+3 PICK UP FILE ACCESS MODE
  2449. LPN 35 ISOLATE ACCESS MODE
  2450. STD EQ SAVE FILE ACCESS MODE
  2451. LDD FS GET EST ORDINAL
  2452. STD T5 SAVE EST ORDINAL
  2453. STM FIPB+1*5 PLACE EST ORDINAL IN PARAMETER BLOCK
  2454. ZJN RFI7 IF NOT ASSIGNED TO MASS STORAGE
  2455. SFA EST READ EST ENTRY FOR FILE
  2456. ADK EQDE
  2457. CRD CN
  2458. LDD CN+3 GET DEVICE TYPE
  2459. STM FIPB
  2460. LDD CN
  2461. SHN 21-13
  2462. MJN RFI7 IF MASS STORAGE
  2463. LJM RFI18 PROCESS NON MASS STORAGE
  2464.  
  2465. * CHECK FOR EOI, EOF, AND BOI FOR MASS STORAGE FILES.
  2466.  
  2467. RFI7 LDD FS+4 SET MASS STORAGE AND OPEN BITS
  2468. SHN -3
  2469. LPN 40
  2470. ADN 10
  2471. STD ST
  2472. LDD T5
  2473. ZJN RFI7.1 IF NOT ASSIGNED TO MASS STORAGE DEVICE
  2474. SETMS STATUS
  2475. LDM MSD
  2476. SHN 21-6
  2477. PJN RFI7.1 IF DEVICE ACCESSIBLE
  2478. LDN 4
  2479. RAD ST
  2480. RFI7.1 LDD FS+4 CHECK FOR EOF OR EOI
  2481. SHN 21-3
  2482. PJN RFI9 IF NOT EOI OR EOF
  2483. SHN 3-2
  2484. MJN RFI8 IF NOT EOF
  2485. LDN 2 SET BIT TO INDICATE EOF
  2486. UJN RFI10 SET UP FILE MODE FIELDS
  2487.  
  2488. RFI8 LDN 4 SET BIT TO INDICATE EOI
  2489. SHN 11
  2490. RAD ST
  2491. RFI9 LDD FS+1 CHECK FOR EMPTY FILE
  2492. ZJN RFI9.1 IF EMPTY FILE
  2493. LMD FS+2
  2494. NJN RFI11 IF FIRST TRACK .NE. CURRENT TRACK
  2495. LDD FS+3
  2496. LMN FSMS
  2497. NJN RFI11 IF CURRENT SECTOR .NE. FSMS
  2498. RFI9.1 LDN 1 SET BIT TO INDICATE BOI
  2499. RFI10 SHN 11
  2500. RAD ST
  2501.  
  2502. * DETERMINE FILE LENGTH.
  2503.  
  2504. RFI11 LDD FS+1 SET FIRST TRACK
  2505. ZJN RFI13 IF NO FIRST TRACK
  2506. STD T6
  2507. RJM SEI DETERMINE FILE LENGTH
  2508. SOD T3 SET FILE LENGTH IN PARAMETER BLOCK
  2509. PJN RFI12 IF NO BORROW
  2510. LDD T2
  2511. ZJN RFI12 IF LENGTH IS ZERO
  2512. SOD T2 BORROW
  2513. LCN 0
  2514. RFI12 STM FIPB+2*5+1
  2515. LDD T2
  2516. STM FIPB+2*5
  2517.  
  2518. * DETERMINE RANDOM ADDRESS.
  2519.  
  2520. RFI13 LDD FS+2 SET TRACK
  2521. ZJN RFI14 IF NO CURRENT TRACK
  2522. STD T6
  2523. LDD FS+3 SET SECTOR
  2524. STD T7
  2525. LDD FS+1
  2526. RJM SRA SET RANDOM ADDRESS
  2527. LDD RI SET RANDOM ADDRESS IN PARAMETER BLOCK
  2528. SHN 6
  2529. STM FIPB+2*5+3
  2530. SHN -14
  2531. STM FIPB+2*5+2
  2532. LDD RI+1
  2533. SHN 6
  2534. STM FIPB+2*5+4
  2535. SHN -14
  2536. RAM FIPB+2*5+3
  2537.  
  2538. * DETERMINE FILE ACCESS MODE.
  2539.  
  2540. RFI14 AOD ST DEFAULT TO EXECUTE MODE
  2541. LDN 0
  2542. STD T4
  2543. RFI15 LDM TAFM,T4 CHECK TABLE FOR MATCH
  2544. LMD EQ
  2545. LPN 77
  2546. ZJN RFI16 IF MATCH
  2547. AOD T4
  2548. LMN TAFML
  2549. NJN RFI15 IF NOT END OF TABLE
  2550. LDN SWET SET SYSTEM SOFTWARE ERROR FLAG
  2551. STD CM+2
  2552. LDC * SET ADDRESS WHERE ERROR DETECTED
  2553. STD CM+1
  2554. MONITOR CHGM CONDITIONALLY HANG PP
  2555. LJM LFMX RETURN
  2556.  
  2557. * PROGRAMMER NOTE - BECAUSE ALL POSSIBLE FILE MODES
  2558. * SHOULD BE INCLUDED IN TABLE *TAFM*, A MATCH
  2559. * FAILURE INDICATES THAT THE FNT ENTRY FOR THE
  2560. * FILE IS INCORRECT.
  2561.  
  2562. RFI16 LDM TAFM,T4 SET BITS TO INDICATE MODE
  2563. SCN 77
  2564. RFI17 RAM FIPB+4
  2565. LJM RFI27 CHECK FOR KEYWORD
  2566.  
  2567. * CHECK FOR TAPE OR TTY FILE.
  2568.  
  2569. RFI18 LDD CN+3 CHECK FOR *TTY* OR TAPE FILE
  2570. RJM CTE CHECK FOR TAPE EQUIPMENT
  2571. MJN RFI18.1 IF NOT TAPE EQUIPMENT
  2572. SHN 1 SAVE TAPE DEVICE TYPE AND TAPE FLAG
  2573. LMN 1
  2574. STD SX
  2575. LDD CN+3
  2576. LMC 2RMT
  2577. ZJN RFI21 IF *MT*
  2578. LMC 2RNT&2RMT
  2579. ZJN RFI20 IF *NT*
  2580. UJN RFI21.1 CHECK IF LABELED TAPE
  2581.  
  2582. RFI18.1 LDD CN+3
  2583. LMC 2RTT
  2584. ZJN RFI19 IF *TT*
  2585. LDN 20 CLEAR STATUS BYTE
  2586. RFI19 LMN 20 SET BIT TO INDICATE *TT*
  2587. STD ST
  2588. LJM RFI23 CHECK ACCESS MODE
  2589.  
  2590. RFI20 LDD HN
  2591. RFI21 ADD HN
  2592. STD ST SET 7-TRACK BIT OR 9-TRACK BIT
  2593. RFI21.1 LDD FS+4 CHECK IF LABELLED TAPE
  2594. LPC 4000
  2595. SHN -3
  2596. RAD ST
  2597.  
  2598. * CHECK FOR FILE OPENED.
  2599.  
  2600. LDN /MTX/UVSN
  2601. STD T1
  2602. LDN 1
  2603. RJM TUW TRANSFER UDT WORD
  2604. LDD MA
  2605. CRD UD GET VSN AND OPEN STATUS
  2606. LDD UD+3 CHECK FOR OPEN BIT
  2607. SHN 21-11
  2608. PJN RFI22 IF NOT OPEN
  2609. LDN 40 SET OPEN BIT FOR REPLY
  2610. RAD ST
  2611.  
  2612. * CHECK FOR WRITE LOCKOUT.
  2613.  
  2614. RFI22 LDN /MTX/UST1 GET DEVICE STATUS FROM UDT
  2615. STD T1
  2616. LDN 1
  2617. RJM TUW
  2618. LDD MA
  2619. CRD CN
  2620. LDD CN+4 CHECK FOR WRITE RING
  2621. SHN 21-7
  2622. PJN RFI24 IF NO WRITE RING
  2623.  
  2624. RFI23 LDD EQ PICK UP FILE ACCESS MODE
  2625. SHN 21-0
  2626. PJN RFI25 IF NOT WRITE LOCKOUT
  2627. RFI24 LDD HN SET READ BIT
  2628. UJN RFI26 SET UP FILE MODE FIELD
  2629.  
  2630. RFI25 LDC 300 SET READ AND WRITE BITS
  2631. RFI26 RAM FIPB+4
  2632.  
  2633. RFI27 LDD ST SET STATUS BYTES
  2634. STM FIPB+3
  2635. LDD SX
  2636. STM FIPB+2
  2637.  
  2638. * RETURN STANDARD PARAMETER BLOCK.
  2639.  
  2640. LDN FIPBL-1 NUMBER OF WORDS TO TRANSFER
  2641. STD FP
  2642. RJM CPA DETERMINE RETURN ADDRESS
  2643. ADN 1
  2644. CWM FIPB,FP
  2645. LDD FE SET KEYWORD COUNT - 1
  2646. SBN FIPBL-1+1
  2647. STD FE
  2648. PJN RFI32 IF KEYWORDS TO PROCESS
  2649. RFI28 LJM LFMX RETURN
  2650.  
  2651. * PROCESS KEY WORDS.
  2652.  
  2653. RFI29 LDN 40 SET KEY NOT DEFINED FLAG
  2654. RAD CN+4
  2655. RFI30 RJM CPA GET PARAMETER BLOCK ADDRESS
  2656. ADD FP
  2657. CWD CN RETURN KEYWORD
  2658. RFI31 SOD FE
  2659. MJN RFI28 IF NO MORE KEYS TO PROCESS
  2660. RFI32 AOD FP ADVANCE PARAMETER BLOCK POINTER
  2661. RJM CPA GET PARAMETER BLOCK ADDRESS
  2662. ADD FP
  2663. CRD CM READ NEXT KEY WORD
  2664. LDN ZERL INITIALIZE KEY WORD FIELDS
  2665. CRD CN
  2666. LDD CM+4
  2667. LPN 37
  2668. ZJN RFI31 IF ZERO KEY, IGNORE WORD
  2669. STD CN+4
  2670. LDN TAPKL
  2671. STD T1
  2672. RFI33 LCN TAPKE SEARCH FOR KEY
  2673. RAD T1
  2674. MJN RFI29 IF END OF TABLE
  2675. LDM TAPK,T1
  2676. LMD CN+4
  2677. NJN RFI33 IF NO MATCH
  2678. LDM TAPK+1,T1 GET KEY WORD PROCESSOR ADDRESS
  2679. STD T1
  2680. LJM 0,T1 JUMP TO KEYWORD PROCESSOR
  2681. RFI SPACE 4,15
  2682. ** KEY WORD PROCESSORS.
  2683. *
  2684. * ENTRY (CN - CN+3) = 0.
  2685. * (CN+4) = KEY.
  2686. * (FS - FS+4) = FST ENTRY.
  2687. * (ST) = FILE STATUS
  2688. * (SX) = EXTENDED FILE STATUS
  2689. * (UD - UD+4) = WORD *UVSN* FROM THE UDT
  2690. *
  2691. * EXIT (CN - CN+4) = RETURNED KEY WORD.
  2692. * TO *RFI29*, IF KEY NOT APPLICABLE FOR FILE TYPE.
  2693. * TO *RFI30*, TO PROCESS NEXT KEY WORD.
  2694. *
  2695. * NOTES KEY WORD PROCESSORS CAN USE THE FOLLOWING
  2696. * DIRECT CELLS -
  2697. * EQ, OC, CM - CM+4, CN - CN+4, RI - RI+1.
  2698. RFI SPACE 4,10
  2699. ** KEY 1.
  2700. * RETURN TAPE FORMAT.
  2701.  
  2702.  
  2703. RFI34 LDD SX CHECK FILE TYPE
  2704. LPN 1
  2705. ZJN RFI35 IF NOT TAPE FILE
  2706. LDD FS+2 DATA FORMAT
  2707. SHN -10
  2708. SHN 6
  2709. RAD CN+4
  2710. LJM RFI30 GET NEXT WORD
  2711.  
  2712. RFI35 LJM RFI29 SET KEY NOT DEFINED FLAG
  2713. RFI SPACE 4,10
  2714. ** KEY 2.
  2715. * RETURN LABEL TYPE, DENSITY, CONVERSION MODE, AND
  2716. * INHIBIT ERROR PROCESSING BIT.
  2717.  
  2718.  
  2719. RFI36 RJM TAI TRANSFER ADDITIONAL TAPE INFORMATION
  2720. ZJN RFI35 IF NOT TAPE FILE
  2721. LDM FIPB+2*5
  2722. SHN 21-12
  2723. PJN RFI39 IF UNLABELED
  2724. SHN 21-11-21+12
  2725. PJN RFI37 IF STANDARD LABEL
  2726. LDN 14
  2727. UJN RFI38 SET LABEL TYPE
  2728.  
  2729. RFI37 LDN 1 SET ANSI LABELS
  2730. RFI38 STD CN+3
  2731. RFI39 LDM FIPB+2*5+1 ERROR PROCESSING INHIBITED
  2732. LPN 4
  2733. SHN 6-2
  2734. RAD CN+3
  2735. LDM FIPB+3*5 CONVERT DENSITY
  2736. SHN -3
  2737. LPN 7
  2738. STD T2
  2739. LDM FIPB+3*5 CONVERT CONVERSION MODE
  2740. LPN 7
  2741. SBN 1
  2742. RFI39.1 LMM TDEN-1,T2
  2743. SHN 6
  2744. RAD CN+4 MERGE DENSITY, CONVERSION MODE, AND KEY
  2745. LJM RFI30 RETURN KEY WORD
  2746. RFI SPACE 4,20
  2747. ** KEY 4.
  2748. * RETURN CURRENT VSN AND REEL NUMBER.
  2749.  
  2750.  
  2751. RFI40 RJM TAI TRANSFER ADDITIONAL TAPE INFORMATION
  2752. ZJN RFI40.1 IF NOT TAPE FILE
  2753. LDD UD MOVE VSN TO KEY WORD
  2754. STD CN
  2755. LDD UD+1
  2756. STD CN+1
  2757. LDD UD+2
  2758. STD CN+2
  2759. LDM FIPB+4*5+3 UDT REEL NUMBER
  2760. ADN 1
  2761. STD CN+3 ACTUAL REEL NUMBER TO KEY WORD
  2762. LJM RFI30 RETURN KEY WORD
  2763.  
  2764. RFI40.1 LJM RFI29 SET KEY NOT DEFINED FLAG
  2765. RFI SPACE 4,15
  2766. ** KEY 14B.
  2767. * RETURN BLOCK SIZE, PROCESSING OPTIONS, AND NOISE SIZE.
  2768. *
  2769. * NOTES TO CONVERT NOISE BYTES (NB) AND FILL STATUS FIELDS
  2770. * IN UDT WORD UST4 BACK TO NOISE SIZE (NS) IN FRAMES,
  2771. * THE FOLLOWING FORMULAS ARE USED.
  2772. * 7-TRACK FORMULA -
  2773. * NS = NB * 2
  2774. * IF FILL STATUS, NS = NS - 1 = NB * 2 - 1
  2775. * 9-TRACK FORMULA -
  2776. * NS = ( NB * 3 ) / 2
  2777. * IF FILL STATUS, NS = NS - 1 = ( NB * 3 ) / 2 - 1
  2778.  
  2779.  
  2780. RFI41 RJM TAI TRANSFER ADDITIONAL TAPE INFORMATION
  2781. NJN RFI42 IF TAPE FILE
  2782. LJM RFI29 SET KEY NOT DEFINED FLAG
  2783.  
  2784. RFI42 LDD SX
  2785. LPN 2
  2786. NJN RFI44.1 IF CARTRIDGE TAPE (*CT* OR *AT*)
  2787. LDM FIPB+2*5+2 FILL STATUS BIT
  2788. LPN 40
  2789. STD T1
  2790. LDM FIPB+2*5+2 NOISE SIZE IN BYTES
  2791. LPN 37
  2792. STD T2
  2793. SHN 1 NB * 2
  2794. STD T3
  2795. LDD ST
  2796. SHN 21-6
  2797. MJN RFI43 IF 7-TRACK
  2798. LDD T2
  2799. ADD T3 NB + NB * 2
  2800. SHN -1 ( NB * 3 ) / 2
  2801. STD T3
  2802. RFI43 LDD T1
  2803. ZJN RFI44 IF NO FILL STATUS
  2804. SOD T3
  2805. RFI44 LDD T3 MERGE NOISE SIZE AND KEY
  2806. SHN 6
  2807. RAD CN+4
  2808. RFI44.1 LDM FIPB+2*5+1 SET PROCESSING OPTIONS
  2809. STD CN+3
  2810.  
  2811. * RETURN BLOCK SIZE (IN CM WORDS).
  2812. * BLOCK SIZE = BLOCK WORD COUNT + CHUNK COUNT * 600B.
  2813.  
  2814. LDM FIPB+2*5+3 BLOCK WORD COUNT
  2815. STD CN+2
  2816. LDM FIPB+2*5+4 CHUNK COUNT
  2817. ZJN RFI46 IF NOT LONG BLOCK
  2818. STD T2
  2819. RFI45 LDC /MTX/LBWD
  2820. RAD CN+2
  2821. SHN -14
  2822. RAD CN+1
  2823. SOD T2
  2824. NJN RFI45 IF OVERFLOW COUNT NOT EXHAUSTED
  2825. RFI46 LJM RFI30 RETURN KEY WORD
  2826. SPACE 4,10
  2827. ** KEY 15B.
  2828. * RETURN DIRECT ACCESS FILE VALIDATION SIZE AND ACCESS LEVEL.
  2829.  
  2830. RFI49 NFA FA,R
  2831. ADK FNTL
  2832. CRD CM GET FILE TYPE
  2833. ADK FUTL-FNTL
  2834. CRM FIPB,ON GET ACCESS LEVEL/FILE SIZE INDEX
  2835. LDM FIPB+2 SAVE ACCESS LEVEL IN PARAMETER BLOCK
  2836. LPN 7
  2837. SHN 6
  2838. RAD CN+4
  2839. LDD CM+4 CHECK FILE TYPE
  2840. SHN -6
  2841. LMN PMFT
  2842. NJN RFI51 IF NOT A DIRECT ACCESS FILE
  2843. LDM FIPB+2 CHECK FILE SIZE INDEX
  2844. SHN -6
  2845. LPN 7
  2846. NJN RFI50 IF INDEX IS NOT SYSTEM CONTROLLED
  2847. LDD CP GET EJT ORDINAL
  2848. ADN TFSW
  2849. CRD CM
  2850. SFA EJT,CM GET SERVICE CLASS
  2851. ADK SCLE
  2852. CRD CM
  2853. LDD CM
  2854. SHN -6
  2855. RJM RJC GET ADDRESS OF JOB CONTROL BLOCK
  2856. ZJN RFI51 IF NO JCB FOR SERVICE CLASS
  2857. ADK PFCT READ DIRECT ACCESS FILE SIZE LIMIT
  2858. CRD CM
  2859. LDD CM
  2860. SHN -11
  2861. RFI50 SHN 1 OFFSET INTO *TDMS*
  2862. STD T2
  2863. LDM TMDS,T2 SAVE DIRECT ACCESS VALIDATION
  2864. STD CN+2
  2865. LDM TMDS+1,T2
  2866. STD CN+3
  2867. RFI51 LJM RFI30 RETURN KEYWORD
  2868. RFI SPACE 4,10
  2869. ** KEY 16B. SPACE REMAINING ON OPTICAL DISK
  2870. *
  2871. * 48/ SPACE, 6/ 0, 6/16B
  2872. * SPACE = NUMBER OF SECTORS REMAINING IN FILE IF THIS
  2873. * FILE IS OPEN FOR WRITE.
  2874. * = NUMBER OF SECTORS REMAINING IN PARTITION OR
  2875. * NUMBER OF PRE-ALLOCATED SECTORS REMAINING IF
  2876. * THIS FILE IS NOT OPEN.
  2877.  
  2878.  
  2879. RFI60 NFA FA,A GET CURRENT POSITION
  2880. ADK FSTL
  2881. CRD T0
  2882. ADK FUTL-FSTL GET STARTING DISK ADDRESS AND SIZE
  2883. CRD CM
  2884. LDD CM+4 COMPUTE SPACE REMAINING
  2885. SBD T2
  2886. STD CN+3
  2887. SHN -12 SAVE REMAINDER
  2888. LPN 1
  2889. ADD T1
  2890. LDD CM+3
  2891. SBD T1
  2892. STD CN+2
  2893. LJM RFI30 RETURN KEYWORD
  2894. SLF SPACE 4,10
  2895. *** SLF - FUNCTION 33B.
  2896. * SET LAST FILE EXECUTED.
  2897. *
  2898. * SET FNT POINTER IN THE CONTROL POINT AREA TO INDICATE
  2899. * THE FILE FROM WHICH THE LAST MAIN PROGRAM WAS LOADED.
  2900. *
  2901. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  2902. * FET MUST BE SET BUSY ON ENTRY.
  2903. *
  2904. * EXIT CPA UPDATED, IF NO ERRORS.
  2905. *
  2906. * ERROR TO *ERR*, IF ERRORS.
  2907. *
  2908. * USES CM - CM+4, FN - FN+4.
  2909. *
  2910. * CALLS CPA, SIF.
  2911.  
  2912.  
  2913. ENTRY SLF
  2914. LDD CP CHECK FOR SSJ=
  2915. ADC SEPW
  2916. CRD CM
  2917. LDD CM
  2918. SHN 21-2
  2919. MJN SLF1 IF SSJ= PRESENT
  2920. LDN /ERR/IUA * USER ACCESS NOT VALID.*
  2921. UJN SLF2 PROCESS ERROR
  2922.  
  2923. SLF1 RJM CPA READ FET+0
  2924. CRD FN
  2925. LDD FN+4 CHECK COMPLETE BIT
  2926. LPN 1
  2927. ZJN SLF3 IF FET BUSY
  2928. LDN /ERR/PBB * PARAMETER BLOCK BUSY.*
  2929. SLF2 LJM ERR PROCESS ERROR
  2930.  
  2931. SLF3 LDD FF SEARCH FOR FILE
  2932. RJM SIF
  2933. LDD CP UPDATE CPA
  2934. ADC EOCW
  2935. CRD CM
  2936. LDD FA
  2937. STD CM
  2938. LDD CP
  2939. ADC EOCW
  2940. CWD CM
  2941. LJM LFMX RETURN
  2942. TAFT SPACE 4,10
  2943. ** TAFT - TABLE OF FILE TYPES.
  2944.  
  2945.  
  2946. TAFT BSS 0
  2947. LOC 0
  2948. CON LOFT LOCAL
  2949. CON INFT INPUT
  2950. CON QFFT QUEUED
  2951. CON 7777 RESERVED
  2952. CON PMFT PERMANENT (DIRECT)
  2953. CON 7777 RESERVED
  2954. CON PTFT PRIMARY
  2955. CON LIFT LIBRARY
  2956. LOC *O
  2957. TAFTL EQU *-TAFT
  2958. TAFM SPACE 4,10
  2959. ** TAFM - TABLE OF FILE MODES.
  2960. *
  2961. * TABLE IS IN THE FOLLOWING FORMAT.
  2962. *
  2963. * 6/BS,6/FM
  2964. *
  2965. * WHERE BS = BITS TO SET IN PARAMETER BLOCK TO INDICATE
  2966. * FILE MODE.
  2967. * FM = FILE ACCESS MODE OBTAINED FROM THE *FNT*.
  2968.  
  2969.  
  2970. TAFM BSS 0
  2971. LOC 0
  2972. VFD 6/1,6/1 READ
  2973. VFD 6/17,6/0 WRITE
  2974. VFD 6/5,6/20 APPEND
  2975. VFD 6/15,6/30 MODIFY
  2976. VFD 6/61,6/31 READ/ALLOW MODIFY
  2977. VFD 6/41,6/21 READ/ALLOW APPEND
  2978. VFD 6/0,6/4 EXECUTE (INDIRECT ACCESS PERMANENT FILE)
  2979. VFD 6/0,6/5 EXECUTE (DIRECT ACCESS PERMANENT FILE)
  2980. VFD 6/11,6/10 UPDATE
  2981. VFD 6/21,6/11 READ/ALLOW UPDATE
  2982. LOC *O
  2983. TAFML EQU *-TAFM
  2984. TAPK SPACE 4,10
  2985. ** TAPK - TABLE OF PARAMETER BLOCK KEYS.
  2986. *
  2987. *T 12/ KEY, 12/ PRAD
  2988. * KEY *FILINFO* ADDITIONAL INFORMATION KEY
  2989. * PRAD KEY WORD PROCESSOR ADDRESS.
  2990.  
  2991.  
  2992. TAPK BSS 0
  2993. LOC 0
  2994. CON FMTK,RFI34 FORMAT KEY
  2995. TAPKE EQU * ENTRY LENGTH
  2996. CON LTYK,RFI36 LABEL TYPE, DENSITY, CONVERSION MODE KEY
  2997. CON VSNK,RFI40 VSN, REEL NUMBER KEY
  2998. CON BSZK,RFI41 BLOCK SIZE, NOISE SIZE, OPTIONS KEY
  2999. CON DSVK,RFI49 DIRECT ACCESS FILE SIZE, ACCESS LEVEL
  3000. CON SPOD,RFI60 SPACE REMAINING ON OPTICAL DISK
  3001. LOC *O
  3002. TAPKL EQU *-TAPK
  3003. TDEN SPACE 4,10
  3004. ** TDEN - TABLE OF DENSITY CONVERSIONS.
  3005.  
  3006.  
  3007. TDEN BSS 0
  3008. LOC 1
  3009. CON 2*10B 200 BPI
  3010. CON 1*10B 556 BPI
  3011. CON 3*10B 800 BPI/CPI
  3012. CON 4*10B 1600 CPI
  3013. CON 5*10B 6250 CPI
  3014. CON 6*10B 38000 CPI
  3015. LOC *O
  3016. SPACE 4,10
  3017. ** TMDS - TABLE OF DIRECT ACCESS FILE VALIDATION SIZES.
  3018.  
  3019. TMDS BSS 0
  3020. LOC 0
  3021. CSR DSRNG7
  3022. CSR DSRNG1
  3023. CSR DSRNG2
  3024. CSR DSRNG3
  3025. CSR DSRNG4
  3026. CSR DSRNG5
  3027. CSR DSRNG6
  3028. CSR DSRNG7
  3029. LOC *O
  3030. TITLE SUBROUTINES.
  3031. CDP SPACE 4,10
  3032. ** CDP - CHECK FOR DMP= PROGRAM.
  3033. *
  3034. * ENTRY (A) = EST ENTRY ADDRESS.
  3035. *
  3036. * ERROR TO *ERR*, IF CALLING PROGRAM IS *DMP=*.
  3037. *
  3038. * USES CN - CN+4.
  3039. *
  3040. * CALLS CTE.
  3041.  
  3042.  
  3043. CDP SUBR ENTRY/EXIT
  3044. CRD CN READ EST ENTRY
  3045. LDD CN+3
  3046. RJM CTE CHECK FOR TAPE EQUIPMENT
  3047. PJN CDP1 IF TAPE EQUIPMENT
  3048. LDD CN+3
  3049. LMC 2RTE
  3050. NJN CDPX IF NOT *TE* EQUIPMENT
  3051. CDP1 AOM RNME SAVE TAPE STATUS
  3052. LDD CP CHECK FOR *SPCW* BUSY
  3053. ADC SPCW
  3054. CRD CN
  3055. LDD CN
  3056. ZJN CDPX IF DMP= REQUEST NOT ALREADY PRESENT
  3057. LDN /ERR/SYE * SYSTEM ERROR.*
  3058. LJM ERR PROCESS ERROR
  3059. CFT SPACE 4,10
  3060. ** CFT - CHECK FILE TYPE.
  3061. *
  3062. * ENTRY (CM - CM+4) = FNT WORD.
  3063. *
  3064. * EXIT (A) .NE. 0, IF INCORRECT FILE TYPE.
  3065. * (RNMB) CHANGED IF RETAINING OLD FILE TYPE.
  3066. *
  3067. * USES T1, T7, CN - CN+4.
  3068.  
  3069.  
  3070. CFT SUBR ENTRY/EXIT
  3071. LDD CM+4
  3072. SHN -6
  3073. STD T7
  3074. LDN TPFTL+1 SET TABLE LENGTH
  3075. STD T1
  3076. CFT1 SOD T1
  3077. ZJN CFTX IF END OF TABLE
  3078. LDM TPFT-1,T1
  3079. LMD T7
  3080. NJN CFT1 IF NOT MATCHING FILE TYPE
  3081. CFTA LDN 0
  3082. * LDN (A) (FILE TYPE OF *B*)
  3083. LMN LOFT
  3084. ZJN CFT2 IF LOCAL FILE TYPE
  3085. LMD T7
  3086. LMN LOFT
  3087. NJN CFTX IF NOT SAME TYPE
  3088. CFT2 LDC **
  3089. CFTB EQU *-1 (EST ORDINAL OF FILE *B*)
  3090. SFA EST READ EST ENTRY
  3091. ADK EQDE
  3092. CRD CN
  3093. LDD CM+4 PROPAGATE FILE TYPE OF *A*
  3094. SCN 77
  3095. STM RNMB
  3096. LDD CN
  3097. SHN 0-13 GET MASS STORAGE FLAG
  3098. LMN 1
  3099. UJN CFTX RETURN
  3100. TPFT SPACE 4,10
  3101. ** TPFT - TABLE OF PROPAGATED FILE TYPES.
  3102.  
  3103.  
  3104. TPFT BSS 0
  3105. CON PTFT PRIMARY TERMINAL
  3106. TPFTL EQU *-TPFT TABLE LENGTH
  3107. CTE SPACE 4,10
  3108. ** CTE - CHECK FOR TAPE EQUIPMENT.
  3109. *
  3110. * ENTRY (A) = EQUIPMENT MNEMONIC.
  3111. *
  3112. * EXIT (A) < 0 IF NOT TAPE EQUIPMENT.
  3113. * = 0 IF *MT*.
  3114. * = 1 IF *CT*.
  3115. * = 2 IF *NT*.
  3116. * = 3 IF *AT*.
  3117.  
  3118.  
  3119. CTE3 LCN 1 INDICATE NON-TAPE EQUIPMENT
  3120.  
  3121. CTE SUBR ENTRY/EXIT
  3122. LMC 2RMT
  3123. ZJN CTEX IF *MT* (*MT* = 0)
  3124. LMC 2RNT&2RMT
  3125. ZJN CTE1 IF *NT*
  3126. LMC 2RCT&2RNT
  3127. ZJN CTE2 IF *CT*
  3128. LMC 2RAT&2RCT
  3129. NJN CTE3 IF NOT *AT*
  3130. LDN 1 *AT* = 3
  3131. CTE1 ADN 1 *NT* = 2
  3132. CTE2 ADN 1 *CT* = 1
  3133. UJN CTEX RETURN
  3134. TAI SPACE 4,15
  3135. ** TAI - TRANSFER ADDITIONAL INFORMATION FROM UDT.
  3136. *
  3137. * ENTRY (SX) = EXTENDED FILE STATUS.
  3138. *
  3139. * EXIT (A) = 0, IF NOT TAPE FILE.
  3140. * (FIPB) = UDT WORDS *UST2*, *UST3*, *UST4*, *UST5*,
  3141. * *UVRI* IF TAPE FILE.
  3142. *
  3143. * USES T1.
  3144. *
  3145. * CALLS TUW.
  3146.  
  3147.  
  3148. TAI SUBR ENTRY/EXIT
  3149. LDD SX
  3150. LPN 1
  3151. ZJN TAIX IF NOT TAPE FILE
  3152. TAIA LDN 0 UDT WORDS NOT YET TRANSFERRED
  3153. * LDN 1 (UDT WORDS ALREADY TRANSFERRED)
  3154. NJN TAIX IF ADDITIONAL INFORMATION TRANSFERRED
  3155. LDN /MTX/UST2 GET UST2, UST3, UST4, UST5 FROM UDT
  3156. STD T1
  3157. LDN 4 TRANSFER UDT WORDS
  3158. RJM TUW
  3159. LDN 4 SET WORD COUNT
  3160. STD T1
  3161. LDD MA
  3162. CRM FIPB,T1 READ UDT WORDS
  3163. LDK /MTX/UVRI SET UDT WORD TO READ
  3164. STD T1
  3165. LDN 1 SET WORD COUNT
  3166. RJM TUW TRANSFER UDT WORD
  3167. LDD MA
  3168. CRM FIPB+4*5,ON READ UDT WORD
  3169. AOM TAIA SET UDT WORDS TRANSFERRED FLAG
  3170. UJN TAIX RETURN
  3171. SPACE 4,10
  3172. ** COMMON DECKS.
  3173.  
  3174.  
  3175. *CALL COMPRJC
  3176. *CALL COMPSOF
  3177. VAL$ SET 0
  3178. *CALL COMPVLC
  3179. SPACE 4,10
  3180. ** BUFFER ASSIGNMENTS.
  3181.  
  3182.  
  3183. FIPB EQU * *FILINFO* PARAMETER BLOCK BUFFER
  3184. LOC FIPB+FIPBL*5-1*5
  3185. SPACE 4,10
  3186. ERRNG OVL0-* CODE OVERFLOWS INTO ZERO LEVEL OVERLAYS
  3187. OVERFLOW OVL
  3188. OVERLAY (EQUIPMENT REQUESTS.)
  3189. SPACE 4,10
  3190. **** ADDITIONAL DIRECT LOCATION ASSIGNMENTS.
  3191.  
  3192.  
  3193. VS EQU 60 - 64 VSN BUFFER (5 LOCATIONS)
  3194.  
  3195. ****
  3196. REQ SPACE 4,20
  3197. *** FUNCTION 14.
  3198. * REQUEST EQUIPMENT.
  3199. *
  3200. *T FET+1 12/*EQ*, 48/
  3201. * EQ EQUIPMENT TYPE.
  3202. *
  3203. *T FET+7 6/*ID*, 54/
  3204. * ID CHECKPOINT MODE ID
  3205. * CBID = 75B = CHECKPOINT AT BOI.
  3206. * CKID = 76B = CHECKPOINT AT EOI.
  3207. *
  3208. * REQUEST OPERATOR EQUIPMENT ASSIGNMENT TO FILE.
  3209. * IF THE FILE WAS PREVIOUSLY ASSIGNED, FUNCTION IS IGNORED.
  3210. * REQUEST FUNCTION 14 CANNOT BE USED TO ASSIGN TAPE EQUIPMENT.
  3211. * IF *EQ* .NE. 0, EQUIPMENT ASSIGNMENT MUST BE THIS TYPE.
  3212. * IF *EQ* = *MS*, A MASS STORAGE DEVICE MUST BE ASSIGNED.
  3213. * IF *EQ* = *MT*, *NT*, *CT*, *AT* OR *TE*, THE ERROR MESSAGE
  3214. * * INCORRECT EQUIPMENT.* WILL BE ISSUED.
  3215. * FOR REQUEST WITH *EQ* = 0, OPERATOR ASSIGNMENT OF TAPE
  3216. * EQUIPMENT (*MT*, *NT*, *CT*, *AT*, *TE*) WILL BE REJECTED.
  3217.  
  3218.  
  3219. ENTRY REQ
  3220. RJM CPA READ FIRST
  3221. ADN 1
  3222. CRD CN
  3223. RJM GVA GET AND VALIDATE ACCESS LEVEL
  3224. LDD CN CHECK TYPE
  3225. ZJN REQ3 IF TYPE NOT REQUESTED
  3226.  
  3227. * IF EQUIPMENT TYPE IS REQUESTED, CHECK VALIDITY OF TYPE.
  3228.  
  3229. LMC 2RMS
  3230. ZJN REQ3 IF EQUIPMENT TYPE = *MS*
  3231. LDD CN
  3232. RJM CTE CHECK FOR TAPE EQUIPMENT
  3233. MJN REQ2 IF NOT TAPE EQUIPMENT
  3234. REQ1 LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  3235. LJM ERR PROCESS ERROR
  3236.  
  3237. REQ2 RJM SEQ SEARCH FOR EQUIPMENT
  3238.  
  3239. * REQUEST OPERATOR ASSIGNMENT.
  3240.  
  3241. REQ3 LDN 1
  3242. REQ4 RJM REA REQUEST EQUIPMENT ASSIGNMENT
  3243. PJN REQ4 IF TAPE RELATED EQUIPMENT
  3244. LDD EQ RESET OPERATOR EQUIPMENT IF ENTER RECALL
  3245. STM EFNA
  3246. LDD FS
  3247. SHN 21-13
  3248. MJN REQ6 IF MASS STORAGE
  3249. SHN 21-12-21+13
  3250. MJN REQ5 IF ALLOCATABLE DEVICE
  3251. RJM VAE VALIDATE ASSIGNED EQUIPMENT
  3252. UJN REQ6 ASSIGN FILE
  3253.  
  3254. REQ5 RJM DEQ RELEASE EQUIPMENT
  3255. REQ6 LJM ASF ASSIGN FILE
  3256. AEQ SPACE 4,25
  3257. *** FUNCTION 15.
  3258. * ASSIGN EQUIPMENT.
  3259. *
  3260. *T FET+1 12/*EQ*, 48/
  3261. * EQ EQUIPMENT TYPE, *MSAL* DEVICE TYPE, OR DESIRED
  3262. * EST ORDINAL + 7000B.
  3263. *
  3264. *T FET+7 6/*ID*, 54/
  3265. * ID CHECKPOINT MODE ID
  3266. * CBID = 75B = CHECKPOINT AT BOI.
  3267. * CKID = 76B = CHECKPOINT AT EOI.
  3268. *
  3269. * REQUEST FUNCTION 15 CANNOT BE USED TO ASSIGN TAPE EQUIPMENT.
  3270. * FOR REQUEST WITH *EQ* = *MT*, *NT*, *CT*, *AT* OR *TE* DEVICE
  3271. * TYPE OR SPECIFYING EST ORDINAL OF TAPE RELATED EQUIPMENT,
  3272. * ERROR MESSAGE * INCORRECT EQUIPMENT.* WILL BE ISSUED.
  3273. *
  3274. * NO SPECIAL VALIDATION IS REQUIRED TO ASSIGN TT (FROM TXOT
  3275. * ORIGIN), NE OR CC EQUIPMENT OR MASS STORAGE FILE TYPES MS,
  3276. * TP, IN, OT, PY, LO OR LG.
  3277. * NO SPECIAL USER VALIDATION IS REQUIRED WHEN USING MASS
  3278. * STORAGE DEVICE MNEMONICS. THE MASS STORAGE DEVICE MUST BE
  3279. * A TEMP DEVICE.
  3280. * OTHER REQUESTS ARE VALID ONLY FROM SYSTEM ORIGIN OR TO A
  3281. * USER WHO HAS SYSTEM ORIGIN PRIVILEGES. SEE TABLE *TAEQ*.
  3282. *
  3283. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  3284.  
  3285.  
  3286. ENTRY AEQ
  3287. LDD FF SET INITIAL FNT ADDRESS
  3288. RJM SAF SEARCH FOR ASSIGNED FILE
  3289. ZJN AEQ1 IF FILE NOT FOUND
  3290. LDN 0 CLEAR FNT ADDRESS
  3291. STD FA
  3292. LDN /ERR/DFN * DUPLICATE FILE NAME.*
  3293. LJM ERR PROCESS ERROR
  3294.  
  3295. * CHECK DEVICE SPECIFICATION IN FET.
  3296.  
  3297. AEQ1 RJM CPA READ FIRST
  3298. ADN 1
  3299. CRD CN
  3300. RJM GVA GET AND VALIDATE ACCESS LEVEL
  3301. LDD CN CHECK EQUIPMENT TYPE
  3302. SHN -11
  3303. LMN 7
  3304. ZJN AEQ6 IF ASSIGN-BY-ORDINAL REQUEST
  3305.  
  3306. * PROCESS DEVICE MNEMONIC.
  3307.  
  3308. LDD CN
  3309. LMC 2RMS
  3310. NJN AEQ3 IF NOT MASS STORAGE
  3311. STM ASFA CLEAR *MSAL* FLAGS
  3312. LDN NEEQ
  3313. STD EQ ASSIGN MASS STORAGE
  3314. LDD CN SET CORRECT DAYFILE MESSAGE
  3315. STM ASFC+1
  3316. AOM ASFB
  3317. AEQ2 LJM ASF ASSIGN FILE
  3318.  
  3319. AEQ3 RJM SEQ SEARCH FOR EQUIPMENT
  3320. MJN AEQ2 IF *MSAL* REQUEST
  3321. ZJN AEQ7 IF EQUIPMENT AVAILABLE
  3322. AEQ4 LDN /ERR/WEQ * EQUIPMENT NOT AVAILABLE.*
  3323. AEQ5 LJM ERR PROCESS ERROR
  3324.  
  3325. * PROCESS EST ORDINAL.
  3326.  
  3327. AEQ6 RJM VSO VALIDATE SYSTEM ORIGIN PRIVILEGE
  3328. NJN AEQ9.1 IF USER NOT VALIDATED FOR ASSIGN BY ORDINAL
  3329. LDD CN SET EST ORDINAL
  3330. LPC 777
  3331. STD EQ
  3332. RJM CEN CHECK EST ORDINAL
  3333. NJN AEQ4 IF NOT AVAILABLE
  3334. AEQ7 LDD FS+3
  3335. STD T2
  3336. LMC 2RTT
  3337. NJN AEQ9 IF NOT *TT*
  3338. LDD OC
  3339. LMK IAOT
  3340. ZJN AEQ10 IF INTERACTIVE
  3341. AEQ8 LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  3342. UJN AEQ5 PROCESS ERROR
  3343.  
  3344. AEQ9 RJM CDT CHECK DEVICE TYPE
  3345. ZJN AEQ10 IF DEVICE TYPE ALLOWED
  3346. RJM VSO VALIDATE SYSTEM ORIGIN
  3347. AEQ9.1 NJP VSJ1 IF USER NOT VALIDATED
  3348. LDD EQ
  3349. RJM VTE CHECK FOR TAPE EQUIPMENT
  3350. PJN AEQ8 IF TAPE RELATED EQUIPMENT
  3351. AEQ10 LDD FS
  3352. SHN 21-13
  3353. MJN AEQ11 IF MASS STORAGE
  3354. SHN 21-12-21+13
  3355. MJN AEQ11 IF ALLOCATABLE
  3356. LDD EQ REQUEST EQUIPMENT
  3357. STD CM+1
  3358. LDK REQS REQUEST ACTIVE EQUIPMENT
  3359. STD CM+2
  3360. MONITOR REQM
  3361. LDD CM+1 CHECK ASSIGNMENT
  3362. NJN AEQ11 IF ASSIGNMENT MADE
  3363. LJM AEQ4 EQUIPMENT NOT AVAILABLE
  3364.  
  3365. AEQ11 LJM ASF ASSIGN FILE
  3366. LBR EJECT
  3367. *** FUNCTION 24.
  3368. * LABEL TAPE REQUEST.
  3369. * REQUEST AUTOMATIC ASSIGNMENT OF MAGNETIC TAPE BY VOLUME
  3370. * SERIAL NUMBER.
  3371. * IF THE FILE WAS PREVIOUSLY ASSIGNED, FUNCTION IS IGNORED.
  3372. *
  3373. *T FET+1 12/EQ,48/
  3374. * EQ DEVICE TYPE (*MT*, *NT*, *CT*, *AT*, OR ZERO)
  3375. *
  3376. *T FET+7 6/ID,54/
  3377. * ID CHECKPOINT ID, IF TO BE SET ON FILE
  3378. * CBID = 75B = CHECKPOINT AT BOI.
  3379. * CKID = 76B = CHECKPOINT AT EOI.
  3380. *
  3381. *T FET+10B 1/R,1/L,1/N,2/TT,1/,3/D,3/CV,12/PO,6/F,6/NS,24/FC
  3382. * R LABEL PROCESSING
  3383. * 0 = READ LABEL FILE OPENED BY OPEN/ALTER
  3384. * 1 = WRITE LABEL FILE OPENED BY OPEN/WRITE
  3385. *
  3386. * L NOS LABELED IF SET
  3387. *
  3388. * N NON-STANDARD LABELS IF SET
  3389. *
  3390. * TT TAPE DEVICE TYPE
  3391. * 0 = 7-TRACK TAPE.
  3392. * 1 = CARTRIDGE TAPE.
  3393. * 2 = 9-TRACK TAPE.
  3394. * 3 = ACS CARTRIDGE TAPE.
  3395. *
  3396. * D DENSITY
  3397. * 0 = INSTALLATION DEFAULT
  3398. * 1 = 556 BPI
  3399. * 2 = 200 BPI
  3400. * 3 = 800 BPI/CPI
  3401. * 4 = 1600 CPI
  3402. * 5 = 6250 CPI
  3403. * 6 = 38000 CPI
  3404. *
  3405. * CV CONVERSION MODE
  3406. * 0 = INSTALLATION DEFAULT
  3407. * 1 = USASI/ASCII CONVERSION 9 TRACK
  3408. * 2 = EBCDIC CONVERSION 9 TRACK
  3409. *
  3410. * PO PROCESSING OPTIONS
  3411. * XXX0 = ABORT ON P.E. UNLESS E.P. SET
  3412. * XXX1 = ABORT ON P.E. REGARDLESS OF E.P.
  3413. * XXX2 = NO ABORT ON P.E.
  3414. * XXX4 = INHIBIT ERROR PROCESSING
  3415. * XX1X = ENFORCE RING OUT
  3416. * XX2X = ENFORCE RING IN
  3417. * XX4X = INHIBIT UNLOAD
  3418. * X1XX = TOGGLE INSTALLATION SETTING TO ENABLE/DISABLE
  3419. * GCR HARDWARE WRITE ERROR CORRECTION
  3420. * X2XX = TOGGLE INSTALLATION SETTING TO ENABLE/DISABLE
  3421. * ISSUING OF ERROR MESSAGES TO USER DAYFILE
  3422. * 0XXX = DEFAULT EOT OPTION SELECTED ACCORDING TO
  3423. * LABEL AND FORMAT SPECIFICATION
  3424. * 1XXX = STOP ON TAPE MARK AFTER EOT (UNLABELED)
  3425. * 1XXX = STOP ON TAPE MARK PLUS LABELS (LABELED)
  3426. * 2XXX = ACCEPT BLOCK IN PROGRESS ON EOT
  3427. * 4XXX = INGORE BLOCK IN PROGRESS ON EOT
  3428. *
  3429. * F DATA FORMAT
  3430. * 0 = INTERNAL BINARY
  3431. * 1 = NOS/BE INTERNAL BINARY
  3432. * 2 = FOREIGN
  3433. * 3 = STRANGER
  3434. * 4 = LONG BLOCK STRANGER
  3435. * 5 = LONG BLOCK INTERNAL BINARY
  3436. *
  3437. * NS NOISE SIZE IN FRAMES
  3438. *
  3439. * FS BLOCK SIZE IN FRAMES
  3440. *
  3441. *T FET+11B 36/VSN,6/A,3/0,15/SN
  3442. * VSN 6 CHARACTER VOLUME SERIAL NUMBER (SPACE FILLED)
  3443. * A 1 CHARACTER ACCESSIBILITY (DEFAULT = * *)
  3444. * SN FILE SECTION NUMBER (DEFAULT = 0001)
  3445. *
  3446. *T FET+12B 60/FI
  3447. * FI FIRST 10 CHARACTERS OF FILE IDENTIFIER
  3448. *
  3449. *T FET+13B 42/FI,3/0,15/QN
  3450. * FI LAST 7 CHARACTERS OF FILE IDENTIFIER (SPACE FILLED)
  3451. * QN FILE SEQUENCE NUMBER (DEFAULT = 0001)
  3452. *
  3453. *T FET+14B 36/SI,9/E,15/G
  3454. * SI 6 CHARACTER MULTI-SET IDENTIFIER (SPACE FILLED)
  3455. * E GENERATION VERSION NUMBER (DEFAULT = 00)
  3456. * G GENERATION NUMBER (DEFAULT = 0001)
  3457. *
  3458. *T FET+15B 30/RTD,30/CRD
  3459. * RTD RETENTION DATE (JULIAN) (DEFAULT = TODAY)
  3460. * CRD CREATION DATE (JULIAN) (DEFAULT = TODAY)
  3461. *
  3462. * FOR AUTOMATIC ASSIGNMENT, A VOLUME SERIAL NUMBER MUST BE
  3463. * SUPPLIED EITHER THROUGH A *VSN* COMMAND OR BY THE VSN
  3464. * FIELD IN FET+11B. IF THE VSN FIELD IN FET+11B IS ZERO
  3465. * AND NO VSN IS SPECIFIED, THE OPERATOR IS REQUESTED TO
  3466. * MAKE THE APPROPRIATE EQUIPMENT ASSIGNMENT.
  3467.  
  3468.  
  3469.  
  3470.  
  3471. ENTRY LBR
  3472. LDD CP CHECK FOR *SPCW* BUSY
  3473. ADC SPCW
  3474. CRD CN
  3475. LDD CN
  3476. NJN LBR1 IF DMP= REQUEST ALREADY PRESENT
  3477. STD CM+1 CALL *RESEX*
  3478. MONITOR ROCM ROLLOUT JOB
  3479. LDD IA READ REQUEST
  3480. CRD CM
  3481. LDD CM+1
  3482. SCN 77
  3483. ADN 20 SET RECALL PP PROCESSOR BIT
  3484. STD CM+1
  3485. LDD RA REWRITE USER CALL
  3486. SHN 6
  3487. ADN 1
  3488. CWD CM
  3489. LDD CM+2 CLEAR UNUSED FIELDS
  3490. LPN 77
  3491. STD CM+2
  3492. LDD CM+3
  3493. LPN 77
  3494. STD CM+3
  3495. LDD CP ENTER EXTERNAL CALL
  3496. ADC SPCW
  3497. CWD CM
  3498. LJM DPP DROP PPU
  3499.  
  3500. LBR1 LDN 0 CLEAR FNT ADDRESS
  3501. STD FA
  3502. LDN /ERR/SYE * SYSTEM ERROR.*
  3503. LJM ERR PROCESS ERROR
  3504. OAE SPACE 4,25
  3505. *** FUNCTION 26.
  3506. * REQUEST OPERATOR ASSIGNMENT OF EQUIPMENT.
  3507. *
  3508. *T FET+1 12/*EQ*, 12/, 12/*DD*, 24/
  3509. * EQ DEVICE TYPE (*MT*, *NT*, *CT*, *AT*,
  3510. * OR ZERO = ANY EQUIPMENT)
  3511. * DD DENSITY DISPLAY (*HD*, *PE*, *GE*) IF *EQ* = *NT*
  3512. *
  3513. *T FET+7 6/*ID*, 48/
  3514. * ID CHECKPOINT ID, IF TO BE SET ON NON-MAGNETIC TAPE FILE
  3515. * CBID = 75B = CHECKPOINT AT BOI.
  3516. * CKID = 76B = CHECKPOINT AT EOI.
  3517. *
  3518. *T FET+11B 36/*VSN*, 24/
  3519. * VSN DUPLICATE VSN CHOICE TO BE DISPLAYED IN OPERATOR
  3520. * REQUEST MESSAGE (FOR FP=1 FUNCTION ONLY)
  3521. *
  3522. * EXIT *EQ* = DEVICE TYPE OF ASSIGNED EQUIPMENT.
  3523. * *DD* = EST ORDINAL OF ASSIGNED UNIT IF TAPE EQUIPMENT.
  3524. *
  3525. * THIS FUNCTION IS CALLED BY *RESEX* TO GET THE OPERATOR
  3526. * TO MAKE AN EQUIPMENT ASSIGNMENT.
  3527. *
  3528. * CALLER MUST HAVE SSJ= ENTRY POINT SET.
  3529.  
  3530.  
  3531. ENTRY OAE
  3532. RJM VSJ VALIDATE SSJ=
  3533. RJM SVF SEARCH FOR VSN FILE
  3534. ZJN OAE2 IF VSN FILE OR NO ENTRY
  3535. LDN 0 CLEAR FNT ADDRESS
  3536. STD FA
  3537. LDN /ERR/DFN DUPLICATE FILE
  3538. OAE1 LJM ERR PROCESS ERROR
  3539.  
  3540. OAE2 LDD FA
  3541. ZJN OAE3 IF NO ENTRY
  3542. RJM SFB SET FILE BUSY
  3543. ZJN OAE3 IF NO REJECT ON FILE INTERLOCK
  3544. LDN /ERR/IOE * I/O SEQUENCE ERROR.*
  3545. UJN OAE1 PROCESS ERROR
  3546.  
  3547. OAE3 RJM CPA READ FIRST
  3548. ADN 1
  3549. CRD CN
  3550. ADN 10 READ VSN FROM FET+11B
  3551. CRD VS
  3552. RJM GVA GET AND VALIDATE ACCESS LEVEL
  3553. LDD FP
  3554. LPN 1
  3555. NJN OAE4 IF OPERATOR ASSIGNMENT ON DUPLICATE VSN
  3556. STD VS
  3557. OAE4 LDD CN
  3558. ZJN OAE6 IF NO EQUIPMENT SPECIFIED
  3559. RJM CTE CHECK FOR TAPE EQUIPMENT
  3560. ZJN OAE5 IF TAPE EQUIPMENT
  3561. LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  3562. UJN OAE1 PROCESS ERROR
  3563.  
  3564. OAE5 RJM SEQ SEARCH FOR EQUIPMENT
  3565.  
  3566. * REQUEST OPERATOR ASSIGNMENT.
  3567.  
  3568. OAE6 LDN 1
  3569. RJM REA REQUEST EQUIPMENT ASSIGNMENT
  3570. ZJN OAE9 IF TAPE EQUIPMENT (MT, NT, CT OR AT)
  3571. LDD EQ RESET OPERATOR EQUIPMENT IF ENTER RECALL
  3572. STM EFNA
  3573. LDD FS
  3574. SHN 21-13
  3575. MJN OAE8 IF MASS STORAGE
  3576. SHN 21-12-21+13
  3577. MJN OAE7 IF ALLOCATABLE DEVICE
  3578. RJM VAE VALIDATE ASSIGNED EQUIPMENT
  3579. UJN OAE8 ASSIGN FILE
  3580.  
  3581. OAE7 RJM DEQ RELEASE EQUIPMENT
  3582. OAE8 LJM ASF ASSIGN FILE
  3583.  
  3584. * RETURN TAPE EQUIPMENT.
  3585.  
  3586. OAE9 STD CM CLEAR REQUEST MESSAGE
  3587. LDD CP
  3588. ADN MS2W
  3589. CWD CM
  3590. LDN 0 CLEAR PAUSE BIT
  3591. RJM SPB
  3592. RJM DEQ RELEASE TAPE EQUIPMENT
  3593. LDD FS+3 RETURN DEVICE TYPE IN FET
  3594. STD CN
  3595. LDD EQ
  3596. STD CN+2
  3597. RJM CPA READ FET+1
  3598. ADN 1
  3599. CWD CN
  3600. LDD FA
  3601. ZJN OAE10 IF NO FNT/FST ENTRY
  3602. NFA FA,R
  3603. ADN FSTL
  3604. CRD FS READ FST ENTRY
  3605. OAE10 LJM LFMX RETURN
  3606. VSN SPACE 4,30
  3607. *** FUNCTION 27.
  3608. * BUILD TAPE FILE FNT/FST.
  3609. *
  3610. * ASSIGNMENT OPERATIONS.
  3611. *T FET+10 1/R,11/EQ,12/UDT,4/FM,20/0,1/L,11/0
  3612. *
  3613. * VSN OPERATIONS.
  3614. *T FET+10 30/0,18/VSN,12/0
  3615. *
  3616. * R RELEASE TAPE EQUIPMENT (REASSIGN TO *TE*)
  3617. *
  3618. * EQ EST ORDINAL
  3619. *
  3620. * UDT MAGNET UNIT DESCRIPTOR TABLE ADDRESS
  3621. *
  3622. * FM FORMAT
  3623. *
  3624. * L LABEL BIT
  3625. *
  3626. * VSN VSNFILE RANDOM INDEX
  3627. *
  3628. * CALLER MUST HAVE SSJ= ENTRY POINT SET.
  3629. *
  3630. * ENTRY (FN - FN+3) = FILE NAME FROM FET+0.
  3631. * (FF) = FET SPECIFIED FNT ADDRESS.
  3632. *
  3633. * EXIT FET+10B CLEARED IF REQUEST CANNOT BE SATISFIED.
  3634. * TO ERR IF LOCAL FILE LIMIT EXCEEDED.
  3635.  
  3636.  
  3637. ENTRY VSN
  3638. RJM VSJ VALIDATE SSJ=
  3639. LDD FF SET INITIAL FNT ADDRESS
  3640. RJM SAF SEARCH FOR ASSIGNED FILE
  3641. LDD FA SET FILE BUSY
  3642. ZJP VSN3 IF FILE NOT LOCAL
  3643. RJM SFB SET FILE BUSY
  3644. ZJN VSN1 IF NO REJECT ON FILE INTERLOCK
  3645. LDN /ERR/IOE *I/O SEQUENCE ERROR
  3646. LJM ERR PROCESS ERROR
  3647.  
  3648.  
  3649. * VALIDATE ENTRY.
  3650.  
  3651. VSN1 LDD FS
  3652. RJM VTE VERIFY TAPE ENTRY
  3653. MJN VSN2 IF NOT TAPE FILE
  3654. STD T1 SAVE ENTRY STATUS
  3655. RJM CPA READ FET+1
  3656. ADN 1
  3657. CRD CN
  3658. RJM GVA GET AND VALIDATE ACCESS LEVEL
  3659. LDD AL
  3660. ZJN VSN1.1 IF *AL* NOT SPECIFIED
  3661. NFA FA,R SET ACCESS LEVEL IN FNT
  3662. ADN FUTL
  3663. CRD CN
  3664. LDD AL
  3665. LPN 7
  3666. LMD CN+2
  3667. LPN 7
  3668. LMD CN+2
  3669. STD CN+2
  3670. NFA FA,R
  3671. ADN FUTL
  3672. CWD CN
  3673. VSN1.1 UJN VSN4 CONTINUE
  3674.  
  3675. VSN2 LDN /ERR/DFN *DUPLICATE FILE NAME.*
  3676. LJM ERR PROCESS ERROR
  3677.  
  3678. VSN3 LDN TEEQ ASSIGN TO *TE* EQUIPMENT
  3679. STD EQ
  3680. RJM CPA READ FET+1
  3681. ADN 1
  3682. CRD CN
  3683. RJM GVA GET AND VALIDATE ACCESS LEVEL
  3684. RJM CLF CREATE LOCAL FILE
  3685. LDN 1 SET VSN STATUS
  3686. STD T1
  3687. VSN4 RJM CPA READ FET+10
  3688. ADN 10
  3689. CRD CN
  3690. LDD CN CHECK TYPE OF OPERATION
  3691. NJN VSN6 IF ENTERING ASSIGNMENT INFORMATION
  3692. LDD FS+2 CHECK FOR VSN INDEX PRESENT
  3693. LPN 77
  3694. SHN 14
  3695. LMD FS+3
  3696. NJN VSN2 IF VSN INDEX ALREADY ENTERED
  3697. LDD FS+2 ENTER VSN INDEX
  3698. SCN 77
  3699. STD FS+2
  3700. LDD CN+2
  3701. LPN 77
  3702. RAD FS+2
  3703. LDD CN+3
  3704. STD FS+3
  3705. VSN5 LJM LFMX EXIT
  3706.  
  3707. VSN6 LDD T1 CHECK ENTRY STATUS
  3708. NJN VSN7 IF VSN ENTRY PRESENT
  3709. LDD CN
  3710. LPC 777
  3711. STD CN
  3712. LMD FS
  3713. NJN VSN8 IF EQUIPMENTS DO NOT MATCH
  3714. LDD CN
  3715. STD EQ
  3716. UJN VSN10 ENTER UDT ADDRESS
  3717.  
  3718. VSN7 LDD CN VALIDATE EQUIPMENT TO BE ASSIGNED
  3719. RJM VTE VERIFY TAPE EQUIPMENT
  3720. ZJN VSN9 IF TAPE EQUIPMENT
  3721. VSN8 LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  3722. LJM ERR PROCESS ERROR
  3723.  
  3724. VSN9 LDD CN ENTER EQUIPMENT
  3725. STD CM+1 RESERVE EQUIPMENT
  3726. LDK REQS REQUEST ACTIVE EQUIPMENT
  3727. STD CM+2
  3728. MONITOR REQM
  3729. LDD CM+1
  3730. ZJN VSN11 IF NOT RESERVED
  3731. LDD CN SET EST ORDINAL
  3732. STD FS
  3733. VSN10 LDD CN+1 ENTER UDT ADDRESS
  3734. STD FS+1
  3735. LDD FS+2
  3736. LPN 77
  3737. STD FS+2
  3738. LDD CN+2 ENTER FORMAT
  3739. LPC 7400
  3740. RAD FS+2
  3741. LDD CN+4 ENTER LABEL BIT
  3742. LPC 4000
  3743. RAD FS+4
  3744. UJN VSN12 EXIT
  3745.  
  3746. VSN11 LDN ZERL CLEAR FET+10
  3747. CRD CN
  3748. RJM CPA
  3749. ADN 10
  3750. CWD CN
  3751. VSN12 LJM LFMX EXIT
  3752. ASF SPACE 4,15
  3753. ** ASF - ASSIGN NON-TAPE FILE.
  3754. *
  3755. * ENTRY (EQ) = EST ORDINAL.
  3756. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  3757. *
  3758. * EXIT (FA) = ADDRESS OF FNT ENTRY.
  3759. * (FN - FN+4) = FILE NAME.
  3760. * (FS - FS+4) = FST ENTRY.
  3761. *
  3762. * USES CN, EQ, FN+3, FS, FS+1, T1, T4, CM - CM+4.
  3763. *
  3764. * CALLS ACS, CLF, CPA, C2D, DFM, STB, UPC.
  3765. *
  3766. * MACROS MONITOR, NFA, SFA.
  3767.  
  3768.  
  3769. ASF BSS 0 ENTRY
  3770. LDD TH REQUEST ASSIGNMENT OF EQUIPMENT
  3771. RAD EQ
  3772. RJM CLF CREATE LOCAL FILE
  3773. LDN ZERL
  3774. CRD CM
  3775. LDC 7777 CHECK FOR ASSIGNMENT OF *MSAL* DEVICE
  3776. ASFA EQU *-1 (*MSAL* CODE - SET BY *SEQ*)
  3777. STD CM+2
  3778. SHN 21-13
  3779. MJN ASF1 IF NOT *MSAL* DEVICE
  3780. LDD AL PASS ACCESS LEVEL TO *RTCM*
  3781. LPN 7
  3782. LMN 40
  3783. SHN 6
  3784. STD CM+3
  3785. MONITOR RTCM ASSIGN MASS STORAGE SPACE
  3786. LDD CM+1 SET EST ORDINAL IN FST
  3787. LPC 777
  3788. STD FS
  3789. LDD CM+4 SET FIRST TRACK IN FST
  3790. STD FS+1
  3791. NFA FA,R REWRITE FST
  3792. ADN FSTL
  3793. CWD FS
  3794. ASF1 LDD FS FETCH EST ENTRY
  3795. STD EQ
  3796. LPC 777
  3797. ZJP ASF1.1 IF NO EQUIPMENT ASSIGNED
  3798. LDD EQ
  3799. SFA EST SET EQUIPMENT TYPE
  3800. ADK EQDE
  3801. CRD CM
  3802. LDD CM+3
  3803. STM ASFC
  3804. STD CN SET EQUIPMENT TYPE
  3805. LDD CM CHECK FOR MASS STORAGE
  3806. SHN 6
  3807. PJP ASF2 IF NOT MASS STORAGE
  3808. LDD FS+1
  3809. ZJN ASF1.0 IF NO TRACKS ASSIGNED
  3810. RJM UPC UPDATE PRU COUNTER
  3811. LJM ASF3 CONTINUE PROCESSING
  3812.  
  3813. ASF1.0 LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL
  3814. SHN -3
  3815. RJM C2D
  3816. STM ASFF+1
  3817. LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL
  3818. LPN 7
  3819. SHN 6
  3820. ADC 2R0,
  3821. STM ASFF+2
  3822. LDC ASFF *EQXXX, TRACK LIMIT.*
  3823. UJN ASF1.2 PROCESS TRACK LIMIT
  3824.  
  3825. ASF1.1 LDD CM+3 CHECK *RTCM* REJECT REASON CODE
  3826. LMN 2
  3827. ZJN ASF1.3 IF REJECT BECAUSE OF ACCESS LEVEL
  3828. LDC ASFF+3 * TRACK LIMIT.*
  3829. ASF1.2 STD T7 SAVE MESSAGE ADDRESS
  3830. LDN /ERR/NMA
  3831. LJM RCL RECALL *LFM*
  3832.  
  3833. ASF1.3 LDN /ERR/WEQ * EQUIPMENT NOT AVAILABLE.*
  3834. LJM ERR ABORT
  3835.  
  3836. ASF2 LDC 4000 SET NON-MASS STORAGE BIT
  3837. RAD CN
  3838. ASF3 LDN 0 CLEAR CONSOLE MESSAGE
  3839. STD CM
  3840. LDD CP
  3841. ADN MS2W
  3842. CWD CM
  3843. RJM CPA STORE FIRST
  3844. ADN 1
  3845. CWD CN
  3846. ADN 4-1 GET FET+4
  3847. CRD CM
  3848. LDD FA SET FNT ADDRESS INTO FET+4
  3849. STD CM
  3850. RJM CPA COMPUTE PARAMETER ADDRESS
  3851. ADN 4
  3852. CWD CM
  3853. LDD FE
  3854. SBN 7
  3855. MJN ASF5 IF FET NOT LONG ENOUGH
  3856. RJM CPA COMPUTE PARAMETER ADDRESS
  3857. ADN 7
  3858. CRD CM
  3859. LDD CM GET CHECKPOINT ID
  3860. SHN -6
  3861. LMN CBID
  3862. ZJN ASF4 IF CHECKPOINT BOI ID
  3863. LMN CKID&CBID CHECK FOR CHECKPOINT EOI ID
  3864. NJN ASF5 IF NOT VALID ID
  3865. LDN CKST&CBST SET CHECKPOINT AT EOI FILE STATUS
  3866. ASF4 LMN CBST
  3867. STD T1
  3868. NFA FA,R SET CHECKPOINT ID STATUS IN FNT
  3869. CRD CN
  3870. LDD CN+4
  3871. SCN 77
  3872. ADD T1
  3873. STD CN+4
  3874. NFA FA,R
  3875. CWD CN
  3876. ASF5 LDN 0 CLEAR PAUSE BIT
  3877. RJM SPB
  3878. LDD FP
  3879. SHN 21-1
  3880. MJP LFMX IF NO DAYFILE MESSAGE TO BE ISSUED
  3881. LDM ASFC+1
  3882. NJN ASF7 IF MESSAGE FIELD ALREADY SET
  3883. LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL
  3884. SHN -3
  3885. RJM C2D
  3886. STM ASFC+1
  3887. LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL
  3888. LPN 7
  3889. ADN 1R0
  3890. SHN 6
  3891. STM ASFC+2
  3892. ASF7 LDC ASFC+2 SET BUFFER ADDRESS
  3893. STD T1
  3894. LDC =C*, ASSIGNED TO *
  3895. RJM ACS
  3896. LDD FN+3
  3897. SCN 77
  3898. STD FN+3
  3899. LDN FN ADD FILENAME TO MESSAGE
  3900. RJM ACS
  3901. LDC =C*.* TERMINATE MESSAGE
  3902. RJM ACS
  3903. LDC ASFC SEND ASSIGNMENT MESSAGE
  3904. * LDC ASFC+1 (*MSAL* TYPE ASSIGNMENT)
  3905. ASFB EQU *-1
  3906. RJM DFM ISSUE DAYFILE MESSAGE
  3907. LJM LFMX EXIT
  3908.  
  3909.  
  3910. ASFC BSSZ 15 MESSAGE BUILD AREA
  3911. ASFF DATA C*EQXXX, TRACK LIMIT.*
  3912. CDT SPACE 4,20
  3913. ** CDT - CHECK DEVICE TYPE.
  3914. *
  3915. * ENTRY (T2) = DEVICE TYPE TO CHECK FOR.
  3916. *
  3917. * EXIT (A) = 0, IF DEVICE TYPE FOUND IN TABLE.
  3918. * (A) .NE. 0 IF NOT FOUND.
  3919. *
  3920. * USES T1.
  3921.  
  3922.  
  3923. CDT2 LCN 0 SET NOT FOUND STATUS
  3924.  
  3925. CDT SUBR ENTRY/EXIT
  3926. LDN 0
  3927. STD T1
  3928. CDT1 LDM CDTA,T1 GET NEXT TABLE ENTRY
  3929. ZJN CDT2 IF END OF TABLE
  3930. LMD T2
  3931. ZJN CDTX IF MATCH
  3932. AOD T1
  3933. UJN CDT1 CHECK NEXT ENTRY
  3934.  
  3935.  
  3936.  
  3937. ** TBLM - DEFINE MACRO TO PRODUCE *CDTA* TABLE.
  3938. *
  3939. *T 12/2R_EQT
  3940.  
  3941.  
  3942. PURGMAC TBLM
  3943. TBLM MACRO EQT
  3944. CON 2R_EQT
  3945. TBLM ENDM
  3946.  
  3947.  
  3948. LIST G
  3949. CDTA BSS 0
  3950. TBL "MSEQ"
  3951. CON 2RTT
  3952. CON 2RNE
  3953. CON 2RCC
  3954. CON 2ROD OPTICAL DISK
  3955. LIST *
  3956.  
  3957. CON 0 END OF TABLE
  3958. TITLE SUBROUTINES.
  3959. CEA SPACE 4,10
  3960. ** CEA - CHECK EQUIPMENT ACCESS LEVELS.
  3961. *
  3962. * ENTRY (EQ) = EST ORDINAL.
  3963. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  3964. *
  3965. * EXIT (A) = 0 IF ACCESS LEVEL IN RANGE FOR EQUIPMENT.
  3966. *
  3967. * USES CM+1, CM+2, CM+4.
  3968. *
  3969. * MACROS MONITOR.
  3970.  
  3971.  
  3972. CEA SUBR ENTRY/EXIT
  3973. LDD AL GET ACCESS LEVEL
  3974. ZJN CEAX IF SYSTEM IS UNSECURED
  3975. LPN 7 ACCESS LEVEL
  3976. STD CM+4
  3977. LDN VAES SET SUBFUNCTION CODE
  3978. STD CM+1
  3979. LDD EQ EST ORDINAL
  3980. STD CM+2
  3981. MONITOR VSAM VALIDATE EQUIPMENT ACCESS LEVELS
  3982. LDD CM+1 GET REPLY
  3983. UJN CEAX RETURN
  3984. CEN SPACE 4,15
  3985. ** CEN - CHECK EST ORDINAL.
  3986. *
  3987. * ENTRY (EQ) = EST ORDINAL.
  3988. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  3989. *
  3990. * EXIT (A) = 0 IF AVALIABLE.
  3991. * (FS - FS+4) = EST ENTRY.
  3992. *
  3993. * USES T1, T2, T3, CM - CM+4, FS - FS+4.
  3994. *
  3995. * CALLS CEA, CSJ.
  3996. *
  3997. * MACROS SFA.
  3998.  
  3999.  
  4000. CEN SUBR ENTRY/EXIT
  4001. LDN ESTP READ EST POINTER
  4002. CRD CM
  4003. LDD EQ
  4004. ZJN CEN2 IF EQUIPMENT 0
  4005. SBD CM+2
  4006. PJN CEN2 IF NOT IN LEGAL EST RANGE
  4007. SFA EST,EQ READ EST ENTRY
  4008. ADK EQDE
  4009. CRD FS
  4010. LDD FS+3
  4011. ZJN CEN2 IF EQUIPMENT NOT DEFINED
  4012. LDC TAEQ+TAEQM-1 SET START OF TABLE
  4013. STD T2
  4014. ADN TAEQL-TAEQM+1 SET END OF TABLE
  4015. STD T3
  4016. CEN1 AOD T2 SEARCH FOR INCORRECT EQUIPMENT
  4017. LMD T3
  4018. ZJN CEN3 IF END OF TABLE
  4019. LDI T2
  4020. LMD FS+3
  4021. NJN CEN1 IF NOT INCORRECT EQUIPMENT
  4022. CEN2 LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  4023. LJM ERR PROCESS ERROR
  4024.  
  4025. CEN3 LDD FS CHECK EQUIPMENT STATUS
  4026. SHN 21-13
  4027. PJN CEN5 IF NOT MASS STORAGE
  4028. SHN 13-10
  4029. PJN CEN4 IF NOT REMOVABLE DEVICE
  4030. RJM CSJ CHECK FOR SSJ= ENTRY POINT
  4031. PJN CEN2 IF JOB NOT SYSTEM ORIGIN
  4032. CEN4 LDD FS
  4033. SHN 21-6
  4034. MJN CEN2 IF DEVICE UNAVAILABLE
  4035. SHN 6-1
  4036. MJN CEN2 IF DEVICE OFF
  4037. RJM CEA CHECK EQUIPMENT ACCESS LEVELS
  4038. UJN CEN6 RETURN WITH EQUIPMENT AVAILABLE STATUS
  4039.  
  4040. CEN5 SHN 0-12-21+13
  4041. LMN 1
  4042. ZJN CEN6 IF ALLOCATABLE DEVICE
  4043. RJM CEA CHECK EQUIPMENT ACCESS LEVELS
  4044. NJN CEN6 IF ACCESS LEVEL OUT OF RANGE
  4045. SFA EST,EQ CHECK EQUIPMENT ASSIGNMENT
  4046. ADK EQAE
  4047. CRD CM
  4048. LDD CM+4 RETURN WITH JOB ASSIGNMENT STATUS
  4049. CEN6 LJM CENX RETURN
  4050. COE SPACE 4,10
  4051. ** COE - CLEAR OR RESET OPERATOR ASSIGNED EQUIPMENT.
  4052. *
  4053. * ENTRY (A) = 0 IF TO CLEAR OPERATOR ASSIGNED EQUIPMENT.
  4054. * = EQUIPMENT IF TO RESET OPERATOR EQUIPMENT.
  4055. *
  4056. * EXIT (A) = OPERATOR ASSIGNED EQUIPMENT BEFORE CLEAR.
  4057. *
  4058. * USES T0, CM - CM+5.
  4059.  
  4060.  
  4061. QUAL
  4062. COE EQU *+1 DEFINE GLOBAL TAG
  4063. QUAL *
  4064.  
  4065. COE SUBR ENTRY/EXIT
  4066. STD T0 SAVE NEW VALUE FOR *OAEW*
  4067. LDD CP GET *OAEW* WORD
  4068. ADN OAEW
  4069. CRD CM+1
  4070. CRD CM
  4071. LDD T0
  4072. STD CM+4
  4073. ADD CM+1+4
  4074. ZJN COEX IF NO OPERATOR EQUIPMENT TO CLEAR
  4075. LDD CP CLEAR OR RESET OPERATOR EQUIPMENT
  4076. ADN OAEW
  4077. CWD CM
  4078. LDD CM+1+4 RETURN WITH PRIOR VALUE FROM *OAEW*
  4079. UJN COEX RETURN
  4080. CSJ SPACE 4,10
  4081. ** CSJ - CHECK FOR SSJ= ENTRY POINT.
  4082. *
  4083. * EXIT (A) .LT. 0, IF JOB HAS SSJ= ENTRY POINT.
  4084. * (CM - CM+4) = *SEPW* WORD FROM CPA.
  4085. *
  4086. * USES CM - CM+4.
  4087.  
  4088.  
  4089. CSJ SUBR ENTRY/EXIT
  4090. LDD CP
  4091. ADC SEPW
  4092. CRD CM READ SPECIAL ENTRY POINT WORD
  4093. LDD CM
  4094. SHN 21-2
  4095. UJN CSJX RETURN
  4096. CTE SPACE 4,10
  4097. ** CTE - CHECK FOR TAPE EQUIPMENT.
  4098. *
  4099. * ENTRY (A) = EQUIPMENT MNEMONIC.
  4100. *
  4101. * EXIT (A) .EQ. 0 = TAPE EQUIPMENT (MT, NT, CT OR AT).
  4102. * (A) .EQ. 1 = VSN EQUIPMENT (TE).
  4103. * (A) .LT. 0 = NOT TAPE RELATED EQUIPMENT.
  4104.  
  4105.  
  4106. CTE1 LDN 1 SET VSN EQUIPMENT
  4107.  
  4108. CTE SUBR ENTRY/EXIT
  4109. LPC 3777
  4110. LMC 2RMT
  4111. ZJN CTEX IF *MT*
  4112. LMC 2RNT&2RMT
  4113. ZJN CTEX IF *NT*
  4114. LMC 2RCT&2RNT
  4115. ZJN CTEX IF *CT*
  4116. LMC 2RAT&2RCT
  4117. ZJN CTEX IF *AT*
  4118. LMC 2RTE&2RAT
  4119. ZJN CTE1 IF *TE*
  4120. LCN 0 SET NOT TAPE RELATED
  4121. UJN CTEX RETURN
  4122. GVA SPACE 4,10
  4123. ** GVA - GET AND VALIDATE ACCESS LEVEL.
  4124. *
  4125. * ENTRY (CN - CN+4) = FET+1.
  4126. * (FET+4) = ACCESS LEVEL IN BITS 39-36, IF *SP*
  4127. * (BIT 39) SET IN FET+1.
  4128. *
  4129. * EXIT (AL) = 8/,1/ACCESS LEVEL FLAG,3/ACCESS LEVEL.
  4130. * (FET+4) = VALIDATED ACCESS LEVEL IN BITS 39-36.
  4131. *
  4132. * ERROR TO *ERR* IF SECURITY VIOLATION.
  4133. *
  4134. * USES AL, CM - CM+4.
  4135. *
  4136. * CALLS CPA.
  4137. *
  4138. * MACROS MONITOR.
  4139.  
  4140.  
  4141. GVA1 LDD CP GET JOB ACCESS LEVEL
  4142. ADK JSCW
  4143. CRD CM
  4144. LDD CM+1
  4145. SHN -11
  4146. STD AL
  4147. RJM CPA GET (FET+4)
  4148. ADN 4
  4149. CRD CM
  4150. LDD CM+1 SET ACCESS LEVEL IN (FET+4)
  4151. SCN 7
  4152. LMD AL
  4153. STD CM+1
  4154. RJM CPA SAVE (FET+4)
  4155. ADN 4
  4156. CWD CM
  4157. GVA2 LDN 10 SET ACCESS LEVEL FLAG
  4158. RAD AL
  4159.  
  4160. GVA SUBR ENTRY/EXIT
  4161. LDK SSML CHECK SECURITY MODE
  4162. CRD CM
  4163. LDD CM
  4164. LPN 7
  4165. ZJN GVAX IF SYSTEM IS UNSECURED
  4166. LDD CN+1 CHECK *SP* BIT
  4167. SHN 21-3
  4168. PJN GVA1 IF *SP* BIT NOT SET
  4169. RJM CPA READ ACCESS LEVEL FROM FET+4
  4170. ADN 4
  4171. CRD CM
  4172. LDD CM+1
  4173. LPN 7
  4174. STD AL
  4175. LDN ZERL CLEAR WORD
  4176. CRD CM
  4177. LDD AL SET ACCESS LEVEL FOR *VSAM* CALL
  4178. STD CM+1
  4179. LDD MA WRITE PARAMETER WORD
  4180. CWD CM
  4181. LDN 1 SET TO VALIDATE ACCESS LEVEL
  4182. STD CM+4
  4183. LDN VAJS SET SUBFUNCTION
  4184. STD CM+1
  4185. MONITOR VSAM VALIDATE ACCESS LEVEL
  4186. LDD CM+1
  4187. ZJP GVA2 IF VALID ACCESS LEVEL
  4188. LDN /ERR/LNV * ACCESS LEVEL NOT VALID FOR FILE.*
  4189. LJM ERR PROCESS ERROR
  4190. RAW SPACE 4,15
  4191. ** RAW - READ ACCESS CONTROL WORD.
  4192. *
  4193. * EXIT (CM - CM+4) = USER ACCESS CONTROL WORD FROM CPA
  4194. * OR FROM SSJ= PARAMETER BLOCK IF SSJ= JOB.
  4195. * (A) = (CM+4).
  4196. *
  4197. * USES CM - CM+4.
  4198. *
  4199. * CALLS CSJ.
  4200. *
  4201. * MACROS NFA.
  4202.  
  4203.  
  4204. RAW1 LDD CP READ ACCESS CONTROL WORD FROM CPA
  4205. ADK AACW
  4206. RAW2 CRD CM
  4207. LDD CM+4
  4208.  
  4209. RAW SUBR ENTRY/EXIT
  4210. RJM CSJ CHECK FOR SSJ= ENTRY POINT
  4211. PJN RAW1 IF NOT SSJ= JOB
  4212. LDD CM+3 CHECK IF SSJ= PARAMETER BLOCK PRESENT
  4213. LPN 37
  4214. ADD CM+4
  4215. ZJN RAW1 IF NO SSJ= PARAMETER BLOCK
  4216. NFA SSJN+AACS READ USER,S *AACW* WORD FROM SSJ= BLOCK
  4217. UJN RAW2 READ ACCESS WORD
  4218. REA SPACE 4,15
  4219. ** REA - REQUEST EQUIPMENT ASSIGNMENT.
  4220. *
  4221. * ENTRY (A) = 0, IF PREVIOUS EQUIPMENT TO BE RELEASED.
  4222. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  4223. * (EQ) = PREVIOUS EQUIPMENT, IF RELEASE REQUIRED.
  4224. * (CN) = EQUIPMENT TYPE.
  4225. *
  4226. * EXIT (EQ) = ASSIGNED EQUIPMENT.
  4227. * (A) = 0, IF TAPE EQUIPMENT (MT, NT, CT OR AT).
  4228. * (A) .GT. 0, IF VSN EQUIPMENT (TE).
  4229. * (A) .LT. 0, IF NOT TAPE RELATED EQUIPMENT.
  4230. * (FS - FS+4) = ASSIGNED EQUIPMENT EST ENTRY.
  4231. *
  4232. * CALLS CEA, DEQ, ROA, VTE.
  4233.  
  4234.  
  4235. REA SUBR ENTRY/EXIT
  4236. NJN REA2 IF EQUIPMENT RELEASE NOT REQUIRED
  4237. REA1 RJM DEQ RELEASE EQUIPMENT
  4238. REA2 RJM ROA REQUEST OPERATOR ASSIGNMENT
  4239. RJM CEA CHECK EQUIPMENT ACCESS LEVELS
  4240. NJN REA1 IF ACCESS LEVEL OUT OF RANGE
  4241. LDD CN
  4242. ZJN REA3 IF NO TYPE REQUESTED
  4243. LMD FS+3 CHECK TYPE
  4244. LPC 3777
  4245. ZJN REA3 IF CORRECT TYPE
  4246. LDD CN
  4247. LMC 2RMS
  4248. NJN REA1 IF NOT *MS*
  4249. LDD FS
  4250. SHN 21-13
  4251. PJN REA1 IF NOT MASS STORAGE EQUIPMENT
  4252. REA3 LDD FS+3 CHECK FOR *DS*
  4253. LMC 2RDS
  4254. ZJN REA1 IF *DS*
  4255. LDD EQ
  4256. RJM VTE CHECK FOR TAPE EQUIPMENT
  4257. LJM REAX RETURN
  4258. ROA SPACE 4,20
  4259. ** ROA - REQUEST OPERATOR ASSIGNMENT.
  4260. *
  4261. * ENTRY (FN - FN+4) = FILE NAME.
  4262. * (CN) = EQUIPMENT TYPE.
  4263. * (CN+2) = DISPLAY CODE FOR DENSITY, IF *NT* EQUIPMENT.
  4264. * (VS - VS+2) = VSN, IF TAPE EQUIPMENT.
  4265. * (FA) = FNT ADDRESS, IF VSN ENTRY PRESENT.
  4266. *
  4267. * EXIT (EQ) = ASSIGNED EQUIPMENT.
  4268. * (FS - FS+4) = EST ENTRY OF ASSIGNED EQUIPMENT.
  4269. *
  4270. * EXIT TO *RCL*, IF OPERATOR ASSIGNMENT OF EQUIPMENT
  4271. * STILL PENDING.
  4272. * (FS - FS+4) = FST ENTRY.
  4273. *
  4274. * USES T1, T7, CM - CM+4, FN+3.
  4275. *
  4276. * CALLS ACS, COE, SPB.
  4277. *
  4278. * MACROS MONITOR, NFA.
  4279.  
  4280.  
  4281. ROA10 STD CM+1
  4282. STD EQ SET POSSIBLE EST ORDINAL
  4283. SFA EST
  4284. ADK EQDE READ EST ENTRY
  4285. CRD FS
  4286. LDN TAEQM CHECK FOR INVALID EQUIPMENT
  4287. STD T1
  4288. ROA10.1 LDM TAEQ,T1
  4289. LMD FS+3
  4290. ZJN ROA11 IF INVALID EQUIPMENT
  4291. AOD T1
  4292. LMN TAEQL
  4293. NJN ROA10.1 IF NOT END OF TABLE
  4294. LDD FS CHECK EQUIPMENT STATUS
  4295. SHN 21-1
  4296. MJN ROA11 IF OFF OR DOWN
  4297. SHN 2+21-13
  4298. MJN ROAX IF MASS STORAGE
  4299. LDK REQS REQUEST ACTIVE EQUIPMENT
  4300. STD CM+2
  4301. MONITOR REQM
  4302. LDD CM+1 CHECK ASSIGNMENT
  4303. NJN ROAX IF ASSIGNMENT MADE
  4304. ROA11 LDN 0
  4305. STD EQ SET EQUIPMENT
  4306. UJN ROA1 REQUEST ASSIGNMENT
  4307.  
  4308. ROA SUBR ENTRY/EXIT
  4309. LDN 0 CLEAR OPERATOR ASSIGNED EQUIPMENT
  4310. RJM COE
  4311. ZJN ROA1 IF EQUIPMENT NOT ASSIGNED
  4312. LJM ROA10 PROCESS EQUIPMENT
  4313.  
  4314. ROA1 STD CM+1
  4315. LDD FN+3
  4316. SCN 77
  4317. STD FN+3
  4318. LDD FA
  4319. ZJN ROA2 IF NO FNT/FST ENTRY
  4320. NFA FA,R
  4321. ADN FSTL
  4322. CRD FS READ FST ENTRY
  4323. ROA2 LDC ROAB INITIALIZE MESSAGE ADDRESS
  4324. STD T1
  4325. LDN FN ENTER FILE NAME IN REQUEST MESSAGE
  4326. RJM ACS
  4327. LDD CN
  4328. NJN ROA3 IF DEVICE TYPE SPECIFIED
  4329. LJM ROA7 CHECK FOR *REQUEST* COMMAND
  4330.  
  4331. ROA3 LDC =2C, ADD *, *
  4332. RJM ACS
  4333. LDD CN
  4334. LPC 3777 CLEAR NON-ALLOCATABLE BIT
  4335. STD CM SAVE DEVICE TYPE
  4336. LMC 2RMT
  4337. ZJN ROA4 IF *MT*
  4338. LMC 2RCT&2RMT
  4339. ZJN ROA4 IF *CT*
  4340. LMC 2RAT&2RCT
  4341. ZJN ROA4 IF *AT*
  4342. LMC 2RNT&2RAT
  4343. NJN ROA6 IF NOT *NT*
  4344. LDD CN+2 GET DISPLAY CODE FOR DENSITY
  4345. STD CM
  4346. ROA4 LDN CM ENTER DEVICE TYPE OR DENSITY DISPLAY
  4347. RJM ACS
  4348. LDD VS
  4349. ZJN ROA5 IF NO VSN SPECIFIED
  4350. LDC =2C, ADD *, *
  4351. RJM ACS
  4352. LDN 0
  4353. STD VS+3 SET END OF VSN
  4354. LDN VS ENTER VSN INTO REQUEST MESSAGE
  4355. RJM ACS
  4356. ROA5 LDC ROAA SET MESSAGE ADDRESS
  4357. STD T7
  4358. LJM ROA9 RECALL
  4359.  
  4360. * CHECK FOR *REQUEST* CONTROL CARD.
  4361.  
  4362. ROA6 LDN CM ENTER DEVICE TYPE IN REQUEST MESSAGE
  4363. RJM ACS
  4364. ROA7 LDD CP CHECK FOR *REQUEST* IN *MS1W*
  4365. ADN MS1W
  4366. CRD CM
  4367. LDN 2
  4368. STD T1
  4369. ROA8 LDM CM,T1
  4370. LMM ROAA,T1
  4371. ZJN ROA8.1 IF POSSIBLY *REQUEST*
  4372. LMM ROAC,T1
  4373. NJN ROA5 IF NOT *$REQUEST*
  4374. ROA8.1 SOD T1
  4375. PJN ROA8 IF MORE CHARACTERS TO CHECK
  4376. LDD CM+3
  4377. LMM ROAA+3
  4378. SCN 77
  4379. ZJN ROA8.2 IF *REQUEST*
  4380. LMC 2RT &2RS
  4381. NJN ROA5 IF NOT *$REQUEST*
  4382. ROA8.2 STD T7
  4383. LDN 1
  4384. RJM SPB SET PAUSE BIT
  4385. ROA9 LDN /ERR/WEQ * EQUIPMENT NOT AVAILABLE.*
  4386. LJM RCL RECALL
  4387.  
  4388.  
  4389. ROAA DATA 10HREQUEST -
  4390. ROAB BSSZ 12
  4391. ROAC VFD 36/6RREQUES&6R$REQUE
  4392. SEQ SPACE 4,20
  4393. ** SEQ - SEARCH FOR EQUIPMENT.
  4394. *
  4395. * ENTRY (CN) = TYPE.
  4396. * (IR+2) = FUNCTION CODE.
  4397. * (AL) = 8/, 1/ACCESS LEVEL FLAG, 3/ACCESS LEVEL.
  4398. *
  4399. * EXIT (A) .LT. 0, IF MSAL REQUEST.
  4400. * (A) = 0, IF EQUIPMENT PRESENT IN SYSTEM AND AVAILABLE.
  4401. * (A) .GT. 0, IF EQUIPMENT PRESENT IN SYSTEM BUT
  4402. * UNAVAILABLE.
  4403. * (EQ) = EST ORDINAL.
  4404. * (FS - FS+4) = EST ENTRY.
  4405. * (ASFA) = *RTCM* DEVICE SELECTION PARAMETER.
  4406. *
  4407. * ERROR TO *ERR*, IF EQUIPMENT NOT PRESENT IN SYSTEM.
  4408. *
  4409. * USES EQ, T0, T1, T2, CM - CM+4, FS - FS+4, T3 - T7.
  4410. *
  4411. * CALLS CEA, VSO.
  4412. *
  4413. * MACROS SFA.
  4414.  
  4415.  
  4416. SEQ11 LDN TTEQ SET *TT* EQUIPMENT
  4417. STD EQ
  4418. SFA EST
  4419. ADK EQDE
  4420. CRD FS GET EST ENTRY
  4421. LDN 0 RETURN AVAILABLE STATUS
  4422.  
  4423. SEQ SUBR ENTRY/EXIT
  4424. LDN ESTP READ EST POINTER
  4425. CRD CM
  4426. LDD CM+2 SAVE HIGHEST EST ORDINAL
  4427. STM SEQB
  4428. LDN NEEQ-1 INITIALIZE EST ORDINAL FOR SEARCH
  4429. STD EQ
  4430. STD T1 CLEAR TYPE FOUND FLAG
  4431. LDD CN CHECK TYPE
  4432. LPC 3777
  4433. LMC 2RTT
  4434. ZJN SEQ11 IF *TT*
  4435. LMC 2RDE&2RTT
  4436. ZJN SEQ4 IF *DE*
  4437. LMN 2RDP&2RDE
  4438. ZJN SEQ4 IF *DP*
  4439. LDN 0 INITIALIZE TABLE SEARCH
  4440. STD T2
  4441. SEQ1 LDD CN CHECK TABLE FOR MATCH
  4442. LPC 3777
  4443. ZJN SEQ6 IF FIELD NOT SET
  4444. LMM TAEQ,T2
  4445. ZJN SEQ2 IF MATCH
  4446. AOD T2
  4447. LMN TAEQL
  4448. NJN SEQ1 IF NOT END OF TABLE
  4449. UJN SEQ3 SEARCH EST
  4450.  
  4451. SEQ2 LDD IR+2 CHECK FUNCTION
  4452. LMN 15
  4453. NJN SEQ6 IF NOT FROM *AEQ*
  4454. LDN NEEQ
  4455. STD EQ
  4456. LDD T2 CHECK LOCATION OF EQUIPMENT IN TABLE
  4457. STM ASFA SET FLAG FOR *RTCM* CALL
  4458. SBN TAEQM
  4459. PJN SEQ6 IF INCORRECT EQUIPMENT
  4460. LJM SEQX RETURN
  4461.  
  4462. SEQ3 AOM SEQA DO NOT SEARCH FOR EXTENDED MEMORY TYPE
  4463. SEQ4 AOD EQ
  4464. LMC 0
  4465. SEQB EQU *-1
  4466. NJN SEQ7 IF NOT END OF EST
  4467. LDD T1
  4468. NJN SEQ6 IF TYPE NOT FOUND
  4469. LDN 1
  4470. SEQ5 LJM SEQX RETURN
  4471.  
  4472. SEQ6 LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  4473. LJM ERR PROCESS ERROR
  4474.  
  4475. SEQ7 SFA EST,EQ READ EST ENTRY
  4476. ADK EQDE
  4477. CRD FS
  4478. LDD FS+3 CHECK TYPE
  4479. LMD CN
  4480. LPC 3777
  4481. ZJN SEQ8 IF MATCH
  4482. STD T0
  4483. LDN 0
  4484. SEQA EQU *-1
  4485. * LDN 1 (NOT EXTENDED MEMORY TYPE)
  4486. SEQ7.1 NJN SEQ4 IF NOT CHECKING FOR EXTENDED MEMORY TYPE
  4487. LDD T0
  4488. LMN 2RDE&2RDP
  4489. NJN SEQ4 IF NO MATCH
  4490. SEQ8 STD T1 SET TYPE FOUND
  4491. LDD FS
  4492. SHN 21-1
  4493. MJN SEQ4 IF *OFF*
  4494. RJM CEA CHECK EQUIPMENT ACCESS LEVELS
  4495. NJN SEQ7.1 IF ACCESS LEVEL NOT IN RANGE
  4496. LDD FS
  4497. SHN 21-13
  4498. PJN SEQ10 IF NOT MASS STORAGE
  4499. LDD FS+4
  4500. SHN 3
  4501. ADN ACGL
  4502. CRD T3
  4503. ADN DILL-ACGL
  4504. CRD T2
  4505. LDD T3+4
  4506. SHN 21-4
  4507. MJN SEQ9.1 IF ERROR IDLE SET
  4508. RJM VSO VALIDATE CALLER
  4509. ZJN SEQ8.1 IF JOB HAS PROPER VALIDATION
  4510. LDD T2
  4511. SHN 21-0
  4512. PJN SEQ9.1 IF NOT *TEMP* DEVICE
  4513. SEQ8.1 LDD FS
  4514. LPC 500
  4515. SEQ9 NJN SEQ9.1 IF EQUIPMENT NOT AVAILABLE
  4516. LJM SEQ5 RETURN
  4517.  
  4518. SEQ9.1 LJM SEQ4 LOOP FOR NEXT EQUIPMENT
  4519.  
  4520. SEQ10 SHN 0-12-21+13
  4521. LMN 1
  4522. ZJN SEQ9 IF ALLOCATABLE DEVICE
  4523. SFA EST,EQ CHECK ASSIGNMENT STATUS
  4524. ADK EQAE
  4525. CRD T3
  4526. LDD T3+4
  4527. UJN SEQ9 CHECK ASSIGNMENT STATUS
  4528. TAEQ SPACE 4,10
  4529. ** TAEQ - TABLE OF EQUIPMENT MNEMONICS.
  4530. *
  4531. * A MNEMONIC IN THE TABLE BEFORE *TAEQM* IMPLIES IT IS
  4532. * A SPECIAL MNEMONIC FOR ASSIGNMENT OF *MSAL*
  4533. * DEVICES. ANY MNEMONIC AFTER *TAEQM* IN THE TABLE
  4534. * IS AN INCORRECT DEVICE TYPE.
  4535.  
  4536.  
  4537. TAEQ INDEX
  4538.  
  4539. INDEX TMPS,2RTP TEMP DEVICE
  4540. INDEX INPS,2RIN INPUT DEVICE
  4541. INDEX OUTS,2ROT OUTPUT DEVICE
  4542. INDEX PRIS,2RPY PRIMARY DEVICE
  4543. INDEX LOCS,2RLO LOCAL DEVICE
  4544. INDEX LGOS,2RLG LGO DEVICE
  4545.  
  4546. INDEX MXRS
  4547.  
  4548. TAEQM EQU *-TAEQ FLAG FOR *RTCM* CALL
  4549. LOC TAEQM
  4550.  
  4551. CON 2RCM CONTROL MODULE
  4552. CON 2RCP CARD PUNCH
  4553. CON 2RCR CARD READER
  4554. CON 2RDS DISPLAY CONSOLE
  4555. CON 2RLP LINE PRINTER
  4556. CON 2RLQ LINE PRINTER
  4557. CON 2RLR LINE PRINTER
  4558. CON 2RLS LINE PRINTER
  4559. CON 2RLT LINE PRINTER
  4560. CON 2RLX 5870 NON-IMPACT PRINTER
  4561. CON 2RLY 5970 NON-IMPACT PRINTER
  4562. CON 2RMP MAP III/IV
  4563. CON 2RNC NAD
  4564. CON 2RND CDCNET DEVICE INTERFACE (MDI/MTI)
  4565. CON 2RNP 255X NETWORK PROCESSING UNIT
  4566. CON 2RRD REDEFINITION DEVICE
  4567. CON 2RRM TWO PORT MULTIPLEXER
  4568. CON 2RRP RING PORT
  4569. CON 2RSS MSE M860 CONTROLLER
  4570. CON 2RTT TIME-SHARING MULTIPLEXER
  4571. LOC *O
  4572. TAEQL EQU *-TAEQ
  4573. UPC SPACE 4,10
  4574. ** UPC - UPDATE PRU COUNTER.
  4575. *
  4576. * ENTRY (CM - CM+4) = EST ENTRY.
  4577. *
  4578. * EXIT PRU COUNTER UPDATED IN NFL *SSJ=* BLOCK, IF PRESENT.
  4579. * OTHERWISE, THE COUNT IS SET FOR THE *UADM*
  4580. * FUNCTION TO UPDATE CONTROL POINT AREA WORD *ACLW*.
  4581. *
  4582. * USES T0, T1, T2, T3, CM - CM+4.
  4583. *
  4584. * MACROS NFA.
  4585.  
  4586.  
  4587. UPC3 LDD T1 SET SECTOR COUNT FOR *UADM*
  4588. STM DPPB+1
  4589.  
  4590. UPC SUBR ENTRY/EXIT
  4591. LDD CM+4 READ MST
  4592. SHN 3
  4593. ADK MDGL
  4594. CRD CM
  4595. LDD CM+4 SAVE SECTOR LIMIT
  4596. STD T1
  4597. LDD CP CHECK FOR *SSJ=* BLOCK PRESENT
  4598. ADK SEPW
  4599. CRD CM
  4600. LDD CM
  4601. SHN 21-2
  4602. PJN UPC3 IF NO *SSJ=* ENTRY POINT
  4603. LDD CM+3
  4604. LPN 37
  4605. SHN 14
  4606. ADD CM+4
  4607. ZJN UPC3 IF NO *SSJ=* BLOCK PRESENT
  4608. NFA SSJN+ACLS READ NFL COPY OF *SSJ=* BLOCK
  4609. CRD CM
  4610. LDD CM+3 GET CURRENT PRU COUNT
  4611. LPN 77
  4612. STD T2
  4613. SHN 14
  4614. LMD CM+4
  4615. STD T3
  4616. LMC 777777
  4617. ZJN UPC2 IF UNLIMITED VALIDATION
  4618. LDD T3 CALCULATE NEW PRU COUNT
  4619. SBD T1
  4620. STD T0
  4621. PJN UPC1 IF NO BORROW
  4622. SOD T2
  4623. MJN UPC2 IF RESULT IS NEGATIVE
  4624. AOD T0
  4625. UPC1 STD CM+4 SET NEW PRU COUNT
  4626. LDD CM+3
  4627. SCN 77
  4628. ADD T2
  4629. STD CM+3
  4630. NFA SSJN+ACLS
  4631. CWD CM
  4632. UPC2 LJM UPCX RETURN
  4633. VAE SPACE 4,10
  4634. ** VAE - VALIDATE ASSIGNED EQUIPMENT.
  4635. *
  4636. * ENTRY (EQ) = EQUIPMENT EST ORDINAL.
  4637. *
  4638. * EXIT RELEASES EQUIPMENT AND EXITS TO *VSJ1*, IF NOT
  4639. * PROPERLY VALIDATED.
  4640. *
  4641. * CALLS DEQ, RAW.
  4642.  
  4643.  
  4644. VAE SUBR ENTRY/EXIT
  4645. RJM RAW READ ACCESS CONTROL WORD
  4646. SHN 21-6
  4647. MJN VAEX IF PROPERLY VALIDATED FOR ASSIGNED EQUIP
  4648. RJM DEQ RELEASE EQUIPMENT
  4649. UJN VSJ1 * USER ACCESS NOT VALID.*
  4650. VSJ SPACE 4,15
  4651. ** VSJ - VALIDATE SSJ=.
  4652. *
  4653. * ENTRY AT *VSJ1*, IF USER ACCESS NOT VALID ERROR DETECTED.
  4654. *
  4655. * EXIT (FA) = UNCHANGED, IF NO ERROR.
  4656. *
  4657. * ERROR TO *ERR*, IF NOT PROPERLY VALIDATED.
  4658. *
  4659. * USES FA.
  4660. *
  4661. * CALLS CSJ.
  4662.  
  4663.  
  4664. VSJ SUBR ENTRY/EXIT
  4665. RJM CSJ CHECK FOR SSJ= ENTRY POINT
  4666. MJN VSJX IF JOB HAS SSJ= ENTRY POINT
  4667. VSJ1 LDN 0
  4668. STD FA
  4669. LDN /ERR/IUA * USER ACCESS NOT VALID.*
  4670. LJM ERR PROCESS ERROR
  4671. VSO SPACE 4,10
  4672. ** VSO - VALIDATE SYSTEM ORIGIN PRIVLEDGES.
  4673. *
  4674. * ENTRY (OC) = ORIGIN CODE.
  4675. *
  4676. * EXIT (A) = 0 IF JOB IS SYSTEM ORIGIN OR HAS SYSTEM
  4677. * ORIGIN PRIVILEGES.
  4678. *
  4679. * CALLS RAW.
  4680.  
  4681.  
  4682. VSO SUBR ENTRY/EXIT
  4683. LDD OC CHECK FOR SYOT
  4684. LMK SYOT
  4685. ZJN VSOX IF SYOT JOB
  4686. RJM RAW READ ACCESS CONTROL WORD
  4687. LPN 20
  4688. LMN 20
  4689. UJN VSOX RETURN
  4690. VTE SPACE 4,10
  4691. ** VTE - VERIFY TAPE ENTRY.
  4692. *
  4693. * ENTRY (A) = EST ORDINAL.
  4694. *
  4695. * EXIT (A) .EQ. 0 = TAPE EQUIPMENT (MT, NT, CT OR AT).
  4696. * (A) .EQ. 1 = VSN EQUIPMENT (TE).
  4697. * (A) .LT. 0 = NOT TAPE RELATED EQUIPMENT.
  4698. *
  4699. * USES CM - CM+4.
  4700. *
  4701. * CALLS CTE.
  4702. *
  4703. * MACROS SFA.
  4704.  
  4705.  
  4706. VTE SUBR ENTRY/EXIT
  4707. SFA EST READ EST ENTRY
  4708. ADK EQDE
  4709. CRD CM
  4710. LDD CM+3 CHECK EQUIPMENT TYPE
  4711. RJM CTE CHECK FOR TAPE EQUIPMENT
  4712. UJN VTEX RETURN
  4713. SPACE 4,10
  4714. ** COMMON DECKS.
  4715.  
  4716.  
  4717. *CALL COMPACS
  4718. *CALL COMPC2D
  4719. SPACE 4,10
  4720. ERRNG OVL0-* CODE OVERFLOWS INTO ZERO LEVEL OVERLAYS
  4721. OVERFLOW OVL
  4722. OVERLAY (COMMAND FILE FUNCTIONS.)
  4723. SPACE 4,10
  4724. SPACE 4,10
  4725. **** ADDITIONAL DIRECT LOCATION ASSIGNMENTS.
  4726.  
  4727.  
  4728. SP EQU 60 - 64 COMMAND POINTER (5 LOCATIONS)
  4729. CF EQU 65 COMMAND FILE FLAGS
  4730. WO EQU 66 COMMAND SECTOR WORD COUNT OVERLAP
  4731. ****
  4732. ACS SPACE 4,20
  4733. *** FUNCTION 21.
  4734. * ATTACH COMMAND FILE UNDER NAME FROM FET.
  4735. * ENTER CURRENT COMMAND COUNT IN (FET+6).
  4736. *
  4737. * ENTRY (FN - FN+3) = FILE NAME FROM FET+0.
  4738. *
  4739. *T FET+6 1/L,41/,18/ ADDR
  4740. *
  4741. * L = 1 IF FILE MUST BE CREATED AS A LOCKED LIBRARY FILE.
  4742. * ADDR = IF PRESENT IS ADDRESS TO RECEIVE POSITION INFORMATION.
  4743. *
  4744. * EXIT -
  4745. *
  4746. *T FET+6 42/0, 18/COMMAND COUNT
  4747. *
  4748. *T ADDR 30/0, 24/CURRENT RANDOM ADDR, 6/WC
  4749. *
  4750. * WC = WORD COUNT POSITION IN CURRECT SECTOR.
  4751. *
  4752. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  4753.  
  4754.  
  4755. ACS1 ENTRY ACS
  4756. LDD FF SET INITIAL FNT ADDRESS
  4757. RJM SAF SEARCH FOR ASSIGNED FILE
  4758. ZJN ACS2 IF NOT FOUND
  4759. LDN 0 CLEAR FNT ADDRESS
  4760. STD FA
  4761. LDN /ERR/DFN
  4762. LJM ERR PROCESS ERROR
  4763.  
  4764. ACS2 LDD CP READ COMMAND FST ENTRY
  4765. ADN CSSW
  4766. CRD CM
  4767. LDD CM CHECK STATUS
  4768. LPC 777
  4769. ADD CM+1
  4770. NJN ACS3 IF FILE DEFINED
  4771. LJM LFMX EXIT
  4772.  
  4773. ACS3 LDN NEEQ SET NULL EQUIPMENT
  4774. STD EQ
  4775. RJM EFN ENTER FILE NAME
  4776. LDD CP READ COMMAND POINTER
  4777. ADN CSPW
  4778. CRD SP
  4779. ADN CSSW-CSPW READ FST ENTRY
  4780. CRD FS
  4781. LDD FS SAVE ORIGINAL COMMAND FILE FLAGS
  4782. STD CF
  4783. LPC 777 SET EST ORDINAL
  4784. STD FS
  4785. STD T5
  4786. LDD FS+4 SAVE SECTOR WORD COUNT OVERLAP
  4787. LPN 77
  4788. STD WO
  4789. LDN 4 SET EOR OPERATION
  4790. STD FS+4
  4791.  
  4792. * CHECK IF POSITION INFORMATION TO BE RETURNED.
  4793.  
  4794. RJM CPA READ FET+6
  4795. ADN 6
  4796. CRD CN
  4797. LDD CN+3 CHECK IF ADDRESS PRESENT
  4798. LPN 77
  4799. STD CN+3
  4800. SHN 14
  4801. LMD CN+4
  4802. NJN ACS4 IF ADDRESS PRESENT
  4803. LJM ACS7 CHANGE TO *LIFT* FILE TYPE
  4804.  
  4805. ACS4 SHN -6 CHECK IF ADDRESS WITHIN FL
  4806. SBD FL
  4807. MJN ACS5 IF WITHIN FL
  4808. LDN /ERR/AOR * ADDRESS OUT OF RANGE.*
  4809. LJM ERR ABORT
  4810.  
  4811. ACS5 LDD CN SET FILE TYPE OPTION
  4812. SHN -13
  4813. RAM ACSA
  4814. LDD FS+2 CURRENT TRACK
  4815. STD T6
  4816. LDD FS+3 CURRENT SECTOR
  4817. STD T7
  4818. LDD FS+1 FIRST TRACK
  4819. RJM SRA SET RANDOM ADDRESS
  4820. SOD RI+1 ADJUST ADDRESS TO PREVIOUS SECTOR
  4821. PJN ACS6 IF NO UNDERFLOW
  4822. SOD RI
  4823. AOD RI+1
  4824. ACS6 LDD RI RETURN RANDOM ADDRESS
  4825. SHN 6
  4826. STD CM+3
  4827. SHN -14
  4828. STD CM+2
  4829. LDD RI+1
  4830. SHN 6
  4831. STD CM+4
  4832. SHN -14
  4833. RAD CM+3
  4834. LDC CSBN SET WORD COUNT
  4835. SBD SP+3
  4836. SBD WO ADJUST FOR OVERLAP
  4837. RAD CM+4
  4838. SHN -14
  4839. RAD CM+3
  4840. LDN 0 RETURN POSITION INFORMATION
  4841. STD CM
  4842. STD CM+1
  4843. LDD CN+3
  4844. SHN 6
  4845. ADD RA
  4846. SHN 6
  4847. ADD CN+4
  4848. CWD CM
  4849. LDD CF CHECK IF ORIGINAL COMMAND FILE
  4850. SHN 21-13
  4851. MJN ACS7 IF ORIGINAL JOB INPUT FILE
  4852.  
  4853.  
  4854. * IF THE USER OF *ACCSF* HAS BIT 59 SET IN FET+6,
  4855. * IT IS NECESSARY FOR THE COMMAND FILE TO BE
  4856. * ACCESSED AS A LOCKED, READ ONLY, LIBRARY FILE.
  4857. *
  4858. * *CHKPT* USES THIS OPTION BECAUSE IF THE FILE IS CREATED
  4859. * AS LOCAL, THE *ENCSF* MACRO CAN BE USED TO RESTORE THE
  4860. * COMMAND FILE AND THE CORRESPONDING POINTERS IN THE
  4861. * *CPA*. WHEN THE COMMAND BUFFER IS SUBSEQUENTLY
  4862. * RESTORED (FROM THE $DM*$ FILE) IT IS POSSIBLE FOR THE
  4863. * POINTERS TO THE COMMAND FILE (NOT RESTORED FROM
  4864. * THE $DM*$ FILE) TO BE INCORRECT IF A COMMAND WAS
  4865. * CONTINUED FROM THE PREVIOUS SECTOR.
  4866. *
  4867. * *ENQUIRE* USES THIS OPTION BECAUSE IT ONLY WANTS TO READ
  4868. * THE FILE, NOT REPOSITION OR RESTORE IT.
  4869.  
  4870. ACSA LDN 0
  4871. * LDN 1 (FILE MUST BE LOCKED LIBRARY FILE)
  4872. NJN ACS7 IF SETTING WRITE LOCKOUT
  4873. SOM ACSB DO NOT LOCK FILE
  4874. LDN ZERL CLEAR CONTROL POINT AREA POINTERS
  4875. CRD CM
  4876. CRD CN
  4877. LDD SP RETAIN CSPW BYTE 0
  4878. STD CM
  4879. LDD CP
  4880. ADK CSPW
  4881. CWD CM
  4882. ADN CSSW-CSPW
  4883. CWD CN
  4884. UJN ACS8 CHECK *SSJ=* VALUE
  4885.  
  4886. ACS7 LDC LIFT*100-LOFT*100 CHANGE FILE TYPE TO *LIFT*
  4887. RAD FN+4
  4888. ACS8 LDD CP CHECK *SSJ=* ADDRESS VALUE
  4889. ADC SEPW
  4890. CRD CM
  4891. LDD CM+3
  4892. LPN 77
  4893. LMN 40
  4894. SHN 14
  4895. LMD CM+4
  4896. NJN ACS9 IF *SSJ=* VALUE .NE. 400,000B
  4897. LDD FN+4 CHANGE FILE STATUS TO *SSST*
  4898. SCN 77
  4899. LMN SSST
  4900. STD FN+4
  4901. ACS9 LDD FS+1 REWIND FILE
  4902. STD FS+2
  4903. LDN FSMS
  4904. STD FS+3
  4905. LDD FN+3 SET LOCKED FILE
  4906. SCN 77
  4907. LMN 1
  4908. ACSB EQU *-1
  4909. * LMN 0 DO NOT LOCK FILE WHEN LOFT
  4910. STD FN+3
  4911. NFA FA,R STORE FNT WORD
  4912. CWD FN
  4913. LDN ZERL SET COMMAND COUNT
  4914. CRD CN
  4915. LDD SP+1
  4916. LPN 77
  4917. STD CN+3
  4918. LDD SP+2
  4919. STD CN+4
  4920. RJM CPA STORE (FET+6)
  4921. ADN 6
  4922. CWD CN
  4923. LJM LFMX EXIT
  4924. ECS SPACE 4,20
  4925. *** FUNCTION 22.
  4926. * REPLACE COMMAND FILE.
  4927. * IF FILE IS NOT DEFINED, COMMAND FILE WILL BE
  4928. * CLEARED.
  4929. *
  4930. * ENTRY (FN - FN+3) = FILE NAME FROM FET+0.
  4931. * FET+6 42/, 18/ADDR
  4932. *
  4933. * ADDR = IF PRESENT IS ADDRESS CONTAINING POSITION INFORMATION.
  4934. * THE FORMAT OF THIS ADDRESS IS THE FOLLOWING.
  4935. *
  4936. *T ADDR 24/CS, 6/0, 24/CURRENT RANDOM ADDR, 6/WC
  4937. *
  4938. * CS = COMMAND COUNT.
  4939. * WC = WORD COUNT POSITION IN SECTOR.
  4940. *
  4941. * ENTRY (FF) = FET SPECIFIED FNT ADDRESS.
  4942.  
  4943.  
  4944. ENTRY ECS
  4945. LDD FF SET INITIAL FNT ADDRESS
  4946. RJM SAF SEARCH FOR ASSIGNED FILE
  4947. NJN ECS1 IF FOUND
  4948. LDN ZERL
  4949. CRD FS CLEAR FST ENTRY
  4950. LDD CP READ COMMAND POINTER
  4951. ADN CSPW
  4952. CRD SP
  4953. LDC 4000 SET EOR
  4954. STD SP+1
  4955. LDD SP+4 CLEAR BUFFER
  4956. STD SP+3
  4957. LDD CP STORE COMMAND POINTER
  4958. ADN CSPW
  4959. CWD SP
  4960. LJM LFMX RETURN
  4961.  
  4962. ECS1 RJM SFB SET FILE BUSY
  4963. ZJN ECS2 IF NO REJECT ON FILE INTERLOCK
  4964. LDN /ERR/IOE *I/O SEQUENCE ERROR.*
  4965. LJM ERR ABORT
  4966.  
  4967. ECS2 LDD CM+4 CHECK FILE TYPE
  4968. SHN -6
  4969. LMN LOFT
  4970. NJN ECS3 IF NOT LOCAL FILE TYPE
  4971. LDD CM+3 CHECK FILE MODE
  4972. SHN 21-2
  4973. MJN ECS2.1 IF EXECUTE-ONLY FILE
  4974. LJM ECS6 LOCAL FILE TYPE
  4975.  
  4976. ECS2.1 LDN /ERR/ILM * INCORRECT FILE MODE.*
  4977. LJM ERR ABORT
  4978.  
  4979. ECS3 LMN LIFT&LOFT
  4980. NJN ECS4 IF NOT LIBRARY FILE TYPE
  4981. LDC ECS4 MUST HAVE POSITION PARAMETER
  4982. STM ECSA
  4983.  
  4984. * COMPARE TO ORIGINAL JOB INPUT FILE.
  4985.  
  4986. NFA FNTN+FSTL FETCH INPUT FILE FST INFORMATION
  4987. CRD CM
  4988. LDD FS COMPARE EQUIPMENT AND FIRST TRACK
  4989. LMD CM
  4990. NJN ECS4 IF LIBRARY TYPE BUT NOT INPUT
  4991. LDD FS+1
  4992. LMD CM+1
  4993. ZJN ECS5 IF ORIGINAL JOB FILE
  4994. ECS4 LDN /ERR/IFT * INCORRECT FILE TYPE.*
  4995. LJM ERR PROCESS ERROR
  4996.  
  4997. ECS5 LDC MJNI&UJNI PREVENT DROPPING TRACKS
  4998. LMM ECSC
  4999. STM ECSC
  5000. LDC 4000 SET ORIGINAL INPUT FILE FLAG
  5001. STM ECSB
  5002. ECS6 SFA EST,FS CHECK FOR MASS STORAGE
  5003. ADK EQDE
  5004. CRD CM
  5005. LDD CM
  5006. SHN 21-13
  5007. MJN ECS7 IF ON MASS STORAGE
  5008. LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  5009. UJN ECS9 ABORT
  5010.  
  5011. ECS7 LDD FS+2
  5012. NJN ECS10 IF FILE USED
  5013. ECS8 LDN /ERR/FLE * FILE EMPTY.*
  5014. ECS9 LJM ERR PROCESS ERROR
  5015.  
  5016.  
  5017. * CHECK IF POSITION INFORMATION TO BE RETRIEVED.
  5018.  
  5019. ECS10 RJM CPA READ FET+6
  5020. ADN 6
  5021. CRD CN
  5022. LDD CN+3 CHECK IF ADDRESS PRESENT
  5023. LPN 77
  5024. STD CN+3
  5025. SHN 14
  5026. ADD CN+4
  5027. NJN ECS11 IF ADDRESS PRESENT
  5028. LJM ECS13 IF ADDRESS NOT PRESENT
  5029. ECSA EQU *-1
  5030. * LJM ECS4 IF INPUT FILE BUT NO POSITION PARAMETER
  5031.  
  5032. ECS11 SHN -6 CHECK IF ADDRESS WITHIN FL
  5033. SBD FL
  5034. MJN ECS12 IF WITHIN FL
  5035. LDN /ERR/AOR * ADDRESS OUT OF RANGE.*
  5036. LJM ERR ABORT
  5037.  
  5038. ECS12 LDD CN+3 READ POSITION INFORMATION
  5039. SHN 6
  5040. ADD RA
  5041. SHN 6
  5042. ADD CN+4
  5043. CRD CM
  5044. LDD CM+3 GET CURRENT RANDOM ADDRESS
  5045. SHN 6
  5046. STD RI+1
  5047. SHN -14
  5048. STD RI
  5049. LDD CM+4
  5050. SHN -6
  5051. RAD RI+1
  5052. LDD CM+2
  5053. SHN 6
  5054. RAD RI
  5055. LDN 0
  5056. STD CN+3
  5057. LDD CM GET COMMAND COUNT
  5058. STD CN+1
  5059. LDD CM+1
  5060. STD CN+2
  5061. LDD CM+4 SET WORD COUNT
  5062. LPN 77
  5063. STD CN+4
  5064. LDD FS SET EQUIPMENT
  5065. STD T5
  5066. LMC 0
  5067. ECSB EQU *-1
  5068. * LMC 4000 WHEN ORIGINAL JOB INPUT FILE
  5069. STD FS
  5070. LDD FS+1 SET FIRST TRACK
  5071. STD T6
  5072. RJM PCF POSITION COMMAND FILE
  5073. LJM ECS16 STORE NEW FST WORD
  5074.  
  5075. * CONTINUE HERE IF POSITION INFORMATION NOT PRESENT.
  5076.  
  5077. ECS13 LDD CP READ COMMAND POINTER
  5078. ADN CSPW
  5079. CRD SP
  5080. LDD FS SET EQUIPMENT
  5081. STD T5
  5082. LDD FS+1 SET FIRST TRACK
  5083. STD FS+2
  5084. STD T6
  5085. LDN FSMS SET FIRST SECTOR
  5086. STD T7
  5087. SETMS IO
  5088. LDC BFMS READ FIRST SECTOR
  5089. RJM RNS
  5090. ENDMS
  5091. LDD T1 CHECK WORD COUNT
  5092. NJN ECS14 IF NOT EMPTY SECTOR
  5093. LJM ECS8 * FILE EMPTY.*
  5094.  
  5095. ECS14 LDN 0 CLEAR COMMAND COUNT
  5096. STD SP+1
  5097. STD SP+2
  5098. STD FS+4
  5099. LDC CSBN SET INITIAL COMMAND INDEX
  5100. STD SP+3
  5101. NFA SP+3,R STORE SECTOR
  5102. CWM BFMS+2,T1
  5103. LDD SP+3
  5104. SBD T1
  5105. STD SP+4
  5106. LDD T7 SET CURRENT SECTOR IN FST
  5107. STD FS+3
  5108. LDD T1 CHECK BUFFER WORD COUNT
  5109. LMD HN
  5110. ZJN ECS15 IF NOT SHORT SECTOR
  5111. LDC 4000 SET EOR FLAG
  5112. STD SP+1
  5113. ECS15 LDD FS+1
  5114. STD FS+2
  5115. LDD CP STORE COMMAND POINTER
  5116. ADN CSPW
  5117. CWD SP
  5118. ADN CSSW-CSPW READ FST ENTRY
  5119. ECS16 CRD CN
  5120. CWD FS STORE NEW FST ENTRY
  5121. LDD CN
  5122. SHN 21-13
  5123. MJN ECS17 IF OLD FILE WAS INPUT FILE
  5124. ECSC EQU *-1
  5125. * UJN ECS17 (ORIGINAL JOB INPUT FILE)
  5126. LDD CN DROP OLD COMMAND FILE
  5127. LPC 777
  5128. STD CM+1
  5129. LDD CN+1
  5130. STD CM+2
  5131. ZJN ECS17 IF NO FIRST TRACK
  5132. MONITOR DTKM
  5133. LDD CM+3 SET COUNT OF SECTORS RETURNED
  5134. STM DPPB
  5135. LDD CM+4
  5136. STM DPPB+1
  5137. LDN CICS SET INCREMENT SUBFUNCTION
  5138. STM DPPA
  5139. ECS17 LDD FA
  5140. ZJN ECS18 IF NO FNT ENTRY
  5141. STD CM+4
  5142. LDN DLFS CLEAR FNT ENTRY
  5143. STD CM+1
  5144. MONITOR PLFM
  5145. * LDN 0 CLEAR FNT ADDRESS
  5146. STD FA
  5147. ECS18 LJM LFMX EXIT
  5148. PCS SPACE 4,10
  5149. *** FUNCTION 23.
  5150. * POSITION COMMAND FILE.
  5151. *
  5152. * ENTRY -
  5153. *T FET+6 12/,24/ CS,24/ WC
  5154. * CS COMMAND COUNT
  5155. * WC WORD COUNT FROM BEGINNING OF FILE
  5156.  
  5157.  
  5158. ENTRY PCS
  5159. LDD CP READ COMMAND FST ENTRY
  5160. ADN CSSW
  5161. CRD FS
  5162. LDD FS SET EQUIPMENT
  5163. LPC 777
  5164. STD T5
  5165. LDD FS+1 SET FIRST TRACK
  5166. STD T6
  5167. NJN PCS1 IF FILE EXISTS
  5168. LDN /ERR/FLE FILE EMPTY
  5169. LJM ERR PROCESS ERROR
  5170.  
  5171. PCS1 RJM CPA READ (FET+6)
  5172. ADN 6
  5173. CRD CN
  5174. LDD CN+4 SET RANDOM INDEX
  5175. SCN 77
  5176. SHN 6
  5177. LMD CN+3
  5178. SHN 6
  5179. ADN FSMS
  5180. STD RI+1
  5181. SHN -14
  5182. STD RI
  5183. RJM PCF POSITION COMMAND FILE
  5184. CWD FS
  5185. LJM LFMX RETURN
  5186.  
  5187. PCF SPACE 4,25
  5188. ** PCF - POSITION COMMAND FILE.
  5189. *
  5190. * ENTRY (RI - RI+1) = CURRENT RANDOM ADDRESS.
  5191. * (CN+1 - CN+2) = COMMAND COUNT.
  5192. * (CN+3 - CN+4) = WORD COUNT. FROM ECS THIS IS A 6 BIT
  5193. * WORD COUNT IN CN+4 RELATIVE TO THE PRU AND CN+3 = 0.
  5194. * IF FROM PCS THIS IS A 24 BIT WORD COUNT FROM THE
  5195. * BEGINNING OF FILE.
  5196. * (FS - FS+4) = FST ENTRY.
  5197. * (T5) = EST ORDINAL.
  5198. * (T6) = FIRST TRACK.
  5199. *
  5200. * EXIT (SP - SP+4) = WORD CSPW.
  5201. * (FS - FS+4) = UPDATED FST ENTRY.
  5202. * (A) = ADDRESS OF WORD *CSSW*.
  5203. *
  5204. * ERROR TO *ERR*, IF CURRENT RANDOM ADDRESS = 0, OR IF MASS
  5205. * STORAGE DEVICE ENCOUNTERED AN I/O ERROR.
  5206. *
  5207. * USES T2, T4, T6, T7, CN+4.
  5208. *
  5209. * CALLS CRA, RNS.
  5210. *
  5211. * MACROS ENDMS, SETMS.
  5212.  
  5213.  
  5214. PCF SUBR ENTRY
  5215. LDD RI CHECK CURRENT RANDOM ADDRESS
  5216. ADD RI+1
  5217. NJN PCF1 IF CURRENT RANDOM ADDRESS .NE. 0
  5218. LDN /ERR/IRA * INCORRECT RANDOM ADDRESS.*
  5219. LJM ERR PROCESS ERROR
  5220.  
  5221. PCF1 LDD CP READ COMMAND POINTER
  5222. ADN CSPW
  5223. CRD SP
  5224. RJM CRA CONVERT RANDOM ADDRESS
  5225. PJN PCF3 IF ADDRESS ON FILE
  5226. LDM ECSB
  5227. ZJN PCF2 IF NOT ORIGINAL JOB INPUT FILE
  5228. LJM PCF8 SET *EOR*
  5229.  
  5230. PCF2 LDD FS+1 SET FIRST TRACK
  5231. STD T6
  5232. LDN FSMS SET FIRST SECTOR
  5233. STD T7
  5234. LDN 0 CLEAR WORD COUNT
  5235. STD CN+4
  5236. PCF3 LDD T6 SET CURRENT TRACK
  5237. STD FS+2
  5238. LDD T7 SET CURRENT SECTOR
  5239. STD FS+3
  5240. SETMS IO
  5241. LDC BFMS READ SECTOR
  5242. RJM RNS
  5243. ENDMS
  5244. LDD T1
  5245. NJN PCF4 IF NOT EMPTY SECTOR
  5246. LJM PCF8 PROCESS *EOR*
  5247.  
  5248. PCF4 LDD CN+4
  5249. ADD CN+3
  5250. ZJN PCF5 IF POSITIONING TO BEGINNING
  5251. LDD CN+4
  5252. LPN 77
  5253. SBD T1
  5254. SBN 1
  5255. MJN PCF5 IF WORD COUNT ON FILE
  5256. LJM PCF8 SET *EOR*
  5257.  
  5258. PCF5 LDD CN+1 SET COMMAND COUNT
  5259. LPC 3777
  5260. STD SP+1
  5261. LDD CN+2
  5262. STD SP+2
  5263. LDC CSBN SET FIRST BUFFER ADDRESS
  5264. STD SP+3
  5265. LDD T6 UPDATE TRACK
  5266. STD FS+2
  5267. LDD T7 UPDATE SECTOR
  5268. STD FS+3
  5269. LDN 0 CLEAR WORD COUNT
  5270. STD FS+4
  5271. NFA SP+3,R WRITE NEXT SECTOR INTO BUFFER
  5272. CWM BFMS+2,T1
  5273. LDD SP+3 SET COMMAND LIMIT
  5274. SBD T1
  5275. STD SP+4
  5276. LDD CN+4 SET POSITION IN BUFFER
  5277. LPN 77
  5278. LMC -0
  5279. RAD SP+3
  5280. LDD T1
  5281. LMD HN
  5282. ZJN PCF7 IF NOT SHORT BLOCK
  5283. PCF6 LDC 4000 SET *EOR*
  5284. RAD SP+1
  5285. PCF7 LDD CP STORE COMMAND POINTER
  5286. ADN CSPW
  5287. CWD SP
  5288. ADN CSSW-CSPW SET ADDRESS OF *CSSW*
  5289. LJM PCFX EXIT
  5290.  
  5291. PCF8 LDC CSBN SET BUFFER EMPTY
  5292. STD SP+3
  5293. STD SP+4
  5294. LDN 0 CLEAR COMMAND COUNT
  5295. STD SP+1
  5296. STD SP+2
  5297. UJN PCF6 SET *EOR*
  5298. ERX SPACE 4,10
  5299. ** ERX - EVALUATE MASS STORAGE ERROR RETURN.
  5300. *
  5301. * ENTRY (A) = ERROR RESPONSE FROM DRIVER.
  5302. * (T5) = EST ORDINAL.
  5303. * (FS - FS+4) = FST ENTRY.
  5304. *
  5305. * USES FS, IR+4, T0.
  5306. *
  5307. * CALLS ERR, SNB, *1RJ*.
  5308. *
  5309. * MACROS EXECUTE, PAUSE.
  5310.  
  5311.  
  5312. ERX PSN ENTRY
  5313. STD T0 SAVE ERROR RESPONSE
  5314. LDD FS INSURE FST IN CORRECT FORMAT
  5315. LPC 777
  5316. STD FS
  5317. LDD T0
  5318. SHN 21-12
  5319. PJN ERX2 IF ERROR RECOVERABLE
  5320. ERX1 LDN /ERR/CFE
  5321. LJM ERR PROCESS ERROR
  5322.  
  5323. ERX2 LDM MSD CHECK CALLER
  5324. SHN 21-13
  5325. PJN ERX1 IF SUBSYSTEM
  5326. ERX3 PAUSE
  5327. LDD CM+1
  5328. NJP LFMX IF ERROR FLAG SET
  5329. RJM SNB SET FST NONBUSY
  5330. LDD T5 SET EST ORDINAL
  5331. STD IR+4
  5332. EXECUTE 1RJ RECALL JOB
  5333. SPACE 4,10
  5334. ** COMMON DECKS.
  5335.  
  5336.  
  5337. MSR EQU ERX ERROR PROCESSOR FOR *RNS*
  5338. *CALL COMPCRA
  5339. *CALL COMPRNS
  5340. SPACE 4,10
  5341. ERRNG OVL0-* CODE OVERFLOWS INTO ZERO LEVEL OVERLAYS
  5342. OVERFLOW OVL
  5343. OVERLAY (GETFNT AND PRIMARY FUNCTIONS.)
  5344. SPACE 4,10
  5345. **** ADDITIONAL DIRECT LOCATION ASSIGNMENTS.
  5346.  
  5347.  
  5348. CB EQU 65 CONTROL BITS - GETFNT FUNCTION.
  5349. * TEMPORARY STORAGE - PRIMARY FUNCTION.
  5350. SB EQU 66 - 67 FILE SELECTIVITY BITS - GETFNT FUNCTION.
  5351. ****
  5352. TITLE GETFNT
  5353. GTF SPACE 4,50
  5354. *** FUNCTION 25.
  5355. * RETURN TABLE WITH FNT/FST ENTRIES (OPTIONALLY MODIFIED)
  5356. * FOR ALL WORKING FILES.
  5357. *
  5358. * ENTRY -
  5359. *T FET+8 12/NF, 6/, 18/SB, 2/, 1/F, 1/C, 1/M, 1/N, 18/TA
  5360. * WHERE -
  5361. * NF = MAXIMUM NUMBER OF FILE FNT/FST ENTRIES TO
  5362. * RETURN IN TABLE. TABLE SIZE MUST BE AT LEAST
  5363. * NF*2+1. FOR NEW FORMAT, TABLE MUST BE AT
  5364. * LEAST NF*2+2.
  5365. * SB = SELECTIVITY BITS. BIT SET IMPLIES FILE TYPE
  5366. * SELECTED. DEFAULT (*SB*=0) IS SELECTION OF
  5367. * ALL FILE TYPES. BIT POSITIONS AND CORRESPONDING
  5368. * FILE TYPES ARE DEFINED AS FOLLOWS -
  5369. *
  5370. * BIT FILE TYPE
  5371. * 41-38 UNUSED
  5372. * 37 LOFT
  5373. * 36 SYFT
  5374. * 35 FAFT
  5375. * 34 PMFT
  5376. * 33 PTFT
  5377. * 32 LIFT
  5378. * 31 RESERVED
  5379. * 30 RESERVED
  5380. * 29 QFFT
  5381. * 28 TEFT
  5382. * 27 PHQT
  5383. * 26 PRQT
  5384. * 25 ROFT
  5385. * 24 INFT
  5386. * F = SET INDICATES THE NEW FORMAT TWO-WORD ENTRY IS
  5387. * TO BE RETURNED. BITS 18 AND 19 (*M* AND *N*)
  5388. * ARE NOT CHECKED IF THIS BIT IS SET, SINCE THERE
  5389. * IS ONLY ONE FORMAT RETURNED IF *F* IS SET.
  5390. * C = SET IMPLIES TREAT CHECKPOINT FILES NORMALLY
  5391. * (LIKE ANY OTHER FILE). NOT SET IMPLIES WRITE
  5392. * CHECKPOINT FILE FNT/FST ENTRIES IN FET+9, AND
  5393. * ONWARD.
  5394. * M = SET IMPLIES MODIFY FST ENTRIES OF MS FILES
  5395. * WITH LENGTH OF FILE. NOT SET IMPLIES MODIFY
  5396. * WITH RANDOM INDEX.
  5397. * N = SET IMPLIES PERFORM NO MODIFICATION OF FST
  5398. * ENTRIES. NOT SET IMPLIES PERFORM PERTINENT
  5399. * MODIFICATIONS.
  5400. * TA = STARTING CM TABLE ADDRESS.
  5401. *
  5402. * IF NEW FORMAT IS REQUESTED (*F* SET) -
  5403. * (TA) = 48/, 12/ADDR
  5404. *
  5405. * WHERE -
  5406. * ADDR = 0, IF FIRST *GETFNT* CALL.
  5407. * = FWA OF THE LAST FNT ENTRY IN NFL PROCESSED BY
  5408. * LAST *GETFNT* CALL.
  5409. *
  5410. * EXIT IF *N* NOT SET -
  5411. * (FET+8) .LT. 0 IF AT LEAST 1 ERROR ENCOUNTERED.
  5412. * IF *C* NOT SET -
  5413. * (FET+9) = CHECKPOINT FILE FNT.
  5414. * = 0 IF NONE PRESENT (USER MUST PRESET).
  5415. * .LT. 0 IF MORE THAN TWO.
  5416. * (FET+10)= FST.
  5417. * (FET+11)= ALTERNATE CHECKPOINT FILE FNT.
  5418. * = 0 IF NO ALTERNATE (USER MUST PRESET).
  5419. * (FET+12)= FST.
  5420. *
  5421. * WRITES TABLE OF FNT/FST ENTRIES TO A CENTRAL MEMORY TABLE
  5422. * AND TERMINATES WITH A ZERO WORD. IF THE NEW FORMAT IS
  5423. * REQUESTED (BIT 21 SET), THE FIRST WORD OF THE TABLE
  5424. * CONTAINS AN ADDRESS AND THE FIRST FNT ENTRY
  5425. * BEGINS IN THE SECOND WORD OF THE TABLE. FOR MASS
  5426. * STORAGE FILES, BYTES 2 AND 3 OF FST ENTRY CAN BE MODIFIED
  5427. * WITH EITHER A RANDOM INDEX (CONVERTED FROM CURRENT TRACK
  5428. * AND SECTOR), OR THE FILE S LENGTH (NUMBER OF SECTORS).
  5429. * OPTIONALLY, FOR TAPE FILES, FST ENTRY CAN BE MODIFIED
  5430. * WITH *MT* IN BYTE 1 AND BLOCK NUMBER IN BYTES 2 AND 3.
  5431. * MODIFICATION CAN BE DONE ONLY IF THE OLD FORMAT
  5432. * IS TO BE RETURNED IN THE TABLE.
  5433. *
  5434. * IF NEW FORMAT IS SELECTED (*F* SET) -
  5435. * (TA) = 48/, 12/ADDR
  5436. *
  5437. * WHERE -
  5438. * ADDR = 0, IF SEARCH COMPLETE.
  5439. * = FWA OF THE LAST FNT ENTRY IN NFL PROCESSED
  5440. * BY THIS *GETFNT* CALL.
  5441. *
  5442. * OLD FORMAT OF TWO-WORD TABLE ENTRY RETURNED (*F* NOT SET) -
  5443. *
  5444. *T 42/FILENAME, 1/, 3/M, 1/, 1/W, 6/FT, 6/FS
  5445. *T, 12/EQ,48/D
  5446. *
  5447. * NEW FORMAT OF TWO-WORD TABLE ENTRY RETURNED (*F* SET) -
  5448. *
  5449. *T 42/ FILENAME,3/ AL,2/ I,1/W,6/ FT,6/ FS
  5450. *T+1 24/FL ,24/RB, 3/RES, 1/F ,4/M 3/RS, 1/L
  5451. *
  5452. * WHERE -
  5453. * AL = FILE ACCESS LEVEL.
  5454. * D = INFORMATION DEPENDS ON FILE TYPE AND/OR WHETHER
  5455. * OR NOT FST MODIFICATION IS SELECTED.
  5456. * IF TTY FILE -
  5457. * D = 12/*TT*, 36/
  5458. * IF TAPE FILE -
  5459. * D = 12/*MT*, 24/BLOCK COUNT, 12/
  5460. * IF MS FILE AND *M* SET -
  5461. * D = 12/, 24/RANDOM INDEX, 12/
  5462. * IF MS FILE AND *M* NOT SET -
  5463. * D = 12/, 24/FILE LENGTH, 12/
  5464. * IF OPTICAL DISK FILE AND *M* SET -
  5465. * D = 12/*OD*, 24/RANDOM INDEX, 12/
  5466. * IF OPTICAL DISK FILE AND *M* NOT SET -
  5467. * D = 12/*OD*, 24/FILE LENGTH, 12/
  5468. * EQ = EST ORDINAL.
  5469. * FL = FILE LENGTH (IF MS).
  5470. * = 0 (IF TAPE, TTY, OR OTHER).
  5471. * FS = FILE STATUS.
  5472. * FT = FILE TYPE.
  5473. * I = 0, IF MS FILE.
  5474. * = 1, IF TAPE FILE.
  5475. * = 2, IF TTY FILE.
  5476. * = 3, IF NOT MS, TAPE, OR TTY FILE.
  5477. * L = SET IF LAST OPERATION WAS WRITE.
  5478. * M = MODE OF USE ALLOWED.
  5479. * NEW FORMAT -
  5480. * 0 = READ.
  5481. * 1 = WRITE.
  5482. * 2 = MODIFY.
  5483. * 3 = APPEND.
  5484. * 4 = EXECUTE.
  5485. * 5 = READ ALLOW MODIFY.
  5486. * 6 = READ ALLOW APPEND.
  5487. * 7 = UPDATE.
  5488. * 10 = READ ALLOW UPDATE.
  5489. * 11-17 = RESERVED.
  5490. * OLD FORMAT -
  5491. * BIT 16 - SET IF EXTEND-ONLY FILE.
  5492. * BIT 15 - SET IF ALTER-ONLY FILE.
  5493. * BIT 14 - SET IF EXECUTE-ONLY FILE.
  5494. * RB = RANDOM INDEX (IF MS).
  5495. * = BLOCK COUNT (IF TAPE).
  5496. * = 77777777 (IF TAPE BUT *MAGNET* NOT PRESENT.)
  5497. * = 0 (IF TTY OR OTHER).
  5498. * F = THE FILE ERROR STATUS. SET IF THE FILE IS
  5499. * ON A DEVICE THAT IS NOT AVAILABLE.
  5500. * RS = READ STATUS (MS ONLY).
  5501. * 0 = INCOMPLETE READ.
  5502. * 1 = EOR.
  5503. * 2 = EOF.
  5504. * 3 = EOI.
  5505. * 4 = BOI.
  5506. * 5-7 = RESERVED.
  5507. * S = SET IF SYSTEM SECTOR CONTAINS CONTROL
  5508. * INFORMATION.
  5509. * W = SET IF WRITE LOCKOUT.
  5510.  
  5511.  
  5512. ENTRY GTF
  5513. RJM CPA READ FET+CFPN
  5514. ADN CGNT
  5515. CRD CN
  5516. RJM CCP CRACK CALLING PARAMETERS
  5517. MJN GTF1 IF ERROR
  5518. LDD CN+3 CHECK IF TABLE WITHIN RANGE
  5519. SHN 14
  5520. LMD CN+4
  5521. ADD CN
  5522. ADD CN
  5523. ADN 1
  5524. ADD FT+1
  5525. SHN -6
  5526. SBD FL
  5527. MJN GTF3 IF WITHIN RANGE
  5528. LDN /ERR/GTL * GETFNT TABLE TOO LARGE.*
  5529. UJN GTF2 ABORT
  5530.  
  5531. GTF1 LDN /ERR/FTS * FET TOO SHORT.*
  5532. GTF2 LJM ERR PROCESS ERROR
  5533.  
  5534. * DETERMINE FNT ENTRY FROM WHICH TO BEGIN SCAN.
  5535.  
  5536. GTF3 LDC FNTN-LENF FWA OF FNTS IN NFL
  5537. STD FT+4
  5538. LDD FT+1
  5539. ZJN GTF7 IF OLD FORMAT
  5540. LDD CN+4 SAVE FWA OF TABLE
  5541. STM GTFA+1
  5542. LDD CN+3 READ FIRST WORD OF TABLE
  5543. STM GTFA
  5544. SHN 6
  5545. ADD RA
  5546. SHN 6
  5547. ADD CN+4
  5548. CRD FS
  5549. LDD FS+4
  5550. ZJN GTF6 IF NO ADDRESS
  5551. SBD FT+4 (ADDRESS) - (FWA OF FNT-S)
  5552. MJN GTF4 IF ADDRESS OUT OF RANGE
  5553. LDD FT
  5554. SHN 6
  5555. SBD FS+4 (LWA OF FNT-S) - (ADDRESS)
  5556. PJN GTF5 IF ADDRESS NOT OUT OF RANGE
  5557. GTF4 LDN /ERR/AOR * ADDRESS OUT OF RANGE.*
  5558. UJN GTF2 PROCESS ERROR
  5559.  
  5560. GTF5 LDD FS+4
  5561. STD FT+4 SAVE ADDRESS (LAST FNT PROCESSED)
  5562. GTF6 AOD CN+4 ADVANCE TABLE ADDRESS (NEW FORMAT ONLY)
  5563. SHN -14
  5564. RAD CN+3
  5565.  
  5566. * SCAN FNT FOR FILES REQUESTED.
  5567.  
  5568. GTF7 LDN LENF GET NEXT FNT ENTRY
  5569. RAD FT+4
  5570. SHN -6
  5571. SBD FT
  5572. MJN GTF8 IF NOT END OF FNTS
  5573. LDN 0 CLEAR FNT ADDRESS
  5574. STD FT+4
  5575. LJM GTF15 TERMINATE SCAN
  5576.  
  5577. GTF8 NFA FT+4,R
  5578. CRD FN FNT
  5579. ADN FSTL
  5580. CRD FS FST
  5581. ADN FUTL-FSTL
  5582. CRD CM FUT
  5583. LDD CM+2 GET FILE ACCESS LEVEL
  5584. SHN 3
  5585. LPN 70
  5586. STD AL
  5587. LDD FN
  5588. ZJN GTF7 IF EMPTY ENTRY
  5589. RJM CFS CHECK FILE SELECTIVITY
  5590. PJN GTF7 IF FILE NOT SELECTED
  5591. LDD FT+1
  5592. ZJN GTF9 IF OLD FORMAT
  5593. RJM RFE REFORMAT FNT ENTRY (NEW FORMAT ONLY)
  5594. LDD AL SET FILE ACCESS LEVEL IN FNT ENTRY
  5595. RAD FN+3
  5596. UJN GTF10 MODIFY FST
  5597.  
  5598. GTF9 LDD CB CHECK IF FST MODIFICATION DESIRED
  5599. SHN 21-0
  5600. MJN GTF11 IF NO MODIFICATION DESIRED
  5601. GTF10 RJM MFF
  5602. NJP GTF7 IF ERROR EXIT
  5603.  
  5604. * CHECK FOR CHECKPOINT FILE.
  5605.  
  5606. GTF11 LDD CB CHECK FOR NORMAL TREATMENT
  5607. SHN 21-2
  5608. MJN GTF14 IF CHECKPOINT FILES TO BE TREATED NORMALLY
  5609. LDD FN+4
  5610. LPN 77
  5611. LMN CBST
  5612. ZJN GTF12 IF CHECKPOINT FILE TYPE *CB*
  5613. LMN CKST&CBST
  5614. NJN GTF14 IF NOT CHECKPOINT FILE TYPE *CK*
  5615. GTF12 RJM PCF PROCESS CHECKPOINT FILE
  5616. NJN GTF15 IF ERROR
  5617. GTF13 LJM GTF7 GET NEXT FNT ENTRY
  5618.  
  5619. * ENTER FNT/FST IN TABLE AND ADVANCE TABLE POINTER.
  5620.  
  5621. GTF14 LDD CN+3
  5622. SHN 6
  5623. ADD RA
  5624. SHN 6
  5625. ADD CN+4
  5626. CWD FN
  5627. ADN FSTL
  5628. CWD FS
  5629. LDN 2 ADVANCE TABLE POINTER
  5630. RAD CN+4
  5631. SHN -14
  5632. RAD CN+3
  5633. SOD CN DECREMENT FILE COUNTER
  5634. NJN GTF13 IF TABLE NOT FULL
  5635.  
  5636. * TERMINATE SCAN.
  5637.  
  5638. GTF15 LDN ZERL CLEAR LAST WORD OF TABLE
  5639. CRD CM
  5640. LDD CN+3
  5641. SHN 6
  5642. ADD RA
  5643. SHN 6
  5644. ADD CN+4
  5645. CWD CM
  5646. LDD FT+1
  5647. ZJN GTF16 IF OLD FORMAT
  5648. LDD FT+4 SAVE ZERO OR LAST FNT PROCESSED
  5649. STD CM+4
  5650. LDM GTFA REWRITE FIRST WORD OF TABLE
  5651. SHN 6
  5652. ADD RA
  5653. SHN 6
  5654. ADM GTFA+1
  5655. CWD CM
  5656. GTF16 RJM CPA RESET FILE NAME
  5657. CRD FN
  5658. LJM LFMX EXIT
  5659.  
  5660.  
  5661. GTFA BSS 2 FWA OF TABLE
  5662. TITLE PRIMARY
  5663. PRI SPACE 4,10
  5664. *** FUNCTION 31.
  5665. * MAKE FILE PRIMARY.
  5666. * THIS FUNCTION MAKES THE SPECIFIED FILE THE USER S NEW
  5667. * PRIMARY FILE. ANY EXISTING PRIMARY, WHICH IS NOT THE
  5668. * SPECIFIED FILE, IS CHANGED TO TYPE *LOFT*.
  5669. * THE SPECIFIED FILE MUST BE OF TYPE LOCAL AND BE A MASS
  5670. * STORAGE FILE TO BE MADE PRIMARY.
  5671. * THE FILE S FST ADDRESS IS SET INTO THE CPA.
  5672. SPACE 4,10
  5673. ** PRI - PROCESS PRIMARY FUNCTION.
  5674. *
  5675. * ENTRY (FN - FN+3) = WORKING FILE NAME TO BE MADE PRIMARY.
  5676. * (FF) = INITIAL FNT ADDRESS FOR SEARCH.
  5677. *
  5678. * EXIT (FN - FN+3) = WORKING FILE NAME TO BE MADE PRIMARY.
  5679. * (FA) = FNT ENTRY ADDRESS.
  5680. * (FS - FS+4) = FST ENTRY.
  5681.  
  5682.  
  5683. ENTRY PRI
  5684. LDD FF SET INITIAL FNT ADDRESS
  5685. RJM SAF SEARCH FOR ASSIGNED FILE
  5686. NJN PRI1 IF FOUND
  5687. LDN NEEQ SET NULL EQUIPMENT
  5688. STD EQ CREATE NULL PRIMARY FILE
  5689. RJM EFN ENTER FILE NAME
  5690. UJN PRI3 CHECK IF FILE ALREADY PRIMARY
  5691.  
  5692. PRI1 RJM SFB SET FILE BUSY
  5693. ZJN PRI3 IF NO REJECT ON FILE INTERLOCK
  5694. PRI2 LDN /ERR/IOE * I/O SEQUENCE ERROR.*
  5695. UJN PRI6 PROCESS ERROR
  5696.  
  5697. PRI3 LDD CP READ CPA WORD
  5698. ADN TFSW
  5699. CRD CN
  5700. LDD CN+1
  5701. LMD FA
  5702. ZJP LFMX IF SPECIFIED FILE IS ALREADY PRIMARY
  5703. NFA FA,R CHECK FILE TYPE
  5704. CRD CM
  5705. LDD CM+4
  5706. SHN -6
  5707. LMN LOFT
  5708. ZJN PRI7 IF *LOCAL*
  5709. LDN /ERR/IFT * INCORRECT FILE TYPE.*
  5710. PRI6 LJM ERR PROCESS ERROR
  5711.  
  5712. PRI7 LDD FS CHECK FOR MASS STORAGE
  5713. ZJN PRI8 IF NO EQUIPMENT ASSIGNED
  5714. LMN NEEQ
  5715. ZJN PRI8 IF NULL EQUIPMENT
  5716. SFA EST,FS
  5717. ADK EQDE
  5718. CRD T1
  5719. LDD T1
  5720. SHN 21-13
  5721. MJN PRI8 IF MASS STORAGE FILE
  5722. LDN /ERR/IEQ * INCORRECT EQUIPMENT.*
  5723. UJN PRI6 PROCESS ERROR
  5724.  
  5725. PRI8 LDD FS+2
  5726. NJP PRI12 IF NOT AN EMPTY FILE
  5727. LDD FS+1
  5728. NJP PRI11 IF NOT A NULL FILE
  5729. LDD CP GET JOB ACCESS LEVEL
  5730. ADK JSCW
  5731. CRD CM
  5732. LDD CM+1
  5733. SHN -11
  5734. STD AL
  5735. LDN ZERL CLEAR *RTCM* PARAMETERS
  5736. CRD CM
  5737. LDN FSMS+1 SET SECTORS REQUESTED PARAMETER
  5738. STD CM+4
  5739. LDN PRIS SET *RTCM* PARAMETER FOR PRIMARY FILE
  5740. STD CM+2
  5741. AOM PRIA
  5742. LDD AL SET ACCESS LEVEL SELECTION
  5743. ADN 40
  5744. SHN 6
  5745. STD CM+3
  5746. MONITOR RTCM ASSIGN MASS STORAGE SPACE
  5747. LDD CM+4 SET FIRST TRACK
  5748. NJN PRI10 IF MASS STORAGE SPACE AVAILABLE
  5749. LDD CM+3 CHECK *RTCM* REJECT REASON CODE
  5750. LMN 2
  5751. ZJN PRI9 IF REJECT BECAUSE OF ACCESS LEVEL
  5752. LDN /ERR/NMA&/ERR/WEQ * NO MASS STORAGE AVAILABLE.*
  5753. PRI9 LMN /ERR/WEQ * EQUIPMENT NOT AVAILABLE.*
  5754. LJM ERR ISSUE ERROR
  5755.  
  5756. PRI10 STD FS+1
  5757. LDD CM+1 SET EST ORDINAL
  5758. STD FS
  5759. NFA FA,R UPDATE FST FOR *COMPWEI*
  5760. ADN FSTL
  5761. CWD FS
  5762. UJN PRI11.1 WRITE SYSTEM SECTOR AND EOI
  5763.  
  5764. PRI11 LPC 3777 ONLY SET SECTOR IN TRACK BYTE
  5765. STD CM+2
  5766. LDD FS SET EST ORDINAL
  5767. STD CM+1
  5768. LDN FSMS SET SECTOR
  5769. STD CM+3
  5770. MONITOR DTKM SET EOI SECTOR IN TRT
  5771. PRI11.1 LDD FS+1 UPDATE CURRENT TRACK
  5772. STD T6 SET FIRST TRACK PARAMETER
  5773. LDD HN UPDATE STATUS BYTE OF FST
  5774. STD FS+4
  5775. LDD FS
  5776. STD T5
  5777. SETMS IO
  5778. RJM WSS WRITE SYSTEM SECTOR
  5779. RJM WEI WRITE EOI
  5780. ENDMS
  5781. NFA FA,R RE-READ FNT ENTRY
  5782. CRD CM
  5783. PRIA LDN 0
  5784. * LDN 1 (MASS STORAGE SPACE ALLOCATED)
  5785. ZJN PRI12 IF NO SECTORS ALLOCATED
  5786. LDM SLM
  5787. STM DPPB+1
  5788. PRI12 LDD FS+1 REWIND FILE
  5789. STD FS+2
  5790. LDN FSMS
  5791. STD FS+3
  5792. LDD FS+4 UPDATE STATUS BYTE OF FST
  5793. SCN 77
  5794. LMN 4
  5795. STD FS+4
  5796.  
  5797. * CHANGE EXISTING PRIMARY FILE TO TYPE *LOFT*.
  5798.  
  5799. LDD CN+1
  5800. ZJP PRI17 IF NO PRIMARY FILE CURRENTLY EXISTS
  5801. LDD FA SAVE LOCAL FILE FNT ADDRESS
  5802. STD CB
  5803. NFA FA,R WRITE FST WORD
  5804. ADN FSTL
  5805. CWD FS
  5806. LDD CN+1 SAVE FST ADDRESS OF EXISTING PRIMARY FILE
  5807. STD FA
  5808. NFA FA,R READ FNT OF EXISTING PRIMARY FILE
  5809. CRD FS
  5810. LDD FS+4
  5811. SHN -6
  5812. LMN PTFT
  5813. NJN PRI16 IF NOT PRIMARY FILE
  5814. RJM SFB SET PRIMARY FILE BUSY
  5815. ZJN PRI15 IF NO REJECT ON FILE INTERLOCK
  5816. NFA CB,R
  5817. ADN FSTL
  5818. CRD FS
  5819. AOD FS+4
  5820. NFA CB,R
  5821. ADN FSTL
  5822. CWD FS
  5823. LJM PRI2 PROCESS AS I/O SEQ. ERROR
  5824.  
  5825. PRI15 LDC LOFT*100-PTFT*100 CHANGE FILE TYPE TO LOCAL
  5826. RAD CM+4
  5827. AOD FS+4 SET FST COMPLETE
  5828. NFA FA,R STORE FNT ENTRY
  5829. CWD CM
  5830. ADN FSTL
  5831. CWD FS
  5832. PRI16 LDD CB RESTORE LOCAL FILE FNT ADDRESS
  5833. STD FA
  5834. NFA FA,R RESTORE LOCAL FILE FNT ENTRY
  5835. CRD CM
  5836. ADN FSTL
  5837. CRD FS
  5838.  
  5839. * SET NEW FILE AS PRIMARY.
  5840.  
  5841. PRI17 LDC PTFT*100-LOFT*100 CHANGE FILE TYPE TO PRIMARY
  5842. RAD CM+4
  5843. NFA FA,R REWRITE FNT
  5844. CWD CM
  5845. RJM UPP UPDATE PRIMARY FILE POINTERS
  5846. LJM LFMX EXIT
  5847. TITLE SUBROUTINES
  5848. CCP SPACE 4,20
  5849. ** CCP - CRACK CALLING PARAMETERS IN FET+CGNT.
  5850. * ALSO, A CHECK IS MADE TO SEE IF FET LENGTH IS
  5851. * CONSISTENT WITH FET LOCATIONS USED.
  5852. *
  5853. * ENTRY (CN) = NUMBER OF FILE ENTRIES TO RETURN IN TABLE.
  5854. * (CN+1 - CN+2) = SELECTIVITY BITS.
  5855. * (CN+3) = 2/,4/CONTROL BITS,6/
  5856. * (FE) = FET LENGTH - 1.
  5857. *
  5858. * EXIT (A) .GE. 0 IMPLIES FET LENGTH OK.
  5859. * (A) .LT. 0 IMPLIES FET LENGTH IN ERROR.
  5860. * (CN) = NUMBER OF FILE ENTRIES.
  5861. * (SB - SB+1) = SELECTIVITY BITS.
  5862. * (CB) = CONTROL BITS - RIGHT JUSTIFIED.
  5863. * (CN+3) - CONTROL BITS CLEARED.
  5864. * (CN+1) - CHECKPOINT FILE COUNTER CLEARED.
  5865. * (FT) = NFL/100B.
  5866. * (FT+1) = FORMAT FLAG.
  5867. *
  5868. * USES CB, CN, CN+1, CN+3, SB, SB+1, T1, FT - FT+4.
  5869.  
  5870.  
  5871. CCP SUBR ENTRY/EXIT
  5872. LDD CN SET NUMBER OF FILE ENTRIES
  5873. NJN CCP1 IF NOT DEFAULT
  5874. LDC DNFS
  5875. STD CN
  5876. CCP1 LDD CN+1 SET SELECTIVITY BITS
  5877. LPN 77
  5878. SHN 14
  5879. LMD CN+2
  5880. NJN CCP2 IF NOT DEFAULT
  5881. LCN 0 ALL BITS SET FOR DEFAULT
  5882. CCP2 STD SB+1
  5883. SHN -14
  5884. STD SB
  5885. LDN 0 PRESET CHECKPOINT FILE COUNTER
  5886. STD CN+1
  5887. LDN 10 PRESET T1 FOR FET LENGTH CHECK
  5888. STD T1
  5889. LDD CN+3 EXTRACT CONTROL BITS
  5890. SHN -6
  5891. STD CB
  5892. SHN 21-2
  5893. MJN CCP3 IF TREAT CHECKPOINT FILES NORMALLY
  5894. LDN 4
  5895. RAD T1
  5896. CCP3 LDD CP GET NEGATIVE FL
  5897. ADN FLSW
  5898. CRD FT NEGATIVE FL/100B
  5899. * LDN 0 PRESET FORMAT FLAG
  5900. * STD FT+1
  5901. LDD CN+3 CHECK FOR OLD FORMAT
  5902. SHN 21-11
  5903. PJN CCP4 IF OLD FORMAT
  5904. AOD FT+1 SET FLAG FOR NEW FORMAT
  5905. LCN 2 RETURN FILE LENGTH TO BYTES 0 AND 1 OF FST
  5906. RAM MFFA
  5907. SBN 1
  5908. STM MFFB
  5909. CCP4 LDD CN+3 CLEAR CONTROL BITS
  5910. LPN 77
  5911. STD CN+3
  5912. LDD FE
  5913. SBD T1
  5914. LJM CCPX EXIT
  5915. CFS SPACE 4,15
  5916. ** CFS - CHECK FILE SELECTIVITY.
  5917. *
  5918. * ENTRY (SB) AND (SB+1) = SELECTIVITY BITS.
  5919. * (FN - FN+4) = FNT ENTRY.
  5920. * (FS - FS+4) = FST ENTRY.
  5921. *
  5922. * EXIT (A) .LT. 0 IMPLIES SELECTED.
  5923. * (A) .GE. 0 IMPLIES NOT SELECTED.
  5924. *
  5925. * USES T1.
  5926. *
  5927. * CALLS SDQ.
  5928.  
  5929.  
  5930. CFS SUBR ENTRY/EXIT
  5931. LDD FN+4 SET FILE TYPE
  5932. SHN -6
  5933. STD T1
  5934. SBN MXFT
  5935. MJN CFS2 IF TYPE DOES NOT EXCEED MAXIMUM
  5936. CFS1 LDN /ERR/IFT * INCORRECT FILE TYPE.*
  5937. LJM ERR PROCESS ERROR
  5938.  
  5939. CFS2 LDM TFTS,T1 SET SHIFT INSTRUCTION
  5940. ZJN CFS1 IF INCORRECT FILE TYPE
  5941. STM CFSA
  5942. LDD SB LOAD SELECTIVITY MASK
  5943. SHN 14
  5944. LMD SB+1
  5945. CFSA SHN **
  5946. MJN CFSX IF FILE SELECTED
  5947.  
  5948. * FOR COMPATIBILITY, CHECK FOR *PRQT* OR *PHQT*.
  5949.  
  5950. LDD T1
  5951. LMN QFFT
  5952. NJN CFSX IF FILE MAPPING NOT REQUIRED
  5953. LDD SB+1
  5954. LPN 14
  5955. ZJN CFSX IF *PRQT* AND *PHQT* NOT SELECTED
  5956. RJM SDQ SET DISPOSITION CODE
  5957. ZJN CFSX IF NOT *PRQT* OR *PHQT*
  5958. * LDD SB
  5959. * SHN 14
  5960. * LMD SB+1
  5961. LDD SB+1
  5962. CFSB SHN ** (SET BY *SDQ*)
  5963. UJN CFSX RETURN
  5964. CMS SPACE 4,10
  5965. ** CMS - CHECK FOR MASS STORAGE RESIDENT FILE.
  5966. *
  5967. * ENTRY (FS - FS+4) = FILE FST ENTRY.
  5968. *
  5969. * EXIT (A) .LT. 0, IF FILE IS ON MASS STORAGE.
  5970. * (CM - CM+4) = EST ENTRY FOR FILE.
  5971. * (T5) = EST ORDINAL.
  5972. *
  5973. * USES T5, CM - CM+4.
  5974. *
  5975. * MACROS SFA.
  5976.  
  5977.  
  5978. CMS SUBR ENTRY/EXIT
  5979. LDD FS SET EST ORDINAL
  5980. STD T5
  5981. SFA EST READ EST ENTRY
  5982. ADK EQDE
  5983. CRD CM
  5984. LDD CM
  5985. SHN 21-13 POSITION MASS STORAGE BIT
  5986. UJN CMSX RETURN
  5987. MFF SPACE 4,20
  5988. ** MFF - MODIFY FILE S FST.
  5989. *
  5990. * ENTRY (FS - FS+4) = FST ENTRY.
  5991. * (FN - FN+4) = FNT WORD, IF NEW FORMAT REQUESTED.
  5992. * (CB) = CONTROL BITS.
  5993. * (FT+1) = FORMAT FLAG.
  5994. * (FT+4) = FNT ADDRESS.
  5995. *
  5996. * EXIT (A) = 0 IMPLIES NORMAL RETURN.
  5997. * (A) .NE. 0 IMPLIES ERROR EXIT.
  5998. * (FS - FS+4) = MODIFIED FST.
  5999. * (FN+3) UPDATED, IF TAPE FILE AND NEW FORMAT REQUESTED.
  6000. *
  6001. * USES T2, T3, T5, T6, T7, CM - CM+4, FN - FN+4 (ONLY IF
  6002. * NEW FORMAT REQUESTED OR IF ERROR RETURN).
  6003. *
  6004. * CALLS CMS, CPA, SEI, SPA.
  6005. *
  6006. * MACROS DELAY, MONITOR, PAUSE.
  6007. *
  6008. * ERROR FET+CGNT IS SET NEGATIVE.
  6009.  
  6010.  
  6011. MFF SUBR ENTRY/EXIT
  6012. RJM CMS CHECK FOR MASS STORAGE RESIDENT FILE
  6013. PJN MFF1 IF NOT MASS STORAGE FILE
  6014. LJM MFF12 PROCESS MASS STORAGE FILE
  6015.  
  6016. MFF1 LDD CM+3
  6017. LMN 1RT
  6018. SHN 14
  6019. LMN 1RM
  6020. ZJN MFF1.1 IF *MT*
  6021. LMN 1RN&1RM
  6022. ZJN MFF1.1 IF *NT*
  6023. LMN 1RC&1RN
  6024. ZJN MFF1.1 IF *CT*
  6025. LMN 1RA&1RC
  6026. MFF1.1 ZJN MFF6 IF *AT*
  6027. LMN 1RT&1RA
  6028. ZJN MFF2 IF *TT*
  6029. LDD CM+3
  6030. LMC 2ROD
  6031. ZJP MFF21 IF *OD*
  6032.  
  6033. * FILE IS NOT MASS STORAGE, TAPE, OPTICAL DISK OR TTY.
  6034.  
  6035. LDD FT+1
  6036. ZJN MFF4 IF OLD FORMAT
  6037. LDN 3S1 SET NON-MS, TAPE, TTY FILE
  6038. UJN MFF3 CLEAR FST INFORMATION
  6039.  
  6040. * TTY FILE.
  6041.  
  6042. MFF2 LDC 2RTT SHOW TTY FILE
  6043. STD FS+1
  6044. LDD FT+1
  6045. ZJN MFF5 IF OLD FORMAT
  6046. LDN 1S2 SET TTY FILE
  6047. MFF3 RAD FN+3
  6048. LDN 0 CLEAR FILE LENGTH
  6049. STD FS
  6050. STD FS+1
  6051. MFF4 STD FS+2 CLEAR RANDOM INDEX/BLOCK COUNT
  6052. STD FS+3
  6053. MFF5 LJM MFFX RETURN
  6054.  
  6055. * TAPE FILE.
  6056.  
  6057. MFF6 LDD FS+1 GET USER DESCRIPTOR TABLE ADDRESS
  6058. ADN /MTX/UST2
  6059. STD CM+4
  6060. LDN 0 SET READ
  6061. STD CM+1
  6062. LDD HN SET WORD COUNT
  6063. STD CM+3
  6064. LCN 7777-MTSI SET *MAGNET* SUBSYSTEM ID
  6065. STD CM+2
  6066. MONITOR TDAM
  6067. LDD CM+1
  6068. ZJN MFF8 IF COMPLETE
  6069. SBN 2
  6070. PJN MFF7 IF *MAGNET* NOT PRESENT
  6071. PAUSE
  6072. DELAY
  6073. LDD CM+1
  6074. NJN MFF11 IF ERROR
  6075. UJN MFF6 TRY AGAIN
  6076.  
  6077. MFF7 LDD FT+1
  6078. ZJN MFF11 IF OLD FORMAT
  6079. LCN 0
  6080. STD FS+2
  6081. STD FS+3
  6082. UJN MFF9 SET TAPE FILE
  6083.  
  6084. * SET CURRENT BLOCK COUNT.
  6085.  
  6086. MFF8 LDD MA SAVE BLOCK COUNT
  6087. CRD CM
  6088. LDD CM+2
  6089. STD FS+2
  6090. LDD CM+3
  6091. STD FS+3
  6092. LDD FT+1
  6093. ZJN MFF10 IF OLD FORMAT
  6094. MFF9 LDN 1S1 SET TAPE FILE
  6095. RAD FN+3
  6096. LJM MFF17 CLEAR FILE LENGTH
  6097.  
  6098. MFF10 LDC 2RMT SET TAPE FILE
  6099. STD FS+1
  6100. UJN MFF15 RETURN
  6101.  
  6102. * SET ERROR PARAMETER IN FET.
  6103.  
  6104. MFF11 LCN 0 SET ERROR EXIT
  6105. STD FN
  6106. RJM CPA
  6107. ADN CGNT
  6108. CWD FN
  6109. LJM MFFX RETURN
  6110.  
  6111. * MASS STORAGE FILE.
  6112.  
  6113. MFF12 LDD FT+1
  6114. NJN MFF13 IF NEW FORMAT
  6115. LDD CB CHECK TYPE OF MODIFICATION DESIRED
  6116. SHN 21-1
  6117. MJN MFF16 IF FILE LENGTH REQUESTED
  6118.  
  6119. * RETURN RANDOM INDEX.
  6120.  
  6121. MFF13 LDD FS+2 SET TRACK
  6122. STD RI+1
  6123. ZJN MFF14 IF FILE NOT USED
  6124. STD T6
  6125. LDD FS+3 SET SECTOR
  6126. STD T7
  6127. LDD FS+1 SET FIRST TRACK
  6128. RJM SRA SET RANDOM ADDRESS
  6129. NJN MFF11 IF ERROR
  6130. LDD RI SET ADDRESS IN FST
  6131. MFF14 STD FS+2
  6132. LDD RI+1
  6133. STD FS+3
  6134. LDD FT+1
  6135. NJN MFF16 IF NEW FORMAT
  6136. MFF15 LDN 0
  6137. LJM MFFX RETURN
  6138.  
  6139. * RETURN FILE LENGTH.
  6140.  
  6141. MFF16 LDD FS+1 SET FIRST TRACK
  6142. ZJN MFF18 IF FILE NOT USED
  6143. STD T6
  6144. RJM SEI DETERMINE FILE LENGTH
  6145. LCN FSMS DO NOT COUNT SYSTEM SECTOR
  6146. RAD T3
  6147. PJN MFF20 IF NO UNDERFLOW
  6148. SOD T2 COMPENSATE FOR UNDERFLOW
  6149. PJN MFF19 IF SECTORS ASSIGNED TO FILE
  6150. MFF17 LDN 0
  6151. MFF18 STD T2
  6152. UJN MFF20 CLEAR FILE LENGTH
  6153.  
  6154. MFF19 AOD T3 COMPENSATE FOR ONES COMPLEMENT SUBTRACTION
  6155. MFF20 STD FS+3
  6156. MFFA EQU *-1
  6157. * STD FS+1 (NEW FORMAT)
  6158. LDD T2
  6159. MFFB STD FS+2
  6160. * STD FS (NEW FORMAT)
  6161. UJN MFF15 RETURN
  6162.  
  6163. * OPTICAL DISK FILE.
  6164.  
  6165. MFF21 LDD FT+1
  6166. NJN MFF22 IF NEW FORMAT
  6167. LDD CB CHECK TYPE OF MODIFICATION DESIRED
  6168. SHN 21-1
  6169. MJN MFF23 IF FILE LENGTH REQUESTED
  6170.  
  6171. * RETURN RANDOM ADDRESS.
  6172.  
  6173. MFF22 LDD FS+2 SET RANDOM ADDRESS
  6174. STD FS+3
  6175. LDD FS+1
  6176. STD FS+2
  6177. MFF23 LDC 2ROD SET OPTICAL DISK FILE
  6178. STD FS+1
  6179. LDD FT+1
  6180. NJN MFF24 IF NEW FORMAT
  6181. LDD CB CHECK MODIFICATION TYPE
  6182. SHN 21-1
  6183. PJP MFF15 IF FILE LENGTH NOT REQUESTED
  6184.  
  6185. * RETURN FILE LENGTH.
  6186.  
  6187. MFF24 LDD FT+4 GET FNT ORDINAL
  6188. NFA FT+4,R
  6189. ADN FUTL
  6190. CRD CM
  6191. LDD CM+3 SET FILE LENGTH IN FST
  6192. STD T2
  6193. LDD CM+4
  6194. LJM MFF20 RETURN FILE LENGTH
  6195. PCF SPACE 4,20
  6196. ** PCF - PROCESS CHECKPOINT FILE.
  6197. *
  6198. * ENTRY (FN - FN+4) = FNT ENTRY.
  6199. * (FS - FS+4) = FST ENTRY.
  6200. * (CN+1) = CHECKPOINT FILE COUNTER.
  6201. * (IR+3 - IR+4) = FET+0 ADDRESS.
  6202. *
  6203. * EXIT (A) = 0 IMPLIES NORMAL RETURN.
  6204. * (A) .NE. 0 IMPLIES ERROR EXIT - MORE THAN TWO
  6205. * CHECKPOINT FILES EXIST.
  6206. * FN - FN+4 RESET (ON ERROR RETURN ONLY).
  6207. *
  6208. * USES CM (ON ERROR RETURN ONLY), CN+1.
  6209. *
  6210. * CALLS CPA.
  6211. *
  6212. * ON ERROR RETURN, FET+CGNT+1 IS MADE NEGATIVE.
  6213.  
  6214.  
  6215. PCF SUBR ENTRY/EXIT
  6216. LDN 2 INCREMENT CHECKPOINT FILE COUNTER
  6217. RAD CN+1
  6218. LMN 6
  6219. NJN PCF1 IF NOT TOO MANY CHECKPOINT FILES
  6220. LCN 0 SET ERROR
  6221. STD CM
  6222. RJM CPA READ FET FILE NAME
  6223. CRD FN
  6224. ADN CGNT+1 SET ERROR RETURN
  6225. CWD CM
  6226. UJN PCFX ERROR EXIT
  6227.  
  6228. * ENTER CHECKPOINT FILE FNT/FST INTO FET.
  6229.  
  6230. PCF1 RJM CPA
  6231. ADN CGNT-1
  6232. ADD CN+1
  6233. CWD FN
  6234. ADN 1
  6235. CWD FS
  6236. LDN 0
  6237. UJN PCFX EXIT
  6238. RFE SPACE 4,15
  6239. ** RFE - REFORMAT FNT ENTRY.
  6240. *
  6241. * ENTRY (CM+3) = EQUIPMENT MNEMONIC.
  6242. * (FN - FN+4) = FNT.
  6243. *
  6244. * ENTRY (FN - FN+4) = FNT.
  6245. * (FS - FS+4) = FST.
  6246. *
  6247. * EXIT (FN - FN+4) = NEW FORMAT FNT.
  6248. * (FS - FS+4) = NEW FORMAT FST.
  6249. *
  6250. * USES FN+3, FS+4, T4, CM+1 - CM+3.
  6251. *
  6252. * CALLS CMS.
  6253. *
  6254. * MACROS MONITOR, SETMS.
  6255.  
  6256.  
  6257. RFE SUBR ENTRY/EXIT
  6258. RJM CMS CHECK FOR MASS STORAGE RESIDENT FILE
  6259. MJN RFE1 IF MS RESIDENT
  6260. LDD CM+3
  6261. LMC 2ROD
  6262. STD CM+3
  6263. ZJN RFE1 IF OPTICAL DISK
  6264. LDD FS+4 CLEAR READ STATUS AND REFORMAT
  6265. SHN -1
  6266. LPN 1
  6267. STD FS+4
  6268. UJN RFE1.0 REFORMAT ACCESS MODE
  6269.  
  6270. RFE1 LDD FS+4
  6271. SHN -1
  6272. LPN 7
  6273. STD FS+4
  6274. LDD CM+3
  6275. NJN RFE1.1 IF MASS STORAGE
  6276. LDD FS+1
  6277. ADD FS+2
  6278. ZJN RFE1.2 IF AT BOI
  6279. RFE1.0 UJN RFE2 REFORMAT ACCESS MODE
  6280.  
  6281. RFE1.1 BSS 0
  6282. * LDD FS (SET UP BY *CMS*)
  6283. * STD T5
  6284. SETMS STATUS DETERMINE DEVICE ACCESSIBILITY
  6285. LDM MSD RETURN STATUS TO CALLER
  6286. SHN 10-6
  6287. LPC 400 SET FILE ACCESSIBILITY FLAG
  6288. RAD FS+4
  6289. LDD FS+1
  6290. ZJN RFE2 IF EMPTY FILE
  6291. LMD FS+2
  6292. NJN RFE2 IF FIRST TRACK .NE. CURRENT TRACK
  6293. LDD FS+3
  6294. LMN FSMS
  6295. NJN RFE2 IF CURRENT SECTOR .NE. *FSMS*
  6296. RFE1.2 LDD FS+4 SET BOI STATUS
  6297. LPC 401
  6298. ADN 10
  6299. STD FS+4
  6300. RFE2 LDN 0 REFORMAT FILE ACCESS MODE
  6301. STD T4
  6302. RFE3 LDM TAFM,T4 CHECK TABLE
  6303. LMD FN+3
  6304. LPN 35 IGNORE *DIAGNOSTIC*, *UATTACH* STATUS
  6305. ZJN RFE4 IF MATCH
  6306. AOD T4
  6307. LMN TAFML
  6308. NJN RFE3 IF NOT END OF TABLE
  6309. LDN SWET SET SYSTEM SOFTWARE ERROR FLAG
  6310. STD CM+2
  6311. LDC * SET ADDRESS WHERE ERROR DETECTED
  6312. STD CM+1
  6313. MONITOR CHGM CONDITIONALLY HANG PP
  6314. * LDN 0
  6315. UJN RFE5 RETURN ZERO FOR FILE PERMISSION
  6316.  
  6317. RFE4 LDM TAFM,T4 GET EQUIVALENT MODE VALUE FROM TABLE
  6318. SHN -6
  6319. SHN 4
  6320. RFE5 RAD FS+4
  6321. LDD FN+3 CLEAR FILE ACCESS MODE FROM FNT
  6322. SCN 76
  6323. STD FN+3
  6324. LJM RFEX RETURN
  6325. SDQ SPACE 4,15
  6326. ** SQD - SEARCH QFT FOR DISPOSITION CODE.
  6327. *
  6328. * ENTRY (FS - FS+4) = FST ENTRY.
  6329. *
  6330. * EXIT (CFSA) = SHIFT COUNT FOR GETFNT SELECTIVITY BITS
  6331. * IF TYPE PHQT OR PRQT.
  6332. * (A) = 0 IF DISPOSITION CODE NOT PHQT OR PRQT.
  6333. *
  6334. * USES T1 - T6, CM - CM+4.
  6335. *
  6336. * MACROS SFA.
  6337.  
  6338.  
  6339. SDQ5 LDN 0 SET FLAG
  6340.  
  6341. SDQ SUBR ENTRY/EXIT
  6342. LDN QFTP GET NUMBER OF QFT ENTRIES
  6343. CRD CM
  6344. LDN 0 SET COUNTER
  6345. STD CM
  6346.  
  6347. * SEARCH QFT TO DETERMINE DISPOSITION CODE.
  6348.  
  6349. SDQ1 AOD CM INCREMENT QFT ORDINAL
  6350. LMD CM+2
  6351. ZJN SDQX IF NO MORE ENTRIES
  6352. SDQ2 SFA QFT,CM ACCESS QFT ENTRIES
  6353. CRD T2
  6354. ADN ENTQ-JSNQ GET EQUIPMENT AND FIRST TRACK
  6355. CRD T1 COMPARE EQUIPMENT
  6356. LDD FS
  6357. SBD T1
  6358. NJN SDQ1 IF NOT SAME EQUIPMENT
  6359. LDD FS+1 COMPARE FIRST TRACK
  6360. SBD T2
  6361. NJN SDQ1 IF NOT SAME FIRST TRACK
  6362. LDD T2+4 DETERMINE DISPOSITION CODE
  6363. SHN -11
  6364. LMN PHQT
  6365. NJN SDQ3 IF NOT PUNCH QUEUE TYPE
  6366. LDC SHNI+16
  6367. UJN SDQ4 STORE COUNT
  6368.  
  6369. SDQ3 LMN PRQT&PHQT
  6370. NJN SDQ5 IF NOT PRINT OR PUNCH QUEUE TYPE
  6371. LDC SHNI+17
  6372. SDQ4 STM CFSB SET SHIFT INSTRUCTION
  6373. LJM SDQX RETURN
  6374. WDS SPACE 4,10
  6375. ** WDS - WRITE MASS STORAGE.
  6376. *
  6377. * ENTRY (A) = BUFFER ADDRESS.
  6378. * (T5 - T7) = MASS STORAGE PARAMETERS.
  6379. *
  6380. * EXIT (A) .GE. 0.
  6381. *
  6382. * ERROR TO *EER*.
  6383. *
  6384. * CALLS WDS.
  6385.  
  6386.  
  6387. WDS SUBR ENTRY/EXIT
  6388. RJM //WDS
  6389. PJN WDSX IF SUCCESSFUL WRITE
  6390. LJM EER EVALUATE ERROR RETURN
  6391. TAFM SPACE 4,10
  6392. ** TAFM - TABLE OF FILE MODES.
  6393. *
  6394. * TABLE IS IN THE FOLLOWING FORMAT.
  6395. *
  6396. * 6/EV,6/FM
  6397. *
  6398. * WHERE FM = FILE ACCESS MODE OBTAINED FROM THE FNT.
  6399. * EV = EQUIVALENT MODE VALUE TO BE RETURNED TO CALLER.
  6400.  
  6401. TAFM BSS 0
  6402. LOC 0
  6403. VFD 6/0,6/1 READ
  6404. VFD 6/1,6/0 WRITE
  6405. VFD 6/2,6/30 MODIFY
  6406. VFD 6/3,6/20 APPEND
  6407. VFD 6/4,6/4 EXECUTE (INDIRECT ACCESS PERMANENT FILE)
  6408. VFD 6/4,6/5 EXECUTE (DIRECT ACCESS PERMANENT FILE)
  6409. VFD 6/5,6/31 READ/ALLOW MODIFY
  6410. VFD 6/6,6/21 READ/ALLOW APPEND
  6411. VFD 6/7,6/10 UPDATE
  6412. VFD 6/10,6/11 READ/ALLOW UPDATE
  6413. LOC *O
  6414. TAFML EQU *-TAFM
  6415. TFTS SPACE 4,10
  6416. ** TFTS - TABLE OF FILE TYPE SHIFTS.
  6417.  
  6418.  
  6419. TFTS INDEX
  6420. INDEX ROFT,SHNI+20
  6421. INDEX LIFT,SHNI+11
  6422. INDEX PTFT,SHNI+10
  6423. INDEX PMFT,SHNI+7
  6424. INDEX FAFT,SHNI+6
  6425. INDEX SYFT,SHNI+5
  6426. INDEX LOFT,SHNI+4
  6427. INDEX INFT,SHNI+21
  6428. INDEX QFFT,SHNI+14
  6429. INDEX MXFT END OF TABLE
  6430. SPACE 4,10
  6431. ** COMMON DECKS.
  6432.  
  6433.  
  6434. *CALL COMPWEI
  6435. *CALL COMPWSS
  6436. SPACE 4,10
  6437. ERRNG OVL0-* CODE OVERFLOWS INTO ZERO LEVEL OVERLAYS
  6438. OVERFLOW OVL
  6439. SPACE 4,10
  6440. TTL LFM - LOCAL FILE MANAGER.
  6441. END
cdc/nos2.source/opl871/lfm.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator