C*
C* fcube.h
C*
C* Defines iPSC specific procedures and constants for programming
C* the cube.
C*
C* fcube.h 6.3 89/06/02 09:13:46
C*
C* @(#)Version 3.0 SIM
C*
      INTEGER CUBENAME, USERNAME, SRMNAME, HOSTNAME, TTY, CUBETYPE
      INTEGER CINDEX, TTY1, TTY2, TTY3, TTY4, SLOTSIZE
      INTEGER NAMELEN, NUMTTYS
      INTEGER FORCE_TYPE

C     Parameters for accessing the cubetable array used with cubeinfo().
      PARAMETER (CUBENAME = 1)
      PARAMETER (USERNAME = 2)
      PARAMETER (SRMNAME = 3)
      PARAMETER (HOSTNAME = 4)
      PARAMETER (TTY = 5)
      PARAMETER (CUBETYPE = 6)
      PARAMETER (CINDEX = 7)
      PARAMETER (TTY1 = 8)
      PARAMETER (TTY2 = 9)
      PARAMETER (TTY3 = 10)
      PARAMETER (TTY4 = 11)
      PARAMETER (SLOTSIZE = 11)

      PARAMETER (NAMELEN=15)
      PARAMETER (NUMTTYS=4)

C     First number in the Force type range (decimal: 1073741824)
      PARAMETER (FORCE_TYPE=Z'40000000')

      EXTERNAL csendrecv
      EXTERNAL cubeinfo
      EXTERNAL ginv
      EXTERNAL gray
      EXTERNAL infocount
      EXTERNAL infonode
      EXTERNAL infopid
      EXTERNAL infotype
      EXTERNAL iprobe
      EXTERNAL irecv
      EXTERNAL isend
      EXTERNAL isendrecv
      EXTERNAL masktrap
      EXTERNAL mclock
      EXTERNAL msgdone
      EXTERNAL myhost
      EXTERNAL mynode
      EXTERNAL mypid
      EXTERNAL nodedim
      EXTERNAL numnodes
      EXTERNAL iodone
      EXTERNAL iomode
      EXTERNAL iseof
      EXTERNAL lseek
      EXTERNAL lsize
      EXTERNAL restrictvol
      
      INTEGER*4 csendrecv
      INTEGER*4 cubeinfo
      INTEGER*4 ginv
      INTEGER*4 gray
      INTEGER*4 infocount
      INTEGER*4 infonode
      INTEGER*4 infopid
      INTEGER*4 infotype
      INTEGER*4 iprobe
      INTEGER*4 irecv
      INTEGER*4 isend
      INTEGER*4 isendrecv
      INTEGER*4 masktrap
      INTEGER*4 mclock
      INTEGER*4 msgdone
      INTEGER*4 myhost
      INTEGER*4 mynode
      INTEGER*4 mypid
      INTEGER*4 nodedim
      INTEGER*4 numnodes
      INTEGER*4 iodone
      INTEGER*4 iomode
      INTEGER*4 iseof
      INTEGER*4 lseek
      INTEGER*4 lsize
      INTEGER*4 restrictvol

C     iPSC/2 error codes 

      INTEGER F_PSCERR
      PARAMETER (F_PSCERR=150)
      INTEGER EQDRVERR, EQPBUF, EQBLEN
      INTEGER EQLEN, EQTIME, EQMSGLONG
      INTEGER EQPID, EQNODE, EQTYPE
      INTEGER EQMID, EQHND, EQNOPROC
      INTEGER EQUSEPID, EQNOACT, EQBADFIL
      INTEGER EQPARAM, EQPFIL, EQPCNODE
      INTEGER EQPCPID, EQPCCODE, EQPRIV
      INTEGER EQMEM, EQINVREC, EQMSG
      INTEGER EQNOMID, EQSET, EQNOSET
      INTEGER EQCUBETABFULL, EQCUBEEXISTS, EQCUBENOTEXIST
      INTEGER EQCUBENOTATTCH, EQUSOCK, EQNETSOCK
      INTEGER EQTTY, EQNOCUBES, EQCUBENAMELEN
      INTEGER EQHOSTNAMELEN, EQTYPENAMELEN, EQBADGLOBAL
      INTEGER EQRCSBUSY, EQINCMPREAD, EQNOCUBE
      INTEGER EQLIFEBUSY, EQNOCOMMSER, EQUSM
      INTEGER EQDIM, EQMODE, EQSTATUS
      INTEGER EQNOLL, EQBADNODE, EQUSEVX
      INTEGER EQNOSRM, EQMSGSHORT, EQNOSYSLOG
      INTEGER EQSYSLOG, EQLOGFAIL, EQBIGSYS
      INTEGER EQRRTTY, EQFSERVFAIL, ECFPS
      INTEGER ENFPS, EMIXIO, EIMODE
      INTEGER ESETIO, ESRMIO


      PARAMETER (EQDRVERR=(F_PSCERR+0))
      PARAMETER (EQPBUF=(F_PSCERR+1))
      PARAMETER (EQBLEN=(F_PSCERR+2))
      PARAMETER (EQLEN=(F_PSCERR+3))
      PARAMETER (EQTIME=(F_PSCERR+4))
      PARAMETER (EQMSGLONG=(F_PSCERR+5))
      PARAMETER (EQPID=(F_PSCERR+6))
      PARAMETER (EQNODE=(F_PSCERR+7))
      PARAMETER (EQTYPE=(F_PSCERR+8))
      PARAMETER (EQMID=(F_PSCERR+9))
      PARAMETER (EQHND=(F_PSCERR+10))
      PARAMETER (EQNOPROC=(F_PSCERR+11))
      PARAMETER (EQUSEPID=(F_PSCERR+12))
      PARAMETER (EQNOACT=(F_PSCERR+13))
      PARAMETER (EQBADFIL=(F_PSCERR+14))
      PARAMETER (EQPARAM=(F_PSCERR+15))
      PARAMETER (EQPFIL=(F_PSCERR+16))
      PARAMETER (EQPCNODE=(F_PSCERR+17))
      PARAMETER (EQPCPID=(F_PSCERR+18))
      PARAMETER (EQPCCODE=(F_PSCERR+19))
      PARAMETER (EQPRIV=(F_PSCERR+20))
      PARAMETER (EQMEM=(F_PSCERR+21))
      PARAMETER (EQINVREC=(F_PSCERR+22))
      PARAMETER (EQMSG=(F_PSCERR+23))
      PARAMETER (EQNOMID=(F_PSCERR+24))
      PARAMETER (EQSET=(F_PSCERR+25))
      PARAMETER (EQNOSET=(F_PSCERR+26))
      PARAMETER (EQCUBETABFULL=(F_PSCERR+27))
      PARAMETER (EQCUBEEXISTS=(F_PSCERR+28))
      PARAMETER (EQCUBENOTEXIST=(F_PSCERR+29))
      PARAMETER (EQCUBENOTATTCH=(F_PSCERR+30))
      PARAMETER (EQUSOCK=(F_PSCERR+31))
      PARAMETER (EQNETSOCK=(F_PSCERR+32))
      PARAMETER (EQTTY=(F_PSCERR+33))
      PARAMETER (EQNOCUBES=(F_PSCERR+34))
      PARAMETER (EQCUBENAMELEN=(F_PSCERR+35))
      PARAMETER (EQHOSTNAMELEN=(F_PSCERR+36))
      PARAMETER (EQTYPENAMELEN=(F_PSCERR+37))
      PARAMETER (EQBADGLOBAL=(F_PSCERR+38))
      PARAMETER (EQRCSBUSY=(F_PSCERR+39))
      PARAMETER (EQINCMPREAD=(F_PSCERR+40))
      PARAMETER (EQNOCUBE=(F_PSCERR+41))
      PARAMETER (EQLIFEBUSY=(F_PSCERR+42))
      PARAMETER (EQNOCOMMSER=(F_PSCERR+43))
      PARAMETER (EQUSM=(F_PSCERR+44))
      PARAMETER (EQDIM=(F_PSCERR+45))
      PARAMETER (EQMODE=(F_PSCERR+46))
      PARAMETER (EQSTATUS=(F_PSCERR+47))
      PARAMETER (EQNOLL=(F_PSCERR+48))
      PARAMETER (EQBADNODE=(F_PSCERR+49))
      PARAMETER (EQUSEVX=(F_PSCERR+50))
      PARAMETER (EQNOSRM=(F_PSCERR+51))
      PARAMETER (EQMSGSHORT=(F_PSCERR+52))
      PARAMETER (EQNOSYSLOG=(F_PSCERR+53))
      PARAMETER (EQSYSLOG=(F_PSCERR+54))
      PARAMETER (EQLOGFAIL=(F_PSCERR+55))
      PARAMETER (EQBIGSYS=(F_PSCERR+56))
      PARAMETER (EQRRTTY=(F_PSCERR+57))
      PARAMETER (EQFSERVFAIL=(F_PSCERR+58))
      PARAMETER (ECFPS=(F_PSCERR+59))
      PARAMETER (ENFPS=(F_PSCERR+60))
      PARAMETER (EMIXIO=(F_PSCERR+61))
      PARAMETER (EIMODE=(F_PSCERR+62))
      PARAMETER (ESETIO=(F_PSCERR+63))
      PARAMETER (ESRMIO=(F_PSCERR+64))
