Previous 199869 Revisions Next

r18447 Thursday 11th October, 2012 at 14:19:24 UTC by Miodrag Milanović
added missing parts to devcb (no whatsnew)
[src/emu]devcb.c

trunk/src/emu/devcb.c
r18446r18447
927927}
928928
929929//**************************************************************************
930//  DEVCB RESOLVED READ32
931//**************************************************************************
932
933//-------------------------------------------------
934//  devcb_resolved_read32 - empty constructor
935//-------------------------------------------------
936
937devcb_resolved_read32::devcb_resolved_read32()
938{
939   m_object.port = NULL;
940   m_helper.read_line = NULL;
941}
942
943
944//-------------------------------------------------
945//  resolve - resolve to a delegate from a static
946//  structure definition
947//-------------------------------------------------
948
949void devcb_resolved_read32::resolve(const devcb_read32 &desc, device_t &device)
950{
951   switch (desc.type)
952   {
953      default:
954      case DEVCB_TYPE_NULL:
955         m_object.constant = 0;
956         m_helper.null_indicator = &s_null;
957         *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_constant, "(null)", this);
958         break;
959
960      case DEVCB_TYPE_IOPORT:
961         m_object.port = devcb_resolver::resolve_port(desc.tag, device);
962         *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_port, desc.tag, this);
963         break;
964
965      case DEVCB_TYPE_DEVICE:
966         m_object.device = devcb_resolver::resolve_device(desc.index, desc.tag, device);
967         if (desc.readdevice != NULL)
968         {
969            m_helper.read32_device = desc.readdevice;
970            *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_read32, desc.name, this);
971         }
972         else
973         {
974            m_helper.read_line = desc.readline;
975            *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_readline, desc.name, this);
976         }
977         break;
978
979      case DEVCB_TYPE_LEGACY_SPACE:
980         m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device);
981         *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(desc.readspace, desc.name, m_object.space);
982         break;
983
984      case DEVCB_TYPE_CONSTANT:
985         m_object.constant = desc.index;
986         *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_constant, "constant", this);
987         break;
988
989      case DEVCB_TYPE_UNMAP:
990         m_helper.null_indicator = &s_null;
991         m_object.device = &device;
992         *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_unmap, "unmap", this);
993         break;
994   }
995}
996
997
998//-------------------------------------------------
999//  from_port - helper to convert from an I/O port
1000//  value to a 32-bit value
1001//-------------------------------------------------
1002
1003UINT32 devcb_resolved_read32::from_port(offs_t offset, UINT32 mask)
1004{
1005   return m_object.port->read();
1006}
1007
1008
1009//-------------------------------------------------
1010//  from_read32 - helper to convert from a device
1011//  line read value to a 32-bit value
1012//-------------------------------------------------
1013
1014UINT32 devcb_resolved_read32::from_read32(offs_t offset, UINT32 mask)
1015{
1016   return (*m_helper.read32_device)(m_object.device, m_object.device->machine().driver_data()->generic_space(), offset, mask);
1017}
1018
1019
1020//-------------------------------------------------
1021//  from_read32 - helper to convert from a device
1022//  line read value to a 32-bit value
1023//-------------------------------------------------
1024
1025UINT32 devcb_resolved_read32::from_readline(offs_t offset, UINT32 mask)
1026{
1027   return (*m_helper.read_line)(m_object.device);
1028}
1029
1030
1031//-------------------------------------------------
1032//  from_constant - helper to convert from a
1033//  constant value to a 32-bit value
1034//-------------------------------------------------
1035
1036UINT32 devcb_resolved_read32::from_constant(offs_t offset, UINT32 mask)
1037{
1038   return m_object.constant;
1039}
1040
1041//-------------------------------------------------
1042//  from_constant - helper to convert from a
1043//  unmap value to a 32-bit value
1044//-------------------------------------------------
1045
1046UINT32 devcb_resolved_read32::from_unmap(offs_t offset, UINT32 mem_mask)
1047{
1048   logerror("%s: unmapped devcb read\n",
1049               m_object.device->tag());
1050   return 0;
1051}
1052
1053//**************************************************************************
9301054//  DEVCB RESOLVED WRITE32
9311055//**************************************************************************
9321056
r18446r18447
10601184}
10611185
10621186//**************************************************************************
1187//  DEVCB RESOLVED READ64
1188//**************************************************************************
1189
1190//-------------------------------------------------
1191//  devcb_resolved_read64 - empty constructor
1192//-------------------------------------------------
1193
1194devcb_resolved_read64::devcb_resolved_read64()
1195{
1196   m_object.port = NULL;
1197   m_helper.read_line = NULL;
1198}
1199
1200
1201//-------------------------------------------------
1202//  resolve - resolve to a delegate from a static
1203//  structure definition
1204//-------------------------------------------------
1205
1206void devcb_resolved_read64::resolve(const devcb_read64 &desc, device_t &device)
1207{
1208   switch (desc.type)
1209   {
1210      default:
1211      case DEVCB_TYPE_NULL:
1212         m_object.constant = 0;
1213         m_helper.null_indicator = &s_null;
1214         *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_constant, "(null)", this);
1215         break;
1216
1217      case DEVCB_TYPE_IOPORT:
1218         m_object.port = devcb_resolver::resolve_port(desc.tag, device);
1219         *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_port, desc.tag, this);
1220         break;
1221
1222      case DEVCB_TYPE_DEVICE:
1223         m_object.device = devcb_resolver::resolve_device(desc.index, desc.tag, device);
1224         if (desc.readdevice != NULL)
1225         {
1226            m_helper.read64_device = desc.readdevice;
1227            *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_read64, desc.name, this);
1228         }
1229         else
1230         {
1231            m_helper.read_line = desc.readline;
1232            *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_readline, desc.name, this);
1233         }
1234         break;
1235
1236      case DEVCB_TYPE_LEGACY_SPACE:
1237         m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device);
1238         *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(desc.readspace, desc.name, m_object.space);
1239         break;
1240
1241      case DEVCB_TYPE_CONSTANT:
1242         m_object.constant = desc.index;
1243         *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_constant, "constant", this);
1244         break;
1245
1246      case DEVCB_TYPE_UNMAP:
1247         m_helper.null_indicator = &s_null;
1248         m_object.device = &device;
1249         *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_unmap, "unmap", this);
1250         break;
1251   }
1252}
1253
1254
1255//-------------------------------------------------
1256//  from_port - helper to convert from an I/O port
1257//  value to a 64-bit value
1258//-------------------------------------------------
1259
1260UINT64 devcb_resolved_read64::from_port(offs_t offset, UINT64 mask)
1261{
1262   return m_object.port->read();
1263}
1264
1265
1266//-------------------------------------------------
1267//  from_read64 - helper to convert from a device
1268//  line read value to a 64-bit value
1269//-------------------------------------------------
1270
1271UINT64 devcb_resolved_read64::from_read64(offs_t offset, UINT64 mask)
1272{
1273   return (*m_helper.read64_device)(m_object.device, m_object.device->machine().driver_data()->generic_space(), offset, mask);
1274}
1275
1276
1277//-------------------------------------------------
1278//  from_read64 - helper to convert from a device
1279//  line read value to a 64-bit value
1280//-------------------------------------------------
1281
1282UINT64 devcb_resolved_read64::from_readline(offs_t offset, UINT64 mask)
1283{
1284   return (*m_helper.read_line)(m_object.device);
1285}
1286
1287
1288//-------------------------------------------------
1289//  from_constant - helper to convert from a
1290//  constant value to a 64-bit value
1291//-------------------------------------------------
1292
1293UINT64 devcb_resolved_read64::from_constant(offs_t offset, UINT64 mask)
1294{
1295   return m_object.constant;
1296}
1297
1298//-------------------------------------------------
1299//  from_constant - helper to convert from a
1300//  unmap value to a 64-bit value
1301//-------------------------------------------------
1302
1303UINT64 devcb_resolved_read64::from_unmap(offs_t offset, UINT64 mem_mask)
1304{
1305   logerror("%s: unmapped devcb read\n",
1306               m_object.device->tag());
1307   return 0;
1308}
1309
1310//**************************************************************************
10631311//  DEVCB RESOLVED WRITE64
10641312//**************************************************************************
10651313

Previous 199869 Revisions Next


© 1997-2024 The MAME Team