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

1.1       root        1: /*             ADDB3 (add byte 3) test                                 */
                      2: /*                                                                     */
                      3: /*Test name = addb3                                                    */
                      4: /*Description =                                                                */
                      5: /*     This test checks 'addb3' instruction as follows:                */
                      6: /*add1         add2            sum             N Z V C (flags)         */
                      7: /*___          ___             ______          _______________         */
                      8: /*0x1111107f   0x1111107f      0x111110fe      0 0 1 0                 */
                      9: /*(127)                (127)                                                   */
                     10: /*0x11111080   0x11111080      0x11111000      0 1 1 1                 */
                     11: /*(-128)       (-128)          (0)                                     */
                     12: /*0x80         0xff            0x7f            0 0 1 1                 */
                     13: /*(-128)       (-1)            (127)                                   */
                     14: /*0x81         0x7f            0x00            0 1 0 1                 */
                     15: /*(-127)       (127)           (0)                                     */
                     16: /*0x80         0x7f            0xff            1 0 0 0                 */
                     17: /*(-128)       (127)           (-1)                                    */
                     18: /*0xc0         0xc0            0x80            1 0 0 1                 */
                     19: /*(-64)                (-64)           (-128)                                  */
                     20: /*                                                                     */
                     21: /*                                                                     */
                     22: /*                                                                     */
                     23: /*                                                                     */
                     24: /*     constants definition for 'addx' tests.                          */
                     25: /*                                                                     */
                     26: 
                     27:        .set    A1B1,0x1111107f/*+127, highest +ve number, byte */
                     28:        .set    A1W1,0x11107fff
                     29:        .set    A1L1,0x7fffffff
                     30:        .set    A2B1,0x1111107f/* +127 */
                     31:        .set    A2W1,0x11107fff
                     32:        .set    A2L1,A1L1
                     33:        .set    RB1,0x111110fe
                     34:        .set    RW1,0x1110fffe
                     35:        .set    RL1,0xfffffffe
                     36:        .set    A1B2,0x11111080/* -128 */
                     37:        .set    A1W2,0x11108000
                     38:        .set    A1L2,0x80000000
                     39:        .set    A2B2,0x11111080/* -128 */
                     40:        .set    A2W2,0x11118000
                     41:        .set    A2L2,0X80000000
                     42:        .set    RB2,0x11111000/* 0 */
                     43:        .set    RW2,0x11100000
                     44:        .set    RL2,0x00000000
                     45:        .set    A1B3,0X80       /* -128 */
                     46:        .set    A1W3,0x8000
                     47:        .set    A1L3,0x80000000
                     48:        .set    A2B3,0xff               /* -1 */
                     49:        .set    A2W3,0xffff
                     50:        .set    A2L3,0xffffffff
                     51:        .set    RB3,0x0000007f
                     52:        .set    RW3,0X00007fff
                     53:        .set    RL3,0X7fffffff
                     54:        .set    A1B4,0x81       /* -127 */
                     55:        .set    A1W4,0x8001
                     56:        .set    A1L4,0x80000001
                     57:        .set    A2B4,0x7f       /* 127 */
                     58:        .set    A2W4,0x7fff
                     59:        .set    A2L4,0x7fffffff
                     60:        .set    RB4,0           /* 0 */
                     61:        .set    RW4,RB4
                     62:        .set    RL4,RB4
                     63:        .set    A1B5,A1B3       /* -128 */
                     64:        .set    A1W5,A1W3
                     65:        .set    A1L5,A1L3
                     66:        .set    A2B5,A2B4       /* 127 */
                     67:        .set    A2W5,A2W4
                     68:        .set    A2L5,A2L4
                     69:        .set    RB5,0xff                /* -1 */
                     70:        .set    RW5,0xffff
                     71:        .set    RL5,0xffffffff
                     72:        .set    A1B6,0xc0       /* -64 */
                     73:        .set    A1W6,0xc000
                     74:        .set    A1L6,0xc0000000
                     75:        .set    A2B6,A1B6       /* -64 */
                     76:        .set    A2W6,A1W6
                     77:        .set    A2L6,A1L6
                     78:        .set    RB6,0x00000080  /* -128 */
                     79:        .set    RW6,0x00008000
                     80:        .set    RL6,0X80000000
                     81: 
                     82:        .set    INITB,0x11111055/* initialization values for 3 operand */
                     83:        .set    INITW,0x11105555
                     84:        .set    INITL,0X55555555
                     85:        
                     86: /*                                                                     */
                     87: /*     Syst.s - Constants                                              */
                     88: /*                                                                     */
                     89:        .set    IPL,8
                     90:        .set    HIGH,31
                     91:        .set    ZERO,0
                     92:        .set    ONES,0xffffffff
                     93:        .set    N,8
                     94:        .set    Z,4
                     95:        .set    V,2
                     96:        .set    C,1
                     97:        .set    T,16
                     98:        .set    IV,32
                     99:        .set    FU,64
                    100:        .set    DV,128
                    101:        .set    PSWMASK,0x003f
                    102:        .set    BMSK,0xff
                    103: 
                    104: 
                    105:        .globl  _addb3
                    106: _addb3:
                    107: ab1:
                    108:        callf   $4,_setjmp      /* save context for error return */
                    109:        movab   ab1,_stpc       /* progranm counter of subtest */
                    110:        movl    $1,_subtst      /*no error*/
                    111:        movl    $2,_no_opr      /* number of operands in use */
                    112:        movl    $A1B1,_opr      /* first operand */
                    113:        movl    $A2B1,_opr + 4  /* second operand */
                    114: 0:     
                    115:        bicpsw  $PSWMASK        /*PSW = 0                               */
                    116:        movl    $A1B1,add1      /*first operand                         */
                    117:        movl    $A2B1,tmp2      /*second operand                        */
                    118:        movb    tmp2+3,r7       /*second operand                        */
                    119:        movl    $INITB,sum      /*initial value                         */
                    120:        bispsw  $(N|Z|C)        /* these flags ON                       */
                    121:        addb3   add1+3,r7,sum+3 /* try 'add' instruction                */
                    122:        jlss    e1              /*error if N = 1                        */
                    123:        jeql    e1              /*error if Z = 1                        */
                    124:        jvc     e1              /*error if V = 0                        */
                    125:        jcs     e1              /*error if C = 1                        */
                    126:        bicpsw  $Z
                    127:        cmpl    $RB1,sum        /*sum = expected ?                      */
                    128:        jeql    ab1r            /* if correct continue */
                    129:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    130:        movl    $1,_ercode      /* error code data miscompare */
                    131:        movl    sum,_actual     /* actual data */
                    132:        movl    $RB1,_expected  /* expected data */
                    133:        jmp     *badrtn
                    134: e1:    movpsl  _actual         /* actual = psl */
                    135:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    136:        movl    $2,_ercode      /* error code flag failure */
                    137:        jmp     *badrtn
                    138: 
                    139: 
                    140: /*     reverse operands                                                */
                    141: 
                    142: ab1r:
                    143:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    144: aab1r: callf   $4,_setjmp      /* save context for error return */
                    145:        movab   aab1r,_stpc     /* progranm counter of subtest */
                    146:        movl    $2,_subtst      /*no error*/
                    147:        movl    $2,_no_opr      /* number of operands in use */
                    148:        movl    $A2B1,_opr      /* first operand */
                    149:        movl    $0x7f,_opr + 4  /* second operand */
                    150: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    151:        movl    $A2B1,add1      /*first operand                         */
                    152:        movl    $INITB,sum      
                    153:        bispsw  $(N|Z|C)        /* these flags ON                       */
                    154:        addb3   add1+3,$0x7f,sum+3/* try 'add' instruction mem data mem */
                    155:        jlss    e2              /*error if N = 1                        */
                    156:        jeql    e2              /*error if Z = 1                        */
                    157:        jvc     e2              /*error if V = 0                        */
                    158:        jcs     e2              /*error if C = 1                        */
                    159:        bicpsw  $Z
                    160:        movl    $RB1,r5         /*expected result*/
                    161:        cmpl    $RB1,sum        /*sum = expected ?                      */
                    162:        jeql    ab2             /* if correct continue */
                    163:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    164:        movl    $1,_ercode      /* error code data miscompare */
                    165:        movl    sum,_actual     /* actual data */
                    166:        movl    $RB1,_expected  /* expected data */
                    167:        jmp     *badrtn
                    168: e2:    movpsl  _actual         /* actual = psl */
                    169:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    170:        movl    $2,_ercode      /* error code flag failure */
                    171:        jmp     *badrtn
                    172: 
                    173: ab2:
                    174:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    175: aab2:  callf   $4,_setjmp      /* save context for error return */
                    176:        movab   aab2,_stpc      /* progranm counter of subtest */
                    177:        movl    $3,_subtst      /*no error*/
                    178:        movl    $2,_no_opr      /* number of operands in use */
                    179:        movl    $-0x80,_opr     /* first operand */
                    180:        movl    $-0x80,_opr + 4 /* second operand */
                    181: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    182:        movl    $INITB,sum      
                    183:        bispsw  $N              /* these flags ON                       */
                    184:        addb3   $-0x80,$-0x80,sum+3/* try 'add' instruction data data mem       */
                    185:        jgeq    e3              /*error if N = 1                        */
                    186:        jeql    e3              /*error if Z = 0                        */
                    187:        jvc     e3              /*error if V = 0                        */
                    188:        jcc     e3              /*error if C = 0                        */
                    189:        bicpsw  $Z
                    190:        movl    $RB2,r5         /*expected result*/
                    191:        cmpl    $RB2,sum        /*sum = expected ?                      */
                    192:        jeql    ab2r            /* if correct continue */
                    193:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    194:        movl    $1,_ercode      /* error code data miscompare */
                    195:        movl    sum,_actual     /* actual data */
                    196:        movl    $RB2,_expected  /* expected data */
                    197:        jmp     *badrtn
                    198: e3:    movpsl  _actual         /* actual = psl */
                    199:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    200:        movl    $2,_ercode      /* error code flag failure */
                    201:        jmp     *badrtn
                    202: 
                    203: 
                    204: /*     reverse operands                                                */
                    205: 
                    206: ab2r:
                    207:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    208: aab2r: callf   $4,_setjmp      /* save context for error return */
                    209:        movab   aab2r,_stpc     /* progranm counter of subtest */
                    210:        movl    $4,_subtst      /*no error*/
                    211:        movl    $2,_no_opr      /* number of operands in use */
                    212:        movl    $A2B2,_opr      /* first operand */
                    213:        movl    $A1B2,_opr + 4  /* second operand */
                    214: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    215:        movl    $A2B2,add1      /*first operand                         */
                    216:        movl    $A1B2,add2      /*second operand                        */
                    217:        movl    $INITB,tmp3
                    218:        movb    tmp3+3,r8
                    219:        bispsw  $N              /* these flags ON                       */
                    220:        addb3   add1+3,add2+3,r8/* try 'add' instruction mem mem reg    */
                    221:        jgeq    e4              /*error if N = 1                        */
                    222:        jeql    e4              /*error if Z = 0                        */
                    223:        jvc     e4              /*error if V = 0                        */
                    224:        jcc     e4              /*error if C = 0                        */
                    225:        bicpsw  $Z
                    226:        movl    $RB2,r5         /*expected result*/
                    227:        andl2   $BMSK,r5
                    228:        andl2   $BMSK,r8        /* mask off don't care bits             */
                    229:        cmpl    r5,r8           /*sum = expected ?                      */
                    230:        jeql    ab3             /* if correct continue */
                    231:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    232:        movl    $1,_ercode      /* error code data miscompare */
                    233:        movl    r5,_actual      /* actual data */
                    234:        movl    r8,_expected    /* expected data */
                    235:        jmp     *badrtn
                    236: e4:    movpsl  _actual         /* actual = psl */
                    237:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    238:        movl    $2,_ercode      /* error code flag failure */
                    239:        jmp     *badrtn
                    240: 
                    241: 
                    242: 
                    243: ab3:
                    244:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    245: aab3:  callf   $4,_setjmp      /* save context for error return */
                    246:        movab   aab3,_stpc      /* progranm counter of subtest */
                    247:        movl    $5,_subtst      /*no error*/
                    248:        movl    $2,_no_opr      /* number of operands in use */
                    249:        movl    $-0x80,_opr     /* first operand */
                    250:        movl    $A2B3,_opr + 4  /* second operand */
                    251: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    252:        movl    $A2B3,tmp2
                    253:        movb    tmp2+3,r7       
                    254:        movl    $0,sum  
                    255:        bispsw  $(N|Z)          /* these flags ON                       */
                    256:        addb3   $-0x80,r7,sum+3 /* ' add ' inst, data reg mem           */
                    257:        jgeq    e5              /*error if N = 1                        */
                    258:        jeql    e5              /*error if Z = 1                        */
                    259:        jvc     e5              /*error if V = 0                        */
                    260:        jcc     e5              /*error if C = 0                        */
                    261:        bicpsw  $Z
                    262:        cmpl    $RB3,sum        /*sum = expected ?                      */
                    263:        jeql    ab3r            /* if correct continue */
                    264:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    265:        movl    $1,_ercode      /* error code data miscompare */
                    266:        movl    $RB3,_actual    /* actual data */
                    267:        movl    sum,_expected   /* expected data */
                    268:        jmp     *badrtn
                    269: e5:    movpsl  _actual         /* actual = psl */
                    270:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    271:        movl    $2,_ercode      /* error code flag failure */
                    272:        jmp     *badrtn
                    273: 
                    274: 
                    275: /*     reverse operands                                                */
                    276: 
                    277: ab3r:
                    278:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    279: aab3r: callf   $4,_setjmp      /* save context for error return */
                    280:        movab   aab3r,_stpc     /* progranm counter of subtest */
                    281:        movl    $6,_subtst      /*no error*/
                    282:        movl    $2,_no_opr      /* number of operands in use */
                    283:        movl    $-0x80,_opr     /* first operand */
                    284:        movl    $A2B3,_opr + 4  /* second operand */
                    285: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    286:        movl    $A1B3,tmp2      /*second operand                        */
                    287:        movb    tmp2+3,r7       /*second operand                        */
                    288:        movl    $0,r8
                    289:        bispsw  $(N|Z)          /* these flags ON                       */
                    290:        addb3   $-1,r7,r8       /* try 'add' instruction data reg reg   */
                    291:        jgeq    e6              /*error if N = 1                        */
                    292:        jeql    e6              /*error if Z = 1                        */
                    293:        jvc     e6              /*error if V = 0                        */
                    294:        jcc     e6              /*error if C = 0                        */
                    295:        bicpsw  $Z
                    296:        movl    $RB3,r5         /*expected result*/
                    297:        andl2   $BMSK,r5
                    298:        andl2   $BMSK,r8        /* mask off don't care bits             */
                    299:        cmpl    r5,r8           /*sum = expected ?                      */
                    300:        jeql    ab4             /* if correct continue */
                    301:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    302:        movl    $1,_ercode      /* error code data miscompare */
                    303:        movl    r8,_actual      /* actual data */
                    304:        movl    $RB3,_expected  /* expected data */
                    305:        jmp     *badrtn
                    306: e6:    movpsl  _actual         /* actual = psl */
                    307:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    308:        movl    $2,_ercode      /* error code flag failure */
                    309:        jmp     *badrtn
                    310: 
                    311: ab4:
                    312:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    313: aab4:  callf   $4,_setjmp      /* save context for error return */
                    314:        movab   aab4,_stpc      /* progranm counter of subtest */
                    315:        movl    $7,_subtst      /*no error*/
                    316:        movl    $2,_no_opr      /* number of operands in use */
                    317:        movl    $A1B4,_opr      /* first operand */
                    318:        movl    $A2B4,_opr + 4  /* second operand */
                    319: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    320:        movl    $A1B4,tmp       /*first operand                         */
                    321:        movb    tmp+3,r6        /*first operand                         */
                    322:        movl    $0,r8
                    323:        bispsw  $(N|V)          /* these flags ON                       */
                    324:        addb3   r6,$A2B4,r8     /* try 'add' instruction reg data reg   */
                    325:        jlss    e7              /*error if N = 1                        */
                    326:        jneq    e7              /*error if Z = 0                        */
                    327:        jvs     e7              /*error if V = 1                        */
                    328:        jcc     e7              /*error if C = 0                        */
                    329:        bicpsw  $Z
                    330:        movl    $RB4,r5         /*expected result*/
                    331:        andl2   $BMSK,r5
                    332:        andl2   $BMSK,r8        /* mask off don't cares                 */
                    333:        cmpl    r5,r8           /*sum = expected ?                      */
                    334:        jeql    ab4r            /* if correct continue */
                    335:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    336:        movl    $1,_ercode      /* error code data miscompare */
                    337:        movl    r8,_actual      /* actual data */
                    338:        movl    $RB4,_expected  /* expected data */
                    339:        jmp     *badrtn
                    340: e7:    movpsl  _actual         /* actual = psl */
                    341:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    342:        movl    $2,_ercode      /* error code flag failure */
                    343:        jmp     *badrtn
                    344: 
                    345: 
                    346: /*     reverse operands                                                */
                    347: 
                    348: ab4r:
                    349:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    350: aab4r: callf   $4,_setjmp      /* save context for error return */
                    351:        movab   aab4r,_stpc     /* progranm counter of subtest */
                    352:        movl    $8,_subtst      /*no error*/
                    353:        movl    $2,_no_opr      /* number of operands in use */
                    354:        movl    $A2B4,_opr      /* first operand */
                    355:        movl    $A1B4,_opr + 4  /* second operand */
                    356: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    357:        movl    $A2B4,tmp       /*first operand                         */
                    358:        movb    tmp+3,r6        /*first operand                         */
                    359:        movl    $A2B4,r6        /*first operand                         */
                    360:        movl    $A1B4,tmp2      /*first operand                         */
                    361:        movb    tmp2+3,r7       /*first operand                         */
                    362:        movl    $0,r8
                    363:        bispsw  $(N|V)          /* these flags ON                       */
                    364:        addb3   r6,r7,r8        /* try 'add' instruction reg reg reg    */
                    365:        jlss    e8              /*error if N = 1                        */
                    366:        jneq    e8              /*error if Z = 0                        */
                    367:        jvs     e8              /*error if V = 1                        */
                    368:        jcc     e8              /*error if C = 0                        */
                    369:        bicpsw  $Z
                    370:        movl    $RB4,r5         /*expected result*/
                    371:        andl2   $BMSK,r5
                    372:        andl2   $BMSK,r8        /* mask off don't cares                 */
                    373:        cmpl    r5,r8           /*sum = expected ?                      */
                    374:        jeql    ab5             /* if correct continue */
                    375:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    376:        movl    $1,_ercode      /* error code data miscompare */
                    377:        movl    r8,_actual      /* actual data */
                    378:        movl    $RB4,_expected  /* expected data */
                    379:        jmp     *badrtn
                    380: e8:    movpsl  _actual         /* actual = psl */
                    381:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    382:        movl    $2,_ercode      /* error code flag failure */
                    383:        jmp     *badrtn
                    384: 
                    385: 
                    386: 
                    387: ab5:
                    388:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    389: aab5:  callf   $4,_setjmp      /* save context for error return */
                    390:        movab   aab5,_stpc      /* progranm counter of subtest */
                    391:        movl    $9,_subtst      /*no error*/
                    392:        movl    $2,_no_opr      /* number of operands in use */
                    393:        movl    $A1B5,_opr      /* first operand */
                    394:        movl    $A2B5,_opr + 4  /* second operand */
                    395: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    396:        movl    $A1B5,add1      /*first operand                         */
                    397:        movl    $A2B5,add2      /*second operand                        */
                    398:        movl    $0,sum  
                    399:        bispsw  $(V|Z|C)        /* these flags ON                       */
                    400:        addb3   add1+3,add2+3,sum+3/* try 'add' instr mem mem mem       */
                    401:        jgeq    e9              /*error if N = 0                        */
                    402:        jeql    e9              /*error if Z = 1                        */
                    403:        jvs     e9              /*error if V = 1                        */
                    404:        jcs     e9              /*error if C = 1                        */
                    405:        bicpsw  $Z
                    406:        movl    $RB5,r5         /*expected result*/
                    407:        cmpl    $RB5,sum        /*sum = expected ?                      */
                    408:        jeql    ab5r            /* if correct continue */
                    409:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    410:        movl    $1,_ercode      /* error code data miscompare */
                    411:        movl    sum,_actual     /* actual data */
                    412:        movl    $RB5,_expected  /* expected data */
                    413:        jmp     *badrtn
                    414: e9:    movpsl  _actual         /* actual = psl */
                    415:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    416:        movl    $2,_ercode      /* error code flag failure */
                    417:        jmp     *badrtn
                    418: 
                    419: 
                    420: /*     reverse operands                                                */
                    421: 
                    422: ab5r:
                    423:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    424: aab5r: callf   $4,_setjmp      /* save context for error return */
                    425:        movab   aab5r,_stpc     /* progranm counter of subtest */
                    426:        movl    $0xa,_subtst    /*no error*/
                    427:        movl    $2,_no_opr      /* number of operands in use */
                    428:        movl    $A2B5,_opr      /* first operand */
                    429:        movl    $A1B5,_opr + 4  /* second operand */
                    430: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    431:        movl    $A2B5,tmp
                    432:        movb    tmp+3,r6        
                    433:        movl    $A1B5,tmp2      /*second operand                        */
                    434:        movb    tmp2+3,r7       /*second operand                        */
                    435:        movl    $0,sum  
                    436:        bispsw  $(V|Z|C)        /* these flags ON                       */
                    437:        addb3   r6,r7,sum+3     /* try 'add' instruction reg reg mem            */
                    438:        jgeq    e10             /*error if N = 0                        */
                    439:        jeql    e10             /*error if Z = 1                        */
                    440:        jvs     e10             /*error if V = 1                        */
                    441:        jcs     e10             /*error if C = 1                        */
                    442:        bicpsw  $Z
                    443:        movl    $RB5,r5         /*expected result*/
                    444:        cmpl    $RB5,sum        /*sum = expected ?                      */
                    445:        jeql    ab6             /* if correct continue */
                    446:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    447:        movl    $1,_ercode      /* error code data miscompare */
                    448:        movl    sum,_actual     /* actual data */
                    449:        movl    $RB5,_expected  /* expected data */
                    450:        jmp     *badrtn
                    451: e10:   movpsl  _actual         /* actual = psl */
                    452:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    453:        movl    $2,_ercode      /* error code flag failure */
                    454:        jmp     *badrtn
                    455: 
                    456: ab6:
                    457:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    458: aab6:  callf   $4,_setjmp      /* save context for error return */
                    459:        movab   aab6,_stpc      /* progranm counter of subtest */
                    460:        movl    $0xb,_subtst    /*no error*/
                    461:        movl    $2,_no_opr      /* number of operands in use */
                    462:        movl    $A1B6,_opr      /* first operand */
                    463:        movl    $A2B6,_opr + 4  /* second operand */
                    464: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    465:        movl    $A1B6,add1      /*first operand                         */
                    466:        movl    $A2B6,add2      /*second operand                        */
                    467:        movl    $0,sum  
                    468:        bispsw  $(Z|V)          /* these flags ON                       */
                    469:        addb3   add1+3,add2+3,sum+3/* try 'add' instruction             */
                    470:        jgeq    e11             /*error if N = 0                        */
                    471:        jeql    e11             /*error if Z = 1                        */
                    472:        jvs     e11             /*error if V = 1                        */
                    473:        jcc     e11             /*error if C = 0                        */
                    474:        bicpsw  $Z
                    475:        movl    $RB6,r5         /*expected result*/
                    476:        cmpl    $RB6,sum        /*sum = expected ?                      */
                    477:        jeql    ab6r            /* if correct continue */
                    478:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    479:        movl    $1,_ercode      /* error code data miscompare */
                    480:        movl    sum,_actual     /* actual data */
                    481:        movl    $RB6,_expected  /* expected data */
                    482:        jmp     *badrtn
                    483: e11:   movpsl  _actual         /* actual = psl */
                    484:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    485:        movl    $2,_ercode      /* error code flag failure */
                    486:        jmp     *badrtn
                    487: 
                    488: 
                    489: /*     reverse operands                                                */
                    490: 
                    491: ab6r:
                    492:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    493: aab6r: callf   $4,_setjmp      /* save context for error return */
                    494:        movab   aab6r,_stpc     /* progranm counter of subtest */
                    495:        movl    $0xc,_subtst    /*no error*/
                    496:        movl    $2,_no_opr      /* number of operands in use */
                    497:        movl    $A1B6,_opr      /* first operand */
                    498:        movl    $A2B6,_opr + 4  /* second operand */
                    499: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    500:        movl    $A2B6,add1      /*first operand                         */
                    501:        movl    $A1B6,add2      /*second operand                        */
                    502:        movl    $0,sum  
                    503:        bispsw  $(Z|V)  /* these flags ON                       */
                    504:        addb3   add1+3,add2+3,sum+3/* try 'add' instruction             */
                    505:        jgeq    e12             /*error if N = 0                        */
                    506:        jeql    e12             /*error if Z = 1                        */
                    507:        jvs     e12             /*error if V = 1                        */
                    508:        jcc     e12             /*error if C = 0                        */
                    509:        bicpsw  $Z
                    510:        movl    $RB6,r5         /*expected result*/
                    511:        cmpl    $RB6,sum        /*sum = expected ?                      */
                    512:        jeql    e555            /* if correct continue */
                    513:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    514:        movl    $1,_ercode      /* error code data miscompare */
                    515:        movl    sum,_actual     /* actual data */
                    516:        movl    $RB6,_expected  /* expected data */
                    517:        jmp     *badrtn
                    518: e12:   movpsl  _actual         /* actual = psl */
                    519:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    520:        movl    $2,_ercode      /* error code flag failure */
                    521:        jmp     *badrtn
                    522: e555:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    523:        jmp     *return
                    524:                                /*test passed , goto monitor            */
                    525: 
                    526: /*                                                                     */
                    527: /*     Variables                                                       */
                    528: /*                                                                     */
                    529:        .align  2
                    530: add1:  .space  4
                    531: add2:  .space  4
                    532: sum:   .space  4
                    533: add:   .space  4
                    534: tmp:   .space  4
                    535: tmp2:  .space  4
                    536: tmp3:  .space  4
                    537: 
                    538: /*     End of file                                                     */
                    539: 
                    540: 

unix.superglobalmegacorp.com

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