.TITLE .TM ;.MACRO .TM A,L,M,N ;TYPES MATRIX A, DIMENSION LxMxN .GLOBL .TM,.CALL ;M & N MAY BE OMITTED .MCALL .TL,.TF,.TB,.TLQ ERROR: .TLQ <.TM DIMENSION ERROR> JMP .CALL N: .BLKW 1 M: .BLKW 1 L: .BLKW 1 A: .BLKW 1 ;ADDRESS OF MATRIX A .TM: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) TST L BLE ERROR TST M BLE ERROR TST N BLE ERROR .TL MOV A,R0 CMP N,#1 BGT DIMEN3 ;3D MATRIX CMP M,#1 BGT DIMEN2 ;2D MATRIX MOV L,R3 LNL: .TF (R0)+ SOB R3,LNL .TL JMP RET DIMEN2: MOV L,R1 LLL: MOV M,R3 LNM: .TF (R0)+ SOB R3,LNM .TL DEC R1 BLE RET CMP M,#5 ;INSERT BLANK LINE IF WRAPAROUND BLE LLL .TL BR LLL DIMEN3: MOV L,R1 LL: MOV M,R2 LM: MOV N,R3 LNN: .TF (R0)+ SOB R3,LNN .TL DEC R2 BLE DASH CMP N,#5 ;INSERT BLANK LINE IF THERE WAS WRAPAROUND BLE LM .TL BR LM DASH: DEC R1 BLE RET MOV #80.,R3 ;TYPE DASHES LD: .TB #55 SOB R3,LD .TL BR LL RET: MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RETURN .END