Re: bug in bit32?

[email protected] (Albert van der Horst)
Newsgroups gmane.comp.lang.forth.colorforth
Message-ID <[email protected]>
On Thu, May 05, 2005 at 02:13:09PM -0400, Mark Slicker wrote:
> On Thu, 5 May 2005, Albert van der Horst wrote:
>
> >On Wed, May 04, 2005 at 04:54:26PM -0400, Mark Slicker wrote:
> >>Here is bit16 and bit32 from ftp://ftp.ultratechnology.com/GEN.ASM:
> ><SNIP>
> >
> >>Notice above by the lablel 'b32', 'shl  EAX, 1'. I think this should be
> >>'shl  AX, 1' like in 'bit16'. I think bit32 apears to work because the
> >>previous row in the bitmap will be shifted into the upper 16 bits of EAX,
> >>and will be displayed on the next call to bit32.
> >
> >As far as I understand it, this keeping of 16 bits for the next call of
> >bit32 is intended. Why would you call it bit32 if it only handles
> >16 bits? It does handle 32 bits, in two calls.
>
> I did not name it, but the name does not necesarilly imply what should be
> the correct logic for this function. bit16 is used to write a row of the
> icon bitmap. A row is 16 bits, bit16 is called 24 times by emit. This
> displays the 16x24 icons we are familer with. bit32 is also called 24
> times but instead by emit2 (2emit). The difference between bit16 and bit32
> is that bit32 writes four pixels (2x2 square) for each bit in the bitmap
> row. The effect of bit32 being defined the way it is, is that magnified
> characters (2emit), when displayed, will be shifted down by one pixel and
> the last row of the bitmap will be cut off. Maybe this behavior is
> intended, but from my view it looks clearly like a bug.

I expect EAX to be three time a character value, such that it contains
all zero's in the upper 16 bits.

Indeed bit16 is called 24 times. But only the first time
something is deposited at [DI]. After that zero's have been
shifted into AX.
Similarly bit32 is called 24 times. Again only the first
time something is deposited at [DI]. The second time
EAX is already zero, in view of the values supplied.
After that again EAX is certainly zero.

So this would mean that it doesn't matter whether a 16 or 32 bits
register is shifted. Apart from that I don't claim to understand
much of what is going on.

Your conclusion could be checked by placing a character C on the
lowest line. It should look bad with one line missing.

> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> Main web page - http://www.colorforth.com
>

--
Albert van der Horst,Oranjestr 8,3511 RA UTRECHT,THE NETHERLANDS
Economic growth -- like all pyramid schemes -- ultimately falters.
[email protected] http://home.hccnet.nl/a.w.m.van.der.horst
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.