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