Annotation of previous/src/dimension/dimension.c, revision 1.1.1.1

1.1       root        1: #include "main.h"
                      2: #include "configuration.h"
                      3: #include "m68000.h"
                      4: #include "dimension.h"
                      5: #include "sysdeps.h"
                      6: #include "nd_mem.h"
                      7: #include "nd_devs.h"
                      8: #include "nd_nbic.h"
                      9: #include "nd_sdl.h"
                     10: 
                     11: #if ENABLE_DIMENSION
                     12: 
                     13: /* NeXTdimension board and slot memory */
                     14: #define ND_BOARD_SIZE  0x10000000
                     15: #define ND_BOARD_MASK  0x0FFFFFFF
                     16: #define ND_BOARD_BITS   0xF0000000
                     17: 
                     18: #define ND_SLOT_SIZE   0x01000000
                     19: #define ND_SLOT_MASK   0x00FFFFFF
                     20: #define ND_SLOT_BITS    0x0F000000
                     21: 
                     22: #define ND_NBIC_SPACE   0xFFFFFFE8
                     23: 
                     24: 
                     25: /* NeXTdimension slot memory access */
                     26: Uint32 nd_slot_lget(Uint32 addr) {
                     27:     addr |= ND_SLOT_BITS;
                     28:     
                     29:     if (addr<ND_NBIC_SPACE) {
                     30:         return nd_longget(addr);
                     31:     } else {
                     32:         return nd_nbic_lget(addr);
                     33:     }
                     34: }
                     35: 
                     36: Uint16 nd_slot_wget(Uint32 addr) {
                     37:     addr |= ND_SLOT_BITS;
                     38:     
                     39:     if (addr<ND_NBIC_SPACE) {
                     40:         return nd_wordget(addr);
                     41:     } else {
                     42:         return nd_nbic_wget(addr);
                     43:     }
                     44: }
                     45: 
                     46: Uint8 nd_slot_bget(Uint32 addr) {
                     47:     addr |= ND_SLOT_BITS;
                     48: 
                     49:     if (addr<ND_NBIC_SPACE) {
                     50:         return nd_byteget(addr);
                     51:     } else {
                     52:         return nd_nbic_bget(addr);
                     53:     }
                     54: }
                     55: 
                     56: void nd_slot_lput(Uint32 addr, Uint32 l) {
                     57:     addr |= ND_SLOT_BITS;
                     58: 
                     59:     if (addr<ND_NBIC_SPACE) {
                     60:         nd_longput(addr, l);
                     61:     } else {
                     62:         nd_nbic_lput(addr, l);
                     63:     }
                     64: }
                     65: 
                     66: void nd_slot_wput(Uint32 addr, Uint16 w) {
                     67:     addr |= ND_SLOT_BITS;
                     68: 
                     69:     if (addr<ND_NBIC_SPACE) {
                     70:         nd_wordput(addr, w);
                     71:     } else {
                     72:         nd_nbic_wput(addr, w);
                     73:     }
                     74: }
                     75: 
                     76: void nd_slot_bput(Uint32 addr, Uint8 b) {
                     77:     addr |= ND_SLOT_BITS;
                     78: 
                     79:     if (addr<ND_NBIC_SPACE) {
                     80:         nd_byteput(addr, b);
                     81:     } else {
                     82:         nd_nbic_bput(addr, b);
                     83:     }
                     84: }
                     85: 
                     86: /* NeXTdimension board memory access */
                     87: 
                     88: void   nd_board_rd8_be(Uint32 addr, Uint32* val) {
                     89:     addr  |= ND_BOARD_BITS;
                     90:     *((Uint8*)val) = nd_byteget(addr);
                     91: }
                     92: 
                     93: void   nd_board_rd16_be(Uint32 addr, Uint32* val) {
                     94:     addr |= ND_BOARD_BITS;
                     95:     *((Uint16*)val) = nd_wordget(addr);
                     96: }
                     97: 
                     98: void   nd_board_rd32_be(Uint32 addr, Uint32* val) {
                     99:     addr  |= ND_BOARD_BITS;
                    100:     val[0] = nd_longget(addr);
                    101: }
                    102: 
                    103: void   nd_board_rd64_be(Uint32 addr, Uint32* val) {
                    104:     addr  |= ND_BOARD_BITS;
                    105:     val[0] = nd_longget(addr+4);
                    106:     val[1] = nd_longget(addr+0);
                    107: }
                    108: 
                    109: void   nd_board_rd128_be(Uint32 addr, Uint32* val) {
                    110:     addr   |= ND_BOARD_BITS;
                    111:     val[0]  = nd_longget(addr+4);
                    112:     val[1]  = nd_longget(addr+0);
                    113:     val[2]  = nd_longget(addr+12);
                    114:     val[3]  = nd_longget(addr+8);
                    115: }
                    116: 
                    117: void   nd_board_wr8_be(Uint32 addr, const Uint32* val) {
                    118:     addr |= ND_BOARD_BITS;
                    119:     nd_byteput(addr, *((Uint8*)val));
                    120: }
                    121: 
                    122: void   nd_board_wr16_be(Uint32 addr, const Uint32* val) {
                    123:     addr |= ND_BOARD_BITS;
                    124:     nd_wordput(addr, *((Uint16*)val));
                    125: }
                    126: 
                    127: void   nd_board_wr32_be(Uint32 addr, const Uint32* val) {
                    128:     addr |= ND_BOARD_BITS;
                    129:     nd_longput(addr, val[0]);
                    130: }
                    131: 
                    132: void   nd_board_wr64_be(Uint32 addr, const Uint32* val) {
                    133:     addr |= ND_BOARD_BITS;
                    134:     nd_longput(addr+4, val[0]);
                    135:     nd_longput(addr+0, val[1]);
                    136: }
                    137: 
                    138: void   nd_board_wr128_be(Uint32 addr, const Uint32* val) {
                    139:     addr |= ND_BOARD_BITS;
                    140:     nd_longput(addr+4,  val[0]);
                    141:     nd_longput(addr+0,  val[1]);
                    142:     nd_longput(addr+12, val[2]);
                    143:     nd_longput(addr+8,  val[3]);
                    144: }
                    145: 
                    146: void   nd_board_rd8_le(Uint32 addr, Uint32* val) {
                    147:     addr  |= ND_BOARD_BITS;
                    148:     *((Uint8*)val) = nd_byteget(addr^7);
                    149: }
                    150: 
                    151: void   nd_board_rd16_le(Uint32 addr, Uint32* val) {
                    152:     addr |= ND_BOARD_BITS;
                    153:     *((Uint16*)val) = nd_wordget(addr^6);
                    154: }
                    155: 
                    156: void   nd_board_rd32_le(Uint32 addr, Uint32* val) {
                    157:     addr  |= ND_BOARD_BITS;
                    158:     val[0] = nd_longget(addr^4);
                    159: }
                    160: 
                    161: void   nd_board_rd64_le(Uint32 addr, Uint32* val) {
                    162:     addr  |= ND_BOARD_BITS;
                    163:     val[0] = nd_longget(addr+0);
                    164:     val[1] = nd_longget(addr+4);
                    165: }
                    166: 
                    167: void   nd_board_rd128_le(Uint32 addr, Uint32* val) {
                    168:     addr   |= ND_BOARD_BITS;
                    169:     val[0]  = nd_longget(addr+0);
                    170:     val[1]  = nd_longget(addr+4);
                    171:     val[2]  = nd_longget(addr+8);
                    172:     val[3]  = nd_longget(addr+12);
                    173: }
                    174: 
                    175: void   nd_board_wr8_le(Uint32 addr, const Uint32* val) {
                    176:     addr |= ND_BOARD_BITS;
                    177:     nd_byteput(addr^7, *((Uint8*)val));
                    178: }
                    179: 
                    180: void   nd_board_wr16_le(Uint32 addr, const Uint32* val) {
                    181:     addr |= ND_BOARD_BITS;
                    182:     nd_wordput(addr^6, *((Uint16*)val));
                    183: }
                    184: 
                    185: void   nd_board_wr32_le(Uint32 addr, const Uint32* val) {
                    186:     addr |= ND_BOARD_BITS;
                    187:     nd_longput(addr^4, val[0]);
                    188: }
                    189: 
                    190: void   nd_board_wr64_le(Uint32 addr, const Uint32* val) {
                    191:     addr |= ND_BOARD_BITS;
                    192:     nd_longput(addr+0, val[0]);
                    193:     nd_longput(addr+4, val[1]);
                    194: }
                    195: 
                    196: void   nd_board_wr128_le(Uint32 addr, const Uint32* val) {
                    197:     addr |= ND_BOARD_BITS;
                    198:     nd_longput(addr+0,  val[0]);
                    199:     nd_longput(addr+4,  val[1]);
                    200:     nd_longput(addr+8,  val[2]);
                    201:     nd_longput(addr+12, val[3]);
                    202: }
                    203: 
                    204: //------
                    205: 
                    206: inline Uint32 nd_board_lget(Uint32 addr) {
                    207:     addr |= ND_BOARD_BITS;
                    208:     return nd_longget(addr);
                    209: }
                    210: 
                    211: inline Uint16 nd_board_wget(Uint32 addr) {
                    212:     addr |= ND_BOARD_BITS;
                    213:     return nd_wordget(addr);
                    214: }
                    215: 
                    216: inline Uint8 nd_board_bget(Uint32 addr) {
                    217:     addr |= ND_BOARD_BITS;
                    218:     return nd_byteget(addr);
                    219: }
                    220: 
                    221: inline void nd_board_lput(Uint32 addr, Uint32 l) {
                    222:     addr |= ND_BOARD_BITS;
                    223:     nd_longput(addr, l);
                    224: }
                    225: 
                    226: inline void nd_board_put64(Uint32 addr, Uint32 l0, Uint32 l1) {
                    227:     addr |= ND_BOARD_BITS;
                    228:     nd_longput(addr+4, l0);
                    229:     nd_longput(addr+0, l1);
                    230: }
                    231: 
                    232: inline void nd_board_put128(Uint32 addr, Uint32 l0, Uint32 l1, Uint32 l2, Uint32 l3) {
                    233:     addr |= ND_BOARD_BITS;
                    234:     nd_longput(addr+4,  l0);
                    235:     nd_longput(addr+0,  l1);
                    236:     nd_longput(addr+12, l2);
                    237:     nd_longput(addr+8,  l3);
                    238: }
                    239: 
                    240: inline void nd_board_wput(Uint32 addr, Uint16 w) {
                    241:     addr |= ND_BOARD_BITS;
                    242:     nd_wordput(addr, w);
                    243: }
                    244: 
                    245: inline void nd_board_bput(Uint32 addr, Uint8 b) {
                    246:     addr |= ND_BOARD_BITS;
                    247:     nd_byteput(addr, b);
                    248: }
                    249: 
                    250: inline Uint8 nd_board_cs8get(Uint32 addr) {
                    251:     addr |= ND_BOARD_BITS;
                    252:     return nd_cs8get(addr);
                    253: }
                    254: 
                    255: /* Reset function */
                    256: 
                    257: void dimension_init(void) {
                    258:     nd_i860_uninit();
                    259:     nd_nbic_init();
                    260:     nd_devs_init();
                    261:     nd_memory_init();
                    262:     nd_i860_init();
                    263:     nd_sdl_init();
                    264: }
                    265: 
                    266: void dimension_uninit(void) {
                    267:        nd_i860_uninit();
                    268:     nd_sdl_uninit();
                    269: }
                    270: 
                    271: #endif

unix.superglobalmegacorp.com

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