Files
Dennis Gunia d4af826223 restructure
2023-12-26 01:11:55 +01:00

91 lines
2.3 KiB
ArmAsm

;----------------------------------------------------------------
;HEX and ASCII dump function
;by Dennis Gunia (01/2023)
;----------------------------------------------------------------
;------------------------------------------------------------------------------
; dump_pretty
;
; Dumps memory content
; B contains amount of rows
; HL contains start address
; Destroys BC, HL
;------------------------------------------------------------------------------
dump_pretty:
PUSH HL
LD HL,[STR_PD_HEADER] ;Print header
CALL print_str
POP HL
dump_pretty_row:
LD A,B ;Check row counter
OR A
JP Z, dump_pretty_end ;If counter is 0, exit
DEC B ;Decrement row counter by 1
LD C, 16 ;Load column counter
LD A, H ;Print base address
CALL print_a_hex
LD A, L
CALL print_a_hex
LD A, ' '
CALL print_char
dump_pretty_col: ;Loop for column
LD A,(HL) ;Load byte to disply
CALL print_a_hex
LD A, ' '
CALL print_char
INC HL
DEC C ;Decrement column counter
JR NZ, dump_pretty_col ;Loop if not 0
dump_pretty_ascii:
PUSH BC
PUSH HL
LD B,0
LD C,16
SBC HL,BC ;Reset HL by column count
dump_pretty_ascii_loop:
LD A,(HL)
INC HL
CP 32
JP C, dump_pretty_ascii_none ;if less than 32, it is not a char
CP 127
JP NC, dump_pretty_ascii_none ;if greater or equal than 128, it is not a char
call print_char
jr dump_pretty_ascii_cont
dump_pretty_ascii_none:
LD A,'.'
call print_char
dump_pretty_ascii_cont:
DEC C
JP NZ, dump_pretty_ascii_loop
POP HL
POP BC
dump_pretty_nextrow:
LD A,10 ;New line
CALL print_char
LD A,13
CALL print_char
JR dump_pretty_row ;Else next line
dump_pretty_end:
RET
STR_PD_HEADER:
db 13,10,'BASE 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII',13,10,0
;------------------------------------------------------------------------------
; print_str_fixed
;
; Prints string with fixed length
; B contains length
; HL contains start address
;------------------------------------------------------------------------------
print_str_fixed:
LD A,(HL)
INC HL
CALL print_char
DJNZ print_str_fixed
RET