Annotation of 41BSD/cmd/px/23case.s, revision 1.1.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.