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

1.1     ! root        1: /*     PUSHB instruction test          */
        !             2: /*       Privilege registers           */
        !             3: 
        !             4:        .set    IPL,8
        !             5:        .set    MAPEN,9
        !             6:        .set    KSP,19
        !             7: 
        !             8: /*       PSL fields                    */
        !             9:        .set    IV,32
        !            10:        .set    T,16
        !            11:        .set    N,8
        !            12:        .set    Z,4
        !            13:        .set    V,2
        !            14:        .set    C,1
        !            15: 
        !            16: /*       constants                     */
        !            17:        .set    DISABLE,0
        !            18:        .set    ENABLE,1
        !            19:        .set    NEGB,0xffffff80
        !            20:        .set    MAXNEGB,0x80ffffff
        !            21:        .set    HIGH,31                 /* highest interrupt priority   */
        !            22: 
        !            23:        .globl  _pushbt
        !            24: _pushbt:
        !            25:        callf   $4,_setjmp      /* save context for error return */
        !            26:        movab   _pushbt,_stpc   /* starting address of subtest */
        !            27:        movl    $1,_subtst      /* subtest number */
        !            28:        movl    $1,_no_opr      /* number of operands in use */
        !            29:        movl    $NEGB,_opr      /* first operand */
        !            30: 0:     bicpsw  $(IV|T)         /* disable exceptions           */
        !            31: /*                                                             */
        !            32: pushmw:                                /* PUSH MEMORY ON STACK         */
        !            33:        movab   stk,r14         /* initialize stack pointer     */
        !            34:        movab   stk,r10
        !            35:        bispsw  $(Z|V)          /* set z,v flags                */
        !            36:        bicpsw  $(C|N)          /* clear c,n flag               */
        !            37:        pushb   negval          /* push negative value on stack */
        !            38:        jgeq    error1          /* error if n flag not set      */
        !            39:        jcc     error1          /* error if c flag not set      */
        !            40:        jeql    error1          /* error if z flag set          */
        !            41:        jvs     error1          /* error if v flag set          */
        !            42:        jmp     1f
        !            43: error1:        movpsl  _actual         /* actual = psl maybe incorrect */
        !            44:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            45:        movl    $2,_ercode      /* error code flag miscompare */
        !            46:        jmp     *badrtn
        !            47: 1:     movab   (r14),r13
        !            48:        decl    r10
        !            49:        decl    r10
        !            50:        decl    r10
        !            51:        decl    r10
        !            52:        cmpl    r13,r10         /* check if stack get decrement */
        !            53:        jeql    1f
        !            54:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            55:        movl    $1,_ercode      /* error code data miscompare */
        !            56:        movl    r10,_actual     /* actual data */
        !            57:        movl    r13,_expected   /* expected data */
        !            58:        jmp     *badrtn
        !            59: 1:     bicpsw  $Z
        !            60:        cmpl    $NEGB,(r14)     /* check if value get put on stack      */
        !            61:        jeql    1f
        !            62:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            63:        movl    $1,_ercode      /* error code data miscompare */
        !            64:        movl    (r14),_actual   /* actual data */
        !            65:        movl    $NEGB,_expected /* expected data */
        !            66:        jmp     *badrtn
        !            67: 1:     bicpsw  $Z
        !            68:        cmpl    negval,$MAXNEGB /* check if source get affected */
        !            69:        jeql    p2
        !            70:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            71:        movl    $3,_ercode      /* error code operand miscompare */
        !            72:        movl    negval,_actual  /* actual data */
        !            73:        movl    $MAXNEGB,_expected      /* expected data */
        !            74:        jmp     *badrtn
        !            75: 
        !            76: p2:
        !            77:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            78: ap2:   callf   $4,_setjmp      /* save context for error return */
        !            79:        movab   _pushbt,_stpc   /* starting address of subtest */
        !            80:        movl    $2,_subtst      /* subtest number */
        !            81:        movl    $1,_no_opr      /* number of operands in use */
        !            82:        movl    result,_opr     /* first operand */
        !            83: 0:     bispsw  $(Z|V|N)        /* set z,v,n flags              */
        !            84:        bicpsw  $C              /* clear c flag                 */
        !            85:        pushb   posval
        !            86:        jcc     error2          /* error if c flag not set      */
        !            87:        jlss    error2          /* error if n flag set          */
        !            88:        jeql    error2          /* error if z flag set          */
        !            89:        jvs     error2          /* error if v flag set          */
        !            90:        jmp     1f
        !            91: error2:        movpsl  _actual         /* actual = psl maybe incorrect */
        !            92:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            93:        movl    $2,_ercode      /* error code flag miscompare */
        !            94:        jmp     *badrtn
        !            95: 1:     movab   (r14),r13
        !            96:        decl    r10
        !            97:        decl    r10
        !            98:        decl    r10
        !            99:        decl    r10
        !           100: 1:     cmpl    r13,r10         /* check if stack get decrement */
        !           101:        jeql    1f
        !           102:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           103:        movl    $1,_ercode      /* error code data miscompare */
        !           104:        movl    r10,_actual     /* actual data */
        !           105:        movl    r13,_expected   /* expected data */
        !           106:        jmp     *badrtn
        !           107: 1:     bicpsw  $Z
        !           108:        cmpl    result,(r14)    /* check if value get put on stack      */
        !           109:        jeql    1f
        !           110:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           111:        movl    $1,_ercode      /* error code data miscompare */
        !           112:        movl    (r14),_actual   /* actual data */
        !           113:        movl    result,_expected        /* expected data */
        !           114:        jmp     *badrtn
        !           115: 1:     bicpsw  $Z
        !           116:        cmpl    posval,$0x7faaaaaa      /* check if source get affected */
        !           117:        jeql    pushrw
        !           118:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           119:        movl    $3,_ercode      /* error code operand miscompare */
        !           120:        movl    posval,_actual  /* actual data */
        !           121:        movl    $0x7faaaaaa,_expected   /* expected data */
        !           122:        jmp     *badrtn
        !           123: pushrw:                                /* PUSH REGISTER ON STACK       */
        !           124:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           125: ap3:   callf   $4,_setjmp      /* save context for error return */
        !           126:        movab   ap3,_stpc       /* starting address of subtest */
        !           127:        movl    $3,_subtst      /* subtest number */
        !           128:        movl    $1,_no_opr      /* number of operands in use */
        !           129:        movl    tstdat,_opr     /* first operand */
        !           130: 0:     movl    tstdat,r0       /* move test data to r0         */
        !           131:        bispsw  $(Z|V)          /* set z,v flags                */
        !           132:        bicpsw  $(C|N)          /* clear n,c flag               */
        !           133:        pushb   r0              /* push r0 on stack             */
        !           134:        jgeq    error3          /* error if n flag not set      */
        !           135:        jeql    error3          /* error if z flag set          */
        !           136:        jvs     error3          /* error if v flag set          */
        !           137:        jcc     error3          /* error if c flag not set      */
        !           138:        jmp     1f
        !           139: error3:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           140:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           141:        movl    $2,_ercode      /* error code flag miscompare */
        !           142:        jmp     *badrtn
        !           143: 1:     movab   (r14),r13
        !           144:        decl    r10
        !           145:        decl    r10
        !           146:        decl    r10
        !           147:        decl    r10
        !           148:        cmpl    r13,r10         /* check if stack get decrement */
        !           149:        jeql    1f
        !           150:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           151:        movl    $1,_ercode      /* error code data miscompare */
        !           152:        movl    r10,_actual     /* actual data */
        !           153:        movl    r13,_expected   /* expected data */
        !           154:        jmp     *badrtn
        !           155: 1:     bicpsw  $Z
        !           156:        cmpl    tstdat,(r14)    /* check if value get pushed    */
        !           157:        jeql    1f
        !           158:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           159:        movl    $1,_ercode      /* error code data miscompare */
        !           160:        movl    (r14),_actual   /* actual data */
        !           161:        movl    tstdat,_expected        /* expected data */
        !           162:        jmp     *badrtn
        !           163: 1:     bicpsw  $Z
        !           164:        cmpl    r0,tstdat       /* make sure source unchanged   */
        !           165:        jeql    zflag
        !           166:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           167:        movl    $3,_ercode      /* error code operand miscompare */
        !           168:        movl    tstdat,_actual  /* actual data */
        !           169:        movl    r0,_expected    /* expected data */
        !           170:        jmp     *badrtn
        !           171: zflag:                         /* check z flag                 */
        !           172:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           173: ap4:   callf   $4,_setjmp      /* save context for error return */
        !           174:        movab   ap4,_stpc       /* starting address of subtest */
        !           175:        movl    $4,_subtst      /* subtest number */
        !           176:        movl    $1,_no_opr      /* number of operands in use */
        !           177:        movl    $0,_opr /* first operand */
        !           178: 0:     movl    $0x0,r11 
        !           179:        bispsw  $(N|V)          /* set n,v flags                */
        !           180:        bicpsw  $(C|Z)          /* clear z,c flag               */
        !           181:        pushb   r11             /* push r11 on stack            */
        !           182:        jlss    error4          /* error if n flag set          */
        !           183:        jvs     error4          /* error if v flag set          */
        !           184:        jneq    error4          /* error if z flag not set      */
        !           185:        jcc     error4          /* error if c flag not set      */
        !           186:        jmp     1f
        !           187: error4:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           188:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           189:        movl    $2,_ercode      /* error code flag miscompare */
        !           190:        jmp     *badrtn
        !           191: 1:     movab   (r14),r13
        !           192:        decl    r10     
        !           193:        decl    r10     
        !           194:        decl    r10     
        !           195:        decl    r10     
        !           196:        cmpl    r13,r10         /* check if stack get decrement */
        !           197:        jeql    1f
        !           198:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           199:        movl    $1,_ercode      /* error code data miscompare */
        !           200:        movl    r13,_actual     /* actual data */
        !           201:        movl    r10,_expected   /* expected data */
        !           202:        jmp     *badrtn
        !           203: 1:     bicpsw  $Z
        !           204:        cmpl    $0,(r14)        /* compare r14 to 0             */
        !           205:        jeql    1f
        !           206:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           207:        movl    $1,_ercode      /* error code data miscompare */
        !           208:        movl    (r14),_actual   /* actual data */
        !           209:        movl    $0,_expected    /* expected data */
        !           210:        jmp     *badrtn
        !           211: 1:     bicpsw  $Z
        !           212:        cmpl    $0,r11          /* compare source to 0          */
        !           213:        jeql    p5
        !           214:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           215:        movl    $3,_ercode      /* error code operand miscompare */
        !           216:        movl    r11,_actual     /* actual data */
        !           217:        movl    $0,_expected    /* expected data */
        !           218:        jmp     *badrtn
        !           219: 
        !           220: 
        !           221: p5:
        !           222:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           223: ap5:   callf   $4,_setjmp      /* save context for error return */
        !           224:        movab   ap5,_stpc       /* starting address of subtest */
        !           225:        movl    $5,_subtst      /* subtest number */
        !           226:        movl    $1,_no_opr      /* number of operands in use */
        !           227:        movl    $0x11,_opr      /* first operand */
        !           228: 0:     bispsw  $(N|V)          /* set n,v flags                */
        !           229:        bicpsw  $(C|Z)          /* clear z,c flag               */
        !           230:        pushb   $0x11           /* push literal         */
        !           231:        jlss    error5          /* error if n flag set          */
        !           232:        jvs     error5          /* error if v flag set          */
        !           233:        jeql    error5          /* error if z flag set  */
        !           234:        jcc     error5          /* error if c flag not set      */
        !           235:        jmp     1f
        !           236: error5:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           237:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           238:        movl    $2,_ercode      /* error code flag miscompare */
        !           239:        jmp     *badrtn
        !           240: 1:     movab   (r14),r13
        !           241:        decl    r10     
        !           242:        decl    r10     
        !           243:        decl    r10     
        !           244:        decl    r10     
        !           245:        cmpl    r13,r10         /* check if stack get decrement */
        !           246:        jeql    1f
        !           247:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           248:        movl    $1,_ercode      /* error code data miscompare */
        !           249:        movl    r13,_actual     /* actual data */
        !           250:        movl    r10,_expected   /* expected data */
        !           251:        jmp     *badrtn
        !           252: 1:     bicpsw  $Z
        !           253:        cmpl    $0x11,(r14)     /* compare r14 to literal       */
        !           254:        jeql    aldn
        !           255:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           256:        movl    $1,_ercode      /* error code data miscompare */
        !           257:        movl    (r14),_actual   /* actual data */
        !           258:        movl    $0x11,_expected /* expected data */
        !           259:        jmp     *badrtn
        !           260: 
        !           261: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           262:        jmp     *return         /* good, return to monitor */
        !           263: 
        !           264: 
        !           265: /*     test data               */
        !           266:        .align  2
        !           267: /*     stack                   */
        !           268:        .space  40
        !           269: stk:   .long   0
        !           270: negval:        .long   MAXNEGB 
        !           271: tstdat: .long  0xffffff7a
        !           272: posval: .long   0x7faaaaaa
        !           273: result: .long   0x7f

unix.superglobalmegacorp.com

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