DataMuseum.dk

Presents historical artifacts from the history of:

DANOSI

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DANOSI

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦72187e8e5⟧ TextFile

    Length: 24298 (0x5eea)
    Types: TextFile
    Names: »RTPSTD50.SRC«

Derivation

└─⟦289818552⟧ Bits:30010516 DVBS1.SW2114.src.2.7-3 SW2114 3/4 Real Time Pascal 2.7
    └─⟦this⟧ »RTPSTD\RTPSTD50.SRC« 
└─⟦783187a02⟧ Bits:30010525 DVBS1.SW2114.src.2.6-3 RTP compiler source SW2104+SW2114 Disk#3 30/1-92 HHA
    └─⟦this⟧ »RTPSTD\RTPSTD50.SRC« 
└─⟦ca921ce75⟧ Bits:30010528 DVBS1.SW2114.src.2.6-6 RTP Compiler Source SW2104+SW2114 Disk 3 92.02.03 HEJ HHA
    └─⟦this⟧ »RTPSTD\RTPSTD50.SRC« 
└─⟦d5707feda⟧ Bits:30010512 DVBS1.SW2114.src.2.14-3 SW2114 REAL #3/4 TIME PASCAL SOURCE REL 2.14 92.09.01
    └─⟦this⟧ »RTPSTD\RTPSTD50.SRC« 

TextFile

$listoff\r
stdenv;     (* standard environment       TOG 870927 *)\r
            (* transputer version         TOG 900706 *)\r
\r
(***** PREDEFINED CONSTANTS *****)\r
CONST\r
maxint = 32767; -- #h7FFFFFFF\r
minint = -32768; -- #h80000000\r
\r
\r
(***** PREDEFINED TYPES *****)\r
TYPE\r
\r
bit = 0..1;\r
\r
byte = 0..255;\r
\r
\r
conn_service = (cs_normal, cs_high);\r
\r
CONST create_ok=0;\r
      create_no_memory=3;\r
      \r
TYPE create_result = create_ok .. create_no_memory;\r
\r
CONST\r
maxpriority = 0;\r
minpriority = 0;\r
stdpriority = minpriority;\r
\r
TYPE\r
prio_type = minpriority..maxpriority;\r
\r
\r
event_type = (not_event, message_event, answer_event,\r
              process_removed, port_closed, disconnected,\r
              letter_sent, letter_arrived,\r
              local_connect, remote_connect,\r
              reset_indication, reset_completion,\r
              credit, data_sent, data_arrived, data_overrun,\r
              dummy_letter, dummy_lcnct, dummy_rcnct,\r
              dummy_rindic, dummy_rcmpl, dummy_credit,\r
              dummy_sent, dummy_arrived);\r
\r
CONST link_ok=0;\r
      link_not_found=1;\r
      link_no_parameter_match=3;\r
      link_already_linked=6;\r
      \r
TYPE link_result=link_ok..link_already_linked;\r
\r
CONST unlink_ok=0;\r
      unlink_no_program_linked=1;\r
      unlink_program_busy=2;\r
      \r
TYPE unlink_result=unlink_ok..unlink_program_busy;\r
\r
CONST mem_private = 0;\r
\r
TYPE mem_type = mem_private..mem_private;\r
\r
reason_type = (reason_ok, reason_name, reason_resource,\r
               reason_closed, reason_network);\r
\r
scope_type = (anonymous, local, regional, global);\r
\r
string(length: byte) = ARRAY(1..length) OF CHAR;\r
\r
alfa = string(12);\r
\r
activation = (a_mailbox, a_delay);\r
\r
control_type = packed record \r
                 rcv_all,\r
                 get_credit: boolean;\r
               end;\r
\r
               \r
(* shielded type declarations *)\r
(******************************)\r
\r
mailbox_ = RECORD\r
             s:     INTEGER;\r
             first: ^INTEGER; -- ^proc OR ^header\r
             last:  ^INTEGER; -- ^proc OR ^header\r
             chain: ^INTEGER; -- ^mbx\r
           END;\r
\r
pool_ = RECORD\r
          s:     INTEGER;\r
          first: ^INTEGER; -- ^proc OR ^header\r
          last:  ^INTEGER; -- ^proc OR ^header\r
          chain: ^INTEGER; -- ^pool_\r
          size:  INTEGER;\r
          head:  ^INTEGER; -- ^header\r
        END;\r
\r
process_ = RECORD\r
            data:  ^INTEGER; -- ^proc\r
            chain: ^INTEGER; -- ^process\r
          END;\r
\r
\r
reference_ = RECORD\r
               message:  ^INTEGER; -- ^header\r
               locked:   INTEGER;\r
               chain:    ^INTEGER; -- ^ref\r
             END;\r
\r
\r
chain_ = RECORD\r
           message:  ^INTEGER; -- ^header\r
           locked:   INTEGER;\r
           start:    ^INTEGER; -- ^header\r
           length:   INTEGER;\r
           chain:    ^INTEGER; -- ^chain\r
         END;\r
\r
port_ = RECORD\r
           chain:    ^INTEGER; -- ^port_\r
        END;\r
\r
program_descriptor = RECORD\r
          state: INTEGER;\r
          paramtypes: ^INTEGER; \r
          poolparam: BOOLEAN;\r
          lbdr: ^INTEGER; -- ^lbdr\r
          entry: ^INTEGER; -- ^xxxx\r
          namelength: INTEGER;\r
          name: ARRAY(1..12) OF CHAR;\r
          count: INTEGER;\r
          chain: ^INTEGER; -- ^prog\r
        END;\r
\r
(*****  PREDEFINED ROUTINES  *****)\r
(*********************************)\r
\r
CODE\r
\r
VAL Fault.ref.nil IS 1:\r
VAL Fault.ref.not.nil IS 2:\r
VAL Fault.ref.locked IS 3:\r
VAL Fault.range IS 4:\r
VAL Fault.set.range IS 5:\r
VAL Fault.size IS 6:\r
VAL Fault.otherwise IS 7:\r
VAL Fault.family IS 8:\r
VAL Fault.not.nil IS 9:\r
VAL Fault.nil IS 10:\r
VAL Fault.chain.empty IS 11:\r
VAL Fault.stack IS 12:\r
VAL Fault.localref IS 13:\r
VAL Fault.structure IS 14:\r
VAL Fault.addr.nil IS 15:\r
VAL Fault.deep IS 16:\r
VAL Fault.proc.not.nil IS 17:\r
VAL Fault.unlinked IS 18:\r
VAL Fault.not.implemented IS 19:\r
\r
\r
VAL nil IS 0:\r
VAL ref.nil IS -1:\r
VAL bpw IS 4:\r
\r
VAL event.none     IS 0:\r
VAL event.message  IS 0:\r
VAL event.answer   IS 1:\r
VAL event.removed  IS 2:\r
\r
VAL a.mailbox IS 0:\r
VAL a.delay IS 1:\r
VAL a.channel IS 2:\r
\r
VAL link.ok IS 0:\r
VAL already.linked IS 1:\r
VAL external.not.found IS 2:\r
\r
VAL minpriority IS 2:\r
VAL stdpriority IS 1:\r
VAL maxpriority IS 0:\r
\r
VAL unlink.ok IS 0:\r
VAL no.program.linked IS 1:\r
VAL existing.incarnations IS 2:\r
\r
VAL create.ok IS 0:\r
VAL create.no.memory IS 1:\r
\r
VAL system.size         IS 7:\r
VAL system.proc.        IS 0:\r
VAL system.plbdr.       IS 1:\r
VAL system.rlbdr.       IS 2:\r
VAL system.trace.s.     IS 3:\r
VAL system.trace.first. IS 4:\r
VAL system.trace.last.  IS 5:\r
VAL system.trace.chan.  IS 6:\r
\r
VAL mbx.size          IS 4:\r
VAL ref.size          IS 3:\r
VAL pool.size         IS mbx.size + 2:\r
\r
\r
VAL proc.chan.         IS 0:\r
VAL proc.next.         IS 1:\r
VAL proc.system.       IS 2:\r
VAL proc.freemem.      IS 3:\r
VAL proc.newsmall.     IS 4:\r
VAL proc.newhead.      IS 5:\r
VAL proc.stackfirst.   IS 6:\r
VAL proc.stacktop.     IS 7:\r
VAL proc.stacklimit.   IS 8:\r
VAL proc.stackheap.    IS 9:\r
VAL proc.fault.        IS 10:\r
VAL proc.stop.         IS 11:\r
VAL proc.exit.         IS 12:\r
VAL proc.remove.       IS 13:\r
VAL proc.wp.           IS 14:\r
VAL proc.ip.           IS 15:\r
VAL proc.wp.0.         IS 16:\r
VAL proc.wp.1.         IS 17:\r
VAL proc.state.        IS 18:\r
VAL proc.parent.       IS 19:\r
VAL proc.prog.         IS 20:\r
VAL proc.error.        IS 21:\r
VAL proc.chain.        IS 22:\r
VAL proc.mbxhead.      IS 23:\r
VAL proc.refhead.      IS 24:\r
VAL proc.localrefhead. IS 25:\r
VAL proc.chainhead.    IS 26:\r
VAL proc.semhead.      IS 27:\r
VAL proc.poolhead.     IS 28:\r
VAL proc.porthead.     IS 29:\r
VAL proc.prochead.     IS 30:\r
VAL proc.processhead.  IS 31:\r
VAL proc.proghead.     IS 32:\r
VAL proc.sharedhead.   IS 33:\r
VAL proc.namelength.   IS 34:\r
VAL proc.name.         IS 35:\r
\r
VAL proc.namedmbx.     IS 38:\r
VAL proc.operator.     IS 39:\r
VAL proc.timer.        IS 40:\r
VAL proc.ref.          IS 41:\r
VAL proc.mbx.          IS 44: \r
VAL proc.pool.         IS 48: \r
\r
VAL proc.state.active  IS 0:\r
VAL proc.state.stopped IS 1:\r
VAL proc.state.fault   IS 2:\r
VAL proc.state.exit    IS 3:\r
VAL proc.state.removed IS 4:\r
\r
VAL proc.size          IS 54: \r
\r
VAL lbdr.size         IS 14:\r
VAL lbdr.entry.       IS 0:\r
VAL lbdr.linetable.   IS 1:\r
VAL lbdr.globalsize.  IS 2:\r
VAL lbdr.appetite.    IS 3:\r
VAL lbdr.stackextra.  IS 4:\r
VAL lbdr.vectorspace. IS 5:\r
VAL lbdr.codesize.    IS 6:\r
VAL lbdr.linkcount.   IS 7:\r
VAL lbdr.chain.       IS 8:\r
VAL lbdr.namelength.  IS 9:\r
VAL lbdr.name.        IS 10:\r
VAL lbdr.kind.        IS 13:\r
\r
\r
\r
VAL process.size    IS 2:\r
VAL process.data.    IS 0:\r
VAL process.chain.   IS 1:\r
\r
\r
VAL prog.size    IS 11:\r
VAL prog.state.    IS 0:\r
VAL prog.paramtypes.    IS 1:\r
VAL prog.poolparam.    IS 2:\r
VAL prog.lbdr.    IS 3:\r
VAL prog.entry.   IS 4:\r
VAL prog.namelength. IS 5:\r
VAL prog.name.    IS 6:\r
VAL prog.count.   IS 9:\r
VAL prog.chain.   IS 10:\r
\r
VAL prog.internal IS 0:\r
VAL prog.unlinked IS 1:\r
VAL prog.linked IS 2:\r
\r
\r
VAL mbx.s.     IS 0:\r
VAL mbx.first. IS 1:\r
VAL mbx.last.  IS 2:\r
VAL mbx.chain. IS 3:\r
VAL mbx.process.  IS 0:\r
\r
\r
VAL ref.message.  IS 0:\r
VAL ref.locked.   IS 1:\r
VAL ref.chain.    IS 2:\r
\r
VAL chain.size      IS 6: \r
VAL chain.message.  IS 0: \r
VAL chain.locked.   IS 1: \r
VAL chain.chain.    IS 2: \r
VAL chain.start.    IS 3: \r
VAL chain.length.   IS 4: \r
\r
\r
VAL pool.s.     IS 0: \r
VAL pool.first. IS 1: \r
VAL pool.last.  IS 2: \r
VAL pool.chain. IS 3: \r
VAL pool.size.  IS 4: \r
VAL pool.head.  IS 5: \r
\r
VAL pool.process.  IS 0: \r
\r
VAL shared.size   IS 3:\r
VAL shared.object. IS 0:\r
VAL shared.count.  IS 1:\r
VAL shared.chain.  IS 2:\r
\r
\r
VAL header.size      IS 16:\r
VAL header.bytes      IS 64:\r
VAL header.buffer.    IS 0:\r
VAL header.next.      IS 1:\r
VAL header.size.      IS 2:\r
VAL header.offset.    IS 3:\r
VAL header.top.       IS 4:\r
VAL header.bytecount. IS 5:\r
VAL header.return.    IS 6:\r
VAL header.home.      IS 7:\r
VAL header.imc.       IS 8:\r
VAL header.eventkind. IS 32: \r
VAL header.index.     IS 33: \r
VAL header.creditcount. IS 34: \r
VAL header.reason.      IS 35: \r
VAL header.user.      IS 9:\r
VAL header.u1.        IS 36: \r
VAL header.u2.        IS 37: \r
VAL header.u3.        IS 38: \r
VAL header.u4.        IS 39: \r
VAL header.stack.     IS 10:\r
VAL header.depth.     IS 11:\r
VAL header.bufcount.  IS 12:\r
VAL header.succ.      IS 13:\r
VAL header.pred.      IS 14:\r
VAL header.chain.     IS 15:\r
\r
VAL port.size IS 1:\r
\r
VAL port.chain.    IS 0:\r
\r
VAL mbxname.size   IS 5:\r
VAL mbxname.bytes  IS 20: \r
\r
VAL mbxname.next.  IS 0:\r
VAL mbxname.mbx.   IS 1:\r
VAL mbxname.name.  IS 2:\r
\r
END;\r
\r
(* exception must be the first open routine *)	\r
PROCEDURE exception(c: integer);\r
BEGIN 0\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
END;\r
\r
		\r
	\r
\r
FUNCTION abs(n: integer): 0..maxint;\r
BEGIN 0\r
	XDBLE\r
	XDBLE\r
	XOR\r
	REV\r
	DIFF\r
END;\r
\r
PROCEDURE alloc( VAR r: reference; VAR p: pool; VAR ra: mailbox);\r
EXTERNAL;\r
\r
FUNCTION allocdelay(VAR r: reference; VAR p:pool; VAR ra: mailbox; \r
                     ms: integer): activation;\r
EXTERNAL;\r
\r
FUNCTION allocmempool(VAR p: pool; no_of_bufs, bufsize: integer;\r
mem: mem_type): 0..maxint;\r
EXTERNAL;\r
\r
FUNCTION allocpool(VAR p: pool; no_of_bufs, bufsize: integer): 0..maxint;\r
EXTERNAL;\r
\r
PROCEDURE break(VAR proc: process; fault: integer);\r
EXTERNAL;\r
\r
FUNCTION bufcount(VAR r: reference): 0..maxint;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	LDNL	header.bufcount.\r
LABEL 0\r
END;\r
\r
FUNCTION bufsize(VAR r: rtype    ): 0..maxint;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	LDNL	header.size.\r
END;\r
\r
FUNCTION bytecount(VAR r: rtype   ): integer;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	LDNL	header.bytecount.\r
END;\r
\r
PROCEDURE chaindequeue(VAR ref: reference; VAR ch: chain);\r
EXTERNAL;\r
\r
PROCEDURE chaindown(VAR ch: chain);\r
EXTERNAL;\r
\r
PROCEDURE chainenqueue(VAR ref: reference; VAR ch: chain);\r
EXTERNAL;\r
\r
FUNCTION chainlength(VAR ch: chain): 0..maxint;\r
BEGIN 0\r
	LDNL	chain.length.\r
END;\r
\r
PROCEDURE chainreset(VAR ch: chain);\r
EXTERNAL;\r
\r
PROCEDURE chainstart(VAR ch: chain);\r
EXTERNAL;\r
\r
PROCEDURE chainup(VAR ch: chain);\r
EXTERNAL;\r
\r
FUNCTION ord(v: btype): integer; \r
BEGIN 0\r
  LDC 255\r
  AND\r
END; \r
\r
FUNCTION ord(v: wtype): integer; AND\r
FUNCTION chr(v: byte): char;  \r
BEGIN 0\r
END;\r
\r
\r
FUNCTION create(inspect incname: string; VAR prog: program_descriptor;\r
     VAR pr: process; size: integer; prio: integer): create_result;\r
EXTERNAL;\r
\r
--   VAR pr: process; size: 0..maxint; prio: integer): create_result;\r
\r
FUNCTION creditcount(VAR r: reference): 0..maxint;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.creditcount.\r
	LB\r
END;\r
\r
(* use WP0 as temp *)\r
\r
PROCEDURE dec(VAR v: byte);\r
BEGIN 0\r
	STL	0  \r
	LDL	0\r
	LB\r
	ADC	-1\r
	LDL	0\r
	SB\r
END;\r
\r
PROCEDURE dec(VAR v: integer);\r
BEGIN 0\r
	STL	0 \r
	LDL	0\r
	LDNL	0\r
        LDC     1\r
        DIFF\r
	LDL	0\r
	STNL	0\r
END;\r
\r
PROCEDURE delay(ms: integer);\r
EXTERNAL;\r
\r
FUNCTION eventkind(VAR r: rtype): event_type;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.eventkind.\r
	LB\r
END;\r
\r
FUNCTION hometest(VAR r: rtype; VAR p: pool): boolean;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	LDNL	header.home.\r
	DIFF\r
	EQC	0\r
END;\r
\r
(* use WP0 as temp *)\r
\r
PROCEDURE inc(VAR v: byte);\r
BEGIN 0\r
	STL	0  \r
	LDL	0\r
	LB\r
	ADC	1\r
	LDL	0\r
	SB\r
END;\r
\r
PROCEDURE inc(VAR v:integer);\r
BEGIN 0\r
	STL	0 \r
	LDL	0\r
	LDNL	0\r
        LDC     1\r
        SUM\r
	LDL	0\r
	STNL	0\r
END;\r
\r
FUNCTION index(VAR r:reference): byte;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.index.\r
	LB\r
END;\r
\r
\r
FUNCTION link(inspect incname: string;VAR prog: program_descriptor): \r
              link_result;\r
EXTERNAL;\r
 \r
FUNCTION locked(VAR m:mailbox): boolean;\r
BEGIN 0\r
	LDNL	mbx.s.\r
	LDC	0\r
	REV\r
	GT\r
END;\r
\r
PROCEDURE new(VAR p: ptype); EXTERNAL;\r
\r
FUNCTION nil(VAR p:ptype  ): boolean; and\r
FUNCTION nil(VAR p:reference): boolean; and\r
FUNCTION nil(VAR p:process): boolean;\r
BEGIN 0\r
	LDNL	0\r
	EQC	0	\r
END;\r
\r
FUNCTION offset(VAR r:rtype    ): 0..maxint; \r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	LDNL	header.offset.\r
END;\r
\r
FUNCTION open(VAR m:mailbox): boolean; AND\r
FUNCTION openpool(VAR p: pool): boolean;\r
BEGIN 0\r
	LDNL	mbx.s.\r
	LDC	0\r
	GT\r
END;\r
\r
FUNCTION passive(VAR m:mailbox): boolean;\r
BEGIN 0\r
	LDNL	mbx.s.\r
	EQC	0\r
END;\r
\r
PROCEDURE pop(VAR b,s: reference);\r
EXTERNAL;\r
\r
FUNCTION pred(v: btype): btype;\r
BEGIN 0\r
	STL	-3\r
	LDLP    -3\r
	LB\r
	SUB\r
	EQC	0\r
	CJ	.nofault\r
	SETERR\r
:nofault\r
	LDLP	-3\r
	LB\r
	ADC	-1\r
END;\r
\r
FUNCTION pred(v: wtype): wtype;\r
BEGIN 0\r
	STL	-3\r
	LDL	-3\r
	SUB\r
	EQC	0\r
	CJ	.nofault\r
	SETERR\r
:nofault\r
	LDL	-3\r
	ADC	-1\r
END;\r
\r
PROCEDURE push(VAR b,s: reference);\r
EXTERNAL;\r
\r
FUNCTION reason(VAR r:reference): reason_type;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.reason.\r
	LB\r
END;\r
\r
PROCEDURE release(VAR r: reference);\r
EXTERNAL;\r
\r
FUNCTION releasepool(VAR p:pool; bufs: integer): 0..maxint;\r
EXTERNAL;\r
\r
PROCEDURE remove(VAR pr: process);\r
EXTERNAL;\r
\r
PROCEDURE resetevent(VAR r: rtype);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	ADC	header.eventkind.\r
	LDC	0\r
	REV\r
	SB\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE resume(VAR pr: process);\r
EXTERNAL;\r
\r
PROCEDURE return(VAR r:reference);\r
EXTERNAL;\r
\r
PROCEDURE setbytecount(VAR r: rtype    ; v: integer);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	STNL	header.bytecount.\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE setoffset(VAR r: rtype    ; v: integer);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	STNL	header.offset.\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE settop(VAR r: rtype    ; v: integer);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	STNL	header.top.\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
\r
PROCEDURE setu1(VAR r: rtype    ; v: byte);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	ADC	header.u1.\r
	SB\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE setu2(VAR r: rtype    ; v: byte);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	ADC	header.u2.\r
	SB\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE setu3(VAR r: rtype    ; v: byte);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	ADC	header.u3.\r
	SB\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE setu4(VAR r: rtype    ; v: byte);\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	ADC	header.u4.\r
	SB\r
JUMP 1\r
LABEL 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 1\r
END;\r
\r
PROCEDURE signal(VAR r: reference; VAR m:mailbox);\r
EXTERNAL;\r
\r
FUNCTION stackdepth(VAR r:reference  ): 0..maxint;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
CJUMP 0\r
	LDNL	header.depth.\r
LABEL 0\r
END;\r
\r
PROCEDURE start(VAR pr: process; prio: integer);\r
EXTERNAL;\r
\r
PROCEDURE stop(VAR p: process);\r
EXTERNAL;\r
\r
FUNCTION succ(v:btype): btype;\r
BEGIN 0\r
	STL	-3\r
	LDLP	-3\r
	LB\r
	SUB\r
	EQC	0\r
	CJ	.nofault\r
	SETERR\r
:nofault\r
	LDLP	-3\r
	LB\r
	ADC	1\r
END;\r
\r
FUNCTION succ(v:wtype): wtype;\r
BEGIN 0\r
	STL	-3\r
	LDL	-3\r
	SUB\r
	EQC	0\r
	CJ	.nofault\r
	SETERR\r
:nofault\r
	LDL	-3\r
	ADC	1\r
END;\r
\r
PROCEDURE tofrom(VAR toref: reference; toindex: integer;\r
                 VAR fromref: reference; fromindex: integer;\r
                 bytes: integer );\r
EXTERNAL;\r
\r
FUNCTION top(VAR r:rtype    ): 0..maxint;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	LDNL	header.top.\r
END;\r
\r
PROCEDURE trace(f: integer);\r
EXTERNAL;\r
\r
PROCEDURE stacktrace(f: integer);\r
EXTERNAL;\r
\r
FUNCTION unlink(VAR prog: program_descriptor): unlink_result; EXTERNAL;\r
\r
FUNCTION u1(VAR r:rtype    ): byte;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.u1.\r
	LB\r
END;\r
\r
FUNCTION u2(VAR r:rtype    ): byte;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.u2.\r
	LB\r
END;\r
\r
FUNCTION u3(VAR r:rtype    ): byte;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.u3.\r
	LB\r
END;\r
\r
FUNCTION u4(VAR r:rtype    ): byte;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	ADC	header.u4.\r
	LB\r
END;\r
\r
PROCEDURE wait( VAR r: reference; VAR m: mailbox);\r
EXTERNAL;\r
\r
FUNCTION waitdelay(VAR r: reference; VAR m: mailbox;\r
                   ms: integer): activation;\r
EXTERNAL;\r
\r
FUNCTION alias(VAR p:port; INSPECT name: string ): boolean;\r
BEGIN 0\r
        LDC     0\r
END;\r
\r
PROCEDURE closeport(VAR p: port);\r
EXTERNAL;\r
\r
PROCEDURE connect(VAR p:port; index:1..maxint; VAR compl, disc: reference;\r
                  inspect remote_name:string; service: conn_service);\r
EXTERNAL;\r
\r
PROCEDURE disconnect(VAR p:port; index:1..maxint);\r
EXTERNAL;\r
\r
PROCEDURE getconnection(VAR p:port; index:1..maxint; VAR compl, disc:reference);\r
EXTERNAL;\r
\r
PROCEDURE getcredit(VAR p:port; index:1..maxint; VAR credbuf: reference);\r
EXTERNAL;\r
\r
PROCEDURE getreset(VAR p:port; index:1..maxint; VAR indic: reference);\r
EXTERNAL;\r
\r
FUNCTION maxconnections:0..maxint;\r
EXTERNAL;\r
\r
PROCEDURE openport(VAR p:port; VAR closebuf: reference;\r
                   inspect name:string; scope: scope_type;\r
                   no_of_cons: integer; cntrl: control_type);\r
EXTERNAL;\r
\r
PROCEDURE receive(VAR p:port; index:1..maxint; VAR databuf: reference);\r
EXTERNAL;\r
\r
PROCEDURE receiveall(VAR p:port; VAR databuf: reference);\r
EXTERNAL;\r
\r
PROCEDURE reset(VAR p:port; index:1..maxint; VAR compl: reference);\r
EXTERNAL;\r
\r
PROCEDURE send(VAR p:port; index:1..maxint; VAR databuf: reference);\r
EXTERNAL;\r
\r
\r
(* Implementation dependent standard routines and types*)\r
\r
TYPE \r
\r
coded_date=record\r
             year_after_1900: byte;\r
             month: byte;\r
             day: byte;\r
           end;\r
           \r
coded_time=record\r
             hour: byte;\r
             minute: byte;\r
           end;\r
           \r
coded_secs=packed record\r
             sec: byte;\r
             msec: int16;\r
           end;\r
\r
coded_inc= record\r
             days: 0..31;\r
             hours: 0..23;\r
             mins: 0..59;\r
             secs: 0..59;\r
             msecs: int16;\r
           end;\r
\r
delaytype= record\r
             prev_date: coded_date;\r
             prev_time: coded_time;\r
             prev_secs: coded_secs;\r
             inc : coded_inc;\r
           end;\r
\r
clocktype= record\r
             date: coded_date;\r
             time: coded_time;\r
             secs: coded_secs;\r
           end;\r
\r
tversion= record\r
            release, subrelease: byte;\r
          end;\r
\r
tmoduleversion= record\r
                  moduledate: coded_date;\r
                  moduletime: coded_time;\r
                  moduleversion: tversion;\r
                  compilationdate: coded_date;\r
                  compilationtime: coded_time;\r
                end;\r
                \r
function clock_difference( var t1, t2: clocktype ): coded_inc;\r
external;\r
\r
function clock_increment( var t: clocktype; var inc: coded_inc ): clocktype;\r
external;\r
\r
function clock_less_than( var t1, t2: clocktype ): boolean;\r
external;\r
\r
FUNCTION deletemailbox(INSPECT mbx_name: string): integer;\r
EXTERNAL;\r
\r
FUNCTION getclock: clocktype;\r
EXTERNAL;\r
\r
FUNCTION namemailbox(VAR m: mailbox; INSPECT mbx_name: string): integer;\r
EXTERNAL;\r
\r
FUNCTION ownname(VAR name:string): byte;\r
EXTERNAL;\r
\r
FUNCTION ownprogramname(VAR name:string): byte;\r
EXTERNAL;\r
\r
PROCEDURE ownversion(VAR myversion: tmoduleversion);\r
EXTERNAL;\r
\r
FUNCTION searchmailbox(INSPECT mbx_name: string): ^mailbox;\r
EXTERNAL;\r
\r
\r
PROCEDURE sendtimer(VAR ref: reference );\r
EXTERNAL;\r
\r
PROCEDURE setownname(INSPECT name: string );\r
EXTERNAL;\r
\r
FUNCTION swap(n: int16): integer;\r
BEGIN 0\r
	STL	-3\r
	LDL	-3\r
        LDC     255\r
        AND\r
        LDC     8\r
        SHL\r
        LDL     -3\r
        LDC     8\r
        SHR\r
        LDC     255\r
        AND\r
        OR\r
END;\r
\r
(*\r
FUNCTION swap(n: integer): integer;\r
BEGIN 0\r
	STL	-3\r
	LDL	-3\r
        LDC     24\r
	SHL\r
	LDLP	-3\r
	ADC	1\r
	LB\r
        LDC     16\r
	SHL	\r
	OR\r
	LDLP	-3\r
	ADC	2\r
	LB\r
        LDC     8\r
	SHL\r
	OR\r
	LDLP	-3\r
	ADC	3\r
	LB\r
	OR\r
END;\r
*)\r
(* Implementation demendent open routines *) \r
\r
PROCEDURE breakpoint;\r
BEGIN 0\r
        J 0\r
END;\r
\r
PROCEDURE crc16( value, quotient: integer );\r
EXTERNAL;\r
\r
PROCEDURE crc16buf( VAR ref: reference; fromindex, toindex, quotient, startvalue: integer);\r
EXTERNAL; \r
\r
PROCEDURE definetimer( on: boolean );\r
BEGIN 0\r
END;\r
\r
FUNCTION equalhome(VAR a: rtype    ; VAR b: rtype    ): boolean;\r
BEGIN 1\r
	LDNL	ref.message.\r
	XDBLE\r
	REV\r
        NOT\r
CJUMP 0\r
LABEL 1\r
	LDC	fault.ref.nil\r
PUSHPROC\r
PUSHPROC\r
	LDNL	proc.fault.\r
	GCALL\r
LABEL 0\r
        OR\r
	LDNL	header.home.\r
	REV\r
        LDNL    ref.message.\r
	XDBLE\r
	REV\r
CJUMP 1\r
	LDNL	header.home.\r
	DIFF\r
	EQC	0\r
END;\r
\r
FUNCTION homeless(VAR r: rtype    ): boolean; EXTERNAL;\r
\r
FUNCTION imcpresent: boolean;\r
BEGIN 1\r
        LDC 0\r
END;  \r
\r
FUNCTION locktest(VAR ref: reference): boolean;\r
BEGIN 1\r
        LDNL ref.locked.\r
        EQC 0\r
        EQC 0\r
END;  \r
\r
PROCEDURE getservers( VAR ref: reference );\r
EXTERNAL;\r
\r
FUNCTION madd( a, b: integer): integer;\r
BEGIN 0\r
	SUM\r
END;\r
\r
FUNCTION mmul( a, b: integer): integer;\r
BEGIN 0\r
	PROD\r
END;\r
\r
FUNCTION msub( a, b: integer): integer;\r
BEGIN 0\r
        REV\r
	DIFF\r
END;\r
\r
FUNCTION rotate( a, shl: integer): integer;\r
BEGIN 0\r
        STL -3\r
        LDC 31\r
        AND\r
        LDC 0\r
        REV\r
        LDL -3\r
        REV\r
        LSHL\r
        OR\r
END;\r
\r
PROCEDURE setpriority( prio: integer);\r
BEGIN 0\r
END;\r
\r
FUNCTION uadd( a, b: integer): integer;\r
BEGIN 0\r
        STL -3\r
        LDC 0\r
        REV\r
        LDL -3\r
        LSUM\r
        REV\r
        LDC 1\r
        CSUB0\r
        OR\r
END;\r
\r
FUNCTION udiv( a, b: integer): integer;\r
BEGIN 0\r
        STL -3\r
        LDC 0\r
        REV\r
        LDL -3\r
        REV\r
        LDIV\r
END;\r
\r
FUNCTION ult( a, b: integer): boolean;\r
BEGIN 0\r
        STL -3\r
        LDC 0\r
        REV\r
        LDL -3\r
        LDIFF\r
        REV\r
        GT\r
END;\r
\r
FUNCTION umod( a, b: integer): integer;\r
BEGIN 0\r
        STL -3\r
        LDC 0\r
        REV\r
        LDL -3\r
        REV\r
        LDIV\r
        REV\r
END;\r
\r
FUNCTION umul( a, b: integer): integer;\r
BEGIN 0\r
        STL -3\r
        LDC 0\r
        REV\r
        LDL -3\r
        LMUL\r
        REV\r
        LDC 1\r
        CSUB0\r
        OR\r
END;\r
\r
FUNCTION usub( a, b: integer): integer;\r
BEGIN 0\r
        STL -3\r
        LDC 0\r
        REV\r
        LDL -3\r
        REV\r
        LDIFF\r
        REV\r
        LDC 1\r
        CSUB0\r
        OR\r
END;\r
\r
\r
.\r