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