1/* misc.c --- miscellaneous utility functions for RX simulator.
2
3Copyright (C) 2005-2023 Free Software Foundation, Inc.
4Contributed by Red Hat, Inc.
5
6This file is part of the GNU simulators.
7
8This program is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 3 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21/* This must come before any other includes.  */
22#include "defs.h"
23
24#include <stdio.h>
25
26#include "cpu.h"
27#include "misc.h"
28
29int
30bcd2int (int bcd, int w)
31{
32  int v = 0, m = 1, i;
33  for (i = 0; i < (w ? 4 : 2); i++)
34    {
35      v += (bcd % 16) * m;
36      m *= 10;
37      bcd /= 16;
38    }
39  return v;
40}
41
42int
43int2bcd (int v, int w)
44{
45  int bcd = 0, m = 1, i;
46  for (i = 0; i < (w ? 4 : 2); i++)
47    {
48      bcd += (v % 10) * m;
49      m *= 16;
50      v /= 10;
51    }
52  return bcd;
53}
54
55char *
56comma (unsigned int u)
57{
58  static char buf[5][20];
59  static int bi = 0;
60  int comma = 0;
61  char *bp;
62
63  bi = (bi + 1) % 5;
64  bp = buf[bi] + 19;
65  *--bp = 0;
66  do
67    {
68      if (comma == 3)
69	{
70	  *--bp = ',';
71	  comma = 0;
72	}
73      comma++;
74      *--bp = '0' + (u % 10);
75      u /= 10;
76    }
77  while (u);
78  return bp;
79}
80