--LispToolOps.mesa
--Created by
--   JFung.pasa	  	19-Sep-83 17:19:12

--last edited by
--   JFung.pasa	   	14-Sep-84  9:37:24



DIRECTORY
     File,
     FileTransfer,
     FormSW,
     MFile,
     MStream,
     Profile,
     ToolWindow,
     Volume USING [ID, nullID],
     Window USING [Handle];



LispToolOps: DEFINITIONS =
     BEGIN

     -- TYPEs
     Indicator: TYPE = {off, left, right};
     VolHints: TYPE = RECORD [names: SEQUENCE length: CARDINAL OF LONG STRING];
     PasswordArray: TYPE = RECORD [names: SEQUENCE length: CARDINAL OF LONG STRING];
     SizeHints: TYPE = RECORD [names: SEQUENCE length: CARDINAL OF CARDINAL];

     DocType: TYPE = {general, errorMsg};
     ServerType: TYPE = {IFS, FS, FLOPPY};
     VolType: TYPE = {Lisp, NonLisp};


     DataHandle: TYPE = LONG POINTER TO Data;
     Data: TYPE = MACHINE DEPENDENT RECORD [
          -- Message subwindow stuff
          msgSW(0): Window.Handle ← NIL,
          -- File subwindow stuff
          fileSW(2): Window.Handle ← NIL,

          -- Form subwindow stuff
          -- Note: enumerateds and booleans must be word boundary
          -- aligned as addresses for them must be generated
          --formSW: Window.Handle ← NIL,
          paramSW(4): Window.Handle ← NIL,
          commandSW(6): Window.Handle ← NIL,

          busy(8): BOOLEAN ← FALSE,  -- command is running
          userName(9): LONG STRING ← NIL,
          userPassword(11): LONG STRING ← NIL,
          domainName(13): LONG STRING ← NIL,
          organizationName(15): LONG STRING ← NIL,
          filePathName(17): LONG STRING ← NIL,

          volName(19): LONG STRING ← NIL,
          volHints(21): LONG POINTER TO VolHints ← NIL,
	  volPassword(23): LONG STRING ← NIL,
	  --passwordPtr(25): LONG POINTER TO PasswordArray ← NIL,
          --volHintsReady(23): BOOLEAN ← FALSE,
          --volHintsBusy(24): BOOLEAN ← FALSE,

          vMemSize(25): File.PageCount ← 0,
	  currentVolSize(27): File.PageCount ← 0,
	  currentVolFreeSize(29): File.PageCount ← 0,

          fileTable(31): LONG POINTER TO SizeHints ← NIL,
          connection(33): FileTransfer.Connection ← NIL,
          indicator(35): Indicator ← left,
	  docType(36): DocType ← general,
	  fileServer(37): ServerType ← FS,
	  volType(38): VolType ← Lisp];


     -- Variable declarations

     --privateHeap: UNCOUNTED ZONE ← NIL;
     --debug: BOOLEAN;
     toolData: DataHandle;
     windowHandle: Window.Handle;


     BootStuff: PUBLIC PROCEDURE[];
     -- exported from  LITCopyVMemImpl;

     Confirm: PUBLIC PROCEDURE RETURNS [okay: BOOLEAN];
     -- exported from  LispToolImpl;
     
     DisplayCommandSubwindow: PUBLIC PROCEDURE;
     -- exported from  LispToolImpl;
     
     DisplayFileSize: PUBLIC PROCEDURE [size: File.PageCount];
     -- exported from  LispToolImpl;
     
     DisplayWriteUp: PUBLIC PROCEDURE;
      -- exported from  ILTHelpImpl;   
    
     EraseProc: PUBLIC PROCEDURE [vName: LONG STRING];
     -- exported from  ILTEraseImpl;
     
     FloppyDelete: PUBLIC PROCEDURE [pattern: LONG STRING] RETURNS [deleted: BOOLEAN];
     -- exported from  LTFloppyImpl;
     
     FloppyDuplicate: PUBLIC PROCEDURE;
     -- exported from  LTFloppyImpl;
     
     FloppyRead: PUBLIC PROCEDURE [pattern: LONG STRING];
     -- exported from  LTFloppyImpl;

     FloppyWrite: PUBLIC PROCEDURE [pattern: LONG STRING];
     -- exported from  LTFloppyImpl;

     FloppyStuff: PUBLIC PROCEDURE [];
     -- exported from  LTFloppyImpl;

     GetBootFile: PUBLIC PROCEDURE [vName: LONG STRING] RETURNS [volumeID: Volume.ID];
     -- exported from  LTInstallImpl;
     
     GetDefaultDomain: PUBLIC PROCEDURE [domain: LONG STRING];
     -- exported from  LTSetProfileImpl;

     GetDefaultOrganization:PUBLIC PROCEDURE [organization: LONG STRING];
     -- exported from  LTSetProfileImpl;

     GetFileSize: PUBLIC PROCEDURE[] RETURNS [pageCount: File.PageCount];
     -- exported from  LTVMemImpl;

     GetProfileInfo:PUBLIC PROCEDURE [];
     -- exported from  LTSetProfileImpl;
     
     GetUser:PUBLIC PROCEDURE [name, password: LONG STRING];
     -- exported from  LTSetProfileImpl;

     GetVolumeID: PUBLIC PROCEDURE [volumeName: LONG STRING]
          RETURNS [volumeID: Volume.ID ← Volume.nullID, volumeOpen: BOOLEAN];
     -- exported from  LTEraseImpl;
     
     HelpCommands: PUBLIC PROCEDURE;
     -- exported from  ILTHelp2Impl;   

     InstallProc: PUBLIC PROCEDURE [vName: LONG STRING];
     -- exported from LTInstallImpl;
     
     InvertIndicator: PUBLIC PROCEDURE [];
     -- exported from  LispToolImpl;
     
     ListLogicalVolumes: PUBLIC PROCEDURE RETURNS[nVols: CARDINAL];
     -- exported from  LispToolImpl;
     
     LispActivate: PUBLIC PROCEDURE[];
     -- exported from  LispToolImpl;

     LispToolActivate: PUBLIC PROCEDURE[];
     -- exported from  LispToolImpl;

     LoginProc: PUBLIC PROCEDURE[];
     -- exported from LTLoginImpl;

     MakeScript: PUBLIC PROCEDURE[];
     -- exported from LTMakeScriptImpl;

     MakeUserCM: PUBLIC PROCEDURE[];
     -- exported from LTUserCMImpl;

     ProcessUserDotCM: PUBLIC PROCEDURE[];
     -- exported from  LTSetProfileImpl;

     ProfileToolActivate: PUBLIC PROCEDURE[];
     -- exported from  LTSetProfileImpl;

     ScavengeProc: PUBLIC PROCEDURE [vName: LONG STRING];
     -- exported from LTScavengeImpl;
     
     SetupBootFile:  PUBLIC PROCEDURE [volumeID: Volume.ID];
     -- exported from LTInstallImpl;

     SetVMemFileSize: PUBLIC PROCEDURE [pageCount: File.PageCount];
     -- exported from LTVMemImpl;

     SetVolumeProc: PUBLIC PROCEDURE [vName: LONG STRING] RETURNS [BOOLEAN];
     -- exported from LTInstallImpl;
     
     TajoActivate: PUBLIC PROCEDURE []; 
     -- exported from LITLispToolImpl;

     
     WriteScriptA: PUBLIC PROCEDURE[myFile: MFile.Handle, writeS: MStream.Handle];
     -- exported from LITScript2Impl;

     
     WriteScriptB: PUBLIC PROCEDURE[myFile: MFile.Handle, writeS: MStream.Handle];
     -- exported from LITScript3Impl;


     END...