Annotation of cci/sys/tahoe/definitions.h, revision 1.1

1.1     ! root        1: #include "../machine/psl.h"
        !             2: 
        !             3: /************************************************/
        !             4: /*     Basic 6/32 machine definitions          */
        !             5: /************************************************/
        !             6: 
        !             7: #define        FALSE   0
        !             8: #define        TRUE    (~FALSE)
        !             9: #define READ   0
        !            10: #define WRITE  1
        !            11: 
        !            12: /*
        !            13:  * Some floatng point stuff.
        !            14:  */
        !            15: 
        !            16: #define exp(x)         ( (x) & 0x7f800000 )
        !            17: #define reserved(x)    ( (x) < 0  && (exp(x) == 0) )
        !            18: 
        !            19: /************************************************/
        !            20: /*                                             */
        !            21: /*     Opcodes description table stuff         */
        !            22: /*                                             */
        !            23: /************************************************/
        !            24: 
        !            25: struct operand_des     {               /* Operand descriptor in great table */
        !            26:                int     add_modes;      /* Allowed addressing modes */
        !            27:                int     length;         /* Length of this data (bytes) */
        !            28: };
        !            29: 
        !            30: #define        Add     1       /* Any address except PC relative & ablsolute */
        !            31: #define        Dir     2       /* Direct register */
        !            32: #define        Imm     4       /* Immediate datum */
        !            33: #define        Lit     8       /* Short literal */
        !            34: #define        Brd     0x10    /* Branch displacement */
        !            35: #define        Pcrel   0x20    /* PC relative allowed */
        !            36: #define        Abs     0x40    /* Absolute address allowed */
        !            37: #define        SPmode  0x80    /* The stack pointer was involved , -(sp) or (sp)+ */
        !            38: #define        ADDFIELD 0xff   /* Allowed addressing modes */
        !            39: 
        !            40: #define        W       0x100   /* Access is write */
        !            41: #define R      0x200   /* Access is 'read' */
        !            42: #define        Indx    0x400   /* Indexable base address */
        !            43: #define        NOVF    0x800   /* Inhibit overflow check when writing byte/word */
        !            44: #define FLP    0x1000  /* Floating point operand */
        !            45: 
        !            46: #define        M       (R|W)   /* Access is 'modify' */
        !            47: #define PR     (Pcrel|Abs)
        !            48: #define ADDR   (PR|Add)
        !            49: #define        ADI     (ADDR|Dir|Imm|Lit)
        !            50: #define        AD      (ADDR|Dir)
        !            51: #define        MAD     (M|ADDR|Dir)
        !            52: #define        WAD     (W|ADDR|Dir)
        !            53: #define WD     (W|Dir)
        !            54: #define NWAD   (NOVF|WAD)
        !            55: #define        NMAD    (NOVF|MAD)
        !            56: #define        RADI    (R|ADI) /* Readable datum */
        !            57: #define RAD    (R|AD)  /* Modify type access for destinations */
        !            58: #define RADF   (RAD|FLP)
        !            59: #define WADF   (WAD|FLP)
        !            60: 
        !            61: 
        !            62: 
        !            63: 
        !            64: struct opcode_des      {       /* One line in the big table */
        !            65:        int     (*routine)      ();             /* Handler for this opcode */
        !            66:        struct  operand_des operand[4];         /* Up to 4 operands */
        !            67: };
        !            68: 
        !            69: /************************************************/
        !            70: /*                                             */
        !            71: /*     Operand descriptor as returned          */
        !            72: /*     by the address mode decoder             */
        !            73: /*                                             */
        !            74: /************************************************/
        !            75: 
        !            76: struct oprnd {
        !            77:        long    mode;                   /* Add, Imm, Dir or Brd */
        !            78:        long    reg_number;             /* returned for Dir mode */
        !            79:        long    address;                /* Relevant for Add or Brd */
        !            80:        long    data;
        !            81:        long    data2;                  /* Up to 8 bytes returned */
        !            82:        long    length;                 /* Length of data manipulated */
        !            83: };
        !            84: 
        !            85: /************************************************/
        !            86: /*                                             */
        !            87: /*     Some PSL macros (usefull)               */
        !            88: /*                                             */
        !            89: /************************************************/
        !            90: #define        carry           (psl & PSL_C)
        !            91: #define        negative        (psl & PSL_N)
        !            92: #define overflow       (psl & PSL_V)
        !            93: #define zero           (psl & PSL_Z)
        !            94: 
        !            95: #define carry_1                psl |= PSL_C
        !            96: #define negative_1     psl |= PSL_N
        !            97: #define overflow_1     psl |= PSL_V
        !            98: #define zero_1         psl |= PSL_Z
        !            99: 
        !           100: #define carry_0                psl &= ~PSL_C
        !           101: #define negative_0     psl &= ~PSL_N
        !           102: #define overflow_0     psl &= ~PSL_V
        !           103: #define zero_0         psl &= ~PSL_Z
        !           104: 
        !           105: 
        !           106: struct oprnd           *operand ();
        !           107: struct opcode_des      Table[];
        !           108: 
        !           109: struct double_length
        !           110: {
        !           111:        int     low;
        !           112:        int     high;
        !           113: };
        !           114: 
        !           115: typedef        struct  double_length   quadword;
        !           116: 

unix.superglobalmegacorp.com

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