summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/busicom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/busicom.cpp')
-rw-r--r--src/mame/drivers/busicom.cpp78
1 files changed, 33 insertions, 45 deletions
diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp
index 1c591b1b20c..bfefd20163f 100644
--- a/src/mame/drivers/busicom.cpp
+++ b/src/mame/drivers/busicom.cpp
@@ -13,11 +13,13 @@
#include "screen.h"
+#include <algorithm>
-uint8_t busicom_state::get_bit_selected(uint32_t val,int num)
+
+uint8_t busicom_state::get_bit_selected(uint32_t val, int num)
{
- for(int i=0;i<num;i++)
- if (BIT(val,i)==0)
+ for (int i = 0; i < num; i++)
+ if (!BIT(val, i))
return i;
return 0;
@@ -31,9 +33,9 @@ uint8_t busicom_state::keyboard_r()
uint8_t busicom_state::printer_r()
{
uint8_t retVal = 0;
- if (m_drum_index==0)
+ if (m_drum_index == 0)
retVal |= 1;
- retVal |= ioport("PAPERADV")->read() & 1 ? 8 : 0;
+ retVal |= (ioport("PAPERADV")->read() & 1) ? 8 : 0;
return retVal;
}
@@ -41,66 +43,59 @@ uint8_t busicom_state::printer_r()
void busicom_state::shifter_w(uint8_t data)
{
// FIXME: detect edges, maybe make 4003 shifter a device
- if (BIT(data,0))
+ if (BIT(data, 0))
{
m_keyboard_shifter <<= 1;
- m_keyboard_shifter |= BIT(data,1);
+ m_keyboard_shifter |= BIT(data, 1);
}
- if (BIT(data,2))
+ if (BIT(data, 2))
{
m_printer_shifter <<= 1;
- m_printer_shifter |= BIT(data,1);
+ m_printer_shifter |= BIT(data, 1);
}
}
void busicom_state::printer_w(uint8_t data)
{
- u8 i,j;
- if (BIT(data,0))
+ if (BIT(data, 0))
{
- logerror("color : %02x %02x %d\n",BIT(data,0),data,m_drum_index);
+ logerror("color : %02x %02x %d\n", BIT(data, 0), data, m_drum_index);
m_printer_line_color[10] = 1;
}
- if (BIT(data,1))
+ if (BIT(data, 1))
{
- for(i=3;i<18;i++)
- if(BIT(m_printer_shifter,i))
- m_printer_line[10][i-3] = m_drum_index + 1;
+ for (u8 i = 3; i < 18; i++)
+ if (BIT(m_printer_shifter, i))
+ m_printer_line[10][i - 3] = m_drum_index + 1;
- if(BIT(m_printer_shifter,0))
+ if (BIT(m_printer_shifter, 0))
m_printer_line[10][15] = m_drum_index + 13 + 1;
- if(BIT(m_printer_shifter,1))
+ if (BIT(m_printer_shifter, 1))
m_printer_line[10][16] = m_drum_index + 26 + 1;
}
- if (BIT(data,3))
+ if (BIT(data, 3))
{
- for(j=0;j<10;j++)
- {
- for(i=0;i<17;i++)
- {
- m_printer_line[j][i] = m_printer_line[j+1][i];
- m_printer_line_color[j] = m_printer_line_color[j+1];
- }
- }
-
- for(i=0;i<17;i++)
- m_printer_line[10][i] = 0;
+ for (u8 j = 0; j < (ARRAY_LENGTH(m_printer_line) - 1); j++)
+ std::copy(std::begin(m_printer_line[j + 1]), std::end(m_printer_line[j + 1]), std::begin(m_printer_line[j]));
+ std::copy_n(&m_printer_line_color[1], ARRAY_LENGTH(m_printer_line_color) - 1, &m_printer_line_color[0]);
+ std::fill(std::begin(m_printer_line[10]), std::end(m_printer_line[10]), 0);
m_printer_line_color[10] = 0;
}
}
+
void busicom_state::status_w(uint8_t data)
{
#if 0
- uint8_t mem_lamp = BIT(data,0);
- uint8_t over_lamp = BIT(data,1);
- uint8_t minus_lamp = BIT(data,2);
+ uint8_t mem_lamp = BIT(data, 0);
+ uint8_t over_lamp = BIT(data, 1);
+ uint8_t minus_lamp = BIT(data, 2);
#endif
- //logerror("status %c %c %c\n",mem_lamp ? 'M':'x',over_lamp ? 'O':'x',minus_lamp ? '-':'x');
+ //logerror("status %c %c %c\n", mem_lamp ? 'M':'x', over_lamp ? 'O':'x', minus_lamp ? '-':'x');
}
void busicom_state::printer_ctrl_w(uint8_t data)
@@ -224,20 +219,13 @@ void busicom_state::machine_start()
void busicom_state::machine_reset()
{
- int i,j;
- m_drum_index =0;
+ m_drum_index = 0;
m_keyboard_shifter = 0;
m_printer_shifter = 0;
- for(i=0;i<17;i++)
- {
- for(j=0;j<11;j++)
- {
- m_printer_line[j][i] = 0;
- m_printer_line_color[j] = 0;
- }
- }
-
+ for (int i = 0; i < ARRAY_LENGTH(m_printer_line); i++)
+ std::fill(std::begin(m_printer_line[i]), std::end(m_printer_line[i]), 0);
+ std::fill(std::begin(m_printer_line_color), std::end(m_printer_line_color), 0);
}
void busicom_state::busicom(machine_config &config)