[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]
{
Author: Casey Billett
RR#4,
Prescott, Ontario,
Canada
K0E 1T0
** billettc@grenvillecc.ca **
Date: Saturday, September 21, 1997
License: Freeware
Agreement: Header stays intact of source code
Original purpose: Convert values of an integer or hex to show what the
bits in memory would look like. Helps for designing
mouse cursor bitmaps.
Intent: Give to SWAG, they rock.
This should be easy enough to figure out by yourself. Heck, I'm only
in grade 12 math. AND I'm a lamer too.
Help: this program is set up so that you can use parameters. It's a
handy feature, because then you can specify if you want extra
output so that you can see a bit more detail of what's going on.
Its also nice, because you can get output just from the command
line. ie. bitwise $444 will write the bitwise pattern for it on
the same line, and that way, with multiple bitwise calls, you
can draw the bitmap at column 50 on the screen. To use params,
simply type bitwise and then the hex value. WITH THE $ as the
prefix to the number. Also, if you specify the -ext option,
it will print out extra information. That's it! :)
}
program Hex_to_Bits_Converter;
uses
crt;
type
bitarraytype = array [0..15] of integer;
paramtype = array [0..5] of string;
var
bits: bitarraytype;
wantextoutput:boolean;
e,k,l,x:integer;
y,w:word;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}
procedure processparams(var w: word; var wantextoutput: boolean);
var x:integer;
t:string;
begin
wantextoutput := false;
for x:= 1 to paramcount do begin
if paramstr(x) = '-ext' then wantextoutput := true else begin
t := paramstr(x);
val(t,w,e);
end;
end;
end;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}
procedure header; { Just some flakey crap - not important functionally }
begin
writeln;
textcolor(white);
write('-> bitwise: ');
textcolor(lightgray);
write('by rood00d');
writeln;
textcolor(green);
write('-> hexidecimal => bitwise value');
textcolor(lightgray);
writeln;
end;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}
function Power(Base: real; Exponent: integer): longint;
var
MultCount: integer;
Result: real;
begin
Result := 1;
for MultCount := 1 to Exponent do
Result := Result * Base;
Power := round(Result);
end;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}
begin
w:=0;
processparams(w,wantextoutput);
if (w=0) then begin
header;
write('-> Give hex value (avec ''$''): ');
read(w);
end;
y:=w;
k:=1;
while w<>0 do begin
w:=w div 2;
bits[k]:=w mod 2;
k:=k+1;
end;
if odd(y) then bits[0]:=1;
if wantextoutput then begin
writeln('Hex as integer: ',y);
for l:=15 downto 0 do begin
textcolor(white);
write(l:2,'-> ');
textcolor(lightgray);
gotoxy(6,wherey);
write(bits[l],': ',power(2,l):5,' = ');
if (bits[l]*power(2,l) <> 0) then begin
textcolor(red);
writeln(bits[l]*power(2,l):5);
textcolor(lightgray);
end else begin
textcolor(lightgray);
writeln(bits[l]*power(2,l):5);
end;
end;
end;
textcolor(lightgray);
gotoxy(50,wherey-1);
for l:=15 downto 0 do begin
if bits[l] <> 0 then textcolor(white) else textcolor(lightgray);
write(bits[l]);
end;
textcolor(lightgray);
write(' ');
end.
[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]