CROSS CROSS PRODUCT OF TWO 3-V MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE CROSS CROSS PRODUCT OF TWO 3-VECTORS 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME CROSS 5 ;.INDEX CROSSD 6 ;.TITLE SUBROUTINE CROSS 7 ; 8 ; CALL CROSS (C,A,B) 9 ; 10 ; CALL CROSSD (C,A,B) 11 ; 12 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 13 ; 14 ; FUNCTION: 15 ; 16 ; CROSS PRODUCT OF TWO 3-VECTORS 17 ; 18 ; C = A X B 19 ; 20 ; 21 ; LANGUAGE: MACRO-11 22 ; 23 ; 24 ; ARGUMENTS: 25 ; 26 ; C = OUTPUT 3-VECTOR 27 ; A,B = INPUT 3-VECTORS 28 ; 29 ; 30 ; COMMONS: 31 ; 32 ; (NONE) 33 ; 34 ; 35 ; GENERAL DESCRIPTION: 36 ; 37 ; ALL REAL ARGUMENTS. 38 ; 39 ; 40 ; SINGLE PRECISION - CROSS FOR 3-VECTORS 41 ; 42 ; DOUBLE PRECISION - CROSSD FOR 3-VECTORS 43 ; 44 ; 45 ; C CAN NOT OVERLAP A OR B. 46 ; 47 ; 48 ; PERIPHERAL INPUT/OUTPUT: 49 ; 50 ; (NONE) 51 ; 52 ; 53 ; LOGICAL UNIT USAGE: 54 ; 55 ; (NONE) 56 ; 57 ; CROSS CROSS PRODUCT OF TWO 3-V MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 ; EXTERNAL ROUTINES CALLED: 59 ; 60 ; NAM$ 61 ; $BOMB 62 ; 63 ;- --EXTSPC>> 64 ; 65 ; WRITTEN BY: 66 ; 67 ; DENIS MAHONY AND SAM MILLER 08/15/79 68 ; 69 ; 70 ; MODIFIED BY: 71 ; 72 ; ********** **DATE** 73 ; **DETAIL** 74 ; 75 ;- --EXTSPC>> CROSS CROSS PRODUCT OF TWO 3-V MACRO M1110 16-AUG-79 18:16 PAGE 2 77 .GLOBL CROSS 78 ; 79 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 80 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 81 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 82 000000 CROSS: 83 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 84 000004 001045 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 85 000006 012502 MOV (R5)+,R2 ;R2=ADDRESS OF C 86 000010 012500 MOV (R5)+,R0 ;R0=ADDRESS OF A 87 000012 012501 MOV (R5)+,R1 ;R1=ADDRESS OF B 88 000014 170001 SETF ;SET FLOATING MODE 89 000016 172460 000004 LDF 4(R0),F0 ;A(2) 90 000022 172661 000010 LDF 8.(R1),F2 ;B(3) 91 000026 171200 MULF F0,F2 ;F2=A(2)*B(3) 92 000030 172460 000010 LDF 8.(R0),F0 ;A(3) 93 000034 172561 000004 LDF 4(R1),F1 ;B(2) 94 000040 171100 MULF F0,F1 ;A(3)*B(2) 95 000042 173201 SUBF F1,F2 ;A(3)*B(2) - A(2)*B(3) 96 000044 174222 STF F2,(R2)+ ;C(1) = " 97 000046 172460 000010 LDF 8.(R0),F0 ;A(3) 98 000052 172611 LDF (R1),F2 ;B(1) 99 000054 171200 MULF F0,F2 ;A(3)*B(1) 100 000056 172410 LDF (R0),F0 ;A(1) 101 000060 172561 000010 LDF 8.(R1),F1 ;B(3) 102 000064 171100 MULF F0,F1 ;A(1)*B(3) 103 000066 173201 SUBF F1,F2 ;A(3)*B(1) - A(1)*B(3) 104 000070 174222 STF F2,(R2)+ ;C(2) = " 105 000072 172410 LDF (R0),F0 ;A(1) 106 000074 172661 000004 LDF 4(R1),F2 ;B(2) 107 000100 171200 MULF F0,F2 ;A(1)*B(2) 108 000102 172460 000004 LDF 4(R0),F0 ;A(2) 109 000106 172511 LDF (R1),F1 ;B(1) 110 000110 171100 MULF F0,F1 ;A(2)*B(1) 111 000112 173201 SUBF F1,F2 ;A(1)*B(2)-A(2)*B(1) 112 000114 174212 STF F2,(R2) ;C(3) = " 113 000116 000207 RTS PC ;RETURN 114 000120 012746 074670 BOMB: MOV #74670,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 115 000124 012704 012637 MOV #12637,R4 ;MOVE 1ST HALF OF NAME TO R4 116 000130 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 117 000134 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 118 000001 .END CROSS CROSS PRODUCT OF TWO 3-V MACRO M1110 16-AUG-79 18:16 PAGE 2-1 SYMBOL TABLE BOMB 000120R F0 =%000000 F2 =%000002 NAM$ = ****** GX $BOMB = ****** GX CROSS 000000RG F1 =%000001 . ABS. 000000 000 000140 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 69 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 CROSS,LS:CROSS=CROSS CROSSD CROSS PRODUCT OF TWO 3- MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE CROSSD CROSS PRODUCT OF TWO 3-VECTORS (DOUBLE PRE.) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL CROSSD 4 ; 5 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 6 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 7 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 8 000000 CROSSD: 9 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 10 000004 001045 BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT 11 000006 012502 MOV (R5)+,R2 ;R2=ADDRESS OF C 12 000010 012500 MOV (R5)+,R0 ;R0=ADDRESS OF A 13 000012 012501 MOV (R5)+,R1 ;R1=ADDRESS OF B 14 000014 170011 SETD ;SET FLOATING DOUBLE MODE 15 000016 172460 000010 LDD 8.(R0),F0 ;A(2) 16 000022 172661 000020 LDD 16.(R1),F2 ;B(3) 17 000026 171200 MULD F0,F2 ;F2=A(2)*B(3) 18 000030 172460 000020 LDD 16.(R0),F0 ;A(3) 19 000034 172561 000010 LDD 8.(R1),F1 ;B(2) 20 000040 171100 MULD F0,F1 ;A(3)*B(2) 21 000042 173201 SUBD F1,F2 ;A(3)*B(2) - A(2)*B(3) 22 000044 174222 STD F2,(R2)+ ;C(1) = " 23 000046 172460 000020 LDD 16.(R0),F0 ;A(3) 24 000052 172611 LDD (R1),F2 ;B(1) 25 000054 171200 MULD F0,F2 ;A(3)*B(1) 26 000056 172410 LDD (R0),F0 ;A(1) 27 000060 172561 000020 LDD 16.(R1),F1 ;B(3) 28 000064 171100 MULD F0,F1 ;A(1)*B(3) 29 000066 173201 SUBD F1,F2 ;A(3)*B(1) - A(1)*B(3) 30 000070 174222 STD F2,(R2)+ ;C(2) = " 31 000072 172410 LDD (R0),F0 ;A(1) 32 000074 172661 000010 LDD 8.(R1),F2 ;B(2) 33 000100 171200 MULD F0,F2 ;A(1)*B(2) 34 000102 172460 000010 LDD 8.(R0),F0 ;A(2) 35 000106 172511 LDD (R1),F1 ;B(1) 36 000110 171100 MULD F0,F1 ;A(2)*B(1) 37 000112 173201 SUBD F1,F2 ;A(1)*B(2)-A(2)*B(1) 38 000114 174212 STD F2,(R2) ;C(3) = " 39 000116 000207 RTS PC ;RETURN 40 000120 012746 074674 BOMBD: MOV #74674,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 41 000124 012704 012637 MOV #12637,R4 ;MOVE 1ST HALF OF NAME TO R4 42 000130 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 43 000134 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 44 000001 .END CROSSD CROSS PRODUCT OF TWO 3- MACRO M1110 16-AUG-79 18:16 PAGE 1-1 SYMBOL TABLE BOMBD 000120R F0 =%000000 F2 =%000002 NAM$ = ****** GX $BOMB = ****** GX CROSSD 000000RG F1 =%000001 . ABS. 000000 000 000140 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 69 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 CROSSD,LS:CROSSD=CROSSD DOT DOT PRODUCT OF TWO VECTORS MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE DOT DOT PRODUCT OF TWO VECTORS 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME DOT 5 ;INDEX DOTD 6 ;.TITLE SUBROUTINE DOT 7 ; 8 ; CALL DOT (C,A,B,N) 9 ; 10 ; CALL DOTD (C,A,B,N) 11 ; 12 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 13 ; 14 ; FUNCTION: 15 ; 16 ; DOT PRODUCT OF 2 VECTORS 17 ; 18 ; C = SUM OF [A(I)*B(I)] FOR 1<=I<=N 19 ; 20 ; 21 ; LANGUAGE: MACRO-11 22 ; 23 ; 24 ; ARGUMENTS: 25 ; 26 ; C = OUTPUT N-VECTOR 27 ; A,B = INPUT N-VECTORS 28 ; N = VECTOR DIMENSION 29 ; 30 ; 31 ; COMMONS: 32 ; 33 ; (NONE) 34 ; 35 ; 36 ; GENERAL DESCRIPTION: 37 ; 38 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 39 ; 40 ; 41 ; SINGLE PRECISION - DOT FOR N-VECTORS 42 ; 43 ; DOUBLE PRECISION - DOTD FOR N-VECTORS 44 ; 45 ; 46 ; NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY 47 ; ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION 48 ; 49 ; 50 ; PERIPHERAL INPUT/OUTPUT: 51 ; 52 ; (NONE) 53 ; 54 ; 55 ; LOGICAL UNIT USAGE: 56 ; 57 ; (NONE) DOT DOT PRODUCT OF TWO VECTORS MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 ; 59 ; 60 ; EXTERNAL ROUTINES CALLED: 61 ; 62 ; NAM$ 63 ; $BOMB 64 ; 65 ;- --EXTSPC>> 66 ; 67 ; WRITTEN BY: 68 ; 69 ; DENIS MAHONY AND SAM MILLER 08/15/79 70 ; 71 ; 72 ; MODIFIED BY: 73 ; 74 ; ********** **DATE** 75 ; **DETAIL** 76 ; 77 ;- --EXTSPC>> DOT DOT PRODUCT OF TWO VECTORS MACRO M1110 16-AUG-79 18:16 PAGE 2 79 .GLOBL DOT 80 .ENABL LSB 81 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 82 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 83 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 84 000000 DOT: 85 000000 022725 000004 CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS 86 000004 001016 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 87 000006 012503 MOV (R5)+,R3 ;R3=ADDRESS OF C 88 000010 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 89 000012 012501 MOV (R5)+,R1 ;R1=ADDRESS OF B 90 000014 117502 000000 MOVB @(R5),R2 ;R2=N (LOOP COUNT) 91 000020 170011 SETD 92 000022 170402 CLRD F2 ;F2=0=SUM REGISTER 93 000024 177424 10$: LDCFD (R4)+,F0 ;GET A(I) 94 000026 177521 LDCFD (R1)+,F1 ;GET B(I) 95 000030 171001 MULD F1,F0 ;F0=A(I)*B(I) 96 000032 172200 ADDD F0,F2 ;ADD CURRENT PRODUCT INTO SUM REGISTER 97 000034 077205 SOB R2,10$ ;DONE? 98 000036 176213 STCDF F2,(R3) ;STORE SUM INTO C 99 000040 000207 RTS PC ;DONE. SO RETURN. 100 000042 012746 000000 BOMB: MOV #0,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 101 000046 012704 015554 MOV #15554,R4 ;MOVE 1ST HALF OF NAME TO R4 102 000052 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 103 000056 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 104 000001 .END DOT DOT PRODUCT OF TWO VECTORS MACRO M1110 16-AUG-79 18:16 PAGE 2-1 SYMBOL TABLE BOMB 000042R F0 =%000000 F2 =%000002 NAM$ = ****** GX $BOMB = ****** GX DOT 000000RG F1 =%000001 . ABS. 000000 000 000062 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 74 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 DOT,LS:DOT=DOT DOTD DOT PRODUCT OF TWO VECTORS MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE DOTD DOT PRODUCT OF TWO VECTORS (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL DOTD 4 .ENABL LSB 5 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 6 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 7 000000 DOTD: 8 000000 022725 000004 CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS 9 000004 001015 BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT 10 000006 012503 MOV (R5)+,R3 ;R3=ADDRESS OF C 11 000010 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 12 000012 012501 MOV (R5)+,R1 ;R1=ADDRESS OF B 13 000014 017502 000000 MOV @(R5),R2 ;R2=N (LOOP COUNT) 14 000020 170011 SETD 15 000022 170401 CLRD F1 ;F1=0 16 000024 172424 10$: LDD (R4)+,F0 ;GET A(I) 17 000026 171021 MULD (R1)+,F0 ;F0=A(I)*B(I) 18 000030 172100 ADDD F0,F1 ;ADD CURRENT PRODUCT INTO SUM REGISTER 19 000032 077204 SOB R2,10$ ;DONE? 20 000034 174113 STD F1,(R3) ;STORE SUM INTO C 21 000036 000207 RTS PC ;DONE. SO RETURN. 22 000040 012746 014400 BOMBD: MOV #14400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 23 000044 012704 015554 MOV #15554,R4 ;MOVE 1ST HALF OF NAME TO R4 24 000050 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 25 000054 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 26 000001 .END DOTD DOT PRODUCT OF TWO VECTORS MACRO M1110 16-AUG-79 18:16 PAGE 1-1 SYMBOL TABLE BOMBD 000040R F0 =%000000 F1 =%000001 NAM$ = ****** GX $BOMB = ****** GX DOTD 000000RG . ABS. 000000 000 000060 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 69 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:01 DOTD,LS:DOTD=DOTD IDENT FORMS AN IDENTITY MATRIX MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE IDENT FORMS AN IDENTITY MATRIX 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME IDENT 5 ;.INDEX IDENTD 6 ;.TITLE SUBROUTINE IDENT 7 ; 8 ; CALL IDENT (C,M,NRC) 9 ; 10 ; CALL IDENTD (C,M,NRC) 11 ; 12 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 13 ; 14 ; FUNCTION: 15 ; 16 ; C IS SET TO THE IDENTITY MATRIX 17 ; 18 ; 19 ; LANGUAGE: MACRO-11 20 ; 21 ; 22 ; ARGUMENTS: 23 ; 24 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X M SUBMATRIX) 25 ; M = NUMBER OF DIAGONAL ELEMENTS TO SET = 1.0 26 ; NRC = NUMBER OF ROWS IN C 27 ; 28 ; 29 ; COMMONS: 30 ; 31 ; (NONE) 32 ; 33 ; 34 ; GENERAL DESCRIPTION: 35 ; 36 ; ALL INTEGER ARGUMENTS EXCEPT REAL C. 37 ; 38 ; SINGLE PRECISION - IDENT 39 ; 40 ; DOUBLE PRECISION - IDENTD 41 ; 42 ; 43 ; 44 ; PERIPHERAL INPUT/OUTPUT: 45 ; 46 ; (NONE) 47 ; 48 ; 49 ; LOGICAL UNIT USAGE: 50 ; 51 ; (NONE) 52 ; 53 ; 54 ; EXTERNAL ROUTINES CALLED: 55 ; 56 ; NAM$ 57 ; $BOMB IDENT FORMS AN IDENTITY MATRIX MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 ; 59 ;- --EXTSPC>> 60 ; 61 ; WRITTEN BY: 62 ; 63 ; DENIS MAHONY AND SAM MILLER 08/15/79 64 ; 65 ; 66 ; MODIFIED BY: 67 ; 68 ; ********** **DATE** 69 ; **DETAIL** 70 ; 71 ;- --EXTSPC>> IDENT FORMS AN IDENTITY MATRIX MACRO M1110 16-AUG-79 18:16 PAGE 2 73 .GLOBL IDENT 74 .ENABL LSB 75 ; 76 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 77 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 78 000000 IDENT: 79 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 80 000004 001026 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 81 000006 012500 MOV (R5)+,R0 ;R0=ADDRESS OF C 82 000010 013501 MOV @(R5)+,R1 ;R1=N 83 000012 017502 000000 MOV @(R5),R2 ;R2=NRC 84 000016 010203 MOV R2,R3 ;R3=NRC 85 000020 010204 MOV R2,R4 ;NRC 86 000022 062704 000001 ADD #1,R4 ;NRC+1 87 000026 072427 000002 ASH #2,R4 ;R4=4*(NRC+1) - OFFSET FOR DIAGONAL ELEMENTS 88 000032 010005 MOV R0,R5 ;R5=(C) (NEXT ELEMENT TO SET =1) 89 000034 170001 SETF 90 000036 170400 CLRF F0 ;F0=0 91 000040 172527 040200 LDF #1.,F1 ;F1=1. 92 ;LOOP TO 'IDENTIZE' MATRIX 93 000044 174020 10$: STF F0,(R0)+ ;C(I,J)=0 94 000046 077202 SOB R2,10$ ;DONE WITH THIS COLUMN? 95 000050 174115 STF F1,(R5) ;SET DIAGONAL ELEMENT = 1. 96 000052 060405 ADD R4,R5 ;SET NEXT DIAGONAL ELEMENT 97 000054 010302 MOV R3,R2 ;RESET NRC 98 000056 077106 SOB R1,10$ ;DONE WITH ALL COLUMNS? 99 000060 000207 RTS PC ;RETURN 100 000062 012746 055240 BOMB: MOV #55240,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 101 000066 012704 034345 MOV #34345,R4 ;MOVE 1ST HALF OF NAME TO R4 102 000072 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 103 000076 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 104 000001 .END IDENT FORMS AN IDENTITY MATRIX MACRO M1110 16-AUG-79 18:16 PAGE 2-1 SYMBOL TABLE BOMB 000062R F1 =%000001 IDENT 000000RG NAM$ = ****** GX $BOMB = ****** GX F0 =%000000 . ABS. 000000 000 000102 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 69 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 IDENT,LS:IDENT=IDENT IDENTD FORMS AN IDENTITY MATRI MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE IDENTD FORMS AN IDENTITY MATRIX (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL IDENTD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 IDENTD: 9 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 10 000004 001026 BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT 11 000006 012500 MOV (R5)+,R0 ;R0=ADDRESS OF C 12 000010 013501 MOV @(R5)+,R1 ;R1=N 13 000012 017502 000000 MOV @(R5),R2 ;R2=NRC 14 000016 010203 MOV R2,R3 ;R3=NRC 15 000020 010204 MOV R2,R4 ;NRC 16 000022 062704 000001 ADD #1,R4 ;NRC+1 17 000026 072427 000003 ASH #3,R4 ;R4=8*(NRC+1) - OFFSET FOR DIAGONAL ELEMENTS 18 000032 010005 MOV R0,R5 ;R5=(C) (NEXT ELEMENT TO SET =1) 19 000034 170011 SETD ;SET FLOATING DOUBLE MODE 20 000036 170400 CLRD F0 ;F0=0 21 000040 172527 040200 LDD #1.,F1 ;F1=1. 22 ;LOOP TO 'IDENTIZE' MATRIX 23 000044 174020 10$: STD F0,(R0)+ ;C(I,J)=0 24 000046 077202 SOB R2,10$ ;DONE WITH THIS COLUMN? 25 000050 174115 STD F1,(R5) ;SET DIAGONAL ELEMENT = 1. 26 000052 060405 ADD R4,R5 ;SET NEXT DIAGONAL ELEMENT 27 000054 010302 MOV R3,R2 ;RESET NRC 28 000056 077106 SOB R1,10$ ;DONE WITH ALL COLUMNS? 29 000060 000207 RTS PC ;RETURN 30 000062 012746 055244 BOMBD: MOV #55244,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 31 000066 012704 034345 MOV #34345,R4 ;MOVE 1ST HALF OF NAME TO R4 32 000072 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 33 000076 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 34 000001 .END IDENTD FORMS AN IDENTITY MATRI MACRO M1110 16-AUG-79 18:16 PAGE 1-1 SYMBOL TABLE BOMBD 000062R F1 =%000001 IDENTD 000000RG NAM$ = ****** GX $BOMB = ****** GX F0 =%000000 . ABS. 000000 000 000102 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 69 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:01 IDENTD,LS:IDENTD=IDENTD MABT MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE MABT MATRIX TRANSPOSE MULTIPLY 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MABT 5 ;.INDEX M3ABT 6 ;.INDEX MPABT 7 ;.INDEX MABTD 8 ;.INDEX M3ABTD 9 ;.INDEX MPABTD 10 ;.TITLE SUBROUTINE MABT 11 ; 12 ; CALL MABT (C,A,B,L,M,N) 13 ; 14 ; CALL M3ABT (C,A,B,N) 15 ; 16 ; CALL MPABT (C,A,B,L,M,N,NRA,NRB,NRC) 17 ; 18 ; CALL MABTD (C,A,B,L,M,N) 19 ; 20 ; CALL M3ABTD (C,A,B,N) 21 ; 22 ; CALL MPABTD (C,A,B,L,M,N,NRA,NRB,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; MATRIX TRANSPOSE MULTIPLY - TRANSPOSE RIGHT HAND MATRIX 29 ; 30 ; C(L,N) = A(L,M) B(N,M)[TRANSPOSE] 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER L X N SUBMATRIX) 39 ; A,B = INPUT MATRICES (C = A B[TRANSPOSE]) 40 ; L,M,N = SUBMATRIX MULTIPLY SIZE 41 ; C = A B[T] 42 ; (LXN) = (LXM) (NXM) 43 ; NRA = NUMBER OF ROWS IN A 44 ; NRB = NUMBER OF ROWS IN B 45 ; NRC = NUMBER OF ROWS IN C 46 ; 47 ; 48 ; COMMONS: 49 ; 50 ; (NONE) 51 ; 52 ; 53 ; GENERAL DESCRIPTION: 54 ; 55 ; REAL ARGUMENTS: C,A,B 56 ; INTEGER ARGUMENTS: M,N,NRA,NRB,NRC 57 ; MABT MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 ; 59 ; THERE ARE 3 CALLING SEQUENCES: 60 ; 61 ; 1. PARTIAL MATRIX MULTIPLY 62 ; 63 ; CALL MPABT(C,A,B,L,M,N,NRA,NRB,NRC) 64 ; 65 ; C(L,N) = A(L,M) B(N,M)T 66 ; 67 ; WHERE A, B, C ARE MATRICES 68 ; THE L X M UPPER SUBMATRIX OF A IS MULTIPLIED BY THE 69 ; UPPER N X M SUBMATRIX OF B (TRANSPOSE) AND STORED IN 70 ; THE UPPER L X N SUBMATRIX OF C 71 ; 72 ; 73 ; 2. FULL MATRIX MULTIPLY 74 ; 75 ; CALL MABT(C,A,B,L,M,N) 76 ; 77 ; C(L,N) = A(L,M) B(N,M)T 78 ; 79 ; 80 ; 3. 3X3 MATRIX MULTIPLY 81 ; 82 ; CALL M3ABT(C,A,B,N) 83 ; 84 ; C(3,N) = A(3,3) B(N,3)T 85 ; 86 ; 87 ; NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY 88 ; ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION 89 ; 90 ; 91 ; PERIPHERAL INPUT/OUTPUT: 92 ; 93 ; (NONE) 94 ; 95 ; 96 ; LOGICAL UNIT USAGE: 97 ; 98 ; (NONE) 99 ; 100 ; 101 ; EXTERNAL ROUTINES CALLED: 102 ; 103 ; NAM$ 104 ; $BOMB 105 ; 106 ;- --EXTSPC>> 107 ; 108 ; WRITTEN BY: 109 ; 110 ; DENIS MAHONY AND SAM MILLER 06/01/79 111 ; 112 ; 113 ; MODIFIED BY: 114 ; MABT MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 1-2 115 ; ********** **DATE** 116 ; **DETAIL** 117 ; 118 ;- --EXTSPC>> MABT MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 2 120 .GLOBL MABT,M3ABT,MPABT 121 .ENABL LSB 122 ; 123 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 124 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 125 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 126 000000 122715 000004 M3ABT: CMPB #4,(R5) ;ARE THERE 4 ARGUMENTS? 127 000004 001153 BNE BOMB3 ;BOMB IF # OF ARGS. NE 4 128 000006 062705 000010 ADD #8.,R5 ;R5=>END OF ARG LIST 129 000012 012700 000014 MOV #12.,R0 ;R0=4*NRA=12. 130 000016 012703 000003 MOV #3,R3 ;R3=L=3 (TEMPORARY) 131 000022 010302 MOV R3,R2 ;R2=M=3 132 000024 017501 000000 MOV @(R5),R1 ;R1=N 133 000030 010146 MOV R1,-(SP) ;PLACE N ON STACK 134 000032 000441 BR 20$ 135 000034 122715 000011 MPABT: CMPB #9.,(R5) ;ARE THERE 9 ARGUMENTS? 136 000040 001130 BNE BOMBP ;BOMB IF # OF ARGS. NE 9 137 000042 062705 000022 ADD #18.,R5 ;R5=>END OF ARG LIST 138 000046 017504 000000 MOV @(R5),R4 ;NRC 139 000052 015501 MOV @-(R5),R1 ;NRB 140 000054 015500 MOV @-(R5),R0 ;NRA 141 000056 072027 000002 ASH #2,R0 ;R0=4*NRA 142 000062 015546 MOV @-(R5),-(SP) ;PLACE N ON STACK 143 000064 015502 MOV @-(R5),R2 ;R2=M 144 000066 015503 MOV @-(R5),R3 ;R3=L (TEMPORARY) 145 000070 010346 MOV R3,-(SP) ;PLACE L ON STACK 146 000072 160304 SUB R3,R4 ;NRC-L 147 000074 072427 000002 ASH #2,R4 ;4*(NRC-L) 148 000100 010446 MOV R4,-(SP) ;PLACE 4*(NRC-L) ON STACK 149 000102 000420 BR 30$ 150 000104 122715 000006 MABT: CMPB #6,(R5) ;ARE THERE 6 ARGUMENTS? 151 000110 001116 BNE BOMB ;BOMB IF # OF ARGS. NE 6 152 000112 062705 000014 ADD #12.,R5 ;R5=>END OF ARG LIST 153 000116 017501 000000 MOV @(R5),R1 ;R1=N=NRB 154 000122 010146 MOV R1,-(SP) ;PLACE N ON STACK 155 000124 015502 MOV @-(R5),R2 ;R2=M 156 000126 015503 MOV @-(R5),R3 ;R3=L (TEMPORARY) 157 000130 010300 MOV R3,R0 ;R0=NRA=L 158 000132 072027 000002 ASH #2,R0 ;R0=4*NRA 159 000136 010346 20$: MOV R3,-(SP) ;PLACE L ON STACK 160 000140 012746 000000 MOV #0,-(SP) ;PLACE 4*(NRC-L) ON STACK 161 000144 072127 000002 30$: ASH #2,R1 ;R1=4*NRB 162 000150 014503 MOV -(R5),R3 ;R3=>B 163 000152 014504 MOV -(R5),R4 ;R4=>A 164 000154 014505 MOV -(R5),R5 ;R5=>C 165 000156 010446 MOV R4,-(SP) ;PLACE >A ON STACK 166 000160 010346 MOV R3,-(SP) ;PLACE >B ON STACK 167 000162 010446 MOV R4,-(SP) ;PLACE NEXT >A ON STACK 168 000164 062716 000004 ADD #4.,(SP) ;NEXT >A 169 000170 016646 000010 MOV 10(SP),-(SP) ;PLACE L ON STACK 170 000174 010246 MOV R2,-(SP) ;PLACE M ON STACK 171 000176 170011 SETD ;SET FLOATING DOUBLE MODE 172 000200 170402 CLRD F2 ;F2=0 173 000202 000410 BR 50$ 174 000204 016604 000004 40$: MOV 4(SP),R4 ;SET A TO NEXT ROW 175 000210 016603 000006 45$: MOV 6(SP),R3 ;RESTORE B 176 000214 062766 000004 000004 ADD #4.,4(SP) ;SET NEXT A ON STACK MABT MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 2-1 177 000222 011602 MOV (SP),R2 ;RESET M 178 ;MULTIPLICATION LOOP 179 000224 177414 50$: LDCFD (R4),F0 ;F0=A 180 000226 177513 LDCFD (R3),F1 ;F1=B 181 000230 171100 MULD F0,F1 ;A*B 182 000232 172201 ADDD F1,F2 ;F2=SUM 183 000234 060004 ADD R0,R4 ;NEXT ELEMENT OF A 184 000236 060103 ADD R1,R3 ;NEXT ELEMENT OF B 185 000240 077207 SOB R2,50$ ;DONE FORMING ELEMENT OF C? 186 000242 176225 STCDF F2,(R5)+ ;STORE IN C 187 000244 170402 CLRD F2 ;F2=0 188 000246 005366 000014 DEC 14(SP) ;GO TO NEXT COLUMN OF C? 189 000252 001354 BNE 40$ ;NO 190 000254 005366 000016 DEC 16(SP) ;DONE? 191 000260 001415 BEQ 60$ ;YES 192 000262 016604 000010 MOV 10(SP),R4 ;RESTORE A 193 000266 010466 000004 MOV R4,4(SP) ;NEXT A ON STACK 194 000272 062766 000004 000006 ADD #4.,6(SP) ;NEXT ROW OF B 195 000300 066605 000012 ADD 12(SP),R5 ;NEXT COLUMN OF C 196 000304 016666 000002 000014 MOV 2(SP),14(SP) ;RESET L 197 000312 000736 BR 45$ 198 000314 062706 000020 60$: ADD #20,SP ;RESTORE STACK 199 000320 000207 RTS PC ;RETURN 200 000322 012746 007640 BOMBP: MOV #7640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 201 000326 012704 051701 MOV #51701,R4 ;MOVE 1ST HALF OF NAME TO R4 202 000332 000411 BR 70$ 203 000334 012746 007640 BOMB3: MOV #7640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 204 000340 012704 053151 MOV #53151,R4 ;MOVE 1ST HALF OF NAME TO R4 205 000344 000404 BR 70$ 206 000346 012746 076400 BOMB: MOV #76400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 207 000352 012704 050552 MOV #50552,R4 ;MOVE 1ST HALF OF NAME TO R4 208 000356 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 209 000362 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 210 000001 .END MABT MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 2-2 SYMBOL TABLE BOMB 000346R F0 =%000000 F2 =%000002 MPABT 000034RG NAM$ = ****** GX BOMBP 000322R F1 =%000001 MABT 000104RG M3ABT 000000RG $BOMB = ****** GX BOMB3 000334R . ABS. 000000 000 000366 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 129 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:04 MABT,LS:MABT=MABT MABTD MATRIX TRANSPOSE MULTIPL MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE MABTD MATRIX TRANSPOSE MULTIPLY (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MABTD,M3ABTD,MPABTD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 9 000000 122715 000004 M3ABTD: CMPB #4,(R5) ;ARE THERE 4 ARGUMENTS? 10 000004 001153 BNE BOMB3 ;BOMB IF # OF ARGS. NE 4 11 000006 062705 000010 ADD #8.,R5 ;R5=>END OF ARG LIST 12 000012 012700 000030 MOV #24.,R0 ;R0=8*NRA=24. 13 000016 012703 000003 MOV #3,R3 ;R3=L (TEMPORARY) 14 000022 010302 MOV R3,R2 ;R2=M 15 000024 017501 000000 MOV @(R5),R1 ;R1=N 16 000030 010146 MOV R1,-(SP) ;PLACE N ON STACK 17 000032 000441 BR 20$ 18 000034 122715 000011 MPABTD: CMPB #9.,(R5) ;ARE THERE 9 ARGUMENTS? 19 000040 001130 BNE BOMBP ;BOMB IF # OF ARGS. NE 9 20 000042 062705 000022 ADD #18.,R5 ;R5=>END OF ARG LIST 21 000046 017504 000000 MOV @(R5),R4 ;NRC 22 000052 015501 MOV @-(R5),R1 ;NRB 23 000054 015500 MOV @-(R5),R0 ;NRA 24 000056 072027 000003 ASH #3,R0 ;R0=8*NRA 25 000062 015546 MOV @-(R5),-(SP) ;PLACE N ON STACK 26 000064 015502 MOV @-(R5),R2 ;R2=M 27 000066 015503 MOV @-(R5),R3 ;R3=L (TEMPORARY) 28 000070 010346 MOV R3,-(SP) ;PLACE L ON STACK 29 000072 160304 SUB R3,R4 ;NRC-L 30 000074 072427 000003 ASH #3,R4 ;8*(NRC-L) 31 000100 010446 MOV R4,-(SP) ;PLACE 8*(NRC-L) ON STACK 32 000102 000420 BR 30$ 33 000104 122715 000006 MABTD: CMPB #6,(R5) ;ARE THERE 6 ARGUMENTS? 34 000110 001116 BNE BOMB ;BOMB IF # OF ARGS. NE 6 35 000112 062705 000014 ADD #12.,R5 ;R5=>END OF ARG LIST 36 000116 017501 000000 MOV @(R5),R1 ;R1=N=NRB 37 000122 010146 MOV R1,-(SP) ;PLACE N ON STACK 38 000124 015502 MOV @-(R5),R2 ;R2=M 39 000126 015503 MOV @-(R5),R3 ;R3=L (TEMPORARY) 40 000130 010300 MOV R3,R0 ;R0=NRA=L 41 000132 072027 000003 ASH #3,R0 ;R0=8*NRA 42 000136 010346 20$: MOV R3,-(SP) ;PLACE L ON STACK 43 000140 012746 000000 MOV #0,-(SP) ;PLACE 8*(NRC-L) ON STACK 44 000144 072127 000003 30$: ASH #3,R1 ;R1=8*NRB 45 000150 014503 MOV -(R5),R3 ;R3=>B 46 000152 014504 MOV -(R5),R4 ;R4=>A 47 000154 014505 MOV -(R5),R5 ;R5=>C 48 000156 010446 MOV R4,-(SP) ;PLACE >A ON STACK 49 000160 010346 MOV R3,-(SP) ;PLACE >B ON STACK 50 000162 010446 MOV R4,-(SP) ;PLACE NEXT >A ON STACK 51 000164 062716 000010 ADD #8.,(SP) ;NEXT >A 52 000170 016646 000010 MOV 10(SP),-(SP) ;PLACE L ON STACK 53 000174 010246 MOV R2,-(SP) ;PLACE M ON STACK 54 000176 170011 SETD ;SET FLOATING DOUBLE MODE 55 000200 170402 CLRD F2 ;F2=0 56 000202 000410 BR 50$ 57 000204 016604 000004 40$: MOV 4(SP),R4 ;SET A TO NEXT ROW MABTD MATRIX TRANSPOSE MULTIPL MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 000210 016603 000006 45$: MOV 6(SP),R3 ;RESTORE B 59 000214 062766 000010 000004 ADD #8.,4(SP) ;SET NEXT A ON STACK 60 000222 011602 MOV (SP),R2 ;RESET M 61 ;MULTIPLICATION LOOP 62 000224 172414 50$: LDD (R4),F0 ;F0=A 63 000226 172513 LDD (R3),F1 ;F1=B 64 000230 171100 MULD F0,F1 ;A*B 65 000232 172201 ADDD F1,F2 ;F2=SUM 66 000234 060004 ADD R0,R4 ;NEXT ELEMENT OF A 67 000236 060103 ADD R1,R3 ;NEXT ELEMENT OF B 68 000240 077207 SOB R2,50$ ;DONE FORMING ELEMENT OF C? 69 000242 174225 STD F2,(R5)+ ;STORE IN C 70 000244 170402 CLRD F2 ;F2=0 71 000246 005366 000014 DEC 14(SP) ;GO TO NEXT COLUMN OF C? 72 000252 001354 BNE 40$ ;NO 73 000254 005366 000016 DEC 16(SP) ;DONE? 74 000260 001415 BEQ 60$ ;YES 75 000262 016604 000010 MOV 10(SP),R4 ;RESTORE A 76 000266 010466 000004 MOV R4,4(SP) ;NEXT A ON STACK 77 000272 062766 000010 000006 ADD #8.,6(SP) ;NEXT ROW OF B 78 000300 066605 000012 ADD 12(SP),R5 ;NEXT COLUMN OF C 79 000304 016666 000002 000014 MOV 2(SP),14(SP) ;RESET L 80 000312 000736 BR 45$ 81 000314 062706 000020 60$: ADD #20,SP ;RESTORE STACK 82 000320 000207 RTS PC ;RETURN 83 000322 012746 007644 BOMBP: MOV #7644,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 84 000326 012704 051701 MOV #51701,R4 ;MOVE 1ST HALF OF NAME TO R4 85 000332 000411 BR 70$ 86 000334 012746 007644 BOMB3: MOV #7644,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 87 000340 012704 053151 MOV #53151,R4 ;MOVE 1ST HALF OF NAME TO R4 88 000344 000404 BR 70$ 89 000346 012746 076640 BOMB: MOV #76640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 90 000352 012704 050552 MOV #50552,R4 ;MOVE 1ST HALF OF NAME TO R4 91 000356 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 92 000362 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 93 000001 .END MABTD MATRIX TRANSPOSE MULTIPL MACRO M1110 16-AUG-79 18:16 PAGE 1-2 SYMBOL TABLE BOMB 000346R F0 =%000000 F2 =%000002 MPABTD 000034RG NAM$ = ****** GX BOMBP 000322R F1 =%000001 MABTD 000104RG M3ABTD 000000RG $BOMB = ****** GX BOMB3 000334R . ABS. 000000 000 000366 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 129 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MABTD,LS:MABTD=MABTD MADD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE MADD ADDITION OF TWO MATRICES 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MADD 5 ;.INDEX M3ADD 6 ;.INDEX MPADD 7 ;.INDEX MADDD 8 ;.INDEX M3ADDD 9 ;.INDEX MPADDD 10 ;.TITLE SUBROUTINE MADD 11 ; 12 ; CALL MADD (C,A,B,M,N) 13 ; 14 ; CALL M3ADD (C,A,B) 15 ; 16 ; CALL MPADD (C,A,B,M,N,NRA,NRB,NRC) 17 ; 18 ; CALL MADDD (C,A,B,M,N) 19 ; 20 ; CALL M3ADDD (C,A,B) 21 ; 22 ; CALL MPADDD (C,A,B,M,N,NRA,NRB,NRC) 23 ; 24 ; 25 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 26 ; 27 ; FUNCTION: 28 ; 29 ; MATRIX ADDITION 30 ; 31 ; C = A + B 32 ; 33 ; 34 ; LANGUAGE: MACRO-11 35 ; 36 ; 37 ; ARGUMENTS: 38 ; 39 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) 40 ; A,B = INPUT MATRICES 41 ; M,N = UPPER M X N SUBMATRICES ARE SUMMED 42 ; NRA = NUMBER OF ROWS IN A 43 ; NRB = NUMBER OF ROWS IN B 44 ; NRC = NUMBER OF ROWS IN C 45 ; 46 ; 47 ; COMMONS: 48 ; 49 ; (NONE) 50 ; 51 ; 52 ; GENERAL DESCRIPTION: 53 ; 54 ; REAL ARGUMENTS: C,A,B 55 ; INTEGER ARGUMENTS: M,N,NRA,NRB,NRC 56 ; 57 ; MADD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 ; SINGLE PRECISION - MADD FOR MXN MATRICES 59 ; M3ADD FOR 3X3 MATRICES 60 ; MPADD FOR UPPER MXN SUB MATRICES 61 ; 62 ; DOUBLE PRECISION - MADDD FOR MXN MATRICES 63 ; M3ADDD FOR 3X3 MATRICES 64 ; MPADDD FOR UPPER MXN SUB MATRICES 65 ; 66 ; 67 ; 68 ; 69 ; PERIPHERAL INPUT/OUTPUT: 70 ; 71 ; (NONE) 72 ; 73 ; 74 ; LOGICAL UNIT USAGE: 75 ; 76 ; (NONE) 77 ; 78 ; 79 ; EXTERNAL ROUTINES CALLED: 80 ; 81 ; NAM$ 82 ; $BOMB 83 ; 84 ;- --EXTSPC>> 85 ; 86 ; WRITTEN BY: 87 ; 88 ; DENIS MAHONY AND SAM MILLER 08/15/79 89 ; 90 ; 91 ; MODIFIED BY: 92 ; 93 ; ********** **DATE** 94 ; **DETAIL** 95 ; 96 ;- --EXTSPC>> MADD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 2 98 .GLOBL MADD, M3ADD, MPADD 99 .ENABL LSB 100 ; 101 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 102 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 103 000000 022725 000003 M3ADD: CMP #3,(R5)+ ;CHECK FOR 3 ARGUMENTS 104 000004 001103 BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 105 000006 012700 000003 MOV #3,R0 ;R0=M=3 106 000012 012701 000003 MOV #3,R1 ;R1=N=3 107 000016 012746 000003 MOV #3,-(SP) ;MOVE M ON STACK 108 000022 000410 BR 20$ 109 000024 022725 000005 MADD: CMP #5,(R5)+ ;CHECK FOR 5 ARGUMENTS 110 000030 001103 BNE BOMB ;BOMB IF # OF ARGS. NE 5 111 000032 017500 000006 MOV @6(R5),R0 ;R0=M 112 000036 017501 000010 MOV @10(R5),R1 ;R1=N 113 000042 010046 MOV R0,-(SP) ;MOVE M ON STACK 114 000044 012746 000000 20$: MOV #0,-(SP) ;MOVE 4*(NRB-M)=0 ON STACK 115 000050 012746 000000 MOV #0,-(SP) ;MOVE 4*(NRC-M)=0 ON STACK 116 000054 012702 000000 MOV #0,R2 ;R2=4*(NRA-M)=0 117 000060 000431 BR 40$ 118 000062 022725 000010 MPADD: CMP #10,(R5)+ ;ARE THERE 8 ARGUMENTS? 119 000066 001057 BNE BOMBP ;BOMB IF # OF ARGS. NE 8 120 000070 017500 000006 MOV @6(R5),R0 ;R0=M 121 000074 017501 000010 MOV @10(R5),R1 ;R1=N 122 000100 010046 MOV R0,-(SP) ;MOVE M ON STACK 123 000102 017502 000012 MOV @12(R5),R2 ;GET NRA 124 000106 160002 SUB R0,R2 ;NRA-M 125 000110 072227 000002 ASH #2,R2 ;R2=4*(NRA-M) 126 000114 017503 000014 MOV @14(R5),R3 ;GET NRB 127 000120 160003 SUB R0,R3 ;NRB-M 128 000122 072327 000002 ASH #2,R3 ;4*(NRB-M) 129 000126 010346 MOV R3,-(SP) ;MOVE 4*(NRB-M) ON STACK 130 000130 017503 000016 MOV @16(R5),R3 ;GET NRC 131 000134 160003 SUB R0,R3 ;NRC-M 132 000136 072327 000002 ASH #2,R3 ;R3=4*(NRC-M) 133 000142 010346 MOV R3,-(SP) ;MOVE 4*(NRC-M) ON STACK 134 000144 012503 40$: MOV (R5)+,R3 ;R3=ADDRESS OF C 135 000146 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 136 000150 011505 MOV (R5),R5 ;R5=ADDRESS OF B 137 000152 170001 SETF ;SET FLOATING MODE 138 000154 000406 BR 60$ 139 ;LOOP TO ADD 2 MATRICES 140 000156 061603 50$: ADD (SP),R3 ;GO TO START OF NEXT COLUMN OF C 141 000160 060204 ADD R2,R4 ;GO TO START OF NEXT COLUMN OF A 142 000162 066605 000002 ADD 2(SP),R5 ;GO TO START OF NEXT COLUMN OF B 143 000166 016600 000004 MOV 4(SP),R0 ;RESET M 144 000172 172424 60$: LDF (R4)+,F0 ;A(I) 145 000174 172525 LDF (R5)+,F1 ;B(I) 146 000176 172100 ADDF F0,F1 ;A(I)+B(I) 147 000200 174123 STF F1,(R3)+ ;C(I)=A(I)+B(I) 148 000202 077005 SOB R0,60$ ;DONE WITH THIS COLUMN? 149 000204 077114 SOB R1,50$ ;DONE WITH ALL COLUMNS? 150 000206 062706 000006 ADD #6,SP ;RESTORE STACK 151 000212 000207 RTS PC ;RETURN 152 000214 012746 014640 BOMB3: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 153 000220 012704 053151 MOV #53151,R4 ;MOVE 1ST HALF OF NAME TO R4 154 000224 000411 BR 70$ MADD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 2-1 155 000226 012746 014640 BOMBP: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 156 000232 012704 051701 MOV #51701,R4 ;MOVE 1ST HALF OF NAME TO R4 157 000236 000404 BR 70$ 158 000240 012746 014400 BOMB: MOV #14400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 159 000244 012704 050554 MOV #50554,R4 ;MOVE 1ST HALF OF NAME TO R4 160 000250 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 161 000254 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 162 000001 .END MADD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 2-2 SYMBOL TABLE BOMB 000240R BOMB3 000214R F1 =%000001 MPADD 000062RG NAM$ = ****** GX BOMBP 000226R F0 =%000000 MADD 000024RG M3ADD 000000RG $BOMB = ****** GX . ABS. 000000 000 000260 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 109 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MADD,LS:MADD=MADD MADDD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE MADDD ADDITION OF TWO MATRICES (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MADDD, M3ADDD, MPADDD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 022725 000003 M3ADDD: CMP #3,(R5)+ ;CHECK FOR 3 ARGUMENTS 9 000004 001103 BNE BOMB3D ;BOMB IF # OF ARGS. NE 3 10 000006 012700 000003 MOV #3,R0 ;R0=M=3 11 000012 012701 000003 MOV #3,R1 ;R1=N=3 12 000016 012746 000003 MOV #3,-(SP) ;MOVE M ON STACK 13 000022 000410 BR 20$ 14 000024 022725 000005 MADDD: CMP #5,(R5)+ ;CHECK FOR 5 ARGUMENTS 15 000030 001103 BNE BOMBD ;BOMB IF # OF ARGS. NE 5 16 000032 017500 000006 MOV @6(R5),R0 ;R0=M 17 000036 017501 000010 MOV @10(R5),R1 ;R1=N 18 000042 010046 MOV R0,-(SP) ;MOVE M ON STACK 19 000044 012746 000000 20$: MOV #0,-(SP) ;MOVE 8*(NRB-M)=0 ON STACK 20 000050 012746 000000 MOV #0,-(SP) ;MOVE 8*(NRC-M)=0 ON STACK 21 000054 012702 000000 MOV #0,R2 ;R2=8*(NRA-M)=0 22 000060 000431 BR 40$ 23 000062 022725 000010 MPADDD: CMP #10,(R5)+ ;ARE THERE 8 ARGUMENTS? 24 000066 001057 BNE BOMBPD ;BOMB IF # OF ARGS. NE 8 25 000070 017500 000006 MOV @6(R5),R0 ;R0=M 26 000074 017501 000010 MOV @10(R5),R1 ;R1=N 27 000100 010046 MOV R0,-(SP) ;MOVE M ON STACK 28 000102 017502 000012 MOV @12(R5),R2 ;GET NRA 29 000106 160002 SUB R0,R2 ;NRA-M 30 000110 072227 000003 ASH #3,R2 ;R2=8*(NRA-M) 31 000114 017503 000014 MOV @14(R5),R3 ;GET NRB 32 000120 160003 SUB R0,R3 ;NRB-M 33 000122 072327 000003 ASH #3,R3 ;8*(NRB-M) 34 000126 010346 MOV R3,-(SP) ;MOVE 8*(NRB-M) ON STACK 35 000130 017503 000016 MOV @16(R5),R3 ;GET NRC 36 000134 160003 SUB R0,R3 ;NRC-M 37 000136 072327 000003 ASH #3,R3 ;R3=8*(NRC-M) 38 000142 010346 MOV R3,-(SP) ;MOVE 8*(NRC-M) ON STACK 39 000144 012503 40$: MOV (R5)+,R3 ;R3=ADDRESS OF C 40 000146 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 41 000150 011505 MOV (R5),R5 ;R5=ADDRESS OF B 42 000152 170011 SETD ;SET FLOATING DOUBLE MODE 43 000154 000406 BR 60$ 44 ;LOOP TO ADD 2 MATRICES 45 000156 061603 50$: ADD (SP),R3 ;GO TO START OF NEXT COLUMN OF C 46 000160 060204 ADD R2,R4 ;GO TO START OF NEXT COLUMN OF A 47 000162 066605 000002 ADD 2(SP),R5 ;GO TO START OF NEXT COLUMN OF B 48 000166 016600 000004 MOV 4(SP),R0 ;RESET M 49 000172 172424 60$: LDD (R4)+,F0 ;A(I) 50 000174 172525 LDD (R5)+,F1 ;B(I) 51 000176 172100 ADDD F0,F1 ;A(I)+B(I) 52 000200 174123 STD F1,(R3)+ ;C(I)=A(I)+B(I) 53 000202 077005 SOB R0,60$ ;DONE WITH THIS COLUMN? 54 000204 077114 SOB R1,50$ ;DONE WITH ALL COLUMNS? 55 000206 062706 000006 ADD #6,SP ;RESTORE STACK 56 000212 000207 RTS PC ;RETURN 57 000214 012746 014644 BOMB3D: MOV #14644,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MADDD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 000220 012704 053151 MOV #53151,R4 ;MOVE 1ST HALF OF NAME TO R4 59 000224 000411 BR 70$ 60 000226 012746 014644 BOMBPD: MOV #14644,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 61 000232 012704 051701 MOV #51701,R4 ;MOVE 1ST HALF OF NAME TO R4 62 000236 000404 BR 70$ 63 000240 012746 014640 BOMBD: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 64 000244 012704 050554 MOV #50554,R4 ;MOVE 1ST HALF OF NAME TO R4 65 000250 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 66 000254 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 67 000001 .END MADDD ADDITION OF TWO MATRICES MACRO M1110 16-AUG-79 18:16 PAGE 1-2 SYMBOL TABLE BOMBD 000240R BOMB3D 000214R F1 =%000001 MPADDD 000062RG NAM$ = ****** GX BOMBPD 000226R F0 =%000000 MADDD 000024RG M3ADDD 000000RG $BOMB = ****** GX . ABS. 000000 000 000260 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 109 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MADDD,LS:MADDD=MADDD MATB MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 1 1 .TITLE MATB MATRIX TRANSPOSE MULTIPLY 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MATB 5 ;.INDEX M3ATB 6 ;.INDEX MPATB 7 ;.INDEX MATBD 8 ;.INDEX M3ATBD 9 ;.INDEX MPATBD 10 ;.TITLE SUBROUTINE MATB 11 ; 12 ; CALL MATB (C,A,B,L,M,N) 13 ; 14 ; CALL M3ATB (C,A,B,N) 15 ; 16 ; CALL MPATB (C,A,B,L,M,N,NRA,NRB,NRC) 17 ; 18 ; CALL MATBD (C,A,B,L,M,N) 19 ; 20 ; CALL M3ATBD (C,A,B,N) 21 ; 22 ; CALL MPATBD (C,A,B,L,M,N,NRA,NRB,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; MATRIX TRANSPOSE MULTIPLY - TRANSPOSE LEFT HAND MATRIX 29 ; 30 ; C(L,N) = A(M,L)[TRANSPOSE] B(M,N) 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER L X N SUBMATRIX) 39 ; A,B = INPUT MATRICES (C = A[TRANSPOSE] B) 40 ; L,M,N = SUBMATRIX MULTIPLY SIZE 41 ; C = A[T] B 42 ; (LXM) = (MXL) (MXN) 43 ; NRA = NUMBER OF ROWS IN A 44 ; NRB = NUMBER OF ROWS IN B 45 ; NRC = NUMBER OF ROWS IN C 46 ; 47 ; 48 ; COMMONS: 49 ; 50 ; (NONE) 51 ; 52 ; 53 ; GENERAL DESCRIPTION: 54 ; 55 ; REAL ARGUMENTS: C,A,B 56 ; INTEGER ARGUMENTS: L,M,N,NRA,NRB,NRC 57 ; MATB MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 1-1 58 ; 59 ; THERE ARE 3 CALLING SEQUENCES: 60 ; 61 ; 1. PARTIAL MATRIX MULTIPLY 62 ; 63 ; CALL MPATB(C,A,B,L,M,N,NRA,NRB,NRC) 64 ; 65 ; C(L,N) = A(M,L)[TRANSPOSE] B(M,N) 66 ; 67 ; WHERE A, B, C ARE MATRICES 68 ; THE M X L UPPER SUBMATRIX OF A (TRANSPOSE) IS MULTIPLIED 69 ; BY THE UPPER M X N SUBMATRIX OF B AND STORED IN THE 70 ; UPPER L X N SUBMATRIX OF C 71 ; 72 ; 73 ; 2. FULL MATRIX MULTIPLY 74 ; 75 ; CALL MATB(C,A,B,L,M,N) 76 ; 77 ; C(L,N) = A(M,L)[TRANSPOSE] B(M,N) 78 ; 79 ; 80 ; 3. 3X3 MATRIX MULTIPLY 81 ; 82 ; CALL M3ATB(C,A,B,N) 83 ; 84 ; C(3,N) = A(3,3)[TRANSPOSE] B(3,N) 85 ; 86 ; 87 ; NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY 88 ; ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION 89 ; 90 ; 91 ; PERIPHERAL INPUT/OUTPUT: 92 ; 93 ; (NONE) 94 ; 95 ; 96 ; LOGICAL UNIT USAGE: 97 ; 98 ; (NONE) 99 ; 100 ; 101 ; EXTERNAL ROUTINES CALLED: 102 ; 103 ; NAM$ 104 ; $BOMB 105 ; 106 ;- --EXTSPC>> 107 ; 108 ; WRITTEN BY: 109 ; 110 ; DENIS MAHONY AND SAM MILLER 08/15/79 111 ; 112 ; 113 ; MODIFIED BY: 114 ; MATB MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 1-2 115 ; ********** **DATE** 116 ; **DETAIL** 117 ; 118 ;- --EXTSPC>> MATB MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 2 120 .GLOBL MATB,M3ATB,MPATB 121 .ENABL LSB 122 ; 123 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 124 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 125 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 126 000000 122715 000004 M3ATB: CMPB #4,(R5) ;ARE THERE 4 ARGUMENTS? 127 000004 001136 BNE BOMB3 ;BOMB IF # OF ARGS. NE 4 128 000006 062705 000010 ADD #8.,R5 ;R5=>END OF ARG LIST 129 000012 012701 000003 MOV #3,R1 ;R1=L=3 130 000016 010102 MOV R1,R2 ;R2=M=3 131 000020 017546 000000 MOV @(R5),-(SP) ;PLACE N ON STACK 132 000024 000440 BR 20$ 133 000026 122715 000011 MPATB: CMPB #9.,(R5) ;ARE THERE 9 ARGUMENTS? 134 000032 001116 BNE BOMBP ;BOMB IF # OF ARGS. NE 9 135 000034 062705 000022 ADD #18.,R5 ;R5=>END OF ARG LIST 136 000040 017504 000000 MOV @(R5),R4 ;NRC 137 000044 015503 MOV @-(R5),R3 ;NRB 138 000046 015500 MOV @-(R5),R0 ;NRA 139 000050 015546 MOV @-(R5),-(SP) ;PLACE N ON STACK 140 000052 015502 MOV @-(R5),R2 ;R2=M 141 000054 015501 MOV @-(R5),R1 ;R1=L 142 000056 160200 SUB R2,R0 ;NRA-M 143 000060 072027 000002 ASH #2,R0 ;4*(NRA-M) 144 000064 072327 000002 ASH #2,R3 ;4*NRB 145 000070 010346 MOV R3,-(SP) ;PLACE 4*NRB ON STACK 146 000072 160104 SUB R1,R4 ;NRC-L 147 000074 072427 000002 ASH #2,R4 ;4*(NRC-L) 148 000100 010446 MOV R4,-(SP) ;PLACE 4*(NRC-L) ON STACK 149 000102 000421 BR 30$ 150 000104 122715 000006 MATB: CMPB #6,(R5) ;ARE THERE 6 ARGUMENTS? 151 000110 001101 BNE BOMB ;BOMB IF # OF ARGS. NE 6 152 000112 062705 000014 ADD #12.,R5 ;R5=>END OF ARG LIST 153 000116 017546 000000 MOV @(R5),-(SP) ;PLACE N ON STACK 154 000122 015502 MOV @-(R5),R2 ;R2=M 155 000124 015501 MOV @-(R5),R1 ;R1=L 156 000126 010203 20$: MOV R2,R3 ;R3=NRB=M 157 000130 072327 000002 ASH #2,R3 ;R3=4*NRB 158 000134 010346 MOV R3,-(SP) ;PLACE 4*NRB ON STACK 159 000136 012746 000000 MOV #0,-(SP) ;PLACE 4*(NRC-L) ON STACK 160 000142 012700 000000 MOV #0,R0 ;4*(NRA-M)=0 161 000146 014503 30$: MOV -(R5),R3 ;R3=>B 162 000150 014504 MOV -(R5),R4 ;R4=>A 163 000152 014505 MOV -(R5),R5 ;R5=>C 164 000154 010446 MOV R4,-(SP) ;PLACE >A ON STACK 165 000156 010346 MOV R3,-(SP) ;PLACE >B ON STACK 166 000160 010446 MOV R4,-(SP) ;PLACE NEXT >A ON STACK 167 000162 062716 000004 ADD #4,(SP) ;NEXT >A 168 000166 010146 MOV R1,-(SP) ;PLACE L ON STACK 169 000170 010246 MOV R2,-(SP) ;PLACE M ON STACK 170 000172 170011 SETD ;SET FLOATING DOUBLE MODE 171 000174 170402 CLRD F2 ;F2=0 172 000176 000404 BR 50$ 173 000200 060004 40$: ADD R0,R4 ;SET A TO NEXT COLUMN 174 000202 016603 000006 45$: MOV 6(SP),R3 ;RESTORE B 175 000206 011602 MOV (SP),R2 ;RESET M 176 ;MULTIPLICATION LOOP MATB MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 2-1 177 000210 177424 50$: LDCFD (R4)+,F0 ;F0=A 178 000212 177523 LDCFD (R3)+,F1 ;F1=B 179 000214 171100 MULD F0,F1 ;A*B 180 000216 172201 ADDD F1,F2 ;F2=SUM 181 000220 077205 SOB R2,50$ ;DONE FORMING ELEMENT OF C? 182 000222 176225 STCDF F2,(R5)+ ;STORE IN C 183 000224 170402 CLRD F2 ;F2=0 184 000226 077114 SOB R1,40$ ;GO TO NEXT COLUMN OF C? 185 000230 005366 000016 DEC 16(SP) ;DONE? 186 000234 001412 BEQ 60$ ;YES 187 000236 016604 000010 MOV 10(SP),R4 ;RESTORE A 188 000242 066666 000014 000006 ADD 14(SP),6(SP) ;NEXT COLUMN OF B 189 000250 066605 000012 ADD 12(SP),R5 ;NEXT COLUMN OF C 190 000254 016601 000002 MOV 2(SP),R1 ;RESET L 191 000260 000750 BR 45$ 192 000262 062706 000020 60$: ADD #20,SP ;RESTORE STACK 193 000266 000207 RTS PC ;RETURN 194 000270 012746 076520 BOMBP: MOV #76520,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 195 000274 012704 051701 MOV #51701,R4 ;MOVE 1ST HALF OF NAME TO R4 196 000300 000411 BR 70$ 197 000302 012746 076520 BOMB3: MOV #76520,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 198 000306 012704 053151 MOV #53151,R4 ;MOVE 1ST HALF OF NAME TO R4 199 000312 000404 BR 70$ 200 000314 012746 006200 BOMB: MOV #6200,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 201 000320 012704 050574 MOV #50574,R4 ;MOVE 1ST HALF OF NAME TO R4 202 000324 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 203 000330 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 204 000001 .END MATB MATRIX TRANSPOSE MULTIPLY MACRO M1110 16-AUG-79 18:16 PAGE 2-2 SYMBOL TABLE BOMB 000314R F0 =%000000 F2 =%000002 MPATB 000026RG NAM$ = ****** GX BOMBP 000270R F1 =%000001 MATB 000104RG M3ATB 000000RG $BOMB = ****** GX BOMB3 000302R . ABS. 000000 000 000334 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 129 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:04 MATB,LS:MATB=MATB MATBD MATRIX TRANSPOSE MULTIPL MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MATBD MATRIX TRANSPOSE MULTIPLY (DOUBLE PRECISION) 2 .IDENT /1.0/ ;08/15/79 3 .GLOBL MATBD,M3ATBD,MPATBD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 9 000000 122715 000004 M3ATBD: CMPB #4,(R5) ;ARE THERE 4 ARGUMENTS? 10 000004 001136 BNE BOMB3 ;BOMB IF # OF ARGS. NE 4 11 000006 062705 000010 ADD #8.,R5 ;R5=>END OF ARG LIST 12 000012 012701 000003 MOV #3,R1 ;R1=L=3 13 000016 010102 MOV R1,R2 ;R2=M=3 14 000020 017546 000000 MOV @(R5),-(SP) ;PLACE N ON STACK 15 000024 000440 BR 20$ 16 000026 122715 000011 MPATBD: CMPB #9.,(R5) ;ARE THERE 9 ARGUMENTS? 17 000032 001116 BNE BOMBP ;BOMB IF # OF ARGS. NE 9 18 000034 062705 000022 ADD #18.,R5 ;R5=>END OF ARG LIST 19 000040 017504 000000 MOV @(R5),R4 ;NRC 20 000044 015503 MOV @-(R5),R3 ;NRB 21 000046 015500 MOV @-(R5),R0 ;NRA 22 000050 015546 MOV @-(R5),-(SP) ;PLACE N ON STACK 23 000052 015502 MOV @-(R5),R2 ;R2=M 24 000054 015501 MOV @-(R5),R1 ;R1=L 25 000056 160200 SUB R2,R0 ;NRA-M 26 000060 072027 000003 ASH #3,R0 ;8*(NRA-M) 27 000064 072327 000003 ASH #3,R3 ;8*NRB 28 000070 010346 MOV R3,-(SP) ;PLACE 8*NRB ON STACK 29 000072 160104 SUB R1,R4 ;NRC-L 30 000074 072427 000003 ASH #3,R4 ;8*(NRC-L) 31 000100 010446 MOV R4,-(SP) ;PLACE 8*(NRC-L) ON STACK 32 000102 000421 BR 30$ 33 000104 122715 000006 MATBD: CMPB #6,(R5) ;ARE THERE 6 ARGUMENTS? 34 000110 001101 BNE BOMB ;BOMB IF # OF ARGS. NE 6 35 000112 062705 000014 ADD #12.,R5 ;R5=>END OF ARG LIST 36 000116 017546 000000 MOV @(R5),-(SP) ;PLACE N ON STACK 37 000122 015502 MOV @-(R5),R2 ;R2=M 38 000124 015501 MOV @-(R5),R1 ;R1=L 39 000126 010203 20$: MOV R2,R3 ;R3=NRB=M 40 000130 072327 000003 ASH #3,R3 ;R3=8*NRB 41 000134 010346 MOV R3,-(SP) ;PLACE 8*NRB ON STACK 42 000136 012746 000000 MOV #0,-(SP) ;PLACE 8*(NRC-L) ON STACK 43 000142 012700 000000 MOV #0,R0 ;4*(NRA-M)=0 44 000146 014503 30$: MOV -(R5),R3 ;R3=>B 45 000150 014504 MOV -(R5),R4 ;R4=>A 46 000152 014505 MOV -(R5),R5 ;R5=>C 47 000154 010446 MOV R4,-(SP) ;PLACE >A ON STACK 48 000156 010346 MOV R3,-(SP) ;PLACE >B ON STACK 49 000160 010446 MOV R4,-(SP) ;PLACE NEXT >A ON STACK 50 000162 062716 000010 ADD #8.,(SP) ;NEXT >A 51 000166 010146 MOV R1,-(SP) ;PLACE L ON STACK 52 000170 010246 MOV R2,-(SP) ;PLACE M ON STACK 53 000172 170011 SETD ;SET FLOATING DOUBLE MODE 54 000174 170402 CLRD F2 ;F2=0 55 000176 000404 BR 50$ 56 000200 060004 40$: ADD R0,R4 ;SET A TO NEXT COLUMN 57 000202 016603 000006 45$: MOV 6(SP),R3 ;RESTORE B MATBD MATRIX TRANSPOSE MULTIPL MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 000206 011602 MOV (SP),R2 ;RESET M 59 ;MULTIPLICATION LOOP 60 000210 172424 50$: LDD (R4)+,F0 ;F0=A 61 000212 172523 LDD (R3)+,F1 ;F1=B 62 000214 171100 MULD F0,F1 ;A*B 63 000216 172201 ADDD F1,F2 ;F2=SUM 64 000220 077205 SOB R2,50$ ;DONE FORMING ELEMENT OF C? 65 000222 174225 STD F2,(R5)+ ;STORE IN C 66 000224 170402 CLRD F2 ;F2=0 67 000226 077114 SOB R1,40$ ;GO TO NEXT COLUMN OF C? 68 000230 005366 000016 DEC 16(SP) ;DONE? 69 000234 001412 BEQ 60$ ;YES 70 000236 016604 000010 MOV 10(SP),R4 ;RESTORE A 71 000242 066666 000014 000006 ADD 14(SP),6(SP) ;NEXT COLUMN OF B 72 000250 066605 000012 ADD 12(SP),R5 ;NEXT COLUMN OF C 73 000254 016601 000002 MOV 2(SP),R1 ;RESET L 74 000260 000750 BR 45$ 75 000262 062706 000020 60$: ADD #20,SP ;RESTORE STACK 76 000266 000207 RTS PC ;RETURN 77 000270 012746 076524 BOMBP: MOV #76524,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 78 000274 012704 051701 MOV #51701,R4 ;MOVE 1ST HALF OF NAME TO R4 79 000300 000411 BR 70$ 80 000302 012746 076524 BOMB3: MOV #76524,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 81 000306 012704 053151 MOV #53151,R4 ;MOVE 1ST HALF OF NAME TO R4 82 000312 000404 BR 70$ 83 000314 012746 006440 BOMB: MOV #6440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 84 000320 012704 050574 MOV #50574,R4 ;MOVE 1ST HALF OF NAME TO R4 85 000324 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 86 000330 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 87 000001 .END MATBD MATRIX TRANSPOSE MULTIPL MACRO M1110 16-AUG-79 18:17 PAGE 1-2 SYMBOL TABLE BOMB 000314R F0 =%000000 F2 =%000002 MPATBD 000026RG NAM$ = ****** GX BOMBP 000270R F1 =%000001 MATBD 000104RG M3ATBD 000000RG $BOMB = ****** GX BOMB3 000302R . ABS. 000000 000 000334 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 129 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MATBD,LS:MATBD=MATBD MCLR CLEARS A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MCLR CLEARS A MATRIX 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MCLR 5 ;.INDEX M3CLR 6 ;.INDEX MPCLR 7 ;.INDEX MCLRD 8 ;.INDEX M3CLRD 9 ;.INDEX MPCLRD 10 ;.TITLE SUBROUTINE MCLR 11 ; 12 ; CALL MCLR (C,M,N) 13 ; 14 ; CALL M3CLR (C) 15 ; 16 ; CALL MPCLR (C,M,N,NRC) 17 ; 18 ; CALL MCLRD (C,M,N) 19 ; 20 ; CALL M3CLRD (C) 21 ; 22 ; CALL MPCLRD (C,M,N,NRC) 23 ; 24 ; 25 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 26 ; 27 ; FUNCTION: 28 ; 29 ; CLEARS A MATRIX 30 ; 31 ; C = 0 32 ; 33 ; 34 ; LANGUAGE: MACRO-11 35 ; 36 ; 37 ; ARGUMENTS: 38 ; 39 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) 40 ; M,N = UPPER M X N SUBMATRX IS USED 41 ; NRC = NUMBER OF ROWS IN C 42 ; 43 ; 44 ; COMMONS: 45 ; 46 ; (NONE) 47 ; 48 ; 49 ; GENERAL DESCRIPTION: 50 ; 51 ; ALL INTEGER ARGUMENTS EXCEPT C. 52 ; 53 ; 54 ; SINGLE PRECISION - MCLR FOR MXN MATRICES 55 ; M3CLR FOR 3X3 MATRICES 56 ; MPCLR FOR UPPER MXN SUBMATRICES 57 ; MCLR CLEARS A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 ; DOUBLE PRECISION - MCLRD FOR MXN MATRICES 59 ; M3CLRD FOR 3X3 MATRICES 60 ; MPCLRD FOR UPPER MXN SUBMATRICES 61 ; 62 ; 63 ; SET N=1 FOR VECTOR CLEAR. 64 ; 65 ; 66 ; PERIPHERAL INPUT/OUTPUT: 67 ; 68 ; (NONE) 69 ; 70 ; 71 ; LOGICAL UNIT USAGE: 72 ; 73 ; (NONE) 74 ; 75 ; 76 ; EXTERNAL ROUTINES CALLED: 77 ; 78 ; NAM$ 79 ; $BOMB 80 ; 81 ;- --EXTSPC>> 82 ; 83 ; WRITTEN BY: 84 ; 85 ; DENIS MAHONY AND SAM MILLER 08/15/79 86 ; 87 ; 88 ; MODIFIED BY: 89 ; 90 ; ********** **DATE** 91 ; **DETAIL** 92 ; 93 ;- --EXTSPC>> MCLR CLEARS A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 2 95 .GLOBL MCLR, M3CLR, MPCLR 96 .ENABL LSB 97 ; 98 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 99 000000 022725 000001 M3CLR: CMP #1,(R5)+ ;CHECK FOR 1 ARGUMENTS 100 000004 001053 BNE BOMB3 ;BOMB IF # OF ARGS. NE 1 101 000006 012700 000003 MOV #3,R0 ;R0=M=3 102 000012 010001 MOV R0,R1 ;R1=N=3 103 000014 000425 BR 20$ 104 000016 022725 000004 MPCLR: CMP #4,(R5)+ ;CHECK FOR 4 ARGUMENTS 105 000022 001037 BNE BOMBP ;BOMB IF # OF ARGS. NE 4 106 000024 017500 000002 MOV @2(R5),R0 ;R0=M 107 000030 017501 000004 MOV @4(R5),R1 ;R1=N 108 000034 010002 MOV R0,R2 ;R2=M 109 000036 017503 000006 MOV @6(R5),R3 ;GET NRC 110 000042 160003 SUB R0,R3 ;NRC-M 111 000044 072327 000002 ASH #2,R3 ;R3=4*(NRC-M) 112 000050 000412 BR 40$ 113 000052 022725 000003 MCLR: CMP #3,(R5)+ ;CHECK FOR 3 ARGUMENTS 114 000056 001033 BNE BOMB ;BOMB IF # OF ARGS. NE 3 115 000060 017500 000002 MOV @2(R5),R0 ;R0=M 116 000064 017501 000004 MOV @4(R5),R1 ;R1=N 117 000070 010002 20$: MOV R0,R2 ;R2=M 118 000072 012703 000000 MOV #0,R3 ;R3=4*(NRC-M)=0 119 000076 011504 40$: MOV (R5),R4 ;R4=ADDRESS OF C 120 000100 170001 SETF ;SET FLOATING MODE 121 000102 170400 CLRF F0 ;F0=0 122 000104 000402 BR 60$ 123 ;LOOP TO CLEAR MATRIX 124 000106 060304 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C 125 000110 010200 MOV R2,R0 ;RESET M 126 000112 174024 60$: STF F0,(R4)+ ;C(I)=0 127 000114 077002 SOB R0,60$ ;DONE WITH THIS COLUMN? 128 000116 077105 SOB R1,50$ ;DONE WITH ALL COLUMNS? 129 000120 000207 RTS PC ;RETURN 130 000122 012746 046720 BOMBP: MOV #46720,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 131 000126 012704 051703 MOV #51703,R4 ;MOVE 1ST HALF OF NAME TO R4 132 000132 000411 BR 70$ 133 000134 012746 046720 BOMB3: MOV #46720,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 134 000140 012704 053153 MOV #53153,R4 ;MOVE 1ST HALF OF NAME TO R4 135 000144 000404 BR 70$ 136 000146 012746 070200 BOMB: MOV #70200,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 137 000152 012704 050704 MOV #50704,R4 ;MOVE 1ST HALF OF NAME TO R4 138 000156 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 139 000162 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 140 000001 .END MCLR CLEARS A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 2-1 SYMBOL TABLE BOMB 000146R BOMB3 000134R MCLR 000052RG M3CLR 000000RG $BOMB = ****** GX BOMBP 000122R F0 =%000000 MPCLR 000016RG NAM$ = ****** GX . ABS. 000000 000 000166 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 104 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MCLR,LS:MCLR=MCLR MCLRD CLEARS A MATRIX (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MCLRD CLEARS A MATRIX (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MCLRD, M3CLRD, MPCLRD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000000 022725 000001 M3CLRD: CMP #1,(R5)+ ;CHECK FOR 1 ARGUMENTS 8 000004 001053 BNE BOMB3 ;BOMB IF # OF ARGS. NE 1 9 000006 012700 000003 MOV #3,R0 ;R0=M=3 10 000012 010001 MOV R0,R1 ;R1=N=3 11 000014 000425 BR 20$ 12 000016 022725 000004 MPCLRD: CMP #4,(R5)+ ;CHECK FOR 4 ARGUMENTS 13 000022 001037 BNE BOMBP ;BOMB IF # OF ARGS. NE 4 14 000024 017500 000002 MOV @2(R5),R0 ;R0=M 15 000030 017501 000004 MOV @4(R5),R1 ;R1=N 16 000034 010002 MOV R0,R2 ;R2=M 17 000036 017503 000006 MOV @6(R5),R3 ;GET NRC 18 000042 160003 SUB R0,R3 ;NRC-M 19 000044 072327 000003 ASH #3,R3 ;R3=8*(NRC-M) 20 000050 000412 BR 40$ 21 000052 022725 000003 MCLRD: CMP #3,(R5)+ ;CHECK FOR 3 ARGUMENTS 22 000056 001033 BNE BOMB ;BOMB IF # OF ARGS. NE 3 23 000060 017500 000002 MOV @2(R5),R0 ;R0=M 24 000064 017501 000004 MOV @4(R5),R1 ;R1=N 25 000070 010002 20$: MOV R0,R2 ;R2=M 26 000072 012703 000000 MOV #0,R3 ;R3=8*(NRC-M)=0 27 000076 011504 40$: MOV (R5),R4 ;R4=ADDRESS OF C 28 000100 170011 SETD ;SET FLOATING DOUBLE MODE 29 000102 170400 CLRD F0 ;F0=0 30 000104 000402 BR 60$ 31 ;LOOP TO CLEAR MATRIX 32 000106 060304 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C 33 000110 010200 MOV R2,R0 ;RESET M 34 000112 174024 60$: STD F0,(R4)+ ;C(I)=0 35 000114 077002 SOB R0,60$ ;DONE WITH THIS COLUMN? 36 000116 077105 SOB R1,50$ ;DONE WITH ALL COLUMNS? 37 000120 000207 RTS PC ;RETURN 38 000122 012746 046724 BOMBP: MOV #46724,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 39 000126 012704 051703 MOV #51703,R4 ;MOVE 1ST HALF OF NAME TO R4 40 000132 000411 BR 70$ 41 000134 012746 046724 BOMB3: MOV #46724,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 42 000140 012704 053153 MOV #53153,R4 ;MOVE 1ST HALF OF NAME TO R4 43 000144 000404 BR 70$ 44 000146 012746 070440 BOMB: MOV #70440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 45 000152 012704 050704 MOV #50704,R4 ;MOVE 1ST HALF OF NAME TO R4 46 000156 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 47 000162 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 48 000001 .END MCLRD CLEARS A MATRIX (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1-1 SYMBOL TABLE BOMB 000146R BOMB3 000134R MCLRD 000052RG M3CLRD 000000RG $BOMB = ****** GX BOMBP 000122R F0 =%000000 MPCLRD 000016RG NAM$ = ****** GX . ABS. 000000 000 000166 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 104 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MCLRD,LS:MCLRD=MCLRD MCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MCOM LINEAR COMBINATION OF TWO MATRICES 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MCOM 5 ;.INDEX M3COM 6 ;.INDEX MPCOM 7 ;.INDEX MCOMD 8 ;.INDEX M3COMD 9 ;.INDEX MPCOMD 10 ;.TITLE SUBROUTINE MCOM 11 ; 12 ; CALL MCOM (C,P,A,Q,B,M,N) 13 ; 14 ; CALL M3COM (C,P,A,Q,B) 15 ; 16 ; CALL MPCOM (C,P,A,Q,B,M,N,NRA,NRB,NRC) 17 ; 18 ; CALL MCOMD (C,P,A,Q,B,M,N) 19 ; 20 ; CALL M3COMD (C,P,A,Q,B) 21 ; 22 ; CALL MPCOMD (C,P,A,Q,B,M,N,NRA,NRB,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; LINEAR COMBINATION OF TWO MATRICES 29 ; 30 ; C = P*A + Q*B 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) 39 ; P,Q = SCALARS 40 ; A,B = INPUT MATRICES 41 ; M,N = UPPER M X N SUBMATRICES ARE USED 42 ; NRA = NUMBER OF ROWS IN A 43 ; NRB = NUMBER OF ROWS IN B 44 ; NRC = NUMBER OF ROWS IN C 45 ; 46 ; 47 ; COMMONS: 48 ; 49 ; (NONE) 50 ; 51 ; 52 ; GENERAL DESCRIPTION: 53 ; 54 ; REAL ARGUMENTS: C,P,A,Q,B 55 ; INTEGER ARGUMENTS: M,N,NRA,NRB,NRC 56 ; 57 ; MCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 ; SINGLE PRECISION - MCOM FOR MXN MATRICES 59 ; M3COM FOR 3X3 MATRICES 60 ; MPCOM FOR UPPER MXN SUBMATRICES 61 ; 62 ; DOUBLE PRECISION - MCOMD FOR MXN MATRICES 63 ; M3COMD FOR 3X3 MATRICES 64 ; MPCOMD FOR UPPER MXN SUBMATRICES 65 ; 66 ; 67 ; 68 ; PERIPHERAL INPUT/OUTPUT: 69 ; 70 ; (NONE) 71 ; 72 ; 73 ; LOGICAL UNIT USAGE: 74 ; 75 ; (NONE) 76 ; 77 ; 78 ; EXTERNAL ROUTINES CALLED: 79 ; 80 ; NAM$ 81 ; $BOMB 82 ; 83 ;- --EXTSPC>> 84 ; 85 ; WRITTEN BY: 86 ; 87 ; DENIS MAHONY AND SAM MILLER 08/15/79 88 ; 89 ; 90 ; MODIFIED BY: 91 ; 92 ; ********** **DATE** 93 ; **DETAIL** 94 ; 95 ;- --EXTSPC>> MCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:17 PAGE 2 97 .GLOBL MCOM, M3COM, MPCOM 98 .ENABL LSB 99 ; 100 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 101 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 102 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 103 000003 F3=R3 ;DEFINE FLOATING REGISTER 3 104 000000 022725 000005 M3COM: CMP #5,(R5)+ ;CHECK FOR 5 ARGUMENTS 105 000004 001120 BNE BOMB3 ;BOMB IF # OF ARGS. NE 5 106 000006 012700 000003 MOV #3,R0 ;R0=M=3 107 000012 012701 000003 MOV #3,R1 ;R1=N=3 108 000016 012746 000003 MOV #3,-(SP) ;MOVE M ON STACK 109 000022 000410 BR 20$ 110 000024 022725 000007 MCOM: CMP #7,(R5)+ ;ARE THERE 7 ARGUMENTS? 111 000030 001113 BNE BOMB ;BOMB IF # OF ARGS. NE 7 112 000032 017500 000012 MOV @12(R5),R0 ;R0=M 113 000036 017501 000014 MOV @14(R5),R1 ;R1=N 114 000042 010046 MOV R0,-(SP) ;MOVE M ON STACK 115 000044 012746 000000 20$: MOV #0,-(SP) ;MOVE 4*(NRB-M)=0 ON STACK 116 000050 012746 000000 MOV #0,-(SP) ;MOVE 4*(NRC-M)=0 ON STACK 117 000054 012702 000000 MOV #0,R2 ;R2=4*(NRA-M)=0 118 000060 000431 BR 40$ 119 000062 022725 000012 MPCOM: CMP #12,(R5)+ ;ARE THERE 10 ARGUMENTS? 120 000066 001062 BNE BOMBP ;BOMB IF # OF ARGS. NE 10 121 000070 017500 000012 MOV @12(R5),R0 ;R0=M 122 000074 017501 000014 MOV @14(R5),R1 ;R1=N 123 000100 010046 MOV R0,-(SP) ;MOVE M ON STACK 124 000102 017502 000016 MOV @16(R5),R2 ;GET NRA 125 000106 160002 SUB R0,R2 ;NRA-M 126 000110 072227 000002 ASH #2,R2 ;R2=4*(NRA-M) 127 000114 017503 000020 MOV @20(R5),R3 ;GET NRB 128 000120 160003 SUB R0,R3 ;NRB-M 129 000122 072327 000002 ASH #2,R3 ;4*(NRB-M) 130 000126 010346 MOV R3,-(SP) ;MOVE 4*(NRB-M) ON STACK 131 000130 017503 000022 MOV @22(R5),R3 ;GET NRC 132 000134 160003 SUB R0,R3 ;NRC-M 133 000136 072327 000002 ASH #2,R3 ;4*(NRC-M) 134 000142 010346 MOV R3,-(SP) ;MOVE 4*(NRC-M) ON STACK 135 000144 012503 40$: MOV (R5)+,R3 ;R3=ADDRESS OF C 136 000146 016504 000002 MOV 2(R5),R4 ;R4=ADDRESS OF A 137 000152 170001 SETF ;SET FLOATING MODE 138 000154 172675 000000 LDF @(R5),F2 ;F2=P 139 000160 172775 000004 LDF @4(R5),F3 ;F3=Q 140 000164 016505 000006 MOV 6(R5),R5 ;R5=ADDRESS OF B 141 000170 000406 BR 60$ 142 ;LOOP TO COMBINE 2 MATRICES 143 000172 061603 50$: ADD (SP),R3 ;GO TO START OF NEXT COLUMN OF C 144 000174 060204 ADD R2,R4 ;GO TO START OF NEXT COLUMN OF A 145 000176 066605 000002 ADD 2(SP),R5 ;GO TO START OF NEXT COLUMN OF B 146 000202 016600 000004 MOV 4(SP),R0 ;RESET M 147 000206 172424 60$: LDF (R4)+,F0 ;A(I) 148 000210 171002 MULF F2,F0 ;P*A(I) 149 000212 172525 LDF (R5)+,F1 ;B(I) 150 000214 171103 MULF F3,F1 ;Q*B(I) 151 000216 172100 ADDF F0,F1 ;P*A(I)+Q*B(I) 152 000220 174123 STF F1,(R3)+ ;C(I)=P*A(I)+Q*B(I) 153 000222 077007 SOB R0,60$ ;DONE WITH THIS COLUMN? MCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:17 PAGE 2-1 154 000224 077116 SOB R1,50$ ;DONE WITH ALL COLUMNS? 155 000226 062706 000006 ADD #6,SP ;RESTORE STACK 156 000232 000207 RTS PC ;RETURN 157 000234 012746 057710 BOMBP: MOV #57710,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 158 000240 012704 051703 MOV #51703,R4 ;MOVE 1ST HALF OF NAME TO R4 159 000244 000411 BR 70$ 160 000246 012746 057710 BOMB3: MOV #57710,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 161 000252 012704 053153 MOV #53153,R4 ;MOVE 1ST HALF OF NAME TO R4 162 000256 000404 BR 70$ 163 000260 012746 050500 BOMB: MOV #50500,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 164 000264 012704 050707 MOV #50707,R4 ;MOVE 1ST HALF OF NAME TO R4 165 000270 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 166 000274 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 167 000001 .END MCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:17 PAGE 2-2 SYMBOL TABLE BOMB 000260R F0 =%000000 F3 =%000003 MPCOM 000062RG NAM$ = ****** GX BOMBP 000234R F1 =%000001 MCOM 000024RG M3COM 000000RG $BOMB = ****** GX BOMB3 000246R F2 =%000002 . ABS. 000000 000 000300 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 119 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MCOM,LS:MCOM=MCOM MCOMD LINEAR COMBINATION OF 2 MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MCOMD LINEAR COMBINATION OF 2 MATRICES (DOUBLE PREC.) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MCOMD, M3COMD, MPCOMD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 9 000003 F3=R3 ;DEFINE FLOATING REGISTER 3 10 000000 022725 000005 M3COMD: CMP #5,(R5)+ ;CHECK FOR 5 ARGUMENTS 11 000004 001120 BNE BOMB3 ;BOMB IF # OF ARGS. NE 5 12 000006 012700 000003 MOV #3,R0 ;R0=M=3 13 000012 012701 000003 MOV #3,R1 ;R1=N=3 14 000016 012746 000003 MOV #3,-(SP) ;MOVE M ON STACK 15 000022 000410 BR 20$ 16 000024 022725 000007 MCOMD: CMP #7,(R5)+ ;ARE THERE 7 ARGUMENTS? 17 000030 001113 BNE BOMB ;BOMB IF # OF ARGS. NE 7 18 000032 017500 000012 MOV @12(R5),R0 ;R0=M 19 000036 017501 000014 MOV @14(R5),R1 ;R1=N 20 000042 010046 MOV R0,-(SP) ;MOVE M ON STACK 21 000044 012746 000000 20$: MOV #0,-(SP) ;MOVE 8*(NRB-M)=0 ON STACK 22 000050 012746 000000 MOV #0,-(SP) ;MOVE 8*(NRC-M)=0 ON STACK 23 000054 012702 000000 MOV #0,R2 ;R2=8*(NRA-M)=0 24 000060 000431 BR 40$ 25 000062 022725 000012 MPCOMD: CMP #12,(R5)+ ;ARE THERE 10 ARGUMENTS? 26 000066 001062 BNE BOMBP ;BOMB IF # OF ARGS. NE 10 27 000070 017500 000012 MOV @12(R5),R0 ;R0=M 28 000074 017501 000014 MOV @14(R5),R1 ;R1=N 29 000100 010046 MOV R0,-(SP) ;MOVE M ON STACK 30 000102 017502 000016 MOV @16(R5),R2 ;GET NRA 31 000106 160002 SUB R0,R2 ;NRA-M 32 000110 072227 000003 ASH #3,R2 ;R2=8*(NRA-M) 33 000114 017503 000020 MOV @20(R5),R3 ;GET NRB 34 000120 160003 SUB R0,R3 ;NRB-M 35 000122 072327 000003 ASH #3,R3 ;8*(NRB-M) 36 000126 010346 MOV R3,-(SP) ;MOVE 8*(NRB-M) ON STACK 37 000130 017503 000022 MOV @22(R5),R3 ;GET NRC 38 000134 160003 SUB R0,R3 ;NRC-M 39 000136 072327 000003 ASH #3,R3 ;8*(NRC-M) 40 000142 010346 MOV R3,-(SP) ;MOVE 8*(NRC-M) ON STACK 41 000144 012503 40$: MOV (R5)+,R3 ;R3=ADDRESS OF C 42 000146 016504 000002 MOV 2(R5),R4 ;R4=ADDRESS OF A 43 000152 170011 SETD ;SET FLOATING DOUBLE MODE 44 000154 172675 000000 LDD @(R5),F2 ;F2=P 45 000160 172775 000004 LDD @4(R5),F3 ;F3=Q 46 000164 016505 000006 MOV 6(R5),R5 ;R5=ADDRESS OF B 47 000170 000406 BR 60$ 48 ;LOOP TO COMBINE 2 MATRICES 49 000172 061603 50$: ADD (SP),R3 ;GO TO START OF NEXT COLUMN OF C 50 000174 060204 ADD R2,R4 ;GO TO START OF NEXT COLUMN OF A 51 000176 066605 000002 ADD 2(SP),R5 ;GO TO START OF NEXT COLUMN OF B 52 000202 016600 000004 MOV 4(SP),R0 ;RESET M 53 000206 172424 60$: LDD (R4)+,F0 ;A(I) 54 000210 171002 MULD F2,F0 ;P*A(I) 55 000212 172525 LDD (R5)+,F1 ;B(I) 56 000214 171103 MULD F3,F1 ;Q*B(I) 57 000216 172100 ADDD F0,F1 ;P*A(I)+Q*B(I) MCOMD LINEAR COMBINATION OF 2 MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 000220 174123 STD F1,(R3)+ ;C(I)=P*A(I)+Q*B(I) 59 000222 077007 SOB R0,60$ ;DONE WITH THIS COLUMN? 60 000224 077116 SOB R1,50$ ;DONE WITH ALL COLUMNS? 61 000226 062706 000006 ADD #6,SP ;RESTORE STACK 62 000232 000207 RTS PC ;RETURN 63 000234 012746 057714 BOMBP: MOV #57714,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 64 000240 012704 051703 MOV #51703,R4 ;MOVE 1ST HALF OF NAME TO R4 65 000244 000411 BR 70$ 66 000246 012746 057714 BOMB3: MOV #57714,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 67 000252 012704 053153 MOV #53153,R4 ;MOVE 1ST HALF OF NAME TO R4 68 000256 000404 BR 70$ 69 000260 012746 050740 BOMB: MOV #50740,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 70 000264 012704 050707 MOV #50707,R4 ;MOVE 1ST HALF OF NAME TO R4 71 000270 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 72 000274 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 73 000001 .END MCOMD LINEAR COMBINATION OF 2 MACRO M1110 16-AUG-79 18:17 PAGE 1-2 SYMBOL TABLE BOMB 000260R F0 =%000000 F3 =%000003 MPCOMD 000062RG NAM$ = ****** GX BOMBP 000234R F1 =%000001 MCOMD 000024RG M3COMD 000000RG $BOMB = ****** GX BOMB3 000246R F2 =%000002 . ABS. 000000 000 000300 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 119 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MCOMD,LS:MCOMD=MCOMD MMOV MOVE A MATRIX TO ANOTHER MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MMOV MOVE A MATRIX TO ANOTHER MATRIX 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MMOV 5 ;INDEX M3MOV 6 ;INDEX MPMOV 7 ;INDEX MMOVD 8 ;INDEX M3MOVD 9 ;INDEX MPMOVD 10 ;.TITLE SUBROUTINE MMOV 11 ; 12 ; CALL MMOV (C,A,M,N) 13 ; 14 ; CALL M3MOV (C,A) 15 ; 16 ; CALL MPMOV (C,A,M,N,NRA,NRC) 17 ; 18 ; CALL MMOVD (C,A,M,N) 19 ; 20 ; CALL M3MOVD (C,A) 21 ; 22 ; CALL MPMOVD (C,A,M,N,NRA,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES S.A. MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; MOVE A MATRIX TO ANOTHER MATRIX 29 ; 30 ; C = A 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) 39 ; A = INPUT MATRIX 40 ; M,N = UPPER M X N SUBMATRICES ARE USED 41 ; NRA = NUMBER OF ROWS IN A 42 ; NRC = NUMBER OF ROWS IN C 43 ; 44 ; 45 ; COMMONS: 46 ; 47 ; (NONE) 48 ; 49 ; 50 ; GENERAL DESCRIPTION: 51 ; 52 ; REAL ARGUMENTS: C,A 53 ; INTEGER ARGUMENTS: M,N,NRA,NRC 54 ; 55 ; 56 ; SINGLE PRECISION - MMOV FOR MXN MATRICES 57 ; M3MOV FOR 3X3 MATRICES MMOV MOVE A MATRIX TO ANOTHER MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 ; MPMOV FOR UPPER MXN SUBMATRICES 59 ; 60 ; DOUBLE PRECISION - MMOVD FOR MXN MATRICES 61 ; M3MOVD FOR 3X3 MATRICES 62 ; MPMOVD FOR UPPER MXN SUBMATRICES 63 ; 64 ; C AND A MUST NOT OVERLAP. 65 ; 66 ; 67 ; PERIPHERAL INPUT/OUTPUT: 68 ; 69 ; (NONE) 70 ; 71 ; 72 ; LOGICAL UNIT USAGE: 73 ; 74 ; (NONE) 75 ; 76 ; 77 ; EXTERNAL ROUTINES CALLED: 78 ; 79 ; NAM$ 80 ; $BOMB 81 ; 82 ;- --EXTSPC>> 83 ; 84 ; WRITTEN BY: 85 ; 86 ; S.A. MILLER 06/01/79 87 ; 88 ; 89 ; MODIFIED BY: 90 ; 91 ; ********** **DATE** 92 ; **DETAIL** 93 ; 94 ;- --EXTSPC>> MMOV MOVE A MATRIX TO ANOTHER MACRO M1110 16-AUG-79 18:17 PAGE 2 96 .GLOBL MMOV, M3MOV, MPMOV 97 .ENABL LSB 98 ; 99 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 100 000000 022715 000002 M3MOV: CMP #2,(R5) ;CHECK FOR 2 ARGUMENTS 101 000004 001067 BNE BOMB3 ;BOMB IF # OF ARGS. NE 2 102 000006 012700 000003 MOV #3,R0 ;R0=M=3 103 000012 010001 MOV R0,R1 ;R1=N=3 104 000014 000432 BR 20$ 105 000016 022715 000006 MPMOV: CMP #6,(R5) ;ARE THERE 6 ARGUMENTS? 106 000022 001053 BNE BOMBP ;BOMB IF # OF ARGS. NE 6 107 000024 017500 000006 MOV @6(R5),R0 ;R0=M 108 000030 017501 000010 MOV @10(R5),R1 ;R1=N 109 000034 010046 MOV R0,-(SP) ;MOVE M ON STACK 110 000036 017502 000012 MOV @12(R5),R2 ;GET NRA 111 000042 160002 SUB R0,R2 ;NRA-M 112 000044 072227 000002 ASH #2,R2 ;R2=4*(NRA-M) 113 000050 017503 000014 MOV @14(R5),R3 ;GET NRC 114 000054 160003 SUB R0,R3 ;NRC-M 115 000056 072327 000002 ASH #2,R3 ;R3=4*(NRC-M) 116 000062 000413 BR 40$ 117 000064 022715 000004 MMOV: CMP #4,(R5) ;CHECK FOR 4 ARGUMENTS 118 000070 001042 BNE BOMB ;BOMB IF # OF ARGS. NE 4 119 000072 017500 000006 MOV @6(R5),R0 ;R0=M 120 000076 017501 000010 MOV @10(R5),R1 ;R1=N 121 000102 010046 20$: MOV R0,-(SP) ;MOVE M ON STACK 122 000104 012702 000000 MOV #0,R2 ;R2=4*(NRA-M)=0 123 000110 010203 MOV R2,R3 ;R3=4*(NRC-M)=0 124 000112 016504 000002 40$: MOV 2(R5),R4 ;R4=ADDRESS OF C 125 000116 016505 000004 MOV 4(R5),R5 ;R5=ADDRESS OF A 126 000122 170001 SETF ;SET FLOATING MODE 127 000124 000403 BR 60$ 128 ;LOOP TO MOVE MATRIX 129 000126 060304 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C 130 000130 060205 ADD R2,R5 ;GO TO START OF NEXT COLUMN OF A 131 000132 011600 MOV (SP),R0 ;RESET M 132 000134 172425 60$: LDF (R5)+,F0 ;A(I) 133 000136 174024 STF F0,(R4)+ ;C(I)=A(I) 134 000140 077003 SOB R0,60$ ;DONE WITH THIS COLUMN? 135 000142 077107 SOB R1,50$ ;DONE WITH ALL COLUMNS? 136 000144 062706 000002 ADD #2,SP ;RESTORE STACK 137 000150 000207 RTS PC ;RETURN 138 000152 012746 060460 BOMBP: MOV #60460,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 139 000156 012704 051715 MOV #51715,R4 ;MOVE 1ST HALF OF NAME TO R4 140 000162 000411 BR 70$ 141 000164 012746 060460 BOMB3: MOV #60460,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 142 000170 012704 053165 MOV #53165,R4 ;MOVE 1ST HALF OF NAME TO R4 143 000174 000404 BR 70$ 144 000176 012746 104600 BOMB: MOV #104600,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 145 000202 012704 051527 MOV #51527,R4 ;MOVE 1ST HALF OF NAME TO R4 146 000206 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 147 000212 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 148 000001 .END MMOV MOVE A MATRIX TO ANOTHER MACRO M1110 16-AUG-79 18:17 PAGE 2-1 SYMBOL TABLE BOMB 000176R BOMB3 000164R MMOV 000064RG M3MOV 000000RG $BOMB = ****** GX BOMBP 000152R F0 =%000000 MPMOV 000016RG NAM$ = ****** GX . ABS. 000000 000 000216 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 104 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MMOV,LS:MMOV=MMOV MMOVD MOVE A MATRIX TO ANOTHER MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MMOVD MOVE A MATRIX TO ANOTHER MATRIX (DOUBLE PRE.) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MMOVD, M3MOVD, MPMOVD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000000 022715 000002 M3MOVD: CMP #2,(R5) ;CHECK FOR 2 ARGUMENTS 8 000004 001067 BNE BOMB3 ;BOMB IF # OF ARGS. NE 2 9 000006 012700 000003 MOV #3,R0 ;R0=M=3 10 000012 010001 MOV R0,R1 ;R1=N=3 11 000014 000432 BR 20$ 12 000016 022715 000006 MPMOVD: CMP #6,(R5) ;ARE THERE 6 ARGUMENTS? 13 000022 001053 BNE BOMBP ;BOMB IF # OF ARGS. NE 6 14 000024 017500 000006 MOV @6(R5),R0 ;R0=M 15 000030 017501 000010 MOV @10(R5),R1 ;R1=N 16 000034 010046 MOV R0,-(SP) ;MOVE M ON STACK 17 000036 017502 000012 MOV @12(R5),R2 ;GET NRA 18 000042 160002 SUB R0,R2 ;NRA-M 19 000044 072227 000003 ASH #3,R2 ;R2=8*(NRA-M) 20 000050 017503 000014 MOV @14(R5),R3 ;GET NRC 21 000054 160003 SUB R0,R3 ;NRC-M 22 000056 072327 000003 ASH #3,R3 ;R3=8*(NRC-M) 23 000062 000413 BR 40$ 24 000064 022715 000004 MMOVD: CMP #4,(R5) ;CHECK FOR 4 ARGUMENTS 25 000070 001042 BNE BOMB ;BOMB IF # OF ARGS. NE 4 26 000072 017500 000006 MOV @6(R5),R0 ;R0=M 27 000076 017501 000010 MOV @10(R5),R1 ;R1=N 28 000102 010046 20$: MOV R0,-(SP) ;MOVE M ON STACK 29 000104 012702 000000 MOV #0,R2 ;R2=8*(NRA-M)=0 30 000110 010203 MOV R2,R3 ;R3=8*(NRC-M)=0 31 000112 016504 000002 40$: MOV 2(R5),R4 ;R4=ADDRESS OF C 32 000116 016505 000004 MOV 4(R5),R5 ;R5=ADDRESS OF A 33 000122 170011 SETD ;SET FLOATING DOUBLE MODE 34 000124 000403 BR 60$ 35 ;LOOP TO MOVE MATRIX 36 000126 060304 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C 37 000130 060205 ADD R2,R5 ;GO TO START OF NEXT COLUMN OF A 38 000132 011600 MOV (SP),R0 ;RESET M 39 000134 172425 60$: LDD (R5)+,F0 ;A(I) 40 000136 174024 STD F0,(R4)+ ;C(I)=A(I) 41 000140 077003 SOB R0,60$ ;DONE WITH THIS COLUMN? 42 000142 077107 SOB R1,50$ ;DONE WITH ALL COLUMNS? 43 000144 062706 000002 ADD #2,SP ;RESTORE STACK 44 000150 000207 RTS PC ;RETURN 45 000152 012746 060464 BOMBP: MOV #60464,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 46 000156 012704 051715 MOV #51715,R4 ;MOVE 1ST HALF OF NAME TO R4 47 000162 000411 BR 70$ 48 000164 012746 060464 BOMB3: MOV #60464,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 49 000170 012704 053165 MOV #53165,R4 ;MOVE 1ST HALF OF NAME TO R4 50 000174 000404 BR 70$ 51 000176 012746 105040 BOMB: MOV #105040,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 52 000202 012704 051527 MOV #51527,R4 ;MOVE 1ST HALF OF NAME TO R4 53 000206 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 54 000212 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 55 000001 .END MMOVD MOVE A MATRIX TO ANOTHER MACRO M1110 16-AUG-79 18:17 PAGE 1-1 SYMBOL TABLE BOMB 000176R BOMB3 000164R MMOVD 000064RG M3MOVD 000000RG $BOMB = ****** GX BOMBP 000152R F0 =%000000 MPMOVD 000016RG NAM$ = ****** GX . ABS. 000000 000 000216 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 104 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MMOVD,LS:MMOVD=MMOVD MMUL MATRIX MULTIPLY MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MMUL MATRIX MULTIPLY 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MMUL 5 ;INDEX M3MUL 6 ;INDEX MPMUL 7 ;INDEX MMULD 8 ;INDEX M3MULD 9 ;INDEX MPMULD 10 ;.TITLE SUBROUTINE MMUL 11 ; 12 ; CALL MMUL (C,A,B,L,M,N) 13 ; 14 ; CALL M3MUL (C,A,B,N) 15 ; 16 ; CALL MPMUL (C,A,B,L,M,N,NRA,NRB,NRC) 17 ; 18 ; CALL MMULD (C,A,B,L,M,N) 19 ; 20 ; CALL M3MULD (C,A,B,N) 21 ; 22 ; CALL MPMULD (C,A,B,L,M,N,NRA,NRB,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; MATRIX MULTIPLY 29 ; 30 ; C(L,N) = A(L,M) B(M,N) 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER L X N SUBMATRIX) 39 ; A,B = INPUT MATRICES (C = AB) 40 ; L,M,N = MATRIX MULTIPLY SIZE 41 ; C = A B 42 ; (LXN) = (LXM) (MXN) 43 ; NRA = NUMBER OF ROWS IN A 44 ; NRB = NUMBER OF ROWS IN B 45 ; NRC = NUMBER OF ROWS IN C 46 ; 47 ; 48 ; COMMONS: 49 ; 50 ; (NONE) 51 ; 52 ; 53 ; GENERAL DESCRIPTION: 54 ; 55 ; REAL ARGUMENTS: C,A,B 56 ; INTEGER ARGUMENTS: L,M,N,NRA,NRB,NRC 57 ; MMUL MATRIX MULTIPLY MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 ; 59 ; THERE ARE 3 CALLING SEQUENCES: 60 ; 61 ; 1. PARTIAL MATRIX MULTIPLY 62 ; 63 ; CALL MPMUL(C,A,B,L,M,N,NRA,NRB,NRC) 64 ; 65 ; C(L,N) = A(L,M) B(M,N) 66 ; 67 ; WHERE A, B, C ARE MATRICES 68 ; THE L X M UPPER SUBMATRIX OF A IS MULTIPLIED BY THE 69 ; UPPER M X N SUBMATRIX OF B AND STORED IN THE UPPER L X N 70 ; SUBMATRIX OF C 71 ; 72 ; 73 ; 2. FULL MATRIX MULTIPLY 74 ; 75 ; CALL MMUL(C,A,B,L,M,N) 76 ; 77 ; C(L,N) = A(L,M) B(M,N) 78 ; 79 ; 80 ; 3. 3X3 MATRIX MULTIPLY 81 ; 82 ; CALL M3MUL(C,A,B,N) 83 ; 84 ; C(3,N) = A(3,3) B(3,N) 85 ; 86 ; NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY 87 ; ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION 88 ; 89 ; 90 ; PERIPHERAL INPUT/OUTPUT: 91 ; 92 ; (NONE) 93 ; 94 ; 95 ; LOGICAL UNIT USAGE: 96 ; 97 ; (NONE) 98 ; 99 ; 100 ; EXTERNAL ROUTINES CALLED: 101 ; 102 ; NAM$ 103 ; $BOMB 104 ; 105 ;- --EXTSPC>> 106 ; 107 ; WRITTEN BY: 108 ; 109 ; DENIS MAHONY AND SAM MILLER 08/15/79 110 ; 111 ; 112 ; MODIFIED BY: 113 ; 114 ; ********** **DATE** MMUL MATRIX MULTIPLY MACRO M1110 16-AUG-79 18:17 PAGE 1-2 115 ; **DETAIL** 116 ; 117 ;- --EXTSPC>> MMUL MATRIX MULTIPLY MACRO M1110 16-AUG-79 18:17 PAGE 2 119 .GLOBL MPMUL, MMUL, M3MUL 120 .ENABL LSB 121 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 122 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 123 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 124 000000 022715 000004 M3MUL: CMP #4,(R5) ;ARE THERE 4 ARGUMENTS? 125 000004 001142 BNE BOMB3 ;BOMB IF # OF ARGS. NE 4 126 000006 062705 000010 ADD #10,R5 ;R5=END OF LIST=N 127 000012 017546 000000 MOV @(R5),-(SP) ;(N) TO STACK 128 000016 012701 000003 MOV #3,R1 ;R1=(L)=3 129 000022 010102 MOV R1,R2 ;R2=(M)=3 130 000024 010103 MOV R1,R3 ;R3=(NRB)=3 131 000026 010104 MOV R1,R4 ;R4=(NRC)=3 132 000030 010100 MOV R1,R0 ;R0=(NRA)=3 133 000032 000431 BR 10$ 134 000034 022715 000011 MPMUL: CMP #11,(R5) ;ARE THERE 9 ARGUMENTS? 135 000040 001117 BNE BOMBP ;BOMB IF # OF ARGS. NE 9 136 000042 062705 000022 ADD #22,R5 ;R5=END OF LIST=NRC 137 000046 017504 000000 MOV @(R5),R4 ;(NRC) 138 000052 015503 MOV @-(R5),R3 ;(NRB) 139 000054 015500 MOV @-(R5),R0 ;(NRA) 140 000056 015546 MOV @-(R5),-(SP) ;(N) TO STACK 141 000060 015502 MOV @-(R5),R2 ;(M) 142 000062 015501 MOV @-(R5),R1 ;(L) 143 000064 000414 BR 10$ 144 000066 022715 000006 MMUL: CMP #6,(R5) ;ARE THERE 6 ARGUMENTS? 145 000072 001114 BNE BOMB ;BOMB IF # OF ARGS. NE 6 146 000074 062705 000014 ADD #14,R5 ;R5=END OF LIST=N 147 000100 017546 000000 MOV @(R5),-(SP) ;PLACE (N) ON STACK 148 000104 015502 MOV @-(R5),R2 ;(M) 149 000106 015501 MOV @-(R5),R1 ;(L) 150 000110 010203 MOV R2,R3 ;(NRB)=(M) 151 000112 010104 MOV R1,R4 ;(NRC)=(L) 152 000114 010100 MOV R1,R0 ;(NRA)=(L) 153 000116 072327 000002 10$: ASH #2,R3 ;4*(NRB) 154 000122 072027 000002 ASH #2,R0 ;4*(NRA) 155 000126 010346 MOV R3,-(SP) ;PLACE 4*(NRB) ON STACK 156 000130 160104 SUB R1,R4 ;(NRC)-(L) 157 000132 072427 000002 ASH #2,R4 ;4*((NRC)-(L)) 158 000136 010446 MOV R4,-(SP) ;PLACE 4*((NRC)-(L)) ON STACK 159 000140 014503 MOV -(R5),R3 ;R3=B 160 000142 014504 MOV -(R5),R4 ;R4=A 161 000144 014505 MOV -(R5),R5 ;R5=C 162 000146 010446 MOV R4,-(SP) ;PLACE A ON STACK 163 000150 010346 MOV R3,-(SP) ;PLACE B ON STACK 164 000152 010446 MOV R4,-(SP) ;PLACE NEXT A ON STACK 165 000154 062716 000004 ADD #4,(SP) ;NEXT A 166 000160 010146 MOV R1,-(SP) ;PLACE (L) ON STACK 167 000162 010246 MOV R2,-(SP) ;PLACE (M) ON STACK 168 000164 170011 SETD ;SET FLOATING DOUBLE MODE 169 000166 170402 CLRD F2 ;F2=0 170 000170 000410 BR 50$ 171 000172 016604 000004 40$: MOV 4(SP),R4 ;SET A TO NEXT ROW 172 000176 016603 000006 45$: MOV 6(SP),R3 ;RESTORE B 173 000202 062766 000004 000004 ADD #4,4(SP) ;SET NEXT A ON STACK 174 000210 011602 MOV (SP),R2 ;RESET (M) 175 ;MULTIPLICATION LOOP MMUL MATRIX MULTIPLY MACRO M1110 16-AUG-79 18:17 PAGE 2-1 176 000212 177414 50$: LDCFD (R4),F0 ;F0=A 177 000214 177523 LDCFD (R3)+,F1 ;F1=B 178 000216 171100 MULD F0,F1 ;A*B 179 000220 172201 ADDD F1,F2 ;F2=SUM 180 000222 060004 ADD R0,R4 ;NEXT ELEMENT OF A 181 000224 077206 SOB R2,50$ ;DONE FORMING ELEMENT OF C? 182 000226 176225 STCDF F2,(R5)+ ;STORE IN C 183 000230 170402 CLRD F2 ;F2=0 184 000232 077121 SOB R1,40$ ;GO TO NEXT COLUMN OF C? 185 000234 005366 000016 DEC 16(SP) ;DONE? 186 000240 001414 BEQ 60$ ;YES 187 000242 016604 000010 MOV 10(SP),R4 ;RESTORE A 188 000246 010466 000004 MOV R4,4(SP) ;NEXT A ON STACK 189 000252 066666 000014 000006 ADD 14(SP),6(SP) ;NEXT COLUMN OF B 190 000260 066605 000012 ADD 12(SP),R5 ;NEXT COLUMN OF C 191 000264 016601 000002 MOV 2(SP),R1 ;RESET (L) 192 000270 000742 BR 45$ 193 000272 062706 000020 60$: ADD #20,SP ;RESTORE STACK 194 000276 000207 RTS PC ;RETURN 195 000300 012746 102440 BOMBP: MOV #102440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 196 000304 012704 051715 MOV #51715,R4 ;MOVE 1ST HALF OF NAME TO R4 197 000310 000411 BR 70$ 198 000312 012746 102440 BOMB3: MOV #102440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 199 000316 012704 053165 MOV #53165,R4 ;MOVE 1ST HALF OF NAME TO R4 200 000322 000404 BR 70$ 201 000324 012746 045400 BOMB: MOV #45400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 202 000330 012704 051535 MOV #51535,R4 ;MOVE 1ST HALF OF NAME TO R4 203 000334 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 204 000340 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 205 000001 .END MMUL MATRIX MULTIPLY MACRO M1110 16-AUG-79 18:17 PAGE 2-2 SYMBOL TABLE BOMB 000324R F0 =%000000 F2 =%000002 MPMUL 000034RG NAM$ = ****** GX BOMBP 000300R F1 =%000001 MMUL 000066RG M3MUL 000000RG $BOMB = ****** GX BOMB3 000312R . ABS. 000000 000 000344 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 124 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MMUL,LS:MMUL=MMUL MMULD MATRIX MULTIPLY (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MMULD MATRIX MULTIPLY (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MPMULD, MMULD, M3MULD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000002 F2=R2 ;DEFINE FLOATING REGISTER 2 9 000000 022715 000004 M3MULD: CMP #4,(R5) ;ARE THERE 4 ARGUMENTS? 10 000004 001142 BNE BOMB3 ;BOMB IF # OF ARGS. NE 4 11 000006 062705 000010 ADD #10,R5 ;R5=END OF LIST=N 12 000012 017546 000000 MOV @(R5),-(SP) ;(N) TO STACK 13 000016 012701 000003 MOV #3,R1 ;R1=(L)=3 14 000022 010102 MOV R1,R2 ;R2=(M)=3 15 000024 010103 MOV R1,R3 ;R3=(NRB)=3 16 000026 010104 MOV R1,R4 ;R4=(NRC)=3 17 000030 010100 MOV R1,R0 ;R0=(NRA)=3 18 000032 000431 BR 10$ 19 000034 022715 000011 MPMULD: CMP #11,(R5) ;ARE THERE 9 ARGUMENTS? 20 000040 001117 BNE BOMBP ;BOMB IF # OF ARGS. NE 9 21 000042 062705 000022 ADD #22,R5 ;R5=END OF LIST=NRC 22 000046 017504 000000 MOV @(R5),R4 ;(NRC) 23 000052 015503 MOV @-(R5),R3 ;(NRB) 24 000054 015500 MOV @-(R5),R0 ;(NRA) 25 000056 015546 MOV @-(R5),-(SP) ;(N) TO STACK 26 000060 015502 MOV @-(R5),R2 ;(M) 27 000062 015501 MOV @-(R5),R1 ;(L) 28 000064 000414 BR 10$ 29 000066 022715 000006 MMULD: CMP #6,(R5) ;ARE THERE 6 ARGUMENTS? 30 000072 001114 BNE BOMB ;BOMB IF # OF ARGS. NE 6 31 000074 062705 000014 ADD #14,R5 ;R5=END OF LIST=N 32 000100 017546 000000 MOV @(R5),-(SP) ;PLACE (N) ON STACK 33 000104 015502 MOV @-(R5),R2 ;(M) 34 000106 015501 MOV @-(R5),R1 ;(L) 35 000110 010203 MOV R2,R3 ;(NRB)=(M) 36 000112 010104 MOV R1,R4 ;(NRC)=(L) 37 000114 010100 MOV R1,R0 ;(NRA)=(L) 38 000116 072327 000003 10$: ASH #3,R3 ;8*(NRB) 39 000122 072027 000003 ASH #3,R0 ;8*(NRA) 40 000126 010346 MOV R3,-(SP) ;PLACE 8*(NRB) ON STACK 41 000130 160104 SUB R1,R4 ;(NRC)-(L) 42 000132 072427 000003 ASH #3,R4 ;8*((NRC)-(L)) 43 000136 010446 MOV R4,-(SP) ;PLACE 8*((NRC)-(L)) ON STACK 44 000140 014503 MOV -(R5),R3 ;R3=B 45 000142 014504 MOV -(R5),R4 ;R4=A 46 000144 014505 MOV -(R5),R5 ;R5=C 47 000146 010446 MOV R4,-(SP) ;PLACE A ON STACK 48 000150 010346 MOV R3,-(SP) ;PLACE B ON STACK 49 000152 010446 MOV R4,-(SP) ;PLACE NEXT A ON STACK 50 000154 062716 000010 ADD #8.,(SP) ;NEXT A 51 000160 010146 MOV R1,-(SP) ;PLACE (L) ON STACK 52 000162 010246 MOV R2,-(SP) ;PLACE (M) ON STACK 53 000164 170011 SETD ;SET FLOATING DOUBLE MODE 54 000166 170402 CLRD F2 ;F2=0 55 000170 000410 BR 50$ 56 000172 016604 000004 40$: MOV 4(SP),R4 ;SET A TO NEXT ROW 57 000176 016603 000006 45$: MOV 6(SP),R3 ;RESTORE B MMULD MATRIX MULTIPLY (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 000202 062766 000010 000004 ADD #8.,4(SP) ;SET NEXT A ON STACK 59 000210 011602 MOV (SP),R2 ;RESET (M) 60 ;MULTIPLICATION LOOP 61 000212 172414 50$: LDD (R4),F0 ;F0=A 62 000214 172523 LDD (R3)+,F1 ;F1=B 63 000216 171100 MULD F0,F1 ;A*B 64 000220 172201 ADDD F1,F2 ;F2=SUM 65 000222 060004 ADD R0,R4 ;NEXT ELEMENT OF A 66 000224 077206 SOB R2,50$ ;DONE FORMING ELEMENT OF C? 67 000226 174225 STD F2,(R5)+ ;STORE IN C 68 000230 170402 CLRD F2 ;F2=0 69 000232 077121 SOB R1,40$ ;GO TO NEXT COLUMN OF C? 70 000234 005366 000016 DEC 16(SP) ;DONE? 71 000240 001414 BEQ 60$ ;YES 72 000242 016604 000010 MOV 10(SP),R4 ;RESTORE A 73 000246 010466 000004 MOV R4,4(SP) ;NEXT A ON STACK 74 000252 066666 000014 000006 ADD 14(SP),6(SP) ;NEXT COLUMN OF B 75 000260 066605 000012 ADD 12(SP),R5 ;NEXT COLUMN OF C 76 000264 016601 000002 MOV 2(SP),R1 ;RESET (L) 77 000270 000742 BR 45$ 78 000272 062706 000020 60$: ADD #20,SP ;RESTORE STACK 79 000276 000207 RTS PC ;RETURN 80 000300 012746 102444 BOMBP: MOV #102444,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 81 000304 012704 051715 MOV #51715,R4 ;MOVE 1ST HALF OF NAME TO R4 82 000310 000411 BR 70$ 83 000312 012746 102444 BOMB3: MOV #102444,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 84 000316 012704 053165 MOV #53165,R4 ;MOVE 1ST HALF OF NAME TO R4 85 000322 000404 BR 70$ 86 000324 012746 045640 BOMB: MOV #45640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 87 000330 012704 051535 MOV #51535,R4 ;MOVE 1ST HALF OF NAME TO R4 88 000334 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 89 000340 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 90 000001 .END MMULD MATRIX MULTIPLY (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1-2 SYMBOL TABLE BOMB 000324R F0 =%000000 F2 =%000002 MPMULD 000034RG NAM$ = ****** GX BOMBP 000300R F1 =%000001 MMULD 000066RG M3MULD 000000RG $BOMB = ****** GX BOMB3 000312R . ABS. 000000 000 000344 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 124 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MMULD,LS:MMULD=MMULD MSCL SCALE A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MSCL SCALE A MATRIX 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MSCL 5 ;.INDEX M3SCL 6 ;.INDEX MPSCL 7 ;.INDEX MSCLD 8 ;.INDEX M3SCLD 9 ;.INDEX MPSCLD 10 ;.TITLE SUBROUTINE MSCL 11 ; 12 ; CALL MSCL (C,P,A,M,N) 13 ; 14 ; CALL M3SCL (C,P,A) 15 ; 16 ; CALL MPSCL (C,P,A,M,N,NRA,NRC) 17 ; 18 ; CALL MSCLD (C,P,A,M,N) 19 ; 20 ; CALL M3SCLD (C,P,A) 21 ; 22 ; CALL MPSCLD (C,P,A,M,N,NRA,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; SCALAR MULTIPLICATION OF A MATRIX 29 ; 30 ; C = P A 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) 39 ; P = SCALAR 40 ; A = INPUT MATRIX 41 ; M,N = UPPER M X N SUBMATRICES ARE USED 42 ; NRA = NUMBER OF ROWS IN A 43 ; NRC = NUMBER OF ROWS IN C 44 ; 45 ; 46 ; COMMONS: 47 ; 48 ; (NONE) 49 ; 50 ; 51 ; GENERAL DESCRIPTION: 52 ; 53 ; REAL ARGUMENTS: C,P,A 54 ; INTEGER ARGUMENTS: M,N,NRA,NRC 55 ; 56 ; 57 ; SINGLE PRECISION - MSCL FOR MXN MATRICES MSCL SCALE A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 ; M3SCL FOR 3X3 MATRICES 59 ; MPSCL FOR UPPER MXN SUBMATRICES 60 ; 61 ; DOUBLE PRECISION - MSCLD FOR MXN MATRICES 62 ; M3SCLD FOR 3X3 MATRICES 63 ; MPSCLD FOR UPPER MXN SUBMATRICES 64 ; 65 ; 66 ; PERIPHERAL INPUT/OUTPUT: 67 ; 68 ; (NONE) 69 ; 70 ; 71 ; LOGICAL UNIT USAGE: 72 ; 73 ; (NONE) 74 ; 75 ; 76 ; EXTERNAL ROUTINES CALLED: 77 ; 78 ; NAM$ 79 ; $BOMB 80 ; 81 ;- --EXTSPC>> 82 ; 83 ; WRITTEN BY: 84 ; 85 ; DENIS MAHONY AND SAM MILLER 08/15/79 86 ; 87 ; 88 ; MODIFIED BY: 89 ; 90 ; ********** **DATE** 91 ; **DETAIL** 92 ; 93 ;- --EXTSPC>> MSCL SCALE A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 2 95 .GLOBL MSCL, M3SCL, MPSCL 96 .ENABL LSB 97 ; 98 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 99 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 100 000000 022715 000003 M3SCL: CMP #3,(R5) ;CHECK FOR 3 ARGUMENTS 101 000004 001074 BNE BOMB3 ;NO 102 000006 012700 000003 MOV #3,R0 ;R0=M=3 103 000012 012701 000003 MOV #3,R1 ;R1=N=3 104 000016 000432 BR 20$ 105 000020 022715 000007 MPSCL: CMP #7,(R5) ;ARE THERE 7 ARGUMENTS? 106 000024 001057 BNE BOMBP ;BOMB IF # OF ARGS. NE 7 107 000026 017500 000010 MOV @10(R5),R0 ;R0=M 108 000032 017501 000012 MOV @12(R5),R1 ;R1=N 109 000036 010046 MOV R0,-(SP) ;MOVE M ON STACK 110 000040 017502 000014 MOV @14(R5),R2 ;GET NRA 111 000044 160002 SUB R0,R2 ;NRA-M 112 000046 072227 000002 ASH #2,R2 ;R2=4*(NRA-M) 113 000052 017503 000016 MOV @16(R5),R3 ;GET NRC 114 000056 160003 SUB R0,R3 ;NRC-M 115 000060 072327 000002 ASH #2,R3 ;R3=4*(NRC-M) 116 000064 000414 BR 40$ 117 000066 022715 000005 MSCL: CMP #5,(R5) ;CHECK FOR 5 ARGUMENTS 118 000072 001046 BNE BOMB ;BOMB IF # OF ARGS. NE 5 119 000074 017500 000010 MOV @10(R5),R0 ;R0=M 120 000100 017501 000012 MOV @12(R5),R1 ;R1=N 121 000104 012703 000000 20$: MOV #0,R3 ;R3=4*(NRC-M)=0 122 000110 012702 000000 MOV #0,R2 ;R2=4*(NRA-M)=0 123 000114 010046 MOV R0,-(SP) ;MOVE M ON STACK 124 000116 016504 000002 40$: MOV 2(R5),R4 ;R4=ADDRESS OF C 125 000122 170001 SETF ;SET FLOATING MODE 126 000124 172575 000004 LDF @4(R5),F1 ;F1=P 127 000130 016505 000006 MOV 6(R5),R5 ;R5=ADDRESS OF A 128 000134 000403 BR 60$ 129 ;LOOP TO SCALE MATRIX 130 000136 060304 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C 131 000140 060205 ADD R2,R5 ;GO TO START OF NEXT COLUMN OF A 132 000142 011600 MOV (SP),R0 ;RESET M 133 000144 172425 60$: LDF (R5)+,F0 ;A(I) 134 000146 171001 MULF F1,F0 ;P*A(I) 135 000150 174024 STF F0,(R4)+ ;C(I)=P*A() 136 000152 077004 SOB R0,60$ ;DONE WITH THIS COLUMN? 137 000154 077110 SOB R1,50$ ;DONE WITH ALL COLUMNS? 138 000156 062706 000002 ADD #2,SP ;RESTORE STACK 139 000162 000207 RTS PC ;RETURN 140 000164 012746 012240 BOMBP: MOV #12240,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 141 000170 012704 051723 MOV #51723,R4 ;MOVE 1ST HALF OF NAME TO R4 142 000174 000411 BR 70$ 143 000176 012746 012240 BOMB3: MOV #12240,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 144 000202 012704 053173 MOV #53173,R4 ;MOVE 1ST HALF OF NAME TO R4 145 000206 000404 BR 70$ 146 000210 012746 045400 BOMB: MOV #45400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 147 000214 012704 052073 MOV #52073,R4 ;MOVE 1ST HALF OF NAME TO R4 148 000220 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 149 000224 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 150 000001 .END MSCL SCALE A MATRIX MACRO M1110 16-AUG-79 18:17 PAGE 2-1 SYMBOL TABLE BOMB 000210R BOMB3 000176R F1 =%000001 MSCL 000066RG NAM$ = ****** GX BOMBP 000164R F0 =%000000 MPSCL 000020RG M3SCL 000000RG $BOMB = ****** GX . ABS. 000000 000 000230 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 109 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MSCL,LS:MSCL=MSCL MSCLD SCALE A MATRIX (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MSCLD SCALE A MATRIX (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MSCLD, M3SCLD, MPSCLD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 022715 000003 M3SCLD: CMP #3,(R5) ;CHECK FOR 3 ARGUMENTS 9 000004 001074 BNE BOMB3 ;NO 10 000006 012700 000003 MOV #3,R0 ;R0=M=3 11 000012 012701 000003 MOV #3,R1 ;R1=N=3 12 000016 000432 BR 20$ 13 000020 022715 000007 MPSCLD: CMP #7,(R5) ;ARE THERE 7 ARGUMENTS? 14 000024 001057 BNE BOMBP ;BOMB IF # OF ARGS. NE 7 15 000026 017500 000010 MOV @10(R5),R0 ;R0=M 16 000032 017501 000012 MOV @12(R5),R1 ;R1=N 17 000036 010046 MOV R0,-(SP) ;MOVE M ON STACK 18 000040 017502 000014 MOV @14(R5),R2 ;GET NRA 19 000044 160002 SUB R0,R2 ;NRA-M 20 000046 072227 000003 ASH #3,R2 ;R2=8*(NRA-M) 21 000052 017503 000016 MOV @16(R5),R3 ;GET NRC 22 000056 160003 SUB R0,R3 ;NRC-M 23 000060 072327 000003 ASH #3,R3 ;R3=8*(NRC-M) 24 000064 000414 BR 40$ 25 000066 022715 000005 MSCLD: CMP #5,(R5) ;CHECK FOR 5 ARGUMENTS 26 000072 001046 BNE BOMB ;BOMB IF # OF ARGS. NE 5 27 000074 017500 000010 MOV @10(R5),R0 ;R0=M 28 000100 017501 000012 MOV @12(R5),R1 ;R1=N 29 000104 012703 000000 20$: MOV #0,R3 ;R3=8*(NRC-M)=0 30 000110 012702 000000 MOV #0,R2 ;R2=8*(NRA-M)=0 31 000114 010046 MOV R0,-(SP) ;MOVE M ON STACK 32 000116 016504 000002 40$: MOV 2(R5),R4 ;R4=ADDRESS OF C 33 000122 170011 SETD ;SET FLOATING DOUBLE MODE 34 000124 172575 000004 LDD @4(R5),F1 ;F1=P 35 000130 016505 000006 MOV 6(R5),R5 ;R5=ADDRESS OF A 36 000134 000403 BR 60$ 37 ;LOOP TO SCALE MATRIX 38 000136 060304 50$: ADD R3,R4 ;GO TO START OF NEXT COLUMN OF C 39 000140 060205 ADD R2,R5 ;GO TO START OF NEXT COLUMN OF A 40 000142 011600 MOV (SP),R0 ;RESET M 41 000144 172425 60$: LDD (R5)+,F0 ;A(I) 42 000146 171001 MULD F1,F0 ;P*A(I) 43 000150 174024 STD F0,(R4)+ ;C(I)=P*A() 44 000152 077004 SOB R0,60$ ;DONE WITH THIS COLUMN? 45 000154 077110 SOB R1,50$ ;DONE WITH ALL COLUMNS? 46 000156 062706 000002 ADD #2,SP ;RESTORE STACK 47 000162 000207 RTS PC ;RETURN 48 000164 012746 012244 BOMBP: MOV #12244,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 49 000170 012704 051723 MOV #51723,R4 ;MOVE 1ST HALF OF NAME TO R4 50 000174 000411 BR 70$ 51 000176 012746 012244 BOMB3: MOV #12244,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 52 000202 012704 053173 MOV #53173,R4 ;MOVE 1ST HALF OF NAME TO R4 53 000206 000404 BR 70$ 54 000210 012746 045640 BOMB: MOV #45640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 55 000214 012704 052073 MOV #52073,R4 ;MOVE 1ST HALF OF NAME TO R4 56 000220 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 57 000224 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST MSCLD SCALE A MATRIX (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 000001 .END MSCLD SCALE A MATRIX (DOUBLE MACRO M1110 16-AUG-79 18:17 PAGE 1-2 SYMBOL TABLE BOMB 000210R BOMB3 000176R F1 =%000001 MSCLD 000066RG NAM$ = ****** GX BOMBP 000164R F0 =%000000 MPSCLD 000020RG M3SCLD 000000RG $BOMB = ****** GX . ABS. 000000 000 000230 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 109 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MSCLD,LS:MSCLD=MSCLD MSUB SUBTRACTION OF TWO MATRIC MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MSUB SUBTRACTION OF TWO MATRICES 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MSUB 5 ;.INDEX M3SUB 6 ;.INDEX MPSUB 7 ;.INDEX MSUBD 8 ;.INDEX M3SUBD 9 ;.INDEX MPSUBD 10 ;.TITLE SUBROUTINE MSUB 11 ; 12 ; CALL MSUB (C,A,B,M,N) 13 ; 14 ; CALL M3SUB (C,A,B) 15 ; 16 ; CALL MPSUB (C,A,B,M,N,NRA,NRB,NRC) 17 ; 18 ; CALL MSUBD (C,A,B,M,N) 19 ; 20 ; CALL M3SUBD (C,A,B) 21 ; 22 ; CALL MPSUBD (C,A,B,M,N,NRA,NRB,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; MATRIX SUBTRACTION 29 ; 30 ; C = A - B 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER M X N SUBMATRIX) 39 ; A,B = INPUT MATRICES 40 ; M,N = UPPER M X N SUBMATRICES ARE SUBTRACTED (A - B) 41 ; NRA = NUMBER OF ROWS IN A 42 ; NRB = NUMBER OF ROWS IN B 43 ; NRC = NUMBER OF ROWS IN C 44 ; 45 ; 46 ; COMMONS: 47 ; 48 ; (NONE) 49 ; 50 ; 51 ; GENERAL DESCRIPTION: 52 ; 53 ; REAL ARGUMENTS: C,A,B 54 ; INTEGER ARGUMENTS: M,N,NRA,NRB,NRC 55 ; 56 ; 57 ; SINGLE PRECISION - MSUB FOR MXN MATRICES MSUB SUBTRACTION OF TWO MATRIC MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 ; M3SUB FOR 3X3 MATRICES 59 ; MPSUB FOR UPPER MXN SUBMATRICES 60 ; 61 ; DOUBLE PRECISION - MSUBD FOR MXN MATRICES 62 ; M3SUBD FOR 3X3 MATRICES 63 ; MPSUBD FOR UPPER MXN SUBMATRICES 64 ; 65 ; 66 ; 67 ; PERIPHERAL INPUT/OUTPUT: 68 ; 69 ; (NONE) 70 ; 71 ; 72 ; LOGICAL UNIT USAGE: 73 ; 74 ; (NONE) 75 ; 76 ; 77 ; EXTERNAL ROUTINES CALLED: 78 ; 79 ; NAM$ 80 ; $BOMB 81 ; 82 ;- --EXTSPC>> 83 ; 84 ; WRITTEN BY: 85 ; 86 ; DENIS MAHONY AND SAM MILLER 08/15/79 87 ; 88 ; 89 ; MODIFIED BY: 90 ; 91 ; ********** **DATE** 92 ; **DETAIL** 93 ; 94 ;- --EXTSPC>> MSUB SUBTRACTION OF TWO MATRIC MACRO M1110 16-AUG-79 18:17 PAGE 2 96 .GLOBL MSUB, M3SUB, MPSUB 97 .ENABL LSB 98 ; 99 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 100 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 101 000000 022715 000003 M3SUB: CMP #3,(R5) ;CHECK FOR 3 ARGUMENTS 102 000004 001106 BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 103 000006 012700 000003 MOV #3,R0 ;R0=M=3 104 000012 010001 MOV R0,R1 ;R1=N=3 105 000014 000441 BR 20$ 106 000016 022715 000010 MPSUB: CMP #10,(R5) ;ARE THERE 8 ARGUMENTS? 107 000022 001072 BNE BOMBP ;BOMB IF # OF ARGS. NE 8 108 000024 017500 000010 MOV @10(R5),R0 ;R0=M 109 000030 017501 000012 MOV @12(R5),R1 ;R1=N 110 000034 010046 MOV R0,-(SP) ;MOVE M ON STACK 111 000036 017502 000014 MOV @14(R5),R2 ;GET NRA 112 000042 160002 SUB R0,R2 ;NRA-M 113 000044 072227 000002 ASH #2,R2 ;R2=4*(NRA-M) 114 000050 017503 000016 MOV @16(R5),R3 ;GET NRB 115 000054 160003 SUB R0,R3 ;NRB-M 116 000056 072327 000002 ASH #2,R3 ;R3=4*(NRB-M) 117 000062 010346 MOV R3,-(SP) ;MOVE 4*(NRB-M) ON STACK 118 000064 017503 000020 MOV @20(R5),R3 ;GET NRC 119 000070 160003 SUB R0,R3 ;NRC-M 120 000072 072327 000002 ASH #2,R3 ;4*(NRC-M) 121 000076 010346 MOV R3,-(SP) ;MOVE 4*(NRC-M) ON STACK 122 000100 000414 BR 40$ 123 000102 022715 000005 MSUB: CMP #5,(R5) ;CHECK FOR 5 ARGUMENTS 124 000106 001052 BNE BOMB ;BOMB IF # OF ARGS. NE 5 125 000110 017500 000010 MOV @10(R5),R0 ;R0=M 126 000114 017501 000012 MOV @12(R5),R1 ;R1=N 127 000120 010046 20$: MOV R0,-(SP) ;MOVE M ON STACK 128 000122 012702 000000 MOV #0,R2 ;R2=4*(NRA-M)=0 129 000126 010246 MOV R2,-(SP) ;4*(NRB-M)=0 TO STACK 130 000130 010246 MOV R2,-(SP) ;4*(NRC-M)=0 TO STACK 131 000132 016503 000002 40$: MOV 2(R5),R3 ;R3=ADDRESS OF C 132 000136 016504 000004 MOV 4(R5),R4 ;R4=ADDRESS OF A 133 000142 016505 000006 MOV 6(R5),R5 ;R5=ADDRESS OF B 134 000146 170001 SETF ;SET FLOATING MODE 135 000150 000406 BR 60$ 136 ;LOOP TO SUBTRACT 2 MATRICES 137 000152 061603 50$: ADD (SP),R3 ;GO TO START OF NEXT COLUMN OF C 138 000154 060204 ADD R2,R4 ;GO TO START OF NEXT COLUMN OF A 139 000156 066605 000002 ADD 2(SP),R5 ;GO TO START OF NEXT COLUMN OF B 140 000162 016600 000004 MOV 4(SP),R0 ;RESET M 141 000166 172424 60$: LDF (R4)+,F0 ;A(I) 142 000170 172525 LDF (R5)+,F1 ;B(I) 143 000172 173001 SUBF F1,F0 ;A(I)-B(I) 144 000174 174023 STF F0,(R3)+ ;C(I)=A(I)-B(I) 145 000176 077005 SOB R0,60$ ;DONE WITH THIS COLUMN? 146 000200 077114 SOB R1,50$ ;DONE WITH ALL COLUMNS? 147 000202 062706 000006 ADD #6,SP ;RESTORE STACK 148 000206 000207 RTS PC ;RETURN 149 000210 012746 101620 BOMBP: MOV #101620,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 150 000214 012704 051723 MOV #51723,R4 ;MOVE 1ST HALF OF NAME TO R4 151 000220 000411 BR 70$ 152 000222 012746 101620 BOMB3: MOV #101620,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MSUB SUBTRACTION OF TWO MATRIC MACRO M1110 16-AUG-79 18:17 PAGE 2-1 153 000226 012704 053173 MOV #53173,R4 ;MOVE 1ST HALF OF NAME TO R4 154 000232 000404 BR 70$ 155 000234 012746 006200 BOMB: MOV #6200,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 156 000240 012704 052115 MOV #52115,R4 ;MOVE 1ST HALF OF NAME TO R4 157 000244 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 158 000250 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 159 000001 .END MSUB SUBTRACTION OF TWO MATRIC MACRO M1110 16-AUG-79 18:17 PAGE 2-2 SYMBOL TABLE BOMB 000234R BOMB3 000222R F1 =%000001 MSUB 000102RG NAM$ = ****** GX BOMBP 000210R F0 =%000000 MPSUB 000016RG M3SUB 000000RG $BOMB = ****** GX . ABS. 000000 000 000254 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 109 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MSUB,LS:MSUB=MSUB MSUBD SUBTRACTION OF TWO MATRI MACRO M1110 16-AUG-79 18:17 PAGE 1 1 .TITLE MSUBD SUBTRACTION OF TWO MATRICES (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MSUBD, M3SUBD, MPSUBD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 022715 000003 M3SUBD: CMP #3,(R5) ;CHECK FOR 3 ARGUMENTS 9 000004 001106 BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 10 000006 012700 000003 MOV #3,R0 ;R0=M=3 11 000012 010001 MOV R0,R1 ;R1=N=3 12 000014 000441 BR 20$ 13 000016 022715 000010 MPSUBD: CMP #10,(R5) ;ARE THERE 8 ARGUMENTS? 14 000022 001072 BNE BOMBP ;BOMB IF # OF ARGS. NE 8 15 000024 017500 000010 MOV @10(R5),R0 ;R0=M 16 000030 017501 000012 MOV @12(R5),R1 ;R1=N 17 000034 010046 MOV R0,-(SP) ;MOVE M ON STACK 18 000036 017502 000014 MOV @14(R5),R2 ;GET NRA 19 000042 160002 SUB R0,R2 ;NRA-M 20 000044 072227 000003 ASH #3,R2 ;R2=8*(NRA-M) 21 000050 017503 000016 MOV @16(R5),R3 ;GET NRB 22 000054 160003 SUB R0,R3 ;NRB-M 23 000056 072327 000003 ASH #3,R3 ;R3=8*(NRB-M) 24 000062 010346 MOV R3,-(SP) ;MOVE 8*(NRB-M) ON STACK 25 000064 017503 000020 MOV @20(R5),R3 ;GET NRC 26 000070 160003 SUB R0,R3 ;NRC-M 27 000072 072327 000003 ASH #3,R3 ;8*(NRC-M) 28 000076 010346 MOV R3,-(SP) ;MOVE 8*(NRC-M) ON STACK 29 000100 000414 BR 40$ 30 000102 022715 000005 MSUBD: CMP #5,(R5) ;CHECK FOR 5 ARGUMENTS 31 000106 001052 BNE BOMB ;BOMB IF # OF ARGS. NE 5 32 000110 017500 000010 MOV @10(R5),R0 ;R0=M 33 000114 017501 000012 MOV @12(R5),R1 ;R1=N 34 000120 010046 20$: MOV R0,-(SP) ;MOVE M ON STACK 35 000122 012702 000000 MOV #0,R2 ;R2=8*(NRA-M)=0 36 000126 010246 MOV R2,-(SP) ;8*(NRB-M)=0 TO STACK 37 000130 010246 MOV R2,-(SP) ;8*(NRC-M)=0 TO STACK 38 000132 016503 000002 40$: MOV 2(R5),R3 ;R3=ADDRESS OF C 39 000136 016504 000004 MOV 4(R5),R4 ;R4=ADDRESS OF A 40 000142 016505 000006 MOV 6(R5),R5 ;R5=ADDRESS OF B 41 000146 170011 SETD ;SET FLOATING DOUBLE MODE 42 000150 000406 BR 60$ 43 ;LOOP TO SUBTRACT 2 MATRICES 44 000152 061603 50$: ADD (SP),R3 ;GO TO START OF NEXT COLUMN OF C 45 000154 060204 ADD R2,R4 ;GO TO START OF NEXT COLUMN OF A 46 000156 066605 000002 ADD 2(SP),R5 ;GO TO START OF NEXT COLUMN OF B 47 000162 016600 000004 MOV 4(SP),R0 ;RESET M 48 000166 172424 60$: LDD (R4)+,F0 ;A(I) 49 000170 172525 LDD (R5)+,F1 ;B(I) 50 000172 173001 SUBD F1,F0 ;A(I)-B(I) 51 000174 174023 STD F0,(R3)+ ;C(I)=A(I)-B(I) 52 000176 077005 SOB R0,60$ ;DONE WITH THIS COLUMN? 53 000200 077114 SOB R1,50$ ;DONE WITH ALL COLUMNS? 54 000202 062706 000006 ADD #6,SP ;RESTORE STACK 55 000206 000207 RTS PC ;RETURN 56 000210 012746 101624 BOMBP: MOV #101624,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 57 000214 012704 051723 MOV #51723,R4 ;MOVE 1ST HALF OF NAME TO R4 MSUBD SUBTRACTION OF TWO MATRI MACRO M1110 16-AUG-79 18:17 PAGE 1-1 58 000220 000411 BR 70$ 59 000222 012746 101624 BOMB3: MOV #101624,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 60 000226 012704 053173 MOV #53173,R4 ;MOVE 1ST HALF OF NAME TO R4 61 000232 000404 BR 70$ 62 000234 012746 006640 BOMB: MOV #6640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 63 000240 012704 052115 MOV #52115,R4 ;MOVE 1ST HALF OF NAME TO R4 64 000244 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 65 000250 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 66 000001 .END MSUBD SUBTRACTION OF TWO MATRI MACRO M1110 16-AUG-79 18:17 PAGE 1-2 SYMBOL TABLE BOMB 000234R BOMB3 000222R F1 =%000001 MSUBD 000102RG NAM$ = ****** GX BOMBP 000210R F0 =%000000 MPSUBD 000016RG M3SUBD 000000RG $BOMB = ****** GX . ABS. 000000 000 000254 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 109 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MSUBD,LS:MSUBD=MSUBD MTRN TRANSPOSE A MATRIX MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE MTRN TRANSPOSE A MATRIX 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME MTRN 5 ;INDEX M3TRN 6 ;INDEX MPTRN 7 ;INDEX MTRND 8 ;INDEX M3TRND 9 ;INDEX MPTRND 10 ;.TITLE SUBROUTINE MTRN 11 ; 12 ; CALL MTRN (C,A,M,N) 13 ; 14 ; CALL M3TRN (C,A) 15 ; 16 ; CALL MPTRN (C,A,M,N,NRA,NRC) 17 ; 18 ; CALL MTRN (C,A,M,N) 19 ; 20 ; CALL M3TRND (C,A) 21 ; 22 ; CALL MPTRND (C,A,M,N,NRA,NRC) 23 ; 24 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 25 ; 26 ; FUNCTION: 27 ; 28 ; MATRIX TRANSPOSE 29 ; 30 ; C = A(TRANSPOSE) 31 ; 32 ; 33 ; LANGUAGE: MACRO-11 34 ; 35 ; 36 ; ARGUMENTS: 37 ; 38 ; C = OUTPUT MATRIX (RESULT IS STORED IN UPPER N X M SUBMATRIX) 39 ; A = INPUT MATRIX 40 ; M,N = UPPER M X N SUBMATRX OF A IS USED 41 ; NRA = NUMBER OF ROWS IN A 42 ; NRC = NUMBER OF ROWS IN C 43 ; 44 ; 45 ; COMMONS: 46 ; 47 ; (NONE) 48 ; 49 ; 50 ; GENERAL DESCRIPTION: 51 ; 52 ; REAL ARGUMENTS: C,A 53 ; INTEGER ARGUMENTS: M,N,NRA,NRC 54 ; 55 ; 56 ; SINGLE PRECISION - MTRN FOR MXN MATRICES 57 ; M3TRN FOR 3X3 MATRICES MTRN TRANSPOSE A MATRIX MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; MPTRN FOR UPPER MXN SUBMATRICES 59 ; 60 ; DOUBLE PRECISION - MTRND FOR MXN MATRICES 61 ; M3TRND FOR 3X3 MATRICES 62 ; MPTRND FOR UPPER MXN SUBMATRICES 63 ; 64 ; 65 ; 66 ; PERIPHERAL INPUT/OUTPUT: 67 ; 68 ; (NONE) 69 ; 70 ; 71 ; LOGICAL UNIT USAGE: 72 ; 73 ; (NONE) 74 ; 75 ; 76 ; EXTERNAL ROUTINES CALLED: 77 ; 78 ; NAM$ 79 ; $BOMB 80 ; 81 ;- --EXTSPC>> 82 ; 83 ; WRITTEN BY: 84 ; 85 ; DENIS MAHONY AND SAM MILLER 08/15/79 86 ; 87 ; 88 ; MODIFIED BY: 89 ; 90 ; ********** **DATE** 91 ; **DETAIL** 92 ; 93 ;- --EXTSPC>> MTRN TRANSPOSE A MATRIX MACRO M1110 16-AUG-79 18:18 PAGE 2 95 .GLOBL MTRN, M3TRN, MPTRN 96 .ENABL LSB 97 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 98 ; 99 000000 022725 000002 M3TRN: CMP #2,(R5)+ ;CHECK FOR 2 ARGUMENTS 100 000004 001077 BNE BOMB3 ;BOMB IF # OF ARGS. NE 2 101 000006 012700 000003 MOV #3,R0 ;R0=M=3 102 000012 012701 000003 MOV #3,R1 ;R1=N=3 103 000016 012746 000003 MOV #3,-(SP) ;MOVE M ON STACK 104 000022 000410 BR 20$ 105 000024 022725 000004 MTRN: CMP #4,(R5)+ ;CHECK FOR 4 ARGUMENTS 106 000030 001072 BNE BOMB ;BOMB IF # OF ARGS. NE 4 107 000032 017500 000004 MOV @4(R5),R0 ;R0=M 108 000036 017501 000006 MOV @6(R5),R1 ;R1=N 109 000042 010046 MOV R0,-(SP) ;MOVE M ON STACK 110 000044 012746 000000 20$: MOV #0,-(SP) ;MOVE NRA-M=0 ON STACK 111 000050 010102 MOV R1,R2 ;GET NRC=N 112 000052 072227 000002 ASH #2,R2 ;R2=4*NRC 113 000056 000422 BR 40$ 114 000060 022725 000006 MPTRN: CMP #6,(R5)+ ;CHECK NUMBER OF ARGUMENTS 115 000064 001042 BNE BOMBP ;BOMB IF # OF ARGS. NE 6 116 000066 017500 000004 MOV @4(R5),R0 ;R0=M 117 000072 017501 000006 MOV @6(R5),R1 ;R1=N 118 000076 010046 MOV R0,-(SP) ;MOVE M ON STACK 119 000100 017502 000010 MOV @10(R5),R2 ;GET NRA 120 000104 160002 SUB R0,R2 ;NRA-M 121 000106 072227 000002 ASH #2,R2 ;4*(NRA-M) - 4 BYTES FOR SINGLE 122 000112 010246 MOV R2,-(SP) ;MOVE 4*(NRA-M) ON STACK 123 000114 017502 000012 MOV @12(R5),R2 ;GET NRC 124 000120 072227 000002 ASH #2,R2 ;R2=4*NRC 125 000124 012503 40$: MOV (R5)+,R3 ;R3=ADDRESS OF C 126 000126 011504 MOV (R5),R4 ;R4=ADDRESS OF A 127 000130 010305 MOV R3,R5 ;R5=ADDRESS OF C 128 000132 170001 SETF ;SET FLOATING MODE 129 000134 000406 BR 60$ 130 ;LOOP TO TRANSPOSE MATRIX 131 000136 062705 000004 50$: ADD #4,R5 ;GO TO START OF NEXT ROW OF C 132 000142 010503 MOV R5,R3 ;AND RESET ADDRESS OF C 133 000144 061604 ADD (SP),R4 ;GO TO START OF NEXT COLUMN OF A 134 000146 016600 000002 MOV 2(SP),R0 ;RESET M 135 000152 172424 60$: LDF (R4)+,F0 ;F0=TRANSPOSED ELEMENT 136 000154 174013 STF F0,(R3) ;STORE TRANSPOSED ELEMENT 137 000156 060203 ADD R2,R3 ;GO TO NEXT COLUMN OF C 138 000160 077004 SOB R0,60$ ;DONE WITH THIS COLUMN? 139 000162 077113 SOB R1,50$ ;DONE WITH ALL COLUMNS? 140 000164 062706 000004 ADD #4,SP ;RESTORE STACK 141 000170 000207 RTS PC ;RETURN 142 000172 012746 071260 BOMBP: MOV #71260,-(SP) ; MOVE 2ND HALF OF NAME TO STACK 143 000176 012704 051724 MOV #51724,R4 ; MOVE 1ST HALF OF NAME TO R4 144 000202 000411 BR 70$ 145 000204 012746 071260 BOMB3: MOV #71260,-(SP) ; MOVE 2ND HALF OF NAME TO STACK 146 000210 012704 053174 MOV #53174,R4 ; MOVE 1ST HALF OF NAME TO R4 147 000214 000404 BR 70$ 148 000216 012746 053600 BOMB: MOV #53600,-(SP) ; MOVE 2ND HALF OF NAME TO STACK 149 000222 012704 052162 MOV #52162,R4 ; MOVE 1ST HALF OF NAME TO R4 150 000226 004467 000000G 70$: JSR R4,NAM$ ; SUBR TO PUT NAME IN WALKBACK 151 000232 000167 000000G JMP $BOMB ; ABORT, $BOMB DOES NOT EXIST MTRN TRANSPOSE A MATRIX MACRO M1110 16-AUG-79 18:18 PAGE 2-1 152 000001 .END MTRN TRANSPOSE A MATRIX MACRO M1110 16-AUG-79 18:18 PAGE 2-2 SYMBOL TABLE BOMB 000216R BOMB3 000204R MPTRN 000060RG M3TRN 000000RG $BOMB = ****** GX BOMBP 000172R F0 =%000000 MTRN 000024RG NAM$ = ****** GX . ABS. 000000 000 000236 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 104 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 MTRN,LS:MTRN=MTRN MTRND TRANSPOSE A MATRIX (DOUB MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE MTRND TRANSPOSE A MATRIX (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL MTRND, M3TRND, MPTRND 4 .ENABL LSB 5 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 6 ; 7 000000 022725 000002 M3TRND: CMP #2,(R5)+ ;CHECK FOR 2 ARGUMENTS 8 000004 001077 BNE BOMB3 ;BOMB IF # OF ARGS. NE 2 9 000006 012700 000003 MOV #3,R0 ;R0=M=3 10 000012 012701 000003 MOV #3,R1 ;R1=N=3 11 000016 012746 000003 MOV #3,-(SP) ;MOVE M ON STACK 12 000022 000410 BR 20$ 13 000024 022725 000004 MTRND: CMP #4,(R5)+ ;CHECK FOR 4 ARGUMENTS 14 000030 001072 BNE BOMB ;BOMB IF # OF ARGS. NE 4 15 000032 017500 000004 MOV @4(R5),R0 ;R0=M 16 000036 017501 000006 MOV @6(R5),R1 ;R1=N 17 000042 010046 MOV R0,-(SP) ;MOVE M ON STACK 18 000044 012746 000000 20$: MOV #0,-(SP) ;MOVE NRA-M=0 ON STACK 19 000050 010102 MOV R1,R2 ;GET NRC=N 20 000052 072227 000003 ASH #3,R2 ;R2=8*NRC 21 000056 000422 BR 40$ 22 000060 022725 000006 MPTRND: CMP #6,(R5)+ ;CHECK NUMBER OF ARGUMENTS 23 000064 001042 BNE BOMBP ;BOMB IF # OF ARGS. NE 6 24 000066 017500 000004 MOV @4(R5),R0 ;R0=M 25 000072 017501 000006 MOV @6(R5),R1 ;R1=N 26 000076 010046 MOV R0,-(SP) ;MOVE M ON STACK 27 000100 017502 000010 MOV @10(R5),R2 ;GET NRA 28 000104 160002 SUB R0,R2 ;NRA-M 29 000106 072227 000003 ASH #3,R2 ;8*(NRA-M) - 8 BYTES FOR DOUBLE 30 000112 010246 MOV R2,-(SP) ;MOVE 8*(NRA-M) ON STACK 31 000114 017502 000012 MOV @12(R5),R2 ;GET NRC 32 000120 072227 000003 ASH #3,R2 ;R2=8*NRC 33 000124 012503 40$: MOV (R5)+,R3 ;R3=ADDRESS OF C 34 000126 011504 MOV (R5),R4 ;R4=ADDRESS OF A 35 000130 010305 MOV R3,R5 ;R5=ADDRESS OF C 36 000132 170011 SETD ;SET FLOATING DOUBLE MODE 37 000134 000406 BR 60$ 38 ;LOOP TO TRANSPOSE MATRIX 39 000136 062705 000010 50$: ADD #8.,R5 ;GO TO START OF NEXT ROW OF C 40 000142 010503 MOV R5,R3 ;AND RESET ADDRESS OF C 41 000144 061604 ADD (SP),R4 ;GO TO START OF NEXT COLUMN OF A 42 000146 016600 000002 MOV 2(SP),R0 ;RESET M 43 000152 172424 60$: LDD (R4)+,F0 ;F0=TRANSPOSED ELEMENT 44 000154 174013 STD F0,(R3) ;STORE TRANSPOSED ELEMENT 45 000156 060203 ADD R2,R3 ;GO TO NEXT COLUMN OF C 46 000160 077004 SOB R0,60$ ;DONE WITH THIS COLUMN? 47 000162 077113 SOB R1,50$ ;DONE WITH ALL COLUMNS? 48 000164 062706 000004 ADD #4,SP ;RESTORE STACK 49 000170 000207 RTS PC ;RETURN 50 000172 012746 071264 BOMBP: MOV #71264,-(SP) ; MOVE 2ND HALF OF NAME TO STACK 51 000176 012704 051724 MOV #51724,R4 ; MOVE 1ST HALF OF NAME TO R4 52 000202 000411 BR 70$ 53 000204 012746 071264 BOMB3: MOV #71264,-(SP) ; MOVE 2ND HALF OF NAME TO STACK 54 000210 012704 053174 MOV #53174,R4 ; MOVE 1ST HALF OF NAME TO R4 55 000214 000404 BR 70$ 56 000216 012746 054040 BOMB: MOV #54040,-(SP) ; MOVE 2ND HALF OF NAME TO STACK 57 000222 012704 052162 MOV #52162,R4 ; MOVE 1ST HALF OF NAME TO R4 MTRND TRANSPOSE A MATRIX (DOUB MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 000226 004467 000000G 70$: JSR R4,NAM$ ; SUBR TO PUT NAME IN WALKBACK 59 000232 000167 000000G JMP $BOMB ; ABORT, $BOMB DOES NOT EXIST 60 000001 .END MTRND TRANSPOSE A MATRIX (DOUB MACRO M1110 16-AUG-79 18:18 PAGE 1-2 SYMBOL TABLE BOMB 000216R BOMB3 000204R MPTRND 000060RG M3TRND 000000RG $BOMB = ****** GX BOMBP 000172R F0 =%000000 MTRND 000024RG NAM$ = ****** GX . ABS. 000000 000 000236 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 104 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 MTRND,LS:MTRND=MTRND PROD COMPONENT PRODUCT OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE PROD COMPONENT PRODUCT OF TWO VECTORS 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME PROD 5 ;.INDEX PRODD 6 ;.TITLE SUBROUTINE PROD 7 ; 8 ; CALL PROD (C,A,B,N) 9 ; 10 ; CALL PRODD (C,A,B,N) 11 ; 12 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 13 ; 14 ; FUNCTION: 15 ; 16 ; COMPONENT PRODUCT OF TWO VECTORS 17 ; 18 ; C(I)=A(I)*B(I) FOR I<=I<=N 19 ; 20 ; LANGUAGE: MACRO-11 21 ; 22 ; 23 ; ARGUMENTS: 24 ; 25 ; C = OUTPUT VECTOR 26 ; A,B = INPUT VECTOR 27 ; N = VECTOR DIMENSION 28 ; 29 ; 30 ; COMMONS: 31 ; 32 ; (NONE) 33 ; 34 ; 35 ; GENERAL DESCRIPTION: 36 ; 37 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 38 ; 39 ; SINGLE PRECISION - PROD FOR N-VECTORS 40 ; 41 ; DOUBLE PRECISION - PRODD FOR N-VECTORS 42 ; 43 ; 44 ; 45 ; PERIPHERAL INPUT/OUTPUT: 46 ; 47 ; (NONE) 48 ; 49 ; 50 ; LOGICAL UNIT USAGE: 51 ; 52 ; (NONE) 53 ; 54 ; 55 ; EXTERNAL ROUTINES CALLED: 56 ; 57 ; NAM$ PROD COMPONENT PRODUCT OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; $BOMB 59 ; 60 ;- --EXTSPC>> 61 ; 62 ; WRITTEN BY: 63 ; 64 ; DENIS MAHONY AND SAM MILLER 08/15/79 65 ; 66 ; 67 ; MODIFIED BY: 68 ; 69 ; ********** **DATE** 70 ; **DETAIL** 71 ; 72 ;- --EXTSPC>> PROD COMPONENT PRODUCT OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 2 74 .GLOBL PROD 75 .ENABL LSB 76 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 77 000000 PROD: 78 000000 022725 000004 CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS 79 000004 001013 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 80 000006 012503 MOV (R5)+,R3 ;R3=ADDRESS OF C 81 000010 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 82 000012 012501 MOV (R5)+,R1 ;R1=ADDRESS OF B 83 000014 117502 000000 MOVB @(R5),R2 ;R2=N (LOOP COUNT) 84 000020 170001 SETF 85 000022 172424 10$: LDF (R4)+,F0 ;GET A(I) 86 000024 171021 MULF (R1)+,F0 ;F0=A(I)*B(I) 87 000026 174023 STF F0,(R3)+ ;STORE F0 INTO C(I) 88 000030 077204 SOB R2,10$ ;DONE? 89 000032 000207 RTS PC ;DONE. SO RETURN. 90 000034 012746 014400 BOMB: MOV #14400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 91 000040 012704 063337 MOV #63337,R4 ;MOVE 1ST HALF OF NAME TO R4 92 000044 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 93 000050 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 94 000001 .END PROD COMPONENT PRODUCT OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000034R F0 =%000000 NAM$ = ****** GX PROD 000000RG $BOMB = ****** GX . ABS. 000000 000 000054 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 64 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 PROD,LS:PROD=PROD PRODD COMPONENT PRODUCT OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE PRODD COMPONENT PRODUCT OF TWO VECTORS (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL PRODD 4 .ENABL LSB 5 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 6 000000 PRODD: 7 000000 022725 000004 CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS 8 000004 001013 BNE BOMBD ;BOMBD IF # OF ARGS. IS INCORRECT 9 000006 012503 MOV (R5)+,R3 ;R3=ADDRESS OF C 10 000010 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 11 000012 012501 MOV (R5)+,R1 ;R1=ADDRESS OF B 12 000014 117502 000000 MOVB @(R5),R2 ;R2=N (LOOP COUNT) 13 000020 170011 SETD 14 000022 172424 10$: LDD (R4)+,F0 ;GET A(I) 15 000024 171021 MULD (R1)+,F0 ;F0=A(I)*B(I) 16 000026 174023 STD F0,(R3)+ ;STORE F0 INTO C(I) 17 000030 077204 SOB R2,10$ ;DONE? 18 000032 000207 RTS PC ;DONE. SO RETURN. 19 000034 012746 014640 BOMBD: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 20 000040 012704 063337 MOV #63337,R4 ;MOVE 1ST HALF OF NAME TO R4 21 000044 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 22 000050 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 23 000001 .END PRODD COMPONENT PRODUCT OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMBD 000034R F0 =%000000 NAM$ = ****** GX PRODD 000000RG $BOMB = ****** GX . ABS. 000000 000 000054 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 64 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 PRODD,LS:PRODD=PRODD VADD SUM OF TWO VECTORS MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VADD SUM OF TWO VECTORS 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VADD 5 ;.INDEX V3ADD 6 ;.INDEX VADDD 7 ;.INDEX V3ADDD 8 ;.TITLE SUBROUTINE VADD 9 ; 10 ; CALL VADD (C,A,B,N) 11 ; 12 ; CALL V3ADD (C,A,B) 13 ; 14 ; CALL VADDD (C,A,B,N) 15 ; 16 ; CALL V3ADDD (C,A,B) 17 ; 18 ; 19 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 20 ; 21 ; FUNCTION: 22 ; 23 ; VECTOR ADDITION 24 ; 25 ; C = A + B 26 ; 27 ; 28 ; LANGUAGE: MACRO-11 29 ; 30 ; 31 ; ARGUMENTS: 32 ; 33 ; C = OUTPUT VECTOR 34 ; A,B = INPUT VECTORS 35 ; N = VECTOR DIMENSION 36 ; 37 ; 38 ; COMMONS: 39 ; 40 ; (NONE) 41 ; 42 ; 43 ; GENERAL DESCRIPTION: 44 ; 45 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 46 ; 47 ; SINGLE PRECISION - VADD FOR N-VECTORS 48 ; V3ADD FOR 3-VECTORS 49 ; 50 ; DOUBLE PRECISION - VADDD FOR N-VECTORS 51 ; V3ADDD FOR 3-VECTORS 52 ; 53 ; 54 ; PERIPHERAL INPUT/OUTPUT: 55 ; 56 ; (NONE) 57 ; VADD SUM OF TWO VECTORS MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; 59 ; LOGICAL UNIT USAGE: 60 ; 61 ; (NONE) 62 ; 63 ; 64 ; EXTERNAL ROUTINES CALLED: 65 ; 66 ; NAM$ 67 ; $BOMB 68 ; 69 ;- --EXTSPC>> 70 ; 71 ; WRITTEN BY: 72 ; 73 ; DENIS MAHONY AND SAM MILLER 08/15/79 74 ; 75 ; 76 ; MODIFIED BY: 77 ; 78 ; ********** **DATE** 79 ; 80 ; ****DETAILS**** 81 ; 82 ;- --EXTSPC>> VADD SUM OF TWO VECTORS MACRO M1110 16-AUG-79 18:18 PAGE 2 84 .GLOBL VADD, V3ADD 85 .ENABL LSB 86 ; 87 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 88 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 89 000000 V3ADD: 90 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 91 000004 001022 BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 92 000006 112701 000003 MOVB #3,R1 ;R1=VECTOR SIZE=3 93 000012 000405 BR 10$ 94 000014 VADD: 95 000014 022725 000004 CMP #4,(R5)+ ;ARE THERE 4 ARGUMENTS? 96 000020 001021 BNE BOMB ;BOMB IF # OF ARGS. NE 4 97 000022 117501 000006 MOVB @6(R5),R1 ;R1=VECTOR SIZE 98 000026 012502 10$: MOV (R5)+,R2 ;R2=ADDRESS OF C 99 000030 012503 MOV (R5)+,R3 ;R3=ADDRESS OF A 100 000032 011504 MOV (R5),R4 ;R4=ADDRESS OF B 101 000034 170001 SETF ;SET FLOATING DOUBLE MODE 102 ; LOOP TO ADD VECTORS 103 000036 172523 20$: LDF (R3)+,F1 ;GET A(I) 104 000040 172424 LDF (R4)+,F0 ;GET B(I) 105 000042 172100 ADDF F0,F1 ;A(I) + B(I) 106 000044 174122 STF F1,(R2)+ ;PUT SUM IN C(I) 107 000046 077105 SOB R1,20$ ;DONE? 108 000050 000207 RTS PC ;RETURN 109 000052 012746 014640 BOMB3: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 110 000056 012704 107251 MOV #107251,R4 ;MOVE 1ST HALF OF NAME TO R4 111 000062 000404 BR 30$ 112 000064 012746 014400 BOMB: MOV #14400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 113 000070 012704 104654 MOV #104654,R4 ;MOVE 1ST HALF OF NAME TO R4 114 000074 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 115 000100 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 116 000001 .END VADD SUM OF TWO VECTORS MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000064R F0 =%000000 NAM$ = ****** GX V3ADD 000000RG $BOMB = ****** GX BOMB3 000052R F1 =%000001 VADD 000014RG . ABS. 000000 000 000104 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 89 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VADD,LS:VADD=VADD VADDD SUM OF TWO VECTORS (DOUB MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VADDD SUM OF TWO VECTORS (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VADDD, V3ADDD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 V3ADDD: 9 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 10 000004 001021 BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 11 000006 112701 000003 MOVB #3,R1 ;R1=VECTOR SIZE=3 12 000012 000405 BR 10$ 13 000014 VADDD: 14 000014 022725 000004 CMP #4,(R5)+ ;ARE THERE 4 ARGUMENTS? 15 000020 001020 BNE BOMB ;BOMB IF # OF ARGS. NE 4 16 000022 117501 000006 MOVB @6(R5),R1 ;R1=VECTOR SIZE 17 000026 012502 10$: MOV (R5)+,R2 ;R2=ADDRESS OF C 18 000030 012503 MOV (R5)+,R3 ;R3=ADDRESS OF A 19 000032 011504 MOV (R5),R4 ;R4=ADDRESS OF B 20 000034 170011 SETD ;SET FLOATING DOUBLE MODE 21 ; LOOP TO ADD VECTORS 22 000036 172523 20$: LDD (R3)+,F1 ;GET A(I) 23 000040 172124 ADDD (R4)+,F1 ;A(I) + B(I) 24 000042 174122 STD F1,(R2)+ ;PUT SUM IN C(I) 25 000044 077104 SOB R1,20$ ;DONE? 26 000046 000207 RTS PC ;RETURN 27 000050 012746 014644 BOMB3: MOV #14644,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 28 000054 012704 107251 MOV #107251,R4 ;MOVE 1ST HALF OF NAME TO R4 29 000060 000404 BR 30$ 30 000062 012746 014640 BOMB: MOV #14640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 31 000066 012704 104654 MOV #104654,R4 ;MOVE 1ST HALF OF NAME TO R4 32 000072 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 33 000076 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 34 000001 .END VADDD SUM OF TWO VECTORS (DOUB MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMB 000062R F0 =%000000 NAM$ = ****** GX V3ADDD 000000RG $BOMB = ****** GX BOMB3 000050R F1 =%000001 VADDD 000014RG . ABS. 000000 000 000102 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 89 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VADDD,LS:VADDD=VADDD VCLR CLEARS A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VCLR CLEARS A VECTOR 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VCLR 5 ;.INDEX V3CLR 6 ;.INDEX VCLRD 7 ;.INDEX V3CLRD 8 ;.TITLE SUBROUTINE VCLR 9 ; 10 ; CALL VCLR (C,N) 11 ; 12 ; CALL V3CLR (C) 13 ; 14 ; CALL VCLRD (C,N) 15 ; 16 ; CALL V3CLRD (C) 17 ; 18 ; 19 ; VERSION: MATRIX / VECTOR ROUTINES SAM MILLER REL 1.0 20 ; 21 ; FUNCTION: 22 ; 23 ; CLEARS A VECTOR 24 ; 25 ; C = 0 26 ; 27 ; 28 ; LANGUAGE: MACRO-11 29 ; 30 ; 31 ; ARGUMENTS: 32 ; 33 ; C = OUTPUT VECTOR 34 ; N = VECTOR DIMENSION 35 ; 36 ; 37 ; COMMONS: 38 ; 39 ; (NONE) 40 ; 41 ; 42 ; GENERAL DESCRIPTION: 43 ; 44 ; C IS REAL AND N IS INTEGER. 45 ; 46 ; 47 ; 48 ; SINGLE PRECISION - VCLR FOR N-VECTORS 49 ; V3CLR FOR 3-VECTORS 50 ; 51 ; DOUBLE PRECISION - VCLRD FOR N-VECTORS 52 ; V3CLRD FOR 3-VECTORS 53 ; 54 ; 55 ; 56 ; PERIPHERAL INPUT/OUTPUT: 57 ; VCLR CLEARS A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; (NONE) 59 ; 60 ; 61 ; LOGICAL UNIT USAGE: 62 ; 63 ; (NONE) 64 ; 65 ; 66 ; EXTERNAL ROUTINES CALLED: 67 ; 68 ; NAM$ 69 ; $BOMB 70 ; 71 ;- --EXTSPC>> 72 ; 73 ; WRITTEN BY: 74 ; 75 ; DENIS MAHONY AND SAM MILLER 08/15/79 76 ; 77 ; 78 ; MODIFIED BY: 79 ; 80 ; ********** **DATE** 81 ; **DETAIL** 82 ; 83 ;- --EXTSPC>> VCLR CLEARS A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 2 85 .GLOBL VCLR, V3CLR 86 .ENABL LSB 87 ; 88 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 89 000000 022725 000001 V3CLR: CMP #1,(R5)+ ;CHECK FOR 1 ARGUMENTS 90 000004 001016 BNE BOMB3 ;BOMB IF # OF ARGS. NE 1 91 000006 012700 000003 MOV #3,R0 ;R0=N=3 92 000012 000405 BR 20$ 93 000014 022725 000002 VCLR: CMP #2,(R5)+ ;CHECK FOR 2 ARGUMENTS 94 000020 001015 BNE BOMB ;BOMB IF # OF ARGS. NE 2 95 000022 017500 000002 MOV @2(R5),R0 ;R0=N 96 000026 011504 20$: MOV (R5),R4 ;R4=ADDRESS OF C 97 000030 170001 SETF ;SET FLOATING MODE 98 000032 170400 CLRF F0 ;F0=0 99 ;LOOP TO CLEAR VECTOR 100 000034 174024 60$: STF F0,(R4)+ ;C(I)=0 101 000036 077002 SOB R0,60$ ;DONE? 102 000040 000207 RTS PC ;RETURN 103 000042 012746 046720 BOMB3: MOV #46720,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 104 000046 012704 107253 MOV #107253,R4 ;MOVE 1ST HALF OF NAME TO R4 105 000052 000404 BR 70$ 106 000054 012746 070200 BOMB: MOV #70200,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 107 000060 012704 105004 MOV #105004,R4 ;MOVE 1ST HALF OF NAME TO R4 108 000064 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 109 000070 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 110 000001 .END VCLR CLEARS A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000054R F0 =%000000 VCLR 000014RG V3CLR 000000RG $BOMB = ****** GX BOMB3 000042R NAM$ = ****** GX . ABS. 000000 000 000074 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 84 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VCLR,LS:VCLR=VCLR VCLRD CLEARS A VECTOR (DOUBLE MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VCLRD CLEARS A VECTOR (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VCLRD, V3CLRD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000000 022725 000001 V3CLRD: CMP #1,(R5)+ ;CHECK FOR 1 ARGUMENTS 8 000004 001016 BNE BOMB3 ;BOMB IF # OF ARGS. NE 1 9 000006 012700 000003 MOV #3,R0 ;R0=N=3 10 000012 000405 BR 20$ 11 000014 022725 000002 VCLRD: CMP #2,(R5)+ ;CHECK FOR 2 ARGUMENTS 12 000020 001015 BNE BOMB ;BOMB IF # OF ARGS. NE 2 13 000022 017500 000002 MOV @2(R5),R0 ;R0=N 14 000026 011504 20$: MOV (R5),R4 ;R4=ADDRESS OF C 15 000030 170011 SETD ;SET FLOATING DOUBLE MODE 16 000032 170400 CLRD F0 ;F0=0 17 ;LOOP TO CLEAR VECTOR 18 000034 174024 60$: STD F0,(R4)+ ;C(I)=0 19 000036 077002 SOB R0,60$ ;DONE? 20 000040 000207 RTS PC ;RETURN 21 000042 012746 046724 BOMB3: MOV #46724,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 22 000046 012704 107253 MOV #107253,R4 ;MOVE 1ST HALF OF NAME TO R4 23 000052 000404 BR 70$ 24 000054 012746 070440 BOMB: MOV #70440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 25 000060 012704 105004 MOV #105004,R4 ;MOVE 1ST HALF OF NAME TO R4 26 000064 004467 000000G 70$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 27 000070 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 28 000001 .END VCLRD CLEARS A VECTOR (DOUBLE MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMB 000054R F0 =%000000 VCLRD 000014RG V3CLRD 000000RG $BOMB = ****** GX BOMB3 000042R NAM$ = ****** GX . ABS. 000000 000 000074 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 84 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VCLRD,LS:VCLRD=VCLRD VCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VCOM LINEAR COMBINATION OF TWO VECTORS 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VCOM 5 ;.INDEX V3COM 6 ;.INDEX VCOMD 7 ;.INDEX V3COMD 8 ;.TITLE SUBROUTINE VCOM 9 ; 10 ; CALL VCOM (C,P,A,Q,B,N) 11 ; 12 ; CALL V3COM (C,P,A,Q,B) 13 ; 14 ; CALL VCOMD (C,P,A,Q,B,N) 15 ; 16 ; CALL V3COMD (C,P,A,Q,B) 17 ; 18 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 19 ; 20 ; FUNCTION: 21 ; 22 ; LINEAR COMBINATION OF TWO VECTORS 23 ; 24 ; C = P*A + Q*B 25 ; 26 ; 27 ; LANGUAGE: MACRO-11 28 ; 29 ; 30 ; ARGUMENTS: 31 ; 32 ; C = OUTPUT VECTOR 33 ; P,Q = SCALARS 34 ; A,B = INPUT VECTOR 35 ; N = VECTOR DIMENSION 36 ; 37 ; 38 ; COMMONS: 39 ; 40 ; (NONE) 41 ; 42 ; 43 ; GENERAL DESCRIPTION: 44 ; 45 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 46 ; 47 ; 48 ; SINGLE PRECISION - VCOM FOR N-VECTORS 49 ; V3COM FOR 3-VECTORS 50 ; 51 ; DOUBLE PRECISION - VCOMD FOR N-VECTORS 52 ; V3COMD FOR 3-VECTORS 53 ; 54 ; 55 ; 56 ; PERIPHERAL INPUT/OUTPUT: 57 ; VCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; (NONE) 59 ; 60 ; 61 ; LOGICAL UNIT USAGE: 62 ; 63 ; (NONE) 64 ; 65 ; 66 ; EXTERNAL ROUTINES CALLED: 67 ; 68 ; NAM$ 69 ; $BOMB 70 ; 71 ;- --EXTSPC>> 72 ; 73 ; WRITTEN BY: 74 ; 75 ; DENIS MAHONY AND SAM MILLER 08/15/79 76 ; 77 ; 78 ; MODIFIED BY: 79 ; 80 ; ********** **DATE** 81 ; **DETAIL** 82 ; 83 ;- --EXTSPC>> VCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 2 85 .GLOBL VCOM, V3COM 86 .ENABL LSB 87 ; 88 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 89 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 90 000002 F2=R2 91 000003 F3=R3 92 000000 022725 000005 V3COM: CMP #5,(R5)+ ;CHECK NUMBER OF ARGUMENTS 93 000004 001030 BNE BOMB3 ;BOMB IF # OF ARGS. IS INCORRECT 94 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 95 000012 000405 BR 10$ 96 000014 022725 000006 VCOM: CMP #6,(R5)+ ;ARE THERE 6 ARGUMENTS? 97 000020 001027 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 98 000022 117502 000012 MOVB @12(R5),R2 ;R2=VECTOR SIZE=N 99 000026 012503 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C 100 000030 012500 MOV (R5)+,R0 ;R0=ADDRESS OF P 101 000032 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 102 000034 012501 MOV (R5)+,R1 ;R1=ADDRESS OF Q 103 000036 011505 MOV (R5),R5 ;R5=ADDRESS OF B 104 000040 170001 SETF ;SET FLOATING DOUBLE MODE 105 000042 172610 LDF (R0),F2 ;F2=P 106 000044 172711 LDF (R1),F3 ;F3=Q 107 ; LOOP TO COMBINE VECTORS 108 000046 172424 20$: LDF (R4)+,F0 ;GET A(I) 109 000050 171002 MULF F2,F0 ;P*A(I) 110 000052 172525 LDF (R5)+,F1 ;GET B(I) 111 000054 171103 MULF F3,F1 ;Q*B(I) 112 000056 172100 ADDF F0,F1 ;P*A(I) + Q*B(I) 113 000060 174123 STF F1,(R3)+ ;PUT SUM IN C(I) 114 000062 077207 SOB R2,20$ ;DONE? 115 000064 000207 RTS PC ;RETURN 116 000066 012746 057710 BOMB3: MOV #57710,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 117 000072 012704 107253 MOV #107253,R4 ;MOVE 1ST HALF OF NAME TO R4 118 000076 000404 BR 30$ 119 000100 012746 050500 BOMB: MOV #50500,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 120 000104 012704 105007 MOV #105007,R4 ;MOVE 1ST HALF OF NAME TO R4 121 000110 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 122 000114 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 123 000001 .END VCOM LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000100R F0 =%000000 F2 =%000002 NAM$ = ****** GX V3COM 000000RG BOMB3 000066R F1 =%000001 F3 =%000003 VCOM 000014RG $BOMB = ****** GX . ABS. 000000 000 000120 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 99 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 VCOM,LS:VCOM=VCOM VCOMD LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VCOMD LINEAR COMBINATION OF TWO VECTORS (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VCOMD, V3COMD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000002 F2=R2 9 000003 F3=R3 10 000000 022725 000005 V3COMD: CMP #5,(R5)+ ;CHECK NUMBER OF ARGUMENTS 11 000004 001030 BNE BOMB3D ;BOMB IF # OF ARGS. IS INCORRECT 12 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 13 000012 000405 BR 10$ 14 000014 022725 000006 VCOMD: CMP #6,(R5)+ ;ARE THERE 6 ARGUMENTS? 15 000020 001027 BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT 16 000022 117502 000012 MOVB @12(R5),R2 ;R2=VECTOR SIZE=N 17 000026 012503 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C 18 000030 012500 MOV (R5)+,R0 ;R0=ADDRESS OF P 19 000032 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 20 000034 012501 MOV (R5)+,R1 ;R1=ADDRESS OF Q 21 000036 011505 MOV (R5),R5 ;R5=ADDRESS OF B 22 000040 170011 SETD ;SET FLOATING DOUBLE MODE 23 000042 172610 LDD (R0),F2 ;F2=P 24 000044 172711 LDD (R1),F3 ;F3=Q 25 ; LOOP TO ADD VECTORS 26 000046 172424 20$: LDD (R4)+,F0 ;GET A(I) 27 000050 171002 MULD F2,F0 ;P*A(I) 28 000052 172525 LDD (R5)+,F1 ;GET B(I) 29 000054 171103 MULD F3,F1 ;Q*B(I) 30 000056 172100 ADDD F0,F1 ;P*A(I) + Q*B(I) 31 000060 174123 STD F1,(R3)+ ;PUT SUM IN C(I) 32 000062 077207 SOB R2,20$ ;DONE? 33 000064 000207 RTS PC ;RETURN 34 000066 012746 057714 BOMB3D: MOV #57714,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 35 000072 012704 107253 MOV #107253,R4 ;MOVE 1ST HALF OF NAME TO R4 36 000076 000404 BR 30$ 37 000100 012746 050740 BOMBD: MOV #50740,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 38 000104 012704 105007 MOV #105007,R4 ;MOVE 1ST HALF OF NAME TO R4 39 000110 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 40 000114 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 41 000001 .END VCOMD LINEAR COMBINATION OF TWO MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMBD 000100R F0 =%000000 F2 =%000002 NAM$ = ****** GX V3COMD 000000RG BOMB3D 000066R F1 =%000001 F3 =%000003 VCOMD 000014RG $BOMB = ****** GX . ABS. 000000 000 000120 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 99 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VCOMD,LS:VCOMD=VCOMD VMAG MAGNITUDE OF VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VMAG MAGNITUDE OF VECTOR 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VMAG 5 ;.INDEX V3MAG 6 ;.INDEX VMAGD 7 ;.INDEX V3MAGD 8 ;.TITLE FUNCTION VMAG 9 ; 10 ; VMAG (A,N) 11 ; 12 ; V3MAG (A) 13 ; 14 ; VMAGD (A,N) 15 ; 16 ; V3MAGD (A) 17 ; 18 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 19 ; 20 ; FUNCTION: 21 ; 22 ; MAGNITUDE OF VECTOR 23 ; 24 ; [ A(1)*A(1) + A(2)*A(2) + ... + A(N)*A(N) ] 1/2 25 ; 26 ; 27 ; LANGUAGE: MACRO-11 28 ; 29 ; 30 ; ARGUMENTS: 31 ; 32 ; A = INPUT N-VECTOR 33 ; N = VECTOR DIMENSION 34 ; 35 ; 36 ; COMMONS: 37 ; 38 ; (NONE) 39 ; 40 ; 41 ; GENERAL DESCRIPTION: 42 ; 43 ; A IS REAL AND N IS INTEGER. 44 ; 45 ; 46 ; SINGLE PRECISION - VMAG FOR N-VECTORS 47 ; V3MAG FOR 3-VECTORS 48 ; 49 ; DOUBLE PRECISION - VMAGD FOR N-VECTORS 50 ; V3MAGD FOR 3-VECTORS 51 ; 52 ; NOTE -- SINGLE PRECISION ROUTINE MAINTAINS ACCURACY BY 53 ; ACCUMULATING INTERMEDIATE QUANTITIES AS DOUBLE PRECISION 54 ; 55 ; 56 ; PERIPHERAL INPUT/OUTPUT: 57 ; VMAG MAGNITUDE OF VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; (NONE) 59 ; 60 ; 61 ; LOGICAL UNIT USAGE: 62 ; 63 ; (NONE) 64 ; 65 ; 66 ; EXTERNAL ROUTINES CALLED: 67 ; 68 ; $$DSQR - DOUBLE PRECISON SQUARE ROOT 69 ; NAM$ 70 ; $BOMB 71 ; 72 ;- --EXTSPC>> 73 ; 74 ; WRITTEN BY: 75 ; 76 ; DENIS MAHONY AND SAM MILLER 08/15/79 77 ; 78 ; 79 ; MODIFIED BY: 80 ; 81 ; ********** **DATE** 82 ; **DETAIL** 83 ; 84 ;- --EXTSPC>> VMAG MAGNITUDE OF VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 2 86 .GLOBL VMAG, V3MAG, $$DSQR 87 .ENABL LSB 88 ; 89 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 90 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 91 000000 022725 000001 V3MAG: CMP #1,(R5)+ ;CHECK NUMBER OF ARGUMENTS 92 000004 001025 BNE BOMB3 ;BOMB IF # OF ARGS. NE 1 93 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 94 000012 000405 BR 10$ 95 000014 022725 000002 VMAG: CMP #2,(R5)+ ;ARE THERE 2 ARGUMENTS? 96 000020 001024 BNE BOMB ;BOMB IF # OF ARGS. NE 2 97 000022 117502 000002 MOVB @2(R5),R2 ;R2=VECTOR SIZE=N 98 000026 011503 10$: MOV (R5),R3 ;R3=ADDRESS OF A 99 000030 170011 SETD ;SET FLOATING DOUBLE MODE 100 000032 170400 CLRD F0 ;INITIALIZE MAGNITUDE TO 0 101 ; LOOP TO FORM MAGNITUDE OF VECTOR 102 000034 177523 20$: LDCFD (R3)+,F1 ;GET A(I) 103 000036 171101 MULD F1,F1 ;A(I)*A(I) 104 000040 172001 ADDD F1,F0 ;SUM OF A(I)*A(I) 105 000042 077204 SOB R2,20$ ;DONE? 106 000044 004767 000000G JSR PC,$$DSQR ;TAKE SQUARE ROOT 107 ; PLACE SINGLE PRECISION NUMBER ON STACK AND POP OFF INTO 108 ; REGISTERS R0 AND R1 SINCE THAT IS CONVENTION FOR RETURN 109 ; OF REAL*4 FUNCTIONAL VALUE 110 000050 176046 STCDF F0,-(SP) 111 000052 012600 MOV (SP)+,R0 112 000054 012601 MOV (SP)+,R1 113 000056 000207 RTS PC ;RETURN 114 000060 012746 003530 BOMB3: MOV #3530,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 115 000064 012704 107265 MOV #107265,R4 ;MOVE 1ST HALF OF NAME TO R4 116 000070 000404 BR 30$ 117 000072 012746 025700 BOMB: MOV #25700,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 118 000076 012704 105611 MOV #105611,R4 ;MOVE 1ST HALF OF NAME TO R4 119 000102 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 120 000106 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 121 000001 .END VMAG MAGNITUDE OF VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000072R F0 =%000000 NAM$ = ****** GX V3MAG 000000RG $$DSQR= ****** G BOMB3 000060R F1 =%000001 VMAG 000014RG $BOMB = ****** GX . ABS. 000000 000 000112 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 94 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VMAG,LS:VMAG=VMAG VMAGD MAGNITUDE OF VECTOR (DO MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VMAGD MAGNITUDE OF VECTOR (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VMAGD, V3MAGD, $$DSQR 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 022725 000001 V3MAGD: CMP #1,(R5)+ ;CHECK NUMBER OF ARGUMENTS 9 000004 001027 BNE BOMB3D ;BOMB IF # OF ARGS. NE 1 10 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 11 000012 000405 BR 10$ 12 000014 022725 000002 VMAGD: CMP #2,(R5)+ ;ARE THERE 2 ARGUMENTS? 13 000020 001026 BNE BOMBD ;BOMB IF # OF ARGS. NE 2 14 000022 117502 000002 MOVB @2(R5),R2 ;R2=VECTOR SIZE=N 15 000026 011503 10$: MOV (R5),R3 ;R3=ADDRESS OF A 16 000030 170011 SETD ;SET FLOATING DOUBLE MODE 17 000032 170400 CLRD F0 ;INITIALIZE MAGNITUDE TO 0 18 ; LOOP TO FORM MAGNITUDE OF VECTOR 19 000034 172523 20$: LDD (R3)+,F1 ;GET A(I) 20 000036 171101 MULD F1,F1 ;A(I)*A(I) 21 000040 172001 ADDD F1,F0 ;SUM OF A(I)*A(I) 22 000042 077204 SOB R2,20$ ;DONE? 23 000044 004767 000000G JSR PC,$$DSQR ;TAKE SQUARE ROOT 24 ; PLACE DOUBLE PRECISION NUMBER ON STACK AND POP OFF INTO 25 ; REGISTERS R0,R1,R2,R3 SINCE THAT IS CONVENTION FOR RETURN 26 ; OF REAL*8 FUNCTIONAL VALUE 27 000050 174046 STD F0,-(SP) 28 000052 012600 MOV (SP)+,R0 29 000054 012601 MOV (SP)+,R1 30 000056 012602 MOV (SP)+,R2 31 000060 012603 MOV (SP)+,R3 32 000062 000207 RTS PC ;RETURN 33 000064 012746 003534 BOMB3D: MOV #3534,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 34 000070 012704 107265 MOV #107265,R4 ;MOVE 1ST HALF OF NAME TO R4 35 000074 000404 BR 30$ 36 000076 012746 026140 BOMBD: MOV #26140,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 37 000102 012704 105611 MOV #105611,R4 ;MOVE 1ST HALF OF NAME TO R4 38 000106 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 39 000112 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 40 000001 .END VMAGD MAGNITUDE OF VECTOR (DO MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMBD 000076R F0 =%000000 NAM$ = ****** GX V3MAGD 000000RG $$DSQR= ****** G BOMB3D 000064R F1 =%000001 VMAGD 000014RG $BOMB = ****** GX . ABS. 000000 000 000116 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 94 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VMAGD,LS:VMAGD=VMAGD VMOV MOVE ONE VECTOR INTO ANOT MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VMOV MOVE ONE VECTOR INTO ANOTHER 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VMOV 5 ;INDEX VMOVD 6 ;.TITLE SUBROUTINE VMOV 7 ; 8 ; CALL VMOV (C,A,N) 9 ; 10 ; CALL VMOVD (C,A,N) 11 ; 12 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 13 ; 14 ; FUNCTION: 15 ; 16 ; MOVE A VECTOR TO ANOTHER VECTOR 17 ; 18 ; C = A 19 ; 20 ; 21 ; LANGUAGE: MACRO-11 22 ; 23 ; 24 ; ARGUMENTS: 25 ; 26 ; C = OUTPUT N-VECTOR 27 ; N = VECTOR DIMENSION 28 ; A = INPUT N-VECTOR 29 ; 30 ; 31 ; COMMONS: 32 ; 33 ; (NONE) 34 ; 35 ; 36 ; GENERAL DESCRIPTION: 37 ; 38 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 39 ; 40 ; SINGLE PRECISION - VMOV 41 ; 42 ; DOUBLE PRECISION - VMOVD 43 ; 44 ; 45 ; A AND C MUST NOT OVERLAP 46 ; 47 ; 48 ; PERIPHERAL INPUT/OUTPUT: 49 ; 50 ; (NONE) 51 ; 52 ; 53 ; LOGICAL UNIT USAGE: 54 ; 55 ; (NONE) 56 ; 57 ; VMOV MOVE ONE VECTOR INTO ANOT MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; EXTERNAL ROUTINES CALLED: 59 ; 60 ; NAM$ 61 ; $BOMB 62 ; 63 ;- --EXTSPC>> 64 ; 65 ; WRITTEN BY: 66 ; 67 ; DENIS MAHONY AND SAM MILLER 08/15/79 68 ; 69 ; 70 ; MODIFIED BY: 71 ; 72 ; ********** **DATE** 73 ; **DETAIL** 74 ; 75 ;- --EXTSPC>> VMOV MOVE ONE VECTOR INTO ANOT MACRO M1110 16-AUG-79 18:18 PAGE 2 77 .GLOBL VMOV 78 .ENABL LSB 79 ; 80 000000 VMOV: 81 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 82 000004 001007 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 83 000006 012500 MOV (R5)+,R0 ;R0=ADDRESS OF C 84 000010 012501 MOV (R5)+,R1 ;R1=ADDRESS OF A 85 000012 017502 000000 MOV @(R5),R2 ;R2=N 86 ; LOOP TO MOVE VECTOR 87 000016 012120 10$: MOV (R1)+,(R0)+ ;C(I)=A(I) 88 000020 077202 SOB R2,10$ ;DONE? 89 000022 000207 RTS PC ;RETURN 90 000024 012746 104600 BOMB: MOV #104600,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 91 000030 012704 105627 MOV #105627,R4 ;MOVE 1ST HALF OF NAME TO R4 92 000034 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 93 000040 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 94 000001 .END VMOV MOVE ONE VECTOR INTO ANOT MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000024R NAM$ = ****** GX VMOV 000000RG $BOMB = ****** GX . ABS. 000000 000 000044 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 59 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 VMOV,LS:VMOV=VMOV VMOVD MOVE ONE VECTOR INTO ANO MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VMOVD MOVE ONE VECTOR INTO ANOTHER (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VMOVD 4 .ENABL LSB 5 ; 6 000000 F0=R0 7 000000 VMOVD: 8 000000 022725 000003 CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 9 000004 001011 BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT 10 000006 012500 MOV (R5)+,R0 ;R0=ADDRESS OF C 11 000010 012501 MOV (R5)+,R1 ;R1=ADDRESS OF A 12 000012 017502 000000 MOV @(R5),R2 ;R2=N 13 ; LOOP TO MOVE VECTOR 14 000016 170011 SETD 15 000020 172421 10$: LDD (R1)+,F0 ;C(I)=A(I) 16 000022 174020 STD F0,(R0)+ 17 000024 077203 SOB R2,10$ ;DONE? 18 000026 000207 RTS PC ;RETURN 19 000030 012746 105040 BOMBD: MOV #105040,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 20 000034 012704 105627 MOV #105627,R4 ;MOVE 1ST HALF OF NAME TO R4 21 000040 004467 000000G JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 22 000044 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 23 000001 .END VMOVD MOVE ONE VECTOR INTO ANO MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMBD 000030R F0 =%000000 NAM$ = ****** GX VMOVD 000000RG $BOMB = ****** GX . ABS. 000000 000 000050 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 64 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VMOVD,LS:VMOVD=VMOVD VSCL SCALE A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VSCL SCALE A VECTOR 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VSCL 5 ;INDEX V3SCL 6 ;INDEX VSCLD 7 ;INDEX V3SCLD 8 ;.TITLE SUBROUTINE VSCL 9 ; 10 ; CALL VSCL (C,P,A,N) 11 ; 12 ; CALL VSCLD (C,P,A,N) 13 ; 14 ; CALL V3SCL (C,P,A) 15 ; 16 ; CALL V3SCLD (C,P,A) 17 ; 18 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 19 ; 20 ; FUNCTION: 21 ; 22 ; SCALAR TIMES A VECTOR 23 ; 24 ; C = P*A 25 ; 26 ; 27 ; LANGUAGE: MACRO-11 28 ; 29 ; 30 ; ARGUMENTS: 31 ; 32 ; C = OUTPUT VECTOR 33 ; P = SCALAR 34 ; A = INPUT VECTOR 35 ; N = VECTOR DIMENSION 36 ; 37 ; 38 ; COMMONS: 39 ; 40 ; (NONE) 41 ; 42 ; 43 ; GENERAL DESCRIPTION: 44 ; 45 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 46 ; 47 ; SINGLE PRECISION - VSCL FOR N-VECTORS 48 ; V3SCL FOR 3-VECTORS 49 ; 50 ; DOUBLE PRECISION - VSCLD FOR N-VECTORS 51 ; V3SCLD FOR 3-VECTORS 52 ; 53 ; 54 ; 55 ; 56 ; PERIPHERAL INPUT/OUTPUT: 57 ; VSCL SCALE A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 1-1 58 ; (NONE) 59 ; 60 ; 61 ; LOGICAL UNIT USAGE: 62 ; 63 ; (NONE) 64 ; 65 ; 66 ; EXTERNAL ROUTINES CALLED: 67 ; 68 ; NAM$ 69 ; $BOMB 70 ; 71 ;- --EXTSPC>> 72 ; 73 ; WRITTEN BY: 74 ; 75 ; DENIS MAHONY AND SAM MILLER 08/15/79 76 ; 77 ; 78 ; MODIFIED BY: 79 ; 80 ; ********** **DATE** 81 ; **DETAIL** 82 ; 83 ;- --EXTSPC>> VSCL SCALE A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 2 85 .GLOBL VSCL, V3SCL 86 .ENABL LSB 87 ; 88 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 89 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 90 000000 022725 000003 V3SCL: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 91 000004 001022 BNE BOMB3 ;BOMB IF # OF ARGS. IS INCORRECT 92 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 93 000012 000405 BR 10$ 94 000014 022725 000004 VSCL: CMP #4,(R5)+ ;ARE THERE 4 ARGUMENTS? 95 000020 001021 BNE BOMB ;BOMB IF # OF ARGS. IS INCORRECT 96 000022 117502 000006 MOVB @6(R5),R2 ;R2=VECTOR SIZE=N 97 000026 012503 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C 98 000030 012500 MOV (R5)+,R0 ;R0=ADDRESS OF P 99 000032 011504 MOV (R5),R4 ;R4=ADDRESS OF A 100 000034 170001 SETF ;SET FLOATING MODE 101 000036 172510 LDF (R0),F1 ;F1=P 102 ; LOOP TO FORM VECTOR 103 000040 172424 20$: LDF (R4)+,F0 ;GET A(I) 104 000042 171001 MULF F1,F0 ;P*A(I) 105 000044 174023 STF F0,(R3)+ ;PUT SUM IN C(I) 106 000046 077204 SOB R2,20$ ;DONE? 107 000050 000207 RTS PC ;RETURN 108 000052 012746 012240 BOMB3: MOV #12240,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 109 000056 012704 107273 MOV #107273,R4 ;MOVE 1ST HALF OF NAME TO R4 110 000062 000404 BR 30$ 111 000064 012746 045400 BOMB: MOV #45400,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 112 000070 012704 106173 MOV #106173,R4 ;MOVE 1ST HALF OF NAME TO R4 113 000074 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 114 000100 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 115 000001 .END VSCL SCALE A VECTOR MACRO M1110 16-AUG-79 18:18 PAGE 2-1 SYMBOL TABLE BOMB 000064R F0 =%000000 NAM$ = ****** GX V3SCL 000000RG $BOMB = ****** GX BOMB3 000052R F1 =%000001 VSCL 000014RG . ABS. 000000 000 000104 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 89 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VSCL,LS:VSCL=VSCL VSCLD SCALE A VECTOR (DOUBLE MACRO M1110 16-AUG-79 18:18 PAGE 1 1 .TITLE VSCLD SCALE A VECTOR (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VSCLD, V3SCLD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 022725 000003 V3SCLD: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 9 000004 001022 BNE BOMB3D ;BOMB IF # OF ARGS. IS INCORRECT 10 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 11 000012 000405 BR 10$ 12 000014 022725 000004 VSCLD: CMP #4,(R5)+ ;ARE THERE 4 ARGUMENTS? 13 000020 001021 BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT 14 000022 117502 000006 MOVB @6(R5),R2 ;R2=VECTOR SIZE=N 15 000026 012503 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C 16 000030 012500 MOV (R5)+,R0 ;R0=ADDRESS OF P 17 000032 011504 MOV (R5),R4 ;R4=ADDRESS OF A 18 000034 170011 SETD ;SET FLOATING DOUBLE MODE 19 000036 172510 LDD (R0),F1 ;F1=P 20 ; LOOP TO FORM VECTOR 21 000040 172424 20$: LDD (R4)+,F0 ;GET A(I) 22 000042 171001 MULD F1,F0 ;P*A(I) 23 000044 174023 STD F0,(R3)+ ;PUT SUM IN C(I) 24 000046 077204 SOB R2,20$ ;DONE? 25 000050 000207 RTS PC ;RETURN 26 000052 012746 012244 BOMB3D: MOV #12244,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 27 000056 012704 107273 MOV #107273,R4 ;MOVE 1ST HALF OF NAME TO R4 28 000062 000404 BR 30$ 29 000064 012746 045640 BOMBD: MOV #45640,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 30 000070 012704 106173 MOV #106173,R4 ;MOVE 1ST HALF OF NAME TO R4 31 000074 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 32 000100 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 33 000001 .END VSCLD SCALE A VECTOR (DOUBLE MACRO M1110 16-AUG-79 18:18 PAGE 1-1 SYMBOL TABLE BOMBD 000064R F0 =%000000 NAM$ = ****** GX V3SCLD 000000RG $BOMB = ****** GX BOMB3D 000052R F1 =%000001 VSCLD 000014RG . ABS. 000000 000 000104 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 89 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VSCLD,LS:VSCLD=VSCLD VSUB SUBTRACTION OF TWO VECTOR MACRO M1110 16-AUG-79 18:19 PAGE 1 1 .TITLE VSUB SUBTRACTION OF TWO VECTORS 2 .IDENT /1.0/ ; 08/15/79 3 ;+ ++EXTSPC>> 4 ;.NAME VSUB 5 ;.INDEX V3SUB 6 ;.INDEX VSUBD 7 ;.INDEX V3SUBD 8 ;.TITLE SUBROUTINE VSUB 9 ; 10 ; CALL VSUB (C,A,B,N) 11 ; 12 ; CALL V3SUB (C,A,B) 13 ; 14 ; CALL VSUBD (C,A,B,N) 15 ; 16 ; CALL V3SUBD (C,A,B) 17 ; 18 ; VERSION: VECTOR / MATRIX ROUTINES SAM MILLER REL 1.0 19 ; 20 ; FUNCTION: 21 ; 22 ; VECTOR SUBTRACTION 23 ; 24 ; C = A - B 25 ; 26 ; 27 ; LANGUAGE: MACRO-11 28 ; 29 ; 30 ; ARGUMENTS: 31 ; 32 ; C = OUTPUT VECTOR 33 ; A,B = INPUT VECTORS 34 ; N = VECTOR DIMENSION 35 ; 36 ; 37 ; COMMONS: 38 ; 39 ; (NONE) 40 ; 41 ; 42 ; GENERAL DESCRIPTION: 43 ; 44 ; ALL REAL ARGUMENTS EXCEPT INTEGER N. 45 ; 46 ; 47 ; SINGLE PRECISION - VSUB FOR N-VECTORS 48 ; V3SUB FOR 3-VECTORS 49 ; 50 ; DOUBLE PRECISION - VSUBD FOR N-VECTORS 51 ; V3SUBD FOR 3-VECTORS 52 ; 53 ; 54 ; 55 ; PERIPHERAL INPUT/OUTPUT: 56 ; 57 ; (NONE) VSUB SUBTRACTION OF TWO VECTOR MACRO M1110 16-AUG-79 18:19 PAGE 1-1 58 ; 59 ; 60 ; LOGICAL UNIT USAGE: 61 ; 62 ; (NONE) 63 ; 64 ; 65 ; EXTERNAL ROUTINES CALLED: 66 ; 67 ; NAM$ 68 ; $BOMB 69 ; 70 ;- --EXTSPC>> 71 ; 72 ; WRITTEN BY: 73 ; 74 ; DENIS MAHONY AND SAM MILLER 08/15/79 75 ; 76 ; 77 ; MODIFIED BY: 78 ; 79 ; ********** **DATE** 80 ; **DETAIL** 81 ; 82 ;- --EXTSPC>> VSUB SUBTRACTION OF TWO VECTOR MACRO M1110 16-AUG-79 18:19 PAGE 2 84 .GLOBL VSUB, V3SUB 85 .ENABL LSB 86 ; 87 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 88 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 89 000000 022725 000003 V3SUB: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 90 000004 001021 BNE BOMB3 ;BOMB IF # OF ARGS. NE 3 91 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 92 000012 000405 BR 10$ 93 000014 022725 000004 VSUB: CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS 94 000020 001020 BNE BOMB ;BOMB IF # OF ARGS. NE 4 95 000022 117502 000006 MOVB @6(R5),R2 ;R2=VECTOR SIZE=N 96 000026 012503 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C 97 000030 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 98 000032 011505 MOV (R5),R5 ;R5=ADDRESS OF B 99 000034 170001 SETF ;SET FLOATING MODE 100 ; LOOP TO SUB VECTORS 101 000036 172524 20$: LDF (R4)+,F1 ;GET A(I) 102 000040 173125 SUBF (R5)+,F1 ;A(I) - B(I) 103 000042 174123 STF F1,(R3)+ ;PUT DIF IN C(I) 104 000044 077204 SOB R2,20$ ;DONE? 105 000046 000207 RTS PC ;RETURN 106 000050 012746 101620 BOMB3: MOV #101620,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 107 000054 012704 107273 MOV #107273,R4 ;MOVE 1ST HALF OF NAME TO R4 108 000060 000404 BR 30$ 109 000062 012746 006200 BOMB: MOV #6200,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 110 000066 012704 106215 MOV #106215,R4 ;MOVE 1ST HALF OF NAME TO R4 111 000072 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 112 000076 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 113 000001 .END VSUB SUBTRACTION OF TWO VECTOR MACRO M1110 16-AUG-79 18:19 PAGE 2-1 SYMBOL TABLE BOMB 000062R F0 =%000000 NAM$ = ****** GX V3SUB 000000RG $BOMB = ****** GX BOMB3 000050R F1 =%000001 VSUB 000014RG . ABS. 000000 000 000102 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 89 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:03 VSUB,LS:VSUB=VSUB VSUBD SUBTRACTION OF TWO VECTO MACRO M1110 16-AUG-79 18:19 PAGE 1 1 .TITLE VSUBD SUBTRACTION OF TWO VECTORS (DOUBLE PRECISION) 2 .IDENT /1.0/ ; 08/15/79 3 .GLOBL VSUBD, V3SUBD 4 .ENABL LSB 5 ; 6 000000 F0=R0 ;DEFINE FLOATING REGISTER 0 7 000001 F1=R1 ;DEFINE FLOATING REGISTER 1 8 000000 022725 000003 V3SUBD: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS 9 000004 001021 BNE BOMB3D ;BOMB IF # OF ARGS. NE 3 10 000006 112702 000003 MOVB #3,R2 ;R2=VECTOR SIZE=3 11 000012 000405 BR 10$ 12 000014 022725 000004 VSUBD: CMP #4,(R5)+ ;CHECK NUMBER OF ARGUMENTS 13 000020 001020 BNE BOMBD ;BOMB IF # OF ARGS. NE 4 14 000022 117502 000006 MOVB @6(R5),R2 ;R2=VECTOR SIZE=N 15 000026 012503 10$: MOV (R5)+,R3 ;R3=ADDRESS OF C 16 000030 012504 MOV (R5)+,R4 ;R4=ADDRESS OF A 17 000032 011505 MOV (R5),R5 ;R5=ADDRESS OF B 18 000034 170011 SETD ;SET FLOATING DOUBLE MODE 19 ; LOOP TO SUB VECTORS 20 000036 172524 20$: LDD (R4)+,F1 ;GET A(I) 21 000040 173125 SUBD (R5)+,F1 ;A(I) - B(I) 22 000042 174123 STD F1,(R3)+ ;PUT DIF IN C(I) 23 000044 077204 SOB R2,20$ ;DONE? 24 000046 000207 RTS PC ;RETURN 25 000050 012746 101624 BOMB3D: MOV #101624,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 26 000054 012704 107273 MOV #107273,R4 ;MOVE 1ST HALF OF NAME TO R4 27 000060 000404 BR 30$ 28 000062 012746 006440 BOMBD: MOV #6440,-(SP) ;MOVE 2ND HALF OF NAME TO STACK 29 000066 012704 106215 MOV #106215,R4 ;MOVE 1ST HALF OF NAME TO R4 30 000072 004467 000000G 30$: JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK 31 000076 000167 000000G JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST 32 000001 .END VSUBD SUBTRACTION OF TWO VECTO MACRO M1110 16-AUG-79 18:19 PAGE 1-1 SYMBOL TABLE BOMBD 000062R F0 =%000000 NAM$ = ****** GX V3SUBD 000000RG $BOMB = ****** GX BOMB3D 000050R F1 =%000001 VSUBD 000014RG . ABS. 000000 000 000102 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 89 WORDS ( 1 PAGES) DYNAMIC MEMORY: 3764 WORDS ( 14 PAGES) ELAPSED TIME: 00:00:02 VSUBD,LS:VSUBD=VSUBD