Annotation of coherent/b/lib/libc/crt/i8086/frexp.s, revision 1.1

1.1     ! root        1: ////////
        !             2: /
        !             3: / Intel 8086 C runtime.
        !             4: / Store binary exponent, return mantissa.
        !             5: / SMALL model.
        !             6: /
        !             7: ////////
        !             8: 
        !             9:        .globl  _fpac_
        !            10:        .globl  frexp_
        !            11:        .globl  dzero
        !            12: 
        !            13: EXPBIAS        = 0x80
        !            14: 
        !            15: ////////
        !            16: /
        !            17: / double frexp(dd, xp) double dd; int *xp;
        !            18: / Store binary exponent via xp, return mantissa.
        !            19: /
        !            20: ////////
        !            21: 
        !            22: frexp_:
        !            23:        push    si
        !            24:        push    di
        !            25:        push    bp
        !            26:        mov     bp, sp
        !            27: 
        !            28:        mov     bx, 16(bp)      / xp to BX
        !            29:        mov     ax, 14(bp)      / Get most significant bits
        !            30:        rol     ax, $1          / Get exponent in 1 reg
        !            31:        orb     ah, ah          / Is exponent 0?
        !            32:        jnz     L0              / No
        !            33:        call    dzero           / Yes, zero _fpac_
        !            34:        mov     (bx), ax        / and store 0 through xp
        !            35:        jmp     L1
        !            36: 
        !            37: L0:    movb    cl, ah
        !            38:        subb    ch, ch
        !            39:        sub     cx, $EXPBIAS    / signed
        !            40:        mov     (bx), cx        / *xp = exp
        !            41: 
        !            42:        movb    ah, $EXPBIAS    / zero exponent
        !            43:        ror     ax, $1          / back in place
        !            44:        mov     _fpac_+6, ax
        !            45:        mov     ax, 12(bp)
        !            46:        mov     _fpac_+4, ax
        !            47:        mov     ax, 10(bp)
        !            48:        mov     _fpac_+2, ax
        !            49:        mov     ax, 8(bp)
        !            50: L1:    mov     _fpac_, ax
        !            51: 
        !            52:        pop     bp
        !            53:        pop     di
        !            54:        pop     si
        !            55:        ret

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.