.TITLE PFCMP FLOATING POINT COMPARE ROUTINE .IDENT /790804/ ;FCMP COMPARES THE TWO FLOATING POINT VALUES ON THE ;TOP OF THE STACK AND SETS THE CONDITION CODES ;TO INDICATE EQUAL, NOT EQUAL, LESS THAN, GREATER THAN, ;LESS THAN OR EQUAL, AND GREATER THAN OR EQUAL. ;THIS ROUTINE DOES NOT USE ANY REGISTERS, AND EXPECTS ;THE TWO FLOATING POINT ROUTINES TO BE ON TOP OF THE ;STACK. THEY WILL BE POPED WHEN THE ROUTINE EXITS. ; $$$097::;FCMP CLR -(SP) ;START OUT EQUAL CMP 10(SP),4(SP) ;COMPARE THE HIGH PARTS BGT CMP1 ;SET GREATER THAN FLAG BLT CMP2 ;SET LESS THAN FLAG TST 4(SP) ;CHECK FOR A OVERFLOW BPL CMP4 ;THE NUMBER WAS POSITIVE CMP 12(SP),6(SP) ;COMPARE THE LOWER PARTS BHI CMP2 ;SET LESS THAN FLAG BLO CMP1 ;SET GREATER THAN FLAG BR CMP3 ;SET EQUAL CMP4: CMP 12(SP),6(SP) ;CHECK LOWER HALF BHI CMP1 ;SET GREATER THAN FLAG BLO CMP2 ;SET LESS THAN FLAG CMP3: MOV (SP)+,6(SP) ;GET STACK READY FOR RETURN MOV (SP)+,6(SP) ;; CMP (SP)+,(SP)+ ;; TST (SP)+ ;SET CONDITION CODES RTS PC ;RETURN CMP1: INC (SP) ;SET GREATER THAN BR CMP3 ;EXIT CMP2: DEC (SP) ;SET LESS THAN BR CMP3 ;EXIT .END