{ Program to illustrate the external routines BSET, RESET, and
TEST which set, reset and test the value of an individual bit
within a given byte, respectively. The .SRC file for the
external routines is the file BITBANG.SRC}
type
byte = 0..255;
var i,j,k: integer;
x,a,b,c: byte;
procedure bset( var x: byte; y: byte ); external;
procedure reset( var x: byte; y: byte ); external;
function test( x: byte; y: byte ): boolean; external;
procedure show_bits;
{notice that the procedure test returns a boolean value, true if the
bit is set (1) and false if not (0). }
begin
writeln;
writeln('the binary represenation of the byte is: ');
for x:= 7 downto 0 do write(test(a,x):6);
writeln;
writeln;
end;
begin
writeln( 'Bit banger test program' );
repeat
write( 'input decimal value for byte ---> ' );
readln( a );
writeln;
show_bits;
write( 'Input number of Bit to set in byte ---> ' );
readln( b );
bset( a, b );
writeln( 'new value of byte is: ', a);
show_bits;
writeln;
writeln('Will now reset that same bit. ');
reset( a, b );
writeln('The value of the byte is now: ',a);
writeln;
show_bits;
write('Input number of bit to test to see if it is set ---> ');
readln(b);
writeln( ' bit is: ', test( a, b ));
until false;
end.