Previous 199869 Revisions Next

r23685 Thursday 13th June, 2013 at 20:07:18 UTC by smf
ata flash device derives from ide hdd device and adds pccard interface, instead of using an ide controller. [smf]
[src/emu/machine]ataflash.c ataflash.h idectrl.c idectrl.h idehd.c idehd.h
[src/mame/drivers]taitogn.c

trunk/src/mame/drivers/taitogn.c
r23684r23685
795795ROM_START(raycris)
796796   TAITOGNET_BIOS
797797
798   DISK_REGION( "pccard:ataflash:card:0:hdd" )
798   DISK_REGION( "pccard:ataflash" )
799799   DISK_IMAGE( "raycris", 0, SHA1(015cb0e6c4421cc38809de28c4793b4491386aee))
800800ROM_END
801801
r23684r23685
803803ROM_START(gobyrc)
804804   TAITOGNET_BIOS
805805
806   DISK_REGION( "pccard:ataflash:card:0:hdd" )
806   DISK_REGION( "pccard:ataflash" )
807807   DISK_IMAGE( "gobyrc", 0, SHA1(0bee1f495fc8b033fd56aad9260ae94abb35eb58))
808808ROM_END
809809
810810ROM_START(rcdego)
811811   TAITOGNET_BIOS
812812
813   DISK_REGION( "pccard:ataflash:card:0:hdd" )
813   DISK_REGION( "pccard:ataflash" )
814814   DISK_IMAGE( "rcdego", 0, SHA1(9e177f2a3954cfea0c8c5a288e116324d10f5dd1))
815815ROM_END
816816
817817ROM_START(chaoshea)
818818   TAITOGNET_BIOS
819819
820   DISK_REGION( "pccard:ataflash:card:0:hdd" )
820   DISK_REGION( "pccard:ataflash" )
821821   DISK_IMAGE( "chaosheat", 0, SHA1(c13b7d7025eee05f1f696d108801c7bafb3f1356))
822822ROM_END
823823
824824ROM_START(chaosheaj)
825825   TAITOGNET_BIOS
826826
827   DISK_REGION( "pccard:ataflash:card:0:hdd" )
827   DISK_REGION( "pccard:ataflash" )
828828   DISK_IMAGE( "chaosheatj", 0, SHA1(2f211ac08675ea8ec33c7659a13951db94eaa627))
829829ROM_END
830830
r23684r23685
832832ROM_START(flipmaze)
833833   TAITOGNET_BIOS
834834
835   DISK_REGION( "pccard:ataflash:card:0:hdd" )
835   DISK_REGION( "pccard:ataflash" )
836836   DISK_IMAGE( "flipmaze", 0, SHA1(423b6c06f4f2d9a608ce20b61a3ac11687d22c40) )
837837ROM_END
838838
r23684r23685
840840ROM_START(spuzbobl)
841841   TAITOGNET_BIOS
842842
843   DISK_REGION( "pccard:ataflash:card:0:hdd" )
843   DISK_REGION( "pccard:ataflash" )
844844   DISK_IMAGE( "spuzbobl", 0, SHA1(1b1c72fb7e5656021485fefaef8f2ba48e2b4ea8))
845845ROM_END
846846
847847ROM_START(spuzboblj)
848848   TAITOGNET_BIOS
849849
850   DISK_REGION( "pccard:ataflash:card:0:hdd" )
850   DISK_REGION( "pccard:ataflash" )
851851   DISK_IMAGE( "spuzbobj", 0, SHA1(dac433cf88543d2499bf797d7406b82ae4338726))
852852ROM_END
853853
854854ROM_START(soutenry)
855855   TAITOGNET_BIOS
856856
857   DISK_REGION( "pccard:ataflash:card:0:hdd" )
857   DISK_REGION( "pccard:ataflash" )
858858   DISK_IMAGE( "soutenry", 0, SHA1(9204d0be833d29f37b8cd3fbdf09da69b622254b))
859859ROM_END
860860
861861ROM_START(shanghss)
862862   TAITOGNET_BIOS
863863
864   DISK_REGION( "pccard:ataflash:card:0:hdd" )
864   DISK_REGION( "pccard:ataflash" )
865865   DISK_IMAGE( "shanghss", 0, SHA1(7964f71ec5c81d2120d83b63a82f97fbad5a8e6d))
866866ROM_END
867867
868868ROM_START(sianniv)
869869   TAITOGNET_BIOS
870870
871   DISK_REGION( "pccard:ataflash:card:0:hdd" )
871   DISK_REGION( "pccard:ataflash" )
872872   DISK_IMAGE( "sianniv", 0, SHA1(1e08b813190a9e1baf29bc16884172d6c8da7ae3))
873873ROM_END
874874
875875ROM_START(kollon)
876876   TAITOGNET_BIOS
877877
878   DISK_REGION( "pccard:ataflash:card:0:hdd" )
878   DISK_REGION( "pccard:ataflash" )
879879   DISK_IMAGE( "kollon", 0, SHA1(d8ea5b5b0ee99004b16ef89883e23de6c7ddd7ce))
880880ROM_END
881881
r23684r23685
883883   TAITOGNET_BIOS
884884   ROM_DEFAULT_BIOS( "v2" )
885885
886   DISK_REGION( "pccard:ataflash:card:0:hdd" )
886   DISK_REGION( "pccard:ataflash" )
887887   DISK_IMAGE( "kollonc", 0, SHA1(ce62181659701cfb8f7c564870ab902be4d8e060)) /* Original Taito Compact Flash version */
888888ROM_END
889889
890890ROM_START(shikigam)
891891   TAITOGNET_BIOS
892892
893   DISK_REGION( "pccard:ataflash:card:0:hdd" )
893   DISK_REGION( "pccard:ataflash" )
894894   DISK_IMAGE( "shikigam", 0, SHA1(fa49a0bc47f5cb7c30d7e49e2c3696b21bafb840))
895895ROM_END
896896
r23684r23685
900900ROM_START(otenamih)
901901   TAITOGNET_BIOS
902902
903   DISK_REGION( "pccard:ataflash:card:0:hdd" )
903   DISK_REGION( "pccard:ataflash" )
904904   DISK_IMAGE( "otenamih", 0, SHA1(b3babe3a1876c43745616ee1e7d87276ce7dad0b) )
905905ROM_END
906906
r23684r23685
908908ROM_START(psyvaria)
909909   TAITOGNET_BIOS
910910
911   DISK_REGION( "pccard:ataflash:card:0:hdd" )
911   DISK_REGION( "pccard:ataflash" )
912912   DISK_IMAGE( "psyvaria", 0,  SHA1(b981a42a10069322b77f7a268beae1d409b4156d))
913913ROM_END
914914
915915ROM_START(psyvarrv)
916916   TAITOGNET_BIOS
917917
918   DISK_REGION( "pccard:ataflash:card:0:hdd" )
918   DISK_REGION( "pccard:ataflash" )
919919   DISK_IMAGE( "psyvarrv", 0, SHA1(277c4f52502bcd7acc1889840962ec80d56465f3))
920920ROM_END
921921
922922ROM_START(zooo)
923923   TAITOGNET_BIOS
924924
925   DISK_REGION( "pccard:ataflash:card:0:hdd" )
925   DISK_REGION( "pccard:ataflash" )
926926   DISK_IMAGE( "zooo", 0, SHA1(e275b3141b2bc49142990e6b497a5394a314a30b))
927927ROM_END
928928
929929ROM_START(zokuoten)
930930   TAITOGNET_BIOS
931931
932   DISK_REGION( "pccard:ataflash:card:0:hdd" )
932   DISK_REGION( "pccard:ataflash" )
933933   DISK_IMAGE( "zokuoten", 0, SHA1(5ce13db00518f96af64935176c71ec68d2a51938))
934934ROM_END
935935
r23684r23685
937937   TAITOGNET_BIOS
938938   ROM_DEFAULT_BIOS( "v2" )
939939
940   DISK_REGION( "pccard:ataflash:card:0:hdd" )
940   DISK_REGION( "pccard:ataflash" )
941941   DISK_IMAGE( "otenamhf", 0, SHA1(5b15c33bf401e5546d78e905f538513d6ffcf562)) /* Original Taito Compact Flash version */
942942ROM_END
943943
r23684r23685
949949ROM_START(nightrai)
950950   TAITOGNET_BIOS
951951
952   DISK_REGION( "pccard:ataflash:card:0:hdd" )
952   DISK_REGION( "pccard:ataflash" )
953953   DISK_IMAGE( "nightrai", 0, SHA1(74d0458f851cbcf10453c5cc4c47bb4388244cdf))
954954ROM_END
955955
956956ROM_START(otenki)
957957   TAITOGNET_BIOS
958958
959   DISK_REGION( "pccard:ataflash:card:0:hdd" )
959   DISK_REGION( "pccard:ataflash" )
960960   DISK_IMAGE( "otenki", 0, SHA1(7e745ca4c4570215f452fd09cdd56a42c39caeba))
961961ROM_END
962962
r23684r23685
965965ROM_START(usagi)
966966   TAITOGNET_BIOS
967967
968   DISK_REGION( "pccard:ataflash:card:0:hdd" )
968   DISK_REGION( "pccard:ataflash" )
969969   DISK_IMAGE( "usagi", 0, SHA1(edf9dd271957f6cb06feed238ae21100514bef8e))
970970ROM_END
971971
972972ROM_START(mahjngoh)
973973   TAITOGNET_BIOS
974974
975   DISK_REGION( "pccard:ataflash:card:0:hdd" )
975   DISK_REGION( "pccard:ataflash" )
976976   DISK_IMAGE( "mahjngoh", 0, SHA1(3ef1110d15582d7c0187438d7ad61765dd121cff))
977977ROM_END
978978
979979ROM_START(shangtou)
980980   TAITOGNET_BIOS
981981
982   DISK_REGION( "pccard:ataflash:card:0:hdd" )
982   DISK_REGION( "pccard:ataflash" )
983983   DISK_IMAGE( "shanghaito", 0, SHA1(9901db5a9aae77e3af4157aa2c601eaab5b7ca85) )
984984ROM_END
985985
r23684r23685
989989ROM_START(xiistag)
990990   TAITOGNET_BIOS
991991
992   DISK_REGION( "pccard:ataflash:card:0:hdd" )
992   DISK_REGION( "pccard:ataflash" )
993993   DISK_IMAGE( "xiistag", 0, SHA1(586e37c8d926293b2bd928e5f0d693910cfb05a2))
994994ROM_END
995995
trunk/src/emu/machine/idehd.c
r23684r23685
7777//  ide_device_interface - constructor
7878//-------------------------------------------------
7979
80ide_device_interface::ide_device_interface(const machine_config &mconfig, device_t &device)
81   : device_slot_card_interface(mconfig, device),
80ide_device_interface::ide_device_interface(const machine_config &mconfig, device_t &device) :
8281   m_master_password(NULL),
8382   m_user_password(NULL),
84   m_irq_handler(*this),
85   m_dmarq_handler(*this)
83   m_csel(0),
84   m_dasp(0),
85   m_irq_handler(device),
86   m_dmarq_handler(device)
8687{
8788}
8889
r23684r23685
104105
105106ide_mass_storage_device::ide_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname, const char *source)
106107   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
107   ide_device_interface(mconfig, *this)
108   ide_device_interface(mconfig, *this),
109   device_slot_card_interface(mconfig, *this)
108110{
109111}
110112
r23684r23685
13181320{
13191321}
13201322
1321ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
1322      ide_mass_storage_device(mconfig, type, name, tag, owner, clock, shortname, source)
1323ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
1324   : ide_mass_storage_device(mconfig, type, name, tag, owner, clock, shortname, source)
13231325{
13241326}
13251327
trunk/src/emu/machine/idehd.h
r23684r23685
1919
2020// ======================> ide_device_interface
2121
22class ide_device_interface : public device_slot_card_interface
22class ide_device_interface
2323{
2424public:
2525   ide_device_interface(const machine_config &mconfig, device_t &device);
r23684r23685
6363};
6464
6565class ide_mass_storage_device : public device_t,
66   public ide_device_interface
66   public ide_device_interface,
67   public device_slot_card_interface
6768{
6869public:
6970   ide_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname = "", const char *source = __FILE__);
trunk/src/emu/machine/idectrl.c
r23684r23685
8585   return m_slot[_drive]->dev()->get_features();
8686}
8787
88void ide_controller_device::ide_set_gnet_readlock(int _drive, const UINT8 onoff)
89{
90   m_slot[_drive]->dev()->m_gnetreadlock = onoff;
91}
92
9388void ide_controller_device::ide_set_master_password(int _drive, const UINT8 *password)
9489{
9590   m_slot[_drive]->dev()->m_master_password = password;
trunk/src/emu/machine/idectrl.h
r23684r23685
8888   template<class _Object> static devcb2_base &set_dmarq_handler(device_t &device, _Object object) { return downcast<ide_controller_device &>(device).m_dmarq_handler.set_callback(object); }
8989
9090   UINT8 *ide_get_features(int drive);
91   void ide_set_gnet_readlock(int drive, const UINT8 onoff);
9291   void ide_set_master_password(int drive, const UINT8 *password);
9392   void ide_set_user_password(int drive, const UINT8 *password);
9493
trunk/src/emu/machine/ataflash.c
r23684r23685
33const device_type ATA_FLASH_PCCARD = &device_creator<ata_flash_pccard_device>;
44
55ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
6   device_t(mconfig, ATA_FLASH_PCCARD, "ATA Flash PCCARD", tag, owner, clock, "ataflash", __FILE__),
7   device_slot_card_interface(mconfig, *this),
8   m_card(*this,"card")
6   ide_hdd_device(mconfig, ATA_FLASH_PCCARD, "ATA Flash PCCARD", tag, owner, clock, "ataflash", __FILE__)
97{
108}
119
12static MACHINE_CONFIG_FRAGMENT( ata_flash_pccard_device )
13   MCFG_IDE_CONTROLLER_ADD( "card", ide_devices, "hdd", NULL, true)
14MACHINE_CONFIG_END
15
16machine_config_constructor ata_flash_pccard_device::device_mconfig_additions() const
10void ata_flash_pccard_device::device_reset()
1711{
18   return MACHINE_CONFIG_NAME( ata_flash_pccard_device );
19}
12   ide_hdd_device::device_reset();
2013
21void ata_flash_pccard_device::device_start()
22{
2314   UINT32 metalength;
2415   memset(m_cis, 0xff, 512);
2516
26   astring drive_tag;
27   subtag(drive_tag, "card:0:hdd");
17   if (m_handle != NULL)
18      m_handle->read_metadata(PCMCIA_CIS_METADATA_TAG, 0, m_cis, 512, metalength);
2819
29   m_chd_file = get_disk_handle(machine(), drive_tag);
30   if(m_chd_file != NULL)
31   {
32      m_chd_file->read_metadata(PCMCIA_CIS_METADATA_TAG, 0, m_cis, 512, metalength);
33   }
34}
35
36void ata_flash_pccard_device::device_reset_after_children()
37{
3820   m_locked = 0x1ff;
39   m_card->ide_set_gnet_readlock(0, 1);
21   m_gnetreadlock = 1;
4022}
4123
4224READ16_MEMBER( ata_flash_pccard_device::read_memory )
4325{
4426   if(offset <= 7)
4527   {
46      return m_card->read_cs0(space, offset, mem_mask);
28      return read_cs0(space, offset, mem_mask);
4729   }
4830   else if(offset <= 15)
4931   {
50      return m_card->read_cs1(space, offset & 7, mem_mask);
32      return read_cs1(space, offset & 7, mem_mask);
5133   }
5234   else
5335   {
r23684r23685
5941{
6042   if(offset <= 7)
6143   {
62      m_card->write_cs0(space, offset, data, mem_mask);
44      write_cs0(space, offset, data, mem_mask);
6345   }
6446   else if( offset <= 15)
6547   {
66      m_card->write_cs1(space, offset & 7, data, mem_mask);
48      write_cs1(space, offset & 7, data, mem_mask);
6749   }
6850}
6951
r23684r23685
9375
9476WRITE16_MEMBER( ata_flash_pccard_device::write_reg )
9577{
96   if(offset >= 0x280 && offset <= 0x288 && m_chd_file != NULL)
78   if(offset >= 0x280 && offset <= 0x288 && m_handle != NULL)
9779   {
98      dynamic_buffer key(m_chd_file->hunk_bytes());
99      m_chd_file->read_metadata(HARD_DISK_KEY_METADATA_TAG, 0, key);
80      dynamic_buffer key(m_handle->hunk_bytes());
81      m_handle->read_metadata(HARD_DISK_KEY_METADATA_TAG, 0, key);
10082
10183      UINT8 v = data;
10284      int pos = offset - 0x280;
r23684r23685
11395
11496      if (!m_locked)
11597      {
116         m_card->ide_set_gnet_readlock(0, 0);
98         m_gnetreadlock = 0;
11799      }
118100   }
119101}
trunk/src/emu/machine/ataflash.h
r23684r23685
88
99extern const device_type ATA_FLASH_PCCARD;
1010
11class ata_flash_pccard_device : public device_t,
12   public pccard_interface,
13   public device_slot_card_interface
11class ata_flash_pccard_device : public ide_hdd_device,
12   public pccard_interface
1413{
1514public:
1615   ata_flash_pccard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
r23684r23685
2221
2322protected:
2423   // device-level overrides
25   virtual void device_start();
26   virtual void device_reset_after_children();
27   virtual machine_config_constructor device_mconfig_additions() const;
24   virtual void device_reset();
2825
2926private:
30   chd_file *m_chd_file;
3127   unsigned char m_cis[512];
3228   int m_locked;
33   required_device<ide_controller_device> m_card;
3429};
3530
3631#endif

Previous 199869 Revisions Next


© 1997-2024 The MAME Team