*BSD News Article 17630


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!spool.mu.edu!uwm.edu!rutgers!walter!qualcom.qualcomm.com!unix.ka9q.ampr.org!karn
From: karn@unix.ka9q.ampr.org (Phil Karn)
Newsgroups: comp.os.386bsd.bugs
Subject: Re: does XFree86-1.3 and/or codrv actually work?
Message-ID: <1993Jun28.201522.15048@qualcomm.com>
Date: 28 Jun 93 20:15:22 GMT
References: <1993Jun28.072719.16216@qualcomm.com> <1993Jun28.102903.12571@gmd.de>
Sender: news@qualcomm.com
Reply-To: karn@servo.qualcomm.com
Organization: Qualcomm, Inc
Lines: 42
Nntp-Posting-Host: unix.ka9q.ampr.org

In article <1993Jun28.102903.12571@gmd.de>, veit@mururoa.gmd.de (Holger Veit) writes:
|> Codrv does not expect the system to be in scan mode 2, it actually switches
|> it into this mode (in kbd_warmreset()).

I spent most of yesterday scrutinizing this function in great detail,
and I didn't see anything that looked like it would set the keyboard
into scan mode 2. According to my copy of the IBM AT reference, you do
that by sending the two byte sequence (0xf0, 2) to the keyboard. I
even tried adding that code myself, but all I got back from the
keyboard was 0xfe (bad command, resend).

I think it's clear I don't understand how the keyboard and i8042
controllers really work (not surprising considering their wretched
design and IBM's abysmal documention). In particular, I guess I don't
understand what functions are done in the 8042 and which in the
keyboard. From the IBM documentation, I got the impression that the
keyboard itself accepted the scan code set command, but then there's
brief mention of the two bits in the 8042 command word (Bit 6, IBM PC
Compatibility mode, and Bit 5, IBM PC mode) that implies that the 8042
gets involved in scan code translation, one of which you set when
XTKBDMODE is defined. Now I'm thoroughly confused. Is there a better
explanation of this stuff than the IBM manual?

|> You can compile the kernel with options XTKBDMODE; in this case codrv
|> uses scan 1 codes and translates them to the internal form used.

I tried this, but it didn't make any difference. Maybe I don't have a
correct version of codrv? I got it from the 0.2.4 patchkit, but I see
that it hasn't made it to many of the standard archive sites (like agate)
so I began to wonder if it had been revoked due to problems.

|> Maybe the system you have is no longer exactly 386bsd-0.1-srcdist+patchkit,
|> but was modified by several other patches.

This is possible. I had been running syscons, which is not in the standard
patchkit track, so it's possible that some of the other patches didn't
do the right thing. I eventually punted and went all the way back to 386BSD
version 0.1 and applied patchkit 0.2.3. This got me a usable kernel, and
once I re-created /dev/vga as something other than a link to /dev/console,
XFree86-1.3 started working fine.

Phil