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

1.1     ! root        1: 
        !             2: 
        !             3: 
        !             4: /*             TESTB (test byte) test                                  */
        !             5: 
        !             6: /*Test name = tstb                                                     */
        !             7: /*Description =                                                                */
        !             8: /*     This test checks "tstb" instruction to see that                 */
        !             9: /*     (1)Z, V, & C flags are set to zero (src < 0) & N = 1            */
        !            10: /*     (2)N, V, & C flags are set to zero (src = 0) & Z = 1            */
        !            11: /*     (3)all the flags are zero (src > 0).                            */
        !            12: /*     Register 1 (r1) & memory location tmloc(lebel) are used as      */
        !            13: /*     src(source).                                                    */
        !            14: /*                                                                     */
        !            15: /*     Constants definition                                            */
        !            16: /*                                                                     */
        !            17:        .set    IPL,8
        !            18:        .set    HIGH,31
        !            19:        .set    ZERO,0
        !            20:        .set    ONES,0xffffffff
        !            21:        .set    N,8
        !            22:        .set    Z,4
        !            23:        .set    V,2
        !            24:        .set    C,1
        !            25:        .set    PSWMASK,0x003f
        !            26:        .set    SRCB1,0xff
        !            27:        .set    SRCW1,0xffff
        !            28:        .set    SRCL1,0xffffffff
        !            29:        .set    SRCB2,0
        !            30:        .set    SRCW2,0
        !            31:        .set    SRCL2,0
        !            32:        .set    SRCB3,1
        !            33:        .set    SRCW3,1
        !            34:        .set    SRCL3,1
        !            35: 
        !            36:        .globl  _tst_b
        !            37: _tst_b:
        !            38:        callf   $4,_setjmp      /* save context for error return */
        !            39:        movab   _tst_b,_stpc    /* save address of subtest start */
        !            40:        movl    $1,_subtst      /* subtest number */
        !            41:        movl    $1,_no_opr      /* number of operands in use */
        !            42:        movl    $SRCB1,_opr     /* first operand */
        !            43: 0:     movl    $SRCB1,r1       /*r1 = source                           */
        !            44:        bispsw  $(Z|V|C)        /*turn zero, overflow, & carry ON       */
        !            45:        tstb    r1              /*execute "tstb"                        */
        !            46:        beql    error1          /*error if Z = 1                        */
        !            47:        blss    error1          /*error if N = 1                        */
        !            48:        bvs     error1          /*error if V = 1                        */
        !            49:        bcc     error1          /*error if C = 0                        */
        !            50:        jmp     t2              /* if correct continue */
        !            51: error1:        movpsl  _actual         /* actual = psl incorrect for some reason */
        !            52:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            53:        movl    $2,_ercode      /* error code flag failure */
        !            54:        jmp     *badrtn
        !            55: /*                                                                     */
        !            56: /*     Now try src = 0                                                 */
        !            57: /*                                                                     */
        !            58: t2:
        !            59:        bbs     $0,_force_lp,0b /* if set loop on last subtest  */
        !            60: at2:   callf   $4,_setjmp      /* save context for error return */
        !            61:        movab   at2,_stpc       /* save address of subtest start */
        !            62:        movl    $2,_subtst      /* subtest number */
        !            63:        movl    $1,_no_opr      /* number of operands in use */
        !            64:        movl    $SRCB2,_opr     /* first operand */
        !            65: 0:     bicpsw  $PSWMASK        /*disable overflow & other enable bits  */
        !            66:        movl    $SRCB2,r1       /*r1 = source                           */
        !            67:        bispsw  $(N|V|C)        /*turn neg, overflow, & carry ON        */
        !            68:        tstb    r1              /*execute "tstb"                        */
        !            69:        bneq    error2          /*error if Z = 0                        */
        !            70:        blss    error2          /*error if N = 1                        */
        !            71:        bvs     error2          /*error if V = 1                        */
        !            72:        bcc     error2          /*error if C = 0                        */
        !            73:        jmp     t3              /* if correct continue */
        !            74: error2:        movpsl  _actual         /* actual = psl incorrect for some reason */
        !            75:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            76:        movl    $2,_ercode      /* error code flag failure */
        !            77:        jmp     *badrtn
        !            78: /*                                                                     */
        !            79: /*     Now try src > 0                                                 */
        !            80: /*                                                                     */
        !            81:        
        !            82: t3:
        !            83:        bbs     $0,_force_lp,0b /* if set loop on last subtest  */
        !            84: at3:   callf   $4,_setjmp      /* save context for error return */
        !            85:        movab   at3,_stpc       /* save address of subtest start */
        !            86:        movl    $3,_subtst      /* subtest number */
        !            87:        movl    $1,_no_opr      /* number of operands in use */
        !            88:        movl    $SRCB3,_opr     /* first operand */
        !            89: 0:     bicpsw  $PSWMASK        /*disable overflow & other enable bits  */
        !            90:        movl    $SRCB3,r1       /*r1 = source                           */
        !            91:        bispsw  $(Z|N|V|C)      /*turn zero, neg, overflow, & carry ON  */
        !            92:        tstb    r1              /*execute "tstb"                        */
        !            93:        beql    error3          /*error if Z = 1                        */
        !            94:        blss    error3          /*error if N = 1                        */
        !            95:        bvs     error3          /*error if V = 1                        */
        !            96:        bcc     error3          /*error if C = 0                        */
        !            97:        jmp     tstbm
        !            98: error3:        movpsl  _actual         /* actual = psl incorrect for some reason */
        !            99:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           100:        movl    $2,_ercode      /* error code flag failure */
        !           101:        jmp     *badrtn
        !           102: 
        !           103: /*                                                                     */
        !           104: /*     Now use memory location(tmloc) instead of r1                    */
        !           105: /*                                                                     */
        !           106: tstbm:
        !           107:        bbs     $0,_force_lp,0b /* if set loop on last subtest  */
        !           108: at4:   callf   $4,_setjmp      /* save context for error return */
        !           109:        movab   at4,_stpc       /* save address of subtest start */
        !           110:        movl    $4,_subtst      /* subtest number */
        !           111:        movl    $1,_no_opr      /* number of operands in use */
        !           112:        movl    $SRCB1,_opr     /* first operand */
        !           113: 0:     bicpsw  $PSWMASK        /*disable overflow & other enable bits  */
        !           114:        movl    $SRCB1,tmloc    /*tmloc = source                        */
        !           115:        bispsw  $(Z|V|C)        /*turn zero, overflow, & carry ON       */
        !           116:        tstb    tmloc+3         /*execute "tstb"                        */
        !           117:        beql    error4          /*error if Z = 1                        */
        !           118:        bgeq    error4          /*error if N = 0                        */
        !           119:        bvs     error4          /*error if V = 1                        */
        !           120:        bcc     error4          /*error if C = 0                        */
        !           121:        jmp     t5
        !           122: error4:        movpsl  _actual         /* actual = psl incorrect for some reason */
        !           123:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           124:        movl    $2,_ercode      /* error code flag failure */
        !           125:        jmp     *badrtn
        !           126: /*                                                                     */
        !           127: /*     Now try src = 0                                                 */
        !           128: /*                                                                     */
        !           129: t5:
        !           130:        bbs     $0,_force_lp,0b /* if set loop on last subtest  */
        !           131: at5:   callf   $4,_setjmp      /* save context for error return */
        !           132:        movab   at5,_stpc       /* save address of subtest start */
        !           133:        movl    $5,_subtst      /* subtest number */
        !           134:        movl    $1,_no_opr      /* number of operands in use */
        !           135:        movl    $SRCB2,_opr     /* first operand */
        !           136: 0:     bicpsw  $PSWMASK        /*disable overflow & other enable bits  */
        !           137:        movl    $SRCB2,tmloc    /*tmloc = source                        */
        !           138:        bispsw  $(N|V|C)        /*turn neg, overflow, & carry ON        */
        !           139:        tstb    tmloc           /*execute "tstb"                        */
        !           140:        bneq    error5          /*error if Z = 0                        */
        !           141:        blss    error5          /*error if N = 1                        */
        !           142:        bvs     error5          /*error if V = 1                        */
        !           143:        bcc     error5          /*error if C = 0                        */
        !           144:        jmp     t6
        !           145: error5:        movpsl  _actual         /* actual = psl incorrect for some reason */
        !           146:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           147:        movl    $2,_ercode      /* error code flag failure */
        !           148:        jmp     *badrtn
        !           149: /*                                                                     */
        !           150: /*                                                                     */
        !           151: /*     Now try src > 0                                                 */
        !           152: /*                                                                     */
        !           153:        
        !           154: t6:
        !           155:        bbs     $0,_force_lp,0b /* if set loop on last subtest  */
        !           156: at6:   callf   $4,_setjmp      /* save context for error return */
        !           157:        movab   at6,_stpc       /* save address of subtest start */
        !           158:        movl    $6,_subtst      /* subtest number */
        !           159:        movl    $1,_no_opr      /* number of operands in use */
        !           160:        movl    $SRCB3,_opr     /* first operand */
        !           161: 0:     bicpsw  $PSWMASK        /*disable overflow & other enable bits  */
        !           162:        movl    $SRCB3,tmloc    /*tmloc = source                        */
        !           163:        bispsw  $(Z|N|V|C)      /*turn zero, neg, overflow, & carry ON  */
        !           164:        tstb    tmloc+3         /*execute "tstb"                        */
        !           165:        beql    error6          /*error if Z = 1                        */
        !           166:        blss    error6          /*error if N = 1                        */
        !           167:        bvs     error6          /*error if V = 1                        */
        !           168:        bcc     error6          /*error if C = 0                        */
        !           169:        jmp     aldn
        !           170: error6:        movpsl  _actual         /* actual = psl incorrect for some reason */
        !           171:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           172:        movl    $2,_ercode      /* error code flag failure */
        !           173:        jmp     *badrtn
        !           174: 
        !           175: 
        !           176: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest  */
        !           177:        jmp     *return         /* good, return to monitor */
        !           178: 
        !           179: 
        !           180: /*                                                                     */
        !           181: /*     Variables                                                       */
        !           182: /*                                                                     */
        !           183:        .align  2
        !           184: tmloc: .space  4
        !           185: 

unix.superglobalmegacorp.com

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