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