.TITLE MCLR CLEARS A MATRIX .IDENT /1.0/ ; 08/15/79 ;+ ++EXTSPC>> ;.NAME MCLR ;.INDEX M3CLR ;.INDEX MPCLR ;.INDEX MCLRD ;.INDEX M3CLRD ;.INDEX MPCLRD ;.TITLE SUBROUTINE MCLR ; ; CALL MCLR (C,M,N) ; ; CALL M3CLR (C) ; ; CALL MPCLR (C,M,N,NRC) ; ; CALL MCLRD (C,M,N) ; ; CALL M3CLRD (C) ; ; CALL MPCLRD (C,M,N,NRC) ; ; ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 ; ; FUNCTION: ; ; CLEARS A MATRIX ; ; C = 0 ; ; ; LANGUAGE: MACRO-11 ; ; ; ARGUMENTS: ; ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) ; M,N = UPPER M X N SUBMATRX IS USED ; NRC = NUMBER OF ROWS IN C ; ; ; COMMONS: ; ; (NONE) ; ; ; GENERAL DESCRIPTION: ; ; ALL INTEGER ARGUMENTS EXCEPT C. ; ; ; SINGLE PRECISION - MCLR FOR MXN MATRICES ; M3CLR FOR 3X3 MATRICES ; MPCLR FOR UPPER MXN SUBMATRICES ; ; DOUBLE PRECISION - MCLRD FOR MXN MATRICES ; M3CLRD FOR 3X3 MATRICES ; MPCLRD FOR UPPER MXN SUBMATRICES ; ; ; SET N=1 FOR VECTOR CLEAR. ; ; ; PERIPHERAL INPUT/OUTPUT: ; ; (NONE) ; ; ; LOGICAL UNIT USAGE: ; ; (NONE) ; ; ; EXTERNAL ROUTINES CALLED: ; ; NAM$ ; $BOMB ; ;- --EXTSPC>> ; ; WRITTEN BY: ; ; DENIS MAHONY AND SAM MILLER 08/15/79 ; ; ; MODIFIED BY: ; ; ********** **DATE** ; **DETAIL** ; ;- --EXTSPC>> .PAGE .GLOBL MCLR, M3CLR, MPCLR .ENABL LSB ; F0=R0 ;DEFINE FLOATING REGISTER 0 M3CLR: CMP #1,(R5)+ ;CHECK FOR 1 ARGUMENTS BNE BOMB3 ;BOMB IF # OF ARGS. NE 1 MOV #3,R0 ;R0=M=3 MOV R0,R1 ;R1=N=3 BR 20$ MPCLR: CMP #4,(R5)+ ;CHECK FOR 4 ARGUMENTS BNE BOMBP ;BOMB IF # OF ARGS. NE 4 MOV @2(R5),R0 ;R0=M MOV @4(R5),R1 ;R1=N MOV R0,R2 ;R2=M MOV @6(R5),R3 ;GET NRC SUB R0,R3 ;NRC-M ASH #2,R3 ;R3=4*(NRC-M) BR 40$ MCLR: CMP #3,(R5)+ ;CHECK FOR 3 ARGUMENTS BNE BOMB ;BOMB IF # OF ARGS. NE 3 MOV @2(R5),R0 ;R0=M MOV @4(R5),R1 ;R1=N 20$: MOV R0,R2 ;R2=M MOV #0,R3 ;R3=4*(NRC-M)=0 40$: MOV (R5),R4 ;R4=ADDRESS OF C SETF ;SET FLOATING MODE CLRF F0 ;F0=0 BR 60$ ;LOOP TO CLEAR MATRIX 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C MOV R2,R0 ;RESET M 60$: STF F0,(R4)+ ;C(I)=0 SOB R0,60$ ;DONE WITH THIS COLUMN? SOB R1,50$ ;DONE WITH ALL COLUMNS? RTS PC ;RETURN BOMBP: MOV #46720,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #51703,R4 ;MOVE 1ST HALF OF NAME TO R4 BR 70$ BOMB3: MOV #46720,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #53153,R4 ;MOVE 1ST HALF OF NAME TO R4 BR 70$ BOMB: MOV #70200,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #50704,R4 ;MOVE 1ST HALF OF NAME TO R4 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST .END