Annotation of cci/d/entry/and_b2.s, revision 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.