Category : Pascal Source Code
Archive   : INTRFC61.ZIP
Filename : PARAMS.PAS
unit params;
interface
uses dos,globals,util;
procedure syntax_exit(msg:string);
procedure parse_params;
implementation
procedure syntax_exit(msg:string);
begin
writeln(msg);
writeln('Syntax:');
writeln('INTRFC /options unit');
writeln('where options are letters from the following:');
writeln('B - emitted code bytes');
writeln('C - initialized constant blocks');
writeln('D - code blocks');
writeln('E - routine entry records');
writeln('G - emitted global const bytes');
writeln('H - TPU header');
writeln('I - implementation section (if $D was used in compilation)');
writeln('L - proc/fn locals (if $L was used in compilation)');
writeln('M - source line number map');
writeln('N - names in interface');
writeln('O - object VMT records');
writeln('R - relocation records');
writeln('S - source file records');
writeln('V - var blocks');
writeln('X - mystery section (default on)');
writeln('A - turn all options on');
writeln('Options are processed sequentially and toggle the display.');
writeln('Use /Tpath to set the Turbo directory for TURBO.TPL and referenced');
writeln(' units.');
writeln('E.G. To see all but the relocation records in the system unit, use');
writeln(' INTRFC /AR /T\turbo SYSTEM ');
writeln('The default is just the names in the interface section.');
halt(1);
end;
procedure toggle(o:option);
begin
if o in active_options then
active_options := active_options - [o]
else
active_options := active_options + [o];
end;
procedure parse_params;
var
p : string;
i : integer;
path : dirstr;
name : namestr;
ext : extstr;
begin
i := 1;
unitname := '';
uses_path := '';
for i := 1 to paramcount do
begin
p := paramstr(i);
if p[1] <> '/' then
begin
unitname := upper(p);
fsplit(unitname,path,name,ext);
unitname := path+name;
end
else
begin
p := copy(p,2,255); { strip off the / }
while length(p) > 0 do
begin
case upcase(p[1]) of
'A' : active_options := [do_header..do_locals];
'B' : toggle(do_code);
'C' : toggle(do_const_blocks);
'D' : toggle(do_code_blocks);
'E' : toggle(do_entry_pts);
'G' : toggle(do_const);
'H' : toggle(do_header);
'I' : toggle(do_implementation);
'L' : toggle(do_locals);
'M' : toggle(do_src_lines);
'N' : toggle(do_name_list);
'O' : toggle(do_vmt);
'R' : toggle(do_reloc);
'S' : toggle(do_src_files);
'U' : toggle(do_unit_blocks);
'V' : toggle(do_var_blocks);
'X' : toggle(do_mystery);
'T' : begin
uses_path := copy(p,2,255);
if uses_path[length(uses_path)] <> '\' then
uses_path := uses_path + '\';
p := '';
end;
else
syntax_exit('Unrecognized option '+paramstr(i)+'.');
end;
p := copy(p,2,255);
end;
end;
end;
if unitname = '' then
syntax_exit('Unit name not specified.');
end;
end.
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/