]>
cloudbase.mooo.com Git - z180-stamp.git/blob - avr/print-utils.c
2 * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
4 * SPDX-License-Identifier: GPL-2.0+
11 #include "con-utils.h"
12 #include "print-utils.h"
14 void print_blanks(uint_fast8_t count
)
21 int eeprom_read_buf(uint8_t *buf
, uint32_t addr
, uint8_t count
)
23 eeprom_read_block((void *) buf
, (const void *) (size_t) addr
, count
);
27 int ram_read_buf(uint8_t *buf
, uint32_t addr
, uint8_t count
)
30 *buf
++ = *(uint8_t *) (size_t) addr
++;
34 int flash_read_buf(uint8_t *buf
, uint32_t addr
, uint8_t count
)
37 *buf
++ = *(const __memx
uint8_t *) (__uint24
) addr
++;
41 int dump_mem(uint32_t address
, uint32_t offset
, uint32_t len
,
42 int (*readfkt
)(uint8_t *, uint32_t, uint8_t), char *title
)
47 uint8_t pre
= offset
% 16;
48 offset
= offset
& ~0x0f;
52 if (title
&& *title
) {
53 printf_P(PSTR("%s\n"),title
);
60 if (readfkt(buf
, address
, llen
- pre
) != 0)
61 return -2; /* TODO: Error codes */
63 printf_P(PSTR("%s%.5lx:"),indent
, offset
);
64 for (i
= 0; i
< llen
; i
++) {
68 printf_P(PSTR(".. "));
70 printf_P(PSTR("%.2x "), buf
[i
-pre
]);
72 /* fill line with whitespace for nice ASCII print */
73 print_blanks(3 * (16u - i
) + (16u-i
)/8 + 1 + pre
);
74 /* Print data in ASCII characters */
75 for (i
= pre
; i
< llen
; i
++)
76 printf_P(PSTR("%c"), isprint(buf
[i
-pre
]) ? buf
[i
-pre
] : '.');
79 address
+= llen
- pre
;
90 void dump_eep(uint32_t addr
, unsigned int len
, char *title
)
92 dump_mem(addr
, addr
, len
, eeprom_read_buf
, title
);
95 void dump_ram(uint8_t *addr
, size_t offset
, unsigned int len
, char *title
)
97 dump_mem((uint32_t) (size_t) addr
, offset
, len
, ram_read_buf
, title
);