VOGONS

Common searches


Search results

Display options

Re: Why is the PG bit of CR0 of the 80386 at bit 31?

By the way, is it possible to use the paging unit from 16bit protected mode (on 386) ? Please excuse my ignorance. I know, this is probably a silly question, but I never thought about this. I would be interesting to know, though. Imagine a 16bit operating system, like OS/2 1.x, had the ability to …

Re: IBM PC AT emulation crashing?

So I would need to change ALL bitfields used in my emulator to bytes/words/dwords/uint_64 and use a support #define getbits(field,shift,mask) ((field>>shift)&mask) #define setbits(field,shift,mask,value) field=((field&(~(mask<

Re: IBM PC AT emulation crashing?

It now issues one(or two) recalibrates, then executes a seek. which fails on the mounted check (the lines within the is_mounted if-clause gets executed), then throws a 601 error again. Edit: Changing it a bit, based on Bochs' floppy.cc: - Sense interrupt (reset 1/2) - Sense interrupt (reset 2/2) - …

Re: IBM PC AT emulation crashing?

I've modified the FDC to save the current IR line status for Sense Interrupt and lower the IR line after saving it, before handling the written data itself. Sense Interrupt now uses that stored last IR status(before lowering) to determine invalid calls(which lock up the controller until reset). …

Re: IBM PC AT emulation crashing?

So essentially all interrupts raising by the FDC operate by lowering and raising the IRQ line each time an execution phase ends? So not only raised(or kept raised) when an execution phase ends and only lower when an Sense Interrupt is received?

Re: IBM PC AT emulation crashing?

I've changed the setting of ST2 to 0x00 instead during seek to an invalid track. My latest source code: https://bitbucket.org/superfury/unipcemu/src/99f267f5cb8f160404d30e5a52746b733fa1871b/UniPCemu/hardware/floppy.c?at=master - Recalibrate always returns success, no matter what the floppy disk …

Re: IBM PC AT emulation crashing?

Then what DO seek/recal commands return? Are they always reporting success on both seek and recalibrate even without enough tracks(seek) or no floppy disk inserted? This is what my seek command currently does when executed: case SEEK: //Seek/park head FLOPPY.commandstep = 0; //Reset controller …

Re: IBM PC AT emulation crashing?

Even after those latest improvements, it still errors out immediately after the RECALIBRATE command for some reason. It doesn't even get to interpreting the ST0 value. It simply reports the 601 error immediately after issuing the recalibrate command? The command resets the controller back to state …

Re: IBM PC AT emulation crashing?

So if there's no floppy disk inserted into the drive, it will give a success code(my if clause not used case), the only difference between an existing and non-existing floppy disk being inserted or not being the TRK0 bit? So it will be 1 when a disk is present, but 0 when no disk is inserted? So the …

Re: IBM PC AT emulation crashing?

Not exactly. has_drive returns 1 when a storage medium(disk image file) is present and mounted in the specified slot. Otherwise 0. In this case it returns 0, since I don't have a floppy disk image mounted in the emulator Settings. Compare it to Dosbox state of imgmount used successfully vs after " …

Re: IBM PC AT emulation crashing?

I don't mean no drive is connected. Just that no disk is inserted in the drive(existing drive without disk inserted). This is the current result(based on Bochs code): case RECALIBRATE: //Calibrate drive //Execute interrupt! FLOPPY.commandstep = 0; //Reset controller command status! FLOPPY. …

Re: IBM PC AT emulation crashing?

I'm currently trying to fix the floppy disk controller used by the AT BIOS. Currently, it's emulating a 82072A floppy disk controller. I see it emitting various commands before giving the error: 1. Sense interrupt, resulting bytes C0h 00h. 2. Sense interrupt, resulting bytes D1h, 00h. 3. Recalibrate …

Re: IBM PC AT emulation crashing?

That could be, but if so, how would I find the offending instruction? Since even advanced 8086 instructions run without error, it has to be a 80186+ instruction that causes it? 8086 instructions: https://bitbucket.org/superfury/unipcemu/src/3c3fb322c025a95d4ce8dfac8705c2f287bba53f/UniPCemu/cpu/ …

Re: IBM PC AT emulation crashing?

Hmmm... Then why do all of the AT diagnostics disks I can find try to execute FS:, GS: or 32-bit (operand/address size) prefixes? Even the one that's supposed to be for the IBM 5170. Why would a program intended for the 5170(80286-8) use 80386+ instructions, causing it to enter an infinite loop(#UD) …

Re: IBM PC AT emulation crashing?

With the latest registers applied, DOTT showing the save confirmation now, but becomes unresponsive, due to some loop reading port 0007(DMA channel 3 word count)? So it's waiting for some DMA channel 3 device, which isn't connected on my AT emulation? According to https://www.manualslib.com/manual/ …

Re: IBM PC AT emulation crashing?

According to https://www.google.ch/patents/US5822778 the 80286 uses the FS and GS segments (just like the 80386), even though most documentations (like http://ref.x86asm.net/coder32.html#x65 ) mark the instructions prefixes as 80386+? I've modified the CPU core to use and allow the FS and GS …

Re: IBM PC AT emulation crashing?

I've just tried to run the DSETTUP.COM from MS-DOS 5.0 (not booted from the 360K floppy disk) on the hard disk. It crashes executing opcode 65h(GS segment prefix)? This doesn't exist on the 80286 CPU, or does it? It's executing at 0000:0436(Real mode). Trying to run DDIAG.COM executes opcode 64h(FS …

Re: IBM PC AT emulation crashing?

Well, now the divide error and hardware interrupts are fixed(there was a problem with the keyboard handling, as well as the way interrupts were detected and processed, causing an invalid IRQ to become interrupt 0h, which is the divide by zero exception, causing the division errors). This also fixes …

Page 221 of 275