VOGONS


Reply 80 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++

The latest version of my emulator:

Filename
x86EMU.exe
File size
634 KiB
Downloads
45 downloads
File comment
The latest version of my emulator(build 2015/08/01 18:41)
File license
Fair use/fair dealing exception

New stuff:
- Updated framerate to include IPS/KIPS/MIPS(Instructions Per Second).
- Floppy: fixed partly filling during data transfers, implemented Fix drive data/Specify command and MT bit supported.
- Fixed timing issues (mainly with the new MIDI player support) and various timing bugs.
- Added MIDI options to the emulator (in the BIOS, goto Advanced, a new option for MIDI settings has been added):
-- Soundfont: Select the soundfont to use for rendering MIDI sounds. In older versions this was locked to MPU.SF2. Now you can choose it (it still requires a reboot to apply).
-- MIDI player: Select the file with up and down, press Cross/Play to play, Circle/Stop to stop playing and select a new file, press circle again to quit the player and return to the BIOS MIDI menu.
- Multiple SDL locks have been added to improve stability during runtime. Although it still seems to hang when debugging from Visual C++ when trying to terminate the application.
- The updated BIOS settings (BIOS.DAT) is incompatible with the previous BIOS settings (new data has been inserted). This has increased the BIOS.DAT version number (to version 2), making it incompatible with older BIOS.DAT versions. The BIOS.DAT loader has been updated to allow future updates of BIOS.DAT to read the current BIOS.DAT version, providing that the version number matches and the checksum is correct (new features will, by default, leave new settings zeroed, thus making the checksum identical (32-bit CRC)? Thus new BIOS data being non-existant in the file and zeroed by default before loading, will cause the BIOS to stay valid (since zero is added to the checksum(new fields appended to the configuration), the new fields will have it's default values set, and the checksum has nothing added, making a valid BIOS)?

The PSP version currently doesn't work anymore (it hangs when trying to initialise the video font color). This will need to be fixed later. Currently SDL locks have been disabled on the PSP for debugging purposes (I don't know if the PSP needs them at all, since it's using multitasking based on delays(a delay will cause the current thread to suspend and another to activate, defeating the purpose of locks, since locked parts will never use delays during it's execution?)).

I don't know if the Play/Stop keys will work on any keyboard, since they use the keyboard's scancodes directly (since SDL (the first version) doesn't seem to support them directly). Anyone can tell me if other keyboards work as well?

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

Reply 81 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++

This is my latest build of my emulator:

Filename
x86EMU_20150802_1720.zip
File size
359.39 KiB
Downloads
50 downloads
File comment
My latest build of my emulator (build 2015/08/02 17:20)
File license
Fair use/fair dealing exception

- Upgraded project to Visual C++ 2015 (Visual Studio 2015), SDL and SDL_gfx also rebuilt with the toolchain.
- Fixed bug in VGA text rendering (inline functions wouldn't compile).

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

Reply 82 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've been busy fixing the CPU instructions using the 80186 testsuite (It's found here: http://forum.osdev.org/viewtopic.php?f=13&t=23739&start=15 . The post by Artlav has the link with the .zip file containing the testsuite). According to the testsuite all instructions work as they're supposed to (the result files match the memory after execution of the test files are completed). This is my latest build with all the bugfixes:

Filename
x86EMU.exe
File size
630 KiB
Downloads
38 downloads
File comment
The latest version of my x86 emulator (build 2015/08/06 13:31).
File license
Fair use/fair dealing exception

For some reason MS-DOS 3.30 still refuses to boot. The CPU seems to be working fine? Is the emulated hardware at fault here? I also notice in my floppy disk controller log, that it keeps re-reading the same sectors over and over again (sectors 58@CHS 1,1,5 to sector 71@CHS 1,1,18). Afaik it's supposed to read up to this point, or is it an error in my FDC emulation?

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

Reply 83 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++
peterferrie wrote:
I'll have to investigate later what you're seeing. However, if you see reads to segment 0x70 while running from segment 0x70, t […]
Show full quote

I'll have to investigate later what you're seeing. However, if you see reads to segment 0x70 while running from segment 0x70, then that's your problem.
These are the reads that you should see:
9ea0:0 (9 sectors)
690:0 (6)
690:c00 (0x12)
690:3000 (0x12)
690:5400 (0x11)
986:10 (1)
b72:10 (1)
b72:10 (1)
b51:10 (1)
c8b:0 (1)
c8b:200 (0x12)
c8b:2600 (0x12)
c8b:4a00 (0x0c)
b30:10 (1)

It's currently running until the 690:5400 (0x11) part.

This is what I'm getting atm:

9ee0:0 (9 sectors)
690:0 (6)
690:c00 (0x12)
690:3000 (0x12)
690:5400 (0x11)

Anyone can tell me what's going wrong here?

Latest version:

Filename
x86EMU.exe
File size
630 KiB
Downloads
36 downloads
File comment
Latest x86EMU build (build 2015/08/06 18:27)
File license
Fair use/fair dealing exception

Also, can you tell me what each of those reads is supposed to be (what each block read actually is, like first 3 sectors of IO.SYS, reset of IO.SYS, nTh sector of MSDOS.SYS, COMMAND.COM, FAT entry etc.)?

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

Reply 84 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++

These are the last commands executed before crashing (calling the MS-DOS 21h handler, which points to a NULL vector (start executing 0000:0000):

0:02:39:95.9.0005: 0256:7239 (FC)CLD

0:02:39:95.9.0016: Registers:

0:02:39:95.9.0028: AX: 9D3D, BX: 0070, CX: 0000, DX: A000

0:02:39:95.9.0041: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:95.9.0053: SP: 096F, BP: 0005, SI: 016E, DI: A000

0:02:39:95.9.0063: IP: 7239, FLAGS: F682

0:02:39:95.9.0087: FLAGSINFO:c1p0a0zStIDo1111



0:02:39:95.9.0354: Writing to memory: 00001D1E=3D (=)

0:02:39:95.9.0368: Writing to memory: 00001D1F=9D ()

0:02:39:95.9.0384: 0256:723A (A31E16)MOVW [DS:161E],AX

0:02:39:95.9.0393: Registers:

0:02:39:95.9.0405: AX: 9D3D, BX: 0070, CX: 0000, DX: A000

0:02:39:95.9.0417: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:95.9.0430: SP: 096F, BP: 0005, SI: 016E, DI: A000

0:02:39:95.9.0440: IP: 723A, FLAGS: F282

0:02:39:95.9.0465: FLAGSINFO:c1p0a0zStIdo1111



0:02:39:95.9.0731: Writing to memory: 0009E93D=40 (@)

0:02:39:95.9.0745: Writing to memory: 0009E93E=72 (r)

0:02:39:95.9.0762: 0256:723D (E8A6F5)CALL 67E6

0:02:39:95.9.0770: Registers:

0:02:39:95.9.0783: AX: 9D3D, BX: 0070, CX: 0000, DX: A000

0:02:39:95.9.0795: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:95.9.0807: SP: 096F, BP: 0005, SI: 016E, DI: A000

0:02:39:95.9.0818: IP: 723D, FLAGS: F282

0:02:39:95.9.0875: FLAGSINFO:c1p0a0zStIdo1111



0:02:39:96.0.0245: 0256:67E6 (BAB202)MOVW DX, 02B2

0:02:39:96.0.0255: Registers:

Show last 106 lines
0:02:39:96.0.0267: AX: 9D3D, BX: 0070, CX: 0000, DX: A000

0:02:39:96.0.0280: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:96.0.0291: SP: 096D, BP: 0005, SI: 016E, DI: A000

0:02:39:96.0.0302: IP: 67E6, FLAGS: F282

0:02:39:96.0.0326: FLAGSINFO:c1p0a0zStIdo1111



0:02:39:96.0.0598: 0256:67E9 (B82225)MOVW AX, 2522

0:02:39:96.0.0609: Registers:

0:02:39:96.0.0621: AX: 9D3D, BX: 0070, CX: 0000, DX: 02B2

0:02:39:96.0.0633: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:96.0.0646: SP: 096D, BP: 0005, SI: 016E, DI: A000

0:02:39:96.0.0656: IP: 67E9, FLAGS: F282

0:02:39:96.0.0680: FLAGSINFO:c1p0a0zStIdo1111



0:02:39:96.0.0967: Writing to memory: 0000070A=B2 (²)

0:02:39:96.0.0981: Writing to memory: 0000070B=02 ()

0:02:39:96.0.0993: ModR/M address: 0070:000A=0000070A

0:02:39:96.1.0009: 0256:67EC (89160A00)MOVW [DS:000A],DX

0:02:39:96.1.0018: Registers:

0:02:39:96.1.0031: AX: 2522, BX: 0070, CX: 0000, DX: 02B2

0:02:39:96.1.0043: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:96.1.0055: SP: 096D, BP: 0005, SI: 016E, DI: A000

0:02:39:96.1.0065: IP: 67EC, FLAGS: F282

0:02:39:96.1.0090: FLAGSINFO:c1p0a0zStIdo1111



0:02:39:96.1.0368: Writing to memory: 0000070C=70 (p)

0:02:39:96.1.0382: Writing to memory: 0000070D=00 ( )

0:02:39:96.1.0394: ModR/M address: 0070:000C=0000070C

0:02:39:96.1.0410: 0256:67F0 (8C1E0C00)MOVW [DS:000C],DS

0:02:39:96.1.0419: Registers:

0:02:39:96.1.0430: AX: 2522, BX: 0070, CX: 0000, DX: 02B2

0:02:39:96.1.0538: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:96.1.0550: SP: 096D, BP: 0005, SI: 016E, DI: A000

0:02:39:96.1.0561: IP: 67F0, FLAGS: F282

0:02:39:96.1.0585: FLAGSINFO:c1p0a0zStIdo1111



0:02:39:96.1.0892: Writing to memory: 0009E93B=82 (‚)

0:02:39:96.1.0906: Writing to memory: 0009E93C=F2 (ò)

0:02:39:96.1.0918: Writing to memory: 0009E939=56 (V)

0:02:39:96.1.0929: Writing to memory: 0009E93A=02 ()

0:02:39:96.1.0941: Writing to memory: 0009E937=F6 (ö)

0:02:39:96.1.0952: Writing to memory: 0009E938=67 (g)

0:02:39:96.1.0964: Read from memory: 00000084=00 ( )

0:02:39:96.1.0975: Read from memory: 00000085=00 ( )

0:02:39:96.1.0986: Read from memory: 00000086=00 ( )

0:02:39:96.1.0998: Read from memory: 00000087=00 ( )

0:02:39:96.2.0012: 0256:67F4 (CD21)INT 21

0:02:39:96.2.0022: Registers:

0:02:39:96.2.0034: AX: 2522, BX: 0070, CX: 0000, DX: 02B2

0:02:39:96.2.0046: CS: 0256, DS: 0070, ES: 0256, SS: 9DFD

0:02:39:96.2.0058: SP: 096D, BP: 0005, SI: 016E, DI: A000

0:02:39:96.2.0069: IP: 67F4, FLAGS: F282

0:02:39:96.2.0093: FLAGSINFO:c1p0a0zStIdo1111

Anyone knows why there is no MS-DOS INT 21h vector installed?

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

Reply 86 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++

This is what I've found out so far (comparing it to the MS-DOS 3.30a source code):

048D:07F1=IO.SYS start
048D:08F4=SYSINIT in IO.SYS
9DFD:0942=SYSIN in IO.SYS
9DFD:0955=Move DOS to segment 256(64k bytes) using REP MOVSW.
9DFD:096A=CALL MSDOS ;CALL DOSINIT

Sector #33=IO.SYS first sector => DMA address 700 hex (segment 70). verified.
Sector #84(-89)=MSDOS.SYS first sector=> DMA address 6900 hex (segment 690) for 6 sectors. verified.
Sector #90(-107)=MSDOS.SYS second block => DMA address 7500 (segment 750) for 18 sectors.
Sector #108(-125)=MSDOS.SYS third block => DMA address 9900 (segment 990) for 18 sectors.
Sector #126(-142)=MSDOS.SYS final block => DMA address BD00 (segment BD0) for 17 sectors.

Is this correct? Can you give me information on the rest of the list you gave? (All numbers are 0 based, except the 6, 18 and 17 sectors and 64k bytes, which are 1 based).

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

Reply 87 of 87, by superfury

User metadata
Rank l33t++
Rank
l33t++

This is my latest build:

Filename
x86EMU.exe
File size
628.5 KiB
Downloads
43 downloads
File comment
My latest x86EMU build (build 2015/08/09 22:07)
File license
Fair use/fair dealing exception

I've fixed the errors in the floppy disk controller. Also added either third mouse button OR both mouse buttons pressed to trap mouse and enable a new Direct Mode: this allows you to enter input using the normal keyboard, instead of the old PSP compatible mode (Windows only).

MS-DOS 3.3 and 5.0 are booting now. 6.22 hangs when trying to detect the CDROM drive (there is no ATA nor CDROM emulation implemented yet). The command prompt also works.

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