.NLIST TTM .TITLE R5CHEK .IDENT /GEN001/ .GLOBL CHEKOF .GLOBL BPARM ;BPARM GIVES TRACEBACK, ERROR AND OUTPUTS R0 ;THIS PROGRAM CHECKS PARAM LIST FORT TO SEE IF PROPER ; TRACEBACK WILL BE GENERATED ;CALLING SEQUENCE::: ; MOV #PARAM,R0 ; JSR PC R5CHEK ; IF THE #PARAM MATCHES THE LIST PASSED BY FORT ; A NORMAL RETURN IS EXECUTED, OTHERWISE ERROR MESSAGE & HANGS ; WHEN RETURN R5 HAS BEEN INCREMENTED TO POINT TO FIRST PARAM ; R5CHEK:: CMPB R0,(R5) ;COMPARE TO SEE IF CORRECT BNE BPARM ;WRONG ARGUMENTS TST (R5)+ MOV R5,-(SP) ;SAVE 1$: CMP (R5)+,#-1 ;CHECK FOR NULL ARGS BEQ BPARM SOB R0,1$ ;TILL NO MORE TO CHEK MOV (SP)+,R5 ;RESTORE TST ON ;DO WE CONTINUE TO CHEK BEQ OFF ;NO, TURN OFF RTS PC ;RETURN ON: .WORD -1 ;IF NON ZERO DO PARAM CHECK OFF: MOV (SP),R0 ;GET ADDRESS OF CALLER CMP -(R0),-(R0) ;ADDRESS OF CALL MOV COFF,(R0) ;ZAP IT CHECK NEVERMORE RTS PC ;RETURN COFF: CMP (PC)+,(R5)+ ;INCREMENT SP + R5 ;************************** FORTRAN ENTRY **************************** ; CHECKOF TURN S OFF PARAM CHECKING PERMENANTLY CHEKOF: CLR ON ;TURN CHECKING OFF RTS PC ;RETURN BPARM:: TRAP 209. ;INVALID ARGUMENT TRAP MOV #ERMES,-(SP) ;MESSAGE TO PRINT CALL STOP$ ;STOP & PRINT MESSAGE ERMES: .ASCIZ / *ERROR* BAD CALL TO RICE SUBROUTINE/ .END