Program bbtest; {$i+ }

{ 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.