Annotation of coherent/d/bin/as/i8086/asmch.h,v, revision 1.1.1.1

1.1       root        1: head     1.2;
                      2: access   ;
                      3: symbols  ;
                      4: locks    bin:1.2;
                      5: comment  @ * @;
                      6: 
                      7: 
                      8: 1.2
                      9: date     91.02.06.20.43.18;  author bin;  state Exp;
                     10: branches ;
                     11: next   1.1;
                     12: 
                     13: 1.1
                     14: date     91.02.06.20.43.10;  author bin;  state Exp;
                     15: branches ;
                     16: next   ;
                     17: 
                     18: 
                     19: desc
                     20: @steve 2/6/91
                     21: Initial MWC RCS revision.
                     22: @
                     23: 
                     24: 
                     25: 1.2
                     26: log
                     27: @steve 2/6/91
                     28: Extensive changes from cef for 80286 and floating point opcodes.
                     29: @
                     30: text
                     31: @/*
                     32:  * Machine specific header file.
                     33:  * Intel iAPX-86.
                     34:  * Small addressing model.
                     35:  */
                     36: #define        HEX     1
                     37: #define        LOHI    1
                     38: #define        CLIST   BLIST
                     39: #define        CPU     "Intel iAPX-86"
                     40: #define MINIT   1
                     41: #define        NB      128
                     42: 
                     43: /*
                     44:  * Formats and things for
                     45:  * the part of the assembler that
                     46:  * makes the listings.
                     47:  */
                     48: #define        NBOL    8
                     49: #define        ADRFMT  "   %04x"
                     50: #define        BFMT    " %02x"
                     51: #define        WFMT    "  %04x"
                     52: #define        SKIP    "   "
                     53: 
                     54: typedef        unsigned address;
                     55: 
                     56: #define        fbyte(x)        (((int) x)&0xFF)
                     57: #define        sbyte(x)        ((((int) x)>>8)&0xFF)
                     58: #define locrup(x)       (((unsigned)(x)+01)&~01)
                     59: 
                     60: /*
                     61:  * Symbol flags.
                     62:  */
                     63: #define        S_OBL   0200            /* w:s literal usable */
                     64: #define        S_NW    0201            /* Floating point no wait ops. */
                     65: #define        S_FIX   0202            /* Kludge for fdiv, fdivr, fsub, fsubr. */
                     66: 
                     67: /*
                     68:  * Symbol kinds.
                     69:  * Basicly one per type of
                     70:  * operation.
                     71:  */
                     72: #define        S_INH   50              /* One byte */
                     73: #define        S_INT   51              /* Interrupt */
                     74: #define        S_JMP   52              /* Jumps */
                     75: #define        S_CALL  53              /* Call */
                     76: #define        S_XOP   54              /* Xcall and xjmp */
                     77: #define        S_RET   55              /* Return */
                     78: #define        S_MUL   56              /* Mul, div */
                     79: #define        S_MULB  57              /* Ditto, but byte op. */
                     80: #define        S_REL   58              /* Relative, no adjust (jcxz) */
                     81: #define        S_DOP   59              /* Doubles */
                     82: #define        S_IN    60              /* in */
                     83: #define        S_PUSH  61              /* Push/pop */
                     84: #define        S_SHL   62              /* Shift */
                     85: #define        S_MOV   63              /* Moves */
                     86: #define        S_XCHG  64              /* Exchanges */
                     87: #define        S_IJMP  65              /* Icall and ijmp */
                     88: #define        S_LEA   67              /* Load address */
                     89: #define        S_SHLB  68              /* Shifts, byte */
                     90: #define        S_OVER  69              /* Overide prefix */
                     91: #define        S_SOP   70              /* Single op. */
                     92: #define        S_SOPB  71              /* Ditto, but bytes */
                     93: #define        S_ESC   73              /* Escape */
                     94: #define        S_EVEN  74              /* .even */
                     95: #define        S_ODD   75              /* .odd */
                     96: #define        S_SYS   76              /* sys */
                     97: #define S_OUT  77              /* out */
                     98: #define S_FP_F 78              /* Floating fixed format */
                     99: #define S_FP_S 79              /* Floating stack format */
                    100: #define S_FP_SP        80              /* Floating stack pop */
                    101: #define S_FP_S1        81              /* Floating stack single operand format */
                    102: #define S_FP_M 82              /* Floating memory format */
                    103: #define        S_PROT0 83              /* Protection Control 0 */
                    104: #define        S_PROT1 84              /* Protection Control 1 */
                    105: #define        S_PROTR 85              /* Protection Control to register */
                    106: #define        S_ENTER 86              /* Enter procedure */
                    107: 
                    108: /*
                    109:  * Register names.
                    110:  * The low 3 bit hold the register
                    111:  * number, as coded in the type.
                    112:  * The upper bits hold the register's
                    113:  * type (0 => word, 1 => byte, 2 => seg
                    114:  * and 3 => flags).
                    115:  * This tracks the BR, WR and SR mode
                    116:  * definitions.
                    117:  */
                    118: #define        AX      0
                    119: #define        CX      1
                    120: #define        DX      2
                    121: #define        BX      3
                    122: #define        SP      4
                    123: #define        BP      5
                    124: #define        SI      6
                    125: #define        DI      7
                    126: 
                    127: #define        AL      010
                    128: #define        CL      011
                    129: #define        DL      012
                    130: #define        BL      013
                    131: #define        AH      014
                    132: #define        CH      015
                    133: #define        DH      016
                    134: #define        BH      017
                    135: 
                    136: #define        ES      020
                    137: #define        CS      021
                    138: #define        SS      022
                    139: #define        DS      023
                    140: 
                    141: #define ST     040
                    142: #define ST1    041
                    143: #define ST2    042
                    144: #define ST3    043
                    145: #define ST4    044
                    146: #define ST5    045
                    147: #define ST6    046
                    148: #define ST7    047
                    149: 
                    150: /*
                    151:  * Address modes.
                    152:  * These go in the e_mode field of
                    153:  * and expression. Basicly the bottom 3
                    154:  * bits go in the instruction, and the
                    155:  * rest express the mode.
                    156:  */
                    157: #define        WR      (0<<3)          /* Word register */
                    158: #define        BR      (1<<3)          /* Byte register */
                    159: #define        SEGR    (2<<3)          /* Segment register */
                    160: #define        IM      (4<<3)          /* Immediate */
                    161: #define        DIR     (5<<3)          /* Direct */
                    162: #define        IDX     (6<<3)          /* (dx) */
                    163: #define        ICL     (7<<3)          /* (cl) */
                    164: #define        X       (8<<3)          /* Index */
                    165: 
                    166: #define        NONE    (-1)            /* No legal mode */
                    167: #define        MMASK   0170            /* Mode mask */
                    168: #define        RMASK   07              /* Register mask */
                    169: 
                    170: #define        reg(x)  (x&RMASK)
                    171: #define        mof(x)  ((x).e_mode&MMASK)
                    172: #define        rof(x)  ((x).e_mode&RMASK)
                    173: 
                    174: /*
                    175:  * Other magic.
                    176:  */
                    177: #define        MULDIV  0366
                    178: #define        INCDEC  0376
                    179: #define        NOTNEG  0366
                    180: #define        IDREG   0100
                    181: #define        AAM     0324
                    182: #define        AAD     0325
                    183: #define        APB     0012
                    184: #define FWAIT  0233
                    185: #define FNOP   0220
                    186: #define        S       02
                    187: #define        SEGPFX  0046
                    188: #define        SHL     0320
                    189: #define        SHLI    0300
                    190: #define        TESTB   0204
                    191: #define        TESTAB  0250
                    192: #define        TESTMB  0366
                    193: #define        TESTW   0205
                    194: #define        TESTAW  0251
                    195: #define        TESTMW  0367
                    196: #define        XCHGR   0220
                    197: #define        W       01
                    198: #define        D       02
                    199: #define        V       02
                    200: #define        CMPB    0246
                    201: #define        CMPW    0247
                    202: #define        DXOP    0202
                    203: #define        XOP     0377
                    204: #define        DCALL   0350
                    205: #define        IJORC   0377
                    206: #define        LJMP    0351
                    207: #define        JMP     0353
                    208: #define        DJMP    0351
                    209: #define        INT3    0314
                    210: #define        INT     0315
                    211: #define        PUSHSR  0006
                    212: #define        PUSHR   0120
                    213: #define        PUSHIW  0150
                    214: #define        PUSHIB  0152
                    215: #define        PUSHF   0234
                    216: #define        PUSH    0377
                    217: #define        POPSR   0007
                    218: #define        POPR    0130
                    219: #define        POPF    0235
                    220: #define        POP     0217
                    221: #define        ESC     0330
                    222: #define        MOVB    0244
                    223: #define        MOVSEG  0214
                    224: #define        MVIB    0260
                    225: #define        MVIW    0270
                    226: #define        MVI     0306
                    227: #define        MOVAM   0242
                    228: #define        MOVMA   0240
                    229: #define        ARPL    0143
                    230: #define        CLTS    0006
                    231: #define        ENTER   0310
                    232: 
                    233: /* Floating point two-byte opcodes. */
                    234: #define        FOP(x,y)        (((x)<<8)|(y))
                    235: #define        BYTE1(x)        ((x)>>8)
                    236: #define        BYTE2(x)        ((x)&0xFF)
                    237: @
                    238: 
                    239: 
                    240: 1.1
                    241: log
                    242: @Initial revision
                    243: @
                    244: text
                    245: @d34 2
                    246: d68 9
                    247: d111 8
                    248: d154 2
                    249: d159 1
                    250: d183 2
                    251: d199 8
                    252: @

unix.superglobalmegacorp.com

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