[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Kyan Pascal question



Guillaume Tello wrote:
> Hello,
>
> I want to test individual bits into an integer, for example, bit 3 in A
> with:
> var
>   A,B:integer;
>
> begin
> B:=A and 8;
> ...
>
> And I expect, if A=12 to get B=8 and if A=7, to get B=0.
>
> But, this doesn't work. Are those operators (OR, AND, NOT) reserved for
> boolean values?

Yep, just like in Applesoft BASIC the AND and OR operators are boolean
rather than bitwise but they do work on all 16 bits. Looking at page
III-100..103 of the Apple Pascal 1.3 manual we find:

INTEGER to BOOLEAN:      ODD(X)
BOOLEAN to INTEGER;      ORD(X)
BOOLEAN to CHAR:           CHR(ORD(X))

Change case of character C

MASK := ODD(32);
C := CHR(ORD((MASK AND NOT ODD(ORD(C))) OR (NOT MASK AND ODD(ORD(C)))));