Annotation of 40BSD/cmd/px/23case.s, revision 1.1

1.1     ! root        1: #
        !             2: # Copyright (c) 1979 Regents of the University of California
        !             3: #
        !             4: # char sccsid[] = "@(#)23case.s 4.1 10/10/80";
        !             5: #
        !             6: # CASE OPERATORS
        !             7: #
        !             8: _CASE1OP:
        !             9:        cvtbl   (r10)+,r0
        !            10:        bneq    l2401
        !            11:        cvtwl   (r10)+,r0       #r0 has length of case table
        !            12: l2401:
        !            13:        movaw   (r10)[r0],r2    #r2 has pointer to cases
        !            14:        cvtwl   (sp)+,r3        #r3 has case element to find
        !            15:        locc    r3,r0,(r2)      #find case element
        !            16:        beql    caserr          #case not found
        !            17: offset:
        !            18:        mnegl   r0,r0           #calc new lc
        !            19:        cvtwl   (r2)[r0],r1
        !            20:        addl2   r1,r10
        !            21:        jmp     (r8)
        !            22: _CASE2OP:
        !            23:        cvtbl   (r10)+,r0
        !            24:        bneq    l2402
        !            25:        cvtwl   (r10)+,r0       #r0 has length of case table
        !            26: l2402:
        !            27:        movaw   (r10)[r0],r1    #r1 has pointer to cases
        !            28:        movl    r1,r2           #save base pointer
        !            29:        movzwl  (sp)+,r3        #r3 has case element to find
        !            30: l2403:
        !            31:        cmpw    r3,(r1)+        #search for case
        !            32:        beqlu   offset
        !            33:        sobgtr  r0,l2403
        !            34:        brb     caserr          #not found
        !            35: _CASE4OP:
        !            36:        cvtbl   (r10)+,r0
        !            37:        bneq    l2404
        !            38:        cvtwl   (r10)+,r0       #r0 has length of case table
        !            39: l2404:
        !            40:        movaw   (r10)[r0],r1    #r1 has pointer to cases
        !            41:        movl    r1,r2           #save base pointer
        !            42:        movl    (sp)+,r3        #r3 has case element to find
        !            43: l2405:
        !            44:        cmpl    r3,(r1)+        #search for case
        !            45:        beqlu   offset
        !            46:        sobgtr  r0,l2405
        !            47: caserr:
        !            48:        movw    $ECASE,_perrno
        !            49:        jbr     error

unix.superglobalmegacorp.com

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