User Tools

Site Tools


cdc:nos2.source:nam5871:osccall

OSCCALL

Table Of Contents

Source Code

OSCCALL.txt
  1. *DECK OSCCALL
  2. IDENT OSCCALL
  3. ENTRY OSCCALL
  4. EXT OPPHANG
  5. EXT OMSG
  6. EXT OTIME
  7. EXT RDUMP
  8. EXT XRECALL
  9. EXT XTRACE
  10. SST
  11. *#
  12. *1DC OSCCALL
  13. *
  14. * 1. PROC NAME AUTHOR DATE
  15. * OSCCALL E. GEE 77/08/03
  16. *
  17. * 2. FUNCTIONAL DESCRIPTION.
  18. * THIS ROUTINE IS RESPONSIBLE FOR MAKING AN SCP CALL FOR NIP.
  19. *
  20. * 3. METHOD USED.
  21. * CHECK IF SF.LIST CALL
  22. * ISSUE SCP CALL
  23. * LOOP UNTIL COMPLETION OF CALL
  24. * IF SF.LIST CALL NOT COMPLETE, REISSUE SCP CALL
  25. * CHECK FOR NONZERO RC
  26. * GO INTO A TIGHT LOOP IF FATAL RC
  27. *
  28. * 4. ENTRY PARAMETERS.
  29. * A1 = ADDR OF THE SFCALL PARAMETER WORDS
  30. *
  31. * 5. EXIT PARAMETERS. NONE
  32. *
  33. * 6. COMDECKS CALLED.
  34. * DUMPFLG INPARU MACDEF
  35. * STATTAB
  36. *
  37. * 7. ROUTINES CALLED.
  38. * OPPHANG HANG PPU
  39. * OMSG ISSUE DAYFILE MESSAGE
  40. * OTIME GET SYSTEM RTIME
  41. * RDUMP DUMP NIP-S FIELD LENGTH
  42. * SFCALL SYSTEM-CONTROL-POINT MACRO
  43. * XRECALL RECALL
  44. * XTRACE TRACES CALLS
  45. *
  46. * 8. DAYFILE MESSAGES.
  47. * * NIP/SCP ERROR RC = XXB,JOBID=XXXX*
  48. *
  49. *#
  50. *CALL MACDEF
  51. *CALL INPARU
  52. ERRMSG DIS ,* NIP/SCP ERROR RC = XXB,JOBID=XXXX*
  53. MSGADR VFD 42/0,18/ERRMSG
  54. BSSZ 1
  55. RCERR EQU ERRMSG+2
  56. IDERR EQU ERRMSG+3
  57. *CALL DUMPFLG
  58. STAT1 IFEQ STAT,1
  59. *CALL STATTAB
  60. STAT1 ENDIF
  61.  
  62. SPACE 2
  63. OSCCALL BSSZ 1 ENTRY/EXIT
  64.  
  65. DEBUG1 IFEQ DEBUG,1
  66. SX6 A1
  67. SA6 TEMP
  68.  
  69. STAT1 IFEQ STAT,1
  70. SA1 STIMEP PARAMETER BLOCK FOR CALLING OTIME
  71. RJ OTIME GET RTIME VALUE BEFORE CALL
  72. STAT1 ENDIF
  73.  
  74. SX1 XOSCCA
  75. RJ XTRACE
  76. SA1 TEMP
  77. SA1 X1
  78. DEBUG1 ELSE
  79.  
  80. STAT1 IFEQ STAT,1
  81. SX6 A1 SAVE ADDRESS OF PARAMETER BLOCK IN TEMP
  82. SA6 TEMP
  83. SA1 STIMEP PARAMETER BLOCK FOR CALLING OTIME
  84. RJ OTIME GET RTIME VALUE BEFORE CALL
  85. SA1 TEMP RESTORE ADDRESS OF PARAMETER BLOCK IN A1
  86. SA1 X1
  87. STAT1 ENDIF
  88.  
  89. DEBUG1 ENDIF
  90.  
  91. MX0 42
  92. MX3 54
  93. SB1 1
  94. BX6 X1
  95. SA6 SLIST PRESET TO NON-SF.LIST REQUEST
  96. SA6 FLIST ADDRESS OF FUNCTION LIST ENTRY
  97. SA1 X1 FUNCTION LIST ENTRY
  98. BX4 -X3*X1 FC OF FUNCTION LIST ENTRY
  99. BX6 X1 SAVE FIRST WORD OF FUNCTION LIST
  100. *
  101. OSC SX7 X4-SF.LIST CHECK IF SF.LIST REQUEST
  102. SA7 SLIST
  103. NZ X7,OSC1 GO ISSUE SCP CALL
  104.  
  105. * SF.LIST REQUEST, SET UP LIST ENTRIES
  106.  
  107. AX1 42
  108. SB2 X1 NO OF LIST ENTRIES
  109. LX1 30
  110. AX6 6
  111. BX6 -X0*X6
  112. BX6 X1+X6
  113. SA6 SLNTRY
  114.  
  115. * ISSUE SYSTEM CONTROL POINT CALL
  116.  
  117. OSC1 SA1 FLIST
  118. SFCALL X1,R
  119.  
  120. * CHECK FOR SCP REQUEST COMPLETION
  121.  
  122. OSC2 SA1 FLIST
  123. SA1 X1 FUNCTION LIST ENTRY
  124. LX1 59
  125. MI X1,OSC3 IF REQUEST COMPLETED
  126. SX1 =0
  127. RJ XRECALL ELSE WAIT
  128. EQ OSC2 LOOP TILL REQUEST IS COMPLETE
  129.  
  130. * SCP CALL COMPLETED
  131.  
  132. OSC3 SB1 1
  133.  
  134. STAT2 IFEQ STAT,1 STATISTICS ON
  135. SA1 ST$NSC INCREMENT NO OF CALLS TO OSCCALL
  136. SX2 B1 SET X2 TO 1
  137. IX6 X1+X2 INCREMENT THE NUMBER OF CALL
  138. SA6 ST$NSC
  139. STAT2 ENDIF
  140.  
  141. SA1 FLIST
  142. SA1 X1 FUNCTION LIST ENTRY
  143. MI X1,OSC4 IF SCP RETURNS ERROR
  144. *
  145. SA2 SLIST
  146. NZ X2,OSC9 IF RETURNING TO CALLER
  147. BX2 X1
  148. LX2 6
  149. AX2 6 GET RID OF ANY TRIVIAL ERRORS IN RC
  150. AX2 42
  151. ZR X2,OSC9 IF RETURNING TO CALLER
  152. *
  153. AX1 1
  154. LX6 X1,B1
  155. SA6 A1 CLEAR COMPLETION BIT
  156. EQ OSC1 REISSUE SCP REQUEST
  157. *
  158. * ERROR RETURNS ON SCP REQUEST
  159.  
  160. OSC4 MX3 6
  161. BX5 X1*X3 MASK OUT RC
  162. SA2 SLIST
  163. NZ X2,OSC7 IF NOT SF.LIST REQUEST
  164. LX5 6
  165. SX2 X5-40B CHECK IF ERROR IN LIST ENTRY
  166. LX5 54
  167. NZ X2,OSC7 IF RC NOT 40B
  168.  
  169. * SCAN LIST ENTRIES FOR NONZERO RC
  170.  
  171. SA2 SLNTRY
  172. SB3 X2 LIST ENTRY ADDRESS
  173. AX2 30
  174. SB2 X2 NO OF LIST ENTRIES
  175. OSC5 SA2 B3 FUNCTION LIST ENTRY
  176. BX5 X2*X3 MASK OUT RC
  177. MI X5,OSC6 IF RC ENCOUNTERED
  178. SB3 B3+B1
  179. SB2 B2-B1
  180. NZ B2,OSC5 IF MORE ENTRY TO CHECK
  181.  
  182. * REPLACE FUNCTION LIST RC WITH LIST ENTRY-S RC
  183.  
  184. OSC6 BX2 -X3*X1 CLEAR RC=40B
  185. BX6 X2+X5 REPLACE WITH LIST ENTRY-S RC
  186. SA6 A1
  187. *
  188. OSC7 MX3 3
  189. BX4 X3*X5
  190. LX3 57
  191. BX3 X3*X5
  192. LX4 9
  193. LX3 6
  194. BX3 X3+X4
  195. SX4 X3+3333B
  196. LX4 48
  197. MX3 12
  198. SA2 RCERR
  199. BX6 -X3*X2 CLEAR RC IN ERRMSG
  200. BX6 X4+X6
  201. SA6 A2 PUT RC IN ERRMSG
  202. LX5 6
  203. MX3 24
  204. SA1 FLIST
  205. SA1 X1+B1 FUNCTION LIST WORD WITH JOBID
  206. BX1 X1*X3
  207. SA2 IDERR
  208. BX7 -X3*X2 CLEAR JOBID IN ERRMSG
  209. BX7 X1+X7
  210. SA7 A2 PUT JOBID IN ERRMSG
  211. *
  212. SX4 X5-43B
  213. ZR X4,OSC8 IF RC=43B
  214. SX4 X5-44B
  215. IFEQ DEBUG,1,1
  216. ZR X4,OSC9 NOT DAYFILE, RETURN TO CALLER
  217. IFNE DEBUG,1,1
  218. ZR X4,OSC9 IF RC = 44B, RETURN
  219. SX4 X5-45B
  220. ZR X4,OSC8 IF RC=45B
  221. SX4 X5-63B
  222. NZ X4,OSC7.1 IF RETURN CODE IS NOT 63B
  223. SA1 HFCALL
  224. NZ X1,OSC8 IF RC=63B ON A SF.ENDT CALL FROM HAPFAIL
  225. EQ OSC8 DAYFILE THE MESSAGE THEN CONTINUE.
  226. OSC7.1 BSS 0
  227.  
  228. * IF RC NOT 43B, 44B, OR 45B
  229. * THEN SET PP HANG BIT, AND GO
  230. * INTO A TIGHT LOOP
  231.  
  232. SA1 MSGADR
  233. RJ OMSG ISSUE ERROR DAYFILE MESSAGE
  234. RJ OPPHANG
  235. HANG EQ HANG
  236. *
  237. OSC8 SA1 MSGADR
  238. RJ OMSG ISSUE ERROR DAYFILE MESSAGE
  239. OSC9 BSS 0
  240.  
  241. STAT2 IFEQ STAT,1
  242. SA1 ETIMEP PARAMETER BLOCK FOR CALLING OTIME
  243. RJ OTIME GET RTIME VALUE AFTER CALL
  244. SA1 STIME STARTING RTIME VALUE
  245. MX0 24D MASK FOR RTIME MILLESECOND VALUE
  246. BX1 -X0*X1 CLEAR SECONDS FIELD
  247. SA2 ETIME ENDING RTIME VALUE
  248. BX2 -X0*X2 CLEAR SECONDS FIELD
  249. IX6 X2-X1 ELAPSED TIME FOR SWAPIN
  250. SA1 ST$LSC LARGEST TIME SPENT IN OSCCALL
  251. IX5 X1-X6 DETERMINE IF LATEST TIME INTERVAL IS LARGER
  252. PL X5,OSC10 IF PREVIOUS TIME INTERVAL WAS LARGER
  253. SA6 ST$LSC SAVE NEW LARGEST TIME INTERVAL
  254. OSC10 SA3 ST$TSC PREVIOUS CUMULATIVE VALUE
  255. IX6 X3+X6 NEW CUMULATIVE VALUE
  256. SA6 ST$TSC
  257. STAT2 ENDIF
  258.  
  259. EQ OSCCALL EXIT
  260. SPACE 3
  261. FLIST BSSZ 1 ADDRESS OF FUNCTION LIST ENTRY
  262. SLIST BSSZ 1 ZERO IF SF.LIST REQUEST
  263. SLNTRY BSSZ 1 WORD 30/FP,30/SCPA
  264. XOSCCA DATA L*OSCCA*
  265. TEMP BSS 1
  266.  
  267. STAT3 IFEQ STAT,1
  268. EXT OTIME
  269. STIMEP VFD 60D/STIME
  270. ETIMEP VFD 60D/ETIME
  271. STIME BSS 1 START TIME FOR COMPARING SWAPIN TIME DELAY
  272. ETIME BSS 1 END TIME FOR COMPARING SWAPIN TIME DELAY
  273. STAT3 ENDIF
  274.  
  275. SF.READ EQU 10B
  276. SF.WRIT EQU 14B
  277. SF.TIME EQU 04B
  278. SF.ENDT EQU 06B
  279. SF.REGR EQU 02B
  280. SF.STAT EQU 12B
  281. SF.EXIT EQU 16B
  282. SF.SWPO EQU 24B
  283. SF.SWPI EQU 26B
  284. SF.SLTC EQU 30B
  285. SF.CLTC EQU 32B
  286. SF.LIST EQU 34B
  287. END
cdc/nos2.source/nam5871/osccall.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator