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