Annotation of coherent/b/lib/libc/string/i8086/strchr.m, revision 1.1.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.