trunk/src/emu/machine/tmp68301.c
| r26427 | r26428 | |
| 6 | 6 | 3 timers, address decoder, wait generator, interrupt controller, |
| 7 | 7 | all integrated in a single chip. |
| 8 | 8 | |
| 9 | TODO: |
| 10 | - Interrupt generation: handle pending / in-service mechanisms |
| 11 | - Parallel port: handle timing latency |
| 12 | - Serial port: not done at all |
| 13 | - (and many other things) |
| 14 | |
| 9 | 15 | ***************************************************************************/ |
| 10 | 16 | |
| 11 | 17 | #include "emu.h" |
| r26427 | r26428 | |
| 19 | 25 | AM_RANGE(0x098,0x099) AM_READWRITE(iisr_r,iisr_w) |
| 20 | 26 | |
| 21 | 27 | /* Parallel Port */ |
| 28 | AM_RANGE(0x100,0x101) AM_READWRITE(pdir_r,pdir_w) |
| 22 | 29 | AM_RANGE(0x10a,0x10b) AM_READWRITE(pdr_r,pdr_w) |
| 23 | 30 | |
| 24 | 31 | /* Serial Port */ |
| r26427 | r26428 | |
| 65 | 72 | m_scr &= 0xa1; |
| 66 | 73 | } |
| 67 | 74 | |
| 68 | | /* TODO: bit direction */ |
| 75 | /* Parallel direction: 1 = output, 0 = input */ |
| 76 | READ16_MEMBER(tmp68301_device::pdir_r) |
| 77 | { |
| 78 | return m_pdir; |
| 79 | } |
| 80 | |
| 81 | WRITE16_MEMBER(tmp68301_device::pdir_w) |
| 82 | { |
| 83 | m_pdir = data; |
| 84 | } |
| 85 | |
| 69 | 86 | READ16_MEMBER(tmp68301_device::pdr_r) |
| 70 | 87 | { |
| 71 | | return m_in_parallel_func(0); |
| 88 | return m_in_parallel_func(0) & ~m_pdir; |
| 72 | 89 | } |
| 73 | 90 | |
| 74 | 91 | WRITE16_MEMBER(tmp68301_device::pdr_w) |
| 75 | 92 | { |
| 76 | | m_out_parallel_func(0,data); |
| 93 | m_out_parallel_func(0,data & m_pdir); |
| 77 | 94 | } |
| 78 | 95 | |
| 79 | 96 | |