[comp.unix.xenix] ATI EGA wonder emulatie - HOW does it work

honzo@4gl.UUCP (Honzo Svasek) (05/21/88)

It seems that there are ATI EGA Wonder users on the net. My original
question was How This Works. 

I have a non-ms-dos-os (VentureCom Venix), and want to use the ATI card
on it in emulation mode. It worked fine with the Venix 2.1, but with the
latest release (2.3) Venix knows about EGA, and it does not work with
the ATI anymore.

I have the Venix driver sources, and would like to debug them :) so
they work with the ATI card.

ATI has send me their "programmers diskette", and with this I can get the
parameters to put the EGA Wonder in different modes without using their
bios. But they also told me that the emulation mode won't work with os's
that do not use the bios such as Xenix, uPort, Venix etc.

I still want to use this mode, and am looking into how they do it.

Any EGA guru's out their that good give the answer, or tell us they
direction to search in?????

|_| (
| |  )   honzo@4gl.nl (Honzo Svasek)

caf@omen.UUCP (Chuck Forsberg WA7KGX) (05/23/88)

Boards such as the EGA Wonder switch emulation modes by generating an
interrupt to a routine in their on board BOIS chip when the hardware
detects a change of mode that requires some software (firmware) help
to grok.

This causes problems for true operating systems such as Xenix (and I
suppose even OS/2).

First, a spare vector must be found for this interrupt.
This is a no-go because the PC bus doesn't have enough available
interrupt vectors as it is. It would help if boards supported the AT's
second set of vectors, but few bother.

Second, the entity that catches these interrupts must be recoded
to run in protected mode, etc.

So, if you can get commented source code for ATI's BIOS and scrounge
an unused interrupt vector, you could write a device driver to make the
EGA Wonder and do its thing under Xenix or whatever.

root@uwspan.UUCP (Sue Peru Sr.) (05/25/88)

+---- honzo@4gl.UUCP (Honzo Svasek) writes in <554@4gl.UUCP> ----
| It seems that there are ATI EGA Wonder users on the net. My original
| question was How This Works. 
| 
| I still want to use this mode, and am looking into how they do it.
+----

The Auto Switch stuff works by patching into int 0x10 and catching the 
mode changes requested, and then setting the correct mode registers.
Since Unix... doesn't have anything remotely like "int 0x10" there isn't
anything for the programmer to hook into.  You would really want to
implement this as ioctl()s to the driver  [ ioctl( egafd, ptr, IOHIRESEGA ); ]
or some such idea.

    -John


-- 
Comp.Unix.Microport is now unmoderated!  Use at your own risk :-)