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

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

unix.superglobalmegacorp.com

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