Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

Jemm386 5.86 is great! (Users)

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

> 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!

 

Complete thread:

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