summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mips/o2dprintf.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mips/o2dprintf.hxx')
-rw-r--r--src/devices/cpu/mips/o2dprintf.hxx498
1 files changed, 249 insertions, 249 deletions
diff --git a/src/devices/cpu/mips/o2dprintf.hxx b/src/devices/cpu/mips/o2dprintf.hxx
index 6074c9d44dc..83915aed0b4 100644
--- a/src/devices/cpu/mips/o2dprintf.hxx
+++ b/src/devices/cpu/mips/o2dprintf.hxx
@@ -5,112 +5,112 @@ static char digit[] = "0123456789abcdef";
static void dprintdec(int64_t val, bool zeropad, int size)
{
- if (val == 0 && !zeropad)
- {
+ if (val == 0 && !zeropad)
+ {
printf("0");
return;
- }
+ }
- char dc[22];
- for (int rem = 0; rem < 22; rem++) dc[rem] = '0';
+ char dc[22];
+ for (int rem = 0; rem < 22; rem++) dc[rem] = '0';
- int ptr = 0;
- int64_t v = val;
- char c = ' ';
- if (val < 0)
- {
- c = '-';
- val = -val;
- }
+ int ptr = 0;
+ int64_t v = val;
+ char c = ' ';
+ if (val < 0)
+ {
+ c = '-';
+ val = -val;
+ }
int indx1 = 0;
- while (v > 10)
- {
- int64_t rem = v / 10;
- int indx = v - (rem * 10);
- dc[ptr] = digit[indx];
- v = rem;
- if (indx != 0)
- indx1 = ptr;
- ptr += 1;
- }
-
- dc[ptr] = digit[v];
-
- if (v != 0)
- indx1 = ptr; // the leading non zero digit.
-
- if (zeropad && size != 0)
- ptr = size;
- else
- ptr = indx1; // don't print leading 0s
-
- if (c == '-')
- printf("-");
-
- while (ptr >= 0)
- {
+ while (v > 10)
+ {
+ int64_t rem = v / 10;
+ int indx = v - (rem * 10);
+ dc[ptr] = digit[indx];
+ v = rem;
+ if (indx != 0)
+ indx1 = ptr;
+ ptr += 1;
+ }
+
+ dc[ptr] = digit[v];
+
+ if (v != 0)
+ indx1 = ptr; // the leading non zero digit.
+
+ if (zeropad && size != 0)
+ ptr = size;
+ else
+ ptr = indx1; // don't print leading 0s
+
+ if (c == '-')
+ printf("-");
+
+ while (ptr >= 0)
+ {
printf("%c", dc[ptr]);
- ptr -= 1;
- }
+ ptr -= 1;
+ }
}
static void dprintudec(uint64_t val, bool zeropad, int size)
{
- if (val == 0 && !zeropad)
- {
+ if (val == 0 && !zeropad)
+ {
printf("0");
return;
- }
-
- char dc[22];
- for (int rem = 0; rem < 22; dc[rem++] = '0');
-
- int ptr = 0;
- uint64_t v = val;
- int indx1 = 0;
- while (v > 10)
- {
- uint64_t rem = v / 10;
- int indx = v - (rem * 10);
- dc[ptr] = digit[indx];
- v = rem;
- if (indx != 0)
- indx1 = ptr;
- ptr += 1;
- }
-
- dc[ptr] = digit[v];
-
- if (v != 0)
- indx1 = ptr; // the leading non zero digit.
-
- if (zeropad && size != 0)
- ptr = size;
- else
- ptr = indx1; // don't print leading 0s
-
- while (ptr >= 0)
- {
- printf("%c", dc[ptr]);
- ptr -= 1;
- }
+ }
+
+ char dc[22];
+ for (int rem = 0; rem < 22; dc[rem++] = '0');
+
+ int ptr = 0;
+ uint64_t v = val;
+ int indx1 = 0;
+ while (v > 10)
+ {
+ uint64_t rem = v / 10;
+ int indx = v - (rem * 10);
+ dc[ptr] = digit[indx];
+ v = rem;
+ if (indx != 0)
+ indx1 = ptr;
+ ptr += 1;
+ }
+
+ dc[ptr] = digit[v];
+
+ if (v != 0)
+ indx1 = ptr; // the leading non zero digit.
+
+ if (zeropad && size != 0)
+ ptr = size;
+ else
+ ptr = indx1; // don't print leading 0s
+
+ while (ptr >= 0)
+ {
+ printf("%c", dc[ptr]);
+ ptr -= 1;
+ }
}
static void dprinthex(uint64_t val, bool zeropad, int pos)
{
- if (val == 0 && !zeropad)
- {
+ if (val == 0 && !zeropad)
+ {
printf("0");
return;
- }
+ }
- int pcount = pos;
- int indx = 0;
+ int pcount = pos;
+ int indx = 0;
char c;
- while (pcount >= 0)
- {
+ while (pcount >= 0)
+ {
if (pcount == 0)
c = digit[val & 0xf];
else
@@ -130,23 +130,23 @@ static void dprinthex(uint64_t val, bool zeropad, int pos)
printf("%c", c);
}
pcount -= 4;
- }
+ }
}
void dprintoct(uint64_t val, bool zeropad, int pos)
{
- if (val == 0 && !zeropad)
- {
+ if (val == 0 && !zeropad)
+ {
printf("0");
return;
- }
+ }
- int pcount = pos;
- int indx = 0;
+ int pcount = pos;
+ int indx = 0;
char c;
- while (pcount >= 0)
- {
+ while (pcount >= 0)
+ {
if (pcount == 0)
c = digit[val & 0x7];
else
@@ -179,7 +179,7 @@ static uint64_t dprintf_get_arg64(uint8_t *buf, uint32_t &curr)
{
curr = (curr + 3) & ~3;
const uint64_t ret = ((uint64_t)buf[curr+0] << 56) | ((uint64_t)buf[curr+1] << 48) | ((uint64_t)buf[curr+2] << 40) | ((uint64_t)buf[curr+3] << 32) |
- ((uint64_t)buf[curr+4] << 24) | ((uint64_t)buf[curr+5] << 16) | ((uint64_t)buf[curr+6] << 8) | buf[curr+7];
+ ((uint64_t)buf[curr+4] << 24) | ((uint64_t)buf[curr+5] << 16) | ((uint64_t)buf[curr+6] << 8) | buf[curr+7];
curr += 8;
return ret;
}
@@ -237,147 +237,147 @@ void mips3_device::do_o2_dprintf(uint32_t fmt_addr, uint32_t a1, uint32_t a2, ui
buf[idx++] = (char)byte_val;
} while(byte_val != 0);
- char *p = buf;
- char errQ[3];
- int state = 0;
- int size = 0;
- int errP = 0;
- bool zeropad = false;
- while (*p)
- {
- switch (state)
- {
- case 0:
- if (*p != '%')
- {
- printf("%c", *p);
+ char *p = buf;
+ char errQ[3];
+ int state = 0;
+ int size = 0;
+ int errP = 0;
+ bool zeropad = false;
+ while (*p)
+ {
+ switch (state)
+ {
+ case 0:
+ if (*p != '%')
+ {
+ printf("%c", *p);
+ }
+ else
+ {
+ errQ[errP++] = '%';
+ state = 1;
+ }
+ p++;
+ break;
+ case 1: // check for zero padding
+ state = 2;
+ if (*p == '0')
+ {
+ errQ[errP++] = '0';
+ zeropad = true;
+ p++;
}
- else
- {
- errQ[errP++] = '%';
- state = 1;
- }
- p++;
- break;
- case 1: // check for zero padding
- state = 2;
- if (*p == '0')
- {
- errQ[errP++] = '0';
- zeropad = true;
- p++;
- }
- else
- {
- zeropad = false;
+ else
+ {
+ zeropad = false;
}
- break;
- case 2: // check the size of the object to be printed
- state = 3;
- switch (*p)
- {
- case 'l':
- errQ[errP++] = 'l';
- size = 64;
- p++;
- break;
- case 'h':
- errQ[errP++] = 'h';
- size = 16;
- p++;
- break;
- case 'b':
- errQ[errP++] = 'b';
- size = 8;
- p++;
- break;
- default:
- size = 32;
- break;
- }
- break;
- case 3: // do the print
- switch (*p)
- {
- case '%':
- printf("%c", '%');
- break;
- case 'd':
- case 'i':
- switch (size)
- {
- case 64:
- dprintdec((int64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, 0);
- break;
- case 16: // short
- dprintdec((int64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, 4);
- break;
- case 8: // byte
- dprintdec((int64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, 3);
- break;
- default: // int
- dprintdec((int64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, 9);
- break;
- }
- break;
- case 'u':
- switch (size)
- {
- case 64:
- dprintudec((uint64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, 0);
- break;
- case 16:
- dprintudec((uint64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, 4);
- break;
- case 8:
- dprintudec((uint64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, 3);
- break;
- default:
- dprintudec((uint64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, 9);
- break;
- }
- break;
- case 'o':
- switch (size)
- {
- case 64:
- dprintoct((uint64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, Loct);
- break;
- case 16: // short
- dprintoct((uint64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, Soct);
- break;
- case 8: // byte
- dprintoct((uint64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, Boct);
- break;
- default: // int
- dprintoct((uint64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, Ioct);
- break;
- }
- break;
- case 'x':
- case 'X':
- switch (size)
- {
- case 64:
- dprinthex((uint64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, Lhex);
- break;
- case 16:
- dprinthex((uint64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, Shex);
- break;
- case 8:
- dprinthex((uint64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, Bhex);
- break;
- default:
- dprinthex((uint64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, Ihex);
- break;
- }
- break;
- case 'c':
- printf("%c", (char)dprintf_get_arg8(argbuf, argcurr));
- break;
- case 's':
- {
- uint64_t str_addr = dprintf_get_arg64(argbuf, argcurr);
+ break;
+ case 2: // check the size of the object to be printed
+ state = 3;
+ switch (*p)
+ {
+ case 'l':
+ errQ[errP++] = 'l';
+ size = 64;
+ p++;
+ break;
+ case 'h':
+ errQ[errP++] = 'h';
+ size = 16;
+ p++;
+ break;
+ case 'b':
+ errQ[errP++] = 'b';
+ size = 8;
+ p++;
+ break;
+ default:
+ size = 32;
+ break;
+ }
+ break;
+ case 3: // do the print
+ switch (*p)
+ {
+ case '%':
+ printf("%c", '%');
+ break;
+ case 'd':
+ case 'i':
+ switch (size)
+ {
+ case 64:
+ dprintdec((int64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, 0);
+ break;
+ case 16: // short
+ dprintdec((int64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, 4);
+ break;
+ case 8: // byte
+ dprintdec((int64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, 3);
+ break;
+ default: // int
+ dprintdec((int64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, 9);
+ break;
+ }
+ break;
+ case 'u':
+ switch (size)
+ {
+ case 64:
+ dprintudec((uint64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, 0);
+ break;
+ case 16:
+ dprintudec((uint64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, 4);
+ break;
+ case 8:
+ dprintudec((uint64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, 3);
+ break;
+ default:
+ dprintudec((uint64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, 9);
+ break;
+ }
+ break;
+ case 'o':
+ switch (size)
+ {
+ case 64:
+ dprintoct((uint64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, Loct);
+ break;
+ case 16: // short
+ dprintoct((uint64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, Soct);
+ break;
+ case 8: // byte
+ dprintoct((uint64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, Boct);
+ break;
+ default: // int
+ dprintoct((uint64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, Ioct);
+ break;
+ }
+ break;
+ case 'x':
+ case 'X':
+ switch (size)
+ {
+ case 64:
+ dprinthex((uint64_t)dprintf_get_arg64(argbuf, argcurr), zeropad, Lhex);
+ break;
+ case 16:
+ dprinthex((uint64_t)dprintf_get_arg16(argbuf, argcurr), zeropad, Shex);
+ break;
+ case 8:
+ dprinthex((uint64_t)dprintf_get_arg8(argbuf, argcurr), zeropad, Bhex);
+ break;
+ default:
+ dprinthex((uint64_t)dprintf_get_arg32(argbuf, argcurr), zeropad, Ihex);
+ break;
+ }
+ break;
+ case 'c':
+ printf("%c", (char)dprintf_get_arg8(argbuf, argcurr));
+ break;
+ case 's':
+ {
+ uint64_t str_addr = dprintf_get_arg64(argbuf, argcurr);
uint8_t strbyte = 0;
do
{
@@ -385,22 +385,22 @@ void mips3_device::do_o2_dprintf(uint32_t fmt_addr, uint32_t a1, uint32_t a2, ui
str_addr++;
printf("%c", (char)strbyte);
} while(strbyte);
- break;
+ break;
+ }
+ case '0': // error
+ case 'l': // error
+ case 'h': // error
+ default: // error
+ for (int i = 0; i < 3; i++)
+ printf("%c", (char)errQ[i]);
+ printf("%c", *p++);
+ break;
}
- case '0': // error
- case 'l': // error
- case 'h': // error
- default: // error
- for (int i = 0; i < 3; i++)
- printf("%c", (char)errQ[i]);
- printf("%c", *p++);
- break;
- }
- state = 0; // reset the state machine
- size = 0; // reset the size
- zeropad = false; // reset the zero padding
- errP = 0; // reset errQ
- p++;
- }
- }
+ state = 0; // reset the state machine
+ size = 0; // reset the size
+ zeropad = false; // reset the zero padding
+ errP = 0; // reset errQ
+ p++;
+ }
+ }
}