Annotation of cci/d/entry/bit_l.s, revision 1.1

1.1     ! root        1: 
        !             2: /*             BITL (bit long) test                                    */
        !             3: /*                                                                     */
        !             4: /*Test name = bitl                                                     */
        !             5: /*Description =                                                                */
        !             6: /*     This test checks 'bitl' instruction as follows:                 */
        !             7: /*     source          mask            N Z V C (flags)                 */
        !             8: /*     ______          ____            ______________                  */
        !             9: /*     0xaa            0x55            0 1 0 1                         */
        !            10: /*     0x55            0xaa            0 1 0 1                         */
        !            11: /*     0x80            0x80            0 0 0 1                         */
        !            12: /*      R               M                ---                           */
        !            13: /*      M               R                ---                           */
        !            14: /*                                                                     */
        !            15: 
        !            16: /*                                                                     */
        !            17: /*     Constants definition for 'bit_x' tests                          */
        !            18: /*                                                                     */
        !            19:        .set    SRCB1,0xaa
        !            20:        .set    SRCW1,0xaaaa
        !            21:        .set    SRCL1,0xaaaaaaaa
        !            22:        .set    MASKB1,0x55
        !            23:        .set    MASKW1,0x5555
        !            24:        .set    MASKL1,0x55555555
        !            25:        .set    SRCB2,MASKB1
        !            26:        .set    SRCW2,MASKW1
        !            27:        .set    SRCL2,MASKL1
        !            28:        .set    MASKB2,SRCB1
        !            29:        .set    MASKW2,SRCW1
        !            30:        .set    MASKL2,SRCL1
        !            31:        .set    SRCB3,0x80
        !            32:        .set    SRCW3,0x8000
        !            33:        .set    SRCL3,0x80000000
        !            34:        .set    MASKB3,SRCB3
        !            35:        .set    MASKW3,SRCW3
        !            36:        .set    MASKL3,SRCL3
        !            37: /*                                                                     */
        !            38: /*     Syst.s - Constants                                              */
        !            39: /*                                                                     */
        !            40:        .set    IPL,8
        !            41:        .set    HIGH,31
        !            42:        .set    ZERO,0
        !            43:        .set    ONES,0xffffffff
        !            44:        .set    N,8
        !            45:        .set    Z,4
        !            46:        .set    V,2
        !            47:        .set    C,1
        !            48:        .set    T,16
        !            49:        .set    IV,32
        !            50:        .set    FU,64
        !            51:        .set    DV,128
        !            52:        .set    PSWMASK,0x003f
        !            53: 
        !            54:        .globl  _bit_l
        !            55: _bit_l:
        !            56:        callf   $4,_setjmp      /* save context for return from error */
        !            57:        movab   _bit_l,_stpc    /* save address of subtest */
        !            58:        movl    $1,_subtst      /* subtest number */
        !            59:        movl    $2,_no_opr      /* number of operand in use */
        !            60:        movl    $MASKL1,_opr    /* first operand */
        !            61:        movl    $SRCL1,_opr + 4 /* second operand */
        !            62: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !            63:        movl    $SRCL1,r4       /*r4 = source                           */
        !            64:        movl    $MASKL1,tloc    /*tloc = mask                           */
        !            65:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !            66:        bitl    tloc,r4         /*tloc AND r4 mem to reg                */
        !            67:        jneq    error1          /*error if Z = 0                        */
        !            68:        jlss    error1          /*error if N =1                         */
        !            69:        jvs     error1          /*error if V = 1                        */
        !            70:        jcc     error1          /*error if C = 0                        */
        !            71:        jmp     1f
        !            72: error1:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !            73:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            74:        movl    $2,_ercode      /* error code flag failure */
        !            75:        jmp     *badrtn
        !            76: 1:     cmpl    $SRCL1,r4       /*check source & mask are unchanged     */
        !            77:        beql    1f              /*error - source changed                */
        !            78:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            79:        movl    $3,_ercode      /* error code operand was modified */
        !            80:        movl    r4,_actual      /* actual data */
        !            81:        movl    $SRCL1,_expected        /* expected data */
        !            82:        jmp     *badrtn
        !            83: 1:     bicpsw  $Z              /*clear Z flag                          */
        !            84:        cmpl    $MASKL1,tloc    /*                                      */
        !            85:        beql    t2              /*error - source changed                */
        !            86:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            87:        movl    $3,_ercode      /* error code operand was modified */
        !            88:        movl    tloc,_actual    /* actual data */
        !            89:        movl    $MASKL1,_expected       /* expected data */
        !            90:        jmp     *badrtn
        !            91: 
        !            92: /*     Now use different patterns for source & mask                    */
        !            93: 
        !            94: t2:
        !            95:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            96: st2:   callf   $4,_setjmp      /* save context for return from error */
        !            97:        movab   st2,_stpc       /* save address of subtest */
        !            98:        movl    $2,_subtst      /* subtest number */
        !            99:        movl    $2,_no_opr      /* number of operand in use */
        !           100:        movl    $MASKL2,_opr    /* first operand */
        !           101:        movl    $SRCL2,_opr + 4 /* second operand */
        !           102: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           103:        movl    $SRCL2,r3       /*r3 = source                           */
        !           104:        movl    $MASKL2,tloc    /*tloc = mask                           */
        !           105:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !           106:        bitl    r3,tloc         /* r3 AND tloc reg to mem               */
        !           107:        bneq    error2          /*error if Z = 0                        */
        !           108:        blss    error2          /*error if N =1                         */
        !           109:        bvs     error2          /*error if V = 1                        */
        !           110:        bcc     error2          /*error if C = 0                        */
        !           111:        jmp     st3
        !           112: error2:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !           113:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           114:        movl    $2,_ercode      /* error code flag failure */
        !           115:        jmp     *badrtn
        !           116: 
        !           117: /*     Yet another patterns for source & mask                          */
        !           118: 
        !           119: t3:
        !           120:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           121: st3:   callf   $4,_setjmp      /* save context for return from error */
        !           122:        movab   st3,_stpc       /* save address of subtest */
        !           123:        movl    $3,_subtst      /* subtest number */
        !           124:        movl    $2,_no_opr      /* number of operand in use */
        !           125:        movl    $MASKL3,_opr    /* first operand */
        !           126:        movl    $SRCL3,_opr + 4 /* second operand */
        !           127: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           128:        movl    $MASKL3,r3      /*tloc = mask                           */
        !           129:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           130:        bitl    r3,$SRCL3       /*r3 AND data   reg to data             */
        !           131:        beql    error3          /*error if Z = 1                        */
        !           132:        bgeq    error3          /*error if N =1                         */
        !           133:        bvs     error3          /*error if V = 1                        */
        !           134:        bcc     error3          /*error if C = 0                        */
        !           135:        jmp     bitlm
        !           136: error3:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !           137:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           138:        movl    $2,_ercode      /* error code flag failure */
        !           139:        jmp     *badrtn
        !           140: 
        !           141:        
        !           142: /*                                                                     */
        !           143: /*     Repeat the above with source = M, & mask = R                    */
        !           144: /*                                                                     */
        !           145: 
        !           146: bitlm:
        !           147:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           148: st4:   callf   $4,_setjmp      /* save context for return from error */
        !           149:        movab   st4,_stpc       /* save address of subtest */
        !           150:        movl    $4,_subtst      /* subtest number */
        !           151:        movl    $2,_no_opr      /* number of operand in use */
        !           152:        movl    $MASKL1,_opr    /* first operand */
        !           153:        movl    $SRCL1,_opr + 4 /* second operand */
        !           154: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           155:        movl    $SRCL1,r4       /*tloc = source                         */
        !           156:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !           157:        bitl    $MASKL1,r4      /* data AND r1 data to reg              */
        !           158:        bneq    error4          /*error if Z = 0                        */
        !           159:        blss    error4          /*error if N =1                         */
        !           160:        bvs     error4          /*error if V = 1                        */
        !           161:        bcc     error4          /*error if C = 0                        */
        !           162:        jmp     1f      
        !           163: error4:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !           164:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           165:        movl    $2,_ercode      /* error code flag failure */
        !           166:        jmp     *badrtn
        !           167: 1:     cmpl    $SRCL1,r4       /*check source & mask are unchanged     */
        !           168:        beql    t5              /*error - source changed                */
        !           169:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           170:        movl    $3,_ercode      /* error code operand was modified */
        !           171:        movl    r4,_actual      /* actual data */
        !           172:        movl    $SRCL1,_expected        /* expected data */
        !           173:        jmp     *badrtn
        !           174: 
        !           175: /*     Now use different patterns for source & mask                    */
        !           176: 
        !           177: t5:
        !           178:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           179: st5:   callf   $4,_setjmp      /* save context for return from error */
        !           180:        movab   st5,_stpc       /* save address of subtest */
        !           181:        movl    $5,_subtst      /* subtest number */
        !           182:        movl    $2,_no_opr      /* number of operand in use */
        !           183:        movl    $MASKL2,_opr    /* first operand */
        !           184:        movl    $SRCL2,_opr + 4 /* second operand */
        !           185: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           186:        movl    $SRCL2,tloc     /*tloc = source                         */
        !           187:        movl    $MASKL2,r3      /*r3 = mask                             */
        !           188:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !           189:        bitl    $MASKL2,$SRCL2  /* data and data                        */
        !           190:        jneq    error5          /*error if Z = 0                        */
        !           191:        jlss    error5          /*error if N =1                         */
        !           192:        jvs     error5          /*error if V = 1                        */
        !           193:        jcc     error5          /*error if C = 0                        */
        !           194:        jeql    t6
        !           195: error5:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !           196:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           197:        movl    $2,_ercode      /* error code flag failure */
        !           198:        jmp     *badrtn
        !           199: 
        !           200: /*     Yet another patterns for source & mask                          */
        !           201: 
        !           202: t6:
        !           203:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           204: st6:   callf   $4,_setjmp      /* save context for return from error */
        !           205:        movab   st6,_stpc       /* save address of subtest */
        !           206:        movl    $6,_subtst      /* subtest number */
        !           207:        movl    $2,_no_opr      /* number of operand in use */
        !           208:        movl    $MASKL3,_opr    /* first operand */
        !           209:        movl    $SRCL3,_opr + 4 /* second operand */
        !           210: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           211:        movl    $SRCL3,tloc     /*tloc = source                         */
        !           212:        movl    $MASKL3,r3      /*r3 = mask                             */
        !           213:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           214:        bitl    r3,tloc         /*r1 AND tloc                           */
        !           215:        jeql    error6          /*error if Z = 1                        */
        !           216:        jgeq    error6          /*error if N =1                         */
        !           217:        jvs     error6          /*error if V = 1                        */
        !           218:        jcc     error6          /*error if C = 0                        */
        !           219:        jmp     t7
        !           220: error6:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !           221:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           222:        movl    $2,_ercode      /* error code flag failure */
        !           223:        jmp     *badrtn
        !           224: /*     Yet another patterns for source & mask                          */
        !           225: 
        !           226: t7:
        !           227:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           228: st7:   callf   $4,_setjmp      /* save context for return from error */
        !           229:        movab   st7,_stpc       /* save address of subtest */
        !           230:        movl    $7,_subtst      /* subtest number */
        !           231:        movl    $2,_no_opr      /* number of operand in use */
        !           232:        movl    $MASKL3,_opr    /* first operand */
        !           233:        movl    $SRCL3,_opr + 4 /* second operand */
        !           234: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           235:        movl    $SRCL3,r4       /*tloc = source                         */
        !           236:        movl    $MASKL3,r3      /*r3 = mask                             */
        !           237:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           238:        bitl    r3,r4           /*r3 AND r4 reg to reg                  */
        !           239:        jeql    error7          /*error if Z = 1                        */
        !           240:        jgeq    error7          /*error if N =1                         */
        !           241:        jvs     error7          /*error if V = 1                        */
        !           242:        jcc     error7          /*error if C = 0                        */
        !           243:        jmp     aldn
        !           244: error7:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
        !           245:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           246:        movl    $2,_ercode      /* error code flag failure */
        !           247:        jmp     *badrtn
        !           248: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           249:        jmp     *return         /* good, return to monitor */
        !           250: /*                                                                     */
        !           251: /*     Variables                                                       */
        !           252: /*                                                                     */
        !           253:        .align  2
        !           254: tloc:  .space  4               /*test location                         */
        !           255: 
        !           256: 

unix.superglobalmegacorp.com

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