cdc:nos2.source:nam5871:osccall
Table of Contents
OSCCALL
Table Of Contents
Source Code
- OSCCALL.txt
- *DECK OSCCALL
- IDENT OSCCALL
- ENTRY OSCCALL
- EXT OPPHANG
- EXT OMSG
- EXT OTIME
- EXT RDUMP
- EXT XRECALL
- EXT XTRACE
- SST
- *#
- *1DC OSCCALL
- *
- * 1. PROC NAME AUTHOR DATE
- * OSCCALL E. GEE 77/08/03
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * THIS ROUTINE IS RESPONSIBLE FOR MAKING AN SCP CALL FOR NIP.
- *
- * 3. METHOD USED.
- * CHECK IF SF.LIST CALL
- * ISSUE SCP CALL
- * LOOP UNTIL COMPLETION OF CALL
- * IF SF.LIST CALL NOT COMPLETE, REISSUE SCP CALL
- * CHECK FOR NONZERO RC
- * GO INTO A TIGHT LOOP IF FATAL RC
- *
- * 4. ENTRY PARAMETERS.
- * A1 = ADDR OF THE SFCALL PARAMETER WORDS
- *
- * 5. EXIT PARAMETERS. NONE
- *
- * 6. COMDECKS CALLED.
- * DUMPFLG INPARU MACDEF
- * STATTAB
- *
- * 7. ROUTINES CALLED.
- * OPPHANG HANG PPU
- * OMSG ISSUE DAYFILE MESSAGE
- * OTIME GET SYSTEM RTIME
- * RDUMP DUMP NIP-S FIELD LENGTH
- * SFCALL SYSTEM-CONTROL-POINT MACRO
- * XRECALL RECALL
- * XTRACE TRACES CALLS
- *
- * 8. DAYFILE MESSAGES.
- * * NIP/SCP ERROR RC = XXB,JOBID=XXXX*
- *
- *#
- *CALL MACDEF
- *CALL INPARU
- ERRMSG DIS ,* NIP/SCP ERROR RC = XXB,JOBID=XXXX*
- MSGADR VFD 42/0,18/ERRMSG
- BSSZ 1
- RCERR EQU ERRMSG+2
- IDERR EQU ERRMSG+3
- *CALL DUMPFLG
- STAT1 IFEQ STAT,1
- *CALL STATTAB
- STAT1 ENDIF
- SPACE 2
- OSCCALL BSSZ 1 ENTRY/EXIT
- DEBUG1 IFEQ DEBUG,1
- SX6 A1
- SA6 TEMP
- STAT1 IFEQ STAT,1
- SA1 STIMEP PARAMETER BLOCK FOR CALLING OTIME
- RJ OTIME GET RTIME VALUE BEFORE CALL
- STAT1 ENDIF
- SX1 XOSCCA
- RJ XTRACE
- SA1 TEMP
- SA1 X1
- DEBUG1 ELSE
- STAT1 IFEQ STAT,1
- SX6 A1 SAVE ADDRESS OF PARAMETER BLOCK IN TEMP
- SA6 TEMP
- SA1 STIMEP PARAMETER BLOCK FOR CALLING OTIME
- RJ OTIME GET RTIME VALUE BEFORE CALL
- SA1 TEMP RESTORE ADDRESS OF PARAMETER BLOCK IN A1
- SA1 X1
- STAT1 ENDIF
- DEBUG1 ENDIF
- MX0 42
- MX3 54
- SB1 1
- BX6 X1
- SA6 SLIST PRESET TO NON-SF.LIST REQUEST
- SA6 FLIST ADDRESS OF FUNCTION LIST ENTRY
- SA1 X1 FUNCTION LIST ENTRY
- BX4 -X3*X1 FC OF FUNCTION LIST ENTRY
- BX6 X1 SAVE FIRST WORD OF FUNCTION LIST
- *
- OSC SX7 X4-SF.LIST CHECK IF SF.LIST REQUEST
- SA7 SLIST
- NZ X7,OSC1 GO ISSUE SCP CALL
- * SF.LIST REQUEST, SET UP LIST ENTRIES
- AX1 42
- SB2 X1 NO OF LIST ENTRIES
- LX1 30
- AX6 6
- BX6 -X0*X6
- BX6 X1+X6
- SA6 SLNTRY
- * ISSUE SYSTEM CONTROL POINT CALL
- OSC1 SA1 FLIST
- SFCALL X1,R
- * CHECK FOR SCP REQUEST COMPLETION
- OSC2 SA1 FLIST
- SA1 X1 FUNCTION LIST ENTRY
- LX1 59
- MI X1,OSC3 IF REQUEST COMPLETED
- SX1 =0
- RJ XRECALL ELSE WAIT
- EQ OSC2 LOOP TILL REQUEST IS COMPLETE
- * SCP CALL COMPLETED
- OSC3 SB1 1
- STAT2 IFEQ STAT,1 STATISTICS ON
- SA1 ST$NSC INCREMENT NO OF CALLS TO OSCCALL
- SX2 B1 SET X2 TO 1
- IX6 X1+X2 INCREMENT THE NUMBER OF CALL
- SA6 ST$NSC
- STAT2 ENDIF
- SA1 FLIST
- SA1 X1 FUNCTION LIST ENTRY
- MI X1,OSC4 IF SCP RETURNS ERROR
- *
- SA2 SLIST
- NZ X2,OSC9 IF RETURNING TO CALLER
- BX2 X1
- LX2 6
- AX2 6 GET RID OF ANY TRIVIAL ERRORS IN RC
- AX2 42
- ZR X2,OSC9 IF RETURNING TO CALLER
- *
- AX1 1
- LX6 X1,B1
- SA6 A1 CLEAR COMPLETION BIT
- EQ OSC1 REISSUE SCP REQUEST
- *
- * ERROR RETURNS ON SCP REQUEST
- OSC4 MX3 6
- BX5 X1*X3 MASK OUT RC
- SA2 SLIST
- NZ X2,OSC7 IF NOT SF.LIST REQUEST
- LX5 6
- SX2 X5-40B CHECK IF ERROR IN LIST ENTRY
- LX5 54
- NZ X2,OSC7 IF RC NOT 40B
- * SCAN LIST ENTRIES FOR NONZERO RC
- SA2 SLNTRY
- SB3 X2 LIST ENTRY ADDRESS
- AX2 30
- SB2 X2 NO OF LIST ENTRIES
- OSC5 SA2 B3 FUNCTION LIST ENTRY
- BX5 X2*X3 MASK OUT RC
- MI X5,OSC6 IF RC ENCOUNTERED
- SB3 B3+B1
- SB2 B2-B1
- NZ B2,OSC5 IF MORE ENTRY TO CHECK
- * REPLACE FUNCTION LIST RC WITH LIST ENTRY-S RC
- OSC6 BX2 -X3*X1 CLEAR RC=40B
- BX6 X2+X5 REPLACE WITH LIST ENTRY-S RC
- SA6 A1
- *
- OSC7 MX3 3
- BX4 X3*X5
- LX3 57
- BX3 X3*X5
- LX4 9
- LX3 6
- BX3 X3+X4
- SX4 X3+3333B
- LX4 48
- MX3 12
- SA2 RCERR
- BX6 -X3*X2 CLEAR RC IN ERRMSG
- BX6 X4+X6
- SA6 A2 PUT RC IN ERRMSG
- LX5 6
- MX3 24
- SA1 FLIST
- SA1 X1+B1 FUNCTION LIST WORD WITH JOBID
- BX1 X1*X3
- SA2 IDERR
- BX7 -X3*X2 CLEAR JOBID IN ERRMSG
- BX7 X1+X7
- SA7 A2 PUT JOBID IN ERRMSG
- *
- SX4 X5-43B
- ZR X4,OSC8 IF RC=43B
- SX4 X5-44B
- IFEQ DEBUG,1,1
- ZR X4,OSC9 NOT DAYFILE, RETURN TO CALLER
- IFNE DEBUG,1,1
- ZR X4,OSC9 IF RC = 44B, RETURN
- SX4 X5-45B
- ZR X4,OSC8 IF RC=45B
- SX4 X5-63B
- NZ X4,OSC7.1 IF RETURN CODE IS NOT 63B
- SA1 HFCALL
- NZ X1,OSC8 IF RC=63B ON A SF.ENDT CALL FROM HAPFAIL
- EQ OSC8 DAYFILE THE MESSAGE THEN CONTINUE.
- OSC7.1 BSS 0
- * IF RC NOT 43B, 44B, OR 45B
- * THEN SET PP HANG BIT, AND GO
- * INTO A TIGHT LOOP
- SA1 MSGADR
- RJ OMSG ISSUE ERROR DAYFILE MESSAGE
- RJ OPPHANG
- HANG EQ HANG
- *
- OSC8 SA1 MSGADR
- RJ OMSG ISSUE ERROR DAYFILE MESSAGE
- OSC9 BSS 0
- STAT2 IFEQ STAT,1
- SA1 ETIMEP PARAMETER BLOCK FOR CALLING OTIME
- RJ OTIME GET RTIME VALUE AFTER CALL
- SA1 STIME STARTING RTIME VALUE
- MX0 24D MASK FOR RTIME MILLESECOND VALUE
- BX1 -X0*X1 CLEAR SECONDS FIELD
- SA2 ETIME ENDING RTIME VALUE
- BX2 -X0*X2 CLEAR SECONDS FIELD
- IX6 X2-X1 ELAPSED TIME FOR SWAPIN
- SA1 ST$LSC LARGEST TIME SPENT IN OSCCALL
- IX5 X1-X6 DETERMINE IF LATEST TIME INTERVAL IS LARGER
- PL X5,OSC10 IF PREVIOUS TIME INTERVAL WAS LARGER
- SA6 ST$LSC SAVE NEW LARGEST TIME INTERVAL
- OSC10 SA3 ST$TSC PREVIOUS CUMULATIVE VALUE
- IX6 X3+X6 NEW CUMULATIVE VALUE
- SA6 ST$TSC
- STAT2 ENDIF
- EQ OSCCALL EXIT
- SPACE 3
- FLIST BSSZ 1 ADDRESS OF FUNCTION LIST ENTRY
- SLIST BSSZ 1 ZERO IF SF.LIST REQUEST
- SLNTRY BSSZ 1 WORD 30/FP,30/SCPA
- XOSCCA DATA L*OSCCA*
- TEMP BSS 1
- STAT3 IFEQ STAT,1
- EXT OTIME
- STIMEP VFD 60D/STIME
- ETIMEP VFD 60D/ETIME
- STIME BSS 1 START TIME FOR COMPARING SWAPIN TIME DELAY
- ETIME BSS 1 END TIME FOR COMPARING SWAPIN TIME DELAY
- STAT3 ENDIF
- SF.READ EQU 10B
- SF.WRIT EQU 14B
- SF.TIME EQU 04B
- SF.ENDT EQU 06B
- SF.REGR EQU 02B
- SF.STAT EQU 12B
- SF.EXIT EQU 16B
- SF.SWPO EQU 24B
- SF.SWPI EQU 26B
- SF.SLTC EQU 30B
- SF.CLTC EQU 32B
- SF.LIST EQU 34B
- END
cdc/nos2.source/nam5871/osccall.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator