.TITLE QUADMATH ; ; SUBROUTINE SUBQUAD.MAR ; ; FORTRAN CALLABLE ROUTINE TO SUBTRACT TWO QUAD WORD INTEGERS ; ; CALL SUBQUAD (A,B,C) ; ; RETURNS: A - B -> C ; .ENTRY SUBQUAD ^M ; ; A = 4 B = 8 C = 12 MOVQ @A(AP),R0 ;GET FIRST PARAM FOR SUBTRACT ;NEED TO USE REGISTERS BECAUSE ;SUBWC IS ONLY 2 ADDRESS INSTR. MOVAQ @B(AP),R2 ;GET ADDRESS OF SECOND PARAM. SUBL (R2)+,R0 ;SUBTRACT FIRST HALF OF ARGUMENTS SBWC (R2),R1 ;THEN DO THE SECOND HALF MOVQ R0,@C(AP) ;STORE THE RESULT RET ; ; ; .ENTRY EDIV ^M ; ; CALL EDIV (A,B,C) ; RETURNS A/B -> C ; MOVQ @A(AP),R0 ;GET FIRST ARGUMENT MOVAL @B(AP),R2 ;GET LONGWORD DIVISOR ADDRESS EDIV (R2),R0,R0,R1 ;DO THE DIVISION MOVL R0,@C(AP) ;STORE INTEGER QUOTIENT,IGNORE REM. RET .END