Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the board
Thread view  Mix view  Order
Laaca

Homepage

Czech republic,
11.11.2025, 20:41
 

Jemm386 5.86 is great! (Users)

Jemm386 5.86 is not yet officialy released but Japheth has in on his Github as prerelease version.
The very interresting point is the extension of the SB parameter.
I have SBLive card and I use the Creative's emulation driver and in the past everything worked great. But I uset it not so often because this machine I use mainly for development and work and for gaming I use rather another one with ISA slots and with SB AWE64.
So, I do not know why exactly the SB emulation stopped to work. It might be after some hardware changes or after some change in Jemm386.
I solved it with VSHBHA but it sometimes does not work so good as Creative's driver.
But fortunately, with Jemm386 5.86 it works again!
I don't know whether this is specific for my machine and my configuration but I suppose not - it is relevant for many people with SBLive card.

---
DOS-u-akbar!

Japheth

Homepage

Germany (South),
12.11.2025, 07:19
(edited by Japheth, 12.11.2025, 07:30)

@ Laaca

Jemm386 5.86 is great!

> Jemm386 5.86 is great!
> The very interresting point is the extension of the SB parameter.

Thanks for your enthusiasm! :-) However, if I may cite myself ( it's a reply to an issue in jemm github ):

But actually, this isn't really a new feature. Support for SB(E)INIT was removed in v5.85, because it seemed to be unstable and I also somewhat assumed that this driver has become obsolete with sbemu/vsbhda. Realizing that this was untrue ( the driver is still preferable for Pentium-class machines ), I just reintegrated the functionality by extending the SB option.

So the SB thing is more or less just a fix of a regression.

Btw, this is what I have found out about the SB emulation drivers:

- they need an XMS block with a physical address below 0x400000.
- they expect the EMM to have mapped this block "identical" ( physical == linear address ).
- they disable paging temporarily (I assume that's the easiest way to modify page tables of the EMM - which is needed to store the synthesizer data )
- they modify the EMM's IDT entries 0x01, 0x02 and 0x67 ( SBINIT.COM also 0x03 )
- they grab the EMM's last 3 GDT entries.
- they don't touch the IO permission bitmap - the SB and DMA ports a trapped by hardware ( with the help of INT 0x02 [NMI] ). This must be supported by the MB chipset!
- they use IO watchpoints to trap PIC ports 0x20 and 0xA0. Hence the drivers need at least a Pentium.
- the modified IDT vector 0x67 enables the driver to intercept int 67h, ax=DE01h and ax=DE0C. This makes it possible to intrude into any VCPI client's address space and IDT.

---
MS-DOS forever!

RayeR

Homepage

CZ,
12.11.2025, 15:28

@ Japheth

Jemm386 5.86 is great!

Yes, original Creative emu drivers are useless on newer machines. Last time (maybe 10+ yrs ago) I wrote an utility that enabled NMI to SERR routing in intel chipset that makes it work on some MBs but anything with core Nehalem and later is no go.

But for older computers one may prefer Creative driver because it supports wavetable midi music by loading original soundfont file. VSBHDA don't. Or has it changed? I only saw some fork of VSBHDASF: https://www.vogons.org/viewtopic.php?t=104645 Could it be merged?

---
DOS gives me freedom to unlimited HW access.

Japheth

Homepage

Germany (South),
12.11.2025, 18:34

@ RayeR

Jemm386 5.86 is great!

> But for older computers one may prefer Creative driver because it supports
> wavetable midi music by loading original soundfont file. VSBHDA don't. Or
> has it changed? I only saw some fork of VSBHDASF:

It has changed - stole that nice feature from vsbhdasf; happened for v1.7 already.

---
MS-DOS forever!

Laaca

Homepage

Czech republic,
12.11.2025, 22:41

@ Japheth

Jemm386 5.86 is great!

> - they need an XMS block with a physical address below 0x400000.

Yes, the need of free memory block bellow 0x400000 is a problem because I use a disk cache and various TSRs and this memory is normally occupied.
So I use this trick.
In CONFIG.SYS:
device=tdsk.exe 8192
...disk cache driver...

In AUTOEXEC.BAT:
tdsk.exe 0
join f: c:\freedos\join_f


TDSK.EXE is a resizable ramdisk Turbo Disk.
It works perfectly but it is a bit complicated. Does exist some more elegant solution?

---
DOS-u-akbar!

SuperIlu

Homepage

Berlin, Germany,
12.11.2025, 22:48

@ Japheth

VSBHDA is also great (was: Jemm386 5.86 is great!)!

> It has changed - stole that nice feature from vsbhdasf; happened for v1.7
> already.

To extend the praise:
I recently dug out a Celeron 600 based POS system I bought some years ago for ~30EUR. It runs Win98 w/ the option to boot into plain DOS 7.
I used it to demo DOjS on several occasions.

I had a really hard time to find some drivers for Win98 for that machine, but it wasn't really usable as a DOS gaming machine because of missing sound support.

Tried VSBHDA out of a hunch and now I have one another capable and compact DOS PC...
Only thing left to look into why E1000PKT hangs when VSBHDA is loaded. But that is for another day :-D

---
Javascript on MS-DOS? Try DOjS https://github.com/SuperIlu/DOjS
Fediverse: @dec_hl@mastodon.social

Japheth

Homepage

Germany (South),
13.11.2025, 04:23

@ Laaca

Jemm386 5.86 is great!

> It works perfectly but it is a bit complicated. Does exist some more elegant solution?

You can try xmsres.exe, supplied with vsbhda. I use it to make smartdrv.exe allocate its xms block at the highest possible address. In config.sys:

INSTALL=C:\VSBHDA\XMSRES.EXE -h 8
INSTALL=C:\DOS\SMARTDRV.EXE 8192
INSTALL=C:\VSBHDA\XMSRES.EXE -u

---
MS-DOS forever!

Back to the board
Thread view  Mix view  Order
22813 Postings in 2127 Threads, 402 registered users (0 online)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum