Commit Graph

15759 Commits

Author SHA1 Message Date
Jonathan Campbell
03c919a51f incorporated cpu.diff from DOSBox forums to allow B (big) mode real mode
DOS demos like Project Angel. To explain: the demo apparently relies on
the same protected mode hack DOS demos usually do to enable Flat Real
Mode, but Project Angel also uses it to enable the B bit to effectively
set up a 32-bit flat real mode (32-bit code in real mode!). At least
that's what I think it's doing. It would explain all the complaints
about not being able to run the demo, and why this patch makes it work.

People (rightfully so) complained that the patch might break virtual
8086 mode emulation. I'm also concerned about whether or not this patch
breaks anything, so the patch is conditional: it's there if you enable
it by setting realbig16=true in the [cpu] section of your dosbox.conf,
otherwise, DOSBox-X retains original behavior of always clearing the BIG
bit in the code segment cache.
2014-01-18 11:44:59 -08:00
Jonathan Campbell
d3033a5f85 force default scaler to normal2x. change memory emu so adapter ROM is
0xFF not 0x00 (but only in select areas).
2014-01-16 07:39:48 -08:00
Jonathan Campbell
70c51c4239 rename debug.com image to debugx.exe to avoid conflicting with DOSBox-s
debug command.
2014-01-15 23:54:31 -08:00
Jonathan Campbell
48016b028a add hexmem utility as built-in. 2014-01-15 23:51:55 -08:00
Jonathan Campbell
d32155ec68 incorporate DEBUG.COM (from FreeDOS) as built-in binary image. 2014-01-15 23:38:09 -08:00
Jonathan Campbell
ae0c1003bf remove unused savestate stuff 2014-01-14 22:33:29 -08:00
Jonathan Campbell
89ba64bf54 remove unused DMA code 2014-01-14 22:32:48 -08:00
Jonathan Campbell
0c84383c0b disable debug stuff again 2013-12-01 20:05:17 -08:00
Jonathan Campbell
4135ba554c fix the MODE SENSE reporting format 2013-12-01 19:47:36 -08:00
Jonathan Campbell
e2ecd906e1 more work 2013-12-01 14:18:52 -08:00
Jonathan Campbell
2eac37a643 IDE: remove CD playback from stopping playback when len == 0 2013-12-01 12:56:23 -08:00
Jonathan Campbell
91e441ba74 CD playback---it works!!!! 2013-12-01 12:32:34 -08:00
Jonathan Campbell
e95d1d86e1 mode sense completion 2013-12-01 11:29:31 -08:00
Jonathan Campbell
78df391653 more work. mode sense 2013-12-01 11:11:50 -08:00
Jonathan Campbell
2a067a48e6 ide: add CD audio emulation, work towards getting Win95 to play audio
CDs, fixup TOC function to return full TOC
2013-12-01 01:56:18 -08:00
Jonathan Campbell
2da0b80b08 move commands to functions 2013-12-01 00:17:19 -08:00
Jonathan Campbell
29315ee150 ide: autoincrement bugfix for LBA mode. ide command printing now prints
lba sector number if lba mode, chs otherwise
2013-11-16 01:04:22 -08:00
Jonathan Campbell
2c8db646a8 ide: update identify 2013-11-16 00:46:31 -08:00
Jonathan Campbell
01c059892f ide: add code to emulate INITIALIZE DRIVE PARAMETERS 2013-11-16 00:34:50 -08:00
Jonathan Campbell
168c97310e add "apmbios" configuration option to enable/disable the APM BIOS
emulation
2013-11-15 23:39:42 -08:00
Jonathan Campbell
0d6699b956 ide: fire the right IRQ instead of IRQ 14 2013-11-15 21:13:50 -08:00
Jonathan Campbell
d0a9b971e4 ide: add READ VERIFY commands 0x40 and 0x41 2013-11-15 02:03:06 -08:00
Jonathan Campbell
93bc6096d6 ide: add recalibrate command emulation 2013-11-12 19:19:00 -08:00
Jonathan Campbell
cea754dac6 ide: update identify block 2013-11-12 02:22:13 -08:00
Jonathan Campbell
79c2450f76 ide: update DEVICE RESET to zero all but the one specific status bit.
added NOP emulation to fail the command in a very specific way required
by the ATA standard.
2013-11-12 01:55:24 -08:00
Jonathan Campbell
3e2e2064ff BIOS: IRQ 14 and 15 need to be associated with INT 0x76 and 0x77 2013-11-11 02:53:14 -08:00
Jonathan Campbell
b3f1b5a129 IDE: reduce ATA IDENTIFY DEVICE delay to 10us down from 1ms. 2013-11-11 02:36:30 -08:00
Jonathan Campbell
54f76d40fa ide: change IDE object to have host_reset_begin() and
host_reset_complete() to better simulate driver reset via 3F6
2013-11-02 13:37:28 -07:00
Jonathan Campbell
41481b3655 modify config file writer not to print the property name as a comment if
there is nothing to say about it.
2013-11-02 13:05:22 -07:00
Jonathan Campbell
6445feb63d change dosbox property object to store help strings itself instead of
through MSG_Add/MSG_Get (what were they thinking?). convert redundant
IDE section code to a loop.
2013-11-02 12:57:16 -07:00
Jonathan Campbell
758a3ac450 ide: do not set any bits in WORD 48, we don't do 32-bit PIO yet 2013-11-02 12:22:59 -07:00
Jonathan Campbell
422a7f7406 remove "initializing vm86 fake I/O" message 2013-10-29 23:38:45 -07:00
Jonathan Campbell
93ff43f83a CPU normal: modify conditional jump macros to make them atomic--either
they load the address and modify reg_eip, or they leave reg_eip as-is.
This seems to resolve some crashes with Windows 98.
2013-10-29 23:22:08 -07:00
Jonathan Campbell
fef86c2b3c cpu paging: if the pf_queue.used level goes beyond 1, it may be a
recursive page fault and it may be a Win98 issue with DOSBox that the
value never goes down.
2013-10-29 23:21:35 -07:00
Jonathan Campbell
1704c607ad DOSBox paging: error out if page fault queue exceeds array limit. Raise
page fault queue limit. Minor cleanup.
2013-10-29 15:21:43 -07:00
Jonathan Campbell
4b0a059f79 IDE: De-clutter I/O by moving C/H/S and LBA auto-increment to one
function. Clean up code, fix mistakes, that can cause Windows 9x to
read/write the wrong data if more than one track's worth of data is
operated on.
2013-10-27 22:36:03 -07:00
Jonathan Campbell
860379ae26 IDE: bugfix C/H/S address increment code NOT to assume 16 heads/track 2013-10-27 13:31:32 -07:00
Jonathan Campbell
f2754af41a IDE: Copy-paste C/H/S out of bounds error message to the other READ
command (whoops). Added code to severely reduce ALL IDE delays IF the
command is "faked" by INT 13h (in other words if command was issued by
virtual 8086 mode fake I/O code). Hopefully this will improve Win9x
performance especially during Setup.
2013-10-27 12:58:09 -07:00
Jonathan Campbell
ca5a9f0bb3 IDE: Reduce read/write delays. For multisector (meaning: READ commands
with multiple sectors NOT READ MULTISECTOR), use the normal delay for
only the first sector, then use an extremely small delay for the rest of
the command. This makes Win95 OSR2 and Win98 more responsive.
2013-10-27 12:41:56 -07:00
Jonathan Campbell
dac613735a IDE: remove #if 0 blocks 2013-10-27 12:08:14 -07:00
Jonathan Campbell
e79ea93b32 IDE: change ATA IDENTIFY DEVICE to reflect an older drive 2013-10-27 00:48:37 -07:00
Jonathan Campbell
a051baa72a IDE: Add fake I/O emulation for INT 13h AH=0x42 extended disk read.
Assuming geometries match, this enables 32-bit disk access in Windows 95
OSR2.
2013-10-26 22:40:02 -07:00
Jonathan Campbell
cbbd85c4d2 IDE: Update geometry from BIOS mapping code to warn the user if the
geometry chosen cannot match the BIOS geometry cleanly, as that will
prevent Windows 95 from enabling it's 32-bit IDE driver.
2013-10-26 21:33:55 -07:00
Jonathan Campbell
01882c80f3 IDE: If remapping comes out to using 255 heads/track, then use ECHS type
mapping instead where we force heads=255 and sects=63 and
cylinders=however many 63*255 blocks are available.
2013-10-26 20:30:16 -07:00
Jonathan Campbell
cacfaf0b4c INT 13h: disk image code now correctly returns an error code instead of
silently failing and returning random garbage if fseek() or fread()
failed.
IDE: more work
2013-10-26 20:19:31 -07:00
Jonathan Campbell
a94e72ee86 ide: compensate for INT 13h code that counts sectors without regard for
track boundaries
2013-10-26 19:01:31 -07:00
Jonathan Campbell
5e9476ebbb add -D_FILE_OFFSET_BITS=64 to enable support for files >= 2GB 2013-10-26 17:08:33 -07:00
Jonathan Campbell
ad41dbfba0 add push-to-hackipedia script 2013-10-26 15:38:51 -07:00
Jonathan Campbell
991ba66e4b IDE: Don't announce ATA commands if we're sending them to ourself. I
want the appearance of "ATA command" debug messages to be one sign that
the OS is doing the IDE commands.
2013-10-26 15:25:34 -07:00
Jonathan Campbell
9e9a6957a5 IDE: add "initialize drive params" emulation (though it doesn't allow
changing them)
2013-10-26 15:21:01 -07:00