1/* misc.c --- miscellaneous utility functions for M32C 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