Metropoli BBS
VIEWER: ide.pas MODE: TEXT (CP437)
unit ide;

  interface

    uses
       parser,symtable,tree,asmgen,globals,scanner,dos;

    type
       toutinfo = record
          data_size : longint;
       end;

       tininfo = record
       end;

    function compile(const name : string;const ininfo : tininfo;var outinfo : toutinfo) : byte;

  implementation

    var
       end_pointer : pointer;

    procedure end_of_compilation;

      begin
      end;

    function compile(const name : string;const ininfo : tininfo;var outinfo : toutinfo) : byte;

      procedure error(const s : string);

        begin
           end_of_compilation;
        end;

      procedure init;

      var
         s,opts : string;
         p : pathstr;
         d : dirstr;
         n : namestr;
         e : extstr;
         i,j : integer;
         resf : text;
         res,endofparas : boolean;
         code : word;
         hs : string;
         as_res : text;
         mac : pmacrosym;
         asmfilename : string;

      begin
         objext:='.o';
         res:=false;
         i:=0;
         p:=name;
         if p='' then
           error('Keine Eingabedatei angegeben');
         fsplit(p,d,n,e);
         if e='' then e:='.PP';
         inputfile:=d+n;
         inputdir:=d;
         asmfilename:=inputfile+'.S';
         assign(asmfile,asmfilename);
         assign(as_res,'AS.RES');
         rewrite(as_res);
         writeln(as_res,'-o ',inputfile+objext+' '+asmfilename);
         close(as_res);
         if gen_makefile then
           begin
              assign(makefile,inputfile+'.MAK');
              {$I-}
              rewrite(makefile);
              {$I+}
              if ioresult<>0 then
                error('Makedatei kann nicht erzeugt werden');
           end;
         if gendeffile then
           begin
              if target<>target_OS2 then
                error('DEF-Datei kann nur für OS/2 erzeugt werden');
              assign(defdatei,inputfile+'.DEF');
              {$I-}
              rewrite(defdatei);
              {$I+}
              if ioresult<>0 then
                error('DEF-Datei kann nicht erzeugt werden');
              write(defdatei,'NAME '+upper(inputfile));
              if genpm then
                write(defdatei,' WINDOWAPI');
              writeln(defdatei,#13#10#13#10'PROTMODE'#13#10);
              writeln(defdatei,'DESCRIPTION '+''''+description+''''#13#10);
              writeln(defdatei,'DATA'#9'MULTIPLE'#13#10);
              writeln(defdatei,'STACKSIZE'#9+tostr(stacksize));
              writeln(defdatei,'HEAPSIZE'#9+tostr(heapsize)+#13#10);
              write(defdatei,'EXPORTS');
           end;
      end;

    label
       ende;

      begin
         end_pointer:=@ende;
         init_tree;
         init_symtable;
         globalsinit;
         init;

         if gendeffile then
           close(defdatei);
         initscanner(inputfile+'.PP');
         asmgeninit;
         outinfo.data_size:=parse;
      ende:
         { Heap löschen }
         heapptr:=heaporg;
         freelist:=nil;
      end;

end.
[ RETURN TO DIRECTORY ]