Previous 199869 Revisions Next

r24763 Tuesday 6th August, 2013 at 00:10:29 UTC by Angelo Salese
Mapped something out for IDE, still not quite right
[hash]pc98.xml
[src/mess/drivers]pc9801.c

trunk/src/mess/drivers/pc9801.c
r24762r24763
378378#include "machine/pc9801_cbus.h"
379379#include "machine/pc9801_kbd.h"
380380
381#include "machine/idectrl.h"
381382
383
382384#define UPD1990A_TAG "upd1990a"
383385#define UPD8251_TAG  "upd8251"
384386#define SASIBUS_TAG  "sasi"
r24762r24763
400402      m_hgdc1(*this, "upd7220_chr"),
401403      m_hgdc2(*this, "upd7220_btm"),
402404      m_sasibus(*this, SASIBUS_TAG ":host"),
405      m_ide(*this, "ide"),
403406      m_video_ram_1(*this, "video_ram_1"),
404407      m_video_ram_2(*this, "video_ram_2"),
405408      m_beeper(*this, "beeper"),
r24762r24763
417420   required_device<upd7220_device> m_hgdc1;
418421   required_device<upd7220_device> m_hgdc2;
419422   optional_device<scsicb_device> m_sasibus;
423   optional_device<ide_controller_device> m_ide;
420424   required_shared_ptr<UINT8> m_video_ram_1;
421425   required_shared_ptr<UINT8> m_video_ram_2;
422426   required_device<beep_device> m_beeper;
r24762r24763
582586   DECLARE_WRITE8_MEMBER(pic_w);
583587
584588   DECLARE_READ8_MEMBER(pc9801rs_ide_io_0_r);
585   DECLARE_READ8_MEMBER(pc9801rs_ide_io_1_r);
586   DECLARE_READ8_MEMBER(pc9801rs_ide_io_2_r);
589   DECLARE_READ16_MEMBER(pc9801rs_ide_io_1_r);
590   DECLARE_READ16_MEMBER(pc9801rs_ide_io_2_r);
587591   DECLARE_WRITE8_MEMBER(pc9801rs_ide_io_0_w);
588   DECLARE_WRITE8_MEMBER(pc9801rs_ide_io_1_w);
589   DECLARE_WRITE8_MEMBER(pc9801rs_ide_io_2_w);
592   DECLARE_WRITE16_MEMBER(pc9801rs_ide_io_1_w);
593   DECLARE_WRITE16_MEMBER(pc9801rs_ide_io_2_w);
590594
591595   DECLARE_READ8_MEMBER(sdip_0_r);
592596   DECLARE_READ8_MEMBER(sdip_1_r);
r24762r24763
22302234
22312235READ8_MEMBER(pc9801_state::pc9801rs_ide_io_0_r)
22322236{
2237   printf("IDE r %02x\n",offset);
22332238   return 0;
22342239}
22352240
22362241WRITE8_MEMBER(pc9801_state::pc9801rs_ide_io_0_w)
22372242{
2243   /*
2244   [0x430]
2245   [Read/write]
2246      bit 7-0: unknown
2247      00 h = IDE Bank # 1
2248      01 h = IDE Bank # 2
2249
2250   [0x432]
2251      bit 7-0: Bank select
2252      80 h = readout for dummy (only [WRITE])
2253      00 h = IDE Bank # 1 choice
2254      01 h = IDE Bank # 2 selection
2255   */
2256
2257   printf("IDE w %02x %02x\n",offset,data);
2258
22382259   // ...
22392260}
22402261
2241READ8_MEMBER(pc9801_state::pc9801rs_ide_io_1_r)
2262/* TODO: is mapping correct? */
2263READ16_MEMBER(pc9801_state::pc9801rs_ide_io_1_r)
22422264{
2243   if(offset == 0xe/2)
2244      return 0x50;
2245
2246   return 0xff;
2265   return m_ide->read_cs0(space, offset >> 1, offset & 1 ? 0xff00 : 0x00ff);
22472266}
22482267
2249WRITE8_MEMBER(pc9801_state::pc9801rs_ide_io_1_w)
2268WRITE16_MEMBER(pc9801_state::pc9801rs_ide_io_1_w)
22502269{
2251   // ...
2270   m_ide->write_cs0(space, offset >> 1, offset & 1 ? 0xff00 : 0x00ff);
22522271}
22532272
2254READ8_MEMBER(pc9801_state::pc9801rs_ide_io_2_r)
2273READ16_MEMBER(pc9801_state::pc9801rs_ide_io_2_r)
22552274{
2256   return 0x50; // status
2275   return m_ide->read_cs1(space, ((offset+6) >> 1), offset & 1 ? 0xff00 : 0x00ff);
22572276}
22582277
2259WRITE8_MEMBER(pc9801_state::pc9801rs_ide_io_2_w)
2278WRITE16_MEMBER(pc9801_state::pc9801rs_ide_io_2_w)
22602279{
2261   // ...
2280   m_ide->write_cs1(space, ((offset+6) >> 1), offset & 1 ? 0xff00 : 0x00ff);
22622281}
22632282
22642283static ADDRESS_MAP_START( pc9801rs_map, AS_PROGRAM, 32, pc9801_state )
r24762r24763
22902309   AM_RANGE(0x0438, 0x043b) AM_READWRITE8(pc9801rs_access_ctrl_r,pc9801rs_access_ctrl_w,0xffffffff)
22912310   AM_RANGE(0x043c, 0x043f) AM_WRITE8(pc9801rs_bank_w,    0xffffffff) //ROM/RAM bank
22922311
2293   AM_RANGE(0x0640, 0x064f) AM_READWRITE8(pc9801rs_ide_io_1_r,  pc9801rs_ide_io_1_w,0x00ff00ff)
2294   AM_RANGE(0x074c, 0x074f) AM_READWRITE8(pc9801rs_ide_io_2_r,  pc9801rs_ide_io_2_w,0x00ff00ff)
2312   AM_RANGE(0x0640, 0x064f) AM_READWRITE16(pc9801rs_ide_io_1_r,  pc9801rs_ide_io_1_w,0xffffffff)
2313   AM_RANGE(0x074c, 0x074f) AM_READWRITE16(pc9801rs_ide_io_2_r,  pc9801rs_ide_io_2_w,0xffffffff)
22952314
22962315   AM_RANGE(0x3fd8, 0x3fdf) AM_READWRITE8(pc9801rs_pit_mirror_r,        pc9801rs_pit_mirror_w,        0xffffffff) // <undefined> / pit mirror ports
22972316   AM_RANGE(0x7fd8, 0x7fdf) AM_READWRITE8(pc9801_mouse_r,     pc9801_mouse_w,     0xffffffff) // <undefined> / mouse ppi8255 ports
r24762r24763
26622681   AM_RANGE(0x0460, 0x0463) AM_READWRITE8(pc9821_window_bank_r,pc9821_window_bank_w, 0xffffffff)
26632682//  AM_RANGE(0x04a0, 0x04af) EGC
26642683//  AM_RANGE(0x04be, 0x04be) FDC "RPM" register
2665   AM_RANGE(0x0640, 0x064f) AM_READWRITE8(pc9801rs_ide_io_1_r,  pc9801rs_ide_io_1_w,0x00ff00ff) // IDE registers / <undefined>
2666   AM_RANGE(0x074c, 0x074f) AM_READWRITE8(pc9801rs_ide_io_2_r,  pc9801rs_ide_io_2_w,0x00ff00ff) // IDE status (r) - IDE control registers (w) / <undefined>
2684   AM_RANGE(0x0640, 0x064f) AM_READWRITE16(pc9801rs_ide_io_1_r,  pc9801rs_ide_io_1_w,0xffffffff) // IDE registers / <undefined>
2685   AM_RANGE(0x074c, 0x074f) AM_READWRITE16(pc9801rs_ide_io_2_r,  pc9801rs_ide_io_2_w,0xffffffff) // IDE status (r) - IDE control registers (w) / <undefined>
26672686//  AM_RANGE(0x08e0, 0x08ea) <undefined> / EMM SIO registers
26682687   AM_RANGE(0x09a0, 0x09a3) AM_READWRITE8(pc9821_ext2_video_ff_r, pc9821_ext2_video_ff_w, 0xffffffff) // GDC extended register r/w
26692688//  AM_RANGE(0x09a8, 0x09a8) GDC 31KHz register r/w
r24762r24763
29682987
296929888259 slave:
29702989ir0 printer
2971ir1
2990ir1 IDE?
29722991ir2 2dd floppy irq
29732992ir3 2hd floppy irq
29742993ir4 opn
r24762r24763
36173636   MCFG_SCSICB_IO_HANDLER(DEVWRITELINE(DEVICE_SELF_OWNER, pc9801_state, sasi_io_w))
36183637MACHINE_CONFIG_END
36193638
3639
3640static MACHINE_CONFIG_FRAGMENT( pc9801_ide )
3641   MCFG_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", NULL, false)
3642   MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir1_w))
3643MACHINE_CONFIG_END
3644
3645
36203646static MACHINE_CONFIG_START( pc9801, pc9801_state )
36213647   MCFG_CPU_ADD("maincpu", I8086, 5000000) //unknown clock
36223648   MCFG_CPU_PROGRAM_MAP(pc9801_map)
r24762r24763
37043730   MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf )
37053731   MCFG_FRAGMENT_ADD(pc9801_keyboard)
37063732   MCFG_FRAGMENT_ADD(pc9801_mouse)
3733   MCFG_FRAGMENT_ADD(pc9801_ide)
37073734   MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, NULL, NULL)
37083735   MCFG_I8251_ADD(UPD8251_TAG, pc9801_uart_interface)
37093736
r24762r24763
37813808   MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf )
37823809   MCFG_FRAGMENT_ADD(pc9801_keyboard)
37833810   MCFG_FRAGMENT_ADD(pc9801_mouse)
3811   MCFG_FRAGMENT_ADD(pc9801_ide)
37843812   MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, NULL, NULL)
37853813   MCFG_I8251_ADD(UPD8251_TAG, pc9801_uart_interface)
37863814
trunk/hash/pc98.xml
r24762r24763
1077010770      </part>
1077110771   </software>
1077210772
10773<!-- PC-9821 specific, requires CD-Rom too -->
10773<!-- PC-9821 specific, requires DOS and CD-ROM drive -->
1077410774   <software name="policena" supported="no">
1077510775      <description>Policenauts</description>
1077610776      <year>19??</year>
r24762r24763
1078010780            <rom name="system.fdi" size="1265664" crc="ef3e4428" sha1="246b674a48903ff7e3fe90292b1236d75a8d6c23" offset="0" />
1078110781         </dataarea>
1078210782      </part>
10783      <part name="flop2" interface="floppy_5_25">
10783      <part name="flop2" interface="floppy_3_5">
1078410784         <dataarea name="flop" size="1478656">
1078510785            <rom name="user.fdi" size="1478656" crc="fc89da2f" sha1="d782340f5523a405558365367494d73264255379" offset="0" status="baddump" />
1078610786         </dataarea>

Previous 199869 Revisions Next


© 1997-2024 The MAME Team