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