!$IF LATTICE
! The following are added to cope with the changes made to the imp language
! by Lattice Logic Ltd 
! The next release of their compiler will allow the line
! %from imp %include archaisms
! which will %include a file (not present in this version) to allow
! 'instream' and 'outstream' to be used - so the following functions can go
 externalintegerfunction  instream
    result  = inputstream
 end 

 externalintegerfn  outstream
    result  = outputstream
 end 
!
! The next changes are because the ECS IMP Compiler has the intrinsic functions
! 'intype' and 'outtype' to describe what the current I/O channels are attached to
! (This "user contributed set of routines supplied by Ian Young of Lattice to
! bridge this gap - they are likely to be part of the run-time environment at
! the next release of the compiler)
! IOTYPE
!
! What type of thing is a stream connected to?
!
! 11-Feb-86  JF    Created
!
! Answers returned are as follows:
!
!   -2  =  can't tell
!   -1  =  terminal
!    0  =  null stream
!    1  =  none of these - probably (always?) a file
!
 from  IMP include  RMS, Formats
 external  predicate  spec  Prober alias  "IMP_PROBER" (integer  Len, Add)

 const  integer  FAB DEV TRM = 16_00 00 00 02   

 externalinteger  function  IO Type (record  (SCB Fm) name  S)
    integer  Ad = S_NameB_Base
    record  (Fab Fm) name  Fab == S_Fd_Fab
    if  Ad # 0 and  String (Ad) = "<null stream>" start 
       result  = 0
    else 
       if  Prober (FAB BLN, Addr(Fab)) and  -
           Fab_BID = FAB BID and  Fab_BLN = FAB BLN start 
          if  Fab_DEV & FAB DEV TRM # 0 start 
             result  = -1
          else 
             result  = 1
          finish 
       else 
          result  = -2
       finish 
    finish 
 end 
 
 externalinteger  fn  In Type 
    result  = IO Type (In SCB)
 end 
 
 externalinteger  fn  Out Type
    result  = IO Type (Out SCB)
 end 
! End of "user contributed routines" from Lattice
externalstring (127)fn  sysmess(integer  i)
  external  string (127) fn  spec  mess alias  "IMP_GET_MESSAGE" (integer  i)
  result  = mess(i)
end 

endoffile