trunk/src/emu/video/msm6255.c
| r23545 | r23546 | |
| 64 | 64 | |
| 65 | 65 | |
| 66 | 66 | //************************************************************************** |
| 67 | | // GLOBAL VARIABLES |
| 67 | // DEVICE DEFINITIONS |
| 68 | 68 | //************************************************************************** |
| 69 | 69 | |
| 70 | 70 | // device type definition |
| 71 | 71 | const device_type MSM6255 = &device_creator<msm6255_device>; |
| 72 | 72 | |
| 73 | // I/O map |
| 74 | DEVICE_ADDRESS_MAP_START( map, 8, msm6255_device ) |
| 75 | AM_RANGE(0x00, 0x00) AM_READWRITE(dr_r, dr_w) |
| 76 | AM_RANGE(0x01, 0x01) AM_READWRITE(ir_r, ir_w) |
| 77 | ADDRESS_MAP_END |
| 73 | 78 | |
| 74 | 79 | // default address map |
| 75 | 80 | static ADDRESS_MAP_START( msm6255, AS_0, 8, msm6255_device ) |
| r23545 | r23546 | |
| 183 | 188 | |
| 184 | 189 | |
| 185 | 190 | //------------------------------------------------- |
| 186 | | // read - register read |
| 191 | // ir_r - |
| 187 | 192 | //------------------------------------------------- |
| 188 | 193 | |
| 189 | | READ8_MEMBER( msm6255_device::read ) |
| 194 | READ8_MEMBER( msm6255_device::ir_r ) |
| 190 | 195 | { |
| 196 | return m_ir; |
| 197 | } |
| 198 | |
| 199 | |
| 200 | //------------------------------------------------- |
| 201 | // ir_w - |
| 202 | //------------------------------------------------- |
| 203 | |
| 204 | WRITE8_MEMBER( msm6255_device::ir_w ) |
| 205 | { |
| 206 | m_ir = data & 0x0f; |
| 207 | } |
| 208 | |
| 209 | |
| 210 | //------------------------------------------------- |
| 211 | // dr_r - |
| 212 | //------------------------------------------------- |
| 213 | |
| 214 | READ8_MEMBER( msm6255_device::dr_r ) |
| 215 | { |
| 191 | 216 | UINT8 data = 0; |
| 192 | 217 | |
| 193 | | if (offset & 0x01) |
| 218 | switch (m_ir) |
| 194 | 219 | { |
| 195 | | return m_ir; |
| 196 | | } |
| 197 | | else |
| 198 | | { |
| 199 | | switch (m_ir) |
| 200 | | { |
| 201 | | case REGISTER_MOR: |
| 202 | | break; // write-only |
| 220 | case REGISTER_MOR: |
| 221 | break; // write-only |
| 203 | 222 | |
| 204 | | case REGISTER_PR: |
| 205 | | data = m_pr; |
| 206 | | break; |
| 223 | case REGISTER_PR: |
| 224 | data = m_pr; |
| 225 | break; |
| 207 | 226 | |
| 208 | | case REGISTER_HNR: |
| 209 | | data = m_hnr; |
| 210 | | break; |
| 227 | case REGISTER_HNR: |
| 228 | data = m_hnr; |
| 229 | break; |
| 211 | 230 | |
| 212 | | case REGISTER_DVR: |
| 213 | | break; // write-only |
| 231 | case REGISTER_DVR: |
| 232 | break; // write-only |
| 214 | 233 | |
| 215 | | case REGISTER_CPR: |
| 216 | | data = m_cpr; |
| 217 | | break; |
| 234 | case REGISTER_CPR: |
| 235 | data = m_cpr; |
| 236 | break; |
| 218 | 237 | |
| 219 | | case REGISTER_SLR: |
| 220 | | data = m_slr; |
| 221 | | break; |
| 238 | case REGISTER_SLR: |
| 239 | data = m_slr; |
| 240 | break; |
| 222 | 241 | |
| 223 | | case REGISTER_SUR: |
| 224 | | data = m_sur; |
| 225 | | break; |
| 242 | case REGISTER_SUR: |
| 243 | data = m_sur; |
| 244 | break; |
| 226 | 245 | |
| 227 | | case REGISTER_CLR: |
| 228 | | data = m_clr; |
| 229 | | break; |
| 246 | case REGISTER_CLR: |
| 247 | data = m_clr; |
| 248 | break; |
| 230 | 249 | |
| 231 | | case REGISTER_CUR: |
| 232 | | data = m_cur; |
| 233 | | break; |
| 234 | | } |
| 250 | case REGISTER_CUR: |
| 251 | data = m_cur; |
| 252 | break; |
| 235 | 253 | } |
| 236 | 254 | |
| 237 | 255 | return data; |
| r23545 | r23546 | |
| 239 | 257 | |
| 240 | 258 | |
| 241 | 259 | //------------------------------------------------- |
| 242 | | // write - register write |
| 260 | // dr_w - |
| 243 | 261 | //------------------------------------------------- |
| 244 | 262 | |
| 245 | | WRITE8_MEMBER( msm6255_device::write ) |
| 263 | WRITE8_MEMBER( msm6255_device::dr_w ) |
| 246 | 264 | { |
| 247 | | if (offset & 0x01) |
| 265 | switch (m_ir) |
| 248 | 266 | { |
| 249 | | m_ir = data & 0x0f; |
| 250 | | } |
| 251 | | else |
| 252 | | { |
| 253 | | switch (m_ir) |
| 254 | | { |
| 255 | | case REGISTER_MOR: |
| 256 | | m_mor = data & 0x7f; |
| 257 | | break; |
| 267 | case REGISTER_MOR: |
| 268 | m_mor = data & 0x7f; |
| 269 | break; |
| 258 | 270 | |
| 259 | | case REGISTER_PR: |
| 260 | | m_pr = data & 0xf7; |
| 261 | | break; |
| 271 | case REGISTER_PR: |
| 272 | m_pr = data & 0xf7; |
| 273 | break; |
| 262 | 274 | |
| 263 | | case REGISTER_HNR: |
| 264 | | m_hnr = data & 0x7f; |
| 265 | | break; |
| 275 | case REGISTER_HNR: |
| 276 | m_hnr = data & 0x7f; |
| 277 | break; |
| 266 | 278 | |
| 267 | | case REGISTER_DVR: |
| 268 | | m_dvr = data; |
| 269 | | break; |
| 279 | case REGISTER_DVR: |
| 280 | m_dvr = data; |
| 281 | break; |
| 270 | 282 | |
| 271 | | case REGISTER_CPR: |
| 272 | | m_cpr = data; |
| 273 | | break; |
| 283 | case REGISTER_CPR: |
| 284 | m_cpr = data; |
| 285 | break; |
| 274 | 286 | |
| 275 | | case REGISTER_SLR: |
| 276 | | m_slr = data; |
| 277 | | break; |
| 287 | case REGISTER_SLR: |
| 288 | m_slr = data; |
| 289 | break; |
| 278 | 290 | |
| 279 | | case REGISTER_SUR: |
| 280 | | m_sur = data; |
| 281 | | break; |
| 291 | case REGISTER_SUR: |
| 292 | m_sur = data; |
| 293 | break; |
| 282 | 294 | |
| 283 | | case REGISTER_CLR: |
| 284 | | m_clr = data; |
| 285 | | break; |
| 295 | case REGISTER_CLR: |
| 296 | m_clr = data; |
| 297 | break; |
| 286 | 298 | |
| 287 | | case REGISTER_CUR: |
| 288 | | m_cur = data; |
| 289 | | break; |
| 290 | | } |
| 299 | case REGISTER_CUR: |
| 300 | m_cur = data; |
| 301 | break; |
| 291 | 302 | } |
| 292 | 303 | } |
| 293 | 304 | |
trunk/src/emu/video/msm6255.h
| r23545 | r23546 | |
| 43 | 43 | // inline configuration helpers |
| 44 | 44 | static void static_set_config(device_t &device, int char_clock, const char *screen_tag); |
| 45 | 45 | |
| 46 | | DECLARE_READ8_MEMBER( read ); |
| 47 | | DECLARE_WRITE8_MEMBER( write ); |
| 46 | virtual DECLARE_ADDRESS_MAP(map, 8); |
| 48 | 47 | |
| 48 | DECLARE_READ8_MEMBER( ir_r ); |
| 49 | DECLARE_WRITE8_MEMBER( ir_w ); |
| 50 | |
| 51 | DECLARE_READ8_MEMBER( dr_r ); |
| 52 | DECLARE_WRITE8_MEMBER( dr_w ); |
| 53 | |
| 49 | 54 | UINT32 screen_update(screen_device &device, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 50 | 55 | |
| 51 | 56 | protected: |
trunk/src/mess/drivers/bw2.c
| r23545 | r23546 | |
| 212 | 212 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 213 | 213 | AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) |
| 214 | 214 | AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write) |
| 215 | | AM_RANGE(0x20, 0x21) AM_DEVREADWRITE(MSM6255_TAG, msm6255_device, read, write) |
| 215 | AM_RANGE(0x20, 0x21) AM_DEVICE(MSM6255_TAG, msm6255_device, map) |
| 216 | 216 | AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, slot_r, slot_w) |
| 217 | 217 | AM_RANGE(0x40, 0x40) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) |
| 218 | 218 | AM_RANGE(0x41, 0x41) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) |