8086tiny icon indicating copy to clipboard operation
8086tiny copied to clipboard

Setting AL in extended_read_disk is senseless?

Open TheFox opened this issue 7 years ago • 0 comments

Look at this block in the bios:

mov	ah, 0
cpu	186
shl	ax, 9
extended_read_disk
shr	ax, 9
cpu	8086
mov	ah, 0x02	; Put read code back

cmp	al, 0
je	rd_error

The extended_read_disk instruction writes the error to AL. But right after the read we shift AX back 9 bits to right (shr ax, 9) which overrides AL. So what's even the point of cmp al, 0 and setting AL in extended_read_disk?

And even when you fix the bios, the read function in 8086tiny.c is still wrong. You use AX as length to read. But read() returns, for example 512, which is 0 inside AL because of the overflow. So even if we don't shift bits after the read AL indicates "error".

TheFox avatar Aug 09 '18 12:08 TheFox