VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

When I try to start the setup procedure on MS-DOS 5.0 setup disk 1, I get the following log (when enabling the emulator debugger, which currently logs both instructions executed and floppy disk activity (except the actual data transfer itself, so only command, parameter, result phases and status changes and register reads/writes (using all floppy ports except the data port) results/written data).

When I try the disk on Virtualbox, it works without problems. When I try to run it in my emulator, it first boots, then starts detecting hardware (or so it tells me), then telling me to insert disk 1 in a loop.

This is the log of the Floppy Disk Controller during checking for disk 1:

0:05:15:43.5.0062: FLOPPY: Write DOR=18

0:05:15:43.6.0277: FLOPPY: Reset requested by DOR!

0:05:15:43.7.0329: Pending 1 Sense Interrupt because of a bug in the Turbo XT BIOS!

0:05:15:45.3.0984: FLOPPY: Write DOR=1C

0:05:15:45.4.0903: FLOPPY: Activation requested by DOR!

0:05:15:46.3.0444: FLOPPY: MSR changed: 80

0:05:15:46.4.0397: FLOPPY: Read MSR=80

0:05:15:46.6.0664: FLOPPY: Command byte sent: 08

0:05:15:46.7.0354: FLOPPY: executing command: 08

0:05:15:46.7.0354: FLOPPY: Reset for all drives has been finished!

0:05:15:46.7.0386: FLOPPY: Sense interrupt: ST0=C0, Currentcylinder=00

0:05:15:48.6.0012: FLOPPY: MSR changed: d0

0:05:15:48.6.0899: FLOPPY: Read MSR=D0

0:05:15:48.8.0903: FLOPPY: Reading result byte 1/2

0:05:15:49.4.0192: FLOPPY: Read MSR=D0

0:05:15:50.0.0335: FLOPPY: Read MSR=D0

0:05:15:51.8.0173: FLOPPY: Reading result byte 2/2

0:05:15:52.1.0786: FLOPPY: MSR changed: 80

0:05:15:52.2.0509: FLOPPY: Read MSR=80

0:05:15:52.8.0750: FLOPPY: Read MSR=80

0:05:15:53.2.0068: FLOPPY: Command byte sent: 03

0:05:15:53.6.0372: FLOPPY: MSR changed: 90

0:05:15:53.7.0062: FLOPPY: Read MSR=90

0:05:15:55.4.0735: FLOPPY: Parameter sent: DF(#1/2)

0:05:15:55.9.0597: FLOPPY: Read MSR=90

0:05:15:56.2.0586: FLOPPY: Parameter sent: 02(#2/2)

0:05:15:56.3.0342: FLOPPY: executing command: 03

0:05:15:69.6.0976: FLOPPY: Write DOR=1C

0:05:15:70.2.0659: FLOPPY: MSR changed: 80

0:05:15:70.3.0480: FLOPPY: Read MSR=80

Show last 103 lines
0:05:15:72.0.0365: FLOPPY: Command byte sent: 07

0:05:15:72.5.0555: FLOPPY: MSR changed: 90

0:05:15:72.6.0311: FLOPPY: Read MSR=90

0:05:15:72.8.0545: FLOPPY: Parameter sent: 00(#1/1)

0:05:15:72.9.0268: FLOPPY: executing command: 07

0:05:15:75.3.0774: FLOPPY: MSR changed: 80

0:05:15:75.4.0661: FLOPPY: Read MSR=80

0:05:15:75.6.0894: FLOPPY: Command byte sent: 0F

0:05:15:76.1.0494: FLOPPY: MSR changed: 90

0:05:15:76.2.0216: FLOPPY: Read MSR=90

0:05:15:76.4.0450: FLOPPY: Parameter sent: 00(#1/2)

0:05:15:76.8.0721: FLOPPY: Read MSR=90

0:05:15:78.7.0379: FLOPPY: Parameter sent: 00(#2/2)

0:05:15:78.8.0365: FLOPPY: executing command: 0F

0:05:15:79.7.0563: FLOPPY: MSR changed: 80

0:05:15:79.8.0351: FLOPPY: Read MSR=80

0:05:15:80.0.0585: FLOPPY: Command byte sent: 08

0:05:15:80.1.0472: FLOPPY: executing command: 08

0:05:15:80.1.0472: FLOPPY: Sense interrupt: ST0=20, Currentcylinder=00

0:05:15:81.9.0967: FLOPPY: MSR changed: d0

0:05:15:82.0.0821: FLOPPY: Read MSR=D0

0:05:15:82.3.0022: FLOPPY: Reading result byte 1/2

0:05:15:82.6.0537: FLOPPY: Read MSR=D0

0:05:15:83.1.0497: FLOPPY: Read MSR=D0

0:05:15:83.4.0322: FLOPPY: Reading result byte 2/2

0:05:15:85.3.0277: FLOPPY: MSR changed: 80

0:05:15:85.4.0525: FLOPPY: Read MSR=80

0:05:17:11.9.0714: FLOPPY: Read MSR=80

0:05:17:12.3.0459: FLOPPY: Command byte sent: E6

0:05:17:12.8.0682: FLOPPY: MSR changed: 90

0:05:17:12.9.0339: FLOPPY: Read MSR=90

0:05:17:13.1.0672: FLOPPY: Parameter sent: 00(#1/8)

0:05:17:15.1.0776: FLOPPY: Read MSR=90

0:05:17:15.5.0028: FLOPPY: Parameter sent: 00(#2/8)

0:05:17:15.9.0989: FLOPPY: Read MSR=90

0:05:17:16.3.0306: FLOPPY: Parameter sent: 00(#3/8)

0:05:17:16.9.0351: FLOPPY: Read MSR=90

0:05:17:18.9.0094: FLOPPY: Parameter sent: 01(#4/8)

0:05:17:19.4.0120: FLOPPY: Read MSR=90

0:05:17:19.7.0241: FLOPPY: Parameter sent: 02(#5/8)

0:05:17:20.2.0135: FLOPPY: Read MSR=90

0:05:17:22.0.0006: FLOPPY: Parameter sent: 09(#6/8)

0:05:17:22.5.0327: FLOPPY: Read MSR=90

0:05:17:22.8.0382: FLOPPY: Parameter sent: 2A(#7/8)

0:05:17:23.3.0146: FLOPPY: Read MSR=90

0:05:17:25.1.0180: FLOPPY: Parameter sent: FF(#8/8)

0:05:17:25.2.0100: FLOPPY: executing command: 06

0:05:17:25.2.0100: FLOPPY: Read sector #0

0:05:17:25.2.0133: FLOPPY: Sector size: 512 bytes

0:05:17:25.2.0133: FLOPPY: Requesting transfer for 512 bytes.

0:05:17:25.2.0297: FLOPPY: Start transfer of data (DMA: 1)...

Is it actually not requesting a DMA transfer method of reading the boot sector, because of unhandled registers? It does send a specify command (the command #3 in the log) with a value of 2(setting it's DMA bit to 0, or Non-DMA mode to the floppy disk controller). However, it also enables DMA mode with the DOR register (which is actually used by my emulator to determine DMA access). Is DMA enable a simple 'AND' operation(both need to be set to use DMA) or an OR operation (either one needs to be set to use DMA) between those two DMA values? In this case the DOR has DMA&IRQs enabled, and the floppy disk itself (specify command) has it's DMA disabled. So does the read sector actually need to use DMA or not?

Edit: After verifying it, the setup procedure is actually asking for a DMA transfer (DMA bit 1=0 tells DMA transfer, FDC is instructed to use DMA&IRQs). For some reason, it isn't correctly reading the boot sector at that point? Or it's actually timing out for some reason?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io