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

1.1       root        1: 
                      2: /*             BBC (branch on bit clear) test                          */
                      3: /*                                                                     */
                      4: /*Test name = bbc                                                      */
                      5: /*Description =                                                                */
                      6: /*     This test checks 'bbc' instruction as follows:                  */
                      7: /*     (1) forward/backward branch on bit set conditon                 */
                      8: /*     (2) no branch on bit off condition                              */
                      9: /*     (3) no effect on condition codes                                */
                     10: /*                                                                     */
                     11: /*                                                                     */
                     12: 
                     13: /*                                                                     */
                     14: /*     constants                                                       */
                     15: /*                                                                     */
                     16: 
                     17:        .set    P1,0x80808101   /*bits 0,8,15,23,31 ON*/
                     18:        .set    P2,0x7f7f7efe   /*same bits OFF       */
                     19:        .set    BIT0,0
                     20:        .set    BIT8,8
                     21:        .set    BIT15,15
                     22:        .set    BIT23,23
                     23:        .set    BIT31,31
                     24: 
                     25: /*                                                                     */
                     26: /*     Syst.s - Constants                                              */
                     27: /*                                                                     */
                     28:        .set    IPL,8
                     29:        .set    HIGH,31
                     30:        .set    ZERO,0
                     31:        .set    ONES,0xffffffff
                     32:        .set    N,8
                     33:        .set    Z,4
                     34:        .set    V,2
                     35:        .set    C,1
                     36:        .set    T,16
                     37:        .set    IV,32
                     38:        .set    FU,64
                     39:        .set    DV,128
                     40:        .set    PSWMASK,0x003f
                     41: 
                     42:        .globl  _bbc
                     43: _bbc:
                     44:        callf   $4,_setjmp      /* save context for error return */
                     45:        movab   _bbc,_stpc      /* save address of subtest */
                     46:        movl    $1,_subtst      /* subtest number */
                     47:        movl    $2,_no_opr      /* number of operands in use */
                     48:        movl    $BIT0,_opr      /* first operand */
                     49:        movl    $P2,_opr + 4    /* second operand */
                     50:        movl    $0,_actual      /* no data for this test it is zero */
                     51:        movl    $0,_expected    /* no data for this test it is zero */
                     52: 0:     
                     53:        movl    $P2,r0          /*bits 0,8,15,23,31 OFF                 */
                     54:        bicpsw  $PSWMASK
                     55:        bispsw  $(N|Z|V|C)      /*these flags ON                        */
                     56:        bbs     $BIT0,r0,erc0   /*should not branch as bit 0 is OFF data reg*/
                     57:        bbc     $BIT0,r0,fs0    /*branch forward on bit clear data reg  */
                     58:        movpsl  _actual         /* actual = psl */
                     59:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     60:        movl    $2,_ercode      /* error code flag failure bad jump action */
                     61:        jmp     *badrtn         /* no actual or expected data */
                     62: bs0:
                     63:        bbc     $BIT0,r0,flgs0  /*branch to flag test                   */
                     64:        jmp     error1
                     65:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     66:        jmp     error1
                     67: erc0:
                     68:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     69:        jmp     error1
                     70:        .space  110             /*dangerous area - don't come in        */
                     71: fs0:
                     72:        bbc     $BIT0,r0,bs0    /*branch backward on bit clear          */
                     73:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     74:        jmp     error1
                     75: flgs0:
                     76:        jneq    errs1           /*Z != 1 - error                        */
                     77:        jlss    errs1           /*N != 0 - error                        */
                     78:        jvs     errs1           /*V != 0 - error                        */
                     79:        jcc     errs1           /*C != 1 - error                        */
                     80:        jmp     bn2             /* no errors - continue */
                     81: errs1:
                     82:        movpsl  _actual         /* actual = psl */
                     83:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     84:        movl    $2,_ercode      /* error code flag failure */
                     85:        jmp     *badrtn
                     86: 
                     87: bn2:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     88: b2:    callf   $4,_setjmp      /* save context for error return */
                     89:        movab   b2,_stpc        /* save address of subtest */
                     90:        movl    $2,_subtst      /* subtest number */
                     91:        movl    $2,_no_opr      /* number of operands in use */
                     92:        movl    $BIT31,_opr     /* first operand */
                     93:        movl    $P2,_opr + 4    /* second operand */
                     94: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                     95:        movl    $P2,r0          /*bits 0,8,15,23,31 OFF                 */
                     96:        movl    $BIT31,r6
                     97:        bicpsw  $PSWMASK
                     98:        bbs     r6,r0,erc31     /*should not branch as bit 31 is OFF reg reg */
                     99:        bbc     r6,r0,fs31      /*branch forward on bit clear reg reg   */
                    100:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    101:        jmp     error1
                    102: bs31:
                    103:        bbc     $BIT31,r0,flgc31 /*branch to flag test                  */
                    104:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    105:        jmp     error1
                    106: erc31:
                    107:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    108:        jmp     error1
                    109:        .space  110             /*dangerous area - don't come in        */
                    110: fs31:
                    111:        bbc     $BIT31,r0,bs31  /*branch backward on bit clear          */
                    112:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    113:        jmp     error1
                    114: flgc31:
                    115:        jneq    errs2           /*Z != 1 - error                        */
                    116:        jlss    errs2           /*N != 0 - error                        */
                    117:        jvs     errs2           /*V != 0 - error                        */
                    118:        jcc     errs2           /*C != 1 - error                        */
                    119:        jmp     bn3             /* no errors - continue */
                    120: errs2:
                    121:        movpsl  _actual         /* actual = psl */
                    122:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    123:        movl    $2,_ercode      /* error code flag failure */
                    124:        jmp     *badrtn
                    125: 
                    126: bn3:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    127: b3:    callf   $4,_setjmp      /* save context for error return */
                    128:        movab   b3,_stpc        /* save address of subtest */
                    129:        movl    $3,_subtst      /* subtest number */
                    130:        movl    $2,_no_opr      /* number of operands in use */
                    131:        movl    $BIT8,_opr      /* first operand */
                    132:        movl    $P2,_opr + 4    /* second operand */
                    133: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    134:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    135:        bbs     $BIT8,tloc,erc8 /* should not branch as bit 8 is off data mem*/
                    136:        bbc     $BIT8,tloc,fs8  /*branch forward on bit clear data mem  */
                    137:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    138:        jmp     error1
                    139: bs8:
                    140:        bbc     $BIT8,r0,s15    /*next test                             */
                    141:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    142:        jmp     error1
                    143: erc8:
                    144:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    145:        jmp     error1
                    146:        .space  110             /*dangerous area - don't come in        */
                    147: fs8:
                    148:        bbc     $BIT8,r0,bs8    /*branch backward on bit clear          */
                    149:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    150:        jmp     error1
                    151: 
                    152: s15:
                    153:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    154: b4:    callf   $4,_setjmp      /* save context for error return */
                    155:        movab   b4,_stpc        /* save address of subtest */
                    156:        movl    $4,_subtst      /* subtest number */
                    157:        movl    $2,_no_opr      /* number of operands in use */
                    158:        movl    $BIT15,_opr     /* first operand */
                    159:        movl    $P2,_opr + 4    /* second operand */
                    160: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    161:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    162:        movl    $BIT15,r0
                    163:        bbs     r0,tloc,erc15 /*should not branch as bit 15 is OFF reg mem*/
                    164:        bbc     r0,tloc,bs15
                    165:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    166:        jmp     error1
                    167: bs15:
                    168:        bbc     $BIT15,r0,s23   /*next test                             */
                    169:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    170:        jmp     error1
                    171: erc15:
                    172:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    173:        jmp     error1
                    174:        .space  110             /*dangerous area - don't come in        */
                    175: fs15:
                    176:        bbc     $BIT15,r0,bs15  /*branch backward on bit clear          */
                    177:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    178:        jmp     error1
                    179: 
                    180: s23:
                    181:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    182: b5:    callf   $4,_setjmp      /* save context for error return */
                    183:        movab   b5,_stpc        /* save address of subtest */
                    184:        movl    $5,_subtst      /* subtest number */
                    185:        movl    $2,_no_opr      /* number of operands in use */
                    186:        movl    $BIT23,_opr     /* first operand */
                    187:        movl    $P2,_opr + 4    /* second operand */
                    188: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    189:        movl    $P2,r0          /*bits 0,8,15,23,31 OFF                 */
                    190:        bbs     $BIT23,r0,erc23 /*should not branch as bit 23 is OFF    */
                    191:        bbc     $BIT23,r0,fs23  /*branch forward on bit clear           */
                    192:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    193:        jmp     error1
                    194: bs23:
                    195:        bbc     $BIT23,r0,sm0   /*next test                             */
                    196:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    197:        jmp     error1
                    198: erc23:
                    199:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    200:        jmp     error1
                    201:        .space  110             /*dangerous area - don't come in        */
                    202: fs23:
                    203:        bbc     $BIT23,r0,bs23  /*branch backward on bit clear          */
                    204:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    205:        jmp     error1
                    206: 
                    207: /*                                                                     */
                    208: /*     now use memory location(tloc) instead of register               */
                    209: /*                                                                     */
                    210: 
                    211: sm0:
                    212:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    213: b6:    callf   $4,_setjmp      /* save context for error return */
                    214:        movab   b6,_stpc        /* save address of subtest */
                    215:        movl    $6,_subtst      /* subtest number */
                    216:        movl    $2,_no_opr      /* number of operands in use */
                    217:        movl    $BIT0,_opr      /* first operand */
                    218: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    219:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    220:        bicpsw  $PSWMASK
                    221:        bispsw  $(N|Z|V|C)      /*these flags ON                        */
                    222:        bbs     $BIT0,tloc,ercm0/*should not branch as bit 0 is OFF     */
                    223:        bbc     $BIT0,tloc,fsm0 /*branch forward on bit clear           */
                    224:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    225:        jmp     error1
                    226: bsm0:
                    227:        bbc     $BIT0,tloc,flgsm0       /*branch to flag test           */
                    228:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    229:        jmp     error1
                    230: ercm0:
                    231:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    232:        jmp     error1
                    233:        .space  110             /*dangerous area - don't come in        */
                    234: fsm0:
                    235:        bbc     $BIT0,tloc,bsm0 /*branch backward on bit clear          */
                    236:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    237:        jmp     error1
                    238: flgsm0:
                    239:        jneq    errs3           /*Z changed - error                     */
                    240:        jlss    errs3           /*N changed - error                     */
                    241:        jvs     errs3           /*V changed - error                     */
                    242:        jcc     errs3           /*C changed - error                     */
                    243:        jmp     bn7             /* no errors - continue */
                    244: errs3:
                    245:        movpsl  _actual         /* actual = psl */
                    246:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    247:        movl    $2,_ercode      /* error code flag failure */
                    248:        jmp     *badrtn
                    249: 
                    250: bn7:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    251: b7:    callf   $4,_setjmp      /* save context for error return */
                    252:        movab   b7,_stpc        /* save address of subtest */
                    253:        movl    $7,_subtst      /* subtest number */
                    254:        movl    $2,_no_opr      /* number of operands in use */
                    255:        movl    $BIT31,_opr     /* first operand */
                    256: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    257:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    258:        bicpsw  $PSWMASK
                    259:        bbs     $BIT31,tloc,ercm31 /*should not branch as bit 31 is OFF */
                    260:        bbc     $BIT31,tloc,fsm31 /*branch forward on bit clear         */
                    261:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    262:        jmp     error1
                    263: bsm31:
                    264:        bbc     $BIT31,tloc,flgcm31/*branch to flag test                */
                    265:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    266:        jmp     error1
                    267: ercm31:
                    268:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    269:        jmp     error1
                    270:        .space  110             /*dangerous area - don't come in        */
                    271: fsm31:
                    272:        bbc     $BIT31,tloc,bsm31 /*branch backward on bit clear        */
                    273:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    274:        jmp     error1
                    275: flgcm31:
                    276:        jneq    errs4           /*Z changed - error                     */
                    277:        jlss    errs4           /*N changed - error                     */
                    278:        jvs     errs4           /*V changed - error                     */
                    279:        jcc     errs4           /*C changed - error                     */
                    280:        jmp     bn8             /* no errors - continue */
                    281: errs4:
                    282:        movpsl  _actual         /* actual = psl */
                    283:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    284:        movl    $2,_ercode      /* error code flag failure */
                    285:        jmp     *badrtn
                    286: 
                    287: bn8:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    288: b8:    callf   $4,_setjmp      /* save context for error return */
                    289:        movab   b8,_stpc        /* save address of subtest */
                    290:        movl    $8,_subtst      /* subtest number */
                    291:        movl    $2,_no_opr      /* number of operands in use */
                    292:        movl    $BIT8,_opr      /* first operand */
                    293: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    294:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    295:        bbs     $BIT8,tloc,ercm8 /*should not branch as bit 8 is OFF    */
                    296:        bbc     $BIT8,tloc,fsm8 /*branch forward on bit clear           */
                    297:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    298:        jmp     error1
                    299: bsm8:
                    300:        bbc     $BIT8,tloc,sm15 /*next test                             */
                    301:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    302:        jmp     error1
                    303: ercm8:
                    304:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    305:        jmp     error1
                    306:        .space  110             /*dangerous area - don't come in        */
                    307: fsm8:
                    308:        bbc     $BIT8,tloc,bsm8 /*branch backward on bit clear          */
                    309:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    310:        jmp     error1
                    311: 
                    312: sm15:
                    313:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    314: b9:    callf   $4,_setjmp      /* save context for error return */
                    315:        movab   b9,_stpc        /* save address of subtest */
                    316:        movl    $9,_subtst      /* subtest number */
                    317:        movl    $2,_no_opr      /* number of operands in use */
                    318:        movl    $BIT15,_opr     /* first operand */
                    319: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    320:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    321:        bbs     $BIT15,tloc,ercm15/*should not branch as bit 15 is OFF  */
                    322:        bbc     $BIT15,tloc,fsm15/*branch forward on bit clear          */
                    323:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    324:        jmp     error1
                    325: bsm15:
                    326:        bbc     $BIT15,tloc,sm23/*next test                             */
                    327:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    328:        jmp     error1
                    329: ercm15:
                    330:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    331:        jmp     error1
                    332:        .space  110             /*dangerous area - don't come in        */
                    333: fsm15:
                    334:        bbc     $BIT15,tloc,bsm15/*branch backward on bit clear         */
                    335:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    336:        jmp     error1
                    337: 
                    338: sm23:
                    339:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    340: b10:   callf   $4,_setjmp      /* save context for error return */
                    341:        movab   b10,_stpc       /* save address of subtest */
                    342:        movl    $0xa,_subtst    /* subtest number */
                    343:        movl    $2,_no_opr      /* number of operands in use */
                    344:        movl    $BIT23,_opr     /* first operand */
                    345: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
                    346:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
                    347:        bbs     $BIT23,tloc,ercm23 /*should not branch as bit 23 is OFF */
                    348:        bbc     $BIT23,tloc,fsm23 /*branch forward on bit clear         */
                    349:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    350:        jmp     error1
                    351: bsm23:
                    352:        bbc     $BIT23,tloc,last
                    353:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    354:        jmp     error1
                    355: ercm23:
                    356:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    357:        jmp     error1
                    358:        .space  110             /*dangerous area - don't come in        */
                    359: fsm23:
                    360:        bbc     $BIT23,tloc,bsm23/*branch backward on bit clear         */
                    361:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    362:        jmp     error1
                    363: 
                    364: last:
                    365:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    366:        jmp     *return
                    367: 
                    368: error1:
                    369:        movl    $1,_ercode /* error code data miscompare bad branch action */
                    370:        jmp     *badrtn         /* no actual or expected data */
                    371: 
                    372: /*                                                                     */
                    373: /*     Variables                                                       */
                    374: /*                                                                     */
                    375:        .align  2
                    376: tloc:  .space  4
                    377: 
                    378: 
                    379: /*     End of file                                                     */
                    380: 

unix.superglobalmegacorp.com

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