2007-12-09 22:45:40

by Samuel Thibault

[permalink] [raw]
Subject: vcsa and big endian

Hello,

On big endian machines, /dev/vcsa stores text/attribute bytes in big
endian order, while it stores them in little endian order on little
endian machines. Is that expected?

Samuel


2007-12-09 22:50:49

by Samuel Thibault

[permalink] [raw]
Subject: Re: vcsa and big endian

Samuel Thibault, le Sun 09 Dec 2007 23:43:49 +0100, a ?crit :
> On big endian machines, /dev/vcsa stores text/attribute bytes in big
> endian order, while it stores them in little endian order on little
> endian machines. Is that expected?

It looks like ggi considers this as normal. In any case, the vcsa
manual page should probably be made more clear ("but including
attributes" -> "but using unsigned shorts that include attributes" for
instance).

Samuel

2007-12-09 23:00:19

by Samuel Thibault

[permalink] [raw]
Subject: Re: vcsa and big endian

Samuel Thibault, le Sun 09 Dec 2007 23:50:39 +0100, a ?crit :
> Samuel Thibault, le Sun 09 Dec 2007 23:43:49 +0100, a ?crit :
> > On big endian machines, /dev/vcsa stores text/attribute bytes in big
> > endian order, while it stores them in little endian order on little
> > endian machines. Is that expected?
>
> It looks like ggi considers this as normal. In any case, the vcsa
> manual page should probably be made more clear ("but including
> attributes" -> "but using unsigned shorts that include attributes" for
> instance).

And the code example should be fixed too:

char ch, attrib;

(void) read(fd, &ch, 1);
(void) read(fd, &attrib, 1);

should rather be

unsigned short s;
unsigned char ch, attrib;

...

(void) read(fd, &s, 2);
ch = s & 0xff;
attrib = (s >> 8);


The manual page should also mention that when a 512 chars font is
loaded, the 9th bit is in the attrib value, and its position can be
fetched through the VT_GETHIFONTMASK ioctl.

Samuel

2007-12-15 07:55:42

by Pavel Machek

[permalink] [raw]
Subject: Re: vcsa and big endian

On Sun 2007-12-09 23:50:39, Samuel Thibault wrote:
> Samuel Thibault, le Sun 09 Dec 2007 23:43:49 +0100, a ?crit :
> > On big endian machines, /dev/vcsa stores text/attribute bytes in big
> > endian order, while it stores them in little endian order on little
> > endian machines. Is that expected?
>
> It looks like ggi considers this as normal. In any case, the vcsa
> manual page should probably be made more clear ("but including
> attributes" -> "but using unsigned shorts that include attributes" for
> instance).

I'd say you need stronger warning than that, "warning, vcsa is in host
byte endianity" or something.

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html