(nw) Finished converting m_p_chargen to required region, and associated cleanups.

This commit is contained in:
Robbbert 2017-02-14 15:53:07 +11:00
parent ff1c7e85fa
commit 2654773c5f
50 changed files with 475 additions and 637 deletions

View File

@ -61,13 +61,14 @@ public:
alphatro_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_maincpu(*this, "maincpu")
, m_crtc(*this, "crtc")
, m_usart(*this, "usart")
, m_cass(*this, "cassette")
, m_beep(*this, "beeper")
, m_p_ram(*this, "main_ram"),
m_palette(*this, "palette")
, m_p_ram(*this, "main_ram")
, m_palette(*this, "palette")
{ }
DECLARE_READ8_MEMBER(port10_r);
@ -79,27 +80,25 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(timer_c);
TIMER_DEVICE_CALLBACK_MEMBER(timer_p);
MC6845_UPDATE_ROW(crtc_update_row);
required_shared_ptr<uint8_t> m_p_videoram;
uint8_t *m_p_chargen;
uint8_t m_flashcnt;
private:
uint8_t m_timer_bit;
uint8_t m_cass_data[4];
required_shared_ptr<u8> m_p_videoram;
u8 m_flashcnt;
u8 m_timer_bit;
u8 m_cass_data[4];
bool m_cass_state;
bool m_cassold;
emu_timer* m_sys_timer;
virtual void video_start() override;
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
required_region_ptr<u8> m_p_chargen;
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
required_device<i8251_device> m_usart;
required_device<cassette_image_device> m_cass;
required_device<beep_device> m_beep;
required_shared_ptr<uint8_t> m_p_ram;
public:
required_shared_ptr<u8> m_p_ram;
required_device<palette_device> m_palette;
};
@ -151,20 +150,15 @@ WRITE_LINE_MEMBER( alphatro_state::write_usart_clock )
m_usart->write_rxc(state);
}
void alphatro_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
MC6845_UPDATE_ROW( alphatro_state::crtc_update_row )
{
const rgb_t *pens = m_palette->palette()->entry_list_raw();
bool palette = BIT(ioport("CONFIG")->read(), 5);
if (y==0) m_flashcnt++;
bool inv;
uint8_t chr,gfx,attr,bg,fg;
uint16_t mem,x;
uint32_t *p = &bitmap.pix32(y);
u8 chr,gfx,attr,bg,fg;
u16 mem,x;
u32 *p = &bitmap.pix32(y);
for (x = 0; x < x_count; x++)
{
@ -191,7 +185,7 @@ MC6845_UPDATE_ROW( alphatro_state::crtc_update_row )
if (inv)
{
uint8_t t = bg;
u8 t = bg;
bg = fg;
fg = t;
}
@ -381,7 +375,7 @@ void alphatro_state::machine_start()
void alphatro_state::machine_reset()
{
// do what the IPL does
uint8_t* ROM = memregion("roms")->base();
u8* ROM = memregion("roms")->base();
m_maincpu->set_pc(0xe000);
// If BASIC is missing then it boots into the Monitor
memcpy(m_p_ram, ROM, 0x6000); // Copy BASIC to RAM
@ -434,7 +428,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(alphatro_state::timer_p)
{
/* cassette - turn 1200/2400Hz to a bit */
m_cass_data[1]++;
uint8_t cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
u8 cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
if (cass_ws != m_cass_data[0])
{

View File

@ -103,6 +103,8 @@ public:
: driver_device(mconfig, type, tag)
, m_palette(*this, "palette")
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_beep(*this, "beeper")
, m_fdc (*this, "fdc")
, m_floppy0(*this, "fdc:0")
@ -127,17 +129,18 @@ public:
DECLARE_WRITE8_MEMBER(kbd_put);
INTERRUPT_GEN_MEMBER(irq_vs);
MC6845_UPDATE_ROW(crtc_update_row);
uint8_t *m_p_videoram;
const uint8_t *m_p_chargen;
required_device<palette_device> m_palette;
private:
uint8_t m_port04;
uint8_t m_port06;
uint8_t m_port08;
uint8_t m_port0a;
uint8_t m_term_data;
u8 m_port04;
u8 m_port06;
u8 m_port08;
u8 m_port0a;
u8 m_term_data;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
required_device<palette_device> m_palette;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<beep_device> m_beep;
required_device<upd765a_device> m_fdc;
required_device<floppy_connector> m_floppy0;
@ -213,7 +216,7 @@ INPUT_PORTS_END
READ8_MEMBER( amust_state::port00_r )
{
uint8_t ret = m_term_data;
u8 ret = m_term_data;
m_term_data = 0;
return ret;
}
@ -337,9 +340,9 @@ GFXDECODE_END
MC6845_UPDATE_ROW( amust_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint8_t chr,gfx,inv;
uint16_t mem,x;
uint32_t *p = &bitmap.pix32(y);
u8 chr,gfx,inv;
u16 mem,x;
u32 *p = &bitmap.pix32(y);
for (x = 0; x < x_count; x++)
{
@ -365,8 +368,6 @@ MC6845_UPDATE_ROW( amust_state::crtc_update_row )
MACHINE_RESET_MEMBER( amust_state, amust )
{
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("videoram")->base();
membank("bankr0")->set_entry(0); // point at rom
membank("bankw0")->set_entry(0); // always write to ram
address_space &space = m_maincpu->space(AS_PROGRAM);
@ -381,7 +382,7 @@ MACHINE_RESET_MEMBER( amust_state, amust )
DRIVER_INIT_MEMBER( amust_state, amust )
{
uint8_t *main = memregion("maincpu")->base();
u8 *main = memregion("maincpu")->base();
membank("bankr0")->configure_entry(1, &main[0xf800]);
membank("bankr0")->configure_entry(0, &main[0x10800]);

View File

@ -58,7 +58,6 @@ private:
bool m_ram_ctrl;
uint8_t m_scroll_ctrl;
virtual void machine_reset() override;
virtual void video_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
};
@ -284,10 +283,6 @@ DRIVER_INIT_MEMBER(argo_state,argo)
membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0xf800);
}
void argo_state::video_start()
{
}
uint32_t argo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -455,9 +455,6 @@ MACHINE_RESET_MEMBER( aussiebyte_state, aussiebyte )
m_port1a = 1;
m_alpha_address = 0;
m_graph_address = 0;
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("vram")->base();
m_p_attribram = memregion("aram")->base();
membank("bankr0")->set_entry(16); // point at rom
membank("bankw0")->set_entry(1); // always write to ram
membank("bank1")->set_entry(2);

View File

@ -40,8 +40,6 @@ public:
private:
u8 m_video_address;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<u8> m_videoram;
required_region_ptr<u8> m_p_chargen;
@ -76,10 +74,6 @@ WRITE8_MEMBER( banctec_state::videoram_w )
m_video_address++;
}
void banctec_state::video_start()
{
}
/* ROCKWELL 6545 - Transparent Memory Addressing */
MC6845_UPDATE_ROW( banctec_state::crtc_update_row )

View File

@ -77,27 +77,27 @@ public:
DECLARE_DRIVER_INIT(bcs3b);
DECLARE_DRIVER_INIT(bcs3c);
DECLARE_DRIVER_INIT(bcs3d);
uint32_t screen_update_bcs3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_bcs3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
bool m_cass_bit;
uint8_t s_curs;
uint8_t s_init;
uint8_t s_rows;
uint8_t s_cols;
u8 s_curs;
u8 s_init;
u8 s_rows;
u8 s_cols;
required_device<cpu_device> m_maincpu;
required_device<z80ctc_device> m_ctc;
required_memory_region m_p_chargen;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_shared_ptr<u8> m_p_videoram;
required_device<cassette_image_device> m_cass;
required_ioport_array<10> m_io_keyboard;
};
READ8_MEMBER( bcs3_state::keyboard_r )
{
uint8_t i, data = 0;
u8 i, data = 0;
if (offset == 0)
data = (m_cass->input() > +0.01) ? 0x80 : 0;
@ -114,7 +114,7 @@ READ8_MEMBER( bcs3_state::keyboard_r )
// 00-7F = NUL, 0xE0 = end of line.
READ8_MEMBER( bcs3_state::video_r )
{
uint8_t data = m_p_videoram[offset];
u8 data = m_p_videoram[offset];
return BIT(data, 7) ? data : 0;
}
@ -215,10 +215,10 @@ static INPUT_PORTS_START( bcs3 )
INPUT_PORTS_END
// Official version
uint32_t bcs3_state::screen_update_bcs3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
u32 bcs3_state::screen_update_bcs3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx,rat;
uint16_t sy=0,ma=0x50,x;
u8 y,ra,chr,gfx,rat;
u16 sy=0,ma=0x50,x;
for (y = 0; y < 12; y++)
{
@ -234,7 +234,7 @@ uint32_t bcs3_state::screen_update_bcs3(screen_device &screen, bitmap_ind16 &bit
chr = m_p_videoram[x] & 0x7f;
/* get pattern of pixels for that character scanline */
gfx = m_p_chargen->base()[(chr<<3) | rat ] ^ 0xff;
gfx = m_p_chargen[(chr<<3) | rat ] ^ 0xff;
}
else
gfx = 0xff;
@ -257,11 +257,11 @@ uint32_t bcs3_state::screen_update_bcs3(screen_device &screen, bitmap_ind16 &bit
/* Hacks: When it starts, it has 4 lines of data. Pressing enter causes it to allocate 100 lines.
I'm assuming that it only shows a portion of this, with the cursor always in sight. */
uint32_t bcs3_state::screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
u32 bcs3_state::screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx,rat;
uint16_t sy = 0, ma = s_init, x;
uint16_t cursor = (m_p_videoram[s_curs] | (m_p_videoram[s_curs+1] << 8)) - 0x3c00 - ma; // get cursor relative position
u8 y,ra,chr,gfx,rat;
u16 sy = 0, ma = s_init, x;
u16 cursor = (m_p_videoram[s_curs] | (m_p_videoram[s_curs+1] << 8)) - 0x3c00 - ma; // get cursor relative position
rat = cursor / (s_cols+1);
if (rat > (s_rows-1)) ma += (rat-(s_rows-1)) * (s_cols+1);
@ -279,7 +279,7 @@ uint32_t bcs3_state::screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bi
chr = m_p_videoram[x] & 0x7f;
/* get pattern of pixels for that character scanline */
gfx = m_p_chargen->base()[(chr<<3) | rat ] ^ 0xff;
gfx = m_p_chargen[(chr<<3) | rat ] ^ 0xff;
}
else
gfx = 0xff;

View File

@ -44,7 +44,6 @@ private:
required_region_ptr<u8> m_p_chargen;
uint8_t m_keyline;
virtual void machine_reset() override;
virtual void video_start() override;
};
READ8_MEMBER(beehive_state::beehive_60_r)
@ -233,10 +232,6 @@ void beehive_state::machine_reset()
{
}
void beehive_state::video_start()
{
}
/* This system appears to have inline attribute bytes of unknown meaning.
Currently they are ignored. */
uint32_t beehive_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)

View File

@ -90,6 +90,8 @@ public:
: driver_device(mconfig, type, tag)
, m_palette(*this, "palette")
, m_maincpu(*this, "maincpu")
, m_p_ram(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_ctc1(*this, "ctc1")
, m_ctc2(*this, "ctc2")
, m_sio(*this, "sio")
@ -123,25 +125,23 @@ public:
DECLARE_READ8_MEMBER(io_read_byte);
DECLARE_WRITE8_MEMBER(io_write_byte);
MC6845_UPDATE_ROW(crtc_update_row);
required_device<palette_device> m_palette;
private:
uint8_t crt8002(uint8_t ac_ra, uint8_t ac_chr, uint8_t ac_attr, uint16_t ac_cnt, bool ac_curs);
uint8_t *m_p_chargen; /* character ROM */
uint8_t *m_p_videoram; /* Video RAM */
uint8_t *m_p_attribram; /* Attribute RAM */
uint8_t m_term_data;
uint8_t m_term_status;
u8 crt8002(u8 ac_ra, u8 ac_chr, u8 ac_attr, uint16_t ac_cnt, bool ac_curs);
u8 m_term_data;
u8 m_term_status;
uint16_t m_cnt;
bool m_c8[8];
bool m_cc[8];
floppy_image_device *m_floppy;
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
address_space *m_mem;
address_space *m_io;
required_device<palette_device> m_palette;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_ram;
required_region_ptr<u8> m_p_chargen;
required_device<z80ctc_device> m_ctc1;
required_device<z80ctc_device> m_ctc2;
required_device<z80sio_device> m_sio;
@ -173,7 +173,7 @@ WRITE8_MEMBER( bigbord2_state::portc0_w )
READ8_MEMBER( bigbord2_state::portc4_r )
{
uint8_t ret = m_term_status | 3 | (m_c8[6]<<2) | m_dsw->read();
u8 ret = m_term_status | 3 | (m_c8[6]<<2) | m_dsw->read();
m_term_status = 0;
return ret;
}
@ -182,7 +182,7 @@ READ8_MEMBER( bigbord2_state::portc4_r )
READ8_MEMBER( bigbord2_state::portd0_r )
{
uint8_t ret = m_term_data;
u8 ret = m_term_data;
m_term_data = 0;
return ret;
}
@ -436,17 +436,6 @@ static SLOT_INTERFACE_START( bigbord2_floppies )
SLOT_INTERFACE_END
/* Video */
void bigbord2_state::video_start()
{
/* find memory regions */
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("maincpu")->base()+0x6000;
m_p_attribram = memregion("maincpu")->base()+0x7000;
}
/* Machine Initialization */
void bigbord2_state::machine_start()
@ -458,7 +447,7 @@ void bigbord2_state::machine_start()
void bigbord2_state::machine_reset()
{
uint8_t i;
u8 i;
for (i = 0; i < 8; i++)
{
m_c8[i] = 0;
@ -475,10 +464,9 @@ DRIVER_INIT_MEMBER(bigbord2_state,bigbord2)
{
m_mem = &m_maincpu->space(AS_PROGRAM);
m_io = &m_maincpu->space(AS_IO);
uint8_t *RAM = memregion("maincpu")->base();
m_bankr->configure_entries(0, 2, &RAM[0x0000], 0x10000);
m_bankv->configure_entries(0, 2, &RAM[0x6000], 0x10000);
m_banka->configure_entries(0, 2, &RAM[0x7000], 0x10000);
m_bankr->configure_entries(0, 2, &m_p_ram[0x0000], 0x10000);
m_bankv->configure_entries(0, 2, &m_p_ram[0x6000], 0x10000);
m_banka->configure_entries(0, 2, &m_p_ram[0x7000], 0x10000);
}
@ -502,9 +490,9 @@ static GFXDECODE_START( crt8002 )
GFXDECODE_ENTRY( "chargen", 0x0000, crt8002_charlayout, 0, 1 )
GFXDECODE_END
uint8_t bigbord2_state::crt8002(uint8_t ac_ra, uint8_t ac_chr, uint8_t ac_attr, uint16_t ac_cnt, bool ac_curs)
u8 bigbord2_state::crt8002(u8 ac_ra, u8 ac_chr, u8 ac_attr, uint16_t ac_cnt, bool ac_curs)
{
uint8_t gfx = 0;
u8 gfx = 0;
switch (ac_attr & 3)
{
case 0: // lores gfx
@ -558,7 +546,7 @@ uint8_t bigbord2_state::crt8002(uint8_t ac_ra, uint8_t ac_chr, uint8_t ac_attr,
MC6845_UPDATE_ROW( bigbord2_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint8_t chr,gfx,attr;
u8 chr,gfx,attr;
uint16_t mem,x;
uint32_t *p = &bitmap.pix32(y);
ra &= 15;
@ -567,8 +555,8 @@ MC6845_UPDATE_ROW( bigbord2_state::crtc_update_row )
for (x = 0; x < x_count; x++)
{
mem = (ma + x) & 0x7ff;
attr = m_p_attribram[mem];
chr = m_p_videoram[mem];
attr = m_p_ram[mem + 0x7000];
chr = m_p_ram[mem + 0x6000];
/* process attributes */
gfx = crt8002(ra, chr, attr, m_cnt, (x==cursor_x));

View File

@ -61,28 +61,31 @@ class binbug_state : public driver_device
{
public:
binbug_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_rs232(*this, "keyboard"),
m_cass(*this, "cassette"),
m_p_videoram(*this, "videoram"),
m_p_attribram(*this, "attribram"),
m_maincpu(*this, "maincpu")
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_cass(*this, "cassette")
, m_p_videoram(*this, "videoram")
, m_p_attribram(*this, "attribram")
, m_p_chargen(*this, "chargen")
, m_rs232(*this, "keyboard")
{
}
DECLARE_WRITE8_MEMBER(binbug_ctrl_w);
DECLARE_READ8_MEMBER(binbug_serial_r);
DECLARE_WRITE_LINE_MEMBER(binbug_serial_w);
const uint8_t *m_p_chargen;
uint8_t m_framecnt;
virtual void video_start() override;
DECLARE_QUICKLOAD_LOAD_MEMBER( binbug );
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
optional_device<rs232_port_device> m_rs232;
// needed by dg680 class
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
private:
uint8_t m_framecnt;
required_shared_ptr<uint8_t> m_p_videoram;
required_shared_ptr<uint8_t> m_p_attribram;
required_device<cpu_device> m_maincpu;
DECLARE_QUICKLOAD_LOAD_MEMBER( binbug );
required_region_ptr<u8> m_p_chargen;
optional_device<rs232_port_device> m_rs232;
};
WRITE8_MEMBER( binbug_state::binbug_ctrl_w )
@ -117,11 +120,6 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( binbug )
INPUT_PORTS_END
void binbug_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t binbug_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// attributes bit 0 = flash, bit 1 = lores. Also bit 7 of the character = reverse-video (text only).
@ -408,11 +406,10 @@ class dg680_state : public binbug_state
{
public:
dg680_state(const machine_config &mconfig, device_type type, const char *tag)
: binbug_state(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_ctc(*this, "z80ctc"),
m_pio(*this, "z80pio")
{ }
: binbug_state(mconfig, type, tag)
, m_ctc(*this, "z80ctc")
, m_pio(*this, "z80pio")
{ }
DECLARE_READ8_MEMBER(porta_r);
DECLARE_READ8_MEMBER(portb_r);
@ -422,11 +419,12 @@ public:
DECLARE_WRITE8_MEMBER(kbd_put);
TIMER_DEVICE_CALLBACK_MEMBER(time_tick);
TIMER_DEVICE_CALLBACK_MEMBER(uart_tick);
private:
uint8_t m_pio_b;
uint8_t m_term_data;
uint8_t m_protection[0x100];
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_device<z80ctc_device> m_ctc;
required_device<z80pio_device> m_pio;
};

View File

@ -25,16 +25,14 @@ class bmjr_state : public driver_device
{
public:
bmjr_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_cass(*this, "cassette"),
m_beep(*this, "beeper")
,
m_p_wram(*this, "p_wram"){ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_cass(*this, "cassette")
, m_beep(*this, "beeper")
, m_p_wram(*this, "wram")
, m_p_chargen(*this, "chargen")
{ }
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
required_device<beep_device> m_beep;
DECLARE_READ8_MEMBER(key_r);
DECLARE_WRITE8_MEMBER(key_w);
DECLARE_READ8_MEMBER(ff_r);
@ -44,36 +42,35 @@ public:
DECLARE_READ8_MEMBER(tape_stop_r);
DECLARE_READ8_MEMBER(tape_start_r);
DECLARE_WRITE8_MEMBER(xor_display_w);
bool m_tape_switch;
required_shared_ptr<uint8_t> m_p_wram;
uint8_t *m_p_chargen;
uint8_t m_xor_display;
uint8_t m_key_mux;
DECLARE_DRIVER_INIT(bmjr);
u32 screen_update_bmjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
bool m_tape_switch;
u8 m_xor_display;
u8 m_key_mux;
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_bmjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
required_device<beep_device> m_beep;
required_shared_ptr<u8> m_p_wram;
required_region_ptr<u8> m_p_chargen;
};
void bmjr_state::video_start()
u32 bmjr_state::screen_update_bmjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t bmjr_state::screen_update_bmjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx,fg=4;
uint16_t sy=0,ma=0x100,x;
uint8_t inv = (m_xor_display) ? 0xff : 0;
u8 y,ra,chr,gfx,fg=4;
u16 sy=0,ma=0x100,x;
u8 inv = (m_xor_display) ? 0xff : 0;
for(y = 0; y < 24; y++ )
{
for (ra = 0; ra < 8; ra++)
{
uint16_t *p = &bitmap.pix16(sy++);
u16 *p = &bitmap.pix16(sy++);
for (x = ma; x < ma + 32; x++)
{
@ -168,7 +165,7 @@ static ADDRESS_MAP_START(bmjr_mem, AS_PROGRAM, 8, bmjr_state)
//0x0100, 0x03ff basic vram
//0x0900, 0x20ff vram, modes 0x40 / 0xc0
//0x2100, 0x38ff vram, modes 0x44 / 0xcc
AM_RANGE(0x0000, 0xafff) AM_RAM AM_SHARE("p_wram")
AM_RANGE(0x0000, 0xafff) AM_RAM AM_SHARE("wram")
AM_RANGE(0xb000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_ROM
// AM_RANGE(0xe890, 0xe890) W MP-1710 tile color

View File

@ -66,16 +66,18 @@
class bml3_state : public driver_device
{
public:
bml3_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_bml3bus(*this, "bml3bus"),
m_crtc(*this, "crtc"),
m_cass(*this, "cassette"),
m_speaker(*this, "speaker"),
m_ym2203(*this, "ym2203"),
m_acia6850(*this, "acia6850"),
m_palette(*this, "palette")
bml3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "vram")
, m_p_chargen(*this, "chargen")
, m_bml3bus(*this, "bml3bus")
, m_crtc(*this, "crtc")
, m_cass(*this, "cassette")
, m_speaker(*this, "speaker")
, m_ym2203(*this, "ym2203")
, m_acia6850(*this, "acia6850")
, m_palette(*this, "palette")
{
}
@ -114,10 +116,6 @@ public:
MC6845_UPDATE_ROW(crtc_update_row);
uint8_t *m_p_videoram;
uint8_t *m_p_chargen;
uint8_t m_hres_reg;
uint8_t m_crtc_vreg[0x100];
// INTERRUPT_GEN_MEMBER(bml3_irq);
INTERRUPT_GEN_MEMBER(bml3_timer_firq);
TIMER_DEVICE_CALLBACK_MEMBER(bml3_c);
@ -127,35 +125,38 @@ public:
DECLARE_WRITE8_MEMBER(bml3_ym2203_w);
private:
uint8_t m_psg_latch;
uint8_t m_attr_latch;
uint8_t m_vres_reg;
u8 m_hres_reg;
u8 m_crtc_vreg[0x100];
u8 m_psg_latch;
u8 m_attr_latch;
u8 m_vres_reg;
bool m_keyb_interrupt_disabled;
bool m_keyb_nmi_disabled; // not used yet
bool m_keyb_counter_operation_disabled;
uint8_t m_keyb_empty_scan;
uint8_t m_keyb_scancode;
u8 m_keyb_empty_scan;
u8 m_keyb_scancode;
bool m_keyb_capslock_led_on;
bool m_keyb_hiragana_led_on;
bool m_keyb_katakana_led_on;
bool m_cassbit;
bool m_cassold;
uint8_t m_cass_data[4];
u8 m_cass_data[4];
virtual void machine_reset() override;
virtual void machine_start() override;
void m6845_change_clock(uint8_t setting);
uint8_t m_crtc_index;
std::unique_ptr<uint8_t[]> m_extram;
uint8_t m_firq_mask;
uint8_t m_firq_status;
void m6845_change_clock(u8 setting);
u8 m_crtc_index;
std::unique_ptr<u8[]> m_extram;
u8 m_firq_mask;
u8 m_firq_status;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<bml3bus_device> m_bml3bus;
required_device<mc6845_device> m_crtc;
required_device<cassette_image_device> m_cass;
required_device<speaker_sound_device> m_speaker;
optional_device<ym2203_device> m_ym2203;
required_device<acia6850_device> m_acia6850;
public:
required_device<palette_device> m_palette;
};
@ -202,7 +203,7 @@ WRITE8_MEMBER( bml3_state::bml3_6845_w )
READ8_MEMBER( bml3_state::bml3_keyboard_r )
{
uint8_t ret = m_keyb_scancode;
u8 ret = m_keyb_scancode;
m_keyb_scancode &= 0x7f;
return ret;
}
@ -217,7 +218,7 @@ WRITE8_MEMBER( bml3_state::bml3_keyboard_w )
m_keyb_nmi_disabled = !BIT(data, 7);
}
void bml3_state::m6845_change_clock(uint8_t setting)
void bml3_state::m6845_change_clock(u8 setting)
{
int m6845_clock = CPU_CLOCK; // CRTC and MPU are synchronous by default
@ -289,14 +290,14 @@ WRITE8_MEMBER( bml3_state::bml3_psg_latch_w)
READ8_MEMBER(bml3_state::bml3_ym2203_r)
{
uint8_t dev_offs = ((m_psg_latch & 3) != 3);
u8 dev_offs = ((m_psg_latch & 3) != 3);
return m_ym2203->read(space, dev_offs);
}
WRITE8_MEMBER(bml3_state::bml3_ym2203_w)
{
uint8_t dev_offs = ((m_psg_latch & 3) != 3);
u8 dev_offs = ((m_psg_latch & 3) != 3);
m_ym2203->write(space, dev_offs, data);
}
@ -366,7 +367,7 @@ WRITE8_MEMBER( bml3_state::bml3_firq_mask_w)
READ8_MEMBER( bml3_state::bml3_firq_status_r )
{
uint8_t res = m_firq_status << 7;
u8 res = m_firq_status << 7;
m_firq_status = 0;
m_maincpu->set_input_line(M6809_FIRQ_LINE, CLEAR_LINE);
return res;
@ -601,9 +602,9 @@ MC6845_UPDATE_ROW( bml3_state::crtc_update_row )
// 3: reverse/inverse video
// 4: graphic (not character)
uint8_t x=0,hf=0,xi=0,interlace=0,bgcolor=0,rawbits=0,dots[2],color=0,pen=0;
u8 x=0,hf=0,xi=0,interlace=0,bgcolor=0,rawbits=0,dots[2],color=0,pen=0;
bool reverse=0,graphic=0,lowres=0;
uint16_t mem=0;
u16 mem=0;
interlace = (m_crtc_vreg[8] & 3) ? 1 : 0;
lowres = BIT(m_hres_reg, 6);
@ -684,7 +685,8 @@ MC6845_UPDATE_ROW( bml3_state::crtc_update_row )
TIMER_DEVICE_CALLBACK_MEMBER(bml3_state::keyboard_callback)
{
static const char *const portnames[3] = { "key1","key2","key3" };
int i,port_i,trigger = 0;
int i,port_i;
bool trigger = false;
if(!(m_keyb_scancode & 0x80))
{
@ -699,7 +701,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(bml3_state::keyboard_callback)
if (m_keyb_empty_scan == 1)
{
// full scan completed with no keypress
trigger = !0;
trigger = true;
}
if (m_keyb_empty_scan > 0)
m_keyb_empty_scan--;
@ -711,7 +713,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(bml3_state::keyboard_callback)
if((ioport(portnames[port_i])->read()>>i) & 1)
{
m_keyb_empty_scan = 2;
trigger = !0;
trigger = true;
}
}
if (trigger)
@ -733,7 +735,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( bml3_state::bml3_p )
{
/* cassette - turn 1200/2400Hz to a bit */
m_cass_data[1]++;
uint8_t cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
u8 cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
if (cass_ws != m_cass_data[0])
{
@ -762,9 +764,7 @@ INTERRUPT_GEN_MEMBER(bml3_state::bml3_timer_firq)
void bml3_state::machine_start()
{
m_extram = std::make_unique<uint8_t[]>(0x10000);
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("vram")->base();
m_extram = std::make_unique<u8[]>(0x10000);
m_psg_latch = 0;
m_attr_latch = 0;
m_vres_reg = 0;

View File

@ -33,14 +33,12 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(c10);
private:
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
virtual void machine_reset() override;
virtual void video_start() override;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
};
@ -82,10 +80,6 @@ void c10_state::machine_reset()
timer_set(attotime::from_usec(4), TIMER_RESET);
}
void c10_state::video_start()
{
}
/* This system appears to have inline attribute bytes of unknown meaning.
Currently they are ignored. The word at FAB5 looks like it might be cursor location. */
uint32_t c10_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)

View File

@ -40,11 +40,12 @@ class cd2650_state : public driver_device
{
public:
cd2650_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_p_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_beep(*this, "beeper"),
m_cass(*this, "cassette")
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_beep(*this, "beeper")
, m_cass(*this, "cassette")
{
}
@ -54,15 +55,14 @@ public:
DECLARE_READ8_MEMBER(cass_r);
DECLARE_WRITE_LINE_MEMBER(cass_w);
DECLARE_QUICKLOAD_LOAD_MEMBER(cd2650);
const uint8_t *m_p_chargen;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<uint8_t> m_p_videoram;
private:
uint8_t m_term_data;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<beep_device> m_beep;
required_device<cassette_image_device> m_cass;
};
@ -115,11 +115,6 @@ void cd2650_state::machine_reset()
m_beep->set_state(0);
}
void cd2650_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t cd2650_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* The video is unusual in that the characters in each line are spaced at 16 bytes in memory,

View File

@ -45,12 +45,14 @@ class dim68k_state : public driver_device
{
public:
dim68k_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_crtc(*this, "crtc"),
m_speaker(*this, "speaker"),
m_ram(*this, "ram"),
m_palette(*this, "palette") { }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_crtc(*this, "crtc")
, m_speaker(*this, "speaker")
, m_ram(*this, "ram")
, m_palette(*this, "palette")
, m_p_chargen(*this, "chargen")
{ }
DECLARE_READ16_MEMBER( dim68k_duart_r );
DECLARE_READ16_MEMBER( dim68k_fdc_r );
@ -67,17 +69,18 @@ public:
DECLARE_WRITE16_MEMBER( dim68k_video_reset_w );
DECLARE_WRITE8_MEMBER(kbd_put);
MC6845_UPDATE_ROW(crtc_update_row);
const uint8_t *m_p_chargen;
private:
bool m_speaker_bit;
uint8_t m_video_control;
uint8_t m_term_data;
u8 m_video_control;
u8 m_term_data;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
required_device<speaker_sound_device> m_speaker;
required_shared_ptr<uint16_t> m_ram;
required_device<palette_device> m_palette;
required_region_ptr<u8> m_p_chargen;
};
READ16_MEMBER( dim68k_state::dim68k_duart_r )
@ -212,27 +215,22 @@ INPUT_PORTS_END
void dim68k_state::machine_reset()
{
uint8_t* ROM = memregion("bootrom")->base();
u8* ROM = memregion("bootrom")->base();
memcpy((uint8_t*)m_ram.target(), ROM, 0x2000);
memcpy((u8*)m_ram.target(), ROM, 0x2000);
m_maincpu->reset();
}
void dim68k_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
// Text-only; graphics isn't emulated yet. Need to find out if hardware cursor is used.
MC6845_UPDATE_ROW( dim68k_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint8_t chr,gfx,x,xx,inv;
u8 chr,gfx,x,xx,inv;
uint16_t chr16=0x2020; // set to spaces if screen is off
uint32_t *p = &bitmap.pix32(y);
uint8_t screen_on = ~m_video_control & 4;
uint8_t dot8 = ~m_video_control & 40;
u8 screen_on = ~m_video_control & 4;
u8 dot8 = ~m_video_control & 40;
// need to divide everything in half to cater for 16-bit reads
x_count /= 2;

View File

@ -98,21 +98,19 @@ ksm|DVK KSM,
class ksm_state : public driver_device
{
public:
ksm_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_p_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_pic8259(*this, "pic8259"),
m_i8251line(*this, "i8251line"),
m_rs232(*this, "rs232"),
m_i8251kbd(*this, "i8251kbd"),
m_ms7004(*this, "ms7004"),
m_screen(*this, "screen")
{ }
ksm_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram")
, m_maincpu(*this, "maincpu")
, m_pic8259(*this, "pic8259")
, m_i8251line(*this, "i8251line")
, m_rs232(*this, "rs232")
, m_i8251kbd(*this, "i8251kbd")
, m_ms7004(*this, "ms7004")
, m_screen(*this, "screen")
, m_p_chargen(*this, "chargen")
{ }
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER( scanline_callback );
DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock);
@ -120,19 +118,20 @@ public:
DECLARE_WRITE8_MEMBER(ksm_ppi_porta_w);
DECLARE_WRITE8_MEMBER(ksm_ppi_portc_w);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint32_t draw_scanline(uint16_t *p, uint16_t offset, uint8_t scanline);
rectangle m_tmpclip;
bitmap_ind16 m_tmpbmp;
const uint8_t *m_p_chargen;
struct {
uint8_t line;
uint16_t ptr;
} m_video;
protected:
virtual void machine_reset() override;
virtual void video_start() override;
required_shared_ptr<uint8_t> m_p_videoram;
required_device<cpu_device> m_maincpu;
required_device<pic8259_device> m_pic8259;
@ -141,6 +140,7 @@ protected:
required_device<i8251_device> m_i8251kbd;
required_device<ms7004_device> m_ms7004;
required_device<screen_device> m_screen;
required_region_ptr<u8> m_p_chargen;
};
static ADDRESS_MAP_START( ksm_mem, AS_PROGRAM, 8, ksm_state )
@ -209,8 +209,6 @@ void ksm_state::machine_reset()
void ksm_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
m_tmpclip = rectangle(0, KSM_DISP_HORZ-1, 0, KSM_DISP_VERT-1);
m_tmpbmp.allocate(KSM_DISP_HORZ, KSM_DISP_VERT);
}

View File

@ -30,23 +30,25 @@ class ec65_state : public driver_device
{
public:
ec65_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_via_0(*this, VIA6522_0_TAG),
m_via_1(*this, VIA6522_1_TAG),
m_p_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_palette(*this, "palette")
: driver_device(mconfig, type, tag)
, m_via_0(*this, VIA6522_0_TAG)
, m_via_1(*this, VIA6522_1_TAG)
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_maincpu(*this, "maincpu")
, m_palette(*this, "palette")
{
}
DECLARE_WRITE8_MEMBER(kbd_put);
MC6845_UPDATE_ROW(crtc_update_row);
uint8_t *m_p_chargen;
private:
virtual void machine_reset() override;
required_device<via6522_device> m_via_0;
required_device<via6522_device> m_via_1;
required_shared_ptr<uint8_t> m_p_videoram;
virtual void machine_reset() override;
virtual void video_start() override;
required_region_ptr<u8> m_p_chargen;
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
};
@ -116,11 +118,6 @@ void ec65_state::machine_reset()
m_via_1->write_pb7(1);
}
void ec65_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
MC6845_UPDATE_ROW( ec65_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();

View File

@ -54,6 +54,7 @@ public:
: driver_device(mconfig, type, tag)
, m_palette(*this, "palette")
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_cass(*this, "cassette")
, m_crtc(*this, "crtc")
, m_io_keyboard(*this, "KEY.%u", 0)
@ -90,7 +91,6 @@ public:
required_device<palette_device> m_palette;
private:
const uint8_t *m_p_chargen;
uint8_t *m_p_videoram;
uint8_t *m_p_hiresram;
uint8_t m_sys_status;
@ -100,6 +100,7 @@ private:
bool m_motor;
bool m_centronics_busy;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
required_device<cassette_image_device> m_cass;
required_device<mc6845_device> m_crtc;
required_ioport_array<8> m_io_keyboard;
@ -447,7 +448,6 @@ PALETTE_INIT_MEMBER( excali64_state, excali64 )
{
// do this here because driver_init hasn't run yet
m_p_videoram = memregion("videoram")->base();
m_p_chargen = memregion("chargen")->base();
m_p_hiresram = m_p_videoram + 0x2000;
uint8_t *main = memregion("roms")->base();
uint8_t *ram = memregion("rambank")->base();

View File

@ -54,6 +54,7 @@ public:
, m_maincpu(*this, "maincpu")
, m_vdg(*this, "vdg")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_cass(*this, "cassette")
, m_cart(*this, "cartslot")
, m_uart(*this, "uart")
@ -75,8 +76,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(timer_p);
TIMER_DEVICE_CALLBACK_MEMBER(timer_k);
uint8_t *m_p_chargen;
MC6847_GET_CHARROM_MEMBER(get_char_rom)
{
return m_p_chargen[(ch * 16 + line) & 0xfff];
@ -103,6 +102,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<mc6847_base_device> m_vdg;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<cassette_image_device> m_cass;
required_device<generic_slot_device> m_cart;
required_device<i8251_device> m_uart;
@ -479,7 +479,6 @@ void fc100_state::machine_start()
void fc100_state::machine_reset()
{
m_p_chargen = memregion("chargen")->base();
m_cass_data[0] = m_cass_data[1] = m_cass_data[2] = m_cass_data[3] = 0;
m_cass_state = 0;
m_cassold = 0;

View File

@ -106,7 +106,6 @@ private:
uint8_t m_term_data;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<palette_device> m_palette;
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
@ -346,10 +345,6 @@ void h19_state::machine_reset()
{
}
void h19_state::video_start()
{
}
MC6845_UPDATE_ROW( h19_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();

View File

@ -47,11 +47,12 @@ class homelab_state : public driver_device
{
public:
homelab_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_dac(*this, "dac"),
m_cass(*this, "cassette")
{ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_dac(*this, "dac")
, m_cass(*this, "cassette")
{ }
DECLARE_READ8_MEMBER(key_r);
DECLARE_WRITE8_MEMBER(cass_w);
@ -62,22 +63,24 @@ public:
DECLARE_WRITE8_MEMBER(brailab4_port7f_w);
DECLARE_WRITE8_MEMBER(brailab4_portff_w);
DECLARE_CUSTOM_INPUT_MEMBER(cass3_r);
const uint8_t *m_p_chargen;
const uint8_t *m_p_videoram;
bool m_nmi;
required_device<cpu_device> m_maincpu;
required_device<dac_bit_interface> m_dac;
required_device<cassette_image_device> m_cass;
DECLARE_DRIVER_INIT(brailab4);
DECLARE_VIDEO_START(homelab2);
DECLARE_MACHINE_RESET(homelab3);
DECLARE_VIDEO_START(homelab3);
DECLARE_MACHINE_RESET(brailab4);
DECLARE_VIDEO_START(brailab4);
uint32_t screen_update_homelab2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_homelab3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(homelab_frame);
DECLARE_QUICKLOAD_LOAD_MEMBER(homelab);
uint32_t screen_update_homelab2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_homelab3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
const uint8_t *m_p_videoram;
bool m_nmi;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
required_device<dac_bit_interface> m_dac;
required_device<cassette_image_device> m_cass;
};
INTERRUPT_GEN_MEMBER(homelab_state::homelab_frame)
@ -545,19 +548,16 @@ INPUT_PORTS_END
VIDEO_START_MEMBER(homelab_state,homelab2)
{
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("maincpu")->base()+0xc000;
}
VIDEO_START_MEMBER(homelab_state,homelab3)
{
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("maincpu")->base()+0xf800;
}
VIDEO_START_MEMBER(homelab_state,brailab4)
{
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("maincpu")->base()+0x17800;
}

View File

@ -34,15 +34,16 @@ public:
, m_p_chargen(*this, "chargen")
{ }
required_device<cpu_device> m_maincpu;
DECLARE_READ8_MEMBER( homez80_keyboard_r );
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
INTERRUPT_GEN_MEMBER(homez80_interrupt);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
bool m_irq;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(homez80_interrupt);
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
};
@ -219,10 +220,6 @@ void homez80_state::machine_reset()
m_irq = 0;
}
void homez80_state::video_start()
{
}
uint32_t homez80_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -46,14 +46,16 @@ public:
ibm3153_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
{ }
, m_p_chargen(*this, "chargen")
{ }
const uint8_t *m_p_chargen;
DECLARE_PALETTE_INIT(ibm3153);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
};
@ -87,7 +89,6 @@ PALETTE_INIT_MEMBER( ibm3153_state, ibm3153 )
void ibm3153_state::machine_reset()
{
m_p_chargen = memregion("chargen")->base();
}
static MACHINE_CONFIG_START( ibm3153, ibm3153_state )

View File

@ -52,29 +52,20 @@ class ie15_state : public driver_device,
public device_serial_interface
{
public:
ie15_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
device_serial_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_beeper(*this, "beeper"),
m_rs232(*this, "rs232"),
m_screen(*this, "screen"),
m_io_keyboard(*this, "keyboard")
ie15_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, device_serial_interface(mconfig, *this)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "video")
, m_p_chargen(*this, "chargen")
, m_beeper(*this, "beeper")
, m_rs232(*this, "rs232")
, m_screen(*this, "screen")
, m_io_keyboard(*this, "keyboard")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE16_MEMBER( kbd_put );
DECLARE_WRITE_LINE_MEMBER( serial_rx_callback );
virtual void rcv_complete() override;
virtual void tra_callback() override;
virtual void tra_complete() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
DECLARE_WRITE8_MEMBER( mem_w );
DECLARE_READ8_MEMBER( mem_r );
DECLARE_WRITE8_MEMBER( mem_addr_lo_w );
@ -97,22 +88,19 @@ public:
DECLARE_READ8_MEMBER( serial_rx_ready_r );
DECLARE_READ8_MEMBER( serial_r );
DECLARE_WRITE8_MEMBER( serial_speed_w );
DECLARE_PALETTE_INIT( ie15 );
static const device_timer_id TIMER_HBLANK = 0;
void scanline_callback();
private:
TIMER_CALLBACK_MEMBER(ie15_beepoff);
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
private:
static const device_timer_id TIMER_HBLANK = 0;
void scanline_callback();
void update_leds();
void draw_scanline(uint32_t *p, uint16_t offset, uint8_t scanline);
std::unique_ptr<uint32_t[]> m_tmpbmp;
emu_timer *m_hblank_timer;
const uint8_t *m_p_chargen;
uint8_t *m_p_videoram;
uint8_t m_long_beep;
uint8_t m_kb_control;
uint8_t m_kb_data;
@ -135,8 +123,17 @@ private:
int m_vpos;
int m_marker_scanline;
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
virtual void rcv_complete() override;
virtual void tra_callback() override;
virtual void tra_complete() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<beep_device> m_beeper;
required_device<rs232_port_device> m_rs232;
required_device<screen_device> m_screen;
@ -489,8 +486,6 @@ void ie15_state::machine_reset()
void ie15_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("video")->base();
m_video.ptr1 = m_video.ptr2 = m_latch = 0;
m_tmpbmp = std::make_unique<uint32_t[]>(IE15_TOTAL_HORZ * IE15_TOTAL_VERT);

View File

@ -28,16 +28,17 @@ public:
: driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram")
, m_maincpu(*this, "maincpu")
{ }
, m_p_chargen(*this, "chargen")
{ }
DECLARE_DRIVER_INIT(jonos);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<uint8_t> m_p_videoram;
private:
const uint8_t *m_p_chargen;
virtual void machine_reset() override;
virtual void video_start() override;
required_shared_ptr<uint8_t> m_p_videoram;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
};
@ -60,11 +61,6 @@ void jonos_state::machine_reset()
{
}
void jonos_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t jonos_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -71,7 +71,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
static ADDRESS_MAP_START( jupiter3_mem, AS_PROGRAM, 8, jupiter3_state )
AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("p_ram")
AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("ram")
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION(Z80_TAG, 0)
AM_RANGE(0xf000, 0xffff) AM_RAM
@ -128,11 +128,6 @@ WRITE8_MEMBER( jupiter3_state::kbd_put )
// VIDEO
//**************************************************************************
void jupiter3_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t jupiter3_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -36,7 +36,6 @@ private:
uint8_t m_framecnt;
uint8_t m_term_data;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
@ -94,10 +93,6 @@ DRIVER_INIT_MEMBER(k8915_state,k8915)
membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x10000);
}
void k8915_state::video_start()
{
}
uint32_t k8915_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -17,18 +17,21 @@ class m79152pc_state : public driver_device
{
public:
m79152pc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_p_videoram(*this, "videoram"),
m_p_attributes(*this, "attributes"),
m_maincpu(*this, "maincpu") { }
: driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram")
, m_p_attributes(*this, "attributes")
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
{ }
uint8_t *m_p_chargen;
uint32_t screen_update_m79152pc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
virtual void machine_reset() override;
required_shared_ptr<uint8_t> m_p_videoram;
required_shared_ptr<uint8_t> m_p_attributes;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_m79152pc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
};
static ADDRESS_MAP_START(m79152pc_mem, AS_PROGRAM, 8, m79152pc_state)
@ -53,11 +56,6 @@ void m79152pc_state::machine_reset()
{
}
void m79152pc_state::video_start()
{
m_p_chargen = memregion("chargen")->base()+4;
}
uint32_t m79152pc_state::screen_update_m79152pc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// Attributes are unknown so are not implemented
@ -74,7 +72,7 @@ uint32_t m79152pc_state::screen_update_m79152pc(screen_device &screen, bitmap_in
{
chr = m_p_videoram[x];
//attr = m_p_attributes[x];
gfx = m_p_chargen[(chr<<4) | ra ];
gfx = m_p_chargen[((chr<<4) | ra) + 4 ];
/* Display a scanline of a character */
*p++ = BIT(gfx, 7);

View File

@ -26,7 +26,6 @@ public:
private:
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
@ -53,10 +52,6 @@ void mes_state::machine_reset()
{
}
void mes_state::video_start()
{
}
/* This system appears to have 2 screens. Not implemented.
Also the screen dimensions are a guess. */
uint32_t mes_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)

View File

@ -26,17 +26,14 @@ class multi8_state : public driver_device
{
public:
multi8_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_ppi(*this, "ppi8255_0"),
m_crtc(*this, "crtc"),
m_beeper(*this, "beeper")
{ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_ppi(*this, "ppi8255_0")
, m_crtc(*this, "crtc")
, m_beeper(*this, "beeper")
{ }
required_device<cpu_device> m_maincpu;
required_device<i8255_device> m_ppi;
required_device<mc6845_device> m_crtc;
required_device<beep_device> m_beeper;
DECLARE_WRITE8_MEMBER(multi8_6845_w);
DECLARE_READ8_MEMBER(key_input_r);
DECLARE_READ8_MEMBER(key_status_r);
@ -50,10 +47,15 @@ public:
DECLARE_WRITE8_MEMBER(portb_w);
DECLARE_WRITE8_MEMBER(portc_w);
DECLARE_WRITE8_MEMBER(ym2203_porta_w);
DECLARE_READ8_MEMBER(ay8912_0_r);
DECLARE_READ8_MEMBER(ay8912_1_r);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
uint32_t screen_update_multi8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint8_t *m_p_vram;
uint8_t *m_p_wram;
uint8_t *m_p_kanji;
uint8_t *m_p_chargen;
uint8_t m_mcu_init;
uint8_t m_keyb_press;
uint8_t m_keyb_press_flag;
@ -64,14 +66,15 @@ public:
uint8_t m_pen_clut[8];
uint8_t m_bw_mode;
uint16_t m_knj_addr;
DECLARE_READ8_MEMBER(ay8912_0_r);
DECLARE_READ8_MEMBER(ay8912_1_r);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_multi8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
void multi8_draw_pixel(bitmap_ind16 &bitmap,int y,int x,uint8_t pen,uint8_t width);
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
required_device<i8255_device> m_ppi;
required_device<mc6845_device> m_crtc;
required_device<beep_device> m_beeper;
};
#define mc6845_h_char_total (m_crtc_vreg[0])
@ -100,7 +103,6 @@ void multi8_state::video_start()
m_vram_bank = 8;
m_bw_mode = 0;
m_p_chargen = memregion("chargen")->base();
}
void multi8_state::multi8_draw_pixel(bitmap_ind16 &bitmap,int y,int x,uint8_t pen,uint8_t width)

View File

@ -69,15 +69,16 @@ public:
, m_ppi1(*this, "ppi8255_1")
, m_ppi2(*this, "ppi8255_2")
, m_cass(*this, "cassette")
, m_wave(*this, WAVE_TAG)
, m_crtc(*this, "crtc")
, m_fdc(*this, "fdc")
, m_floppy0(*this, "fdc:0")
, m_floppy1(*this, "fdc:1")
, m_audio(*this, "sn1")
, m_rtc(*this, "rtc"),
m_palette(*this, "palette")
{ }
, m_rtc(*this, "rtc")
, m_palette(*this, "palette")
, m_p_videoram(*this, "vram")
, m_p_chargen(*this, "chargen")
{ }
DECLARE_READ8_MEMBER(mycom_upper_r);
DECLARE_WRITE8_MEMBER(mycom_upper_w);
@ -94,10 +95,9 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(mycom_kbd);
DECLARE_WRITE8_MEMBER(mycom_rtc_w);
MC6845_UPDATE_ROW(crtc_update_row);
uint8_t *m_p_videoram;
uint8_t *m_p_chargen;
uint8_t m_0a;
private:
uint8_t m_0a;
uint16_t m_i_videoram;
uint8_t m_keyb_press;
uint8_t m_keyb_press_flag;
@ -106,31 +106,24 @@ private:
uint8_t *m_p_ram;
virtual void machine_reset() override;
virtual void machine_start() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<i8255_device> m_ppi0;
required_device<i8255_device> m_ppi1;
required_device<i8255_device> m_ppi2;
required_device<cassette_image_device> m_cass;
required_device<wave_device> m_wave;
required_device<mc6845_device> m_crtc;
required_device<fd1771_t> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<sn76489_device> m_audio;
required_device<msm5832_device> m_rtc;
public:
required_device<palette_device> m_palette;
required_region_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
};
void mycom_state::video_start()
{
m_p_videoram = memregion("vram")->base();
m_p_chargen = memregion("chargen")->base();
}
MC6845_UPDATE_ROW( mycom_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();

View File

@ -23,26 +23,46 @@ class nanos_state : public driver_device
{
public:
nanos_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_pio(*this, "z80pio"),
m_pio_0(*this, "z80pio_0"),
m_pio_1(*this, "z80pio_1"),
m_sio_0(*this, "z80sio_0"),
m_sio_1(*this, "z80sio_1"),
m_ctc_0(*this, "z80ctc_0"),
m_ctc_1(*this, "z80ctc_1"),
m_fdc(*this, "upd765"),
m_key_t(*this, "keyboard_timer"),
m_ram(*this, RAM_TAG),
m_region_maincpu(*this, "maincpu"),
m_bank1(*this, "bank1"),
m_bank2(*this, "bank2"),
m_bank3(*this, "bank3"),
m_lines(*this, {"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6"}),
m_linec(*this, "LINEC")
{ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pio(*this, "z80pio")
, m_pio_0(*this, "z80pio_0")
, m_pio_1(*this, "z80pio_1")
, m_sio_0(*this, "z80sio_0")
, m_sio_1(*this, "z80sio_1")
, m_ctc_0(*this, "z80ctc_0")
, m_ctc_1(*this, "z80ctc_1")
, m_fdc(*this, "upd765")
, m_key_t(*this, "keyboard_timer")
, m_ram(*this, RAM_TAG)
, m_region_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_bank1(*this, "bank1")
, m_bank2(*this, "bank2")
, m_bank3(*this, "bank3")
, m_lines(*this, {"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6"})
, m_linec(*this, "LINEC")
{ }
DECLARE_WRITE8_MEMBER( nanos_tc_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z0_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z1_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z2_w );
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
DECLARE_WRITE_LINE_MEMBER(z80daisy_interrupt);
DECLARE_READ8_MEMBER(nanos_port_a_r);
DECLARE_READ8_MEMBER(nanos_port_b_r);
DECLARE_WRITE8_MEMBER(nanos_port_b_w);
DECLARE_FLOPPY_FORMATS( floppy_formats );
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint8_t m_key_command;
uint8_t m_last_code;
uint8_t m_key_pressed;
uint8_t row_number(uint8_t code);
virtual void machine_reset() override;
virtual void machine_start() override;
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio;
required_device<z80pio_device> m_pio_0;
@ -54,33 +74,13 @@ public:
required_device<upd765a_device> m_fdc;
required_device<timer_device> m_key_t;
required_device<ram_device> m_ram;
const uint8_t *m_p_chargen;
uint8_t m_key_command;
uint8_t m_last_code;
uint8_t m_key_pressed;
DECLARE_WRITE8_MEMBER( nanos_tc_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z0_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z1_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z2_w );
virtual void machine_reset() override;
virtual void machine_start() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
DECLARE_WRITE_LINE_MEMBER(z80daisy_interrupt);
DECLARE_READ8_MEMBER(nanos_port_a_r);
DECLARE_READ8_MEMBER(nanos_port_b_r);
DECLARE_WRITE8_MEMBER(nanos_port_b_w);
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
required_memory_region m_region_maincpu;
required_region_ptr<u8> m_p_chargen;
required_memory_bank m_bank1;
required_memory_bank m_bank2;
required_memory_bank m_bank3;
required_ioport_array<7> m_lines;
required_ioport m_linec;
uint8_t row_number(uint8_t code);
};
@ -241,11 +241,6 @@ static INPUT_PORTS_START( nanos )
INPUT_PORTS_END
void nanos_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t nanos_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// static uint8_t framecnt=0;

View File

@ -21,20 +21,19 @@ class paso1600_state : public driver_device
{
public:
paso1600_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_pic(*this, "pic8259"),
m_dma(*this, "8237dma"),
m_crtc(*this, "crtc"),
m_p_vram(*this, "vram"),
m_p_gvram(*this, "gvram"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pic(*this, "pic8259")
, m_dma(*this, "8237dma")
, m_crtc(*this, "crtc")
, m_p_vram(*this, "vram")
, m_p_gvram(*this, "gvram")
, m_p_chargen(*this, "chargen")
, m_p_pcg(*this, "pcg")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
{ }
required_device<cpu_device> m_maincpu;
required_device<pic8259_device> m_pic;
required_device<am9517a_device> m_dma;
required_device<mc6845_device> m_crtc;
DECLARE_READ8_MEMBER(paso1600_pcg_r);
DECLARE_WRITE8_MEMBER(paso1600_pcg_w);
DECLARE_WRITE8_MEMBER(paso1600_6845_address_w);
@ -44,22 +43,27 @@ public:
DECLARE_READ8_MEMBER(key_r);
DECLARE_WRITE8_MEMBER(key_w);
DECLARE_READ16_MEMBER(test_hi_r);
DECLARE_READ8_MEMBER(pc_dma_read_byte);
DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
uint32_t screen_update_paso1600(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint8_t m_crtc_vreg[0x100],m_crtc_index;
uint8_t *m_p_chargen;
uint8_t *m_p_pcg;
required_shared_ptr<uint16_t> m_p_vram;
required_shared_ptr<uint16_t> m_p_gvram;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
struct{
uint8_t portb;
}m_keyb;
DECLARE_READ8_MEMBER(pc_dma_read_byte);
DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_paso1600(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<pic8259_device> m_pic;
required_device<am9517a_device> m_dma;
required_device<mc6845_device> m_crtc;
required_shared_ptr<uint16_t> m_p_vram;
required_shared_ptr<uint16_t> m_p_gvram;
required_region_ptr<u8> m_p_chargen;
required_region_ptr<u8> m_p_pcg;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
};
#define mc6845_h_char_total (m_crtc_vreg[0])
@ -80,12 +84,6 @@ public:
#define mc6845_update_addr (((m_crtc_vreg[0x12]<<8) & 0x3f00) | (m_crtc_vreg[0x13] & 0xff))
void paso1600_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
m_p_pcg = memregion("pcg")->base();
}
uint32_t paso1600_state::screen_update_paso1600(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x,y;

View File

@ -24,6 +24,8 @@ public:
pasopia_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_p_vram(*this, "vram")
, m_ppi0(*this, "ppi8255_0")
, m_ppi1(*this, "ppi8255_1")
, m_ppi2(*this, "ppi8255_2")
@ -57,12 +59,11 @@ private:
uint8_t m_mux_data;
bool m_video_wl;
bool m_ram_bank;
uint8_t *m_p_vram;
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
required_region_ptr<u8> m_p_vram;
required_device<i8255_device> m_ppi0;
required_device<i8255_device> m_ppi1;
required_device<i8255_device> m_ppi2;
@ -79,14 +80,9 @@ TIMER_CALLBACK_MEMBER( pasopia_state::pio_timer )
m_pio->port_b_write(keyb_r(generic_space(),0,0xff));
}
void pasopia_state::video_start()
{
}
MC6845_UPDATE_ROW( pasopia_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint8_t *m_p_chargen = memregion("chargen")->base();
uint8_t chr,gfx,fg=7,bg=0; // colours need to be determined
uint16_t mem,x;
uint32_t *p = &bitmap.pix32(y);
@ -148,7 +144,6 @@ INPUT_PORTS_END
void pasopia_state::machine_start()
{
m_p_vram = memregion("vram")->base();
m_hblank = 0;
membank("bank1")->set_entry(0);
membank("bank2")->set_entry(0);

View File

@ -68,17 +68,28 @@ class pcm_state : public driver_device
{
public:
pcm_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_pio_s(*this, "z80pio_s"),
m_pio_u(*this, "z80pio_u"),
m_sio(*this, "z80sio"),
m_ctc_s(*this, "z80ctc_s"),
m_ctc_u(*this, "z80ctc_u"),
m_speaker(*this, "speaker"),
m_cass(*this, "cassette"),
m_p_videoram(*this, "videoram"){ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pio_s(*this, "z80pio_s")
, m_pio_u(*this, "z80pio_u")
, m_sio(*this, "z80sio")
, m_ctc_s(*this, "z80ctc_s")
, m_ctc_u(*this, "z80ctc_u")
, m_speaker(*this, "speaker")
, m_cass(*this, "cassette")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
{ }
DECLARE_READ8_MEMBER( pcm_85_r );
DECLARE_WRITE_LINE_MEMBER( pcm_82_w );
DECLARE_WRITE8_MEMBER( pcm_85_w );
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
bool m_cone;
uint8_t m_85;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio_s;
required_device<z80pio_device> m_pio_u;
@ -87,17 +98,8 @@ public:
required_device<z80ctc_device> m_ctc_u;
required_device<speaker_sound_device> m_speaker;
required_device<cassette_image_device> m_cass;
DECLARE_READ8_MEMBER( pcm_85_r );
DECLARE_WRITE_LINE_MEMBER( pcm_82_w );
DECLARE_WRITE8_MEMBER( pcm_85_w );
uint8_t *m_p_chargen;
bool m_cone;
required_shared_ptr<uint8_t> m_p_videoram;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint8_t m_85;
required_region_ptr<u8> m_p_chargen;
};
@ -183,11 +185,6 @@ void pcm_state::machine_reset()
{
}
void pcm_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t pcm_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -62,6 +62,8 @@ public:
, m_exp_0c(*this, "exp0c")
, m_exp_0d(*this, "exp0d")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_p_pcgram(*this, "pcg")
, m_io_keyboard(*this, "KEY.%u", 0)
{ }
@ -84,15 +86,13 @@ public:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp02_load) { return load_cart(image, m_exp_02, "2000"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp0c_load) { return load_cart(image, m_exp_0c, "c000"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp0d_load) { return load_cart(image, m_exp_0d, "d000"); }
private:
uint8_t m_kbd_row;
bool m_kbd_irq;
uint8_t *m_p_pcgram;
const uint8_t *m_p_chargen;
uint8_t m_control_bits;
virtual void machine_reset() override;
virtual void machine_start() override;
virtual void video_start() override;
void pegasus_decrypt_rom(uint8_t *ROM);
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
@ -104,6 +104,8 @@ private:
required_device<generic_slot_device> m_exp_0c;
required_device<generic_slot_device> m_exp_0d;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_region_ptr<u8> m_p_pcgram;
required_ioport_array<8> m_io_keyboard;
};
@ -286,11 +288,6 @@ static INPUT_PORTS_START( pegasus )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("{ }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('{') PORT_CHAR('}')
INPUT_PORTS_END
void pegasus_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
static const uint8_t mcm6571a_shift[] =
{
0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,
@ -452,8 +449,6 @@ image_init_result pegasus_state::load_cart(device_image_interface &image, generi
void pegasus_state::machine_start()
{
m_p_pcgram = memregion("pcg")->base();
if (m_exp_00->exists())
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_00));
if (m_exp_01->exists())

View File

@ -65,7 +65,6 @@ private:
uint8_t m_data_out;
uint8_t m_keyboard_input;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
required_device<cassette_image_device> m_cass;
@ -206,11 +205,6 @@ PALETTE_INIT_MEMBER(phunsy_state, phunsy)
}
void phunsy_state::video_start()
{
}
uint32_t phunsy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx,col;

View File

@ -51,7 +51,6 @@ private:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
uint8_t m_kbd_row;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
@ -175,10 +174,6 @@ DRIVER_INIT_MEMBER(plan80_state,plan80)
membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0xf800);
}
void plan80_state::video_start()
{
}
uint32_t plan80_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -61,6 +61,8 @@ public:
proteus3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "vram")
, m_p_chargen(*this, "chargen")
, m_pia(*this, "pia")
, m_acia1(*this, "acia1")
, m_acia2(*this, "acia2")
@ -81,14 +83,14 @@ private:
uint8_t m_video_data;
uint8_t m_flashcnt;
uint16_t m_curs_pos;
uint8_t *m_p_chargen;
uint8_t *m_p_videoram;
uint8_t m_cass_data[4];
bool m_cass_state;
bool m_cassold;
uint8_t m_clockcnt;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<pia6821_device> m_pia;
required_device<acia6850_device> m_acia1; // cassette uart
required_device<acia6850_device> m_acia2; // tty keyboard uart
@ -298,8 +300,6 @@ GFXDECODE_END
void proteus3_state::machine_reset()
{
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("vram")->base();
m_curs_pos = 0;
m_cass_data[0] = m_cass_data[1] = m_cass_data[2] = m_cass_data[3] = 0;
m_cass_state = 1;

View File

@ -150,6 +150,7 @@ public:
, m_uart(*this, "uart")
, m_uart_s(*this, "uart_s")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_iop_arrows(*this, "ARROWS")
, m_iop_config(*this, "CONFIG")
, m_iop_s1(*this, "S1")
@ -183,10 +184,8 @@ private:
uint8_t m_sol20_fa;
virtual void machine_reset() override;
virtual void machine_start() override;
virtual void video_start() override;
uint8_t m_sol20_fc;
uint8_t m_sol20_fe;
const uint8_t *m_p_chargen;
uint8_t m_framecnt;
cass_data_t m_cass_data;
emu_timer *m_cassette_timer;
@ -197,6 +196,7 @@ private:
required_device<ay31015_device> m_uart;
required_device<ay31015_device> m_uart_s;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_ioport m_iop_arrows;
required_ioport m_iop_config;
required_ioport m_iop_s1;
@ -626,11 +626,6 @@ DRIVER_INIT_MEMBER(sol20_state,sol20)
membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0xc000);
}
void sol20_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
}
uint32_t sol20_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// Visible screen is 64 x 16, with start position controlled by scroll register.

View File

@ -42,6 +42,7 @@ public:
: driver_device(mconfig, type, tag)
, m_palette(*this, "palette")
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_sio1(*this, "sio1")
, m_ctc1(*this, "ctc1")
, m_pio(*this, "pio")
@ -73,7 +74,6 @@ public:
DECLARE_WRITE8_MEMBER(kbd_put);
private:
uint8_t *m_p_chargen;
bool m_q_state;
bool m_qbar_state;
bool m_drq_state;
@ -82,6 +82,7 @@ private:
bool m_tc;
required_device<palette_device> m_palette;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
required_device<z80dart_device> m_sio1;
required_device<z80ctc_device> m_ctc1;
required_device<z80pio_device> m_pio;
@ -244,7 +245,6 @@ DRIVER_INIT_MEMBER( rc702_state, rc702 )
membank("bankr0")->configure_entry(1, &main[0x0000]);
membank("bankr0")->configure_entry(0, &main[0x10000]);
membank("bankw0")->configure_entry(0, &main[0x0000]);
m_p_chargen = memregion("chargen")->base();
m_palette->set_pen_colors(0, our_palette, ARRAY_LENGTH(our_palette));
}

View File

@ -47,28 +47,26 @@ To Do:
class sbrain_state : public driver_device
{
public:
sbrain_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_p_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "subcpu"),
m_beep(*this, "beeper"),
m_brg(*this, "brg"),
m_u0(*this, "uart0"),
m_u1(*this, "uart1"),
m_ppi(*this, "ppi"),
m_fdc (*this, "fdc"),
m_floppy0(*this, "fdc:0"),
m_floppy1(*this, "fdc:1"),
m_vs(*this, "VS"),
m_bankr0(*this, "bankr0"),
m_bankw0(*this, "bankw0"),
m_bank2(*this, "bank2") {}
sbrain_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_subcpu(*this, "subcpu")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_beep(*this, "beeper")
, m_brg(*this, "brg")
, m_u0(*this, "uart0")
, m_u1(*this, "uart1")
, m_ppi(*this, "ppi")
, m_fdc (*this, "fdc")
, m_floppy0(*this, "fdc:0")
, m_floppy1(*this, "fdc:1")
, m_vs(*this, "VS")
, m_bankr0(*this, "bankr0")
, m_bankw0(*this, "bankw0")
, m_bank2(*this, "bank2")
{}
public:
const uint8_t *m_p_chargen;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<uint8_t> m_p_videoram;
DECLARE_DRIVER_INIT(sbrain);
DECLARE_MACHINE_RESET(sbrain);
DECLARE_READ8_MEMBER(ppi_pa_r);
@ -82,6 +80,8 @@ public:
DECLARE_WRITE8_MEMBER(baud_w);
DECLARE_WRITE_LINE_MEMBER(fr_w);
DECLARE_WRITE_LINE_MEMBER(ft_w);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
uint8_t m_porta;
uint8_t m_portb;
@ -89,6 +89,8 @@ private:
uint8_t m_port08;
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<beep_device> m_beep;
required_device<com8116_device> m_brg;
required_device<i8251_device> m_u0;
@ -270,7 +272,6 @@ SLOT_INTERFACE_END
MACHINE_RESET_MEMBER( sbrain_state, sbrain )
{
m_p_chargen = memregion("chargen")->base();
m_bankr0->set_entry(1); // point at rom
m_bankw0->set_entry(0); // always write to ram
m_bank2->set_entry(1); // point at maincpu bank

View File

@ -55,29 +55,26 @@
class sm7238_state : public driver_device
{
public:
sm7238_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_p_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_nvram(*this, "nvram"),
m_pic8259(*this, "pic8259"),
m_i8251line(*this, "i8251line"),
m_rs232(*this, "rs232"),
m_i8251kbd(*this, "i8251kbd"),
m_keyboard(*this, "keyboard"),
m_i8251prn(*this, "i8251prn"),
m_printer(*this, "prtr"),
m_t_hblank(*this, "t_hblank"),
m_t_vblank(*this, "t_vblank"),
m_t_color(*this, "t_color"),
m_t_iface(*this, "t_iface"),
m_screen(*this, "screen")
sm7238_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_nvram(*this, "nvram")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
, m_pic8259(*this, "pic8259")
, m_i8251line(*this, "i8251line")
, m_rs232(*this, "rs232")
, m_i8251kbd(*this, "i8251kbd")
, m_keyboard(*this, "keyboard")
, m_i8251prn(*this, "i8251prn")
, m_printer(*this, "prtr")
, m_t_hblank(*this, "t_hblank")
, m_t_vblank(*this, "t_vblank")
, m_t_color(*this, "t_color")
, m_t_iface(*this, "t_iface")
, m_screen(*this, "screen")
{ }
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER( scanline_callback );
DECLARE_PALETTE_INIT(sm7238);
@ -86,6 +83,8 @@ public:
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_WRITE8_MEMBER(text_control_w);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof(screen_device &screen, bool state);
private:
uint32_t draw_scanline(uint16_t *p, uint16_t offset, uint8_t scanline);
@ -95,17 +94,18 @@ private:
void text_memory_clear();
void recompute_parameters();
const uint8_t *m_p_chargen;
struct {
uint8_t control;
uint8_t stride;
uint16_t ptr;
} m_video;
protected:
required_shared_ptr<uint8_t> m_p_videoram;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<nvram_device> m_nvram;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
required_device<pic8259_device> m_pic8259;
required_device<i8251_device> m_i8251line;
required_device<rs232_port_device> m_rs232;
@ -154,8 +154,6 @@ void sm7238_state::machine_reset()
void sm7238_state::video_start()
{
m_p_chargen = memregion("chargen")->base();
m_tmpclip = rectangle(0, KSM_DISP_HORZ-1, 0, KSM_DISP_VERT-1);
m_tmpbmp.allocate(KSM_DISP_HORZ, KSM_DISP_VERT);
}

View File

@ -80,7 +80,6 @@ private:
uint8_t m_4c;
uint8_t m_4e;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<pit8253_device> m_pit;
required_device<i8257_device> m_dma;
@ -382,10 +381,6 @@ void unior_state::machine_reset()
m_maincpu->set_state_int(I8085_PC, 0xF800);
}
void unior_state::video_start()
{
}
static MACHINE_CONFIG_START( unior, unior_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",I8080, XTAL_20MHz / 9)

View File

@ -28,7 +28,6 @@ public:
private:
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
};
@ -63,10 +62,6 @@ PALETTE_INIT_MEMBER( unistar_state, unistar )
palette.set_pen_color(2, 0, 128, 0 ); /* Dimmed */
}
void unistar_state::video_start()
{
}
uint32_t unistar_state::screen_update_unistar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;

View File

@ -37,7 +37,6 @@ public:
private:
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
@ -64,10 +63,6 @@ void vta2000_state::machine_reset()
{
}
void vta2000_state::video_start()
{
}
uint32_t vta2000_state::screen_update_vta2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
/* Cursor is missing. */
{

View File

@ -79,7 +79,6 @@ private:
uint8_t m_keyboard_line;
bool m_keyboard_part;
virtual void machine_reset() override;
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
required_shared_ptr<uint8_t> m_p_videoram;
@ -223,10 +222,6 @@ static INPUT_PORTS_START( z1013 )
INPUT_PORTS_END
void z1013_state::video_start()
{
}
uint32_t z1013_state::screen_update_z1013(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx;

View File

@ -65,7 +65,6 @@ private:
bool m_cassbit;
virtual void machine_reset() override;
//virtual void machine_start();
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
required_device<beep_device> m_beeper;
required_device<cassette_image_device> m_cass;
@ -129,10 +128,6 @@ void z9001_state::machine_reset()
m_maincpu->set_state_int(Z80_PC, 0xf000);
}
void z9001_state::video_start()
{
}
uint32_t z9001_state::screen_update_z9001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t y,ra,chr,gfx,col,fg,bg;

View File

@ -53,7 +53,6 @@ private:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
uint8_t m_term_data;
virtual void machine_reset() override;
virtual void video_start() override;
required_shared_ptr<uint8_t> m_p_videoram;
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
@ -207,10 +206,6 @@ void zrt80_state::machine_reset()
m_term_data = 0;
}
void zrt80_state::video_start()
{
}
MC6845_UPDATE_ROW( zrt80_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();

View File

@ -34,6 +34,9 @@ public:
: driver_device(mconfig, type, tag)
, m_palette(*this, "palette")
, m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen")
, m_p_videoram(*this, "vram")
, m_p_attribram(*this, "aram")
, m_ctc(*this, "ctc")
, m_dma(*this, "dma")
, m_pio1(*this, "pio1")
@ -91,8 +94,6 @@ public:
DECLARE_WRITE8_MEMBER(register_w);
MC6845_UPDATE_ROW(crtc_update_row);
MC6845_ON_UPDATE_ADDR_CHANGED(crtc_update_addr);
int m_centronics_busy;
required_device<palette_device> m_palette;
private:
uint8_t crt8002(uint8_t ac_ra, uint8_t ac_chr, uint8_t ac_attr, uint16_t ac_cnt, bool ac_curs);
@ -106,12 +107,14 @@ private:
uint8_t m_port35; // byte to be written to vram or aram
uint8_t m_video_index;
uint16_t m_cnt;
uint8_t *m_p_videoram;
uint8_t *m_p_attribram;
const uint8_t *m_p_chargen;
uint16_t m_alpha_address;
uint16_t m_graph_address;
int m_centronics_busy;
required_device<palette_device> m_palette;
required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen;
required_region_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_attribram;
required_device<z80ctc_device> m_ctc;
required_device<z80dma_device> m_dma;
required_device<z80pio_device> m_pio1;

View File

@ -35,7 +35,8 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, Z80_TAG)
, m_p_videoram(*this, "videoram")
, m_p_ram(*this, "p_ram")
, m_p_ram(*this, "ram")
, m_p_chargen(*this, "chargen")
{ }
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@ -46,13 +47,12 @@ public:
DECLARE_READ8_MEMBER(ff_r);
private:
required_device<cpu_device> m_maincpu;
uint8_t m_term_data;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram;
required_shared_ptr<uint8_t> m_p_ram;
const uint8_t *m_p_chargen;
virtual void machine_reset() override;
virtual void video_start() override;
required_region_ptr<u8> m_p_chargen;
};
#endif