diff options
Diffstat (limited to 'src/devices/machine/com8116.cpp')
-rw-r--r-- | src/devices/machine/com8116.cpp | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/src/devices/machine/com8116.cpp b/src/devices/machine/com8116.cpp index 06ebfb2f5b0..0a3da24042e 100644 --- a/src/devices/machine/com8116.cpp +++ b/src/devices/machine/com8116.cpp @@ -25,7 +25,6 @@ DEFINE_DEVICE_TYPE(COM8116, com8116_device, "com8116", "COM8116 Dual BRG") DEFINE_DEVICE_TYPE(COM8116_003, com8116_003_device, "com8116_003", "COM8116-003 Dual BRG") DEFINE_DEVICE_TYPE(COM5016_5, com5016_5_device, "com5016_5", "COM5016-5 Dual BRG") DEFINE_DEVICE_TYPE(COM5016_013, com5016_013_device, "com5016_013", "COM5016-013 Dual BRG") -DEFINE_DEVICE_TYPE(COM8116_020, com8116_020_device, "com8116_020", "COM8116-020 Dual BRG") // Parts with T after the number do not have an internal oscillator and require an external clock source // The SMC/COM 5xxx parts are all dual 5v/12v parts, while the 8xxx parts are 5v only @@ -41,6 +40,7 @@ const int com8116_device::divisors_16X_5_0688MHz[16] = // SMC/COM8116-003 and WD WD-1943-03 // from http://www.vintagecomputer.net/fjkraan/comp/divcomp/doc/SMC_BaudGen.pdf page 283 (pdf page 20) // baud rates are 50, 75, 110, 134.5, 150, 200, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 9600, 19200 +// SMC/COM8116T-020 should have similar output rates, but clock is unknown and probably different const int com8116_device::divisors_16X_6_01835MHz[16] = { 7523, 5015, 3420, 2797, 2508, 1881, 1254, 627, 313, 209, 188, 157, 104, 78, 39, 20 }; @@ -63,12 +63,6 @@ const int com8116_device::divisors_32X_5_0688MHz[16] = const int com8116_device::divisors_16X_2_7648MHz[16] = { 3456, 2304, 1571, 1285, 1152, 864, 576, 288, 144, 96, 86, 72, 48, 36, 18, 9 }; -// SMC/COM8116T-020 (corrected from http://bitsavers.org/pdf/visualTechnology/Visual_100/MM-100-001-0A_Visual_100_and_Visual_400_Video_Display_Terminal_Maintenance_Manual_Sep1980.pdf (pdf page 99)) -// (75, 134.5 and 2000 baud divisors given as 1,807, 856 and 57, which do not match stated actual frequencies) -// baud rates are 50, 75, 110, 134.5, 150, 200, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 9600, 19200 -const int com8116_device::divisors_16X_1_8432MHz[16] = - { 2304, 1536, 1047, 857, 768, 576, 384, 192, 96, 64, 58, 48, 32, 24, 12, 6 }; - // SMC/COM5026(T)-030 (non-standard serial rates, from http://bitsavers.informatik.uni-stuttgart.de/pdf/standardMicrosystems/_dataBooks/1979_StandardMicrosystems.pdf page 135) const int com8116_device::divisors_16X_5_0688MHz_030[16] = { 731, 733, 735, 737, 741, 743, 745, 751, 6970, 5569, 5433, 4752, 4269, 1920, 1584, 301 }; @@ -126,11 +120,6 @@ com5016_013_device::com5016_013_device(const machine_config &mconfig, const char { } -com8116_020_device::com8116_020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - com8116_device(mconfig, COM8116_020, tag, owner, clock, divisors_16X_1_8432MHz) -{ -} - //------------------------------------------------- // device_start - device-specific startup @@ -204,7 +193,7 @@ void com8116_device::device_timer(emu_timer &timer, device_timer_id id, int para // str_w - //------------------------------------------------- -void com8116_device::str_w(uint8_t data) +void com8116_device::write_str(uint8_t data) { int fr_divider = data & 0x0f; int fr_clock = clock() / m_divisors[fr_divider]; @@ -219,7 +208,7 @@ void com8116_device::str_w(uint8_t data) // stt_w - //------------------------------------------------- -void com8116_device::stt_w(uint8_t data) +void com8116_device::write_stt(uint8_t data) { int ft_divider = data & 0x0f; int ft_clock = clock() / m_divisors[ft_divider]; @@ -234,10 +223,10 @@ void com8116_device::stt_w(uint8_t data) // str_stt_w - //------------------------------------------------- -void com8116_device::str_stt_w(uint8_t data) +WRITE8_MEMBER(com8116_device::str_stt_w) { - str_w(data >> 4); - stt_w(data & 0x0f); + write_str(data >> 4); + write_stt(data & 0x0f); } @@ -245,8 +234,8 @@ void com8116_device::str_stt_w(uint8_t data) // stt_str_w - //------------------------------------------------- -void com8116_device::stt_str_w(uint8_t data) +WRITE8_MEMBER(com8116_device::stt_str_w) { - stt_w(data >> 4); - str_w(data & 0x0f); + write_stt(data >> 4); + write_str(data & 0x0f); } |