-- file: ListerUtil.mesa
-- last edited by Satterthwaite, 13-Apr-82 13:51:54

DIRECTORY
  BcdDefs: TYPE USING [MTIndex, VersionStamp],
  BcdOps: TYPE USING [BcdBase],
  FileSegment: TYPE USING [Pages],
  Space: TYPE USING [Handle],
  Stream: TYPE USING [Handle],
  Strings: TYPE USING [String],
  Symbols: TYPE USING [HTIndex, ISEIndex],
  SymbolTable: TYPE USING [Base];

ListerUtil: DEFINITIONS = {
  
  SetFileName: PROC [name, root, extension: Strings.String];
  CreateStream: PROC [name: Strings.String] RETURNS [Stream.Handle];
  
  LoadBcd: PROC [fileId: Strings.String] RETURNS [bcd: FileSegment.Pages];
  LoadModule: PROC [bcd: FileSegment.Pages, typeId: Strings.String]
    RETURNS [mti: BcdDefs.MTIndex, code, symbols: FileSegment.Pages];
  UnknownModule: ERROR;

  MapPages: PROC [FileSegment.Pages] RETURNS [Space.Handle];
  
  PutTime: PROC [out: Stream.Handle, time: LONG CARDINAL];
  PutMachine: PROC [out: Stream.Handle, stamp: BcdDefs.VersionStamp];
  PutVersionId: PROC [out: Stream.Handle, stamp: BcdDefs.VersionStamp];
  PutVersions: PROC [
    out: Stream.Handle,
    version, creator, source: LONG POINTER TO BcdDefs.VersionStamp ← NIL];

  SetRoutineSymbols: PROC [s: SymbolTable.Base];
  PutFileID: PROC [out: Stream.Handle];
  PutHti: PROC [out: Stream.Handle, hti: Symbols.HTIndex];
  PutSei: PROC [out: Stream.Handle, sei: Symbols.ISEIndex];
  
  -- TTY interface
  
  Message: PROC [Strings.String];
  TTYStream: PROC RETURNS [Stream.Handle];
  
  -- bcd utilities
  
  PrintRTBcd: PROC [dest: Stream.Handle, bcd: BcdOps.BcdBase, sorted: BOOL];
   
  }.