Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

Using Multiple CPU Cores in DOS? (Miscellaneous)

posted by RayeR(R) Homepage, CZ, 13.09.2011, 00:33

> Also in DPMI/PM, most INT calls need to be reflected to real mode. In
> addition, I/O requests should usually be reflected to real mode (though
> they normally aren't by default), in case there is any I/O virtualization
> going on. Even in a "normal" system there may be a lot of mode switching
> going on, far more than I think most people realize.

This thing is still not clear to me. Some years ago I wrote mp3 player with Covox output on LPT (using scitech mp3 lib) in DJGPP. This program change timer speed and install timer ISR for sending decoded samples to LPT port. I use this function to install:
_go32_dpmi_chain_protected_mode_interrupt_vector(INT_TIMER,&timer_isr_new);
I also tried to do it via
_go32_dpmi_set_protected_mode_interrupt_vector(INT_TIMER,&timer_isr_new);
but it froze immediatelly.
I think there's also 3rd way installing a realmode ISR (via transfer buffer). Question is what's the order of calling ISRs in RM and PM and how to do it best way to have smooth playback. In this case I think that timer IRQ is also hooked by realmode BIOS. If I use chain function it probably means PM ISR is executed 1st and then call RM ISR? If I use set function it will never call RM ISR and BIOS will mess up and freeze? Maybe it would be best if I allow call RM ISR only say on every 100th tick.

The current result is that it's working on 22kHz sample rate but you can hear some short periodic drops during playback...

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

 

Complete thread:

Back to the forum
Board view  Mix view
15108 Postings in 1358 Threads, 245 registered users, 22 users online (0 registered, 22 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum