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

1.1     ! root        1: /*     ORB2 (or byte 2 operand) test                                   */
        !             2: 
        !             3: /*Test name = orb2                                                     */
        !             4: /*Description =                                                                */
        !             5: /*     This test checks 'orb2' 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            0xff          0 1 1 0           */
        !            11: /*     0x00            0x00            0x00          1 0 x 0           */
        !            12: /*                                                                     */
        !            13: /*                                                                     */
        !            14: /*                                                                     */
        !            15: /*                                                                     */
        !            16: /*     Constants                                                       */
        !            17: /*                                                                     */
        !            18:        .set    VALUEB,0x555555aa
        !            19:        .set    VALUEW,0X5555aaaa
        !            20:        .set    VALUEL,0xaaaaaaaa
        !            21:        .set    VALUE3B,0X00000000
        !            22:        .set    VALUE3W,VALUE3B
        !            23:        .set    VALUE3L,VALUE3B
        !            24:        .set    MASK1B,0xaa
        !            25:        .set    MASK1W,0xaaaa
        !            26:        .set    MASK1L,0xaaaaaaaa
        !            27:        .set    MASK2B,0x55
        !            28:        .set    MASK2W,0x5555
        !            29:        .set    MASK2L,0x55555555
        !            30:        .set    MASK3B,0x00
        !            31:        .set    MASK3W,0x0000
        !            32:        .set    MASK3L,0x00000000
        !            33:        .set    EXP1B,0x555555aa
        !            34:        .set    EXP1W,0x5555aaaa
        !            35:        .set    EXP1L,0xaaaaaaaa
        !            36:        .set    EXP2B,0x555555ff
        !            37:        .set    EXP2W,0x5555ffff
        !            38:        .set    EXP2L,0xffffffff
        !            39:        .set    EXP3B,0x00000000
        !            40:        .set    EXP3W,EXP3B
        !            41:        .set    EXP3L,EXP3B
        !            42: 
        !            43: /*                                                                     */
        !            44: /*                                                                     */
        !            45: /*                                                                     */
        !            46: /*     Syst.s - constants                                              */
        !            47: /*                                                                     */
        !            48:        .set    IPL,8
        !            49:        .set    HIGH,31
        !            50:        .set    ZERO,0
        !            51:        .set    ONES,0xffffffff
        !            52:        .set    N,8
        !            53:        .set    Z,4
        !            54:        .set    V,2
        !            55:        .set    C,1
        !            56:        .set    T,16
        !            57:        .set    IV,32
        !            58:        .set    FU,64
        !            59:        .set    DV,128
        !            60:        .set    PSWMASK,0x003f
        !            61: 
        !            62:        .globl  _or_b2
        !            63: _or_b2:
        !            64:        callf   $4,_setjmp      /* save context for error return */
        !            65:        movab   _or_b2,_stpc    /* save starting address of subtest */
        !            66:        movl    $1,_subtst      /* subtest number */
        !            67:        movl    $2,_no_opr      /* number of operands in use */
        !            68:        movl    $MASK1B,_opr    /* first operand */
        !            69:        movl    $VALUEB,_opr + 4 /* second operand */
        !            70: 0:     
        !            71:        bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !            72:        movl    $VALUEB,r4      /*set r4 = 0xaa                         */
        !            73:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
        !            74:        orb2    $MASK1B,r4      /*mask r4 with 0xaa data to reg         */
        !            75:        beql    error1          /*error if Z = 1                        */
        !            76:        blss    error1          /*error if N = 1                        */
        !            77:        bcc     error1          /*error if C = 0                        */
        !            78:        bvs     error1          /*error if V = 1                        */
        !            79:        jmp     1f
        !            80: error1:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
        !            81:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            82:        movl    $2,_ercode      /* error code flag failure      */
        !            83:        jmp     *badrtn
        !            84: 1:     cmpl    r4,$EXP1B       /*if r4 <> expected,                    */
        !            85:        jeql    o2              /* if correct continue */
        !            86:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            87:        movl    $1,_ercode      /* error code data miscompare */
        !            88:        movl    r4,_actual      /* actual data */
        !            89:        movl    $EXP1B,_expected /* expected data */
        !            90:        jmp     *badrtn
        !            91: 
        !            92: /*     Now try another mask(0x55) register to register                 */
        !            93: /*                                                                     */
        !            94: 
        !            95: o2:
        !            96:        bbs     $0,_force_lp,0b /* if set loop on last error */
        !            97: ao2:   callf   $4,_setjmp      /* save context for error return */
        !            98:        movab   ao2,_stpc       /* save starting address of subtest */
        !            99:        movl    $2,_subtst      /* subtest number */
        !           100:        movl    $2,_no_opr      /* number of operands in use */
        !           101:        movl    $MASK2B,_opr    /* first operand */
        !           102:        movl    $VALUEB,_opr + 4 /* second operand */
        !           103: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           104:        movl    $VALUEB,r4      /*set r4 = 0xaa                         */
        !           105:        movl    $MASK2B,r3      /* load mask into reg 3                 */
        !           106:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
        !           107:        orb2    r3,r4           /*mask r4 with 0x55 reg to reg          */
        !           108:        beql    error2          /*error if Z = 1                        */
        !           109:        blss    error2          /*error if N = 1                        */
        !           110:        bcc     error2          /*error if C = 0                        */
        !           111:        bvs     error2          /*error if V = 1                        */
        !           112:        jmp     1f
        !           113: error2:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
        !           114:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           115:        movl    $2,_ercode      /* error code flag failure      */
        !           116:        jmp     *badrtn
        !           117: 1:     cmpl    r4,$EXP2B       /*if r4 <> expected,                    */
        !           118:        jeql    o3              /* if correct continue */
        !           119:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           120:        movl    $1,_ercode      /* error code data miscompare */
        !           121:        movl    r4,_actual      /* actual data */
        !           122:        movl    $EXP2B,_expected /* expected data */
        !           123:        jmp     *badrtn
        !           124: /*                                                                     */
        !           125: /*     Now try another mask(0x00) & dest(0x00) reg to mem              */
        !           126: /*                                                                     */
        !           127: 
        !           128: o3:
        !           129:        bbs     $0,_force_lp,0b /* if set loop on last error */
        !           130: ao3:   callf   $4,_setjmp      /* save context for error return */
        !           131:        movab   ao3,_stpc       /* save starting address of subtest */
        !           132:        movl    $3,_subtst      /* subtest number */
        !           133:        movl    $2,_no_opr      /* number of operands in use */
        !           134:        movl    $MASK3B,_opr    /* first operand */
        !           135:        movl    $VALUE3B,_opr + 4 /* second operand */
        !           136: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           137:        movl    $VALUE3B,r3     /*set r3 = 0x00                         */
        !           138:        movl    $MASK3B,dest
        !           139:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
        !           140:        orb2    r3,dest         /*mask r3 with 0x00 reg to mem          */
        !           141:        bneq    error3          /*error if Z = 0                        */
        !           142:        blss    error3          /*error if N = 1                        */
        !           143:        bcc     error3          /*error if C = 0                        */
        !           144:        bvs     error3          /*error if V = 1                        */
        !           145:        jmp     1f
        !           146: error3:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
        !           147:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           148:        movl    $2,_ercode      /* error code flag failure      */
        !           149:        jmp     *badrtn
        !           150: 1:     cmpl    dest,$EXP3B     /*if dest <> expected,                  */
        !           151:        jeql    orb2m           /* if correct continue */
        !           152:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           153:        movl    $1,_ercode      /* error code data miscompare */
        !           154:        movl    dest,_actual    /* actual data */
        !           155:        movl    $EXP3B,_expected /* expected data */
        !           156:        jmp     *badrtn
        !           157: 
        !           158: /*                                                                     */
        !           159: /*     Now use memory location instead of register as destination      */
        !           160: /*                                                                     */
        !           161: orb2m: 
        !           162:        bbs     $0,_force_lp,0b /* if set loop on last error */
        !           163: ao4:   callf   $4,_setjmp      /* save context for error return */
        !           164:        movab   ao4,_stpc       /* save starting address of subtest */
        !           165:        movl    $4,_subtst      /* subtest number */
        !           166:        movl    $2,_no_opr      /* number of operands in use */
        !           167:        movl    $-0x56,_opr     /* first operand */
        !           168:        movl    $VALUEB,_opr + 4 /* second operand */
        !           169: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           170:        movl    $VALUEB,dest    /*set dest = 0xaa                       */
        !           171:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
        !           172:        orb2    $-0x56,dest+3   /*mask dest with 0xaa data to mem       */
        !           173:        beql    error4          /*error if Z = 1                        */
        !           174:        bgeq    error4          /*error if N = 0                        */
        !           175:        bcc     error4          /*error if C = 0                        */
        !           176:        bvs     error4          /*error if V = 1                        */
        !           177:        jmp     1f
        !           178: error4:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
        !           179:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           180:        movl    $2,_ercode      /* error code flag failure      */
        !           181:        jmp     *badrtn
        !           182: 1:     cmpl    dest,$EXP1B     /*if dest <> expected,                  */
        !           183:        jeql    o5              /* if correct continue */
        !           184:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           185:        movl    $1,_ercode      /* error code data miscompare */
        !           186:        movl    dest,_actual    /* actual data */
        !           187:        movl    $EXP1B,_expected /* expected data */
        !           188:        jmp     *badrtn
        !           189: 
        !           190: /*     Now try another mask(0x55) mem to reg                           */
        !           191: /*                                                                     */
        !           192: 
        !           193: o5:    
        !           194:        bbs     $0,_force_lp,0b /* if set loop on last error */
        !           195: ao5:   callf   $4,_setjmp      /* save context for error return */
        !           196:        movab   ao5,_stpc       /* save starting address of subtest */
        !           197:        movl    $5,_subtst      /* subtest number */
        !           198:        movl    $2,_no_opr      /* number of operands in use */
        !           199:        movl    $VALUEB,_opr    /* first operand */
        !           200:        movl    $MASK2B,_opr + 4 /* second operand */
        !           201: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           202:        movl    $VALUEB,dest    /*set dest = 0xaa                       */
        !           203:        movl    $MASK2B,r3      /* mask value in reg r3                 */
        !           204:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
        !           205:        orb2    dest+3,r3       /*mask dest with 0x55                   */
        !           206:        beql    error5          /*error if Z = 1                        */
        !           207:        bgeq    error5          /*error if N = 0                        */
        !           208:        bcc     error5          /*error if C = 0                        */
        !           209:        bvs     error5          /*error if V = 1                        */
        !           210:        jmp     1f
        !           211: error5:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
        !           212:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           213:        movl    $2,_ercode      /* error code flag failure      */
        !           214:        jmp     *badrtn
        !           215: 1:     cmpl    $EXP2L,r3       /*if dest <> expected,                  */
        !           216:        jeql    o6              /* if correct continue */
        !           217:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           218:        movl    $1,_ercode      /* error code data miscompare */
        !           219:        movl    r3,_actual      /* actual data */
        !           220:        movl    $EXP2L,_expected /* expected data */
        !           221:        jmp     *badrtn
        !           222: 
        !           223: 
        !           224: /*                                                                     */
        !           225: /*     Now try another mask(0x00) & dest(0x00) mem to mem              */
        !           226: /*                                                                     */
        !           227: 
        !           228: o6:    
        !           229:        bbs     $0,_force_lp,0b /* if set loop on last error */
        !           230: ao6:   callf   $4,_setjmp      /* save context for error return */
        !           231:        movab   ao6,_stpc       /* save starting address of subtest */
        !           232:        movl    $6,_subtst      /* subtest number */
        !           233:        movl    $2,_no_opr      /* number of operands in use */
        !           234:        movl    $VALUEB,_opr    /* first operand */
        !           235:        movl    $MASK2B,_opr + 4 /* second operand */
        !           236: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
        !           237:        movl    $VALUE3B,dest   /*set dest = 0x00                       */
        !           238:        movl    $MASK3B,srce    /* load mask into loc srce              */
        !           239:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
        !           240:        orb2    srce,dest+3     /*mask dest with 0x00 mem to mem        */
        !           241:        jneq    error6          /*error if Z = 0                        */
        !           242:        jlss    error6          /*error if N = 1                        */
        !           243:        jcc     error6          /*error if C = 0                        */
        !           244:        jvs     error6          /*error if V = 1                        */
        !           245:        jmp     1f
        !           246: error6:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
        !           247:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           248:        movl    $2,_ercode      /* error code flag failure      */
        !           249:        jmp     *badrtn
        !           250: 1:     cmpl    dest,$EXP3B     /*if dest <> expected,                  */
        !           251:        jeql    aldn            /* if correct continue */
        !           252:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           253:        movl    $1,_ercode      /* error code data miscompare */
        !           254:        movl    dest,_actual    /* actual data */
        !           255:        movl    $EXP3B,_expected /* expected data */
        !           256:        jmp     *badrtn
        !           257: 
        !           258: aldn:  bbs     $0,_force_lp,0b /* if set loop on last error */
        !           259:        jmp     *return         /* good, return to monitor */
        !           260: 
        !           261: /*                                                                     */
        !           262: /*     variables                                                       */
        !           263: /*                                                                     */
        !           264:        .align  2
        !           265: dest:  .space  4
        !           266:        .align  2
        !           267: srce:  .space  4

unix.superglobalmegacorp.com

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