🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.transputer
Article #1360

Sources of extraordinary link handling libraries

#1360
From: ANDY RABAGLIATI
Date: Wed, 30 Jan 1991 17:27
234 lines
6761 bytes
Someone requested the sources of the extraordinary link handling
library.   These sources come with all the disclaimers our
medicine man could think of, including the acknowledgement that
they *DEPEND* on knowledge of how the compiler schedules
processes.

If you wish to cut them down to be leaner and meaner, it may
easily be possible. If they fail to work, I refer you again to
our medicine man, who is busy at the moment conjuring up chemical
warfare antidotes from sodom apples.

Cheers,  Andy Rabagliati    EMAIL:- rabagliatia@isnet.inmos.COM


Here it is:
------------------------------------------------------------------------
--- xlink0.occ --- xlink0.occ --- xlink0.occ ---
#OPTION "E W"  -- no compiler libs, full GUYs
#COMMENT "Extraordinary link handling library, V1.0 31/10/88"
#COMMENT "(c) Copyright INMOS Limited 1988"
PROC Reinitialise (CHAN OF ANY c)
  SEQ
    GUY
      LDLP c
      RESETCH
      MINT
      DIFF
      CJ     .OK
      SETERR
      :OK
:
--- xlink1.occ --- xlink1.occ --- xlink1.occ ---
#OPTION "E W"  -- no compiler libs, full GUYs
#COMMENT "Extraordinary link handling library, V1.0 31/10/88"
#COMMENT "(c) Copyright INMOS Limited 1988"
PROC InputOrFail.t(CHAN OF ANY c, []BYTE mess, TIMER t, VAL INT time,
		   BOOL aborted)
  -- modified to be wordlength-independant 2-dec-87
  VAL NotProcess.p IS MOSTNEG INT :
  CHAN OF BOOL completed :
  --{{{  order of execution is essential
  -- The order of execution of the components of this PAR is
  -- important. If the communication on c is not started before the
  -- ALTernative it is possible for c to be reset before it is used.
  -- In this case the process can fail to terminate if the communication
  -- on c fails.
  --}}}
  PAR
    --{{{  execute this component first
    SEQ
      c ? mess
      completed ! TRUE
    --}}}
    --{{{  execute this component second
    BOOL sink :
    ALT
      t ? AFTER time
	INT pid :
	SEQ
	  --{{{  reset the channel
	  GUY
	    LDLP c
	    RESETCH
	    STL  pid
	  --}}}
	  --{{{  run the process if pid is valid
	  IF
	    pid = NotProcess.p
	      SKIP
	    TRUE
	      SEQ
		GUY
		  LDL pid
		  RUNP
	  --}}}
	  completed ? sink
	  aborted := TRUE
      completed ? sink
	aborted := FALSE
    --}}}
:
--- xlink2.occ --- xlink2.occ --- xlink2.occ ---
#OPTION "E W"  -- no compiler libs, full GUYs
#COMMENT "Extraordinary link handling library, V1.0 31/10/88"
#COMMENT "(c) Copyright INMOS Limited 1988"
PROC InputOrFail.c(CHAN OF ANY c, []BYTE mess,CHAN OF INT kill, BOOL aborted)
  -- modified to be wordlength independant 2-dec-87
  VAL NotProcess.p IS MOSTNEG INT :
  CHAN OF BOOL completed :
  --{{{  order of execution is essential
  -- The order of execution of the components of this PAR is
  -- important. If the communication on c is not started before the
  -- ALTernative it is possible for c to be reset before it is used.
  -- In this case the process can fail to terminate if the communication
  -- on c fails.
  --}}}
  PAR
    --{{{  execute this component first
    SEQ
      c ? mess
      completed ! TRUE
    --}}}
    --{{{  execute this component second
    ALT
      INT sink :
      kill ? sink
	INT pid :
	SEQ
	  --{{{  reset the channel
	  GUY
	    LDLP c
	    RESETCH
	    STL  pid
	  --}}}
	  --{{{  run the process if pid is valid
	  IF
	    pid = NotProcess.p
	      SKIP
	    TRUE
	      SEQ
		GUY
		  LDL pid
		  RUNP
	  --}}}
	  BOOL sink :
	  completed ? sink
	  aborted := TRUE
      BOOL sink :
      completed ? sink
	aborted := FALSE
    --}}}
:
--- xlink3.occ --- xlink3.occ --- xlink3.occ ---
#OPTION "E W"  -- no compiler libs, full GUYs
#COMMENT "Extraordinary link handling library, V1.0 31/10/88"
#COMMENT "(c) Copyright INMOS Limited 1988"
PROC OutputOrFail.t(CHAN OF ANY c, VAL []BYTE mess, TIMER t,
		    VAL INT time, BOOL aborted)
  -- modified to be wordlength independant 2-dec-87
  VAL NotProcess.p IS MOSTNEG INT :
  CHAN OF BOOL completed :
  --{{{  order of execution is essential
  -- The order of execution of the components of this PAR is
  -- important. If the communication on c is not started before the
  -- ALTernative it is possible for c to be reset before it is used.
  -- In this case the process can fail to terminate if the communication
  -- on c fails.
  --}}}
  PAR
    --{{{  execute this component first
    SEQ
      c ! mess
      completed ! TRUE
    --}}}
    --{{{  execute this component second
    BOOL sink :
    ALT
      t ? AFTER time
	INT pid :
	SEQ
	  --{{{  reset the channel
	  GUY
	    LDLP c
	    RESETCH
	    STL  pid
	  --}}}
	  --{{{  run the process if pid is valid
	  IF
	    pid = NotProcess.p
	      SKIP
	    TRUE
	      SEQ
		GUY
		  LDL pid
		  RUNP
	  --}}}
	  completed ? sink
	  aborted := TRUE
      completed ? sink
	aborted := FALSE
    --}}}
:
--- xlink4.occ --- xlink4.occ --- xlink4.occ ---
#OPTION "E W"  -- no compiler libs, full GUYs
#COMMENT "Extraordinary link handling library, V1.0 31/10/88"
#COMMENT "(c) Copyright INMOS Limited 1988"
PROC OutputOrFail.c(CHAN OF ANY c, VAL []BYTE mess, CHAN OF INT kill,
		    BOOL aborted)
  -- modified to be wordlength independant 2-dec-87
  VAL NotProcess.p IS MOSTNEG INT :
  CHAN OF BOOL completed :
  --{{{  order of execution is essential
  -- The order of execution of the components of this PAR is
  -- important. If the communication on c is not started before the
  -- ALTernative it is possible for c to be reset before it is used.
  -- In this case the process can fail to terminate if the communication
  -- on c fails.
  --}}}
  PAR
    --{{{  execute this component first
    SEQ
      c ! mess
      completed ! TRUE
    --}}}
    --{{{  execute this component second
    ALT
      INT sink :
      kill ? sink
	INT pid :
	SEQ
	  --{{{  reset the channel
	  GUY
	    LDLP c
	    RESETCH
	    STL  pid
	  --}}}
	  --{{{  run the process if pid is valid
	  IF
	    pid = NotProcess.p
	      SKIP
	    TRUE
	      SEQ
		GUY
		  LDL pid
		  RUNP
	  --}}}
	  BOOL sink :
	  completed ? sink
	  aborted := TRUE
      BOOL sink :
      completed ? sink
	aborted := FALSE
    --}}}
:
Technical Details
Message-ID: <15583.9101301727@inmos-c.inmos.com>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!zaphod.mps.ohio-state.edu!swrinde!ucsd!ucbvax!isnet.inmos.com!RABAGLIATIA

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!zaphod.mps.ohio-state.edu!swrinde!ucsd!ucbvax!isnet.inmos.com!RABAGLIATIA
From: RABAGLIATIA@isnet.inmos.com (ANDY RABAGLIATI)
Newsgroups: comp.sys.transputer
Subject: Sources of extraordinary link handling libraries
Message-ID: <15583.9101301727@inmos-c.inmos.com>
Date: 30 Jan 91 17:27:36 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Organization: The Internet
Lines: 234