Table of Contents

MPF

Table Of Contents

  • [00005] MPF - *PACKER* UTILITY HELPER.
  • [00010] *PACKER* UTILITY PP HELPER ROUTINE.
  • [00139] COMMON DECKS.
  • [00150] MACRO DEFINITIONS.
  • [00154] ERROR - ISSUE ERROR MESSAGE AND ABORT.
  • [00171] LDCA - LOAD AND CHECK CENTRAL ADDRESS.
  • [00195] DIRECT CELL DEFINITIONS.
  • [00210] MAIN PROGRAM.
  • [00214] MAIN PROGRAM.
  • [00222] ERROR PROCESSING.
  • [00224] ERR - ERROR PROCESSOR.
  • [00273] FUNCTION PROCESSORS.
  • [00657] SUBROUTINES.
  • [00659] CDA - COMPUTE DISK ADDRESS.
  • [00695] CFS - COMPLETE FET STATUS.
  • [00718] CIO - COMPLETE I/O.
  • [00753] CMS - CHECK MASS STORAGE.
  • [00798] FDD - LOG FAMILY NAME AND DEVICE NUMBER TO DAYFILE.
  • [00853] IFQ - INITIAL FET QUERY.
  • [00897] LTD - LOG LOCATION TO DAYFILE.
  • [00937] PDS - PROCESS DEVICE STATUS.
  • [00955] PIO - PRESET I/O.
  • [00980] SBA - SET BUFFER ARGUMENTS.
  • [01014] SFC - SET FST COMPLETE.
  • [01039] SFP - SET FILE PARAMETERS.
  • [01082] VBA - VALIDATE BUFFER ADDRESSES.
  • [01130] VCA - VALIDATE CENTRAL ADDRESS.
  • [01160] VTB - VALIDATE TRACK LINK BYTE.
  • [01206] BUFFER ALLOCATION.
  • [01214] COMMON DECKS.
  • [01237] PRESET.
  • [01239] PRS - PRESET.

Source Code

MPF.txt
  1. IDENT MPF,MPF
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. TITLE MPF - *PACKER* UTILITY HELPER.
  6. SPACE 4,10
  7. *COMMENT MPF - *PACKER* UTILITY HELPER.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. SPACE 4,10
  10. *** MPF - *PACKER* UTILITY PP HELPER ROUTINE.
  11. *
  12. * W. J. STURGIS. 78/02/14.
  13. * K. A. GILLIAM. 80/08/11.
  14. * D. G. BEAUSANG. 80/08/26.
  15. * A. J. NATHANSON. 83/10/25.
  16. * K. R. DELAY. 84/03/26.
  17. * P. C. SMITH. 87/12/01.
  18. SPACE 4,10
  19. *** MPF IS A PP HELPER PROGRAM FOR THE UTILITY *PACKER*.
  20. SPACE 4,10
  21. *** CALL -
  22. *
  23. *T 18/ *MPF*,6/ R,12/ FN,6/ ,18/ ADDR
  24. *
  25. * FN = FUNCTION CODE.
  26. * ADDR = ADDRESS OF FET OR PARAMETER BLOCK.
  27. *
  28. * SEE INDIVIDUAL FUNCTIONS FOR MORE DETAILS.
  29. *
  30. * FN = 0, DROP TRACKS ON IAPF CHAIN.
  31. * FN = 1, REWRITE EOI.
  32. * FN = 2, DELINK TRACKS FROM IAPF CHAIN.
  33. * FN = 3, (RESERVED).
  34. * FN = 4, READ SYSTEM SECTOR.
  35. * FN = 5, WRITE SYSTEM SECTOR.
  36. * FN = 6, RETURN FST FOR CATALOG OVERFLOW TRACK.
  37. * FN = 7, REWRITE CATALOG SECTOR.
  38. SPACE 4,10
  39. *** DAYFILE MESSAGES.
  40. *
  41. * THESE MESSAGES ARE ISSUED TO THE SYSTEM AND LOCAL
  42. * DAYFILES, AND THE CALLING JOB IS ABORTED.
  43. *
  44. * * MPF - ADDRESS OUT OF RANGE.*
  45. * THE SPECIFIED ADDRESS WAS .LE. 1 OR .GE. FL.
  46. *
  47. * * MPF - BUFFER ARGUMENT ERROR.*
  48. * BUFFER ARGUMENTS (FIRST/IN/OUT/LIMIT) ARE INCORRECT.
  49. *
  50. * * MPF - CATALOG REWRITE LINK BYTE ERROR.*
  51. * AN INCORRECT LINK BYTE WAS READ FROM THE
  52. * CATALOG TRACK.
  53. *
  54. * * MPF - DEVICE ERROR IDLE SET.*
  55. * A DEVICE ERROR IDLE WAS SET AS THE RESULT OF AN
  56. * INCORRECT CATALOG SECTOR WRITE.
  57. *
  58. * * MPF - EQXX TKYYYY SCZZZZ.*
  59. * THE EST ORDINAL, TRACK AND SECTOR LOCATION OF THE
  60. * INCORRECT SECTOR WRITE.
  61. *
  62. * * MPF - FET COMPLETE BIT SET.*
  63. * THE FET COMPLETE BIT WAS SET ON ENTRY FOR FN=7.
  64. *
  65. * * MPF - FET TOO SHORT.*
  66. * THE FET WAS TOO SHORT FOR FN=7.
  67. *
  68. * * MPF - FILE NOT FOUND.*
  69. * THE LOCAL FILE SPECIFIED IN THE FET WAS NOT FOUND.
  70. *
  71. * * MPF - FM DN FFFFFFF NN.*
  72. * THE FAMILY NAME (FFFFFFF) AND DEVICE NUMBER (NN)
  73. * OF THE DEVICE ON WHICH ERROR IDLE WAS SET.
  74. *
  75. * * MPF - INACCESSIBLE DEVICE.*
  76. * THE DEVICE STATUS RETURNED BY THE *SETMS* MACRO
  77. * INDICATES THAT THE DEVICE IS NOT ACCESSIBLE.
  78. *
  79. * * MPF - INCORRECT CALL.*
  80. * CALLER WAS NOT *SSJ=* PROGRAM, OR *MPF* WAS
  81. * NOT CALLED WITH AUTO RECALL.
  82. *
  83. * * MPF - INCORRECT CATALOG REWRITE REQUEST.*
  84. * INCORRECT SECTOR LENGTH, INCORRECT RANDOM ADDRESS,
  85. * INCORRECT EST ORDINAL, ET CETERA.
  86. *
  87. * * MPF - INCORRECT CIO CODE IN CATALOG REWRITE.*
  88. * THE CIO CODE FOR *REWRITE* MUST BE SET IN THE FET
  89. * FOR A SECTOR REWRITE WITH 100B WORDS; THE CIO CODE
  90. * FOR *REWRITER* MUST BE SET IN THE FET FOR A SECTOR
  91. * WITH LESS THAN 100B WORDS.
  92. *
  93. * * MPF - INCORRECT FUNCTION.*
  94. * FUNCTION NUMBER NOT RECOGNIZED.
  95. *
  96. * * MPF - INCORRECT LINK BYTE IN CATALOG SCAN.*
  97. * THE CONTROL BYTES IN THE SECTOR AT END OF A TRACK
  98. * WERE NOT LINK BYTES, THE LINK BYTE POINTED TO AN
  99. * UNRESERVED TRACK, OR THE LINK BYTE POINTED TO A
  100. * TRACK WHICH WAS NOT ON THE TRACK CHAIN WHICH STARTED
  101. * WITH THE LABEL TRACK.
  102. *
  103. * * MPF - INCORRECT OVERFLOW FST REQUEST.*
  104. * THE PARAMETER BLOCK FOR FN=6 WAS INCORRECT.
  105. *
  106. * * MPF - INCORRECT SECTOR READ IN CATALOG REWRITE.*
  107. * AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED
  108. * ON A SECTOR READ.
  109. *
  110. * * MPF - INCORRECT SECTOR READ IN CATALOG SCAN.*
  111. * AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED
  112. * ON A CATALOG TRACK.
  113. *
  114. * * MPF - INCORRECT SYSTEM SECTOR.*
  115. * THE LINKAGE BYTES IN THE BUFFER WERE NOT CORRECT
  116. * FOR THE WRITE SYSTEM SECTOR FUNCTION.
  117. *
  118. * * MPF - INCORRECT WORD COUNT IN CATALOG REWRITE.*
  119. * THE WORD COUNT IN THE CIO BUFFER IS .GE. THAN 100B.
  120. *
  121. * * MPF - INCORRECT WRITE IN CATALOG REWRITE.*
  122. * AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED
  123. * ON A SECTOR WRITE. THIS ERROR WILL SET ERROR IDLE
  124. * ON THE DEVICE.
  125. *
  126. * * MPF - I/O SEQUENCE ERROR.*
  127. * FST ENTRY FOR REWRITE EOI WAS BUSY.
  128. *
  129. * * MPF - RANDOM ADDRESS NOT ON IAPF CHAIN.*
  130. * THE SPECIFIED RANDOM ADDRESS WAS NOT FOUND ON
  131. * THE IAPF CHAIN.
  132. *
  133. * * MPF - SYSTEM SECTOR ERROR.*
  134. * A MASS STORAGE ERROR WAS ENCOUNTERED WHEN READING
  135. * OR WRITING A SYSTEM SECTOR.
  136. *
  137. * * MPF - WRITE LOCK-OUT ON CATALOG FILE.*
  138. * THE CATALOG FILE WAS NOT IN WRITE MODE.
  139. TITLE COMMON DECKS.
  140. SPACE 4,10
  141. * COMMON DECKS.
  142. SPACE 4,10
  143. *CALL COMPMAC
  144. *CALL COMSCPS
  145. *CALL COMSLSD
  146. *CALL COMSMSP
  147. *CALL COMSMST
  148. *CALL COMSPIM
  149. *CALL COMSWEI
  150. TITLE MACRO DEFINITIONS.
  151. SPACE 4,10
  152. * MACRO DEFINITIONS.
  153. ERROR SPACE 4,10
  154. ** ERROR - ISSUE ERROR MESSAGE AND ABORT.
  155. *
  156. * ERROR MSG
  157. *
  158. * MSG = ADDRESS OF ERROR MESSAGE.
  159. *
  160. * CALLS ERR.
  161.  
  162.  
  163. PURGMAC ERROR
  164.  
  165. ERROR MACRO M
  166. MACREF ERROR
  167. LDC M
  168. RJM ERR
  169. ERROR ENDM
  170. LDCA SPACE 4,10
  171. ** LDCA - LOAD AND CHECK CENTRAL ADDRESS.
  172. *
  173. * LDCA ADDR,OFFSET
  174. *
  175. * (ADDR - ADDR+1) = RELATIVE ADDRESS.
  176. * OFFSET = ADDED TO ADDRESS.
  177. *
  178. * CALLS VCA.
  179. *
  180. * USES T1, T2.
  181.  
  182.  
  183. PURGMAC LDCA
  184.  
  185. LDCA MACRO A,N
  186. MACREF LDCA
  187. LDD A
  188. LPN 37
  189. SHN 14
  190. ADD A+1
  191. IFC NE,$N$$,1
  192. ADK N
  193. RJM VCA
  194. LDCA ENDM
  195. TITLE DIRECT CELL DEFINITIONS.
  196. SPACE 4,10
  197. * DIRECT CELL DEFINITIONS.
  198.  
  199.  
  200. FS EQU 20 - 24 FST ENTRY
  201. RI EQU 25 - 26 RANDOM INDEX
  202. CT EQU 35 OVERFLOW TRACK NUMBER
  203. TK EQU 36 LABEL TRACK
  204. FN EQU 40 - 44 FNT ENTRY
  205. FA EQU 57 FNT ADDRESS
  206. FT EQU 60 - 61 FIRST
  207. IN EQU 62 - 63 IN
  208. OT EQU 64 - 65 OUT
  209. LM EQU 66 - 67 LIMIT
  210. TITLE MAIN PROGRAM.
  211. SPACE 4,10
  212. ORG PPFW
  213. MPF SPACE 4,10
  214. ** MPF - MAIN PROGRAM.
  215.  
  216.  
  217. MPF BSS 0 ENTRY
  218. RJM PRS PRESET
  219. RJM 0,T1 EXECUTE FUNCTION
  220. MONITOR DPPM DROP PP
  221. LJM PPR EXIT TO PP RESIDENT
  222. TITLE ERROR PROCESSING.
  223. ERR SPACE 4,10
  224. ** ERR - ERROR PROCESSOR.
  225. *
  226. * ENTRY (A) = ADDRESS OF ERROR MESSAGE TEXT.
  227. *
  228. * EXIT TO *PPR*.
  229. * PP HUNG IF *SYSTEM DEBUG* ENABLED.
  230. *
  231. * CALLS DFM, SFC.
  232. *
  233. * MACROS MONITOR.
  234.  
  235.  
  236. ERR SUBR ENTRY
  237. RJM DFM ISSUE DAYFILE MESSAGE
  238. RJM SFC SET FST COMPLETE
  239. LDK ZERL
  240. CRD CM
  241. LDM ERR SET ADDRESS OF CALLER
  242. STD CM+1
  243. MONITOR CHGM CONDITIONALLY HANG PP
  244. MONITOR ABTM ABORT CONTROL POINT
  245. LJM PPR EXIT TO PP RESIDENT
  246. ERRMSG SPACE 4,10
  247. * ERROR MESSAGES.
  248.  
  249.  
  250. ERAR DATA C* MPF - ADDRESS OUT OF RANGE.*
  251. ERBA DATA C* MPF - BUFFER ARGUMENT ERROR.*
  252. ERCC DATA C* MPF - INCORRECT CIO CODE IN CATALOG REWRITE.*
  253. ERCR DATA C* MPF - INCORRECT CATALOG REWRITE REQUEST.*
  254. EREI DATA C* MPF - DEVICE ERROR IDLE SET.*
  255. ERFC DATA C* MPF - FET COMPLETE BIT SET.*
  256. ERFS DATA C* MPF - FET TOO SHORT.*
  257. ERIC DATA C* MPF - INCORRECT CALL.*
  258. ERID DATA C* MPF - INACCESSIBLE DEVICE.*
  259. ERIF DATA C* MPF - INCORRECT FUNCTION.*
  260. ERIO DATA C* MPF - I/O SEQUENCE ERROR.*
  261. ERIS DATA C* MPF - INCORRECT SYSTEM SECTOR.*
  262. ERLR DATA C* MPF - CATALOG REWRITE LINK BYTE ERROR.*
  263. ERLS DATA C* MPF - INCORRECT LINK BYTE IN CATALOG SCAN.*
  264. ERNF DATA C* MPF - FILE NOT FOUND.*
  265. EROF DATA C* MPF - INCORRECT OVERFLOW FST REQUEST.*
  266. ERRA DATA C* MPF - RANDOM ADDRESS NOT ON IAPF CHAIN.*
  267. ERRR DATA C* MPF - INCORRECT SECTOR READ IN CATALOG REWRITE.*
  268. ERSR DATA C* MPF - INCORRECT SECTOR READ IN CATALOG SCAN.*
  269. ERSS DATA C* MPF - SYSTEM SECTOR ERROR.*
  270. ERWL DATA C* MPF - WRITE LOCK-OUT ON CATALOG FILE.*
  271. ERWR DATA C* MPF - INCORRECT WORD COUNT IN CATALOG REWRITE.*
  272. ERWW DATA C* MPF - INCORRECT WRITE IN CATALOG REWRITE.*
  273. TITLE FUNCTION PROCESSORS.
  274. DTK SPACE 4,10
  275. *** DTK (0) - DROP TRACKS ON IAPF CHAIN.
  276. *
  277. * ENTRY (IR+3 - IR+4) = PARAMETER ADDRESS.
  278. *
  279. *T ADDR 12/ EQ,24/ ,24/ EOI
  280. *
  281. * EQ = EST ORDINAL.
  282. * EOI = RANDOM ADDRESS OF NEW EOI.
  283. *
  284. * EXIT TRT UPDATED.
  285. * DEVICE CHECKPOINT REQUESTED.
  286.  
  287.  
  288. DTK SUBR
  289. LDCA IR+3 SET EST ORDINAL
  290. CRD CM
  291. LDD CM
  292. LPC 3777
  293. STD T5
  294. LDCA IR+3
  295. RJM CDA COMPUTE DISK ADDRESS
  296. LDD T5
  297. ADC 4000 DEVICE CHECKPOINT FLAG
  298. STD CM+1
  299. LDD T6 SET EOI TRACK
  300. LPC 3777 CLEAR LINK BIT
  301. STD CM+2
  302. LDD T7 SET EOI SECTOR
  303. STD CM+3
  304. MONITOR DTKM
  305. LJM DTKX RETURN
  306. RWE SPACE 4,10
  307. *** RWE (1) - REWRITE EOI.
  308. *
  309. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  310. * LOCAL FILE POSITIONED TO CORRECT SECTOR FOR EOI WRITE.
  311. *
  312. * EXIT EOI WRITTEN.
  313.  
  314.  
  315. RWE SUBR
  316. RJM SFP SET FILE PARAMETERS
  317. SETMS IO,RW
  318. RJM PDS PROCESS DEVICE STATUS
  319. RJM WEI WRITE EOI SECTOR
  320. ENDMS
  321. RJM SFC SET FST COMPLETE
  322. UJN RWEX RETURN
  323. DLK SPACE 4,15
  324. *** DLK (2) - DELINK TRACKS FROM IAPF CHAIN.
  325. *
  326. * ENTRY (IR+3 - IR+4) = PARAMETER ADDRESS.
  327. *
  328. *T ADDR 12/ ,12/ EQ,12/ FT,12/ NT,12/ LT
  329. *
  330. * EQ = EST ORDINAL.
  331. * FT = FIRST TRACK.
  332. * NT = NEXT TRACK.
  333. * LT = LAST TRACK.
  334. *
  335. * EXIT TRACKS DELINKED FROM IAPF CHAIN.
  336. * DEVICE CHECKPOINT REQUESTED.
  337.  
  338.  
  339. DLK SUBR
  340. LDCA IR+3
  341. CRD CM READ PARAMETER
  342. LDD CM+1
  343. LPC 3777
  344. LMC 4000 DEVICE CHECKPOINT FLAG
  345. STD CM+1
  346. LDD CM+2 ENSURE LINK BIT CLEAR
  347. LPC 3777
  348. STD CM+2
  349. MONITOR DLKM
  350. UJN DLKX RETURN
  351. RSC SPACE 4,10
  352. *** RSC (4) - READ SYSTEM SECTOR.
  353. *
  354. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  355. * RANDOM ADDRESS OF SYSTEM SECTOR IN FET+6.
  356. *
  357. * EXIT SYSTEM SECTOR RETURNED TO BUFFER STARTING AT *FIRST*.
  358. * RANDOM ADDRESS IN FET+6 UPDATED.
  359.  
  360.  
  361. RSC SUBR ENTRY/EXIT
  362. RJM SFP SET FILE PARAMETERS
  363. LDCA IR+3,6 GET RANDOM ADDRESS
  364. RJM CDA COMPUTE DISK ADDRESS
  365. SETMS IO
  366. RJM PDS PROCESS DEVICE STATUS
  367. LDN 0 DO NOT COMPARE FILE NAME
  368. RJM RSS READ SYSTEM SECTOR
  369. ZJN RSC2 IF SYSTEM SECTOR VALID
  370. RSC1 ERROR ERSS * SYSTEM SECTOR ERROR.*
  371.  
  372. RSC2 ENDMS
  373. LDCA IR+3,6
  374. CRD CM
  375. AOD CM+4 UPDATE RANDOM ADDRESS IN FET+6
  376. SHN -14
  377. RAD CM+3
  378. LDCA IR+3,6
  379. CWD CM
  380. SBN 5 FIRST
  381. CRD CM
  382. LDCA CM+3,101 ENSURE THAT SYSTEM SECTOR FITS IN CM FL
  383. LDCA CM+3
  384. CWM BFMS,ON WRITE CONTROL BYTES TO CM BUFFER
  385. CWM BFMS+2,HN WRITE SYSTEM SECTOR TO CM BUFFER
  386. RJM SFC SET FST COMPLETE
  387. LJM RSCX RETURN
  388. WSC SPACE 4,10
  389. *** WSC (5) - WRITE SYSTEM SECTOR.
  390. *
  391. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  392. * SYSTEM SECTOR IN BUFFER STARTING AT *FIRST*.
  393. * RANDOM ADDRESS OF SYSTEM SECTOR IN FET+6.
  394. *
  395. * EXIT SYSTEM SECTOR WRITTEN.
  396. * RANDOM ADDRESS IN FET+6 UPDATED.
  397.  
  398.  
  399. WSC SUBR ENTRY/EXIT
  400. RJM SFP SET FILE PARAMETERS
  401. LDCA IR+3,6 RANDOM ADDRESS
  402. RJM CDA COMPUTE DISK ADDRESS
  403. LDCA IR+3,1 FIRST
  404. CRD CM
  405. LDCA CM+3,101 ENSURE SYSTEM SECTOR IS WITHIN CM FL
  406. LDCA CM+3
  407. CRM BFMS,ON READ CONTROL BYTES FROM CM BUFFER
  408. CRM BFMS+2,HN READ SYSTEM SECTOR FROM CM BUFFER
  409. LDM BFMS
  410. LMC 3777 CHECK CONTROL BYTES
  411. LMM BFMS+1
  412. LMN 77
  413. ZJN WSC1 IF CONTROL BYTES VALID
  414. ERROR ERIS * INCORRECT SYSTEM SECTOR.*
  415.  
  416. WSC1 LDD T6
  417. STM FTSS SET FIRST TRACK
  418. LDD T7
  419. ADN FSMS
  420. STM NSSS NEXT SECTOR
  421. LMM SLM
  422. NJN WSC2 IF NOT END OF TRACK
  423. RJM SNT
  424. STM NSSS
  425. WSC2 SETMS IO,RW
  426. RJM PDS PROCESS DEVICE STATUS
  427. LDC BFMS+WLSF
  428. RJM WDS WRITE SYSTEM SECTOR
  429. PJN WSC3 IF NO DISK ERROR
  430. ERROR ERSS * SYSTEM SECTOR ERROR.*
  431.  
  432. WSC3 ENDMS
  433. RJM SFC SET FST COMPLETE
  434. LDCA IR+3,6
  435. CRD CM
  436. AOD CM+4 UPDATE RANDOM ADDRESS IN FET+6
  437. SHN -14
  438. RAD CM+3
  439. LDCA IR+3,6
  440. CWD CM
  441. LJM WSCX RETURN
  442. RTF SPACE 4,25
  443. *** RTF (6) - RETURN FST FOR CATALOG OVERFLOW TRACK.
  444. *
  445. * ENTRY (IR+3 - IR+4) = PARAMETER BLOCK ADDRESS.
  446. *
  447. *T ADDR 12/ EQ,12/ FT,12/ CT,12/ CS,12/ ST
  448. *T,ADDR+1 48/ ,12/ OT
  449. *T,ADDR+2 60/
  450. *
  451. * EQ = EST ORDINAL.
  452. * FT = FIRST TRACK.
  453. * CT = CURRENT TRACK (IGNORED).
  454. * CS = CURRENT SECTOR (IGNORED).
  455. * ST = STATUS (IGNORED).
  456. * OT = OVERFLOW TRACK INDEX.
  457. *
  458. * EXIT (ADDR+2) = FST ENTRY FOR THE *OT*-TH OVERFLOW TRACK.
  459. *
  460. *T ADDR+2 12/ EQ,12/ FT,12/ CT,12/ CS,12/ ST
  461. *
  462. * EQ = EST ORDINAL.
  463. * FT = FIRST TRACK.
  464. * CT = FIRST TRACK.
  465. * CS = 0.
  466. * ST = 5.
  467.  
  468.  
  469. RTF6 LDCA IR+3,2 RETURN LOCATION IN PARAMETER BLOCK
  470. CWD FS WRITE REPLY
  471.  
  472. RTF SUBR ENTRY/EXIT
  473. LDCA IR+3 READ PARAMETER BLOCK
  474. CRD FS
  475. LDCA IR+3,1
  476. CRD CM
  477. LDD CM+4
  478. ZJN RTF1 IF NO OVERFLOW TRACK INDEX
  479. STD CT
  480. AOD CT INCREMENT FOR ENTRY INTO LOOP
  481. LDD FS EST ORDINAL
  482. LPC 3777
  483. STD T5
  484. LDD FS+1 TRACK
  485. LPC 3777
  486. LMC 4000
  487. STD T6
  488. LDN 0 SET FST FIELDS FOR RETURN
  489. STD FS+3
  490. LDN 5
  491. STD FS+4
  492. RJM CMS CHECK MASS STORAGE
  493. NJN RTF1 IF ERROR
  494. LDD FS+1 STARTING TRACK
  495. LPC 3777
  496. ADC 4000
  497. RJM VTB VALIDATE TRACK BYTE
  498. ZJN RTF2 IF TRACK BYTE VALID
  499. RTF1 ERROR EROF * INCORRECT OVERFLOW FST REQUEST.*
  500.  
  501. RTF2 SOD CT DECREMENT COUNTER
  502. ZJP RTF6 IF DONE
  503. LDD FS+1 TRACK
  504. STD T6
  505. SETMS IO
  506. RJM PDS PROCESS DEVICE STATUS
  507. LDM SLM SECTOR LIMIT
  508. SBN 1 LAST SECTOR ON TRACK
  509. STD T7
  510. LDC BFMS
  511. RJM RDS READ SECTOR
  512. PJN RTF3 IF NO ERROR
  513. ERROR ERSR * INCORRECT SECTOR READ IN CATALOG SCAN.*
  514.  
  515. RTF3 ENDMS
  516. LDM BFMS GET LINK BYTE
  517. NJN RFT4 IF NOT EOF/EOI
  518. LDM BFMS+1 GET SECOND LINK BYTE
  519. RFT4 SHN 21-13
  520. PJN RTF5 IF NOT LINK BYTE
  521. SHN -6
  522. STD FS+1
  523. STD FS+2
  524. RJM VTB VALIDATE TRACK LINK BYTE
  525. ZJP RTF2 IF NO ERROR
  526. RTF5 ERROR ERLS * INCORRECT LINK BYTE IN CATALOG SCAN.*
  527. RWC SPACE 4,25
  528. *** RWC (7) - REWRITE CATALOG SECTOR.
  529. *
  530. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  531. * RANDOM ADDRESS FOR REWRITE IN FET+6.
  532. * SECTOR DATA IN CM BUFFER.
  533. *
  534. * EXIT SECTOR REWRITTEN, FET UPDATED AND SET COMPLETE.
  535. * CRI NOT UPDATED, RR NOT CLEARED, FST POSITION
  536. * IS THE TRACK AND SECTOR JUST WRITTEN.
  537. *
  538. * TO *ERR* IF ERROR; ERROR IDLE SET ON DEVICE
  539. * IF UNRECOVERABLE MS ERROR RETURNED ON REWRITE
  540. * OF CATALOG SECTOR.
  541.  
  542.  
  543. RWC SUBR ENTRY/EXIT
  544. LDN 5+2 MINIMUM FET LENGTH REQUIRED
  545. RJM IFQ INITIAL FET QUERY
  546. RJM PIO PRESET I/O
  547. RJM CMS CHECK MASS STORAGE
  548. NJN RWC1 IF ERROR
  549. LDD FS+1 FIRST TRACK
  550. RJM VTB VALIDATE THAT TRACK IS ON LABEL TRT CHAIN
  551. ZJN RWC2 IF NO ERROR
  552. RWC1 ERROR ERCR * INCORRECT CATALOG REWRITE REQUEST.*
  553.  
  554. RWC2 NFA FA,R READ FNT
  555. CRD CM
  556. LDD CM+3
  557. LPN 1
  558. ZJN RWC3 IF FILE IN WRITE MODE
  559. ERROR ERWL * WRITE LOCK-OUT ON CATALOG FILE.*
  560.  
  561. RWC3 LDD FS+1 FIRST TRACK
  562. STD T6
  563. LDCA IR+3,6 RANDOM ADDRESS FROM FET (RR)
  564. CRD CM
  565. LDD CM+4
  566. STD RI+1 RANDOM INDEX
  567. LDD CM+3
  568. STD RI
  569. LDN 0 ENSURE CURRENT TRT
  570. RJM CRA CONVERT RANDOM ADDRESS
  571. MJP RWC1 IF ADDRESS NOT VALID
  572. LDD T6
  573. LMD FS+1
  574. NJP RWC1 IF TRACK IS NOT THE SAME AS FIRST TRACK
  575. LDD T7 CHECK TRACK AT SECTOR LIMIT
  576. ADN 1
  577. STM BFMS NEXT SECTOR
  578. LMM SLM
  579. ZJN RWC4 IF AT LAST SECTOR IN TRACK
  580. RJM COB CHECK OUTPUT BUFFER (GET WORDS IN BUFFER)
  581. MJP RWC11 IF BUFFER ARGUMENT ERROR
  582. STM BFMS+1 WORDS IN SECTOR
  583. SBD HN
  584. ZJN RWC5 IF FULL SECTOR
  585. MJN RWC6 IF SHORT SECTOR
  586. ERROR ERWR * INCORRECT WORD COUNT IN CAT REWRITE.*
  587.  
  588. RWC4 SETMS IO READ TO OBTAIN LINK BYTES
  589. RJM PDS PROCESS DEVICE STATUS
  590. LDC BFMS
  591. RJM RDS
  592. PJN RWC8 IF NO ERROR
  593. ERROR ERRR * INCORRECT SECTOR READ IN CAT REWRITE.*
  594.  
  595. RWC5 LDC 214 *REWRITE* CODE
  596. UJN RWC7 SET *CIO* FUNCTION CODE
  597.  
  598. RWC6 LDC 224 *REWRITER* CODE
  599. RWC7 STD T3 SET *CIO* FUNCTION CODE
  600. LDCA IR+3 GET *CIO* FUNCTION CODE FROM FET+0
  601. CRD CM
  602. LDD CM+4
  603. LPC 1774 CODE FIELD
  604. LMD T3
  605. ZJN RWC12 IF *CIO* FUNCTION CODE MATCHES
  606. ERROR ERCC * INCORRECT CIO CODE IN CAT REWRITE.*
  607.  
  608. RWC8 LDM BFMS CHECK LINKAGE BYTES
  609. ZJN RWC9 IF EOF OR EOI
  610. LMC 3777
  611. ZJN RWC9 IF SYSTEM SECTOR
  612. RJM COB CHECK OUTPUT BUFFER (GET WORDS IN BUFFER)
  613. MJN RWC10 IF BUFFER ARGUMENT ERROR
  614. LMM BFMS+1
  615. ZJN RWC12 IF SECTOR LENGTH DID NOT CHANGE
  616. RWC9 ENDMS
  617. ERROR ERLR * CATALOG REWRITE LINK BYTE ERROR.*
  618.  
  619. RWC10 ENDMS
  620. RWC11 ERROR ERBA * BUFFER ARGUMENT ERROR.*
  621.  
  622. RWC12 LDM BFMS+1 NUMBER OF WORDS IN SECTOR
  623. STM T3 NUMBER OF WORDS TO READ
  624. LDC BFMS+2 PP BUFFER ADDRESS
  625. RJM RBB READ BINARY BUFFER
  626. SETMS IO,RW,EBMS
  627. RJM PDS PROCESS DEVICE STATUS
  628. LDC BFMS+WLSF
  629. RJM WDS
  630. PJN RWC13 IF NO ERROR
  631. LDC ERWW * MPF - INCORRECT WRITE IN CAT REWRITE.*
  632. RJM DFM
  633. RJM LTD LOG LOCATION TO DAYFILE
  634. RJM FDD LOG FAMILY NAME, DEVICE NUMBER TO DAYFILE
  635. LDN STEI SET ERROR IDLE STATUS
  636. RJM SES
  637. SMSTF GDEI
  638. ERROR EREI * DEVICE ERROR IDLE SET.*
  639.  
  640. RWC13 ENDMS
  641. LDN ZERL UPDATE OUT POINTER IN FET
  642. CRD CM
  643. LDD OT+1
  644. STD CM+4
  645. LDD OT
  646. STD CM+3
  647. LDCA IR+3,3
  648. CWD CM
  649.  
  650. * T6 AND T7 (CURRENT TRACK AND CURRENT SECTOR) ARE NOT
  651. * UPDATED TO REFLECT THE NEXT SECTOR TO AVOID THE NON-
  652. * STANDARD NEXT TRACK LINKAGE PROBLEM. THUS, THE FST
  653. * CURRENT POSITION WILL POINT AT THE SECTOR WRITTEN.
  654.  
  655. RJM CIO COMPLETE I/O
  656. LJM RWCX RETURN
  657. TITLE SUBROUTINES.
  658. CDA SPACE 4,15
  659. ** CDA - COMPUTE DISK ADDRESS.
  660. *
  661. * ENTRY (A) = CM ADDRESS OF RANDOM ADDRESS.
  662. * (T5) = EST ORDINAL.
  663. *
  664. * EXIT (T6) = TRACK.
  665. * (T7) = SECTOR.
  666. * (RI - RI+1) = RANDOM ADDRESS.
  667. *
  668. * USES T6, CM - CM+4, RI - RI+1.
  669. *
  670. * CALLS CRA.
  671. *
  672. * MACROS ERROR, SFA.
  673.  
  674.  
  675. CDA SUBR ENTRY/EXIT
  676. CRD CM
  677. LDD CM+3
  678. STD RI
  679. LDD CM+4
  680. STD RI+1
  681. SFA EST,T5
  682. ADK EQDE
  683. CRD CM READ EST ENTRY
  684. LDD CM+4
  685. SHN 3 MST ADDRESS
  686. ADN ALGL
  687. CRD CM
  688. LDD CM FIRST TRACK OF IAPF CHAIN
  689. STD T6
  690. LDN 0 ENSURE CURRENT TRT
  691. RJM CRA COMPUTE RANDOM ADDRESS
  692. PJN CDAX IF ADDRESS IS IN TRACK CHAIN
  693. ERROR ERRA * RANDOM ADDRESS NOT ON IAPF CHAIN.*
  694. CFS SPACE 4,10
  695. ** CFS - COMPLETE FET STATUS.
  696. *
  697. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  698. *
  699. * EXIT FET STATUS SET COMPLETE (IF FET ADDRESS VALID).
  700. * (IR+3 - IR+4) = 0 (IF FET STATUS SET COMPLETE).
  701. *
  702. * USES CM - CM+4, IR+3 - IR+4.
  703. *
  704. * MACROS LDCA.
  705.  
  706.  
  707. CFS SUBR ENTRY/EXIT
  708. LDCA IR+3 FET ADDRESS
  709. CRD CM
  710. AOD CM+4
  711. LDCA IR+3
  712. CWD CM
  713. LDN 0 CLEAR FET ADDRESS
  714. STD IR+3
  715. STD IR+4
  716. UJN CFSX RETURN
  717. CIO SPACE 4,20
  718. ** CIO - COMPLETE I/O.
  719. *
  720. * COMPLETE FST WRITE AND SET FET STATUS COMPLETE.
  721. *
  722. * ENTRY OPERATION COMPLETED ON FILE.
  723. * (T5) = EST ORDINAL.
  724. * (T6) = TRACK.
  725. * (T7) = SECTOR.
  726. *
  727. * EXIT FET STATUS SET COMPLETE.
  728. * FST WRITTEN.
  729. *
  730. * USES FS - FS+4.
  731. *
  732. * CALLS CFS, SFC.
  733.  
  734.  
  735. CIO SUBR ENTRY/EXIT
  736.  
  737. * UPDATE FST ENTRY AND WRITE.
  738.  
  739. LDD FS+4 SET FILE STATUS
  740. SCN 16
  741. LMN 4
  742. STD FS+4
  743. LDD T6 SET TRACK
  744. STD FS+2
  745. LDD T7 SET SECTOR
  746. STD FS+3
  747. LDD T5 SET EST ORDINAL
  748. STD FS
  749. RJM SFC SET FST COMPLETE
  750. RJM CFS COMPLETE FET STATUS
  751. UJP CIOX RETURN
  752. CMS SPACE 4,15
  753. ** CMS - CHECK MASS STORAGE.
  754. *
  755. * ENTRY (T5) = EST ORDINAL.
  756. * (T6) = TRACK.
  757. *
  758. * EXIT (A) = 0 IF NO ERROR.
  759. * (TK) = LABEL TRACK.
  760. *
  761. * USES T1, CM - CM+4.
  762. *
  763. * MACROS SFA.
  764.  
  765.  
  766. CMS1 LDN 1 INDICATE ERROR
  767.  
  768. CMS SUBR ENTRY/EXIT
  769. SFA EST,T5 READ EST ENTRY
  770. ADK EQDE
  771. CRD CM
  772. LDD CM
  773. SHN 21-13
  774. PJN CMS1 IF NOT MASS STORAGE
  775. LDD CM+4 MST/10
  776. STD T1
  777. SHN 3
  778. ADK TDGL
  779. CRD CM
  780. LDD CM+2 LENGTH OF TRT
  781. ADD TH 4000/4
  782. SHN 2
  783. SBD T6 REQUESTED TRACK
  784. MJN CMS1 IF INCORRECT TRACK
  785. LDD T1
  786. SHN 3
  787. ADN ALGL
  788. CRD CM
  789. LDD CM+1 LABEL TRACK
  790. LPC 3777
  791. ADC 4000
  792. STD TK
  793. LDD CM+3
  794. ZJP CMS1 IF NO CATALOG TRACKS
  795. LDN 0 INDICATE NO ERROR
  796. UJP CMSX RETURN
  797. FDD SPACE 4,15
  798. ** FDD - LOG FAMILY NAME AND DEVICE NUMBER TO DAYFILE.
  799. *
  800. * ENTRY (T5) = EST ORDINAL.
  801. *
  802. * EXIT MESSAGE ISSUED.
  803. *
  804. * USES CM - CM+4.
  805. *
  806. * CALLS C2D, DFM.
  807. *
  808. * MACROS SFA.
  809.  
  810.  
  811. FDD SUBR ENTRY/EXIT
  812. SFA EST,T5 READ EST ENTRY
  813. ADK EQDE
  814. CRD CM
  815. LDD CM+4 GET MST ADDRESS
  816. SHN 3
  817. ADK PFGL READ FAMILY NAME / DEVICE NUMBER
  818. CRM FDDA+6,ON MERGE INTO MESSAGE
  819. LDM FDDA+11 CONVERT DEVICE NUMBER
  820. RJM C2D
  821. STM FDDA+12 SET DEVICE NUMBER INTO MESSAGE
  822. LDM FDDA+11 BLANK FILL FAMILY NAME
  823. SCN 77 CLEAR BINARY DEVICE NUMBER
  824. ZJN FDD1 IF TWO OR MORE BLANKS NEEDED
  825. LMN 1R MERGE SINGLE BLANK INTO MESSAGE
  826. STM FDDA+11
  827. UJN FDD4 ISSUE MESSAGE
  828.  
  829. FDD1 LDC 2R SET TWO BLANKS INTO MESSAGE
  830. STM FDDA+11
  831. LDN 3 NUMBER OF BYTES MAY NEED TO BLANK FILL
  832. STD CM
  833. FDD2 LDM FDDA+5,CM
  834. NJN FDD3 IF END OF FAMILY NAME FOUND
  835. LDC 2R SET TWO MORE BLANKS INTO MESSAGE
  836. STM FDDA+5,CM
  837. SOD CM DECREMENT COUNTER
  838. NJN FDD2 IF NOT DONE
  839. UJN FDD4 ISSUE MESSAGE
  840.  
  841. FDD3 LPN 77 CHECK IF SINGLE BLANK NEEDED
  842. NJN FDD4 IF NO BLANK NEEDED
  843. LDM FDDA+5,CM
  844. LMN 1R SINGLE BLANK
  845. STM FDDA+5,CM
  846. FDD4 LDC FDDA
  847. RJM DFM ISSUE DAYFILE MESSAGE
  848. LJM FDDX RETURN
  849.  
  850.  
  851. FDDA DATA C*MPF - FM DN FFFFFFF NN.*
  852. IFQ SPACE 4,15
  853. ** IFQ - INITIAL FET QUERY.
  854. *
  855. * VALIDATE THAT THE FET IS LONG ENOUGH, IS WITHIN FL,
  856. * AND DOES NOT HAVE COMPLETE BIT SET.
  857. *
  858. * ENTRY (A) = MINIMUM FET LENGTH REQUIRED.
  859. * (IR+3 - IR+4) = FET ADDRESS.
  860. *
  861. * EXIT TO *ERR* IF FET IS NOT VALID.
  862. *
  863. * USES T2, T3, CM - CM+4.
  864. *
  865. * CALLS VCA.
  866. *
  867. * MACROS LDCA.
  868.  
  869.  
  870. IFQ SUBR ENTRY/EXIT
  871. STD T3 REQUIRED FET LENGTH
  872. LDCA IR+3 VALIDATE FET+0 ADDRESS
  873. CRD CM CHECK COMPLETE BIT CLEAR
  874. LDD CM+4
  875. LPN 1
  876. ZJN IFQ1 IF COMPLETE BIT IS CLEAR
  877. ERROR ERFC * FET COMPLETE BIT SET.*
  878.  
  879. IFQ1 LDCA IR+3,1 GET FET LENGTH
  880. CRD CM
  881. LDD CM+3
  882. SHN -6
  883. ADN 5
  884. STD T2 CHECK FET LENGTH
  885. SBD T3
  886. PJN IFQ2 IF FET IS LONG ENOUGH
  887. ERROR ERFS * FET TOO SHORT.*
  888.  
  889. IFQ2 LDD IR+3 CHECK IF LAST WORD OF FET IS WITHIN FL
  890. SHN 14
  891. LMD IR+4
  892. ADD T2
  893. SBN 1
  894. RJM VCA VALIDATE CENTRAL ADDRESS
  895. UJP IFQX RETURN
  896. LTD SPACE 4,10
  897. ** LTD - LOG LOCATION TO DAYFILE.
  898. *
  899. * ENTRY (T5) = EST ORDINAL.
  900. * (T6) = TRACK.
  901. * (T7) = SECTOR.
  902. *
  903. * EXIT MESSAGE ISSUED TO DAYFILE.
  904. *
  905. * CALLS C2D, DFM.
  906.  
  907.  
  908. LTD SUBR ENTRY/EXIT
  909. LDD T5 CONVERT EST ORDINAL
  910. RJM C2D
  911. STM LTDA+5
  912. LDD T5
  913. SHN -6
  914. RJM C2D
  915. STM LTDA+4
  916. LDD T6 CONVERT TRACK
  917. RJM C2D
  918. STM LTDA+11
  919. LDD T6
  920. SHN -6
  921. RJM C2D
  922. STM LTDA+10
  923. LDD T7 CONVERT SECTOR
  924. RJM C2D
  925. STM LTDA+15
  926. LDD T7
  927. SHN -6
  928. RJM C2D
  929. STM LTDA+14
  930. LDC LTDA ISSUE MESSAGE
  931. RJM DFM
  932. UJP LTDX RETURN
  933.  
  934.  
  935. LTDA DATA C*MPF - EQXXXX TKYYYY SCZZZZ.*
  936. PDS SPACE 4,10
  937. ** PDS - PROCESS DEVICE STATUS.
  938. *
  939. * ENTRY (MSD) = DEVICE STATUS UPON EXIT FROM *SETMS*.
  940. * (T5) = EST ORDINAL OF THE DEVICE.
  941. * DRIVER SOFTWARE IS LOADED.
  942. *
  943. * EXIT TO *ERR* IF DEVICE IS INACCESSIBLE.
  944. *
  945. * MACROS ENDMS, ERROR.
  946.  
  947.  
  948. PDS SUBR ENTRY/EXIT
  949. LDM MSD
  950. SHN 21-6
  951. PJN PDSX IF DEVICE IS AVAILABLE, RETURN
  952. ENDMS
  953. ERROR ERID * INACCESSIBLE DEVICE.*
  954. PIO SPACE 4,20
  955. ** PIO - PRESET I/O.
  956. *
  957. * SET DIRECT CELLS FOR I/O OPERATION.
  958. *
  959. * ENTRY (IR+3 - IR+4) = VALIDATED FET ADDRESS.
  960. *
  961. * EXIT (FA) = FST ADDRESS OF FILE.
  962. * (FS - FS+4) = FST ENTRY FOR FILE.
  963. * (T5) = EST ORDINAL.
  964. * (T6) = TRACK.
  965. * (T7) = SECTOR.
  966. * (FT - FT+1) = FIRST.
  967. * (IN - IN+1) = IN.
  968. * (OT - OT+1) = OUT.
  969. * (LM - LM+1) = LIMIT.
  970. *
  971. * CALLS SBA, SFP, VBA.
  972.  
  973.  
  974. PIO SUBR ENTRY/EXIT
  975. RJM SFP SET FILE PARAMETERS
  976. RJM SBA SET BUFFER ADDRESSES
  977. RJM VBA VALIDATE BUFFER ADDRESSES
  978. UJN PIOX RETURN
  979. SBA SPACE 4,15
  980. ** SBA - SET BUFFER ARGUMENTS.
  981. *
  982. * READ BUFFER POINTERS INTO DIRECT CELLS.
  983. *
  984. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  985. *
  986. * EXIT (FT - FT+1) = FIRST.
  987. * (IN - IN+1) = IN.
  988. * (OT - OT+1) = OUT.
  989. * (LM - LM+1) = LIMIT.
  990. *
  991. * USES CM - CM+4, FT - FT+1, IN - IN+1, LM - LM+1, OT - OT+1.
  992.  
  993.  
  994. SBA SUBR ENTRY/EXIT
  995. LDCA IR+3,4 READ LIMIT
  996. CRD LM-3
  997. SBN 1 READ OUT
  998. CRD OT-3
  999. SBN 1 READ IN
  1000. CRD CM
  1001. LDD CM+3
  1002. STD IN
  1003. LDD CM+4
  1004. STD IN+1
  1005. LDCA IR+3,1 READ FIRST
  1006. CRD CM
  1007. LDD CM+3
  1008. LPN 77
  1009. STD FT
  1010. LDD CM+4
  1011. STD FT+1
  1012. UJP SBAX RETURN
  1013. SFC SPACE 4,15
  1014. ** SFC - SET FST COMPLETE.
  1015. *
  1016. * ENTRY (FS - FS+4) = FST.
  1017. * (FA) = FNT ADDRESS.
  1018. * (FA) = 0, IF NO FILE CURRENTLY SET BUSY.
  1019. *
  1020. * EXIT FST SET COMPLETE AND WRITTEN TO CENTRAL.
  1021. * (FA) = 0.
  1022. *
  1023. * USES FA, FS+4.
  1024. *
  1025. * MACROS NFA.
  1026.  
  1027.  
  1028. SFC SUBR ENTRY/EXIT
  1029. AOD FS+4 SET STATUS COMPLETE
  1030. LDD FA
  1031. ZJN SFCX IF NO FST ADDRESS
  1032. NFA FA,R WRITE FST
  1033. ADK FSTL
  1034. CWD FS
  1035. LDN 0 CLEAR FNT ADDRESS
  1036. STD FA
  1037. UJN SFCX RETURN
  1038. SFP SPACE 4,10
  1039. ** SFP - SET FILE PARAMETERS.
  1040. *
  1041. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  1042. *
  1043. * EXIT (FA) = FNT ADDRESS.
  1044. * (FS - FS+4) = FST ENTRY.
  1045. * (T5) = EST ORDINAL.
  1046. * (T6) = TRACK.
  1047. * (T7) = SECTOR.
  1048. * FST SET BUSY.
  1049. *
  1050. * USES FA, T5, T6, T7, FN - FN+4, FS - FS+4.
  1051. *
  1052. * CALLS SAF, SFB.
  1053. *
  1054. * MACROS ERROR, LDCA.
  1055.  
  1056.  
  1057. SFP SUBR ENTRY/EXIT
  1058. LDCA IR+3 READ FILE NAME
  1059. CRD FN
  1060. LDCA IR+3,4 READ FNT ADDRESS
  1061. CRD FS
  1062. LDD FS
  1063. RJM SAF SEARCH FOR ASSIGNED FILE
  1064. NJN SFP1 IF FILE FOUND
  1065. ERROR ERNF * FILE NOT FOUND.*
  1066.  
  1067. SFP1 RJM SFB SET FILE BUSY
  1068. ZJN SFP2 IF FILE SET BUSY
  1069. LDN 0 CLEAR FNT ADDRESS
  1070. STD FA
  1071. ERROR ERIO * I/O SEQUENCE ERROR.*
  1072.  
  1073. SFP2 LDD FS
  1074. LPC 3777
  1075. STD T5 EST ORDINAL
  1076. LDD FS+2
  1077. STD T6 TRACK
  1078. LDD FS+3
  1079. STD T7 SECTOR
  1080. UJP SFPX RETURN
  1081. VBA SPACE 4,10
  1082. ** VBA - VALIDATE BUFFER ADDRESSES.
  1083. *
  1084. * ENTRY (FT - FT+1) = FIRST.
  1085. * (IN - IN+1) = IN.
  1086. * (OT - OT+1) = OUT.
  1087. * (LM - LM+1) = LIMIT.
  1088. *
  1089. * EXIT TO *ERR* IF BUFFER ARGUMENT ERROR.
  1090. *
  1091. * MACROS ERROR.
  1092.  
  1093.  
  1094. VBA SUBR ENTRY/EXIT
  1095. LDD LM CHECK LIMIT
  1096. SHN 14
  1097. LMD LM+1
  1098. SBN 1
  1099. SHN -6
  1100. SBD FL
  1101. PJN VBA1 IF LIMIT .GT. FL
  1102. LDD OT CHECK OUT
  1103. SBD LM
  1104. SHN 14
  1105. ADD OT+1
  1106. SBD LM+1
  1107. PJN VBA1 IF OUT .GE. LIMIT
  1108. LDD OT
  1109. SBD FT
  1110. SHN 14
  1111. ADD OT+1
  1112. SBD FT+1
  1113. MJN VBA1 IF OUT .LT. FIRST
  1114. LDD IN CHECK IN
  1115. SBD LM
  1116. SHN 14
  1117. ADD IN+1
  1118. SBD LM+1
  1119. PJN VBA1 IF IN .GE. LIMIT
  1120. LDD IN
  1121. SBD FT
  1122. SHN 14
  1123. ADD IN+1
  1124. SBD FT+1
  1125. MJN VBA1 IF IN .LT. FIRST
  1126. UJP VBAX RETURN
  1127.  
  1128. VBA1 ERROR ERBA * BUFFER ARGUMENT ERROR.*
  1129. VCA SPACE 4,10
  1130. ** VCA - VALIDATE CENTRAL ADDRESS.
  1131. *
  1132. * ENTRY (A) = RELATIVE ADDRESS.
  1133. *
  1134. * EXIT (A) = ABSOLUTE ADDRESS IF ADDRESS VALID.
  1135. *
  1136. * USES T1, T2.
  1137. *
  1138. * MACROS ERROR.
  1139.  
  1140.  
  1141. VCA SUBR
  1142. STD T2
  1143. SCN 1
  1144. ZJN VCA1 IF ADDRESS .LE. 1
  1145. SCN 77
  1146. SHN 6
  1147. STD T1
  1148. SHN 6
  1149. SBD FL
  1150. PJN VCA1 IF ADDRESS .GE. FL
  1151. LDD T1 FORM ABSOLUTE ADDRESS
  1152. SHN 6
  1153. ADD RA
  1154. SHN 6
  1155. ADD T2
  1156. UJP VCAX RETURN
  1157.  
  1158. VCA1 ERROR ERAR * ADDRESS OUT OF RANGE.*
  1159. VTB SPACE 4,10
  1160. ** VTB - VALIDATE TRACK LINK BYTE.
  1161. *
  1162. * ENTRY (A) = TRACK LINK BYTE TO VALIDATE.
  1163. * (TK) = LABEL TRACK.
  1164. * (T5) = EST ORDINAL.
  1165. *
  1166. * EXIT (A) = 0 IF NO ERROR.
  1167. *
  1168. * USES T1, T2, T6, CM - CM+4.
  1169. *
  1170. * CALLS SNT.
  1171. *
  1172. * MACROS MONITOR.
  1173.  
  1174.  
  1175. VTB SUBR ENTRY/EXIT
  1176. STD T2 SAVE BYTE
  1177. LDD TK LABEL TRACK
  1178. STD T6
  1179. LDN UTRS SET SUBFUNCTION CODE
  1180. STD CM+3
  1181. LDD T5 SET EST ORDINAL
  1182. STD CM+1
  1183. MONITOR STBM GET CURRENT TRT
  1184. VTB1 RJM SNT GET LINK
  1185. STD T6
  1186. LMD T2
  1187. ZJN VTB3 IF LINKED TO REQUESTED TRACK BYTE
  1188. LDD T6
  1189. SHN 21-13
  1190. MJN VTB1 IF LINK BYTE
  1191. VTB2 LDN 1 INDICATE ERROR
  1192. UJN VTBX RETURN
  1193.  
  1194. VTB3 LDD T6
  1195. SHN 21-13
  1196. PJN VTB2 IF NOT A LINK BYTE
  1197. RJM SNT
  1198. LDD T1
  1199. ADC SHNI+6+14-4
  1200. STM VTBA
  1201. LDD CM+4
  1202. VTBA SHN **
  1203. PJN VTB2 IF NOT RESERVED
  1204. LDN 0 INDICATE NO ERROR
  1205. UJP VTBX RETURN
  1206. TITLE BUFFER ALLOCATION.
  1207. SPACE 4,10
  1208. * BUFFER ALLOCATION.
  1209.  
  1210.  
  1211. WEIA BSSZ WCEI*5+2 EOI SECTOR BUFFER (FOR *COMPWEI*)
  1212.  
  1213. EBMS EQU BFMS-502 MASS STORAGE ERROR BUFFER
  1214. TITLE COMMON DECKS.
  1215. SPACE 4,10
  1216. * COMMON DECKS.
  1217.  
  1218.  
  1219. *CALL COMPCOB
  1220. CRA$ EQU 0 ENSURE CURRENT TRT
  1221. *CALL COMPCRA
  1222. *CALL COMPCRS
  1223. *CALL COMPC2D
  1224. *CALL COMPRBB
  1225. RIS$ EQU 1 READ IAPF SYSTEM SECTOR
  1226. *CALL COMPRSS
  1227. SAF$ EQU 0 SEARCH SPECIFIC ENTRY FIRST
  1228. *CALL COMPSAF
  1229. *CALL COMPSES
  1230. *CALL COMPSFB
  1231. *CALL COMPSNT
  1232. *CALL COMPTGB
  1233. *CALL COMPWEI
  1234. SPACE 4,10
  1235. ERRPL *-EBMS OVERFLOW INTO MS ERROR BUFFER
  1236. ERRPL *-BFMS OVERFLOW INTO MS BUFFER
  1237. TITLE PRESET.
  1238. PRS SPACE 4,15
  1239. ** PRS - PRESET.
  1240. *
  1241. * ENTRY (IR+2) = FUNCTION CODE.
  1242. *
  1243. * EXIT (T1) = FUNCTION PROCESSOR ADDRESS.
  1244. *
  1245. * USES FA, T1, CM - CM+4.
  1246. *
  1247. * CALLS CRS.
  1248. *
  1249. * MACROS ERROR.
  1250.  
  1251.  
  1252. PRS SUBR
  1253. LDN 0 CLEAR FST ADDRESS
  1254. STD FA
  1255. LDD CP CHECK IF CALLER IS *SSJ=*
  1256. ADK SEPW
  1257. CRD CM
  1258. LDD CM
  1259. SHN 21-2
  1260. MJN PRS2 IF CALLER IS *SSJ=*
  1261. PRS1 ERROR ERIC * INCORRECT CALL.*
  1262.  
  1263. PRS2 RJM CRS
  1264. ZJN PRS1 IF NOT CALLED WITH AUTO RECALL
  1265. LDD IR+2
  1266. STD T1 FUNCTION CODE
  1267. SBN TFCNL
  1268. MJN PRS4 IF LEGAL FUNCTION
  1269. PRS3 ERROR ERIF * INCORRECT FUNCTION.*
  1270.  
  1271. PRS4 LDM TFCN,T1 FUNCION PROCESSOR ADDRESS
  1272. STD T1
  1273. ZJN PRS3 IF INCORRECT FUNCTION
  1274. UJP PRSX RETURN
  1275. SPACE 4,10
  1276. * TFCN - TABLE OF FUNCTION PROCESSORS.
  1277.  
  1278.  
  1279. TFCN BSS 0
  1280. CON DTK DROP TRACKS
  1281. CON RWE REWRITE END OF INFORMATION
  1282. CON DLK DELINK TRACKS
  1283. CON 0 (RESERVED)
  1284. CON RSC READ SYSTEM SECTOR
  1285. CON WSC WRITE SYSTEM SECTOR
  1286. CON RTF RETURN FST FOR CATALOG OVERFLOW TRACK
  1287. CON RWC REWRITE CATALOG SECTOR
  1288. TFCNL EQU *-TFCN
  1289. SPACE 4,10
  1290. OVERFLOW PPFW,EPFW
  1291. SPACE 4
  1292. END