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

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