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