Previous 15994 Revisions Next

r14877 Sunday 8th April, 2012 at 21:53:47 UTC by R. Belmont
Apple II: RamFactor cards now have 8 MB capacity each [R. Belmont]
[src/mess/machine]a2memexp.c a2memexp.h

src/mess/machine/a2memexp.c
r14876r14877
8282{
8383   m_shortname = "a2memexp";
8484    m_isramfactor = false;
85    m_bankhior = 0xf0;
86    m_addrmask = 0xfffff;
8587}
8688
8789a2bus_ramfactor_device::a2bus_ramfactor_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
r14876r14877
8991{
9092   m_shortname = "a2ramfac";
9193    m_isramfactor = true;
94    m_bankhior = 0x00;
95    m_addrmask = 0x7fffff;
9296}
9397
9498//-------------------------------------------------
r14876r14877
123127
124128    if (offset == 3)
125129    {
126        retval = m_ram[m_liveptr&0xfffff];
130        retval = m_ram[m_liveptr&m_addrmask];
127131//        printf("Read RAM[%x] = %02x\n", m_liveptr, retval);
128132        m_liveptr++;
129133        m_regs[0] = m_liveptr & 0xff;
130134        m_regs[1] = (m_liveptr>>8) & 0xff;
131        m_regs[2] = ((m_liveptr>>16) & 0xff) | 0xf0;
135        m_regs[2] = ((m_liveptr>>16) & 0xff) | m_bankhior;
132136    }
133137
134//    if (offset > 3) printf("Read c0n%x (PC=%x) = %02x\n", offset, cpu_get_pc(&space.device()), retval);
138//    printf("Read c0n%x (PC=%x) = %02x\n", offset, cpu_get_pc(&space.device()), retval);
135139
136140   return retval;
137141}
r14876r14877
143147
144148void a2bus_memexp_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data)
145149{
146//    if (offset > 3) printf("Write %02x to c0n%x (PC=%x)\n", data, offset, cpu_get_pc(&space.device()));
150//    printf("Write %02x to c0n%x (PC=%x)\n", data, offset, cpu_get_pc(&space.device()));
147151
148152    switch (offset)
149153    {
r14876r14877
152156            m_wptr |= data;
153157            m_regs[0] = m_wptr & 0xff;
154158            m_regs[1] = (m_wptr>>8) & 0xff;
155            m_regs[2] = ((m_wptr>>16) & 0xff) | 0xf0;
159            m_regs[2] = ((m_wptr>>16) & 0xff) | m_bankhior;
156160            m_liveptr = m_wptr;
157161            break;
158162
r14876r14877
161165            m_wptr |= (data<<8);
162166            m_regs[0] = m_wptr & 0xff;
163167            m_regs[1] = (m_wptr>>8) & 0xff;
164            m_regs[2] = ((m_wptr>>16) & 0xff) | 0xf0;
168            m_regs[2] = ((m_wptr>>16) & 0xff) | m_bankhior;
165169            m_liveptr = m_wptr;
166170            break;
167171
r14876r14877
170174            m_wptr |= (data<<16);
171175            m_regs[0] = m_wptr & 0xff;
172176            m_regs[1] = (m_wptr>>8) & 0xff;
173            m_regs[2] = ((m_wptr>>16) & 0xff) | 0xf0;
177            m_regs[2] = ((m_wptr>>16) & 0xff) | m_bankhior;
174178            m_liveptr = m_wptr;
175179            break;
176180
177181        case 3:
178182//            printf("Write %02x to RAM[%x]\n", data, m_liveptr);
179            m_ram[(m_liveptr&0xfffff)] = data;
183            m_ram[(m_liveptr&m_addrmask)] = data;
180184            m_liveptr++;
181185            m_regs[0] = m_liveptr & 0xff;
182186            m_regs[1] = (m_liveptr>>8) & 0xff;
183            m_regs[2] = ((m_liveptr>>16) & 0xff) | 0xf0;
187            m_regs[2] = ((m_liveptr>>16) & 0xff) | m_bankhior;
184188            break;
185189
186190        default:
src/mess/machine/a2memexp.h
r14876r14877
2929    virtual const rom_entry *device_rom_region() const;
3030
3131    bool m_isramfactor;
32    UINT8 m_bankhior;
33    int m_addrmask;
3234
3335protected:
3436    virtual void device_start();
r14876r14877
4345private:
4446    UINT8 *m_rom;
4547    UINT8 m_regs[0x10];
46    UINT8 m_ram[1*1024*1024];   // 1 MB
48    UINT8 m_ram[8*1024*1024];
4749    int m_wptr, m_liveptr;
4850};
4951

Previous 15994 Revisions Next


© 1998-2018 The MESS Team