Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Aug 2014 21:40:29 +0200
From:      =?UTF-8?B?SmVhbi1Tw6liYXN0aWVuIFDDqWRyb24=?= <dumbbell@FreeBSD.org>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: r269471 make unusable VT console
Message-ID:  <53F3A82D.4090000@FreeBSD.org>
In-Reply-To: <CAJ-VmokDskruQB8g8AhaTt9R-eQwFt8-WLwJugtiocr9q%2BwF4A@mail.gmail.com>
References:  <20140812232807.0f3aa02570becec15e056af2@fbsd.es>	<20140816011444.301a98d6187aca27e3a2481b@ddteam.net>	<CAJ-Vmon3OS3fY1VoHu1n_T=N9NN64U7ZsxdbCkWsXAGbdMhp0g@mail.gmail.com>	<53EE9CFF.4080607@freebsd.org>	<53F30DF3.1090301@dumbbell.fr>	<53F37B2D.3070807@FreeBSD.org>	<53F38D8E.8090605@freebsd.org>	<53F39F3D.9010104@FreeBSD.org> <CAJ-VmokDskruQB8g8AhaTt9R-eQwFt8-WLwJugtiocr9q%2BwF4A@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--2gcbH8W3nQwj7m1e4BunfJCxnQ3KvkPrV
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 19.08.2014 21:20, Adrian Chadd wrote:
> Hey, this is cool!
>=20
> So hm, why are you still doing any reading? Don't you now have all the
> information you need to write out the font and cursor information for
> each given set of 8 pixels?

I read a lot about VGA in the past days but I'm new to this interface,
so my reasonning may be wrong. Anyway, here it is:

To write a group of 8 pixels with only 2 colors, I write a byte using
background color in an offscreen memory, read it back to load it in the
latches, put the foreground color in the Set/Reset register, then write
the character/cursor to its final location in video memory. Because the
background color almost never changes, only one read is made the first
time we load the background color, and then only writes. This is fast.

If the group of 8 pixels uses 3 or more colors, I can't use Write Mode 3
alone. I see two possibilities:
    1. Set Write Mode 0, then for each plane, compute the byte to write
       (1 bit out of 4 of each pixel's color), activate one plane, write
       the byte (repeat for each plane), restore Write Mode 3 and the
       relevant registers.
    2. Stay in Write Mode 3, do a read/write for each colors.

The first solution has a constant time of execution. The second one
depends on the number of colors. In the end, I guess both solutions are
expensive, but hopefully are rarely used.

--=20
Jean-S=C3=A9bastien P=C3=A9dron


--2gcbH8W3nQwj7m1e4BunfJCxnQ3KvkPrV
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQJ8BAEBCgBmBQJT86gyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2NzA4N0ZEMUFFQUUwRTEyREJDNkE2RjAz
OUU5OTc2MUE1RkQ5NENDAAoJEDnpl2Gl/ZTM5LAP/AqyzDdkOXVIDe0jAhiUi3Fr
kevuXsLWu/N+0mhqznsryO4pqgohkexcUdwI/qDJ/YIU7k1kn8lvub6wFndTh5H5
fiZoZoXFLTAl33XoJbOpu+pQ4vnmY4gf/HKYmcJ/MOiGcQof9GI4g/GG6BLZDZi0
JVcvL3X0DJWNKKI+GILsY9xQ+FxglJefU3tc/TJ/oJAs+UjyYNs557zGeF0BGDEQ
KI37RBQea0pwF+mrdXiJ/xUzL9l5LQ888t4Qqp+rQRNSQRh8ATwWzlj368RtynMq
/NgICzV9BWOGKlQ9JaVCyDTMCipQFBjhx1ZuiCk/NHQzkg2b1zdIOxV1rxBctVh0
lCMUKizRW9ur2uZnfakMUqP80a1nfYBRPUm4LoYHaMKXyw+ceDNbXCR6CMLKSSj0
BsPAnSz37fLzX9bVgtG7cmxlZ0kPmSFe2ItJbcEx6QP4MnWoYtYuFUw0C35Ypdtp
/npUImSwQojCq2/T8eFexh9AYRxmc06esB9FGYfnpAmcaKLWEZ6Ki77C9kbZJxud
j3owIilqPV0+un+V7ElZs7GYreipjOZVTZTejFuO5E8IGAcWnUJG6bYOeem65cny
uQYYDmeGBpYkTFnG36mf4YVLRbTh5X9tIjwwIO0jvfoei4/6xhHlClG8JM6Bu6QX
Bwyl9dcg9/9GjPbTWTdP
=Vx0q
-----END PGP SIGNATURE-----

--2gcbH8W3nQwj7m1e4BunfJCxnQ3KvkPrV--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53F3A82D.4090000>