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

1.1       root        1: /*     ANDB2 (and byte 2 operand) test                                 */
                      2: 
                      3: /*Test name = andb2                                                    */
                      4: /*Description =                                                                */
                      5: /*     This test checks 'andb2' instruction as follows:                */
                      6: /*     destination = r1, memory location (dest)                        */
                      7: /*     destination     mask            result        Z N C V(flags)    */
                      8: /*     ___________     ____            _____         _____________     */
                      9: /*     0xaa            0xaa            0xaa          0 0 1 0           */
                     10: /*     0xaa            0x55            0x00          1 0 1 0           */
                     11: /*                                                                     */
                     12: /*                                                                     */
                     13: /*     Constants                                                       */      
                     14: /*                                                                     */
                     15:        .set    VALUEB,0x000000aa
                     16:        .set    VALUEW,0X0000aaaa
                     17:        .set    VALUEL,0xaaaaaaaa
                     18:        .set    MASK1B,0xaa
                     19:        .set    MASK1W,0xaaaa
                     20:        .set    MASK1L,0xaaaaaaaa
                     21:        .set    MASK2B,0x55
                     22:        .set    MASK2W,0x5555
                     23:        .set    MASK2L,0x55555555
                     24:        .set    EXP1B,0x000000aa
                     25:        .set    EXP1W,0x0000aaaa
                     26:        .set    EXP1L,0xaaaaaaaa
                     27:        .set    EXP2B,0x00000000
                     28:        .set    EXP2W,0x00000000
                     29:        .set    EXP2L,0x00000000
                     30: 
                     31: /*                                                                     */
                     32: /*                                                                     */
                     33: /*                                                                     */
                     34: /*     Syst.s - constants                                              */
                     35: /*                                                                     */
                     36:        .set    IPL,8
                     37:        .set    HIGH,31
                     38:        .set    ZERO,0
                     39:        .set    ONES,0xffffffff
                     40:        .set    N,8
                     41:        .set    Z,4
                     42:        .set    V,2
                     43:        .set    C,1
                     44:        .set    T,16
                     45:        .set    IV,32
                     46:        .set    FU,64
                     47:        .set    DV,128
                     48:        .set    PSWMASK,0x003f
                     49: 
                     50: 
                     51:        .globl  _andb2
                     52: _andb2:
                     53:        callf   $4,_setjmp      /* save context for error return */
                     54:        movab   _andb2,_stpc    /* save program counter of subtest */
                     55:        movl    $1,_subtst      /* subtest number */    
                     56:        movl    $2,_no_opr      /* number of operands in use */
                     57:        movl    $MASK1B,_opr    /* first operand */
                     58:        movl    $VALUEB,_opr + 4        /* second operand */
                     59: 0:
                     60:        bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                     61:        movl    $VALUEB,r3      /*set r3 = 0xaa                         */
                     62:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                     63:        andb2   $MASK1B,r3      /*mask r1 with 0xaa data to reg         */
                     64:        beql    error1          /*error if Z = 1                        */
                     65:        blss    error1          /*error if N = 1                        */
                     66:        bcc     error1          /*error if C = 0                        */
                     67:        bvs     error1          /*error if V = 1                        */
                     68:        cmpl    r3,$EXP1B       /*if r1 <> expected(0xaa),              */
                     69:        beql    a2              /*correct then continue */
                     70:        movl    $1,_ercode      /* error code data miscompare */
                     71:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     72:        movl    r3,_actual      /* actual data */
                     73:        movl    $EXP1B,_expected        /* expected data */
                     74:        jmp     *badrtn
                     75: error1:        movpsl  _actual         /* actual = psl */
                     76:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     77:        movl    $2,_ercode      /* error code flag failure */
                     78:        jmp     *badrtn
                     79: 
                     80: /*     Now try another mask(0x55)                                      */
                     81: /*                                                                     */
                     82: 
                     83: a2:    bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     84: aa2:   callf   $4,_setjmp      /* save context for error return */
                     85:        movab   aa2,_stpc       /* save program counter of subtest */
                     86:        movl    $2,_subtst      /* subtest number */    
                     87:        movl    $2,_no_opr      /* number of operands in use */
                     88:        movl    $MASK2B,_opr    /* first operand */
                     89:        movl    $VALUEB,_opr + 4        /* second operand */
                     90: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                     91:        movl    $VALUEB,r4      /*set r4 = 0xaa                         */
                     92:        movl    $MASK2B,r3      /* load mask into reg r3                */
                     93:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                     94:        andb2   r3,r4           /*mask r4 */
                     95:        bneq    error2          /*error if Z = 0                        */
                     96:        blss    error2          /*error if N = 1                        */
                     97:        bcc     error2          /*error if C = 0                        */
                     98:        bvs     error2          /*error if V = 1                        */
                     99:        cmpl    r4,$EXP2B       /*if r4 <> expected(0x00),              */
                    100:        beql    andb2m          /*correct then continue */
                    101:        movl    $1,_ercode      /* error code data miscompare */
                    102:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    103:        movl    r4,_actual      /* actual data */
                    104:        movl    $EXP2B,_expected        /* expected data */
                    105:        jmp     *badrtn
                    106: error2:        movpsl  _actual         /* actual = psl */
                    107:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    108:        movl    $2,_ercode      /* error code flag failure */
                    109:        jmp     *badrtn
                    110: 
                    111: /*                                                                     */
                    112: /*     Now use memory location instead of register as destination      */
                    113: /*                                                                     */
                    114: andb2m:        
                    115:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    116: aa3:   callf   $4,_setjmp      /* save context for error return */
                    117:        movab   aa3,_stpc       /* save program counter of subtest */
                    118:        movl    $3,_subtst      /* subtest number */    
                    119:        movl    $2,_no_opr      /* number of operands in use */
                    120:        movl    $MASK1B,_opr    /* first operand */
                    121:        movl    $VALUEB,_opr + 4        /* second operand */
                    122: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    123:        movl    $VALUEB,dest    /*set dest = 0xaa                       */
                    124:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    125:        andb2   $MASK1B,dest+3  /*mask dest with 0xaa data to reg       */
                    126:        beql    error3          /*error if Z = 1                        */
                    127:        blss    error3          /*error if N = 1                        */
                    128:        bcc     error3          /*error if C = 0                        */
                    129:        bvs     error3          /*error if V = 1                        */
                    130:        movl    $EXP1B,r2       
                    131:        cmpl    dest,$EXP1B     /*if dest <> expected(0xaa),            */
                    132:        beql    a4              /*correct then continue */
                    133:        movl    $1,_ercode      /* error code data miscompare */
                    134:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    135:        movl    dest,_actual    /* actual data */
                    136:        movl    $EXP1B,_expected        /* expected data */
                    137:        jmp     *badrtn
                    138: error3:        movpsl  _actual         /* actual = psl */
                    139:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    140:        movl    $2,_ercode      /* error code flag failure */
                    141:        jmp     *badrtn
                    142: 
                    143: /*     Now try another mask(0x55)                                      */
                    144: /*                                                                     */
                    145: a4:
                    146:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    147: aa4:   callf   $4,_setjmp      /* save context for error return */
                    148:        movab   aa4,_stpc       /* save program counter of subtest */
                    149:        movl    $4,_subtst      /* subtest number */    
                    150:        movl    $2,_no_opr      /* number of operands in use */
                    151:        movl    $MASK2B,_opr    /* first operand */
                    152:        movl    $VALUEB,_opr + 4        /* second operand */
                    153: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    154:        movl    $VALUEB,dest    /*set dest = 0xaa                       */
                    155:        movl    $MASK2B,r3      /* load mask into reg r3                */
                    156:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    157:        andb2   r3,dest+3       /*mask dest with 0x55 reg to memory     */
                    158:        bneq    error4          /*error if Z = 0                        */
                    159:        blss    error4          /*error if N = 1                        */
                    160:        bcc     error4          /*error if C = 0                        */
                    161:        bvs     error4          /*error if V = 1                        */
                    162:        cmpl    dest,$EXP2B     /*if dest <> expected(0x00),            */
                    163:        beql    a5              /*correct then continue */
                    164:        movl    $1,_ercode      /* error code data miscompare */
                    165:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    166:        movl    dest,_actual    /* actual data */
                    167:        movl    $EXP2B,_expected        /* expected data */
                    168:        jmp     *badrtn
                    169: error4:        movpsl  _actual         /* actual = psl */
                    170:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    171:        movl    $2,_ercode      /* error code flag failure */
                    172:        jmp     *badrtn
                    173: 
                    174: a5:
                    175:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    176: aa5:   callf   $4,_setjmp      /* save context for error return */
                    177:        movab   aa5,_stpc       /* save program counter of subtest */
                    178:        movl    $5,_subtst      /* subtest number */    
                    179:        movl    $2,_no_opr      /* number of operands in use */
                    180:        movl    $MASK2B,_opr    /* first operand */
                    181:        movl    $VALUEB,_opr + 4        /* second operand */
                    182: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    183:        movl    $VALUEB,dest    /*set dest = 0xaa                       */
                    184:        movl    $MASK2B,r3      /* load mask into reg r3                */
                    185:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    186:        andb2   dest+3,r3       /*mask dest with 0x55 memory to reg     */
                    187:        bneq    error5          /*error if Z = 0                        */
                    188:        blss    error5          /*error if N = 1                        */
                    189:        bcc     error5          /*error if C = 0                        */
                    190:        bvs     error5          /*error if V = 1                        */
                    191:        cmpl    r3,$EXP2B       /*if dest <> expected(0x00),            */
                    192:        beql    a6              /*correct then continue */
                    193:        movl    $1,_ercode      /* error code data miscompare */
                    194:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    195:        movl    r3,_actual      /* actual data */
                    196:        movl    $EXP2B,_expected        /* expected data */
                    197:        jmp     *badrtn
                    198: error5:        movpsl  _actual         /* actual = psl */
                    199:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    200:        movl    $2,_ercode      /* error code flag failure */
                    201:        jmp     *badrtn
                    202: 
                    203: a6:
                    204:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    205: aa6:   callf   $4,_setjmp      /* save context for error return */
                    206:        movab   aa6,_stpc       /* save program counter of subtest */
                    207:        movl    $6,_subtst      /* subtest number */    
                    208:        movl    $2,_no_opr      /* number of operands in use */
                    209:        movl    $MASK2B,_opr    /* first operand */
                    210:        movl    $VALUEB,_opr + 4        /* second operand */
                    211: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    212:        movl    $VALUEB,dest    /*set dest = 0xaa                       */
                    213:        movl    $MASK2B,dest2   /* load mask into reg r1                */
                    214:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    215:        andb2   dest+3,dest2+3  /*mask dest with 0x55 memory to memory  */
                    216:        bneq    error6          /*error if Z = 0                        */
                    217:        blss    error6          /*error if N = 1                        */
                    218:        bcc     error6          /*error if C = 0                        */
                    219:        bvs     error6          /*error if V = 1                        */
                    220:        movl    $EXP2B,r4       
                    221:        cmpl    dest2,$EXP2B    /*if dest <> expected(0x00),            */
                    222:        beql    aldn            /*correct then continue */
                    223:        movl    $1,_ercode      /* error code data miscompare */
                    224:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    225:        movl    dest2,_actual   /* actual data */
                    226:        movl    $EXP2B,_expected        /* expected data */
                    227:        jmp     *badrtn
                    228: error6:        movpsl  _actual         /* actual = psl */
                    229:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    230:        movl    $2,_ercode      /* error code flag failure */
                    231:        jmp     *badrtn
                    232: 
                    233: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    234:        jmp     *return
                    235: /*                                                                     */
                    236: 
                    237: /*     variables                                                       */
                    238: /*                                                                     */
                    239:        .align  2
                    240: dest:  .space  4
                    241: 
                    242:        .align  2
                    243: dest2: .space  4

unix.superglobalmegacorp.com

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