Annotation of cci/d/entry/bit_b.s, revision 1.1

1.1     ! root        1: /*             BITB (bit byte) test                                    */
        !             2: /*                                                                     */
        !             3: /*Test name = bitb                                                     */
        !             4: /*Description =                                                                */
        !             5: /*     This test checks 'bitb' instruction as follows:                 */
        !             6: /*     source          mask            N Z V C (flags)                 */
        !             7: /*     ______          ____            ______________                  */
        !             8: /*     0xaa            0x55            0 1 0 1                         */
        !             9: /*     0x55            0xaa            0 1 0 1                         */
        !            10: /*     0x80            0x80            0 0 0 0                         */
        !            11: /*      R               M                ---                           */
        !            12: /*      M               R                ---                           */
        !            13: /*                                                                     */
        !            14: 
        !            15: /*                                                                     */
        !            16: /*     Constants definition for 'bit_x' tests                          */
        !            17: /*                                                                     */
        !            18:        .set    SRCB1,0xaa
        !            19:        .set    SRCW1,0xaaaa
        !            20:        .set    SRCL1,0xaaaaaaaa
        !            21:        .set    MASKB1,0x55
        !            22:        .set    MASKW1,0x5555
        !            23:        .set    MASKL1,0x55555555
        !            24:        .set    SRCB2,MASKB1
        !            25:        .set    SRCW2,MASKW1
        !            26:        .set    SRCL2,MASKL1
        !            27:        .set    MASKB2,SRCB1
        !            28:        .set    MASKW2,SRCW1
        !            29:        .set    MASKL2,SRCL1
        !            30:        .set    SRCB3,0x80
        !            31:        .set    SRCW3,0x8000
        !            32:        .set    SRCL3,0x80000000
        !            33:        .set    MASKB3,SRCB3
        !            34:        .set    MASKW3,SRCW3
        !            35:        .set    MASKL3,SRCL3
        !            36: /*                                                                     */
        !            37: /*     Syst.s - Constants                                              */
        !            38: /*                                                                     */
        !            39:        .set    IPL,8
        !            40:        .set    HIGH,31
        !            41:        .set    ZERO,0
        !            42:        .set    ONES,0xffffffff
        !            43:        .set    N,8
        !            44:        .set    Z,4
        !            45:        .set    V,2
        !            46:        .set    C,1
        !            47:        .set    T,16
        !            48:        .set    IV,32
        !            49:        .set    FU,64
        !            50:        .set    DV,128
        !            51:        .set    PSWMASK,0x003f
        !            52: 
        !            53:        .globl  _bit_b
        !            54: _bit_b:
        !            55: bitbx: 
        !            56:        callf   $4,_setjmp      /* save context for error return */
        !            57:        movab   bitbx,_stpc     /* save address of subtest */
        !            58:        movl    $1,_subtst      /* subtest number */
        !            59:        movl    $2,_no_opr      /* number of operands in use */
        !            60:        movl    $MASKB1,_opr    /* first operand */
        !            61:        movl    $SRCB1,_opr + 4 /* second operand */
        !            62: 0:     
        !            63:        bicpsw  $PSWMASK        /*clear overflow enable                 */
        !            64:        movl    $SRCB1,r4       /*r4 = source                           */
        !            65:        movl    $MASKB1,tloc    /*tloc = mask                           */
        !            66:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !            67:        bitb    tloc+3,r4       /*tloc AND r4 mem to reg                */
        !            68:        jneq    error1          /*error if Z = 0                        */
        !            69:        jlss    error1          /*error if N =1                         */
        !            70:        jvs     error1          /*error if V = 1                        */
        !            71:        jcc     error1          /*error if C = 0                        */
        !            72:        jmp     1f
        !            73: error1:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !            74:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !            75:        movl    $2,_ercode      /* error code flag failure */
        !            76:        jmp     *badrtn
        !            77: 1:     cmpl    $SRCB1,r4       /*check source & mask are unchanged     */
        !            78:        jeql    1f              /*error - source changed                */
        !            79:        bbs     $0,_scoplp,0b   /* if set loop om error */
        !            80:        movl    $3,_ercode      /* error code operand was modified */
        !            81:        movl    r4,_actual      /* actual data */
        !            82:        movl    $SRCB1,_expected        /* expected data */
        !            83:        jmp     *badrtn
        !            84: 1:     bicpsw  $Z              /*clear Z flag                          */
        !            85:        cmpl    $MASKB1,tloc    /*                                      */
        !            86:        jeql    1f              /*error - mask changed                  */
        !            87:        bbs     $0,_scoplp,0b   /* if set loop om error */
        !            88:        movl    $3,_ercode      /* error code operand was modified */
        !            89:        movl    tloc,_actual    /* actual data */
        !            90:        movl    $MASKB1,_expected       /* expected data */
        !            91:        jmp     *badrtn
        !            92: 
        !            93: /*     Now use different patterns for source & mask                    */
        !            94: 
        !            95: 1:     bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            96: st2:   callf   $4,_setjmp      /* save context for error return */
        !            97:        movab   st2,_stpc       /* save address of subtest */
        !            98:        movl    $2,_subtst      /* subtest number */
        !            99:        movl    $2,_no_opr      /* number of operands in use */
        !           100:        movl    $MASKB2,_opr    /* first operand */
        !           101:        movl    $SRCB2,_opr + 4 /* second operand */
        !           102: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           103:        movl    $SRCB2,tloc     /*r1 = source                           */
        !           104:        movl    $MASKB2,r3      /*tloc = mask                           */
        !           105:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !           106:        bitb    r3,tloc+3       /*tloc AND r3 reg to mem                */
        !           107:        jneq    error2          /*error if Z = 0                        */
        !           108:        jlss    error2          /*error if N =1                         */
        !           109:        jvs     error2          /*error if V = 1                        */
        !           110:        jcc     error2          /*error if C = 0                        */
        !           111:        jmp     bitbm1
        !           112: error2:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           113:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           114:        movl    $2,_ercode      /* error code flag failure */
        !           115:        jmp     *badrtn
        !           116: 
        !           117: /*     Yet another patterns for source & mask                          */
        !           118: 
        !           119: bitbm1:        
        !           120:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           121: st3:   callf   $4,_setjmp      /* save context for error return */
        !           122:        movab   st3,_stpc       /* save address of subtest */
        !           123:        movl    $3,_subtst      /* subtest number */
        !           124:        movl    $2,_no_opr      /* number of operands in use */
        !           125:        movl    $MASKB3,_opr    /* first operand */
        !           126:        movl    $SRCB3,_opr + 4 /* second operand */
        !           127: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           128:        movl    $SRCB3,tloc2    /*r1 = source                           */
        !           129:        movl    $MASKB3,tloc    /*tloc = mask                           */
        !           130:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           131:        bitb    tloc+3,tloc2+3  /*tloc AND  tloc2 mem to mem            */
        !           132:        beql    error3          /*error if Z = 1                        */
        !           133:        jgeq    error3          /*error if N =0                         */
        !           134:        jvs     error3          /*error if V = 1                        */
        !           135:        jcc     error3          /*error if C = 0                        */
        !           136:        jmp     t4
        !           137: error3:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           138:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           139:        movl    $2,_ercode      /* error code flag failure */
        !           140:        jmp     *badrtn
        !           141: /*     Yet another patterns for source & mask                          */
        !           142: 
        !           143: t4:
        !           144:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           145: st4:   callf   $4,_setjmp      /* save context for error return */
        !           146:        movab   st4,_stpc       /* save address of subtest */
        !           147:        movl    $4,_subtst      /* subtest number */
        !           148:        movl    $2,_no_opr      /* number of operands in use */
        !           149:        movl    $MASKB3,_opr    /* first operand */
        !           150:        movl    $SRCB3,_opr + 4 /* second operand */
        !           151: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           152:        movl    $SRCB3,tloc2    /*tloc2 = source                                */
        !           153:        movl    $MASKB3,tloc    /*tloc = mask                           */
        !           154:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           155:        bitb    tloc+3,$SRCB3   /*tloc AND  tloc2 mem to  data          */
        !           156:        beql    error4          /*error if Z = 1                        */
        !           157:        jlss    error4          /*error if N =1                         */
        !           158:        jvs     error4          /*error if V = 1                        */
        !           159:        jcc     error4          /*error if C = 0                        */
        !           160:        jmp     bitbm
        !           161: error4:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           162:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           163:        movl    $2,_ercode      /* error code flag failure */
        !           164:        jmp     *badrtn
        !           165: 
        !           166:        
        !           167: /*                                                                     */
        !           168: /*     Repeat the above with source = M, & mask = R                    */
        !           169: /*                                                                     */
        !           170: 
        !           171: bitbm:
        !           172:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           173: st5:   callf   $4,_setjmp      /* save context for error return */
        !           174:        movab   st5,_stpc       /* save address of subtest */
        !           175:        movl    $5,_subtst      /* subtest number */
        !           176:        movl    $2,_no_opr      /* number of operands in use */
        !           177:        movl    $MASKB1,_opr    /* first operand */
        !           178:        movl    $SRCB1,_opr + 4 /* second operand */
        !           179: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           180:        movl    $SRCB1,r4       /*tloc = source                         */
        !           181:        movl    $MASKB1,r3      /*r3 = mask                             */
        !           182:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !           183:        bitb    r3,r4           /*r3 AND r4 reg to reg                  */
        !           184:        jneq    error5          /*error if Z = 0                        */
        !           185:        jlss    error5          /*error if N =1                         */
        !           186:        jvs     error5          /*error if V = 1                        */
        !           187:        jcc     error5          /*error if C = 0                        */
        !           188:        jmp     1f
        !           189: error5:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           190:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           191:        movl    $2,_ercode      /* error code flag failure */
        !           192:        jmp     *badrtn
        !           193: 1:     cmpl    $SRCB1,r4       /*check source & mask are unchanged     */
        !           194:        jeql    1f              /*error - source changed                */
        !           195:        bbs     $0,_scoplp,0b   /* if set loop om error */
        !           196:        movl    $3,_ercode      /* error code operand was modified */
        !           197:        movl    r4,_actual      /* actual data */
        !           198:        movl    $SRCB1,_expected        /* expected data */
        !           199:        jmp     *badrtn
        !           200: 1:     bicpsw  $Z              /*clear Z flag                          */
        !           201:        cmpl    $MASKB1,r3
        !           202:        jeql    t6              /*error - source changed                */
        !           203:        bbs     $0,_scoplp,0b   /* if set loop om error */
        !           204:        movl    $3,_ercode      /* error code operand was modified */
        !           205:        movl    r3,_actual      /* actual data */
        !           206:        movl    $MASKB1,_expected       /* expected data */
        !           207:        jmp     *badrtn
        !           208: 
        !           209: /*     Now use different patterns for source & mask                    */
        !           210: 
        !           211: t6:
        !           212:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           213: st6:   callf   $4,_setjmp      /* save context for error return */
        !           214:        movab   st6,_stpc       /* save address of subtest */
        !           215:        movl    $6,_subtst      /* subtest number */
        !           216:        movl    $2,_no_opr      /* number of operands in use */
        !           217:        movl    $MASKB2,_opr    /* first operand */
        !           218:        movl    $SRCB2,_opr + 4 /* second operand */
        !           219: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           220:        movl    $SRCB2,tloc     /*tloc = source                         */
        !           221:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
        !           222:        bitb    $MASKB2,tloc+3  /* $MASKB2 AND tloc data to mem         */
        !           223:        jneq    error6          /*error if Z = 0                        */
        !           224:        jlss    error6          /*error if N =1                         */
        !           225:        jvs     error6          /*error if V = 1                        */
        !           226:        jcc     error6          /*error if C = 0                        */
        !           227:        jmp     t7
        !           228: error6:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           229:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           230:        movl    $2,_ercode      /* error code flag failure */
        !           231:        jmp     *badrtn
        !           232: 
        !           233: /*     Yet another patterns for source & mask                          */
        !           234: 
        !           235: t7:
        !           236:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           237: st7:   callf   $4,_setjmp      /* save context for error return */
        !           238:        movab   st7,_stpc       /* save address of subtest */
        !           239:        movl    $7,_subtst      /* subtest number */
        !           240:        movl    $2,_no_opr      /* number of operands in use */
        !           241:        movl    $MASKB3,_opr    /* first operand */
        !           242:        movl    $SRCB3,_opr + 4 /* second operand */
        !           243: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           244:        movl    $SRCB3,r4       /*tloc = source                         */
        !           245:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           246:        bitb    $MASKB3,r4      /*r4 AND tloc data to reg               */
        !           247:        jeql    error7          /*error if Z = 1                        */
        !           248:        jlss    error7          /*error if N =1                         */
        !           249:        jvs     error7          /*error if V = 1                        */
        !           250:        jcc     error7          /*error if C = 0                        */
        !           251:        jmp     t8
        !           252: error7:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           253:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           254:        movl    $2,_ercode      /* error code flag failure */
        !           255:        jmp     *badrtn
        !           256: 
        !           257: /*     Yet another patterns for source & mask                          */
        !           258: 
        !           259: t8:
        !           260:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           261: st8:   callf   $4,_setjmp      /* save context for error return */
        !           262:        movab   st8,_stpc       /* save address of subtest */
        !           263:        movl    $8,_subtst      /* subtest number */
        !           264:        movl    $2,_no_opr      /* number of operands in use */
        !           265:        movl    $MASKB3,_opr    /* first operand */
        !           266:        movl    $SRCB3,_opr + 4 /* second operand */
        !           267: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
        !           268:        movl    $MASKB3,r3
        !           269:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
        !           270:        bitb    r3,$SRCB3       /*r3 AND tloc reg to data                */
        !           271:        jeql    error8          /*error if Z = 1                        */
        !           272:        jlss    error8          /*error if N =1                         */
        !           273:        jvs     error8          /*error if V = 1                        */
        !           274:        jcc     error8          /*error if C = 0                        */
        !           275:        jmp     aldn
        !           276: error8:        movpsl  _actual         /* actual psl MAYBE is incorrect */
        !           277:        bbs     $0,_scoplp,0b   /* if set scoplp on error */
        !           278:        movl    $2,_ercode      /* error code flag failure */
        !           279:        jmp     *badrtn
        !           280: 
        !           281: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           282:        jmp     *return         /* good, return to monitor */
        !           283: 
        !           284: /*                                                                     */
        !           285: /*     Variables                                                       */
        !           286: /*                                                                     */
        !           287:        .align  2
        !           288: tloc:  .space  4               /*test location                         */
        !           289:        .align  2
        !           290: tloc2:
        !           291:        .space  4               /* test location two                    */
        !           292: 
        !           293: 

unix.superglobalmegacorp.com

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