]>
cloudbase.mooo.com Git - z180-stamp.git/blob - avr/print-utils.c
2 * (C) Copyright 2014,2018 Leo C. <erbl259-lmu@yahoo.de>
4 * SPDX-License-Identifier: GPL-2.0
10 #include "print-utils.h"
12 void print_blanks(uint_fast8_t count
)
19 ERRNUM
eeprom_read_buf(uint8_t *buf
, uint32_t addr
, uint8_t count
)
21 eeprom_read_block((void *) buf
, (const void *) (size_t) addr
, count
);
25 ERRNUM
ram_read_buf(uint8_t *buf
, uint32_t addr
, uint8_t count
)
28 *buf
++ = *(uint8_t *) (size_t) addr
++;
32 ERRNUM
flash_read_buf(uint8_t *buf
, uint32_t addr
, uint8_t count
)
35 *buf
++ = *(const __memx
uint8_t *) (__uint24
) addr
++;
39 ERRNUM
dump_mem(uint32_t address
, uint32_t offset
, uint32_t len
,
40 ERRNUM (*readfkt
)(uint8_t *, uint32_t, uint8_t), char *title
)
44 uint8_t pre
= offset
% 16;
45 offset
= offset
& ~0x0f;
49 if (title
&& *title
) {
50 printf_P(PSTR("%s\n"),title
);
56 ERRNUM err
= readfkt(buf
, address
, llen
- pre
);
62 printf_P(PSTR("%.5lx:"),offset
);
63 for (i
= 0; i
< llen
; i
++) {
67 printf_P(PSTR(".. "));
69 printf_P(PSTR("%.2x "), buf
[i
-pre
]);
71 /* fill line with whitespace for nice ASCII print */
72 print_blanks(3 * (16u - i
) + (16u-i
)/8 + 1 + pre
);
73 /* Print data in ASCII characters */
74 for (i
= pre
; i
< llen
; i
++)
75 printf_P(PSTR("%c"), isprint(buf
[i
-pre
]) ? buf
[i
-pre
] : '.');
78 address
+= llen
- pre
;
89 void dump_eep(uint32_t addr
, unsigned int len
, char *title
)
91 dump_mem(addr
, addr
, len
, eeprom_read_buf
, title
);
94 void dump_ram(uint8_t *addr
, size_t offset
, unsigned int len
, char *title
)
96 dump_mem((uint32_t) (size_t) addr
, offset
, len
, ram_read_buf
, title
);