.TITLE CDERRT .IDENT /V001/ ; ; AUTHOR: ; VICKY WHITE ; FERMI NATIONAL ACCELERATOR LABORATORY ; BATAVIA, IL 60510 ; ; UPDATE HISTORY: ; V01 - JUN2382 - VW - ORIGINAL VERSION ; ; ++ ; ; FUNCTION: ; ROUTINE TO RETURN A STANDARD CDPACK ERROR MESSAGE, GIVEN A SYSTEM ; SPECIFIC ERROR CODE ; CALLS ROUTINE CDERRN TO GET THE SYSTEM SPECIFIC STATUS VALUE ; TRANSLATED TO A CDPACK STANDARD ERROR NUMBER ; ; ------- ; ; CALLING SEQUENCE: ; ---------------- ; ; CALL CDERRT(STAT,TXTBUF,BUFLEN,TXTLEN) ; ; ; MACROS ; ------ ; .MCALL RT$RSX .MCALL ERR$DF,PUSH,POP RT$RSX ;DEFINE VERSION: RT-11 OR RSX-11M ERR$DF ;DEFINE ERROR CODES ; ; LOCAL MACRO: ; ----------- .MACRO ERRMSG,MAX $N = 0 .REPT MAX+1 MSGADD \$N $N = $N + 1 .ENDR .ENDM ; .MACRO MSGADD,$M ; GENERATE A TABLE OF ERROR MESSAGE ADDRESSES INDEXED BY ; STANDARD CDPACK ERROR NUMBERS .WORD E'$M .ENDM ; ; ; GLOBALS: ; ------- .GLOBL CDERRT ;ROUTINE ENTRY POINT .GLOBL CDERRN ;ROUTINE CALLED TO RETURN CDPACK ER. NO. .PAGE ; ; INPUTS TO ROUTINE ; ----------------- ; R5 IS THE ADDRESS OF A FORTRAN ARGUMENT LIST ; ; OUTPUTS ; ------- ; ERROR MESSAGE TEXT IS COPIED TO TXTBUF, LENGTH OF TEXT COPIED ; IS RETURNED IN VARIABLE TXTLEN ; ; ; TABLE OF ADDRESSES OF ERROR MESSAGES ; ------------------------------------ ; MAXMSG=30. ;NUMBER OF ERROR MESSAGES ; UNKNER: .WORD UNK ;FOR UNKNOWN ERROR (STANDARD ;NUMBER = -1) ERRTBL: ERRMSG MAXMSG ;DEFINE TABLE OF ADDRESSES ; ; TABLE OF ERROR MESSAGES ; ----------------------- ; E0: .ASCIZ /PENDING I O OPERATION/ E1: .ASCIZ /SUCCESSFUL OPERATION/ E2: .ASCIZ /CHANNEL NOT ASSIGNED TO COMMUNICATIONS DEVICE/ E3: .ASCIZ /CHANNEL CANNOT BE ASSIGNED TO COMMUN. DEV/ E4: .ASCIZ /MAX. NO. OF OPEN SESSIONS OR OPERATIONS EXCEEDED/ E5: .ASCIZ /COMMUNICATIONS DRIVER NOT RESIDENT/ E6: .ASCIZ /INVALID CHANNEL NUMBER/ E7: .ASCIZ /INVALID COMMUNICATION DEVICE OR UNIT/ E10: .ASCIZ /INVALID PTC/ E11: .ASCIZ /NO OPEN SESSION FOR THIS PTC/ E12: .ASCIZ /PTC ALREADY OWNED/ E13: .ASCIZ /NO RECEIVER FOR THIS PTC/ E14: .ASCIZ /ILLEGAL OR ZERO LENGTH BUFFER/ E15: .ASCIZ /MESSAGE REJECTED BY RECEIVER/ E16: .ASCIZ /TIMEOUT FROM DRIVER/ E17: .ASCIZ /FATAL HARDWARE ERROR ON DEVICE/ E20: .ASCIZ /NO MESSAGE TO RECEIVE/ E21: .ASCIZ /INCOMPLETE TRANSFER OF MESSAGE/ E22: .ASCIZ /TIMEOUT ON DRIVER REQUEST/ E23: .ASCIZ /DRIVER BUG CHECK/ E24: .ASCIZ /CDPACK BUG CHECK/ E25: .ASCIZ /DEVICE NOT DISCONNECTED/ E26: .ASCIZ /VECTOR FOR DEVICE IN USE/ E27: .ASCIZ /TRANSFERS PENDING / E30: .ASCIZ /MESSAGE BLOCK NOT ACTIVE/ E31: .ASCIZ /ALL TRANSFERS CANCELLED/ E32: .ASCIZ /LINK DOWN/ E33: .ASCIZ /BAD PARAMETER IN SUBROUTINE CALL/ E34: .ASCIZ /DATA TRANSFER ROUTINE ALREADY CALLED BEFORE CDASGN/ E35: .ASCIZ /RECEIVER END OF MESSAGE ERROR/ E36: .ASCIZ /SIGNAL NOT ACKNOWLEDGED/ ; UNK: .ASCIZ /UNKNOWN CDPACK ERROR/ ; .EVEN ARGLST: ;ARGUMENT LIST FOR CDERRN CALL NARGS: .WORD 2 .WORD STATUS .WORD ERRNO ; STATUS: .WORD ERRNO: .WORD ;TO RECEIVE STANDARD ERROR NUMBER ; .PAGE CDERRT:: PUSH ;SAVE SOME REGISTERS MOVB @2(R5),STATUS ;STATUS CODE MOV #ARGLST,R5 ;TO CALL CDERRN CALL CDERRN MOV ERRNO,R0 ;STANDARD ERROR NUMBER CMP R0,#MAXMSG ;VALID MESSAGE NUMBER? BLE 5$ MOV #-1,R0 ;ELSE RESET TO UNKNOWN ERROR 5$: ASL R0 ;CONVERT TO BYTE OFFSET INTO ADD #ERRTBL,R0 ; ERROR TABLE MOV (R0),R0 ;ADDRESS OF TEXT FOR THIS ERROR ; ; COPY INTO CALLERS BUFFER ; POP R5 MOV 4(R5),R1 ;ADDRESS OF CALLERS TEXT BUFFER MOV @6(R5),R2 ;MAX SIZE OF BUFFER (BYTES) CLR R3 ;FOR NUMBER OF BYTES IN MESSAGE 10$: MOVB (R0)+,(R1)+ ;COPY ONE BYTE BEQ 20$ ;ASCII NULL AT END OF TEXT INC R3 ;NO OF BYTES TRANSFERRED SOB R2,10$ ;UP TO MAX OF USERS BUFFER ; 20$: MOV R3,@10(R5) ;RETURN BYTE COUNT POP ;RESTORE REGISTERS RETURN .END