$title('UCERR.A38') ; ; ; ; Title: UCERR.A38 ; ; ; Date Written: August 1989 ; ; ; Abstract: ; ; This procedure replaces the iRMX III NUC COMPACT procedure ; rq$error. The procedures are identical except the ; UDI version tests the exception code and returns ; to the user if an unavoidable exception has occurred. ; This is necessary to allow programs to recover from ; such exceptions as FILE NOT FOUND or DEVICE NOT READY etc. ; ; ; Module Type: Necessary module to provide UDI support ; ; ; Calling sequence: ; ; mov cx,error_code ; mov dl,param_num ; CALL rqerror ; ; ; Calls: ; ; rq$signal$exception ; ; ; Inputs: ; ; Assumes cx contains error code and dl contains param number ; ; ; Outputs: ; ; Returns ax = 0ffffH and the above inputs ; ; name rqerror ; code segment er public ; extrn rqsignalexception : near rqerror proc near public rqerror ; ; this code added to allow UDI to retain control ; on unavoidable errors <8000h ; or cx,cx jns skip_rqerror ; ignore any exception < 8000h ; ; sub esp, 4 ; save space for local exception mov ebx,esp ; ebx <- offset of local exception push ecx ; load error code push edx ; load param number xor eax,eax ; zero eax push eax ; load stack pointer causes return to here push eax ; reserved param push eax ; NPX status push ss ; push ebx ; ; call rqsignalexception add esp, 4 ; deallocate local exception skip_rqerror: mov ax,0ffffh ; ax = error ret rqerror endp code ends end