Printing a hex dump of the tftp_open cmd

This commit is contained in:
Thomas Oltmann 2025-07-09 20:22:39 +02:00
parent 093969301e
commit cdfef627fa

95
lboot.S
View file

@ -59,6 +59,8 @@ _start: cli
call init_com1
mov $msg_start, %si
call print
mov $msg_start, %si
call print
@ -352,6 +354,13 @@ tftp_open: push %ecx
push server_ip+2
push server_ip
push $0
mov %ss, %esi
shl $4, %esi
add %esp, %esi
mov $128, %ecx
call dump
pxe_call PXE_TFTP_OPEN
leave
@ -400,33 +409,91 @@ out_of_mem: mov $msg_memerr, %si
// print: print NUL-terminated string pointed to by SI
print: push %eax
push %si
push %bp
mov %sp, %bp
1: lodsb
or %al, %al
jz 2f
call printch
jmp 1b
2: leave
pop %si
pop %eax
ret
printch: push %eax
push %ebx
push %edx
push %ebp
mov %ax, %bx
1: mov $COM1+5, %dx
inb %dx, %al
test $0x20, %al
jz 1b
mov %bx, %ax
mov $COM1, %dx
outb %al, %dx
xor %bx, %bx
mov $0x0E, %ah
int $0x10
pop %ebp
pop %edx
pop %ebx
pop %eax
ret
dump: push %eax
push %ebx
push %ecx
push %edx
push %esi
push %bp
mov %sp, %bp
xor %bx, %bx
xor %dx, %dx
_prnext: mov $COM1+5, %dx
inb %dx, %al
test $0x20, %al
jz _prnext
1: cmp %cx, %dx
jae 2f
inc %dx
lodsb
or %al, %al
jz _prdone
addr32 lodsb
push %ax
mov %al, %bl
shr $4, %bx
and $0x0F, %bx
mov hex_digits(%bx), %al
call printch
pop %bx
and $0x0F, %bx
mov hex_digits(%bx), %al
call printch
mov $COM1, %dx
outb %al, %dx
mov $' ', %al
call printch
test $0xF, %dx
jnz 1b
mov $'\r', %al
call printch
mov $'\n', %al
call printch
jmp 1b
mov $0x0E, %ah
int $0x10
jmp _prnext
2: mov $'\r', %al
call printch
mov $'\n', %al
call printch
_prdone: leave
leave
pop %esi
pop %edx
pop %ecx
pop %ebx
pop %eax
ret