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

1.1     ! root        1: /*     ANDW2 (and word 2 operand) test                                 */
        !             2: 
        !             3: /*Test name = andw2                                                    */
        !             4: /*Description =                                                                */
        !             5: /*     This test checks 'andw2' instruction as follows:                */
        !             6: /*     destination = r1, memory location (dest)                        */
        !             7: /*     destination     mask            result        Z N C V(flags)    */
        !             8: /*     ___________     ____            _____         _____________     */
        !             9: /*     0xaaaa          0xaaaa          0xaaaa        0 0 1 0           */
        !            10: /*     0xaaaa          0x5555          0x0000        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:        .globl  _andw2
        !            51: _andw2:
        !            52:        callf   $4,_setjmp      /* save context for return from error */
        !            53:        movab   _andw2,_stpc    /* subtest address */
        !            54:        movl    $1,_subtst      /* subtest number */
        !            55:        movl    $2,_no_opr      /* number of operands in use */
        !            56:        movl    $MASK1W,_opr    /* first operand */
        !            57:        movl    $VALUEW,_opr + 4        /* second operand */
        !            58: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !            59:        movl    $VALUEW,r4      /*set r4 = 0xaaaa                       */
        !            60:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
        !            61:        andw2   $MASK1W,r4      /*mask r4 with 0xaaaa data to reg       */
        !            62:        beql    error1          /*error if Z = 1                        */
        !            63:        blss    error1          /*error if N = 1                        */
        !            64:        bcc     error1          /*error if C = 0                        */
        !            65:        bvs     error1          /*error if V = 1                        */
        !            66:        movl    $EXP1W,r3
        !            67:        cmpl    r4,$EXP1W       /*if r4 <> expected(0xaaaa),            */
        !            68:        beql    a2              /* if correct continue */
        !            69:        movl    $1,_ercode      /* error code data miscompare   */
        !            70:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            71:        movl    r4,_actual      /* actual data */
        !            72:        movl    $EXP1W,_expected        /* expected data */
        !            73:        jmp     *badrtn
        !            74: error1:        movpsl  _actual         /* actual = psl */
        !            75:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            76:        movl    $2,_ercode      /* error code flag miscompare */
        !            77:        jmp     *badrtn
        !            78: 
        !            79: /*     Now try another mask(0x5555) memory to register                 */
        !            80: /*                                                                     */
        !            81: a2:
        !            82:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            83: aa2:   callf   $4,_setjmp      /* save context for return from error */
        !            84:        movab   aa2,_stpc       /* subtest address */
        !            85:        movl    $2,_subtst      /* subtest number */
        !            86:        movl    $2,_no_opr      /* number of operands in use */
        !            87:        movl    $MASK2W,_opr    /* first operand */
        !            88:        movl    $VALUEW,_opr + 4        /* second operand */
        !            89: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !            90:        movl    $VALUEW,r4      /*set r4 = 0xaaaa                       */
        !            91:        movl    $MASK2W,dest    /* load mask into location dest         */
        !            92:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
        !            93:        andw2   dest+2,r4       /*mask r4 with 0x5555 memory to reg     */
        !            94:        bneq    error2          /*error if Z = 0                        */
        !            95:        blss    error2          /*error if N = 1                        */
        !            96:        bcc     error2          /*error if C = 1                        */
        !            97:        bvs     error2          /*error if V = 1                        */
        !            98:        cmpl    r4,$EXP2W       /*if r4 <> expected(0x0000),            */
        !            99:        beql    andw2m          /* if correct continue */
        !           100:        movl    $1,_ercode      /* error code data miscompare   */
        !           101:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           102:        movl    r4,_actual      /* actual data */
        !           103:        movl    $EXP2W,_expected        /* expected data */
        !           104:        jmp     *badrtn
        !           105: error2:        movpsl  _actual         /* actual = psl */
        !           106:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           107:        movl    $2,_ercode      /* error code flag miscompare */
        !           108:        jmp     *badrtn
        !           109: 
        !           110: /*                                                                     */
        !           111: /*     Now use memory location instead of register as destination      */
        !           112: /*             data to memory operation                                */
        !           113: andw2m:        
        !           114:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           115: aa3:   callf   $4,_setjmp      /* save context for return from error */
        !           116:        movab   aa3,_stpc       /* subtest address */
        !           117:        movl    $3,_subtst      /* subtest number */
        !           118:        movl    $2,_no_opr      /* number of operands in use */
        !           119:        movl    $MASK1W,_opr    /* first operand */
        !           120:        movl    $VALUEW,_opr + 4        /* second operand */
        !           121: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           122:        movl    $VALUEW,dest    /*set dest = 0xaaaa                     */
        !           123:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
        !           124:        andw2   $MASK1W,dest+2  /*mask dest with 0xaaaa data to mem     */
        !           125:        jeql    error3          /*error if Z = 1                        */
        !           126:        jlss    error3          /*error if N = 1                        */
        !           127:        jcc     error3          /*error if C = 0                        */
        !           128:        jvs     error3          /*error if V = 1                        */
        !           129:        cmpl    dest,$EXP1W     /*if dest <> expected(0xaaaa),          */
        !           130:        beql    a4              /* if correct continue */
        !           131:        movl    $1,_ercode      /* error code data miscompare   */
        !           132:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           133:        movl    dest,_actual    /* actual data */
        !           134:        movl    $EXP1W,_expected        /* expected data */
        !           135:        jmp     *badrtn
        !           136: error3:        movpsl  _actual         /* actual = psl */
        !           137:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           138:        movl    $2,_ercode      /* error code flag miscompare */
        !           139:        jmp     *badrtn
        !           140: 
        !           141: /*     Now try another mask(0x5555) memory to memory                   */
        !           142: /*                                                                     */
        !           143: a4:
        !           144:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           145: aa4:   callf   $4,_setjmp      /* save context for return from error */
        !           146:        movab   aa4,_stpc       /* subtest address */
        !           147:        movl    $4,_subtst      /* subtest number */
        !           148:        movl    $2,_no_opr      /* number of operands in use */
        !           149:        movl    $MASK2W,_opr    /* first operand */
        !           150:        movl    $VALUEW,_opr + 4        /* second operand */
        !           151: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           152:        movl    $VALUEW,dest    /*set dest = 0xaaaa                     */
        !           153:        movl    $MASK2W,dest2   /* set dest2 = 0x5555                   */
        !           154:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
        !           155:        andw2   dest2+2,dest+2  /*mask dest with 0x5555 mem to mem      */
        !           156:        jneq    error4          /*error if Z = 0                        */
        !           157:        jlss    error4          /*error if N = 1                        */
        !           158:        jcc     error4          /*error if C = 1                        */
        !           159:        jvs     error4          /*error if V = 1                        */
        !           160:        cmpl    dest,$EXP2W     /*if dest <> expected(0x0000),          */
        !           161:        beql    a5              /* if correct continue */
        !           162:        movl    $1,_ercode      /* error code data miscompare   */
        !           163:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           164:        movl    dest,_actual    /* actual data */
        !           165:        movl    $EXP2W,_expected        /* expected data */
        !           166:        jmp     *badrtn
        !           167: error4:        movpsl  _actual         /* actual = psl */
        !           168:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           169:        movl    $2,_ercode      /* error code flag miscompare */
        !           170:        jmp     *badrtn
        !           171: 
        !           172: /*     Now try another mask(0x5555) register to memory                 */
        !           173: /*                                                                     */
        !           174: 
        !           175: a5:
        !           176:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           177: aa5:   callf   $4,_setjmp      /* save context for return from error */
        !           178:        movab   aa5,_stpc       /* subtest address */
        !           179:        movl    $5,_subtst      /* subtest number */
        !           180:        movl    $2,_no_opr      /* number of operands in use */
        !           181:        movl    $MASK2W,_opr    /* first operand */
        !           182:        movl    $VALUEW,_opr + 4        /* second operand */
        !           183: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           184:        movl    $VALUEW,dest    /*set dest = 0xaaaa                     */
        !           185:        movl    $MASK2W,r3      /* set r3 = 0x5555                      */
        !           186:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
        !           187:        andw2   r3,dest+2       /*mask dest with 0x5555 reg to mem      */
        !           188:        jneq    error5          /*error if Z = 0                        */
        !           189:        jlss    error5          /*error if N = 1                        */
        !           190:        jcc     error5          /*error if C = 1                        */
        !           191:        jvs     error5          /*error if V = 1                        */
        !           192:        cmpl    dest,$EXP2W     /*if dest <> expected(0x0000),          */
        !           193:        beql    a6              /* if correct continue */
        !           194:        movl    $1,_ercode      /* error code data miscompare   */
        !           195:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           196:        movl    dest,_actual    /* actual data */
        !           197:        movl    $EXP2W,_expected        /* expected data */
        !           198:        jmp     *badrtn
        !           199: error5:        movpsl  _actual         /* actual = psl */
        !           200:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           201:        movl    $2,_ercode      /* error code flag miscompare */
        !           202:        jmp     *badrtn
        !           203: /*                                                                                                                                                     */
        !           204: /*     Now try another mask(0x5555) register to register               */
        !           205: /*                                                                     */
        !           206: 
        !           207: a6:
        !           208:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           209: aa6:   callf   $4,_setjmp      /* save context for return from error */
        !           210:        movab   aa6,_stpc       /* subtest address */
        !           211:        movl    $6,_subtst      /* subtest number */
        !           212: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           213:        movl    $VALUEW,r4      /*set r4 = 0xaaaa                       */
        !           214:        movl    $MASK2W,r3      /* set r3 = 0x5555                      */
        !           215:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
        !           216:        andw2   r3,r4           /*mask r4 with 0x5555 reg to r4         */
        !           217:        jneq    error6          /*error if Z = 0                        */
        !           218:        jlss    error6          /*error if N = 1                        */
        !           219:        jcc     error6          /*error if C = 1                        */
        !           220:        jvs     error6          /*error if V = 1                        */
        !           221:        cmpl    r4,$EXP2W       /*if r5 <> expected(0x0000),            */
        !           222:        beql    aldn            /* if correct continue */
        !           223:        movl    $1,_ercode      /* error code data miscompare   */
        !           224:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           225:        movl    r4,_actual      /* actual data */
        !           226:        movl    $EXP2W,_expected        /* expected data */
        !           227:        jmp     *badrtn
        !           228: error6:        movpsl  _actual         /* actual = psl */
        !           229:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           230:        movl    $2,_ercode      /* error code flag miscompare */
        !           231:        jmp     *badrtn
        !           232: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           233:        jmp     *return
        !           234: /*                                                                     */
        !           235: /*     variables                                                       */
        !           236: /*                                                                     */
        !           237:        .align  2
        !           238: dest:  .space  4
        !           239: 
        !           240:        .align  2
        !           241: dest2: .space  4
        !           242: 
        !           243: 

unix.superglobalmegacorp.com

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