.TITLE PFLOAT FLOAT INTEGER VALUE .IDENT /790803/ ;FLOAT DOES NOT USE ANY REGISTERS ; .PSECT $$$201::;FLOAT( INTEGER ) MOV 2(SP),6(SP) ;MOVE INTEGER TO LOWER HALF CLR 4(SP) ;CLEAR UPPER HALF OF NUMBER TST 2(SP) ;TEST FOR ZERO AND NEGATIVE BGT 1$ ;POSITIVE NUMBER BEQ DONE ;ZERO NEG 6(SP) ;NEGATIVE BIS #100000,4(SP) ;SET THE SIGN BIT 1$: MOV #230,2(SP) ;BASE EXPONENT VALUE 2$: BIT 4(SP),#200 ;CHECK IF WE ARE DONE BNE 3$ ;FINISH UP ASL 6(SP) ;GET THE LEFT MOST BIT ROLB 4(SP) ;LOAD BIT INTO HIGH PART DEC 2(SP) ;DECREMENT THE EXPONENT BR 2$ ;REPEAT 3$: ASR 2(SP) ;SHIFT EXPONENT TO PROPER PLACE RORB 3(SP) ;AND GET LOWEST BIT ALSO SWAB 2(SP) ;GET EXPONENT IN UPPER HALF BIC #200,4(SP) ;REMOVE HIDDEN BIT BIS 2(SP),4(SP) ;MOVE EXPONENT TO HIGH PART DONE: MOV (SP)+,(SP) ;PREPARE THE STACK FOR RETURN RTS PC .END