Annotation of coherent/b/lib/libc/string/i8086/strchr.m, revision 1.1

1.1     ! root        1: //////////
        !             2: / i8086 C string library.
        !             3: / strchr()
        !             4: / ANSI 4.11.5.2.
        !             5: / Previously known as index().
        !             6: / Entry point for index() retained for backward compatability.
        !             7: //////////
        !             8: 
        !             9: //////////
        !            10: / char *
        !            11: / strchr(String, Char)
        !            12: / char *String;
        !            13: / int Char;
        !            14: /
        !            15: / Find Char in String, return pointer or NULL.
        !            16: //////////
        !            17: 
        !            18: #include <larges.h>
        !            19: 
        !            20: String =       LEFTARG
        !            21: Char   =       String+DPL
        !            22: 
        !            23:        .globl  strchr_
        !            24: strchr_:
        !            25: 
        !            26:        Enter(index_)
        !            27:        Lds     si, String(bp)  / String address to DS:SI
        !            28:        movb    ah, Char(bp)    / Char to AH
        !            29:        cld
        !            30: 
        !            31: 1:     lodsb                   / String character to AL
        !            32:        cmpb    al, ah
        !            33:        je      2f              / Got it, return address
        !            34:        orb     al, al          / Test for NUL
        !            35:        jne     1b              / Not done
        !            36:        movb    ah, al          / End of String, return NULL
        !            37: #if    LARGEDATA
        !            38:        mov     dx, ax
        !            39: #endif
        !            40:        jmp     3f
        !            41: 
        !            42: 2:     dec     si              / Back up to match
        !            43:        mov     ax, si          / AX = offset
        !            44: #if    LARGEDATA
        !            45:        mov     dx, ds          / DX = segment
        !            46: #endif
        !            47: 
        !            48: 3:     Leave

unix.superglobalmegacorp.com

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