1*5479Slinton /* Copyright (c) 1982 Regents of the University of California */
2*5479Slinton 
3*5479Slinton static char sccsid[] = "@(#)printdata.c 1.1 01/18/82";
4*5479Slinton 
5*5479Slinton /*
6*5479Slinton  * print contents of data addresses in octal
7*5479Slinton  *
8*5479Slinton  * There are two entries:  one is given a range of addresses,
9*5479Slinton  * the other is given a count and a starting address.
10*5479Slinton  */
11*5479Slinton 
12*5479Slinton #include "defs.h"
13*5479Slinton #include "machine.h"
14*5479Slinton #include "process.h"
15*5479Slinton #include "object.h"
16*5479Slinton 
17*5479Slinton #define WORDSPERLINE 4
18*5479Slinton 
19*5479Slinton /*
20*5479Slinton  * print words from lowaddr to highaddr
21*5479Slinton  */
22*5479Slinton 
23*5479Slinton printdata(lowaddr, highaddr)
24*5479Slinton ADDRESS lowaddr;
25*5479Slinton ADDRESS highaddr;
26*5479Slinton {
27*5479Slinton 	register int count;
28*5479Slinton 	register ADDRESS addr;
29*5479Slinton 	int val;
30*5479Slinton 
31*5479Slinton 	if (lowaddr > highaddr) {
32*5479Slinton 		error("first address larger than second");
33*5479Slinton 	}
34*5479Slinton 	count = 0;
35*5479Slinton 	for (addr = lowaddr; addr <= highaddr; addr += sizeof(int)) {
36*5479Slinton 		if (count == 0) {
37*5479Slinton 			printf("%8x: ", addr);
38*5479Slinton 		}
39*5479Slinton 		dread(&val, addr, sizeof(val));
40*5479Slinton 		printf("  %8x", val);
41*5479Slinton 		if (++count >= WORDSPERLINE) {
42*5479Slinton 			putchar('\n');
43*5479Slinton 			count = 0;
44*5479Slinton 		}
45*5479Slinton 	}
46*5479Slinton 	if (count != 0) {
47*5479Slinton 		putchar('\n');
48*5479Slinton 	}
49*5479Slinton }
50*5479Slinton 
51*5479Slinton /*
52*5479Slinton  * print count words starting at address
53*5479Slinton  */
54*5479Slinton 
55*5479Slinton printndata(count, addr)
56*5479Slinton int count;
57*5479Slinton ADDRESS addr;
58*5479Slinton {
59*5479Slinton 	printdata(addr, addr + (count - 1)*sizeof(int));
60*5479Slinton }
61