skiselev / 8088_bios

BIOS for Intel 8088 based computers
GNU General Public License v3.0
515 stars 61 forks source link

0.9.7 only: 1.2M floppy drive type reported as 1.44M to DOS - General failure reading #9

Closed monotech closed 4 years ago

monotech commented 4 years ago

This issue is only in version 0.9.7 (binary SHA1: E5807B7A0CB36E7176F08A6B107FB15D7F1DB5AE ). Version 0.9.6 behaves as expected.

In version 0.9.7, if I set a floppy drive type to 1.2M, it is correctly reported as 1.2M on the POST screen, but I get "General failure reading drive" in DOS. In CheckIt, the System Config screen shows the type as being 1.44M, not 1.2M.

In version 0.9.6, CheckIt reports 1.2M as expected, and the drive works correctly in DOS.

If using version 0.9.7, and I put Sergey's HD Floppy BIOS in ROM, taking over BIOS floppy functions, it also behaves correctly.

skiselev commented 4 years ago

On what machine? NuXT? Do you have an RTC installed?

monotech commented 4 years ago

This is on NuXT v2.0 with RTC. Also happens on NuXT v1.2 without RTC, if I give it 0.9.7 BIOS.

On Tue, 12 May 2020 at 16:49, Sergey Kiselev notifications@github.com wrote:

On what machine? NuXT? Do you have an RTC installed?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/skiselev/8088_bios/issues/9#issuecomment-627105819, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJOO5WVMCOUD7XZJFZ4SEWDRRDINHANCNFSM4M6PHIHA .

skiselev commented 4 years ago

One more question, can you please clarify what branch you are using? If you are using micro_8088 branch, please fetch the master branch, build the BIOS, and test again.

monotech commented 4 years ago

I was using the micro_8088 branch. I've just compiled the master branch, and the BIOS binary has the same checksum.

The result is the same for changing Drive 0 or Drive 1 in the F2 menu. Both show as 1.44M in CheckIt. If using ImageDisk, which doesn't use the BIOS for floppy access, I can successfully use the 1.2M drive for DD and HD disks.

skiselev commented 4 years ago

Can you run "debug" and then "d f000:8000" command and copy the first line of the output. Also run "d 0040:0000" and copy the output. You can take a photo of the screen.

monotech commented 4 years ago

Here is the photo of the screen: https://photos.app.goo.gl/7vXY141YBSHUibg36

Currently, the drive types are set to both drives as 1.2M.

skiselev commented 4 years ago

Thanks! The configuration in the ROM looks good (the first "d" output). Unfortunately I can't see the entire BIOS data area, can you do another "d" command? or "d 0040:0080" so it shows the next 128 bytes?

monotech commented 4 years ago

Here's 0040:0080 https://photos.app.goo.gl/pBKvWH9Rv7183tQJ6

skiselev commented 4 years ago

OK. A bit more low level debug. Can you do the following. Insert the floppy disk, and in the debug run the following (typing from my memory, there might be errors):

a
mov ah,08
mov dl,0
int 13
int 3
.
g

This should call INT 13 get drive parameters function. The debug will print the registers once it hits int 3. Please copy the registers content here or take a picture.

monotech commented 4 years ago

Error mov d1,0 '^' points to the comma

skiselev commented 4 years ago

it is DL (not one, "L")

monotech commented 4 years ago

Ahh it is too, my bad. I cannot enter the '.' or 'g'

skiselev commented 4 years ago

Sorry, it is just an empty line instead of ".". Just press "Enter" there.

monotech commented 4 years ago

Here we go https://photos.app.goo.gl/eGz4YUPvDzWDquGL9

skiselev commented 4 years ago

I've found and fixed the issue... It really was a stupid "typo" kind of thing. Instead of reading the floppy drive settings from the Flash ROM, the BIOS was assuming the default 1.44 MB floppy drives. Anyhow, should be working now. Please clone/download the latest commit, compile, and give it a try.

monotech commented 4 years ago

Works! Tested everything I can think of relating to this. May need a new version number.