Annotation of cci/d/entry/bit_b.s, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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