.TITLE IDENTD FORMS AN IDENTITY MATRIX (DOUBLE PRECISION) .IDENT /1.0/ ; 08/15/79 .GLOBL IDENTD .ENABL LSB ; F0=R0 ;DEFINE FLOATING REGISTER 0 F1=R1 ;DEFINE FLOATING REGISTER 1 IDENTD: CMP #3,(R5)+ ;CHECK NUMBER OF ARGUMENTS BNE BOMBD ;BOMB IF # OF ARGS. IS INCORRECT MOV (R5)+,R0 ;R0=ADDRESS OF C MOV @(R5)+,R1 ;R1=N MOV @(R5),R2 ;R2=NRC MOV R2,R3 ;R3=NRC MOV R2,R4 ;NRC ADD #1,R4 ;NRC+1 ASH #3,R4 ;R4=8*(NRC+1) - OFFSET FOR DIAGONAL ELEMENTS MOV R0,R5 ;R5=(C) (NEXT ELEMENT TO SET =1) SETD ;SET FLOATING DOUBLE MODE CLRD F0 ;F0=0 LDD #1.,F1 ;F1=1. ;LOOP TO 'IDENTIZE' MATRIX 10$: STD F0,(R0)+ ;C(I,J)=0 SOB R2,10$ ;DONE WITH THIS COLUMN? STD F1,(R5) ;SET DIAGONAL ELEMENT = 1. ADD R4,R5 ;SET NEXT DIAGONAL ELEMENT MOV R3,R2 ;RESET NRC SOB R1,10$ ;DONE WITH ALL COLUMNS? RTS PC ;RETURN BOMBD: MOV #55244,-(SP) ;MOVE 2ND HALF OF NAME TO STACK MOV #34345,R4 ;MOVE 1ST HALF OF NAME TO R4 JSR R4,NAM$ ;SUBR TO PUT NAME IN WALKBACK JMP $BOMB ;ABORT, $BOMB DOES NOT EXIST .END