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

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

unix.superglobalmegacorp.com

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