
display_memory(cnt, size, addr)
int cnt;	/* Number of items to display */
int size;	/* BYTE, SHORT, INT, LONG, TRIPLE, or QUAD */
int addr;
{
	int i;

	while ( cnt-- ) {
		dprintf("\n%08X : ", addr );
		n = 0;

		switch (size) {
		case BYTE:
			for (i = 0; (i != 16); i++)
			{
				if(i == 8)
					dprintf(" ");

				byte_data = load_byte((int)addr);
				dprintf("%02x ", byte_data );
				addr++;
				if (cnt)
					--cnt;
			}

			addr -= 16;

			dprintf("   ");

			while (i--)
			{
				if(i == 8)
					dprintf(" ");

				byte_data = load_byte((int)addr);
				/* print in ASCII if a printable character */
				if ((byte_data > 0x20) && (byte_data < 0x7f))
					dprintf("%c", byte_data);
				addr++;
			}
			break;
		case SHORT:
			for (i = 0; (i != 8); i++)
			{
				if(i == 4)
					dprintf(" ");

				dprintf("%04x",*(unsigned short *)addr );
				addr += sizeof(unsigned short);

				if (cnt)
					--cnt;
			}

			break;
		case INT:
			long_data[0] = *(unsigned int*)addr,
			n = 1;
			break;
		case LONG:
			load_long(addr);
			n = 2;
			break;
		case TRIPLE:
			load_triple(addr);
			n = 3;
			break;
		case QUAD:
			load_quad(addr);
			n = 4;
			break;
		}

		for (i=0; i<n; i++) {
			dprintf("%08X ", long_data[i] );
			addr += sizeof(unsigned int);
		}
	}
}
