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

1.1       root        1: 
                      2: 
                      3: 
                      4: /*     ORW3 (or word 3 operand) test                                   */
                      5: 
                      6: /*Test name = orw3                                                     */
                      7: /*Description =                                                                */
                      8: /*     This test checks 'orw3' instruction as follows:         */
                      9: /*     source          mask            destination   Z N C V(flags)    */
                     10: /*     ___________     ____            ___________   _____________     */
                     11: /*     0xaaaa          0xaaaa          0x7fffffaa    0 0 1 0           */
                     12: /*     0xaaaa          0x5555          0x7fffffff    0 0 1 0           */
                     13: /*     0x0000          0x0000          0x00000000    1 0 x 0           */
                     14: /*     R               R               R               ---             */
                     15: /*     M               M               M               ---             */
                     16: /*     R               M               M               ---             */
                     17: /*     M               R               R               ---             */
                     18: /*                                                                     */
                     19: /*                                                                     */
                     20: /*                                                                     */
                     21: /*     Constants                                                       */
                     22: /*                                                                     */
                     23:        .set    MASK1B3,0xaa
                     24:        .set    MASK1W3,0xaaaa
                     25:        .set    MASK1L3,0xaaaaaaaa
                     26:        .set    MASK2B3,0x55
                     27:        .set    MASK2W3,0x5555
                     28:        .set    MASK2L3,0x55555555
                     29:        .set    MASK3B3,0x00
                     30:        .set    MASK3W3,0x0000
                     31:        .set    MASK3L3,0x00000000
                     32:        .set    SOURCE1B3,0xaa
                     33:        .set    SOURCE1W3,0xaaaa
                     34:        .set    SOURCE1L3,0xaaaaaaaa
                     35:        .set    SOURCE2B3,0xaa
                     36:        .set    SOURCE2W3,0xaaaa
                     37:        .set    SOURCE2L3,0xaaaaaaaa
                     38:        .set    SOURCE3B3,0x00
                     39:        .set    SOURCE3W3,0x0000
                     40:        .set    SOURCE3L3,0x00000000
                     41:        .set    INIT1B3,0x7fffff00
                     42:        .set    INIT1W3,0x7fff0000
                     43:        .set    INIT1L3,0x00000000
                     44:        .set    INIT3B3,0x7fffffff
                     45:        .set    INIT3W3,INIT3B3
                     46:        .set    INIT3L3,INIT3B3
                     47:        .set    EXP1B3,0x7fffffaa
                     48:        .set    EXP1W3,0x7fffaaaa
                     49:        .set    EXP1L3,0xaaaaaaaa
                     50:        .set    EXP2B3,0x7fffffff
                     51:        .set    EXP2W3,0x7fffffff
                     52:        .set    EXP2L3,0xffffffff
                     53:        .set    EXP3B3,0x00000000
                     54:        .set    EXP3W3,EXP3B3
                     55:        .set    EXP3L3,EXP3B3
                     56: 
                     57: /*                                                                     */
                     58: /*                                                                     */
                     59: /*                                                                     */
                     60: /*     Syst.s - constants                                              */
                     61: /*                                                                     */
                     62:        .set    IPL,8
                     63:        .set    HIGH,31
                     64:        .set    ZERO,0
                     65:        .set    ONES,0xffffffff
                     66:        .set    N,8
                     67:        .set    Z,4
                     68:        .set    V,2
                     69:        .set    C,1
                     70:        .set    T,16
                     71:        .set    IV,32
                     72:        .set    FU,64
                     73:        .set    DV,128
                     74:        .set    PSWMASK,0x003f
                     75: /*                                                                     */
                     76: 
                     77:        .globl  _orw3
                     78: _orw3:
                     79:        callf   $4,_setjmp      /* save context for error return        */
                     80:        movab   _orw3,_stpc     /* starting address of subtest          */
                     81:        movl    $1,_subtst      /* subtest number                       */
                     82:        movl    $2,_no_opr      /* number of operands in use            */
                     83:        movl    $MASK1W3,_opr   /* first operand                        */
                     84:        movl    $SOURCE1W3,_opr + 4 /* second operand                   */
                     85: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                     86:        movl    $MASK1W3,r3     /*mask                                  */
                     87:        movl    $SOURCE1W3,r4   /*source                                */
                     88:        movl    $INIT1W3,r5     /*destination                           */
                     89:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                     90:        orw3    r3,r4,r5        /*try it reg reg reg                    */
                     91:        jeql    error1          /*error if Z = 1                        */
                     92:        jlss    error1          /*error if N =1                 */
                     93:        jcc     error1          /*error if C = 0                        */
                     94:        jvs     error1          /*error if V = 1                        */
                     95:        jmp     1f
                     96: error1:        movpsl  _actual         /* actual data                          */
                     97:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                     98:        movl    $2,_ercode      /* error code flag failure              */
                     99:        jmp     *badrtn
                    100: 1:     cmpl    r5,$0xaaaa      /*if dest <> expected value,            */
                    101:        jeql    o2              /* if no error continue                 */
                    102:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    103:        movl    $1,_ercode      /* error code data miscompare           */
                    104:        movl    r5,_actual      /* actual data                          */
                    105:        movl    $0xaaaa,_expected       /* expected data                */
                    106:        jmp     *badrtn
                    107: 
                    108: /*     Now try another mask(0x5555)                                    */
                    109: /*                                                                     */
                    110: 
                    111: o2:
                    112:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    113: ao2:   callf   $4,_setjmp      /* save context for error return        */
                    114:        movab   ao2,_stpc       /* starting address of subtest          */
                    115:        movl    $2,_subtst      /* subtest number                       */
                    116:        movl    $2,_no_opr      /* number of operands in use            */
                    117:        movl    $MASK2W3,_opr   /* first operand                        */
                    118:        movl    $SOURCE2W3,_opr + 4 /* second operand                   */
                    119: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    120:        movl    $MASK2W3,r3     /*mask                                  */
                    121:        movl    $SOURCE2W3,r4   /*source                                */
                    122:        movl    $INIT1W3,dest   /*destination                           */
                    123:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
                    124:        orw3    r3,r4,dest+2    /* try again reg reg mem                */
                    125:        jeql    error2          /*error if Z = 1                        */
                    126:        jlss    error2          /*error if N =1                 */
                    127:        jcc     error2          /*error if C = 0                        */
                    128:        jvs     error2          /*error if V = 1                        */
                    129:        jmp     1f
                    130: error2:        movpsl  _actual         /* actual data                          */
                    131:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    132:        movl    $2,_ercode      /* error code flag failure              */
                    133:        jmp     *badrtn
                    134: 1:     movl    $0x7fffffff,r6
                    135:        cmpl    dest,r6         /*if dest <> expected value,            */
                    136:        jeql    o3              /* if no error continue                 */
                    137:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    138:        movl    $1,_ercode      /* error code data miscompare           */
                    139:        movl    dest,_actual    /* actual data                          */
                    140:        movl    r6,_expected    /* expected data                */
                    141:        jmp     *badrtn
                    142: 
                    143: 
                    144: /*     Now try another mask(0x0000), source(0x0000) & dest(0x0000)     */
                    145: 
                    146: o3:
                    147:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    148: ao3:   callf   $4,_setjmp      /* save context for error return        */
                    149:        movab   ao3,_stpc       /* starting address of subtest          */
                    150:        movl    $3,_subtst      /* subtest number                       */
                    151:        movl    $2,_no_opr      /* number of operands in use            */
                    152:        movl    $MASK3W3,_opr   /* first operand                        */
                    153:        movl    $SOURCE3W3,_opr + 4 /* second operand                   */
                    154: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    155:        movl    $MASK3W3,r3     /*mask                                  */
                    156:        movl    $INIT3W3,r5     /*destination                           */
                    157:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    158:        orw3    r3,$SOURCE3W3,r5/* reg to data to reg                   */
                    159:        jneq    error3          /*error if Z = 0                        */
                    160:        jlss    error3          /*error if N = 1                        */
                    161:        jcc     error3          /*error if C = 0                        */
                    162:        jvs     error3          /*error if V = 1                        */
                    163:        jmp     1f
                    164: error3:        movpsl  _actual         /* actual data                          */
                    165:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    166:        movl    $2,_ercode      /* error code flag failure              */
                    167:        jmp     *badrtn
                    168: 1:     cmpl    r5,$EXP3W3      /*if dest <> expected value,            */
                    169:        jeql    orw3mmm         /* if no error continue                 */
                    170:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    171:        movl    $1,_ercode      /* error code data miscompare           */
                    172:        movl    r5,_actual      /* actual data                          */
                    173:        movl    $EXP3W3,_expected       /* expected data                */
                    174:        jmp     *badrtn
                    175: 
                    176: /*                                                                     */
                    177: /*     now try source = M, mask = M, destination = M                   */
                    178: orw3mmm:
                    179:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    180: ao4:   callf   $4,_setjmp      /* save context for error return        */
                    181:        movab   ao4,_stpc       /* starting address of subtest          */
                    182:        movl    $4,_subtst      /* subtest number                       */
                    183:        movl    $2,_no_opr      /* number of operands in use            */
                    184:        movl    $MASK3W3,_opr   /* first operand                        */
                    185:        movl    $SOURCE3W3,_opr + 4 /* second operand                   */
                    186: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    187:        movl    $MASK1W3,mask   /*mask                                  */
                    188:        movl    $SOURCE1W3,source/*source                               */
                    189:        movl    $INIT1W3,dest   /*destination                           */
                    190:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    191:        orw3    mask+2,source+2,dest+2/*try it mem mem mem              */
                    192:        jeql    error4          /*error if Z = 1                        */
                    193:        jgeq    error4          /*error if N =0                 */
                    194:        jcc     error4          /*error if C = 0                        */
                    195:        jvs     error4          /*error if V = 1                        */
                    196:        jmp     1f
                    197: error4:        movpsl  _actual         /* actual data                          */
                    198:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    199:        movl    $2,_ercode      /* error code flag failure              */
                    200:        jmp     *badrtn
                    201: 1:     cmpl    dest,$EXP1W3    /*if dest <> expected value,            */
                    202:        jeql    o5              /* if no error continue                 */
                    203:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    204:        movl    $1,_ercode      /* error code data miscompare           */
                    205:        movl    dest,_actual    /* actual data                          */
                    206:        movl    $EXP1W3,_expected       /* expected data                */
                    207:        jmp     *badrtn
                    208: 
                    209: /*     Now try another mask(0x5555)                                    */
                    210: /*                                                                     */
                    211: 
                    212: o5:
                    213:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    214: ao5:   callf   $4,_setjmp      /* save context for error return        */
                    215:        movab   ao5,_stpc       /* starting address of subtest          */
                    216:        movl    $5,_subtst      /* subtest number                       */
                    217:        movl    $2,_no_opr      /* number of operands in use            */
                    218:        movl    $MASK2W3,_opr   /* first operand                        */
                    219:        movl    $SOURCE2W3,_opr + 4 /* second operand                   */
                    220: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    221:        movl    $MASK2W3,mask   /*mask                                  */
                    222:        movl    $SOURCE2W3,source/*source                               */
                    223:        movl    $INIT1W3,r5     /*destination                           */
                    224:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
                    225:        orw3    mask+2,source+2,r5/*try it mem mem reg  */
                    226:        jeql    error5          /*error if Z = 1                        */
                    227:        jgeq    error5          /*error if N =0                 */
                    228:        jcc     error5          /*error if C = 0                        */
                    229:        jvs     error5          /*error if V = 1                        */
                    230:        jmp     1f
                    231: error5:        movpsl  _actual         /* actual data                          */
                    232:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    233:        movl    $2,_ercode      /* error code flag failure              */
                    234:        jmp     *badrtn
                    235: 1:     movl    $EXP2L3,r6
                    236:        cmpl    r5,r6           /*if dest <> expected value,            */
                    237:        jeql    o6              /* if no error continue                 */
                    238:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    239:        movl    $1,_ercode      /* error code data miscompare           */
                    240:        movl    r5,_actual      /* actual data                          */
                    241:        movl    r6,_expected    /* expected data                */
                    242:        jmp     *badrtn
                    243: /*                                                                     */
                    244: /*     Now try another mask(0x0000), source(0x0000), & dest(0x0000)    */
                    245: /*                                                                     */
                    246: o6:
                    247:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    248: ao6:   callf   $4,_setjmp      /* save context for error return        */
                    249:        movab   ao6,_stpc       /* starting address of subtest          */
                    250:        movl    $6,_subtst      /* subtest number                       */
                    251:        movl    $2,_no_opr      /* number of operands in use            */
                    252:        movl    $MASK3W3,_opr   /* first operand                        */
                    253:        movl    $SOURCE3W3,_opr + 4 /* second operand                   */
                    254: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    255:        movl    $MASK3W3,mask   /*mask                                  */
                    256:        movl    $SOURCE3W3,r4   /*source                                */
                    257:        movl    $INIT3W3,dest   /*destination                           */
                    258:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    259:        orw3    mask+2,r4,dest+2/*try it mem reg mem            */
                    260:        jneq    error6          /*error if Z = 0                        */
                    261:        jlss    error6          /*error if N = 1                        */
                    262:        jcc     error6          /*error if C = 0                        */
                    263:        jvs     error6          /*error if V = 1                        */
                    264:        jmp     1f
                    265: error6:        movpsl  _actual         /* actual data                          */
                    266:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    267:        movl    $2,_ercode      /* error code flag failure              */
                    268:        jmp     *badrtn
                    269: 1:     movl    $0x7fff0000,r6
                    270:        cmpl    dest,r6         /*if dest <> expected value,            */
                    271:        jeql    orw3mrm         /* if no error continue                 */
                    272:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    273:        movl    $1,_ercode      /* error code data miscompare           */
                    274:        movl    dest,_actual    /* actual data                          */
                    275:        movl    r6,_expected    /* expected data                */
                    276:        jmp     *badrtn
                    277: /*                                                                     */
                    278: /*     Now use mask = R, source & destination = M                      */
                    279: /*                                                                     */
                    280: orw3mrm:
                    281:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    282: ao7:   callf   $4,_setjmp      /* save context for error return        */
                    283:        movab   ao7,_stpc       /* starting address of subtest          */
                    284:        movl    $7,_subtst      /* subtest number                       */
                    285:        movl    $2,_no_opr      /* number of operands in use            */
                    286:        movl    $MASK1W3,_opr   /* first operand                        */
                    287:        movl    $SOURCE1W3,_opr + 4 /* second operand                   */
                    288: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    289:        movl    $MASK1W3,r3     /*mask                                  */
                    290:        movl    $SOURCE1W3,source/*source                               */
                    291:        movl    $INIT1W3,dest   /*destination                           */
                    292:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    293:        orw3    r3,source+2,dest+2/*try it reg mem mem                  */
                    294:        jeql    error7          /*error if Z = 1                        */
                    295:        jgeq    error7          /*error if N =0                 */
                    296:        jcc     error7          /*error if C = 0                        */
                    297:        jvs     error7          /*error if V = 1                        */
                    298:        jmp     1f
                    299: error7:        movpsl  _actual         /* actual data                          */
                    300:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    301:        movl    $2,_ercode      /* error code flag failure              */
                    302:        jmp     *badrtn
                    303: 1:     cmpl    dest,$EXP1W3    /*if dest <> expected value,            */
                    304:        jeql    o8              /* if no error continue                 */
                    305:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    306:        movl    $1,_ercode      /* error code data miscompare           */
                    307:        movl    dest,_actual    /* actual data                          */
                    308:        movl    $EXP1W3,_expected       /* expected data                */
                    309:        jmp     *badrtn
                    310: /*                                                                     */
                    311: /*     Now try another mask(0x5555)                                    */
                    312: /*                                                                     */
                    313: o8:
                    314:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    315: ao8:   callf   $4,_setjmp      /* save context for error return        */
                    316:        movab   ao8,_stpc       /* starting address of subtest          */
                    317:        movl    $8,_subtst      /* subtest number                       */
                    318:        movl    $2,_no_opr      /* number of operands in use            */
                    319:        movl    $MASK2W3,_opr   /* first operand                        */
                    320:        movl    $SOURCE2W3,_opr + 4 /* second operand                   */
                    321: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    322:        movl    $MASK2W3,mask   /*mask                                  */
                    323:        movl    $INIT1W3,dest   /*destination                           */
                    324:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
                    325:        orw3    mask+2,$SOURCE2W3,dest+2        /*try it mem data mem           */
                    326:        jeql    error8          /*error if Z = 1                        */
                    327:        jlss    error8          /*error if N =1                 */
                    328:        jcc     error8          /*error if C = 0                        */
                    329:        jvs     error8          /*error if V = 1                        */
                    330:        jmp     1f
                    331: error8:        movpsl  _actual         /* actual data                          */
                    332:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    333:        movl    $2,_ercode      /* error code flag failure              */
                    334:        jmp     *badrtn
                    335: 1:     cmpl    dest,$EXP2W3    /*if dest <> expected value,            */
                    336:        jeql    o9              /* if no error continue                 */
                    337:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    338:        movl    $1,_ercode      /* error code data miscompare           */
                    339:        movl    dest,_actual    /* actual data                          */
                    340:        movl    $EXP2W3,_expected       /* expected data                */
                    341:        jmp     *badrtn
                    342: /*                                                                     */
                    343: /*     Now try another mask(0x0000), source(0x0000), & dest(0x0000)    */
                    344: /*                                                                     */
                    345: o9:
                    346:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    347: ao9:   callf   $4,_setjmp      /* save context for error return        */
                    348:        movab   ao9,_stpc       /* starting address of subtest          */
                    349:        movl    $9,_subtst      /* subtest number                       */
                    350:        movl    $2,_no_opr      /* number of operands in use            */
                    351:        movl    $MASK2W3,_opr   /* first operand                        */
                    352:        movl    $SOURCE2W3,_opr + 4 /* second operand                   */
                    353: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    354:        movl    $SOURCE3W3,r4   /*source                                */
                    355:        movl    $INIT3W3,dest   /*destination                           */
                    356:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    357:        orw3    $MASK3W3,r4,dest+2/*try it data reg mem         */
                    358:        jneq    error9          /*error if Z = 0                        */
                    359:        jlss    error9          /*error if N = 1                        */
                    360:        jcc     error9          /*error if C = 0                        */
                    361:        jvs     error9          /*error if V = 1                        */
                    362:        jmp     1f
                    363: error9:        movpsl  _actual         /* actual data                          */
                    364:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    365:        movl    $2,_ercode      /* error code flag failure              */
                    366:        jmp     *badrtn
                    367: 1:     movl    $0x7fff0000,r6
                    368:        cmpl    dest,r6         /*if dest <> expected value,            */
                    369:        jeql    orw3rmm         /* if no error continue                 */
                    370:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    371:        movl    $1,_ercode      /* error code data miscompare           */
                    372:        movl    dest,_actual    /* actual data                          */
                    373:        movl    r6,_expected    /* expected data                */
                    374:        jmp     *badrtn
                    375: 
                    376: /*                                                                     */
                    377: /*     Now try mask = M, source = R, dest = M                          */
                    378: /*                                                                     */
                    379: orw3rmm:
                    380:        
                    381:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    382: ao10:  callf   $4,_setjmp      /* save context for error return        */
                    383:        movab   ao10,_stpc      /* starting address of subtest          */
                    384:        movl    $0xa,_subtst    /* subtest number                       */
                    385:        movl    $2,_no_opr      /* number of operands in use            */
                    386:        movl    $MASK1W3,_opr   /* first operand                        */
                    387:        movl    $SOURCE1W3,_opr + 4 /* second operand                   */
                    388: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    389:        movl    $INIT1W3,dest   /*destination                           */
                    390:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    391:        orw3    $MASK1W3,$SOURCE1W3,dest+2/*try it data data mem        */
                    392:        jeql    error10         /*error if Z = 1                        */
                    393:        jlss    error10         /*error if N =0                 */
                    394:        jcc     error10         /*error if C = 0                        */
                    395:        jvs     error10         /*error if V = 1                        */
                    396:        jmp     1f
                    397: error10: movpsl        _actual         /* actual data                          */
                    398:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    399:        movl    $2,_ercode      /* error code flag failure              */
                    400:        jmp     *badrtn
                    401: 1:     cmpl    dest,$EXP1W3    /*if dest <> expected value,            */
                    402:        jeql    o11             /* if no error continue                 */
                    403:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    404:        movl    $1,_ercode      /* error code data miscompare           */
                    405:        movl    dest,_actual    /* actual data                          */
                    406:        movl    $EXP1W3,_expected       /* expected data                */
                    407:        jmp     *badrtn
                    408: 
                    409: /*     Now try another mask(0x5555)                                    */
                    410: /*                                                                     */
                    411: 
                    412: o11:
                    413:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    414: ao11:  callf   $4,_setjmp      /* save context for error return        */
                    415:        movab   ao11,_stpc      /* starting address of subtest          */
                    416:        movl    $0xb,_subtst    /* subtest number                       */
                    417:        movl    $2,_no_opr      /* number of operands in use            */
                    418:        movl    $MASK2W3,_opr   /* first operand                        */
                    419:        movl    $SOURCE2W3,_opr + 4 /* second operand                   */
                    420: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    421:        movl    $SOURCE2W3,r4   /*source                                */
                    422:        movl    $INIT1W3,r5     /*destination                           */
                    423:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
                    424:        orw3    $MASK2W3,r4,r5  /*try it data reg reg   */
                    425:        jeql    error11         /*error if Z = 1                        */
                    426:        jlss    error11         /*error if N =1                 */
                    427:        jcc     error11         /*error if C = 0                        */
                    428:        jvs     error11         /*error if V = 1                        */
                    429:        jmp     1f
                    430: error11: movpsl        _actual         /* actual data                          */
                    431:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    432:        movl    $2,_ercode      /* error code flag failure              */
                    433:        jmp     *badrtn
                    434: 1:     movl    $0xffff,r6
                    435:        cmpl    r5,r6           /*if dest <> expected value,            */
                    436:        jeql    o12             /* if no error continue                 */
                    437:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    438:        movl    $1,_ercode      /* error code data miscompare           */
                    439:        movl    r5,_actual      /* actual data                          */
                    440:        movl    r6,_expected    /* expected data                */
                    441:        jmp     *badrtn
                    442: /*                                                             */
                    443: /*     Now try another mask(0x0000), mask(0x0000), dest(0x0000)        */
                    444: /*                                                                     */
                    445: o12:
                    446:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    447: ao12:  callf   $4,_setjmp      /* save context for error return        */
                    448:        movab   ao12,_stpc      /* starting address of subtest          */
                    449:        movl    $0xc,_subtst    /* subtest number                       */
                    450:        movl    $2,_no_opr      /* number of operands in use            */
                    451:        movl    $MASK3W3,_opr   /* first operand                        */
                    452:        movl    $SOURCE3W3,_opr + 4 /* second operand                   */
                    453: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    454:        movl    $MASK3W3,mask   /*mask                                  */
                    455:        movl    $SOURCE3W3,r4   /*source                                */
                    456:        movl    $INIT3W3,dest   /*destination                           */
                    457:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    458:        orw3    mask+2,r4,dest+2        /*try it                        */
                    459:        jneq    error1          /*error if Z = 0                        */
                    460:        jlss    error1          /*error if N = 1                        */
                    461:        jcc     error1          /*error if C = 0                        */
                    462:        jvs     error1          /*error if V = 1                        */
                    463:        jmp     1f
                    464: error12: movpsl        _actual         /* actual data                          */
                    465:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    466:        movl    $2,_ercode      /* error code flag failure              */
                    467:        jmp     *badrtn
                    468: 1:     movl    $0x7fff0000,r6
                    469:        cmpl    dest,r6         /*if dest <> expected value,            */
                    470:        jeql    orw3mrr         /* if no error continue                 */
                    471:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    472:        movl    $1,_ercode      /* error code data miscompare           */
                    473:        movl    dest,_actual    /* actual data                          */
                    474:        movl    r6,_expected    /* expected data                */
                    475:        jmp     *badrtn
                    476: /*                                                                     */
                    477: /*     Now try mask = R, source = M, dest = R                          */
                    478: /*                                                                     */
                    479: orw3mrr:
                    480:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    481: ao13:  callf   $4,_setjmp      /* save context for error return        */
                    482:        movab   ao13,_stpc      /* starting address of subtest          */
                    483:        movl    $0xd,_subtst    /* subtest number                       */
                    484:        movl    $2,_no_opr      /* number of operands in use            */
                    485:        movl    $MASK1W3,_opr   /* first operand                        */
                    486:        movl    $SOURCE1W3,_opr + 4 /* second operand                   */
                    487: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    488:        movl    $MASK1W3,r3     /*mask                                  */
                    489:        movl    $SOURCE1W3,source/*source                               */
                    490:        movl    $INIT1W3,r5     /*destination                           */
                    491:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    492:        orw3    r3,source+2,r5  /*try it                                */
                    493:        jeql    error13         /*error if Z = 1                        */
                    494:        jgeq    error13         /*error if N =1                 */
                    495:        jcc     error13         /*error if C = 0                        */
                    496:        jvs     error13         /*error if V = 1                        */
                    497:        jmp     1f
                    498: error13: movpsl        _actual         /* actual data                          */
                    499:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    500:        movl    $2,_ercode      /* error code flag failure              */
                    501:        jmp     *badrtn
                    502: 1:     movl    $0xffffaaaa,r6
                    503:        cmpl    r5,r6           /*if dest <> expected value,            */
                    504:        jeql    o14             /* if no error continue                 */
                    505:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    506:        movl    $1,_ercode      /* error code data miscompare           */
                    507:        movl    r5,_actual      /* actual data                          */
                    508:        movl    r6,_expected    /* expected data                */
                    509:        jmp     *badrtn
                    510: 
                    511: /*     Now try another mask(0x5555)                                    */
                    512: /*                                                                     */
                    513: 
                    514: o14:
                    515:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    516: ao14:  callf   $4,_setjmp      /* save context for error return        */
                    517:        movab   ao14,_stpc      /* starting address of subtest          */
                    518:        movl    $0xe,_subtst    /* subtest number                       */
                    519:        movl    $2,_no_opr      /* number of operands in use            */
                    520:        movl    $MASK2W3,_opr   /* first operand                        */
                    521:        movl    $SOURCE2W3,_opr + 4 /* second operand                   */
                    522: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    523:        movl    $MASK2W3,r3     /*mask                                  */
                    524:        movl    $SOURCE2W3,source/*source                               */
                    525:        movl    $INIT1W3,r5     /*destination                           */
                    526:        bispsw  $(Z|V)          /*overflow & zero bits ON               */
                    527:        orw3    r3,source+2,r5  /*try it                                */
                    528:        jeql    error14         /*error if Z = 1                        */
                    529:        jgeq    error14         /*error if N =0                 */
                    530:        jcc     error14         /*error if C = 0                        */
                    531:        jvs     error14         /*error if V = 1                        */
                    532:        jmp     1f
                    533: error14: movpsl        _actual         /* actual data                          */
                    534:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    535:        movl    $2,_ercode      /* error code flag failure              */
                    536:        jmp     *badrtn
                    537: 1:     movl    $-1,r6
                    538:        cmpl    r5,r6           /*if dest <> expected value,            */
                    539:        jeql    o15             /* if no error continue                 */
                    540:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    541:        movl    $1,_ercode      /* error code data miscompare           */
                    542:        movl    r5,_actual      /* actual data                          */
                    543:        movl    r6,_expected    /* expected data                */
                    544:        jmp     *badrtn
                    545: /*                                                                     */
                    546: /*     Now try another mask(0x0000), mask(0x0000), & dest(0x0000)      */
                    547: /*                                                                     */
                    548: o15:
                    549:        bbs     $0,_force_lp,0b /* if set loop on last subtest          */
                    550: ao15:  callf   $4,_setjmp      /* save context for error return        */
                    551:        movab   ao15,_stpc      /* starting address of subtest          */
                    552:        movl    $0xf,_subtst    /* subtest number                       */
                    553:        movl    $2,_no_opr      /* number of operands in use            */
                    554:        movl    $MASK3W3,_opr   /* first operand                        */
                    555:        movl    $SOURCE3W3,_opr + 4 /* second operand                   */
                    556: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    557:        movl    $MASK3W3,r3     /*mask                                  */
                    558:        movl    $SOURCE3W3,source/*source                               */
                    559:        movl    $INIT3W3,r5     /*destination                           */
                    560:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    561:        orw3    r3,source+2,r5  /*try it                                */
                    562:        jneq    error15         /*error if Z = 0                        */
                    563:        jlss    error15         /*error if N = 1                        */
                    564:        jcc     error15         /*error if C = 0                        */
                    565:        jvs     error15         /*error if V = 1                        */
                    566:        jmp     1f
                    567: error15: movpsl        _actual         /* actual data                          */
                    568:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    569:        movl    $2,_ercode      /* error code flag failure              */
                    570:        jmp     *badrtn
                    571: 1:     cmpl    r5,$EXP3W3      /*if dest <> expected value,            */
                    572:        jeql    aldn            /* if no error continue                 */
                    573:        bbs     $0,_scoplp,0b   /* if set scope loop on error           */
                    574:        movl    $1,_ercode      /* error code data miscompare           */
                    575:        movl    r5,_actual      /* actual data                          */
                    576:        movl    r6,_expected    /* expected data                */
                    577:        jmp     *badrtn
                    578: 
                    579: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    580:        jmp     *return
                    581: 
                    582: /*                                                                     */
                    583: /*     Variables                                                       */
                    584: /*                                                                     */
                    585:        .align  2
                    586: mask:  .space  4
                    587: source:        .space  4
                    588: dest:  .space  4
                    589: 
                    590: /*                                                                     */
                    591: /*     End of file                                                     */
                    592: 

unix.superglobalmegacorp.com

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