User Tools

Site Tools


cdc:nos2.source:opl871:fdl

Table of Contents

FDL

Table Of Contents

  • [00010] LDD - LOAD FAST DYNAMIC LOAD DIRECTORIES.
  • [00185] MACRO DEFINITIONS.
  • [00189] COMMON - COMMON CODE FOR *LDD* AND *LDQ*.
  • [00196] CIS - CLEAR INTERLOCKS.
  • [00214] MSR - MASS STORAGE ERROR PROCESSING.
  • [00257] ERROR - SET ERROR STATUS.
  • [00273] LDCA - LOAD ABSOLUTE CM ADDRESS.
  • [00293] MSG - DEFINE MESSAGE.
  • [00393] LIBRARY MANIPULATION ROUTINES.
  • [00802] SUBROUTINES.
  • [00809] CRP - CHECK RECALL PARAMETERS.
  • [00862] DPP - DROP PPU.
  • [00899] ERR - ERROR PROCESSOR.
  • [00939] IBA - INCREMENT BUFFER ADDRESS.
  • [00973] LBM - LOAD BUFFER MEMORY.
  • [01028] PDE - PROCESS DIRECTORY ENTRY.
  • [01137] SCP - SEARCH *CLD* FOR PROCEDURE RECORDS.
  • [01190] SCS - SET COMPLETE STATUS.
  • [01237] SFE - SEARCH FOR ENTRY IN CENTRAL MEMORY DIRECTORY.
  • [01282] SIS - SET INTERLOCK STATUS.
  • [01312] VOT - VALIDATE *OPLD* TABLE.
  • [01343] VUT - VALIDATE *ULIB* TABLES.
  • [01381] COMMON DECKS AND BUFFERS.
  • [01396] TLBD - GLOBAL LIBRARY SET.
  • [01409] BUF - MASS STORAGE BUFFER.
  • [01417] PRESET.
  • [01419] PRS - PRESET.
  • [01653] LDQ - MAIN PROGRAM.
  • [01662] CFN - COMPLETE FUNCTION.
  • [01670] DPP - DROP PP.
  • [01693] SUBROUTINES.
  • [01700] CPN - COMPARE NAMES.
  • [01726] CPY - COPY PROGRAM.
  • [01824] ERR - SET ERROR AND EXIT.
  • [01856] RFS - READ FIRST SECTOR.
  • [01936] PRS - PRESET.
  • [02076] ALF - ACCESS LOCAL FILE.
  • [02145] ASF - ACCESS SYSTEM FILE.
  • [02184] ERP - ERROR PROCESSOR.

Source Code

FDL.txt
  1. IDENT LDD,/LDD/LDD
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. IRA$ EQU 1 SET USER RANDOM ADDRESS INITIALIZATION
  6. MSR$ EQU 1 SET USER MASS STORAGE ERROR PROCESSING
  7. QUAL$ EQU 1 SET UNQUALIFIED COMMON DECKS
  8. *COMMENT FDL - LOAD FAST DYNAMIC LOAD DIRECTORIES.
  9. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  10. TITLE LDD - LOAD FAST DYNAMIC LOAD DIRECTORIES.
  11. SPACE 4,10
  12. *** LDD - LOAD FAST DYNAMIC LOAD DIRECTORIES.
  13. * S. L. KSANDER. 76/04/01.
  14. SPACE 4,10
  15. *** LDD PROCESSES THE PHYSICAL LOADING OF FAST DYNAMIC
  16. * LOAD CAPSULE DIRECTORY INFORMATION INTO THE USER SPECIFIED
  17. * AREA. IF A FUNCTION CODE OF 404 IS PRESENT THEN
  18. * CCL PROCEDURE RECORDS ARE LOCATED RATHER THAN CAPSULES.
  19. SPACE 4,10
  20. *** CALL FORMAT.
  21. *
  22. *
  23. *T 18/ *LDD* ,1/,1/A,4/,12/ DI,6/ RSTAT,1/B,17/ FET
  24. *
  25. * A AUTO RECALL.
  26. * DI DIRECTORY INDEX. (*LDD* RECALL ONLY)
  27. * RSTAT RECALL STATUS BITS. (*LDD* RECALL ONLY)
  28. * 2/LOCAL USER LIBRARY OFFSET.
  29. * 4/GLOBAL LIBRARY SET INDEX.
  30. * B *LDD* RECALL STATUS.
  31. *
  32. *
  33. * FET.
  34. *
  35. *T FET 42/ *GROUP*,9/ STATUS,9/ CODE
  36. *T, 12/,18/ LIST,12/ DIRL,18/ DIRA
  37. *
  38. * INITIAL CALL.
  39. *
  40. * GROUP NAME OF GROUP FOR WHICH DIRECTORY INFORMATION IS
  41. * REQUESTED
  42. * STATUS IGNORED
  43. * CODE FUNCTION CODE.
  44. * 0 = LOCATE CAPSULES.
  45. * 402 = LOCATE TEXT RECORD IN *CLD*.
  46. * 404 = LOCATE TEXT RECORDS.
  47. * LIST ADDRESS OF LIBRARY NAME LIST THAT IS TO BE SEARCHED
  48. * AFTER THE GLOBAL LIBRARY SET, TERMINATED BY ZERO WORD
  49. * DIRL LENGTH OF DIRECTORY STORAGE AREA
  50. * DIRA BASE ADDRESS OF DIRECTORY AREA
  51. *
  52. *
  53. * CALL COMPLETION.
  54. *
  55. * GROUP NOT CHANGED
  56. * STATUS 000 = NO ERRORS
  57. * 001 = ILLEGAL FUNCTION CODE
  58. * 002 = BAD DIRECTORY ADDRESS AND/OR LENGTH (OUTSIDE OF
  59. * JOB FL)
  60. * 003 = BAD LIBLIST ADDRESS AND/OR LENGTH (OUTSIDE OF
  61. * JOB FL)
  62. * 010 = LIBRARY NOT FOUND OR LIBRARY NOT MASS STORAGE
  63. * RESIDENT
  64. * 020 = INSUFFICIENT DIRECTORY SPACE GIVEN
  65. * CODE SET TO 001
  66. * LIST NOT CHANGED
  67. * DIRL SET TO ACTUAL LENGTH REQUIRED
  68. * DIRA NOT CHANGED
  69. *
  70. * *LDD* RECALL.
  71. *
  72. * AFTER EACH LIBRARY HAS BEEN PROCESSED, *LDD* WILL CHECK
  73. * THE TOTAL NUMBER OF SECTORS READ AGAINST THE ASSEMBLY
  74. * CONSTANT *RSLM*. IF THIS LIMIT IS EXCEEDED, *LDD* WILL
  75. * PLACE ITSELF IN RECALL AND RESTART AGAIN WHEN IT IS
  76. * RECALLED.
  77. *
  78. *
  79. * DIRECTORY ENTRY FORMAT.
  80. *
  81. *
  82. * SYSTEM FILE DIRECTORY ENTRY.
  83. *
  84. *T DIRA 12/7777,12/ 0,12/ FNT,6/ ORD,18/ 0
  85. *T,DIRA+1 42/ NAME, 18/ INDEX
  86. *T,DIRA+2 1/1,23/ 0,18/ PRU,18/ LENGTH
  87. *
  88. *
  89. * LOCAL FILE DIRECTORY ENTRY.
  90. *
  91. *T DIRA 1/1,41/ *LFN*,18/ 0
  92. *T,DIRA+1 42/ NAME, 18/ INDEX
  93. *T,DIRA+2 1/1,23/ 0,18/ PRU,18/ LENGTH
  94. *
  95. *
  96. * FNT ADDRESS OF SYSTEM FILE FNT ENTRY
  97. * ORD ORDINAL OF SYSTEM LIBRARY IN LIBRARY NAME TABLE
  98. * LFN LOCAL FILE NAME
  99. * NAME NAME OF CAPSULE OR TEXT RECORD.
  100. * INDEX INDEX RELATIVE TO START OF DIRECTORY OF THE FILE
  101. * ENTRY ASSOCIATED WITH THIS NAME.
  102. * PRU DISK ADDRESS OF FIRST SECTOR OF CAPSULE OR TEXT
  103. * RECORD.
  104. * LENGTH LENGTH OF CAPSULE OR TEXT RECORD.
  105. SPACE 4,15
  106. *** DAYFILE MESSAGES.
  107. *
  108. * * LDD - ARGUMENT ERROR - XXXXXX.* = FET ADDRESS .LT. 2 OR
  109. * .GT. FL-2.
  110. *
  111. * * LDD - I/O SEQUENCE ERROR - FILENAM AT XXXXXX.* = MULTIPLE
  112. * CONCURRENT FUNCTIONS WERE ATTEMPTED ON FILE *FILENAM*.
  113. *
  114. * * LDD - DEVICE ERROR - FILENAM AT XXXXXX.* = AN UNRECOVERED
  115. * DEVICE ERROR WAS ENCOUNTERED ON FILE *FILENAM*.
  116. *
  117. * FOR ALL MESSAGES, XXXXXX IS THE ADDRESS OF THE *LDD*
  118. * PARAMETER BLOCK.
  119. SPACE 4,10
  120. *** OPERATOR MESSAGES.
  121. *
  122. *
  123. * NONE.
  124. SPACE 4,25
  125. **** ASSEMBLY CONSTANTS.
  126.  
  127.  
  128. QUAL ERR ERROR CODES.
  129. ILF EQU 1 ILLEGAL FUNCTION
  130. IAD EQU 2 ILLEGAL ADDRESS
  131. FNF EQU 3 FILE NOT FOUND (LDQ)
  132. ILA EQU 3 ILLEGAL LIBLIST ADDRESS (LDD)
  133. IRA EQU 4 ILLEGAL RANDOM ADDRESS
  134. WPR EQU 5 WRONG PROGRAM
  135. IBF EQU 6 INSUFFICIENT BUFFER
  136. ILE EQU 10 ILLEGAL LIBRARY ENTRY
  137. IDS EQU 20 INSUFFICIENT DIRECTORY SPACE
  138.  
  139. FERT EQU 40 FATAL ERROR TYPES.
  140.  
  141. ARG EQU 40 ARGUMENT ERROR (MUST ALWAYS BE FATAL)
  142. IOS EQU 41 I/O SEQUENCE ERROR (MUST ALWAYS BE FATAL)
  143. MSR EQU 42 MASS STORAGE ERROR (MUST ALWAYS BE FATAL)
  144. QUAL *
  145.  
  146. MEPO EQU 1 MASS STORAGE ERROR PROCESSING OPTION
  147. RSLM EQU 1000 RECALL SECTOR LIMIT
  148.  
  149. ****
  150. SPACE 4,10
  151. *** COMMON DECKS.
  152.  
  153.  
  154. *CALL COMPMAC
  155. *CALL COMSCPS
  156. *CALL COMSMSP
  157. *CALL COMSPIM
  158. *CALL COMSSRU
  159. SPACE 4,25
  160. **** DIRECT LOCATION ASSIGNMENTS.
  161.  
  162.  
  163. ER EQU 17 EOR FLAG
  164. FS EQU 20 - 24 FST ENTRY
  165. CC EQU 25 CAPSULE COUNT
  166. GO EQU 26 GROUP ORDINAL
  167. CL EQU 27 LENGTH OF CENTRAL MEMORY DIRECTORY
  168. GN EQU 30 - 34 GROUP NAME
  169. AB EQU 30 - 34 NAME TO SEARCH FOR IN *CLD*
  170. UL EQU 35 - 36 USER SPECIFIED FILE LIST ADDRESS
  171. DI EQU 37 ACTUAL DIRECTORY LENGTH
  172. FN EQU 40 - 44 FNT ENTRY
  173. FW EQU 45 - 46 FWA OF CM BUFFER
  174. TI EQU 45 - 46 LIBRARY BASE RANDOM INDEX
  175. EC EQU 47 ERROR CODE
  176. FA EQU 57 RELATIVE FNT ADDRESS IN NFL
  177. BL EQU 60 BUFFER LIMIT ADDRESS
  178. SI EQU 61 - 62 SRU INCREMENT TO ERROR PROCESSOR
  179. RI EQU 63 - 64 RANDOM INDEX
  180. BS EQU 65 - 66 BUFFER SIZE (CM BUFFER)
  181. DA EQU 65 - 66 DIRECTORY BASE ADDRESS
  182. DL EQU 67 USER SPECIFIED DIRECTORY LENGTH
  183.  
  184. ****
  185. TITLE MACRO DEFINITIONS.
  186. SPACE 4,10
  187. ** MACRO DEFINITIONS.
  188. COMMON SPACE 4,10
  189. ** COMMON - COMMON CODE FOR *LDD* AND *LDQ*.
  190. *
  191. * THIS MACRO PROVIDES IDENTICAL CODE FOR *LDD* AND *LDQ*.
  192.  
  193.  
  194. COMMON MACRO
  195. CIS SPACE 4,10
  196. ** CIS - CLEAR INTERLOCKS.
  197. *
  198. * ENTRY (CISA) = TRACK NUMBER IF INTERLOCK SET.
  199. *
  200. * EXIT (CISA) = 0.
  201. *
  202. * CALLS CTI.
  203.  
  204.  
  205. CIS SUBR ENTRY/EXIT
  206. LDC 0
  207. CISA EQU *-1
  208. ZJN CISX IF NO INTERLOCK SET
  209. RJM CTI
  210. * LDN 0 CLEAR INTERLOCK SET STATUS
  211. STM CISA
  212. UJN CISX RETURN
  213. MSR SPACE 4,15
  214. ** MSR - MASS STORAGE ERROR PROCESSING.
  215. *
  216. * ENTRY (A) = STATUS RETURNED FROM AN I/O ERROR.
  217. * (T5) = EST ORDINAL.
  218. * (FA) = FNT ADDRESS IF LOCAL FILE PRESENT.
  219. * = 0, OTHERWISE.
  220. *
  221. * USES FS+4, IR+4.
  222. *
  223. * CALLS CIS.
  224. *
  225. * MACROS ERROR, EXECUTE.
  226.  
  227.  
  228. MSR CON 0 ENTRY
  229. SHN 21-12
  230. MJN MSR2 IF UNRECOVERABLE ERROR
  231. LDM MSD
  232. SHN 21-13
  233. MJN MSR3 IF NOT SUBSYSTEM
  234. MSR2 RJM CIS
  235. ERROR MSR * DEVICE ERROR.*
  236.  
  237. * CALL *1RJ* TO RECALL THE PP AND ROLL THE JOB.
  238.  
  239. MSR3 LDD T5 EST ORDINAL
  240. STD IR+4
  241. RJM CIS CLEAR INTERLOCKS
  242. AOD FS+4 SET FET NOT BUSY
  243. LDD FA
  244. ZJN MSR4 IF NO LOCAL FNT
  245. NFA FA,R
  246. ADN FSTL
  247. CWD FS
  248. MSR4 EXECUTE 1RJ
  249. SPACE 4,10
  250. ** COMMON DECKS.
  251.  
  252.  
  253. *CALL COMPCTI
  254. *CALL COMPRNS
  255. ENDM
  256. ERROR SPACE 4,15
  257. ** ERROR - SET ERROR STATUS.
  258. *
  259. *
  260. *NAME ERROR CODE
  261. *
  262. * ENTRY *NAME* = OPTIONAL LOCATION TAG.
  263. * *CODE* = ERROR CODE.
  264.  
  265. PURGMAC ERROR
  266.  
  267. ERROR MACRO A
  268. MACREF ERROR
  269. LDN /ERR/A
  270. RJM ERR
  271. ENDM
  272. LDCA SPACE 4,20
  273. ** LDCA - LOAD ABSOLUTE CM ADDRESS.
  274. *
  275. *
  276. *NAME LDCA DC
  277. *
  278. * ENTRY *NAME* = OPTIONAL LOCATION TAG.
  279. * *DC* = FIRST OF TWO DIRECT LOCATIONS TO BE USED.
  280.  
  281. PURGMAC LDCA
  282.  
  283. LDCA MACRO X
  284. MACREF LDCA
  285. LDD X
  286. LPN 37
  287. SHN 6
  288. ADD RA
  289. SHN 6
  290. ADD X+1
  291. ENDM
  292. MSG SPACE 4,15
  293. ** MSG - DEFINE MESSAGE.
  294. *
  295. *ERR MSG (TEXT)
  296. *
  297. * ENTRY *ERR* = ERROR CODE.
  298. * *TEXT* = ERROR MESSAGE.
  299.  
  300. PURGMAC MSG
  301.  
  302. MACRO MSG,ERR,TEXT
  303. LOCAL A
  304. MACREF MSG
  305. A MICRO 1,,$TEXT$
  306. A MICCNT A
  307. ERRNG 20D-A MESSAGE TOO LONG
  308. ERR CON =Z$TEXT$
  309. ENDM
  310. LDD TITLE MAIN PROGRAM.
  311. QUAL LDD
  312.  
  313. *** LDD - MAIN PROGRAM.
  314.  
  315.  
  316. ORG PPFW
  317.  
  318. LDD RJM PRS PRESET
  319. LDDB LDN 0
  320. * LDN 1 (FUNCTION CODE 402)
  321. NJN LDD3.4 IF FUNCTION CODE IS 402
  322. LDD CP READ GLOBAL LIBRARY SET
  323. ADC LB1W
  324. CRM TLBD,TR
  325. LDD1 LDN 0 CLEAR FNT ADDRESS
  326. STD FA
  327. STD FN CLEAR FILE NAME
  328. STM SISA
  329. PAUSE
  330. LDD CM+1 CHECK ERROR FLAGS
  331. ZJN LDD3 IF NO ERROR FLAGS
  332. LDD2 LJM SCS SET COMPLETE STATUS
  333.  
  334. LDD3 RJM CRP CHECK RECALL PARAMETERS
  335. RJM GNL GET NEXT LIBRARY
  336. LDD FN CHECK LIBRARY FOUND
  337. NJN LDD5 IF NOT END OF LIBRARIES
  338. LDDA LDN 0
  339. * LDN 1 (FUNCTION CODE 404)
  340. ZJN LDD2 IF NOT FUNCTION CODE 404
  341. LDD3.4 RJM SCP SEARCH *CLD* FOR PROCEDURE RECORD
  342. NJN LDD4 IF ENTRY FOUND
  343. ERROR ILE ILLEGAL LIBRARY ENTRY
  344. UJN LDD2 EXIT
  345.  
  346. LDD4 RJM PDE PROCESS DIRECTORY ENTRY
  347. UJN LDD2 SET COMPLETE STATUS
  348.  
  349. LDD5 RJM LNL LOCATE NEXT LIBRARY
  350. LDD FN CHECK LIBRARY FOUND
  351. ZJN LDD6 IF LIBRARY NOT FOUND
  352.  
  353. * PROCESS *ULIB* RECORD.
  354.  
  355. LDC BUF LOAD BUFFER MEMORY
  356. RJM LBM
  357. LDC BUF RESET BUFFER ADDRESS
  358. STD T3
  359. RJM VUT VALIDATE *ULIB* TABLES
  360. NJN LDD7 IF NO ERROR IN *ULIB* TABLES
  361.  
  362. LDD6 ERROR ILE ILLEGAL LIBRARY ENTRY
  363. RJM CIS CLEAR INTERLOCK STATUS
  364. UJN LDD8
  365.  
  366. LDD7 RJM SFG SEARCH FOR GROUP NAME
  367. ZJN LDD6 IF NO MATCH ON GROUP NAME
  368.  
  369. * PROCESS *OPLD* RECORD.
  370.  
  371. RJM SIS SET INTERLOCK STATUS
  372. LDD FS+1 SET FIRST TRACK
  373. STD T6
  374. RJM CRA CONVERT RANDOM ADDRESS
  375. MJN LDD6 IF RANDOM INDEX ERROR
  376. LDC BUF LOAD BUFFER MEMORY
  377. RJM LBM
  378. LDC BUF RESET BUFFER ADDRESS
  379. STD T3
  380. RJM VOT VALIDATE *OPLD* TABLE
  381. MJN LDD6 IF ERROR IN *OPLD* TABLE
  382. RJM PGM PROCESS GROUP MEMBERS
  383. ZJN LDD8 IF NO FIND OR CAPSULE PROCESSING
  384. LJM LDD2 IF FIND ON FUNCTION CODE 404
  385.  
  386. LDD8 AOD FS+4 SET FILE NOT BUSY
  387. LDD FA
  388. ZJN LDD9 IF NOT LOCAL LIBRARY
  389. NFA FA,R
  390. ADN FSTL
  391. CWD FS
  392. LDD9 LJM LDD1 LOOP
  393. TITLE LIBRARY MANIPULATION ROUTINES.
  394. GNL SPACE 4,15
  395. *** GNL - GET NEXT LIBRARY NAME.
  396. *
  397. * ENTRY (UL - UL+1) = ADDRESS OF NEXT USER LIBLIST ENTRY.
  398. * (TLBD) = GLOBAL LIBRARY SET.
  399. * (FN) = 0.
  400. *
  401. * EXIT (FN) = 0 IF NO LIBRARY FOUND.
  402. * (FN - FN+4) = NAME OF NEXT USER LIBRARY.
  403. * (UL - UL+1) = UPDATED TO NEXT USER LIBLIST ENTRY.
  404. * TO *ERR* IF ILLEGAL LIBLIST ADDRESS.
  405. *
  406. * USES T7, CM - CM+4, FN - FN+4, UL - UL+1.
  407.  
  408.  
  409. * PROCESS USER LIBLIST ENTRY.
  410.  
  411. GNL4 LDD UL CHECK USER SPECIFIED LIBLIST
  412. SHN 14
  413. ADD UL+1
  414. ZJN GNLX IF NO USER SPECIFIED LIBLIST
  415. SHN -6 CHECK USER LIBLIST ADDRESS
  416. SBD FL
  417. MJN GNL6 IF LIBLIST ADDRESS WITHIN FL
  418. GNL5 ERROR ILA ILLEGAL LIBLIST ADDRESS
  419.  
  420. GNL6 LDCA UL READ LIBRARY NAME
  421. CRD FN
  422. AOD UL+1 ADVANCE LIBLIST ADDRESS
  423. SHN -14
  424. RAD UL
  425. GNL7 LDD FN+3 SET LIBRARY NAME
  426. SCN 77
  427. STD FN+3
  428. LDN 0
  429. STD FN+4
  430.  
  431. GNL SUBR ENTRY/EXIT
  432. LDC TLBD+3 CHECK END OF GLOBAL LIBRARY SET TABLE
  433. GNLA EQU *-1
  434. STD T7
  435. LMC TLBDL
  436. GNLB EQU *-1
  437. * LMC TLBDL-5 (ONE LOCAL USER LIBRARY)
  438. * LMC TLBDL-12 (TWO LOCAL USER LIBRARIES)
  439. ZJN GNL1 IF END OF GLOBAL LIBRARY SET
  440. LDI T7 GET NEXT LIBRARY ORDINAL
  441. GNLC SHN -6 POSITION ORDINAL
  442. * SHN 0 (LIBRARY ORDINAL IN LOWER SIX BITS)
  443. LPN 77
  444. NJN GNL2 IF NOT END OF GLOBAL LIBRARY SET
  445. GNL1 LJM GNL4
  446.  
  447. GNL2 STD T7
  448. AOM GNLE ADVANCE GLOBAL LIBRARY INDEX
  449. SHN -1
  450. ADC TLBD+3
  451. STM GNLA
  452. LDM GNLC ADVANCE SHIFT INSTRUCTION
  453. LMN -6+77
  454. STM GNLC
  455. LDD T7
  456. SBN 77
  457. ZJN GNL3 IF LOCAL USER LIBRARY
  458. ADN 76 SET OFFSET = (ORDINAL-1) * 2
  459. SHN 1
  460. STD T7
  461. LDC LBDP READ LIBRARY DIRECTORY
  462. CRD CM
  463. LDD CM+2 FORM ADDRESS OF LIBRARY NAME
  464. SHN 14
  465. ADD CM+3
  466. ADD T7 ADD OFFSET
  467. CRD FN READ LIBRARY NAME
  468. LJM GNL7
  469.  
  470. * READ LOCAL FILE LIBRARY NAME.
  471.  
  472. GNL3 LDD CP READ LOCAL USER LIBRARY NAME
  473. ADC LB3W
  474. GNLD EQU *-1
  475. * ADC LB2W (SECOND LOCAL USER LIBRARY)
  476. CRD FN READ LIBRARY NAME
  477. SOM GNLD ADVANCE LOCAL USER LIBRARY POINTER
  478. LCN 5 ADVANCE END OF GLOBAL LIBRARY SET TABLE
  479. RAM GNLB
  480. AOM CRPA ADVANCE RECALL VALUE
  481. LJM GNL7
  482.  
  483. GNLE CON 0 GLOBAL LIBRARY SET BYTE INDEX
  484. LNL SPACE 4,25
  485. *** LNL - LOCATE NEXT LIBRARY.
  486. *
  487. * ENTRY (FN - FN+3) = LIBRARY NAME.
  488. * (LNLA) = FNT ADDRESS SYSTEM FILE.
  489. *
  490. * EXIT (FN) = 0 IF LIBRARY NOT FOUND.
  491. * (T5) = EQUIPMENT.
  492. * (T6) = FIRST TRACK OF LIBRARY FILE.
  493. * (FA) = FNT ADDRESS IF LOCAL FILE LIBRARY FOUND.
  494. * (PDEB) = INDEX OF LIBRARY FILE HEADER IN DIRECTORY.
  495. * (RI - RI+1) = RANDOM INDEX OF LIBRARY *ULIB* RECORD.
  496. * (FS - FS+4) = FST OF LOCAL FILE USER LIBRARY.
  497. * (DIRA - DIRA+4) = FIRST WORD OF DIRECTORY ENTRY FOR
  498. * LIBRARY.
  499. * (CISA) = SET TO INDICATE INTERLOCK CLEARED.
  500. * (SISA) = SET TO INDICATE IF INTERLOCK REQUIRED.
  501. * RANDOM ACCESS PROCESSORS PRESET.
  502. * DRIVER LOADED AND ERROR PROCESSING SET.
  503. *
  504. * USES FA, CM - CM+4, FN - FN+4, FS - FS+4, RI - RI+4,
  505. * T1 - T7.
  506. *
  507. * CALLS CRA, IRA, SAF, SFB, SIS.
  508. *
  509. * MACROS ERROR, SETMS, SFA.
  510.  
  511.  
  512. LNL SUBR ENTRY/EXIT
  513. RJM SAF SEARCH FOR ASSIGNED FILE
  514. NJN LNL1 IF FILE FOUND
  515. LJM LNL5 SEARCH SYSTEM LIBRARIES
  516.  
  517. LNL1 RJM SFB SET FILE BUSY
  518. ZJN LNL2 IF FILE SET BUSY
  519. ERROR IOS * I/O SEQUENCE ERROR.*
  520.  
  521. LNL2 LDD CM+3 CHECK FILE MODE
  522. LPN 4
  523. ZJN LNL2.1 IF NOT EXECUTE-ONLY
  524. LDD CP CHECK VALID ACCESS
  525. ADC EOCW
  526. CRD T1
  527. LDD T1
  528. LMD FA
  529. NJN LNL4 IF NOT VALID ACCESS
  530. LNL2.1 LDD CM+4 CHECK FILE TYPE
  531. SHN -6
  532. LMN PMFT
  533. NJN LNL3 IF NO PERMANENT FILE
  534. LDD CM+3 CHECK ACCESS MODE
  535. LPN 20
  536. ZJN LNL3 IF NOT M, A, RM, OR RA MODE
  537. LDD FS+1
  538. STM SISA SET INTERLOCK REQUIRED STATUS
  539. LNL3 LDD FS
  540. STD T5
  541. SFA EST READ EST ENTRY
  542. ADK EQDE
  543. CRD CM
  544. LDD CM CHECK EQUIPMENT TYPE
  545. SHN 21-13
  546. PJN LNL4 IF NOT MASS STORAGE
  547. LDD FS+2 CHECK FOR TRACK
  548. ZJN LNL4 IF FILE EMPTY
  549. LJM LNL10 PROCESS LOCAL FILE
  550.  
  551. * SET ERROR STATUS.
  552.  
  553. LNL4 LDN 0 CLEAR FIRST BYTE OF LIBRARY NAME
  554. STD FN
  555. LJM LNLX RETURN
  556.  
  557. * SEARCH LIBRARY NAME TABLE FOR LIBRARY.
  558.  
  559. LNL5 STD T5 CLEAR LIBRARY ORDINAL
  560. LDC LBDP READ LIBRARY NAME TABLE FWA
  561. CRD CM-1
  562. LNL6 AOD T5 ADVANCE ORDINAL
  563. LDD CM+1 READ LIBRARY NAME
  564. SHN 14
  565. ADD CM+2
  566. CRD FS
  567. ADN 1 READ RANDOM ADDRESS
  568. CRD RI-3
  569. LDD FS COMPARE CHARACTERS 1 AND 2
  570. ZJN LNL4 IF END OF LIBRARY NAME TABLE
  571. LMD FN
  572. ZJN LNL8 IF CHARACTERS MATCH
  573. LNL7 LDN 2 ADVANCE LIBRARY NAME TABLE ADDRESS
  574. RAD CM+2
  575. SHN -14
  576. RAD CM+1
  577. UJN LNL6 LOOP TO END OF LIBRARY NAME TABLE
  578.  
  579. LNL8 LDD FN+1 COMPARE CHARACTERS 3 AND 4
  580. LMD FS+1
  581. NJN LNL7 IF NO COMPARE
  582. LDD FN+2 COMPARE CHARACTERS 5 AND 6
  583. LMD FS+2
  584. NJN LNL7 IF NO COMPARE
  585. LDD FN+3 COMPARE CHARACTER 7
  586. LMD FS+3
  587. SCN 77
  588. NJN LNL7 IF NO COMPARE
  589.  
  590. * FORM SYSTEM LIBRARY DIRECTORY HEADER.
  591.  
  592. LDN ZERL CLEAR DIRECTORY ENTRY
  593. CRM DIRA,ON
  594. LDD DI SET INDEX TO FILE ENTRY
  595. STM PDEB
  596. LDD T5 ADD LIBRARY ORDINAL
  597. SHN 6
  598. STM DIRA+3
  599. LCN 0
  600. STM DIRA
  601. LDN FNTP READ SYSTEM FST ENTRY
  602. CRD CM
  603. LDD CM
  604. SHN 14
  605. LMD CM+1
  606. ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
  607. ADN FSTG
  608. CRD FS
  609. CRD T5
  610. LDD RI SET RANDOM ADDRESS BIAS
  611. SHN 14
  612. ADD RI+1
  613. SBN 1
  614. STD TI+1
  615. SHN -14
  616. STD TI
  617. RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
  618. RJM CRA CONVERT RANDOM ADDRESS
  619. PJN LNL9 IF NO RANDOM INDEX ERROR
  620. LJM LNL4
  621.  
  622. LNL9 SETMS READSYS SYSTEM SELECTION OF EQUIPMENT
  623. LJM LNLX RETURN
  624.  
  625. * FORM LOCAL LIBRARY DIRECTORY HEADER.
  626.  
  627. LNL10 LDD FS+1 SET FIRST TRACK
  628. STD T6
  629. LDN 0 SET INITIAL RANDOM ADDRESS
  630. STD RI
  631. STD TI
  632. LDN FSMS
  633. STD RI+1
  634. SBN 1 SET RANDOM ADDRESS BIAS
  635. STD TI+1
  636. LDD MA FORM FIRST WORD OF DIRECTORY
  637. CWD FN
  638. CRM DIRA,ON
  639. LDC 4000 FLAG FILE DIRECTORY ENTRY
  640. RAM DIRA
  641. LDD DI SET INDEX TO FILE ENTRY
  642. STM PDEB
  643. RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
  644. RJM SIS SET INTERLOCK STATUS
  645. RJM CRA
  646. PJN LNL11 IF NO RANDOM INDEX ERROR
  647. LJM LNL4
  648.  
  649. LNL11 SETMS IO
  650. LJM LNLX RETURN
  651. PGM SPACE 4,15
  652. *** PGM - PROCESS GROUP MEMBERS.
  653. *
  654. * ENTRY (GO) = ORDINAL OF GROUP NAME WITHIN CURRENT LIBRARY.
  655. * (T2) = *OPLD* TABLE BASE ADDRESS.
  656. * (BL) = BUFFER LIMIT ADDRESS.
  657. * (ER) = BUFFER EOR/EOF/EOI STATUS.
  658. * (GN - GN+4) = NAME OF *CCL* PROCEDURE TO LOCATE
  659. * IF FUNCTION CODE 404.
  660. *
  661. * EXIT ALL CAPSULES OR PROCEDURE RECORDS PROCESSED.
  662. * (A) = 1 IF FIND ON FUNCTION CODE 404.
  663. * (A) = 0 IF NO FIND ON FUNCTION CODE 404 OR *EOR*
  664. * STATUS REACHED FOR PROCESSING OF CAPSULES.
  665. * TO *SCS* IF ERROR FLAG SET.
  666. *
  667. * USES T1, T2, T3.
  668. *
  669. * CALLS LBM, PDE, SIS.
  670.  
  671.  
  672. PGM SUBR ENTRY/EXIT
  673. LDD T2 SKIP *OPLD* TABLE
  674. ADN 1*5
  675. PGM1 STD T3 SET BASE ADDRESS
  676. PGM2 LDN 0
  677. * LDN 1 (FUNCTION CODE 404)
  678. PGMA EQU *-1
  679. ZJN PGM5 IF NOT FUNCTION CODE 404
  680. LDM 4,T3 CHECK FOR TYPE *PROC*
  681. LMN 20
  682. ZJN PGM3 IF TYPE *PROC*
  683. LJM PGM6 IF NOT TYPE *PROC*
  684.  
  685. PGM3 LDD T3
  686. STD T1
  687. LDN GN CHECK NAME FOR MATCH
  688. STD T2
  689. PGM4 LDI T2
  690. LMI T1
  691. NJN PGM6 IF NO MATCH
  692. AOD T1
  693. AOD T2
  694. LMN GN+3
  695. NJN PGM4 IF 3 BYTES NOT PROCESSED
  696. LDI T2 CHECK FOURTH BYTE
  697. LMI T1
  698. SCN 77
  699. NJN PGM6 IF NO MATCH
  700. RJM PDE PROCESS DIRECTORY ENTRY
  701. LDN 1
  702. LJM PGMX RETURN
  703.  
  704. PGM5 LDM 4,T3 CHECK FOR TYPE *CAP*
  705. LMN 16
  706. NJN PGM6 IF NOT TYPE *CAP*
  707. LDM 5,T3 CHECK GROUP ORDINAL
  708. LMD GO
  709. NJN PGM6 IF NOT CORRECT GROUP ORDINAL
  710. RJM PDE PROCESS DIRECTORY ENTRY
  711. PGM6 LDN 2*5 INCREMENT BASE ADDRESS
  712. RAD T3
  713. SBD BL CHECK BUFFER LIMIT
  714. PJN PGM7 IF BUFFER EXHAUSTED
  715. LJM PGM2 LOOP
  716.  
  717. PGM7 LDD ER CHECK EOR STATUS
  718. NJN PGM8 IF NOT *EOR* IN BUFFER
  719. LJM PGMX IF *EOR* IN BUFFER
  720.  
  721. PGM8 RJM SIS SET INTERLOCK STATUS
  722. LDC BUF RELOAD BUFFER
  723. RJM LBM LOAD BUFFER MEMORY
  724. LDC BUF+2 RESET BASE ADDRESS
  725. LJM PGM1 LOOP
  726. SFG SPACE 4,20
  727. *** SFG - SEARCH FOR GROUP MEMBERS.
  728. *
  729. * ENTRY (A) = NUMBER OF GROUP NAMES IN *ULIB* RECORD.
  730. * (T2) = *ULIB* TABLE BASE ADDRESS.
  731. * (TI - TI+1) = BASE RANDOM ADDESS OF LIBRARY.
  732. * (GN - GN+4) = GROUP NAME.
  733. * (BL) = BUFFER LIMIT ADDRESS.
  734. * (ER) = BUFFER EOR/EOF/EOI STATUS.
  735. *
  736. * EXIT (A) = 0 IF NO GROUP NAMES FOUND.
  737. * (A) .NE. 0 IF GROUP NAME FOUND WITHIN *ULIB* RECORD.
  738. * (A) = 1 IF FUNCTION CODE 404.
  739. * (CC) = NUMBER OF CAPSULES IN CURRENT GROUP.
  740. * (GO) = ORDINAL OF GROUP WITHIN CURRENT LIBRARY.
  741. * (RI - RI+1) = RANDOM INDEX OF LIBRARY *OPLD* RECORD.
  742. * TO *SCS* IF ERROR FLAG SET.
  743. *
  744. * USES T3, CC, GO, RI - RI+1.
  745. *
  746. * CALLS LBM, SIS.
  747.  
  748.  
  749. SFG SUBR ENTRY/EXIT
  750. STD CC SAVE GROUP COUNT
  751. LDM 3,T2 SET *OPLD* RANDOM ADDRESS
  752. ADD TI+1
  753. STD RI+1
  754. SHN -14
  755. ADM 2,T2
  756. ADD TI
  757. STD RI
  758. SFGA LDN 0
  759. * LDN 1 (FUNCTION CODE 404)
  760. NJN SFGX IF FUNCTION CODE 404
  761. LDN 1 INITIALIZE GROUP NAME ORDINAL
  762. STD GO
  763. LDD T2 SKIP *ULIB* HEADER
  764. ADN 5
  765. SFG1 STD T3 SET BASE ADDRESS
  766. SFG2 LDD GN CHECK GROUP NAME
  767. LMI T3
  768. LPC 3777
  769. ZJN SFG4 IF MATCH
  770. SFG3 SOD CC DECREMENT GROUP COUNT
  771. ZJN SFGX IF ALL GROUPS PROCESSED
  772. AOD GO INCREMENT GROUP ORDINAL
  773. LDN 5 ADVANCE TO NEXT ITEM
  774. RAD T3
  775. SBD BL CHECK BUFFER LIMIT
  776. PJN SFG5 IF BUFFER EXHAUSTED
  777. UJN SFG2 LOOP
  778.  
  779. SFG4 LDD GN+1 COMPARE NAME CHARACTERS 3 AND 4
  780. LMM 1,T3
  781. NJN SFG3 IF NO MATCH
  782. LDD GN+2 COMPARE NAME CHARACTERS 5 AND 6
  783. LMM 2,T3
  784. NJN SFG3 IF NO MATCH
  785. LDD GN+3 COMPARE NAME CHARACTER 7
  786. LMM 3,T3
  787. SCN 77
  788. NJN SFG3 IF NO MATCH
  789. LDM 4,T3 SET CAPSULE COUNT
  790. STD CC
  791. LJM SFGX RETURN
  792.  
  793. SFG5 LDD ER CHECK EOR STATUS
  794. NJN SFG6 IF EOR NOT IN BUFFER
  795. LJM SFGX RETURN, SET NAME NOT FOUND
  796.  
  797. SFG6 RJM SIS SET INTERLOCK STATUS
  798. LDC BUF RELOAD BUFFER
  799. RJM LBM LOAD BUFFER MEMORY
  800. LDC BUF+2 RESET BASE ADDRESS
  801. LJM SFG1 LOOP
  802. TITLE SUBROUTINES.
  803. SPACE 4,10
  804. ** COMMON SUBROUTINES.
  805.  
  806.  
  807. COMMON
  808. CRP SPACE 4,10
  809. ** CRP - CHECK RECALL PARAMETERS.
  810. *
  811. * ENTRY (DPPB - DPPB+1) = CURRENT ACCUMULATOR UPDATE.
  812. *
  813. * USES CM - CM+4, GN+3 - GN+4.
  814. *
  815. * CALLS DPP.
  816. *
  817. * MACROS LDCA, MONITOR.
  818.  
  819.  
  820. CRP SUBR ENTRY/EXIT
  821. LDM DPPC CHECK TIME TO RECALL
  822. ADC -RSLM
  823. MJN CRPX IF NOT TIME TO RECALL
  824.  
  825. * SET RECALL PARAMETERS.
  826.  
  827. LDM GNLE
  828. SHN -1
  829. STD CM
  830. CRPA LDN 0 SET NUMBER OF LOCAL USER LIBRARIES
  831. SHN 4
  832. LMD CM
  833. SHN 6
  834. LMN 40 SET RECALL BIT
  835. RAD IR+3
  836. LDD DI SET DIRECTORY INDEX
  837. STD IR+2
  838. LDM GNLC SET LIBRARY ORDINAL POSITION
  839. LPN 1
  840. LMN 1
  841. STD GN+4
  842. LDM SCSA SET EXISTING ERROR CODE
  843. SHN 11
  844. RAD GN+4
  845. SHN -14
  846. RAD GN+3
  847. LDCA IR+3 REWRITE PARAMETER BLOCK
  848. CWD GN
  849. LDN 1 SELECT NO DROP PP
  850. RJM DPP UPDATE ACCOUNTING
  851. LDN ZERL
  852. CRD CM
  853. LDN PTLR PRU TRANSFER LIMIT
  854. STD CM
  855. LDD MA STORE PP RECALL REQUEST
  856. CWD IR
  857. ADN 1
  858. CWD CM
  859. MONITOR RECM
  860. LJM PPR EXIT TO PP RESIDENT
  861. DPP SPACE 4,10
  862. ** DPP - DROP PPU.
  863. *
  864. * ENTRY (A) = 0 IF PP TO BE DROPPED.
  865. * (FA) = FNT ADDRESS.
  866. * (FS - FS+4) = FST INFORMATION.
  867. * (DPPB - DPPB+1) = MASS STORAGE ACCOUNTING INCREMENT.
  868. *
  869. * EXIT ACCOUNTING UPDATED.
  870. * FST SET NOT BUSY.
  871. * PP DROPPED IF SELECTED.
  872. *
  873. * USES CM - CM+4.
  874. *
  875. * MACROS MONITOR, NFA.
  876.  
  877.  
  878. DPP SUBR ENTRY/EXIT
  879. STD CM+2 SET PP DROP / NO DROP OPTION
  880. LDD FA
  881. ZJN DPP1 IF NO LOCAL FNT
  882. AOD FS+4
  883. NFA FA,R SET FST NOT BUSY
  884. ADN FSTL
  885. CWD FS
  886. DPP1 LDD MA COPY PARAMETER WORD TO MESSAGE BUFFER
  887. CWM DPPA,ON
  888. LDN 1 SET WORD COUNT
  889. STD CM+1
  890. MONITOR UADM
  891. UJN DPPX RETURN
  892.  
  893. DPPA CON AISS SUB FUNCTION
  894. CON IOAW WORD TO UPDATE
  895. CON 40D*100+20D FIELD TO UPDATE
  896. DPPB CON 0,0 INCREMENT
  897. DPPC DATA 0 PRU COUNTER
  898. ERR SPACE 4,15
  899. ** ERR - ERROR PROCESSOR.
  900. *
  901. * ENTRY (A) = ERROR CODE.
  902. *
  903. * EXIT RETURN IF CONTINUATION ERROR. (MULTIPLE ERROR CODES)
  904. * SET ERROR CODE AND DROP IF NON-FATAL ERROR.
  905. * EXECUTE *2LD* IF FATAL ERROR.
  906. *
  907. * USES EC, SI - SI+1.
  908. *
  909. * CALLS SCS, 2LD.
  910. *
  911. * MACROS EXECUTE.
  912.  
  913.  
  914. ERR SUBR ENTRY/EXIT
  915. STD EC STORE ERROR CODE
  916. SBN /ERR/FERT CHECK FOR FATAL ERROR
  917. MJN ERR1 IF NOT FATAL ERROR
  918. LDM DPPB SET MASS STORAGE INCREMENT
  919. STD SI
  920. LDM DPPB+1
  921. STD SI+1
  922. EXECUTE 2LD
  923.  
  924. ERR1 LCN 0 SET ERROR CODE BITS IN RESPONSE
  925. LMD EC
  926. STM ERRA
  927. LDM SCSA
  928. LPC *
  929. ERRA EQU *-1
  930. LMD EC
  931. STM SCSA
  932. LDD EC CHECK FOR CONTINUATION
  933. LMN /ERR/ILE
  934. ZJN ERRX IF CONTINUATION ERROR
  935. LMN /ERR/IDS&/ERR/ILE
  936. ZJN ERRX IF CONTINUATION ERROR
  937. LJM SCS SET COMPLETE STATUS
  938. IBA SPACE 4,15
  939. ** IBA - INCREMENT BUFFER ADDRESS.
  940. *
  941. * ENTRY (T3) = BUFFER ADDRESS.
  942. * (IBAA - IBAA+1) = DATA SAVED FROM LAST SECTOR.
  943. *
  944. * EXIT (A) .GE. 0 IF BUFFER FULL.
  945. * (T3) = NEW BUFFER ADDRESS.
  946. * (BL) = BUFFER LIMIT ADDRESS.
  947. * (IBAA - IBAA+1) = DATA SAVED FROM CURRENT SECTOR.
  948. * PREVIOUS DATA RESTORED OVER LINKAGE BYTES.
  949. *
  950. * USES T3.
  951.  
  952.  
  953. IBA1 LDI T3 SAVE DATA AREA
  954. STM IBAA
  955. LDM 1,T3
  956. STM IBAA+1
  957. LCN 1 SET EXIT CONDITION
  958.  
  959. IBA SUBR ENTRY/EXIT
  960. LDM IBAA RESTORE PREVIOUS DATA
  961. STI T3
  962. LDM IBAA+1
  963. STM 1,T3
  964. LDC 100*5 INCREMENT BUFFER ADDRESS
  965. RAD T3
  966. ADC -BFMS CHECK BUFFER FULL
  967. MJN IBA1 IF BUFFER NOT FULL
  968. UJN IBAX EXIT
  969.  
  970.  
  971. IBAA CON 0,0 DATA SAVE AREA
  972. LBM SPACE 4,15
  973. ** LBM - LOAD BUFFER MEMORY.
  974. *
  975. * ENTRY (A) = ADDRESS OF START OF BUFFER.
  976. *
  977. * EXIT (BL) = BUFFER LIMIT ADDRESS.
  978. * (ER) = BUFFER EOR/EOF/EOI STATUS.
  979. * (DPPB - DPPB+1) = SRU ACCUMULATOR INCREMENTED.
  980. * BUFFER FILLED OR EOR/EOF/EOI ENCOUNTERED.
  981. * CHANNEL DROPPED.
  982. * TRACK INTERLOCK CLEARED, IF SET.
  983. * TO *SCS* IF ERROR FLAG SET.
  984. *
  985. * USES T3, BL, ER, DPPB - DPPB+1.
  986. *
  987. * CALLS CIS, IBA, RNS, SCS.
  988. *
  989. * MACROS ENDMS, PAUSE.
  990.  
  991.  
  992. LBM SUBR ENTRY/EXIT
  993. STD T3 SET BUFFER FWA
  994. ADN 2 SET INITIAL BUFFER LIMIT
  995. STD BL
  996. UJN LBM2
  997.  
  998. LBM1 RJM IBA INCREMENT BUFFER ADDRESS
  999. PJN LBM4 IF BUFFER FULL
  1000. LBM2 LDN IMLL INCREMENT MASS STORAGE ACCUMULATOR
  1001. RAM DPPB+1
  1002. SHN -14
  1003. RAM DPPB
  1004. AOM DPPC
  1005. LDD T3 READ NEXT SECTOR
  1006. RJM RNS
  1007. SHN 2 ADJUST BUFFER LIMIT ADDRESS
  1008. ADD T1
  1009. RAD BL
  1010. LDD T1 SET EOR/EOF/EOI STATUS
  1011. SHN -6
  1012. STD ER
  1013. NJN LBM1 IF NOT EOR/EOF/EOI
  1014.  
  1015. LBM3 LDM IBAA RESTORE BASHED DATA
  1016. STI T3
  1017. LDM IBAA+1
  1018. STM 1,T3
  1019. LBM4 ENDMS
  1020. RJM CIS CLEAR INTERLOCK STATUS
  1021. PAUSE
  1022. LDD CM+1 CHECK ERROR FLAG
  1023. ZJN LBM5 IF ERROR FLAG NOT SET
  1024. LJM SCS SET COMPLETE STATUS
  1025.  
  1026. LBM5 LJM LBMX RETURN
  1027. PDE SPACE 4,25
  1028. ** PDE - PROCESS DIRECTORY ENTRY.
  1029. *
  1030. * ENTRY (T3) = ADDRESS OF DIRECTORY ENTRY.
  1031. * (CL) = LENGTH OF CENTRAL MEMORY DIRECTORY.
  1032. * (DI) = CURRENT LENGTH REQUIRED FOR DIRECTORY.
  1033. * (DL) = USER SPECIFIED DIRECTORY LENGTH.
  1034. * (TI - TI+1) = BASE RANDOM ADDESS OF LIBRARY.
  1035. * (PDEB) = INDEX TO LIBRARY FILE HEADER IN DIRECTORY.
  1036. * (DIRA - DIRA+4) = FIRST WORD OF DIRECTORY ENTRY.
  1037. *
  1038. * EXIT IF ENTRY FOUND IN DIRECTORY.
  1039. * NO CHANGE.
  1040. * IF ENTRY NOT FOUND AND NO DIRECTORY OVERFLOW.
  1041. * (CL) UPDATED TO REFLECT ENTRY LENGTH.
  1042. * (DI) UPDATED TO REFLECT ACTUAL DIRECTORY LENGTH.
  1043. * ENTRY WRITTEN TO DIRECTORY.
  1044. * IF ENTRY NOT FOUND AND DIRECTORY OVERFLOW.
  1045. * (DI) UPDATED TO REFLECT ACTUAL DIRECTORY LENGTH.
  1046. * ERROR CODE *IDS* SET IN RESPONSE.
  1047. *
  1048. * USES T1, T3, CL, DI, DL.
  1049. *
  1050. * CALLS SFE.
  1051.  
  1052.  
  1053. * PROCESS DIRECTORY OVERFLOW.
  1054.  
  1055. PDE6 LDD T1 ADVANCE ACTUAL DIRECTORY SPACE REQUIRED
  1056. RAD DI
  1057. LDM DIRA CHECK IF FILE HEADER PRESENT
  1058. ZJN PDEX IF NO FILE HEADER
  1059. LDN 0 CLEAR FILE HEADER
  1060. STM DIRA
  1061.  
  1062. PDE SUBR ENTRY/EXIT
  1063. LDD CL
  1064. ZJN PDE1 IF CENTRAL DIRECTORY EMPTY
  1065. RJM SFE SEARCH FOR DUPLICATE ENTRY
  1066. ZJN PDEX IF ENTRY FOUND
  1067. PDE1 LDN 2 SET DIRECTORY ENTRY LENGTH
  1068. STD T1
  1069. LDM DIRA
  1070. ZJN PDE2 IF NO FILE HEADER REQUIRED
  1071. AOD T1
  1072. PDE2 LDD DL
  1073. PDEA EQU *-1
  1074. *PDE2 UJN PDE6 (DIRECTORY OVERFLOW)
  1075. SBD CL
  1076. SBD T1
  1077. PJN PDE3 IF WITHIN DIRECTORY
  1078. LDM PDED
  1079. STM PDEA
  1080. ERROR IDS INSUFFICIENT DIRECTORY SPACE
  1081. LJM PDE6 UPDATE REQUIRED DIRECTORY LENGTH
  1082.  
  1083. PDE3 LDD T1 ADVANCE CENTRAL MEMORY DIRECTORY LENGTH
  1084. RAD CL
  1085. LDD T3 SET CAPSULE NAME ADDRESS
  1086. STM PDEC
  1087. LDC * SET FILE INDEX
  1088. PDEB EQU *-1
  1089. STM 4,T3
  1090. LDM 7,T3 SET ENTRY LENGTH
  1091. SHN -6
  1092. STM DIRB+4
  1093. LDM 6,T3
  1094. SHN 6
  1095. RAM DIRB+4
  1096. SHN -14
  1097. STM DIRB+3
  1098. LDD TI+1 SET RANDOM ADDRESS OF CAPSULE
  1099. ADM 11,T3
  1100. SHN 14
  1101. STM DIRB+2 SAVE UPPER 12 BITS
  1102. SHN -6
  1103. SCN 77
  1104. RAM DIRB+3
  1105. LDD TI
  1106. ADM 10,T3
  1107. SHN 6
  1108. RAM DIRB+2
  1109. LDN 0 SET CORE ADDRESS
  1110. STM DIRB+1
  1111. LDC 4000
  1112. STM DIRB
  1113. LDM DIRA CHECK TWO OR THREE WORD ENTRY
  1114. ZJN PDE4 IF TWO WORD ENTRY
  1115.  
  1116. * WRITE THREE WORD DIRECTORY ENTRY.
  1117.  
  1118. LDCA DA WRITE HEADER WORD TO DIRECTORY
  1119. ADD DI ADD INDEX
  1120. CWM DIRA,ON FILE HEADER
  1121. UJN PDE5 WRITE DIRECTORY
  1122.  
  1123. * WRITE TWO WORD DIRECTORY ENTRY.
  1124.  
  1125. PDE4 LDCA DA WRITE DIRECTORY
  1126. ADD DI ADD INDEX
  1127. PDE5 CWM **,ON CAPSULE NAME
  1128. PDEC EQU *-1
  1129. CWM DIRB,ON POSITION INFORMATION
  1130. LJM PDE6 UPDATE REQUIRED DIRECTORY LENGTH
  1131.  
  1132. PDED BSS 0
  1133. LOC PDEA
  1134. UJN PDE6
  1135. LOC *O
  1136. SCP SPACE 4,25
  1137. ** SCP - SEARCH *CLD* FOR PROCEDURE RECORDS.
  1138. * SCP SEARCHES THE *CLD* FOR A SPECIFIED PROCEDURE
  1139. * RECORD AND THEN SETS UP THE ENTRY CONDITIONS FOR
  1140. * *PDE* TO PROCESS THE DIRECTORY ENTRY.
  1141. *
  1142. * ENTRY (AB - AB+4) = NAME LEFT JUSTIFIED, ZERO FILLED.
  1143. *
  1144. * EXIT (TI - TI+1) = 0.
  1145. * (PDEB) = 0.
  1146. * (DIRA - DIRA+4) = SYSTEM LIBRARY DIRECTORY HEADER.
  1147. * (T3) = *BUF*, WHERE *BUF* CONTAINS THE *CLD* ENTRY IN
  1148. * THE FOLLOWING FORMAT.
  1149. *
  1150. *T BUF 42/PROCEDURE NAME, 18/0
  1151. *T BUF+1 36/0, 24/RANDOM ADDRESS BIAS
  1152. *
  1153. * USES T3, T5, T6, TI - TI+1, PDEB, DIRA - DIRA+4.
  1154. *
  1155. * CALLS CLD.
  1156.  
  1157.  
  1158. SCP SUBR ENTRY/EXIT
  1159. LDN ZERL CLEAR DIRECTORY ENTRY
  1160. CRM DIRA,ON
  1161. LCN 0 FORM SYSTEM LIBRARY DIRECTORY HEADER
  1162. STM DIRA
  1163. RJM CLD SEARCH CENTRAL LIBRARY DIRECTORY
  1164. ZJN SCPX IF ENTRY NOT FOUND
  1165. CRM BUF+5,ON READ PST ENTRY
  1166. LDN 0 CLEAR ALTERNATE EQ POINTER
  1167. STD T5
  1168. LDD MA SET ENTRY POINT NAME IN BUFFER
  1169. CWD AB
  1170. CRM BUF,ON
  1171. LDC BUF SET UP POINTER TO ENTRY
  1172. STD T3
  1173. LDM BUF+3
  1174. SCN 77
  1175. STM BUF+3
  1176. LDN 0
  1177. STM BUF+4
  1178. STM BUF+1*5+0
  1179. STM BUF+1*5+1
  1180. STM BUF+1*5+2
  1181. STD TI
  1182. STD TI+1
  1183. STM PDEB
  1184. LDM BUF+1*5+3
  1185. LPN 77
  1186. STM BUF+1*5+3
  1187. LDN 1
  1188. LJM SCPX RETURN
  1189. SCS SPACE 4,15
  1190. ** SCS - SET COMPLETE STATUS.
  1191. *
  1192. * ENTRY (DI) = ACTUAL LENGTH OF DIRECTORY REQUIRED.
  1193. * (SCSA) = CURRENT STATUS CODE.
  1194. * (IR+3 - IR+4) = FET ADDRESS.
  1195. *
  1196. * EXIT STATUS SET IN FIRST WORD OF FET.
  1197. * UPDATED DIRECTORY LENGTH RETURNED.
  1198. * LOCAL FILE SET NOT BUSY IF PRESENT.
  1199. *
  1200. * USES GN - GN+4, CM - CM+4, FS - FS+4.
  1201. *
  1202. * CALLS DPP.
  1203. *
  1204. * MACROS LDCA.
  1205.  
  1206.  
  1207. SCS LDC 0 SET STATUS CODE
  1208. SCSA EQU *-1
  1209. SHN 11 POSITION STATUS RESPONSE
  1210. ADN 1 SET COMPLETE BIT
  1211. STD GN+4
  1212. SHN -14
  1213. RAD GN+3
  1214. LDCA IR+3 RETURN LENGTH OF DIRECTORY
  1215. ADN 1
  1216. CRD CM
  1217. LDD CM+2 SET DIRECTORY LENGTH
  1218. SCN 77
  1219. SHN 6
  1220. LMD DI
  1221. SHN -6
  1222. STD CM+2
  1223. LDD DI
  1224. SHN 6
  1225. LMD CM+3
  1226. SCN 77
  1227. LMD CM+3
  1228. STD CM+3
  1229. LDCA IR+3 RETURN STATUS
  1230. CWD GN
  1231. ADN 1 RETURN UPDATED DIRECTORY LENGTH
  1232. CWD CM
  1233. LDN 0 SELECT DROP PP
  1234. RJM DPP UPDATE ACCOUNTING
  1235. LJM PPR EXIT TO PP RESIDENT
  1236. SFE SPACE 4,10
  1237. ** SFE - SEARCH FOR ENTRY IN CENTRAL MEMORY DIRECTORY.
  1238. *
  1239. * ENTRY (T3) = INDEX TO CAPSULE NAME.
  1240. * (CL) = LENGTH OF CENTRAL MEMORY DIRECTORY.
  1241. *
  1242. * EXIT (A) .EQ. 0 IF MATCHING ENTRY FOUND.
  1243. * (A) .NE. 0 IF NO MATCH FOUND.
  1244. *
  1245. * USES T1, CM - CM+4.
  1246.  
  1247.  
  1248. SFE4 LDD CM+1 COMPARE BYTE 2 OF CAPSULE NAMES
  1249. LMM 1,T3
  1250. NJN SFE3 IF BYTES DO NOT COMPARE
  1251. LDD CM+2 COMPARE BYTE 3 OF CAPSULE NAMES
  1252. LMM 2,T3
  1253. NJN SFE3 IF BYTES DO NOT COMPARE
  1254. LDD CM+3
  1255. LMM 3,T3
  1256. SCN 77
  1257. NJN SFE3 IF CHARACTERS DO NOT COMPARE
  1258.  
  1259. SFE SUBR ENTRY/EXIT
  1260. LDN 0 INITIALIZE DIRECTORY OFFSET
  1261. STD T1
  1262. SFE1 AOD T1 INCREMENT DIRECTORY OFFSET
  1263. SFE2 LDCA DA GET DIRECTORY ENTRY
  1264. ADD T1
  1265. CRD CM
  1266. LDD CM
  1267. SHN 6
  1268. MJN SFE1 IF FILE SPECIFICATION ENTRY
  1269.  
  1270. * COMPARE DIRECTORY ENTRY.
  1271.  
  1272. SHN -6
  1273. LMI T3 COMPARE NAMES
  1274. ZJN SFE4 IF BYTES COMPARE
  1275. SFE3 LDN 2 INCREMENT DIRECTORY OFFSET
  1276. RAD T1
  1277. SBD CL
  1278. MJN SFE2 IF MORE CAPSULES TO PROCESS
  1279. LDN 1 SET EXIT CONDITION
  1280. UJN SFEX RETURN
  1281. SIS SPACE 4,15
  1282. ** SIS - SET INTERLOCK STATUS.
  1283. *
  1284. * ENTRY (SISA) = TRACK NUMBER IF INTERLOCK REQUIRED.
  1285. *
  1286. * EXIT (CISA) = TRACK NUMBER IF INTERLOCK SET.
  1287. * (T6) SAVED AND RESTORED.
  1288. * TO *SCS* IF ERROR FLAG SET.
  1289. *
  1290. * USES T6.
  1291. *
  1292. * CALLS STI, SCS.
  1293.  
  1294.  
  1295. SIS1 LDD T6 SET TRACK INTERLOCKED STATUS
  1296. STM CISA
  1297. LDC 0 RESTORE CURRENT TRACK
  1298. SISB EQU *-1
  1299. STD T6
  1300.  
  1301. SIS SUBR ENTRY/EXIT
  1302. LDD T6
  1303. STM SISB
  1304. LDC 0 CHECK INTERLOCK REQUIRED STATUS
  1305. SISA EQU *-1
  1306. ZJN SISX IF NO INTERLOCK REQUIRED
  1307. STD T6
  1308. RJM STI SET TRACK INTERLOCK
  1309. ZJN SIS1 IF ERROR FLAG NOT SET
  1310. LJM SCS SET COMPLETE STATUS
  1311. VOT SPACE 4,10
  1312. ** VOT - VALIDATE *OPLD* TABLE.
  1313. *
  1314. * ENTRY (T3) = BUFFER ADDRESS.
  1315. * (BL) = BUFFER LIMIT ADDRESS.
  1316. *
  1317. * EXIT (A) .LT. 0 IF ERROR IN TABLE.
  1318. * (T2) = *OPLD* TABLE BASE ADDRESS.
  1319.  
  1320.  
  1321. VOT1 LCN 1 SET EXIT CONDITION
  1322.  
  1323. VOT SUBR ENTRY/EXIT
  1324. LDM 2,T3 CHECK PREFIX TABLE
  1325. LMC 7700
  1326. NJN VOT1 IF NOT 7700 TABLE
  1327. LDM 3,T3 SET *OPLD* TABLE ADDRESS
  1328. ADN 1
  1329. STD T2
  1330. SHN 2
  1331. RAD T2
  1332. ADN 2
  1333. ADD T3
  1334. STD T2
  1335. ADN 3*5-1 CHECK MINIMUM *OPLD* IN BUFFER
  1336. SBD BL
  1337. PJN VOT1 IF *OPLD* NOT IN BUFFER
  1338. LDI T2 CHECK *OPLD* TABLE
  1339. LMC 7000
  1340. NJN VOT1 IF NOT *OPLD* TABLE
  1341. UJN VOTX RETURN
  1342. VUT SPACE 4,10
  1343. ** VUT - VALIDATE *ULIB* TABLES.
  1344. *
  1345. * ENTRY (T3) = BUFFER ADDRESS.
  1346. * (BL) = BUFFER LIMIT ADDRESS.
  1347. *
  1348. * EXIT (A) = NUMBER OF GROUP NAMES IN *ULIB*.
  1349. * (A) = 1 IF FUNCTION CODE 404.
  1350. * (A) = 0 IF ERROR IN *ULIB* TABLE.
  1351. * (T2) = *ULIB* TABLE BASE ADDRESS.
  1352.  
  1353.  
  1354. VUT2 LDN 0 SET EXIT CONDITION
  1355.  
  1356. VUT SUBR ENTRY/EXIT
  1357. LDM 2,T3 CHECK PREFIX TABLE
  1358. LMC 7700
  1359. NJN VUT2 IF NOT 7700 TABLE
  1360. LDM 3,T3 SET PREFIX TABLE LENGTH
  1361. ADN 1
  1362. STD T2
  1363. SHN 2
  1364. RAD T2
  1365. ADN 2
  1366. ADD T3
  1367. STD T2
  1368. ADN 2*5-1 CHECK MINIMUM *ULIB* IN BUFFER
  1369. SBD BL
  1370. PJN VUT2 IF *ULIB* NOT IN BUFFER
  1371. LDI T2 CHECK *ULIB* RECORD
  1372. LMC 7600
  1373. NJN VUT2 IF NOT *ULIB* RECORD
  1374. VUTA LDN 0
  1375. * LDN 1 (FUNCTION CODE 404)
  1376. ZJN VUT1 IF NOT FUNCTION CODE 404
  1377. UJN VUTX RETURN
  1378.  
  1379. VUT1 LDM 1,T2 SET NUMBER OF GROUP NAMES IN *ULIB*
  1380. UJN VUTX RETURN
  1381. TITLE COMMON DECKS AND BUFFERS.
  1382. COMMON SPACE 4,15
  1383. ** COMMON DECKS.
  1384.  
  1385.  
  1386. *CALL COMPCLD
  1387. *CALL COMPCRA
  1388. *CALL COMPSAF
  1389. *CALL COMPSFB
  1390. *CALL COMPSTI
  1391.  
  1392. *CALL COMPIRA
  1393. SPACE 4,20
  1394. USE //
  1395.  
  1396. ** TLBD - GLOBAL LIBRARY SET.
  1397.  
  1398.  
  1399. TLBD EQU *
  1400. TLBDL EQU TLBD+3*5
  1401.  
  1402.  
  1403. * RETURNED DIRECTORY ENTRY.
  1404.  
  1405. DIRA EQU TLBDL
  1406. DIRB EQU DIRA+1*5
  1407.  
  1408.  
  1409. ** BUF - MASS STORAGE BUFFER.
  1410.  
  1411.  
  1412. BUF EQU DIRB+1*5
  1413.  
  1414. .1 SET BFMS+1-BUF-2
  1415. ERRZR .1/500 MAXIMUM SECTORS FOR BUFFER
  1416. ERRNG .1-.1/500*500 BYTES REMAINING BEFORE OVERFLOW
  1417. TITLE PRESET.
  1418. PRS SPACE 4,20
  1419. ** PRS - PRESET.
  1420. *
  1421. * ENTRY (IR - IR+4) = *LDD* CALL.
  1422. *
  1423. * EXIT (DI) = 0.
  1424. * (CL) = 0.
  1425. * (GN - GN+4) = GROUP NAME.
  1426. * (DL) = USER SPECIFIED DIRECTORY LENGTH.
  1427. * (DA) = DIRECTORY BASE ADDRESS.
  1428. * (UL - UL+1) = USER SPECIFIED LIBLIST ADDRESS.
  1429. * (LNLA) = FNT FWA.
  1430. * TO *ERR* IF ILLEGAL PARAMETER OR ADDRESS.
  1431. *
  1432. * USES CL, CM - CM+4, DA, DI, DL, FA, GN - GN+4,
  1433. * UL - UL+1, LNLA.
  1434. *
  1435. * CALLS CRS.
  1436. *
  1437. * MACROS ERROR, LDCA.
  1438.  
  1439.  
  1440. PRS SUBR ENTRY/EXIT
  1441. LDN 0
  1442. STD DI CLEAR DIRECTORY INDEX
  1443. STD FA CLEAR FNT ADDRESS
  1444. STD CL CLEAR CENTRAL DIRECTORY LENGTH
  1445. LDD IR+3 SET RECALL OPTION
  1446. SHN -5
  1447. LPN 1
  1448. RAM PRSA
  1449. LDD IR+3 CHECK PARAMETER ADDRESS
  1450. STM PRSB SAVE RECALL PARAMETERS
  1451. LPN 37
  1452. STD IR+3
  1453. SHN 14
  1454. LMD IR+4
  1455. SBN 2
  1456. MJN PRS1 IF ILLEGAL ADDRESS
  1457. ADN 1+2
  1458. SHN -6
  1459. SBD FL
  1460. MJN PRS2 IF PARAMETER ADDRESS WITHIN FL
  1461. PRS1 ERROR ARG * ARGUMENT ERROR.*
  1462.  
  1463. PRS2 RJM CRS CHECK RECALL STATUS
  1464. ZJN PRS1 IF NOT CALLED WITH AUTO RECALL
  1465. LDCA IR+3 READ GROUP NAME AND FUNCTION CODE
  1466. CRD GN
  1467. ADN 1 READ SECOND WORD OF PARAMETER BLOCK
  1468. CRD CM
  1469. LDD GN+3 CLEAR STATUS CODE
  1470. SCN 77
  1471. STD GN+3
  1472. LDD GN+4 CHECK FUNCTION CODE
  1473. LPC 776
  1474. ZJN PRS4 IF LEGAL FUNCTION CODE
  1475. LMC 402 CHECK FOR FUNCTION CODE 402
  1476. ZJN PRS2.5 IF FUNCTION CODE IS 402
  1477. LMK 404&402 CHECK FOR FUNCTION CODE 404
  1478. NJN PRS3 IF ILLEGAL FUNCTION CODE
  1479.  
  1480. * SET FUNCTION CODE 404 PROCESSING.
  1481.  
  1482. AOM LDDA
  1483. AOM PGMA
  1484. AOM SFGA
  1485. AOM VUTA
  1486. UJN PRS4
  1487.  
  1488. * SET FUNCTION CODE 402 PROCESSING.
  1489.  
  1490. PRS2.5 AOM LDDB
  1491. UJN PRS4 CONTINUE PROCESSING
  1492.  
  1493. PRS3 ERROR ILF ILLEGAL FUNCTION CODE
  1494.  
  1495. PRS4 LDD CM+2 SET LENGTH OF USER SPECIFIED DIRECTORY
  1496. SHN 6
  1497. STD DL
  1498. LDD CM+3
  1499. SHN -6
  1500. RAD DL
  1501. LDD CM+3 SET DIRECTORY BASE ADDRESS
  1502. LPN 37
  1503. STD DA
  1504. SHN 14
  1505. ADD CM+4
  1506. STD DA+1
  1507. SBN 2 CHECK DIRECTORY ADDRESS
  1508. MJN PRS5 IF ILLEGAL ADDRESS
  1509. ADN 2-1
  1510. ADD DL
  1511. SHN -6
  1512. SBD FL
  1513. MJN PRS6 IF DIRECTORY ADDRESS WITHIN FL
  1514. PRS5 ERROR IAD ILLEGAL DIRECTORY ADDRESS
  1515.  
  1516. PRS6 LDD CM+2 SET USER LIBLIST ADDRESS
  1517. SHN -6
  1518. STD UL+1
  1519. LDD CM+1
  1520. SHN 6
  1521. RAD UL+1
  1522. SHN -14
  1523. LPN 37
  1524. STD UL
  1525. SHN 14 CHECK USER SPECIFIED LIBLIST ADDRESS
  1526. LMD UL+1
  1527. ZJN PRS9 IF NO LIBLIST ADDRESS SPECIFIED
  1528. SBN 2
  1529. MJN PRS7 IF ILLEGAL ADDRESS
  1530. ADN 2
  1531. SHN -6
  1532. SBD FL
  1533. MJN PRS9 IF USER LIBLIST ADDRESS WITHIN FL
  1534. PRS7 ERROR ILA ILLEGAL LIBLIST ADDRESS
  1535.  
  1536. PRS8 LJM PRSX RETURN
  1537.  
  1538. PRS9 LDN 0 CHECK RECALL STATUS
  1539. PRSA EQU *-1
  1540. * LDN 1 (RECALL OPTION)
  1541. ZJN PRS8 IF NOT RECALL OPTION
  1542. LDD IR+2 SET DIRECTORY LENGTH PARAMETER
  1543. STD DI
  1544. STD CL CL = MIN(DL,DI)
  1545. SBD DL
  1546. MJN PRS10 IF (DL) .LT. (DI)
  1547. LDD DL
  1548. STD CL
  1549. PRS10 LDCA IR+3 SET PREVIOUS ERROR CODES
  1550. CRD CM
  1551. LDD CM+3
  1552. SHN 14
  1553. ADD CM+4
  1554. SHN -11
  1555. STM SCSA
  1556. LDC * SET LIBRARY PARAMETERS
  1557. PRSB EQU *-1
  1558. * LDC IR+3 (RECALL PARAMETERS)
  1559. SHN -6
  1560. LPN 17
  1561. SHN 1
  1562. STM GNLE
  1563. SHN -1
  1564. RAM GNLA
  1565. LDD CM+4 CHECK BYTE POSITION
  1566. LPN 1
  1567. ZJN PRS11 IF NO REPOSITION NEEDED
  1568. LDC SHNI+0
  1569. STM GNLC
  1570. AOM GNLE
  1571. PRS11 LDM PRSB SET LOCAL USER LIBRARY PARAMETERS
  1572. SHN -12
  1573. ZJN PRS12 IF NO LOCAL USER LIBRARIES
  1574. RAM CRPA SET LIBRARY ORDINAL POSITION
  1575. LPN 77 SET LOCAL USER LIBRARY OFFSET
  1576. STD CM
  1577. SHN 2
  1578. RAD CM
  1579. LDC TLBDL
  1580. SBD CM
  1581. STM GNLB
  1582. LDC LB2W
  1583. STM GNLD
  1584. PRS12 LJM PRSX RETURN
  1585. SPACE 4,10
  1586. ** COMMON DECKS.
  1587.  
  1588.  
  1589. *CALL COMPCRS
  1590. TTL LDQ - LOAD QUICKLY.
  1591. TITLE
  1592. IDENT LDQ,/LDQ/LDQ
  1593. *COMMENT FDL - LOAD QUICKLY.
  1594. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1595. SPACE 4,5
  1596. *** LDQ - LOAD QUICKLY.
  1597. * GREGG TOWNSEND. 76/02/04.
  1598. * J. J. EIKUM. 76/04/01.
  1599. SPACE 4,10
  1600. *** LDQ IS USED TO QUICKLY READ A CAPSULE OR OVERLAY INTO
  1601. * THE FIELD LENGTH OF A JOB, GIVEN THE RANDOM ADDRESS OF THE
  1602. * CAPSULE OR OVERLAY ON A MASS STORAGE DEVICE. THE PREFIX
  1603. * TABLE IS REMOVED AND THE REST OF THE RECORD IS TRANSFERRED
  1604. * WITHOUT MODIFICATION.
  1605. SPACE 4,10
  1606. *** CALL.
  1607. *
  1608. *
  1609. *T, 18/ *LDQ*,24/ ,18/ ADDR
  1610. *
  1611. * ADDR ADDRESS OF A FOUR-WORD PARAMETER BLOCK:
  1612. *
  1613. *T ADDR 42/ *FILE*,9/STAT,9/FUNC
  1614. *T, 42/ *GRPNAME*,18/0
  1615. *T, 42/ *NAME*,18/FWA
  1616. *T, 24/0,18/PRU,18/LWA+1
  1617. *
  1618. * *FILE* FILE FROM WHICH TO LOAD. IF BITS 59-48 = 7777,
  1619. * THEN LOAD FROM THE SYSTEM.
  1620. * STAT STATUS RETURNED BY LDQ.
  1621. * 000 FUNCTION COMPLETED SUCCESSFULLY.
  1622. * 001 ILLEGAL FUNCTION.
  1623. * 002 CM BUFFER NOT COMPLETELY WITHIN FIELD LENGTH.
  1624. * 003 NO SUCH FILE, NOT MASS STORAGE, OR EXECUTE-ONLY.
  1625. * 004 PRU NUMBER OUTSIDE FILE BOUNDARIES.
  1626. * 005 WRONG PROGRAM OR GARBAGE FOUND AT SPECIFIED PRU.
  1627. * 006 INSUFFICIENT FWA-LWA SPACE TO HOLD PROGRAM.
  1628. * FUNC FUNCTION REQUEST. LDQ WILL ADD 1 WHEN FINISHED.
  1629. * 000 LOAD CAPSULE.
  1630. * 002 LOAD OVERLAY.
  1631. * *GRPNAME* NAME OF CAPSULE GROUP. IGNORED FOR OVERLAY LOAD.
  1632. * *NAME* NAME OF CAPSULE OR OVERLAY TO BE LOADED.
  1633. * FWA FIRST WORD ADDRESS OF LOADABLE AREA.
  1634. * LWA+1 UPPER LIMIT OF LOADABLE AREA.
  1635. * PRU PRU ADDRESS OF PROGRAM TO BE LOADED.
  1636. SPACE 4,15
  1637. *** DAYFILE MESSAGES.
  1638. *
  1639. * * LDQ - ARGUMENT ERROR - XXXXXX.* = FET ADDRESS .LT. 2 OR
  1640. * .GT. FL-4.
  1641. *
  1642. * * LDQ - I/O SEQUENCE ERROR - FILENAM AT XXXXXX.* = MULTIPLE
  1643. * CONCURRENT FUNCTIONS WERE ATTEMPTED ON FILE *FILENAM*.
  1644. *
  1645. * * LDQ - DEVICE ERROR - FILENAM AT XXXXXX.* = AN UNRECOVERED
  1646. * DEVICE ERROR WAS ENCOUNTERED ON FILE *FILENAM*.
  1647. *
  1648. * FOR ALL MESSAGES, XXXXXX IS THE ADDRESS OF THE *LDD*
  1649. * PARAMETER BLOCK.
  1650. LDQ TITLE MAIN PROGRAM.
  1651. QUAL LDQ
  1652.  
  1653. ** LDQ - MAIN PROGRAM.
  1654.  
  1655.  
  1656. ORG PPFW
  1657. LDQ RJM PRS
  1658. RJM RFS READ FIRST SECTOR
  1659. RJM CPY COPY PROGRAM
  1660. * UJN CFN
  1661. CFN SPACE 4,10
  1662. ** CFN - COMPLETE FUNCTION.
  1663.  
  1664.  
  1665. CFN AOD FN+4 SET PARAMETER BLOCK COMPLETE
  1666. LDCA IR+3 REWRITE FIRST PARAMETER WORD
  1667. CWD FN
  1668. * UJN DPP
  1669. DPP SPACE 4,10
  1670. ** DPP - DROP PP.
  1671.  
  1672.  
  1673. DPP LDD FA
  1674. ZJN DPP1 IF NOT LOCAL FILE LOAD
  1675. AOD FS+4
  1676. NFA FA,R SET FST NOT BUSY
  1677. ADN FSTL
  1678. CWD FS
  1679. DPP1 LDD MA STORE *UADM* PARAMETER BLOCK
  1680. CWM DPPA,ON
  1681. LDN 1 SET WORD COUNT
  1682. STD CM+1
  1683. LDN 0 SET DROP PP FLAG
  1684. STD CM+2
  1685. MONITOR UADM UPDATE ACCOUNTING AND DROP PP
  1686. LJM PPR
  1687.  
  1688.  
  1689. DPPA CON AISS SUB FUNCTION
  1690. CON IOAW WORD TO UPDATE
  1691. CON 40D*100+20D FIELD TO UPDATE
  1692. CON 0,0 INCREMENT
  1693. TITLE SUBROUTINES.
  1694. SPACE 4,10
  1695. ** COMMON SUBROUTINES.
  1696.  
  1697.  
  1698. COMMON
  1699. CPN SPACE 4,12
  1700. ** CPN - COMPARE NAMES.
  1701. *
  1702. * ENTRY (A) = ADDRESS OF NAME 1.
  1703. * (GN - GN+3) = NAME 2.
  1704. *
  1705. * EXIT (A) = 0 IF SEVEN CHARACTERS MATCH.
  1706. *
  1707. * USES T2.
  1708.  
  1709.  
  1710. CPN SUBR ENTRY/EXIT
  1711. STD T2
  1712. LDI T2 COMPARE FIRST BYTES
  1713. LMD GN
  1714. NJN CPNX IF NOT EQUAL
  1715. LDM 1,T2 COMPARE SECOND BYTES
  1716. LMD GN+1
  1717. NJN CPNX IF NOT EQUAL
  1718. LDM 2,T2 COMPARE THIRD BYTES
  1719. LMD GN+2
  1720. NJN CPNX IF NOT EQUAL
  1721. LDM 3,T2 COMPARE SEVENTH CHARACTERS
  1722. LMD GN+3
  1723. SCN 77
  1724. UJN CPNX RETURN WITH (A)=0 ONLY IF MATCH
  1725. CPY SPACE 4,25
  1726. ** CPY - COPY PROGRAM.
  1727. *
  1728. * ENTRY (T1) = VALID WORD COUNT.
  1729. * (T3) = ADDRESS OF WORDS IN PP BUFFER.
  1730. * (T5) = EST ORDINAL.
  1731. * (T6) = TRACK.
  1732. * (T7) = SECTOR.
  1733. * (ER) = EOR FLAG.
  1734. * (FW - FW+1) = FWA OF CM BUFFER.
  1735. * (BS - BS+1) = BUFFER SIZE.
  1736. * (BFMS - BFMS+501) = FIRST SECTOR.
  1737. *
  1738. * EXIT TO *ERR* IF CM BUFFER TOO SMALL.
  1739. * CHANNEL DROPPED.
  1740. *
  1741. * USES T1, T3, T6, T7, CM - CM+4, FW - FW+1, BS - BS+1,
  1742. * EC, ER.
  1743. *
  1744. * CALLS CIS, DDT, MSR, RNS.
  1745. *
  1746. * MACROS ENDMS, ERROR.
  1747.  
  1748.  
  1749. * PROCESS DIRECT TRANSFER COPY.
  1750.  
  1751. CPY4 LDD FW SET *DDT* PARAMETERS
  1752. ADD BS
  1753. SHN 14
  1754. ADD FW+1
  1755. ADD BS+1
  1756. SHN 14
  1757. STD CM+2
  1758. SHN -6
  1759. SCN 77
  1760. ADD FW
  1761. STD CM+3
  1762. LDD FW+1
  1763. STD CM+4
  1764. LDC RDDS*10000+7777
  1765. RJM DDT DO DIRECT TRANSFER
  1766. SHN -14
  1767. STD EC SAVE STATUS
  1768. LDD T4 NUMBER OF SECTORS TRANSFERED
  1769. RAM DPPA+4 UPDATE ACCOUNT INCREMENT
  1770. ERRNZ IMLL-1 CODE DEPENDS ON VALUE
  1771. SHN -14
  1772. RAM DPPA+3
  1773. LDD EC
  1774. ZJN CPY6 IF NO ERRORS
  1775. SHN 21-4
  1776. MJN CPY5 IF INSUFFICIENT FL TO LOAD
  1777. LDM RDCT
  1778. RJM MSR PROCESS MASS STORAGE ERROR
  1779.  
  1780. CPY5 ENDMS
  1781. ERROR IBF INSUFFICIENT BUFFER
  1782.  
  1783. CPY6 ENDMS
  1784. RJM CIS CLEAR INTERLOCK STATUS
  1785.  
  1786. CPY SUBR ENTRY/EXIT
  1787. CPY1 LDD BS DECREMENT BUFFER SIZE
  1788. SHN 14
  1789. LMD BS+1
  1790. SBD T1
  1791. MJN CPY5 IF BUFFER TOO SMALL
  1792. STD BS+1
  1793. SHN -14
  1794. STD BS
  1795. LDD T3 SET PP BUFFER ADDRESS
  1796. STM CPYA
  1797. LDCA FW WRITE BUFFER TO CM
  1798. CWM **,T1
  1799. CPYA EQU *-1
  1800. LDD T1 UPDATE FWA
  1801. RAD FW+1
  1802. SHN -14
  1803. RAD FW
  1804. LDD ER
  1805. NJN CPY3 IF EOR NOT READ
  1806. CPY2 LJM CPY6 EXIT
  1807.  
  1808. CPY3 LDC BFMS READ NEXT SECTOR
  1809. CPYC EQU *-1
  1810. * LJM CPY4 (DIRECT TRANSFER COPY)
  1811. RJM RNS
  1812. SHN -6 SAVE EOR FLAG
  1813. STD ER
  1814. LDN IMLL INCREMENT PRU COUNT
  1815. RAM DPPA+4
  1816. SHN -14
  1817. RAM DPPA+3
  1818. LDD T1
  1819. ZJN CPY2 IF EMPTY PRU
  1820. LDN 2 ADJUST FWA TO SKIP HEADER
  1821. RAD T3
  1822. LJM CPY1 LOOP
  1823. ERR SPACE 4,10
  1824. ** ERR - SET ERROR AND EXIT.
  1825. *
  1826. * ENTRY (A) = ERROR CODE.
  1827. * (DPPA+3 - DPPA+4) = MASS STORAGE INCREMENT.
  1828. *
  1829. * EXIT TO *2LD* IF FATAL ERROR.
  1830. * TO *CFN* IF NON-FATAL ERROR.
  1831. * (BITS 11-13 OF FN+4) = STATUS.
  1832. *
  1833. * USES EC, SI, SI+1.
  1834. *
  1835. * CALLS CFN, CIS.
  1836.  
  1837.  
  1838. ERR SUBR
  1839. STD EC SAVE ERROR CODE
  1840. RJM CIS CLEAR INTERLOCK STATUS
  1841.  
  1842. ERR1 LDD EC CHECK ERROR TYPE
  1843. SBN /ERR/FERT
  1844. MJN ERR2 IF NON-FATAL ERROR
  1845. LDM DPPA+3 SET ACCOUNTING INCREMENT
  1846. STD SI
  1847. LDM DPPA+4
  1848. STD SI+1
  1849. EXECUTE 2LD PROCESS ERROR
  1850.  
  1851. ERR2 LDD EC SET STATUS FIELD
  1852. SHN 11
  1853. RAD FN+4
  1854. LJM CFN EXIT
  1855. RFS SPACE 4,25
  1856. ** RFS - READ FIRST SECTOR.
  1857. *
  1858. * ENTRY (T4) = CHANNEL.
  1859. * (T5) = EST ORDINAL.
  1860. * (T6) = TRACK.
  1861. * (T7) = SECTOR.
  1862. * (GN - GN+3) = OVERLAY/CAPSULE NAME.
  1863. *
  1864. * EXIT TO *ERR* IF ERROR DETECTED.
  1865. * (T1) = VALID WORD COUNT.
  1866. * (T3) = ADDRESS OF WORDS IN PP BUFFER.
  1867. * (T6) = CURRENT TRACK.
  1868. * (T7) = NEXT SECTOR.
  1869. * (ER) = 0 IF EOR.
  1870. *
  1871. * USES T2, CM - CM+4, GN - GN+4.
  1872. *
  1873. * CALLS CPN, RNS.
  1874. *
  1875. * MACROS ENDMS, ERROR.
  1876.  
  1877.  
  1878. RFS SUBR ENTRY/EXIT
  1879. LDN IMLL INCREMENT PRU COUNT
  1880. RAM DPPA+4
  1881. LDC BFMS READ FIRST SECTOR
  1882. RJM RNS
  1883. SHN -6 SAVE EOR FLAG
  1884. STD ER
  1885. LDN 2 ADJUST BUFFER POINTER TO SKIP HEADER
  1886. RAD T3
  1887. LDI T3 CHECK FIRST WORD
  1888. LMC 7700
  1889. NJN RFS1 IF NOT 7700 TABLE (ERROR)
  1890. LDD T3 COMPARE CAPSULE/OVERLAY NAME TO EXPECTED
  1891. ADN 5
  1892. RJM CPN
  1893. NJN RFS1 IF NOT SAME NAME
  1894. LDM 1,T3 SKIP 7700 TABLE
  1895. ADN 1 ENSURE 7700 HEADER IN SECTOR
  1896. STD T2
  1897. SHN 2
  1898. ADD T2
  1899. RAD T3
  1900. LDD T1 ADJUST WORD COUNT
  1901. SBD T2
  1902. MJN RFS1 IF WORD COUNT IN 77 TABLE .GT. SECTOR SIZE
  1903. STD T1
  1904. LDD FN+4
  1905. ZJN RFS2 IF LOADING A CAPSULE
  1906. LDI T3
  1907. SHN -6
  1908. SBN 50
  1909. MJN RFS1 IF .LT. 50XX TABLE
  1910. SBN 52-50
  1911. ZJN RFS1 IF 52XX TABLE
  1912. SBN 54-52+1
  1913. PJN RFS1 IF .GT. 54XX TABLE
  1914. LJM RFSX VALID OVERLAY FORMAT, EXIT
  1915.  
  1916. RFS1 ENDMS
  1917. ERROR WPR WRONG PROGRAM
  1918.  
  1919. RFS2 LDI T3 CHECK HEADER
  1920. LMC 6000
  1921. NJN RFS1 IF NOT CAPSULE
  1922. LDCA IR+3 READ GROUP NAME
  1923. ADN 1
  1924. CRD GN
  1925. LDD T3
  1926. ADN 5
  1927. RJM CPN COMPARE WITH ACTUAL READ
  1928. NJN RFS1 IF NOT SAME NAME
  1929. LJM RFSX RETURN
  1930. SPACE 4
  1931. ** COMMON DECKS.
  1932.  
  1933.  
  1934. *CALL COMPDDT
  1935. PRS TITLE PRESET.
  1936. ** PRS - PRESET.
  1937. *
  1938. * ENTRY (IR - IR+4) = LDQ CALL.
  1939. *
  1940. * EXIT TO *ERR* IF ERROR DETECTED.
  1941. * (FA) = 0 IF SYSTEM FILE.
  1942. * (FA) = FNT ADDRESS IF LOCAL FILE.
  1943. * (FS - FS+4) = FST ENTRY IF LOCAL FILE.
  1944. * (FN - FN+3) = FILE NAME.
  1945. * (FN+4) = FUNCTION CODE.
  1946. * (FW - FW+1) = FWA OF BUFFER.
  1947. * (BL - BL+1) = BUFFER LENGTH.
  1948. * (GN - GN+3) = OVERLAY/CAPSULE NAME.
  1949. * (T4) = CHANNEL.
  1950. * (T5) = EST ORDINAL.
  1951. * (T6) = TRACK.
  1952. * (T7) = SECTOR.
  1953. * CHANNEL RESERVED AND DISK POSITIONED.
  1954. * ERROR PROCESSING OPTION SET.
  1955. *
  1956. * USES CM - CM+4, GN - GN+4.
  1957. *
  1958. * CALLS ALF, ASF, CRA, IRA, SMS, POS.
  1959.  
  1960.  
  1961. PRS SUBR ENTRY/EXIT
  1962. LDN 0
  1963. STD FA
  1964. LDD IR+3 CHECK PARAMETER BLOCK ADDRESS
  1965. LPN 37
  1966. STD IR+3
  1967. SHN 14
  1968. LMD IR+4
  1969. SBN 2
  1970. MJN PRS1 IF ILLEGAL ADDRESS
  1971. ADN 3+2
  1972. SHN -6
  1973. SBD FL
  1974. MJN PRS2 IF LEGAL ADDRESS
  1975. PRS1 ERROR ARG * ARGUMENT ERROR.*
  1976.  
  1977. PRS2 LDCA IR+3 READ FILE NAME AND FUNCTION CODE
  1978. CRD FN
  1979. ADN 2 READ FWA OF BUFFER
  1980. CRD CM
  1981. ADN 1 READ RANDOM INDEX AND LWA
  1982. CRD GN
  1983. LDD FN+3 CLEAR STATUS FIELD
  1984. SCN 77
  1985. STD FN+3
  1986. LDD FN+4
  1987. LPC 776
  1988. STD FN+4
  1989. SHN -1
  1990. SBN 2
  1991. MJN PRS3 IF LEGAL FUNCTION CODE
  1992. ERROR ILF ILLEGAL FUNCTION
  1993.  
  1994. PRS3 LDD CM+3 SET FWA OF BUFFER
  1995. LPN 37
  1996. STD FW
  1997. SHN 14
  1998. LMD CM+4
  1999. STD FW+1
  2000. SBN 2
  2001. MJN PRS4 IF ILLEGAL ADDRESS
  2002. LDD GN+3 CHECK LWA+1 OF BUFFER
  2003. LPN 37
  2004. SHN 14
  2005. LMD GN+4
  2006. SBN 1
  2007. SHN -6
  2008. SBD FL
  2009. MJN PRS5 IF LEGAL ADDRESS
  2010. PRS4 ERROR IAD ILLEGAL ADDRESS
  2011.  
  2012. PRS5 LDD GN+3 SET BUFFER LENGTH
  2013. LPN 37
  2014. SHN 14
  2015. LMD GN+4
  2016. SBD FW+1
  2017. STD BS+1
  2018. SHN -14
  2019. SBD FW
  2020. STD BS
  2021. SHN 14
  2022. LMD BS+1
  2023. MJN PRS4 IF FWA .GT. LWA+1
  2024. ZJN PRS4 IF FWA .EQ. LWA+1
  2025. LDD GN+3 SET RANDOM INDEX
  2026. SCN 77
  2027. SHN 6
  2028. LMD GN+2
  2029. SHN 6
  2030. ZJN PRS8 IF ILLEGAL RANDOM ADDRESS
  2031. STD RI+1
  2032. SHN -14
  2033. LPN 77
  2034. STD RI
  2035. LDCA IR+3 READ OVERLAY/CAPSULE NAME
  2036. ADN 2
  2037. CRD GN
  2038.  
  2039. * ACCESS FILE.
  2040.  
  2041. LDD FN CHECK FILE TYPE
  2042. LMC 7777
  2043. ZJN PRS6 IF SYSTEM FILE
  2044. RJM ALF ACCESS LOCAL FILE
  2045. UJN PRS7
  2046.  
  2047. PRS6 RJM ASF ACCESS SYSTEM FILE
  2048. PRS7 RJM IRA INITIALIZE RANDOM ACCESS
  2049. RJM CRA CONVERT RANDOM ADDRESS
  2050. PJN PRS9 IF LEGAL RANDOM ADDRESS
  2051. PRS8 ERROR IRA ILLEGAL RANDOM ADDRESS
  2052.  
  2053. * RESERVE CHANNEL.
  2054.  
  2055. PRS9 LDD FA
  2056. NJN PRS10 IF NOT SYSTEM FILE
  2057. SETMS READSYS ALLOW SYSTEM SELECTION OF EQUIPMENT
  2058. UJN PRS11 CHECK IF DIRECT TRANSFER SUPPORTED
  2059.  
  2060. * PRESET FOR DIRECT TRANSFER IF AVAILABLE.
  2061.  
  2062. PRS10 SETMS IO
  2063. PRS11 LDD CM+4
  2064. SHN 3
  2065. ADN DILL
  2066. CRD CM
  2067. LDD CM+3
  2068. SHN 21-13
  2069. PJN PRS12 IF DIRECT TRANSFER NOT AVAILABLE
  2070. LDC CPY4 PRESET *CPY* FOR DIRECT TRANSFER
  2071. STM CPYC
  2072. LDC LJMI
  2073. STM CPYC-1
  2074. PRS12 LJM PRSX RETURN
  2075. ALF SPACE 4,20
  2076. ** ALF - ACCESS LOCAL FILE.
  2077. *
  2078. * ENTRY (FN - FN+3) = FILE NAME.
  2079. *
  2080. * EXIT TO *ERR* IF ERROR.
  2081. * (T5) = EST ORDINAL.
  2082. * (T6) = FIRST TRACK.
  2083. * (FA) = FNT ADDRESS.
  2084. * (FS - FS+4) = FST ENTRY.
  2085. * TRACK INTERLOCK SET IF NEEDED.
  2086. *
  2087. * USES CM - CM+4, FN - FN+4, RI - RI+4, T0 - T6.
  2088. *
  2089. * CALLS ERR, SAF, SFB, STI.
  2090. *
  2091. * MACROS ERROR, NFA, SFA.
  2092.  
  2093.  
  2094. ALF6 RJM SFB SET FILE BUSY
  2095. ZJN ALF2 IF FILE SET BUSY
  2096. ERROR IOS I/O SEQUENCE ERROR
  2097.  
  2098. ALF SUBR ENTRY/EXIT
  2099. LDD FN CLEAR UPPER BIT
  2100. LPC 3777
  2101. STD FN
  2102. RJM SAF SEARCH FOR ASSIGNED FILE
  2103. NJN ALF6 IF FILE FOUND
  2104. ALF1 ERROR FNF FILE NOT FOUND
  2105.  
  2106. ALF2 LDD CM+3 CHECK FILE STATUS
  2107. LPN 4
  2108. ZJN ALF3 IF NOT EXECUTE ONLY
  2109. LDD CP CHECK VALID ACCESS
  2110. ADC EOCW
  2111. CRD T1
  2112. LDD T1
  2113. LMD FA
  2114. NJN ALF1 IF NOT VALID ACCESS
  2115. ALF3 NFA FA,R RESET FST INFORMATION
  2116. ADN FSTL
  2117. CRD FS
  2118. LDD FS+2
  2119. ZJN ALF1 IF EMPTY FILE
  2120. LDD FS SET EST ORDINAL
  2121. STD T5
  2122. SFA EST READ EST ENTRY
  2123. ADK EQDE
  2124. CRD T0
  2125. LDD T0 CHECK EQUIPMENT TYPE
  2126. SHN 21-13
  2127. PJN ALF1 IF NOT ON MASS STORAGE
  2128. LDD FS+1 SET FIRST TRACK
  2129. STD T6
  2130. LDD CM+4 CHECK FOR TRACK INTERLOCK NEEDED
  2131. SHN -6
  2132. LMN PMFT
  2133. NJN ALF5 IF NOT PERMANENT FILE
  2134. LDD CM+3
  2135. LPN 20
  2136. ZJN ALF5 IF NOT M, A, RM, OR RA MODE
  2137. RJM STI SET TRACK INTERLOCK
  2138. ZJN ALF4 IF INTERLOCK SET AND ERROR FLAG NOT SET
  2139. LJM DPP
  2140.  
  2141. ALF4 LDD T6 SET TRACK INTERLOCKED STATUS
  2142. STM CISA
  2143. ALF5 LJM ALFX
  2144. ASF SPACE 4,12
  2145. ** ASF - ACCESS SYSTEM FILE.
  2146. *
  2147. * EXIT (T5) = EST ORDINAL.
  2148. * (T6) = FIRST TRACK.
  2149. *
  2150. * USES CM - CM+4.
  2151.  
  2152.  
  2153. ASF SUBR ENTRY/EXIT
  2154. LDN FNTP READ FNT POINTER
  2155. CRD CM
  2156. LDD CM READ SYSTEM FILE FST
  2157. SHN 14
  2158. LMD CM+1
  2159. ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
  2160. ADN FSTG
  2161. CRD CM
  2162. LDD CM+1 SET FIRST TRACK
  2163. STD T6
  2164. LDD CM SET SYSTEM EQUIPMENT
  2165. STD T5
  2166. UJN ASFX
  2167. SPACE 4,10
  2168. ** COMMON DECKS.
  2169.  
  2170.  
  2171. *CALL COMPCRA
  2172. *CALL COMPSAF
  2173. *CALL COMPSFB
  2174. *CALL COMPSTI
  2175.  
  2176. *CALL COMPIRA
  2177. TTL 2LD - PROCESS LDD/LDQ ERRORS.
  2178. TITLE
  2179. IDENT 2LD,PPFW
  2180. QUAL 2LD
  2181. *COMMENT FDL - ERROR PROCESSOR.
  2182. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  2183. ERP SPACE 4,10
  2184. ** ERP - ERROR PROCESSOR.
  2185. *
  2186. * ENTRY (EC) = ERROR CODE.
  2187. * (FA) = FNT ADDRESS IF LOCAL FILE.
  2188. * (FA) = 0 IF SYSTEM FILE.
  2189. * (SI - SI+1) = MASS STORAGE ACCOUNTING INCREMENT.
  2190. * (FN - FN+3) = FILE NAME.
  2191. * (IR - IR+1) = PP NAME.
  2192. * (IR+3 - IR+4) = PARAMETER BLOCK ADDRESS.
  2193. *
  2194. * EXIT LOCAL FILE SET COMPLETE.
  2195. * MESSAGE ISSUED.
  2196. * ACCOUNTING UPDATED.
  2197. * PPU DROPPED.
  2198. *
  2199. * USES T1, CM - CM+4.
  2200. *
  2201. * CALLS ACS, ANS, DFM.
  2202. *
  2203. * MACROS MONITOR, NFA, PAUSE.
  2204.  
  2205.  
  2206. ORG PPFW
  2207. ERP SUBR
  2208. LDC BUF SET ADDRESS FOR PROCESSOR NAME
  2209. STD T1
  2210. LDN 1R ADD SPACE CHARACTER
  2211. SHN 14
  2212. ADD IR SET FIRST CHARACTER
  2213. SHN 14
  2214. STI T1
  2215. LMI T1 SET LAST CHARACTERS
  2216. ADD IR+1
  2217. SHN 14
  2218. STM BUF+1
  2219. LDN 2 SET ASSEMBLY ADDRESS
  2220. RAD T1
  2221. LDN 0 SET BYTE BOUNDARY
  2222. STI T1
  2223. LDC =Z* - * ADD * - *
  2224. RJM ACS
  2225. LDD EC ADD MESSAGE
  2226. SBN /ERR/FERT
  2227. STD T2
  2228. LDM TMSG,T2
  2229. RJM ACS
  2230. LDC =Z* - * ADD * - *
  2231. RJM ACS
  2232. LDD EC CHECK ERROR TYPE
  2233. LMN /ERR/ARG
  2234. ZJN ERP3 IF * ARGUMENT ERROR.*
  2235. LDD FA
  2236. NJN ERP1 IF LOCAL FILE
  2237. LDC =Z*SYSTEM*
  2238. UJN ERP2
  2239.  
  2240. ERP1 LDD FN+3 TERMINATE FILE NAME
  2241. SCN 77
  2242. STD FN+3
  2243. LDN FN ADD FILE NAME
  2244. ERP2 RJM ACS
  2245. LDC =Z* AT * ADD * AT *
  2246. RJM ACS
  2247. ERP3 LDD IR+3 ADD ADDRESS
  2248. SHN 14
  2249. LMD IR+4
  2250. RJM ANS
  2251. LDC =Z*.* ADD PERIOD
  2252. RJM ACS
  2253. LDC BUF ISSUE DAYFILE MESSAGE
  2254. RJM DFM
  2255. PAUSE CHECK ERROR FLAG
  2256. LDD CM+1
  2257. NJN ERP4 IF ERROR FLAG SET
  2258. LDN PPET SET ERROR FLAG
  2259. STD CM+1
  2260. MONITOR CEFM
  2261. ERP4 AOD FS+4 SET FST ENTRY COMPLETE
  2262. LDD EC CHECK ERROR TYPE
  2263. LMN /ERR/IOS
  2264. ZJN ERP5 IF I/O SEQUENCE ERROR
  2265. LDD FA
  2266. ZJN ERP5 IF NO FST ADDRESS
  2267. NFA FA,R
  2268. ADN FSTL
  2269. CWD FS
  2270.  
  2271. ERP5 LDD SI SET ACCOUNTING INCREMENT
  2272. STM ERPC
  2273. LDD SI+1
  2274. STM ERPC+1
  2275. LDD MA SET REQUEST IN MESSAGE BUFFER
  2276. CWM ERPB,ON
  2277. LDN 1 SET WORD COUNT
  2278. STD CM+1
  2279. LDN 0 SET DROP PPU
  2280. STD CM+2
  2281. MONITOR UADM
  2282. LJM PPR
  2283.  
  2284. ERPB CON AISS SUB FUNCTION
  2285. CON IOAW WORD TO UPDATE
  2286. CON 40D*100+20D FIELD TO UPDATE
  2287. ERPC CON 0,0 INCREMENT
  2288. TMSG SPACE 4
  2289. TMSG BSS 0
  2290. QUAL ERR
  2291. LOC FERT
  2292. ARG MSG (ARGUMENT ERROR)
  2293. IOS MSG (I/O SEQUENCE ERROR)
  2294. MSR MSG (DEVICE ERROR)
  2295. LOC *O
  2296. QUAL *
  2297. SPACE 4,10
  2298. ** COMMON DECKS.
  2299.  
  2300.  
  2301. *CALL COMPACS
  2302. *CALL COMPANS
  2303. BUF SPACE 4,10
  2304. USE BUFFERS
  2305. BUF BSS 0 ASSEMBLY BUFFER
  2306. SPACE 4
  2307. TTL LDD/LDQ - FAST DYNAMIC LOADER.
  2308. END
cdc/nos2.source/opl871/fdl.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator