Annotation of previous_trunk/src/NextBus.cpp, revision 1.1

1.1     ! root        1: #include "configuration.h"
        !             2: #include "NextBus.hpp"
        !             3: #include "nbic.h"
        !             4: #include "dimension.hpp"
        !             5: 
        !             6: extern "C" void M68000_BusError(Uint32 addr, bool bReadWrite);
        !             7: 
        !             8: static Uint8 bus_error(Uint32 addr, const char* acc) {
        !             9:     Log_Printf(LOG_WARN, "[NextBus] Bus error %s at %08X", acc, addr);
        !            10:     M68000_BusError(addr, 1);
        !            11:     return 0;
        !            12: }
        !            13: 
        !            14: NextBusSlot::NextBusSlot(int slot) : slot(slot) {}
        !            15: NextBusSlot::~NextBusSlot() {}
        !            16: 
        !            17: Uint32 NextBusSlot::slot_lget(Uint32 addr) {return bus_error(addr, "lget");}
        !            18: Uint16 NextBusSlot::slot_wget(Uint32 addr) {return bus_error(addr, "wget");}
        !            19: Uint8  NextBusSlot::slot_bget(Uint32 addr) {return bus_error(addr, "bget");}
        !            20: 
        !            21: Uint32 NextBusSlot::board_lget(Uint32 addr) {return bus_error(addr, "lget");}
        !            22: Uint16 NextBusSlot::board_wget(Uint32 addr) {return bus_error(addr, "wget");}
        !            23: Uint8  NextBusSlot::board_bget(Uint32 addr) {return bus_error(addr, "bget");}
        !            24: 
        !            25: void NextBusSlot::slot_lput(Uint32 addr, Uint32 val) {bus_error(addr, "lput");}
        !            26: void NextBusSlot::slot_wput(Uint32 addr, Uint16 val) {bus_error(addr, "wput");}
        !            27: void NextBusSlot::slot_bput(Uint32 addr, Uint8 val)  {bus_error(addr, "bput");}
        !            28: 
        !            29: void NextBusSlot::board_lput(Uint32 addr, Uint32 val) {bus_error(addr, "lput");}
        !            30: void NextBusSlot::board_wput(Uint32 addr, Uint16 val) {bus_error(addr, "wput");}
        !            31: void NextBusSlot::board_bput(Uint32 addr, Uint8 val)  {bus_error(addr, "bput");}
        !            32: 
        !            33: void NextBusSlot::reset(void) {}
        !            34: void NextBusSlot::pause(bool pause) {}
        !            35: 
        !            36: NextBusBoard::NextBusBoard(int slot) : NextBusSlot(slot) {}
        !            37: 
        !            38: class M68KBoard : public NextBusBoard {
        !            39: public:
        !            40:     M68KBoard(int slot) : NextBusBoard(slot) {}
        !            41:         
        !            42:     virtual Uint32 slot_lget(Uint32 addr) {return nb_cpu_slot_lget(addr);}
        !            43:     virtual Uint16 slot_wget(Uint32 addr) {return nb_cpu_slot_wget(addr);}
        !            44:     virtual Uint8  slot_bget(Uint32 addr) {return nb_cpu_slot_bget(addr);}
        !            45:     virtual void   slot_lput(Uint32 addr, Uint32 val) {nb_cpu_slot_lput(addr, val);}
        !            46:     virtual void   slot_wput(Uint32 addr, Uint16 val) {nb_cpu_slot_wput(addr, val);}
        !            47:     virtual void   slot_bput(Uint32 addr, Uint8 val)  {nb_cpu_slot_bput(addr, val);}
        !            48: };
        !            49: 
        !            50: NextBusSlot* nextbus[16] = {
        !            51:     new NextBusSlot(0),
        !            52:     new NextBusSlot(1),
        !            53:     new NextBusSlot(2),
        !            54:     new NextBusSlot(3),
        !            55:     new NextBusSlot(4),
        !            56:     new NextBusSlot(5),
        !            57:     new NextBusSlot(6),
        !            58:     new NextBusSlot(7),
        !            59:     new NextBusSlot(8),
        !            60:     new NextBusSlot(9),
        !            61:     new NextBusSlot(10),
        !            62:     new NextBusSlot(11),
        !            63:     new NextBusSlot(12),
        !            64:     new NextBusSlot(13),
        !            65:     new NextBusSlot(14),
        !            66:     new NextBusSlot(15),
        !            67: };
        !            68: 
        !            69: extern "C" {
        !            70:     /* Slot memory */
        !            71:     Uint32 nextbus_slot_lget(Uint32 addr) {
        !            72:         int slot = (addr & 0x0F000000)>>24;
        !            73:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Slot %i: lget at %08X",slot,addr);
        !            74:         
        !            75:         return nextbus[slot]->slot_lget(addr);
        !            76:     }
        !            77:     
        !            78:     Uint32 nextbus_slot_wget(Uint32 addr) {
        !            79:         int slot = (addr & 0x0F000000)>>24;
        !            80:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Slot %i: wget at %08X",slot,addr);
        !            81:         
        !            82:         return nextbus[slot]->slot_wget(addr);
        !            83:     }
        !            84:     
        !            85:     Uint32 nextbus_slot_bget(Uint32 addr) {
        !            86:         int slot = (addr & 0x0F000000)>>24;
        !            87:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Slot %i: bget at %08X",slot,addr);
        !            88:         
        !            89:         return nextbus[slot]->slot_bget(addr);
        !            90:     }
        !            91:     
        !            92:     void nextbus_slot_lput(Uint32 addr, Uint32 val) {
        !            93:         int slot = (addr & 0x0F000000)>>24;
        !            94:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Slot %i: lput at %08X, val %08X",slot,addr,val);
        !            95:         
        !            96:         nextbus[slot]->slot_lput(addr, val);
        !            97:     }
        !            98:     
        !            99:     void nextbus_slot_wput(Uint32 addr, Uint32 val) {
        !           100:         int slot = (addr & 0x0F000000)>>24;
        !           101:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Slot %i: wput at %08X, val %04X",slot,addr,val);
        !           102:         
        !           103:         nextbus[slot]->slot_wput(addr, val);
        !           104:     }
        !           105:     
        !           106:     void nextbus_slot_bput(Uint32 addr, Uint32 val) {
        !           107:         int slot = (addr & 0x0F000000)>>24;
        !           108:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Slot %i: bput at %08X, val %02X",slot,addr,val);
        !           109:         
        !           110:         nextbus[slot]->slot_bput(addr, val);
        !           111:     }
        !           112:     
        !           113:     /* Board memory */
        !           114: 
        !           115:     Uint32 nextbus_board_lget(Uint32 addr) {
        !           116:         int board = (addr & 0xF0000000)>>28;
        !           117:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Board %i: lget at %08X",board,addr);
        !           118:         
        !           119:         return nextbus[board]->board_lget(addr);
        !           120:     }
        !           121:     
        !           122:     Uint32 nextbus_board_wget(Uint32 addr) {
        !           123:         int board = (addr & 0xF0000000)>>28;
        !           124:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Board %i: wget at %08X",board,addr);
        !           125:         
        !           126:         return nextbus[board]->board_wget(addr);
        !           127:     }
        !           128:     
        !           129:     Uint32 nextbus_board_bget(Uint32 addr) {
        !           130:         int board = (addr & 0xF0000000)>>28;
        !           131:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Board %i: bget at %08X",board,addr);
        !           132:         
        !           133:         return nextbus[board]->board_bget(addr);
        !           134:     }
        !           135:     
        !           136:     void nextbus_board_lput(Uint32 addr, Uint32 val) {
        !           137:         int board = (addr & 0xF0000000)>>28;
        !           138:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Board %i: lput at %08X, val %08X",board,addr,val);
        !           139:         
        !           140:         nextbus[board]->board_lput(addr, val);
        !           141:     }
        !           142:     
        !           143:     void nextbus_board_wput(Uint32 addr, Uint32 val) {
        !           144:         int board = (addr & 0xF0000000)>>28;
        !           145:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Board %i: wput at %08X, val %04X",board,addr,val);
        !           146:         
        !           147:         nextbus[board]->board_wput(addr, val);
        !           148:     }
        !           149:     
        !           150:     void nextbus_board_bput(Uint32 addr, Uint32 val) {
        !           151:         int board = (addr & 0xF0000000)>>28;
        !           152:         Log_Printf(LOG_NEXTBUS_LEVEL, "[NextBus] Board %i: bput at %08X, val %02X",board,addr,val);
        !           153:         
        !           154:         nextbus[board]->board_bput(addr, val);
        !           155:     }
        !           156:     
        !           157:     static void remove_board(int slot) {
        !           158:         delete nextbus[slot];
        !           159:         nextbus[slot] = new NextBusSlot(slot);
        !           160:     }
        !           161: 
        !           162:     static void insert_board(NextBusBoard* board) {
        !           163:         delete nextbus[board->slot];
        !           164:         nextbus[board->slot] = board;
        !           165:     }
        !           166:     
        !           167:     /* Init function for NextBus */
        !           168:     void nextbus_init(void) {
        !           169:         insert_board(new M68KBoard(0));
        !           170:         
        !           171:         for (int i = 0; i < ND_MAX_BOARDS; i++) {
        !           172:             remove_board(ND_SLOT(i));
        !           173:             if (ConfigureParams.Dimension.board[i].bEnabled && ConfigureParams.System.nMachineType != NEXT_STATION) {
        !           174:                 Log_Printf(LOG_WARN, "[NextBus] NeXTdimension board at slot %i", ND_SLOT(i));
        !           175:                 insert_board(new NextDimension(ND_SLOT(i)));
        !           176:             }
        !           177:         }
        !           178:     }
        !           179:     
        !           180:     void NextBus_Reset(void) {
        !           181:         for(int slot = 0; slot < 16; slot++)
        !           182:             nextbus[slot]->reset();
        !           183:     }
        !           184:     
        !           185:     void NextBus_Pause(bool pause) {
        !           186:         for(int slot = 0; slot < 16; slot++)
        !           187:             nextbus[slot]->pause(pause);
        !           188:     }
        !           189: }

unix.superglobalmegacorp.com

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