VOGONS


UniPCemu review request

Topic actions

Reply 20 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

That should happen by the MSR(Port 3F4) register being read, but instead of reading it, it writes to the DOR, selecting drive 3 and resetting the controller? Does Specify need to generate an IRQ?

Edit: correction: selecting drive 0, DMA&IRQ enabled,not resetting, disk motors all off. Although that doesn't have anything to do with the specify command?

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

Reply 21 of 35, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

So you're only updating the MSR status at the time it's read?

No, "Specify" does not generate an IRQ. But it has no Result phase either, so the XT BIOS source code doesn't bother reading MSR at the end of the reset code.

The bootstrap loader (F000:E61B) in that BIOS calls Int13 AH=0, then if it succeeded, Int13 AH=2 to read the boot sector. Int13 AH=0 resets the controller, waits for an IRQ, then sends "Sense Interrupt Status" and expects ST0 to contain C0h. If this succeeds, "Specify" is executed, otherwise it immediately returns. This must have succeeded, otherwise "Specify" would not be observed. After sending the last of the two data bytes of "Specify", the Int 13 AH=0 code does not bother to check MSR again, but immediately returns, and the bootstrap loader proceeds to INt 13 AH=2.

Starting in the source code at line 2562, this one immediately programs the DMA, then writes 0Ch OR the drive bitmask SHL 4 to DOR. Now THIS is the strange part --- it should write 1Ch, not 0Ch, to actually turn drive 0's motor on.

Is there a way of setting breakpoints in your debugger to a specific address? I know how to call up the debugger, but find it hard to get to the point where it actually performs the disk access.

Reply 22 of 35, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

FYI, the error message I get is "Disk Boot Failure". I thought that was a BIOS error message, but it turns out that it is a message by the DOS 3.3 boot sector code. Which means that at least the boot sector is correctly read, and the error occurs after that.

Reply 23 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

That's odd: My log is the complete log of the Turbo XT BIOS v3.0 trying to boot the floppy. The only difference is that my BIOS is extended by the XT-IDE hard disk BIOS.

Edit: It seems to have something to do with my XT-IDE BIOS. Disabling the ROM(giving it an unrecognizable filename for the emulator) makes it process the next part of the process, booting the floppy and reading the boot sector:

00:00:24:30.07328: FLOPPY: Write DOR=08
00:00:24:30.07738: FLOPPY: Reset requested by DOR!
00:00:24:30.07752: FLOPPY: Write DOR=0C
00:00:24:30.07758: FLOPPY: Activation requested by DOR!
00:00:24:30.07844: FLOPPY: MSR changed: 80
00:00:24:30.07848: FLOPPY: Read MSR=80
00:00:24:30.07864: FLOPPY: Command byte sent: 08
00:00:24:30.07868: FLOPPY: executing command: 08
00:00:24:30.07878: FLOPPY: Reset Sense Interrupt, pending drive 0/4...
00:00:24:30.07898: FLOPPY: Sense interrupt: ST0=C0, Currentcylinder=00
00:00:24:30.07934: FLOPPY: MSR changed: d0
00:00:24:30.07938: FLOPPY: Read MSR=D0
00:00:24:30.07954: FLOPPY: Reading result byte 1/2=C0
00:00:24:30.07984: FLOPPY: Read MSR=D0
00:00:24:30.08016: FLOPPY: Read MSR=D0
00:00:24:30.08030: FLOPPY: Reading result byte 2/2=00
00:00:24:30.08056: FLOPPY: MSR changed: 80
00:00:24:30.08058: FLOPPY: Read MSR=80
00:00:24:30.08108: FLOPPY: Read MSR=80
00:00:24:30.08126: FLOPPY: Command byte sent: 03
00:00:24:30.08136: FLOPPY: Reset for all drives has been finished!
00:00:24:30.08166: FLOPPY: MSR changed: 90
00:00:24:30.08170: FLOPPY: Read MSR=90
00:00:24:30.08186: FLOPPY: Parameter sent: CF(#1/2)
00:00:24:30.08220: FLOPPY: Read MSR=90
00:00:24:30.08232: FLOPPY: Parameter sent: 02(#2/2)
00:00:24:30.08238: FLOPPY: executing command: 03
00:00:24:30.08510: FLOPPY: Write DOR=1C
00:00:24:30.08548: FLOPPY: MSR changed: 80
00:00:24:30.08552: FLOPPY: Read MSR=80
00:00:24:30.08568: FLOPPY: Command byte sent: 07
00:00:24:30.08594: FLOPPY: MSR changed: 90
00:00:24:30.08598: FLOPPY: Read MSR=90
00:00:24:30.08612: FLOPPY: Parameter sent: 00(#1/1)
00:00:24:30.08616: FLOPPY: executing command: 07
00:00:24:32.07528: FLOPPY: MSR changed: 80
00:00:24:32.07534: FLOPPY: Read MSR=80
00:00:24:32.07550: FLOPPY: Command byte sent: 0F
00:00:24:32.07574: FLOPPY: MSR changed: 90
00:00:24:32.07576: FLOPPY: Read MSR=90
00:00:24:32.07592: FLOPPY: Parameter sent: 00(#1/2)
00:00:24:32.07616: FLOPPY: Read MSR=90
00:00:24:32.07628: FLOPPY: Parameter sent: 00(#2/2)
00:00:24:32.07634: FLOPPY: executing command: 0F
00:00:24:35.00672: FLOPPY: MSR changed: 80
00:00:24:35.00676: FLOPPY: Read MSR=80
00:00:24:35.00696: FLOPPY: Command byte sent: 08
00:00:24:35.00700: FLOPPY: executing command: 08
00:00:24:35.00710: FLOPPY: Sense interrupt: ST0=20, Currentcylinder=00
00:00:24:35.00742: FLOPPY: MSR changed: d0
00:00:24:35.00746: FLOPPY: Read MSR=D0
00:00:24:35.00760: FLOPPY: Reading result byte 1/2=20
00:00:24:35.00784: FLOPPY: Read MSR=D0
00:00:24:35.00824: FLOPPY: Read MSR=D0
00:00:24:35.00836: FLOPPY: Reading result byte 2/2=00
00:00:24:35.00864: FLOPPY: MSR changed: 80
00:00:24:35.00866: FLOPPY: Read MSR=80
00:00:24:37.03808: FLOPPY: Read MSR=80
00:00:24:37.03824: FLOPPY: Command byte sent: E6
00:00:24:37.03868: FLOPPY: MSR changed: 90
Show last 50 lines
00:00:24:37.03870: FLOPPY: Read MSR=90
00:00:24:37.03886: FLOPPY: Parameter sent: 00(#1/8)
00:00:24:37.03928: FLOPPY: Read MSR=90
00:00:24:37.03944: FLOPPY: Parameter sent: 00(#2/8)
00:00:24:37.03976: FLOPPY: Read MSR=90
00:00:24:37.03992: FLOPPY: Parameter sent: 00(#3/8)
00:00:24:37.04026: FLOPPY: Read MSR=90
00:00:24:37.04042: FLOPPY: Parameter sent: 01(#4/8)
00:00:24:37.04074: FLOPPY: Read MSR=90
00:00:24:37.04090: FLOPPY: Parameter sent: 02(#5/8)
00:00:24:37.04122: FLOPPY: Read MSR=90
00:00:24:37.04138: FLOPPY: Parameter sent: 08(#6/8)
00:00:24:37.04170: FLOPPY: Read MSR=90
00:00:24:37.04188: FLOPPY: Parameter sent: 2A(#7/8)
00:00:24:37.04218: FLOPPY: Read MSR=90
00:00:24:37.04236: FLOPPY: Parameter sent: FF(#8/8)
00:00:24:37.04240: FLOPPY: executing command: 06
00:00:24:37.04244: FLOPPY: Read sector #0
00:00:24:37.04248: FLOPPY: Sector size: 512 bytes
00:00:24:37.04254: FLOPPY: Requesting transfer for 512 bytes.
00:00:24:37.04328: FLOPPY: Start transfer of data (DMA: 1)...
00:00:24:37.05344: FLOPPY: Finished transfer of data (1 sectors).
00:00:24:37.05456: FLOPPY: MSR changed: d0
00:00:24:37.05460: FLOPPY: Read MSR=D0
00:00:24:37.05476: FLOPPY: Reading result byte 1/7=20
00:00:24:37.05500: FLOPPY: Read MSR=D0
00:00:24:37.05542: FLOPPY: Read MSR=D0
00:00:24:37.05554: FLOPPY: Reading result byte 2/7=00
00:00:24:37.05582: FLOPPY: Read MSR=D0
00:00:24:37.05614: FLOPPY: Read MSR=D0
00:00:24:37.05630: FLOPPY: Reading result byte 3/7=00
00:00:24:37.05654: FLOPPY: Read MSR=D0
00:00:24:37.05690: FLOPPY: Read MSR=D0
00:00:24:37.05702: FLOPPY: Reading result byte 4/7=00
00:00:24:37.05730: FLOPPY: Read MSR=D0
00:00:24:37.05764: FLOPPY: Read MSR=D0
00:00:24:37.05778: FLOPPY: Reading result byte 5/7=00
00:00:24:37.05804: FLOPPY: Read MSR=D0
00:00:24:37.05838: FLOPPY: Read MSR=D0
00:00:24:37.05852: FLOPPY: Reading result byte 6/7=02
00:00:24:37.05878: FLOPPY: Read MSR=D0
00:00:24:37.05912: FLOPPY: Read MSR=D0
00:00:24:37.05926: FLOPPY: Reading result byte 7/7=02
00:00:24:37.05952: FLOPPY: MSR changed: 80
00:00:24:37.05954: FLOPPY: Read MSR=80
00:00:24:37.06302: FLOPPY: Write DOR=18
00:00:24:37.06306: FLOPPY: Reset requested by DOR!
00:00:24:37.06314: FLOPPY: Write DOR=1C
00:00:24:37.06320: FLOPPY: Activation requested by DOR!
00:00:28:50.08760: FLOPPY: Write DOR=0C

It does show the invalid message from the boot sector without reading the rest of the MS-DOS boot information(80286 CPU). The same happens on a 8086 CPU. Why would it stop booting? The disk should have been booting all along(unchanged)?

Edit: An IRQ for that reset isn't triggered, because it only happens when an IRQ is raised after lowering it. Since the read sector command raised the IRQ line, the IRQ normally triggered by reset isn't happening(IR6 line goes from high to high, thus raising no interrupt). Should a reset request always lower the IR line?

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

Reply 24 of 35, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

Of course. A reset makes the FDC forget everything it's doing, so the the IRQ line is lowered by the reset. At the end of the reset, it will be raised again to indicate a change in the drive's READY line, unless polling is disabled via the Configure command, in case of which FDC reset merely lowers the IRQ without then raising it again. Here's my FDC reset code from DOSBox-TC:

void FDC::reset() {
PIC_RemoveEvents(FDC_seekStep);
PIC_RemoveEvents(FDC_raiseIRQ);
ST0=0; ST1=0; ST2=0; ST3=0; US=0; HD=0;
commandLength = 0; resultLength = 0; resultPointer = 0;
MSR |= FDC_MSR_RQM;
MSR &=~FDC_MSR_DIO;
SRT=0; HLT=0; HUT=0;
if ((flags & FDC_FLAG_LOCK)==0) {
flags &= ~FDC_FLAG_DISABLE_FIFO;
FIFOTHR = 1;
PRETRK = 0;
}
dma->Clear_Request();
flags &= ~FDC_FLAG_IRQ; PIC_DeActivateIRQ(6);
if ((flags & FDC_FLAG_DISABLE_POLLING)==0) raiseIRQ();
}

Reply 25 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've modified the floppy disk controller reset procedure to always lower the IRQ line when resetting(the Configure not raising it again was already emulated).

This is what I'm getting currently:

00:00:29:57.05862: FLOPPY: Write DOR=0C
00:00:37:54.04808: FLOPPY: Write DOR=08
00:00:37:54.04816: FLOPPY: Reset requested by DOR!
00:00:37:54.04820: FLOPPY: Write DOR=0C
00:00:37:54.04828: FLOPPY: Activation requested by DOR!
00:00:37:54.04924: FLOPPY: MSR changed: 80
00:00:37:54.04928: FLOPPY: Read MSR=80
00:00:37:54.04944: FLOPPY: Command byte sent: 08
00:00:37:54.04948: FLOPPY: executing command: 08
00:00:37:54.04956: FLOPPY: Reset Sense Interrupt, pending drive 0/4...
00:00:37:54.04964: FLOPPY: Sense interrupt: ST0=C0, Currentcylinder=00
00:00:37:54.05000: FLOPPY: MSR changed: d0
00:00:37:54.05004: FLOPPY: Read MSR=D0
00:00:37:54.05020: FLOPPY: Reading result byte 1/2=C0
00:00:37:54.05072: FLOPPY: Read MSR=D0
00:00:37:54.05104: FLOPPY: Read MSR=D0
00:00:37:54.05124: FLOPPY: Reading result byte 2/2=00
00:00:37:54.05172: FLOPPY: MSR changed: 80
00:00:37:54.05176: FLOPPY: Read MSR=80
00:00:37:54.05248: FLOPPY: Read MSR=80
00:00:37:54.05264: FLOPPY: Command byte sent: 03
00:00:37:54.05272: FLOPPY: Reset for all drives has been finished!
00:00:37:54.05308: FLOPPY: MSR changed: 90
00:00:37:54.05312: FLOPPY: Read MSR=90
00:00:37:54.05332: FLOPPY: Parameter sent: CF(#1/2)
00:00:37:54.05372: FLOPPY: Read MSR=90
00:00:37:54.05388: FLOPPY: Parameter sent: 02(#2/2)
00:00:37:54.05396: FLOPPY: executing command: 03
00:00:37:54.05760: FLOPPY: Write DOR=1C
00:00:37:54.05824: FLOPPY: MSR changed: 80
00:00:37:54.05824: FLOPPY: Read MSR=80
00:00:37:54.05844: FLOPPY: Command byte sent: 07
00:00:37:54.05868: FLOPPY: MSR changed: 90
00:00:37:54.05872: FLOPPY: Read MSR=90
00:00:37:54.05892: FLOPPY: Parameter sent: 00(#1/1)
00:00:37:54.05896: FLOPPY: executing command: 07
00:00:37:55.09436: FLOPPY: MSR changed: 80
00:00:37:55.09440: FLOPPY: Read MSR=80
00:00:37:55.09464: FLOPPY: Command byte sent: 0F
00:00:37:55.09496: FLOPPY: MSR changed: 90
00:00:37:55.09500: FLOPPY: Read MSR=90
00:00:37:55.09520: FLOPPY: Parameter sent: 00(#1/2)
00:00:37:55.09564: FLOPPY: Read MSR=90
00:00:37:55.09608: FLOPPY: Parameter sent: 00(#2/2)
00:00:37:55.09612: FLOPPY: executing command: 0F
00:00:37:58.05448: FLOPPY: MSR changed: 80
00:00:37:58.05456: FLOPPY: Read MSR=80
00:00:37:58.05480: FLOPPY: Command byte sent: 08
00:00:37:58.05484: FLOPPY: executing command: 08
00:00:37:58.05492: FLOPPY: Sense interrupt: ST0=20, Currentcylinder=00
00:00:37:58.05532: FLOPPY: MSR changed: d0
00:00:37:58.05536: FLOPPY: Read MSR=D0
00:00:37:58.05556: FLOPPY: Reading result byte 1/2=20
00:00:37:58.05604: FLOPPY: Read MSR=D0
00:00:37:58.05648: FLOPPY: Read MSR=D0
00:00:37:58.05672: FLOPPY: Reading result byte 2/2=00
00:00:37:58.05720: FLOPPY: MSR changed: 80
00:00:37:58.05720: FLOPPY: Read MSR=80
00:00:37:64.04904: FLOPPY: Read MSR=80
00:00:37:64.04932: FLOPPY: Command byte sent: E6
Show last 361 lines
00:00:37:64.04980: FLOPPY: MSR changed: 90
00:00:37:64.04980: FLOPPY: Read MSR=90
00:00:37:64.05004: FLOPPY: Parameter sent: 00(#1/8)
00:00:37:64.05064: FLOPPY: Read MSR=90
00:00:37:64.05084: FLOPPY: Parameter sent: 00(#2/8)
00:00:37:64.05124: FLOPPY: Read MSR=90
00:00:37:64.05148: FLOPPY: Parameter sent: 00(#3/8)
00:00:37:64.05188: FLOPPY: Read MSR=90
00:00:37:64.05208: FLOPPY: Parameter sent: 01(#4/8)
00:00:37:64.05252: FLOPPY: Read MSR=90
00:00:37:64.05276: FLOPPY: Parameter sent: 02(#5/8)
00:00:37:64.05316: FLOPPY: Read MSR=90
00:00:37:64.05336: FLOPPY: Parameter sent: 08(#6/8)
00:00:37:64.05376: FLOPPY: Read MSR=90
00:00:37:64.05404: FLOPPY: Parameter sent: 2A(#7/8)
00:00:37:64.05444: FLOPPY: Read MSR=90
00:00:37:64.05464: FLOPPY: Parameter sent: FF(#8/8)
00:00:37:64.05468: FLOPPY: executing command: 06
00:00:37:64.05472: FLOPPY: Read sector #0
00:00:37:64.05476: FLOPPY: Sector size: 512 bytes
00:00:37:64.05480: FLOPPY: Requesting transfer for 512 bytes.
00:00:37:64.05608: FLOPPY: Start transfer of data (DMA: 1)...
00:00:37:64.06384: FLOPPY: Finished transfer of data (1 sectors).
00:00:37:64.06496: FLOPPY: MSR changed: d0
00:00:37:64.06500: FLOPPY: Read MSR=D0
00:00:37:64.06520: FLOPPY: Reading result byte 1/7=20
00:00:37:64.06568: FLOPPY: Read MSR=D0
00:00:37:64.06616: FLOPPY: Read MSR=D0
00:00:37:64.06632: FLOPPY: Reading result byte 2/7=00
00:00:37:64.06676: FLOPPY: Read MSR=D0
00:00:37:64.06716: FLOPPY: Read MSR=D0
00:00:37:64.06736: FLOPPY: Reading result byte 3/7=00
00:00:37:64.06784: FLOPPY: Read MSR=D0
00:00:37:64.06824: FLOPPY: Read MSR=D0
00:00:37:64.06844: FLOPPY: Reading result byte 4/7=00
00:00:37:64.06888: FLOPPY: Read MSR=D0
00:00:37:64.06928: FLOPPY: Read MSR=D0
00:00:37:64.06952: FLOPPY: Reading result byte 5/7=00
00:00:37:64.06996: FLOPPY: Read MSR=D0
00:00:37:64.07036: FLOPPY: Read MSR=D0
00:00:37:64.07056: FLOPPY: Reading result byte 6/7=02
00:00:37:64.07100: FLOPPY: Read MSR=D0
00:00:37:64.07148: FLOPPY: Read MSR=D0
00:00:37:64.07168: FLOPPY: Reading result byte 7/7=02
00:00:37:64.07216: FLOPPY: MSR changed: 80
00:00:37:64.07216: FLOPPY: Read MSR=80
00:00:37:64.07680: FLOPPY: Write DOR=18
00:00:37:64.07684: FLOPPY: Reset requested by DOR!
00:00:37:64.07692: FLOPPY: Write DOR=1C
00:00:37:64.07696: FLOPPY: Activation requested by DOR!
00:00:37:64.07816: FLOPPY: Read MSR=80
00:00:37:64.07836: FLOPPY: Command byte sent: 08
00:00:37:64.07840: FLOPPY: executing command: 08
00:00:37:64.07848: FLOPPY: Reset Sense Interrupt, pending drive 0/4...
00:00:37:64.07852: FLOPPY: Sense interrupt: ST0=C0, Currentcylinder=00
00:00:37:64.07888: FLOPPY: MSR changed: d0
00:00:37:64.07892: FLOPPY: Read MSR=D0
00:00:37:64.07916: FLOPPY: Reading result byte 1/2=C0
00:00:37:64.07964: FLOPPY: Read MSR=D0
00:00:37:64.08008: FLOPPY: Read MSR=D0
00:00:37:64.08052: FLOPPY: Reading result byte 2/2=00
00:00:37:64.08116: FLOPPY: MSR changed: 80
00:00:37:64.08120: FLOPPY: Read MSR=80
00:00:37:64.08200: FLOPPY: Read MSR=80
00:00:37:64.08228: FLOPPY: Command byte sent: 03
00:00:37:64.08236: FLOPPY: Reset for all drives has been finished!
00:00:37:64.08272: FLOPPY: MSR changed: 90
00:00:37:64.08276: FLOPPY: Read MSR=90
00:00:37:64.08296: FLOPPY: Parameter sent: CF(#1/2)
00:00:37:64.08340: FLOPPY: Read MSR=90
00:00:37:64.08356: FLOPPY: Parameter sent: 02(#2/2)
00:00:37:64.08364: FLOPPY: executing command: 03
00:00:37:64.08960: FLOPPY: Write DOR=1C
00:00:37:64.09032: FLOPPY: MSR changed: 80
00:00:37:64.09036: FLOPPY: Read MSR=80
00:00:37:64.09060: FLOPPY: Command byte sent: 07
00:00:37:64.09096: FLOPPY: MSR changed: 90
00:00:37:64.09096: FLOPPY: Read MSR=90
00:00:37:64.09120: FLOPPY: Parameter sent: 00(#1/1)
00:00:37:64.09124: FLOPPY: executing command: 07
00:00:37:66.05068: FLOPPY: MSR changed: 80
00:00:37:66.05072: FLOPPY: Read MSR=80
00:00:37:66.05100: FLOPPY: Command byte sent: 0F
00:00:37:66.05140: FLOPPY: MSR changed: 90
00:00:37:66.05140: FLOPPY: Read MSR=90
00:00:37:66.05160: FLOPPY: Parameter sent: 00(#1/2)
00:00:37:66.05204: FLOPPY: Read MSR=90
00:00:37:66.05228: FLOPPY: Parameter sent: 00(#2/2)
00:00:37:66.05232: FLOPPY: executing command: 0F
00:00:37:67.08720: FLOPPY: MSR changed: 80
00:00:37:67.08724: FLOPPY: Read MSR=80
00:00:37:67.08748: FLOPPY: Command byte sent: 08
00:00:37:67.08752: FLOPPY: executing command: 08
00:00:37:67.08760: FLOPPY: Sense interrupt: ST0=20, Currentcylinder=00
00:00:37:67.08796: FLOPPY: MSR changed: d0
00:00:37:67.08800: FLOPPY: Read MSR=D0
00:00:37:67.08820: FLOPPY: Reading result byte 1/2=20
00:00:37:67.08868: FLOPPY: Read MSR=D0
00:00:37:67.08912: FLOPPY: Read MSR=D0
00:00:37:67.08932: FLOPPY: Reading result byte 2/2=00
00:00:37:67.08980: FLOPPY: MSR changed: 80
00:00:37:67.08980: FLOPPY: Read MSR=80
00:00:37:71.08664: FLOPPY: Read MSR=80
00:00:37:71.08688: FLOPPY: Command byte sent: E6
00:00:37:71.08736: FLOPPY: MSR changed: 90
00:00:37:71.08740: FLOPPY: Read MSR=90
00:00:37:71.08760: FLOPPY: Parameter sent: 00(#1/8)
00:00:37:71.08820: FLOPPY: Read MSR=90
00:00:37:71.08844: FLOPPY: Parameter sent: 00(#2/8)
00:00:37:71.08884: FLOPPY: Read MSR=90
00:00:37:71.08904: FLOPPY: Parameter sent: 00(#3/8)
00:00:37:71.08944: FLOPPY: Read MSR=90
00:00:37:71.08972: FLOPPY: Parameter sent: 06(#4/8)
00:00:37:71.09016: FLOPPY: Read MSR=90
00:00:37:71.09036: FLOPPY: Parameter sent: 02(#5/8)
00:00:37:71.09076: FLOPPY: Read MSR=90
00:00:37:71.09100: FLOPPY: Parameter sent: 09(#6/8)
00:00:37:71.09144: FLOPPY: Read MSR=90
00:00:37:71.09164: FLOPPY: Parameter sent: 2A(#7/8)
00:00:37:71.09204: FLOPPY: Read MSR=90
00:00:37:71.09228: FLOPPY: Parameter sent: FF(#8/8)
00:00:37:71.09232: FLOPPY: executing command: 06
00:00:37:71.09236: FLOPPY: Read sector #5
00:00:37:71.09240: FLOPPY: Sector size: 512 bytes
00:00:37:71.09244: FLOPPY: Requesting transfer for 512 bytes.
00:00:37:71.09332: FLOPPY: Start transfer of data (DMA: 1)...
00:00:37:72.00136: FLOPPY: Finished transfer of data (1 sectors).
00:00:37:72.00248: FLOPPY: MSR changed: d0
00:00:37:72.00252: FLOPPY: Read MSR=D0
00:00:37:72.00272: FLOPPY: Reading result byte 1/7=20
00:00:37:72.00320: FLOPPY: Read MSR=D0
00:00:37:72.00360: FLOPPY: Read MSR=D0
00:00:37:72.00380: FLOPPY: Reading result byte 2/7=00
00:00:37:72.00428: FLOPPY: Read MSR=D0
00:00:37:72.00468: FLOPPY: Read MSR=D0
00:00:37:72.00484: FLOPPY: Reading result byte 3/7=00
00:00:37:72.00532: FLOPPY: Read MSR=D0
00:00:37:72.00576: FLOPPY: Read MSR=D0
00:00:37:72.00596: FLOPPY: Reading result byte 4/7=00
00:00:37:72.00644: FLOPPY: Read MSR=D0
00:00:37:72.00688: FLOPPY: Read MSR=D0
00:00:37:72.00708: FLOPPY: Reading result byte 5/7=00
00:00:37:72.00752: FLOPPY: Read MSR=D0
00:00:37:72.00792: FLOPPY: Read MSR=D0
00:00:37:72.00812: FLOPPY: Reading result byte 6/7=07
00:00:37:72.00860: FLOPPY: Read MSR=D0
00:00:37:72.00900: FLOPPY: Read MSR=D0
00:00:37:72.00920: FLOPPY: Reading result byte 7/7=02
00:00:37:72.00964: FLOPPY: MSR changed: 80
00:00:37:72.00968: FLOPPY: Read MSR=80
00:00:37:72.01768: FLOPPY: Write DOR=1C
00:00:37:72.01828: FLOPPY: Read MSR=80
00:00:37:72.01856: FLOPPY: Command byte sent: 0F
00:00:37:72.01892: FLOPPY: MSR changed: 90
00:00:37:72.01896: FLOPPY: Read MSR=90
00:00:37:72.01920: FLOPPY: Parameter sent: 00(#1/2)
00:00:37:72.02004: FLOPPY: Read MSR=90
00:00:37:72.02028: FLOPPY: Parameter sent: 00(#2/2)
00:00:37:72.02036: FLOPPY: executing command: 0F
00:00:37:73.08256: FLOPPY: MSR changed: 80
00:00:37:73.08260: FLOPPY: Read MSR=80
00:00:37:73.08284: FLOPPY: Command byte sent: 08
00:00:37:73.08288: FLOPPY: executing command: 08
00:00:37:73.08296: FLOPPY: Sense interrupt: ST0=20, Currentcylinder=00
00:00:37:73.08332: FLOPPY: MSR changed: d0
00:00:37:73.08336: FLOPPY: Read MSR=D0
00:00:37:73.08356: FLOPPY: Reading result byte 1/2=20
00:00:37:73.08404: FLOPPY: Read MSR=D0
00:00:37:73.08448: FLOPPY: Read MSR=D0
00:00:37:73.08468: FLOPPY: Reading result byte 2/2=00
00:00:37:73.08512: FLOPPY: MSR changed: 80
00:00:37:73.08516: FLOPPY: Read MSR=80
00:00:37:77.04496: FLOPPY: Read MSR=80
00:00:37:77.04532: FLOPPY: Command byte sent: E6
00:00:37:77.04596: FLOPPY: MSR changed: 90
00:00:37:77.04600: FLOPPY: Read MSR=90
00:00:37:77.04644: FLOPPY: Parameter sent: 04(#1/8)
00:00:37:77.04712: FLOPPY: Read MSR=90
00:00:37:77.04744: FLOPPY: Parameter sent: 00(#2/8)
00:00:37:77.04808: FLOPPY: Read MSR=90
00:00:37:77.04852: FLOPPY: Parameter sent: 01(#3/8)
00:00:37:77.04912: FLOPPY: Read MSR=90
00:00:37:77.04936: FLOPPY: Parameter sent: 04(#4/8)
00:00:37:77.04976: FLOPPY: Read MSR=90
00:00:37:77.04996: FLOPPY: Parameter sent: 02(#5/8)
00:00:37:77.05036: FLOPPY: Read MSR=90
00:00:37:77.05060: FLOPPY: Parameter sent: 09(#6/8)
00:00:37:77.05104: FLOPPY: Read MSR=90
00:00:37:77.05128: FLOPPY: Parameter sent: 2A(#7/8)
00:00:37:77.05180: FLOPPY: Read MSR=90
00:00:37:77.05212: FLOPPY: Parameter sent: FF(#8/8)
00:00:37:77.05216: FLOPPY: executing command: 06
00:00:37:77.05220: FLOPPY: Read sector #12
00:00:37:77.05224: FLOPPY: Sector size: 512 bytes
00:00:37:77.05232: FLOPPY: Requesting transfer for 512 bytes.
00:00:37:77.05384: FLOPPY: Start transfer of data (DMA: 1)...
00:00:37:77.06392: FLOPPY: Finished transfer of data (1 sectors).
00:00:37:77.06564: FLOPPY: MSR changed: d0
00:00:37:77.06568: FLOPPY: Read MSR=D0
00:00:37:77.06588: FLOPPY: Reading result byte 1/7=24
00:00:37:77.06640: FLOPPY: Read MSR=D0
00:00:37:77.06692: FLOPPY: Read MSR=D0
00:00:37:77.06732: FLOPPY: Reading result byte 2/7=00
00:00:37:77.06800: FLOPPY: Read MSR=D0
00:00:37:77.06848: FLOPPY: Read MSR=D0
00:00:37:77.06880: FLOPPY: Reading result byte 3/7=00
00:00:37:77.06944: FLOPPY: Read MSR=D0
00:00:37:77.07008: FLOPPY: Read MSR=D0
00:00:37:77.07048: FLOPPY: Reading result byte 4/7=00
00:00:37:77.07112: FLOPPY: Read MSR=D0
00:00:37:77.07160: FLOPPY: Read MSR=D0
00:00:37:77.07180: FLOPPY: Reading result byte 5/7=01
00:00:37:77.07224: FLOPPY: Read MSR=D0
00:00:37:77.07264: FLOPPY: Read MSR=D0
00:00:37:77.07284: FLOPPY: Reading result byte 6/7=05
00:00:37:77.07332: FLOPPY: Read MSR=D0
00:00:37:77.07372: FLOPPY: Read MSR=D0
00:00:37:77.07388: FLOPPY: Reading result byte 7/7=02
00:00:37:77.07436: FLOPPY: MSR changed: 80
00:00:37:77.07440: FLOPPY: Read MSR=80
00:00:37:77.07960: FLOPPY: Write DOR=1C
00:00:37:77.08032: FLOPPY: Read MSR=80
00:00:37:77.08052: FLOPPY: Command byte sent: 0F
00:00:37:77.08084: FLOPPY: MSR changed: 90
00:00:37:77.08088: FLOPPY: Read MSR=90
00:00:37:77.08112: FLOPPY: Parameter sent: 00(#1/2)
00:00:37:77.08184: FLOPPY: Read MSR=90
00:00:37:77.08224: FLOPPY: Parameter sent: 00(#2/2)
00:00:37:77.08228: FLOPPY: executing command: 0F
00:00:37:79.02116: FLOPPY: MSR changed: 80
00:00:37:79.02120: FLOPPY: Read MSR=80
00:00:37:79.02148: FLOPPY: Command byte sent: 08
00:00:37:79.02152: FLOPPY: executing command: 08
00:00:37:79.02160: FLOPPY: Sense interrupt: ST0=24, Currentcylinder=00
00:00:37:79.02204: FLOPPY: MSR changed: d0
00:00:37:79.02208: FLOPPY: Read MSR=D0
00:00:37:79.02228: FLOPPY: Reading result byte 1/2=24
00:00:37:79.02276: FLOPPY: Read MSR=D0
00:00:37:79.02320: FLOPPY: Read MSR=D0
00:00:37:79.02344: FLOPPY: Reading result byte 2/2=00
00:00:37:79.02412: FLOPPY: MSR changed: 80
00:00:37:79.02416: FLOPPY: Read MSR=80
00:00:37:82.08668: FLOPPY: Read MSR=80
00:00:37:82.08708: FLOPPY: Command byte sent: E6
00:00:37:82.08756: FLOPPY: MSR changed: 90
00:00:37:82.08760: FLOPPY: Read MSR=90
00:00:37:82.08784: FLOPPY: Parameter sent: 04(#1/8)
00:00:37:82.08832: FLOPPY: Read MSR=90
00:00:37:82.08860: FLOPPY: Parameter sent: 00(#2/8)
00:00:37:82.08900: FLOPPY: Read MSR=90
00:00:37:82.08920: FLOPPY: Parameter sent: 01(#3/8)
00:00:37:82.08960: FLOPPY: Read MSR=90
00:00:37:82.08980: FLOPPY: Parameter sent: 05(#4/8)
00:00:37:82.09024: FLOPPY: Read MSR=90
00:00:37:82.09048: FLOPPY: Parameter sent: 02(#5/8)
00:00:37:82.09088: FLOPPY: Read MSR=90
00:00:37:82.09108: FLOPPY: Parameter sent: 09(#6/8)
00:00:37:82.09152: FLOPPY: Read MSR=90
00:00:37:82.09172: FLOPPY: Parameter sent: 2A(#7/8)
00:00:37:82.09220: FLOPPY: Read MSR=90
00:00:37:82.09240: FLOPPY: Parameter sent: FF(#8/8)
00:00:37:82.09244: FLOPPY: executing command: 06
00:00:37:82.09248: FLOPPY: Read sector #13
00:00:37:82.09252: FLOPPY: Sector size: 512 bytes
00:00:37:82.09260: FLOPPY: Requesting transfer for 512 bytes.
00:00:37:82.09348: FLOPPY: Start transfer of data (DMA: 1)...
00:00:37:83.02868: FLOPPY: Finished transfer of data (1 sectors).
00:00:37:83.02988: FLOPPY: MSR changed: d0
00:00:37:83.02992: FLOPPY: Read MSR=D0
00:00:37:83.03016: FLOPPY: Reading result byte 1/7=24
00:00:37:83.03060: FLOPPY: Read MSR=D0
00:00:37:83.03104: FLOPPY: Read MSR=D0
00:00:37:83.03128: FLOPPY: Reading result byte 2/7=00
00:00:37:83.03172: FLOPPY: Read MSR=D0
00:00:37:83.03232: FLOPPY: Read MSR=D0
00:00:37:83.03248: FLOPPY: Reading result byte 3/7=00
00:00:37:83.03300: FLOPPY: Read MSR=D0
00:00:37:83.03344: FLOPPY: Read MSR=D0
00:00:37:83.03364: FLOPPY: Reading result byte 4/7=00
00:00:37:83.03408: FLOPPY: Read MSR=D0
00:00:37:83.03448: FLOPPY: Read MSR=D0
00:00:37:83.03472: FLOPPY: Reading result byte 5/7=01
00:00:37:83.03544: FLOPPY: Read MSR=D0
00:00:37:83.03584: FLOPPY: Read MSR=D0
00:00:37:83.03604: FLOPPY: Reading result byte 6/7=06
00:00:37:83.03652: FLOPPY: Read MSR=D0
00:00:37:83.03696: FLOPPY: Read MSR=D0
00:00:37:83.03712: FLOPPY: Reading result byte 7/7=02
00:00:37:83.03764: FLOPPY: MSR changed: 80
00:00:37:83.03764: FLOPPY: Read MSR=80
00:00:37:83.04356: FLOPPY: Write DOR=1C
00:00:37:83.04416: FLOPPY: Read MSR=80
00:00:37:83.04440: FLOPPY: Command byte sent: 0F
00:00:37:83.04476: FLOPPY: MSR changed: 90
00:00:37:83.04480: FLOPPY: Read MSR=90
00:00:37:83.04500: FLOPPY: Parameter sent: 00(#1/2)
00:00:37:83.04540: FLOPPY: Read MSR=90
00:00:37:83.04564: FLOPPY: Parameter sent: 00(#2/2)
00:00:37:83.04568: FLOPPY: executing command: 0F
00:00:37:84.08108: FLOPPY: MSR changed: 80
00:00:37:84.08112: FLOPPY: Read MSR=80
00:00:37:84.08136: FLOPPY: Command byte sent: 08
00:00:37:84.08144: FLOPPY: executing command: 08
00:00:37:84.08152: FLOPPY: Sense interrupt: ST0=24, Currentcylinder=00
00:00:37:84.08188: FLOPPY: MSR changed: d0
00:00:37:84.08192: FLOPPY: Read MSR=D0
00:00:37:84.08220: FLOPPY: Reading result byte 1/2=24
00:00:37:84.08276: FLOPPY: Read MSR=D0
00:00:37:84.08320: FLOPPY: Read MSR=D0
00:00:37:84.08340: FLOPPY: Reading result byte 2/2=00
00:00:37:84.08384: FLOPPY: MSR changed: 80
00:00:37:84.08388: FLOPPY: Read MSR=80
00:00:37:88.08716: FLOPPY: Read MSR=80
00:00:37:88.08744: FLOPPY: Command byte sent: E6
00:00:37:88.08800: FLOPPY: MSR changed: 90
00:00:37:88.08804: FLOPPY: Read MSR=90
00:00:37:88.08832: FLOPPY: Parameter sent: 04(#1/8)
00:00:37:88.08884: FLOPPY: Read MSR=90
00:00:37:88.08904: FLOPPY: Parameter sent: 00(#2/8)
00:00:37:88.08948: FLOPPY: Read MSR=90
00:00:37:88.08972: FLOPPY: Parameter sent: 01(#3/8)
00:00:37:88.09012: FLOPPY: Read MSR=90
00:00:37:88.09032: FLOPPY: Parameter sent: 06(#4/8)
00:00:37:88.09072: FLOPPY: Read MSR=90
00:00:37:88.09096: FLOPPY: Parameter sent: 02(#5/8)
00:00:37:88.09140: FLOPPY: Read MSR=90
00:00:37:88.09160: FLOPPY: Parameter sent: 09(#6/8)
00:00:37:88.09200: FLOPPY: Read MSR=90
00:00:37:88.09220: FLOPPY: Parameter sent: 2A(#7/8)
00:00:37:88.09284: FLOPPY: Read MSR=90
00:00:37:88.09308: FLOPPY: Parameter sent: FF(#8/8)
00:00:37:88.09312: FLOPPY: executing command: 06
00:00:37:88.09316: FLOPPY: Read sector #14
00:00:37:88.09320: FLOPPY: Sector size: 512 bytes
00:00:37:88.09324: FLOPPY: Requesting transfer for 512 bytes.
00:00:37:88.09448: FLOPPY: Start transfer of data (DMA: 1)...
00:00:37:89.00204: FLOPPY: Finished transfer of data (1 sectors).
00:00:37:89.00340: FLOPPY: MSR changed: d0
00:00:37:89.00344: FLOPPY: Read MSR=D0
00:00:37:89.00364: FLOPPY: Reading result byte 1/7=24
00:00:37:89.00412: FLOPPY: Read MSR=D0
00:00:37:89.00452: FLOPPY: Read MSR=D0
00:00:37:89.00472: FLOPPY: Reading result byte 2/7=00
00:00:37:89.00520: FLOPPY: Read MSR=D0
00:00:37:89.00560: FLOPPY: Read MSR=D0
00:00:37:89.00580: FLOPPY: Reading result byte 3/7=00
00:00:37:89.00624: FLOPPY: Read MSR=D0
00:00:37:89.00668: FLOPPY: Read MSR=D0
00:00:37:89.00688: FLOPPY: Reading result byte 4/7=00
00:00:37:89.00732: FLOPPY: Read MSR=D0
00:00:37:89.00796: FLOPPY: Read MSR=D0
00:00:37:89.00816: FLOPPY: Reading result byte 5/7=01
00:00:37:89.00864: FLOPPY: Read MSR=D0
00:00:37:89.00904: FLOPPY: Read MSR=D0
00:00:37:89.00920: FLOPPY: Reading result byte 6/7=07
00:00:37:89.00964: FLOPPY: Read MSR=D0
00:00:37:89.01008: FLOPPY: Read MSR=D0
00:00:37:89.01028: FLOPPY: Reading result byte 7/7=02
00:00:37:89.01080: FLOPPY: MSR changed: 80
00:00:37:89.01084: FLOPPY: Read MSR=80
00:00:40:62.09144: FLOPPY: Write DOR=0C

It seems to be doing something now on that MS-DOS 3.3 boot process. Nothing is output though(empty screen). Probably the first 3 sectors of IO.SYS(Sectors 12-14)?

Edit: Confirmed: those are the first 3 sectors of IO.SYS's file contents. After that, it hangs for some reason?

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

Reply 27 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

The source code of the emulator supports breakpoints through(it's in emucore.c). Currently still unsupported from the Settings menu.

Repo: https://bitbucket.org/superfury/unipcemu.git

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

Reply 28 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've just released the fix for the interrupt request line of the FDC, with address breakpoints now being supported through the settings menu(real mode, protected mode(Using P suffix) or virtual 8086 mode(Using V suffix), which is combined with the segment:offset pointer that's set). Can you see what's going wrong?

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

Reply 30 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've just added a quick fix for the broken debugger that activated too soon(the OUT instruction that activates the debugger was debugged as well, with missing register states and information). It can be found at the UniPCemu release thread.

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

Reply 31 of 35, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

Unfortunately, I cannot reproduce the problem --- the new version of the emulator just boots DOS 3.3 without any problems. 😀 I don't have an IDE BIOS ROM in the rom folder though.

Reply 32 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmmm... Strange that the bug disappears by an update that should have nothing to do with it:p Nice that it runs again though. Good luck with the review. I'm looking forward to it.

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

Reply 33 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've added some information about some missing chip information(Atmel chips used for the OPTROM.*.BIN files, as well as video ROMs used) to the wiki. I've added some infomation to the main emulated list about the current CD-ROM emulation(which is essentially complete, just no drivers to test it with (on the 80286 CPU) yet). I've also added some information to the debugger section about the possible options to debug applications running within UniPCemu(all options that have to do with debugging in the CPU Settings menu, as well as simple descriptions about their usage).

https://bitbucket.org/superfury/unipcemu/wiki/

You can check that for any information on using UniPCemu's Settings.

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

Reply 34 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

Said problems should have long been fixed by now. Could you try again? (Mostly seeking problems due to incorrect seek times(which are taking too long due to a gigantic incorrect multiplication of actually correct track seek times(2 seconds for all tracks instead of a fraction of a second).

The manual now also has some information about the ROMs to be used and BIOS configuration(XT-IDE Universal BIOS) can be found at the manual wiki.

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

Reply 35 of 35, by superfury

User metadata
Rank l33t++
Rank
l33t++

Also, the project page on itch.io also supports reviews itself. That way you can reach anyone actually searching for the app.

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