|
|
DataMuseum.dkPresents historical artifacts from the history of: DANOSI |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DANOSI Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 27113 (0x69e9)
Types: TextFile
Names: »SYS3502.ENV«
└─⟦289818552⟧ Bits:30010516 DVBS1.SW2114.src.2.7-3 SW2114 3/4 Real Time Pascal 2.7
└─⟦this⟧ »RTPSTD\SYS3502.ENV«
└─⟦d5707feda⟧ Bits:30010512 DVBS1.SW2114.src.2.14-3 SW2114 REAL #3/4 TIME PASCAL SOURCE REL 2.14 92.09.01
└─⟦this⟧ »RTPSTD\SYS3502.ENV«
sys3502env;\r
\r
-- 870119 bb 3.1 ok introduced as constant\r
-- 870305 bb 3.2 rtp86 (set)bytecount, offset, top introduced\r
-- 870728 bb 3.3 overlap between testoutputsem and addrsem removed\r
-- 871228 bb 3.4 Header_size defined by typesize call.\r
-- 880228 bb 3.5 rtp86 (set)bytecount, offset, top moved to rtp35022env\r
-- 880714 bb restructured caused by language modifications\r
-- 890301 bb sensembx defined here and not in rtp3502env.\r
\r
(* date : 83.03.01 , edm *)\r
(* date : 83.11.01 , bb *)\r
(* date : 85.10.04 , bb *)\r
(* type definition af clocktype indf|rt *)\r
(* erkl{ring af getclock indf|rt *)\r
(* date : 85.10.16 , bb *)\r
(* erkl{ring af _exchange_rc indsat *)\r
(* date : 85.11.19 , bb *)\r
(* type and routine definitions concerning *)\r
(* manipulation of buffer indices *)\r
(* date : 86.03.14 , bb *)\r
(* the namefield in process_descriptor *)\r
(* made anonymous *)\r
(* date : 86.05.16 , bb *)\r
(* new declarations introduced *)\r
(* _shift____rc *)\r
(* ___new____rc *)\r
(* _initref__rc *)\r
(* _initsh___rc *)\r
(* _initsem__rc *)\r
(* _initproc_rc *)\r
(* _heapref__rc *)\r
(* _heapsh___rc *)\r
(* date : 86.05.20 , bb *)\r
(* the procedure NEW is now predefined *)\r
(* date : 86.08.08 , bb *)\r
(* the type coded_inc introduced *)\r
(* date : 86.09.05 , bb *)\r
(* the type double introduced *)\r
(* new definitions of *)\r
(* clock_increment *)\r
(* clock_less_than *)\r
(* clock_difference *)\r
(* date : 86.09.29 , bb *)\r
(* _bufsize__rc *)\r
(* _first____rc *)\r
(* _last_____rc *)\r
(* date : 86.10.01 , bb *)\r
(* source_date, source_time, version *)\r
(* introduced in lookup_descriptor_segment *)\r
(* is now predefined *)\r
(* date : 86.10.03 , bb *)\r
(* delete_semaphore *)\r
(* name_semaphore *)\r
(* search_semaphore *)\r
(* is now predefined *)\r
(* date : 88.02.26 , bb *)\r
(* bufcount *)\r
(* stackdepth *)\r
(* is now predefined *)\r
(* date : 88.02.28 , bb *)\r
(* offset , setoffset *)\r
(* top , settop *)\r
(* bytecount, setbytecount *)\r
(* allocpool, releasepool *)\r
(* allocdelay *)\r
(* is now predefined *)\r
-- date : 88.07.13 .., bb\r
-- Change of language concepts:\r
-- mailbox in stead of semaphore\r
-- process in stead of shadow\r
-- program in stead of process\r
-- only routines in the language predefined\r
-- date : 88.12.21 bb\r
-- Reforchain changed to reference in bufcount\r
-- and stackdepth.\r
-- date : 89.03.01 bb\r
-- Sensembx removed as predefined.\r
-- date : 89.05.30 bb\r
-- Parameters swapped in hometest according to manual.\r
-- date : 89.06.28 bb\r
-- include of rc3502env\r
-- inc and dec declarations included.\r
-- date : 89.07.07 bb\r
-- definetimer moved from rtp3502env to rc3502env\r
-- date : 89.10.17 bb\r
-- searchmailbox etc moved from rtp3502env to rc3502env\r
-- date : 89.11.22 bb\r
-- double moved from rtp3502env to rc3502env\r
-- date : 89.12.04 bb\r
-- messagekind in messageheader made invisible\r
-- procname in process descriptor made invisible\r
-- date : 89.12.14 bb\r
-- rename of nilref, dec_byte, inc_byte to _nilref_rc,\r
-- _dec_byte_rc, _inc_byte_rc.\r
-- date : 90.10.26 hej\r
-- rename of trace -> stacktrace, trigger -> trace\r
\r
const\r
\r
alfalength = 12;\r
maxint = 32767;\r
minint = -32768;\r
\r
ok = 0;\r
mpexcfirst = 1;\r
rsexcfirst = mpexcfirst + 29;\r
cpexcfirst = rsexcfirst + 5;\r
dbl_mul_exc = #h21;\r
dbl_conv_exc= #h22;\r
\r
maxpriority = 0;\r
minpriority = -2;\r
stdpriority = minpriority;\r
\r
type\r
priotype = minpriority .. maxpriority;\r
\r
-- results from standard routines\r
\r
-- create\r
const\r
create_ok = 0;\r
create_process_not_nil = 1;\r
create_program_not_linked = 2;\r
create_no_memory = 3;\r
type\r
create_result = create_ok .. create_no_memory;\r
\r
-- link\r
const\r
link_ok = 0;\r
link_not_found = 1;\r
link_no_parameter_match = 3;\r
link_already_linked = 6;\r
type\r
link_result = link_ok .. link_already_linked;\r
\r
-- unlink\r
const\r
unlink_ok = 0;\r
unlink_no_program_linked = 1;\r
unlink_program_busy = 2;\r
type\r
unlink_result = unlink_ok .. unlink_program_busy;\r
\r
type\r
\r
-- basic types\r
bit = 0..1;\r
byte = 0..255;\r
\r
base_type = packed\r
record\r
onebit : bit;\r
mem_no : 0..63;\r
nilbit : bit\r
end;\r
\r
adr =\r
record\r
base : base_type;\r
disp : integer\r
end;\r
\r
addr =\r
record\r
nulbyte : byte;\r
base : base_type;\r
disp : integer;\r
end;\r
\r
activation = (a_interrupt, a_mailbox, a_delay);\r
\r
boolean = (false,true);\r
\r
char =\r
(\r
(* 0 1 2 3 4 5 6 7 8 9 *)\r
\r
(* 0 *) nul, soh, stx, etx, eot, enq, ack, bel, bs, ht,\r
(* 10 *) nl, vt, ff, cr, so, si, dle, dc1, dc2, dc3,\r
(* 20 *) dc4, nak, syn, etb, can, em, sub, esc, fs, gs,\r
(* 30 *) rs, us, sp, ?, ?, ?, ?, ?, ?, ?,\r
(* 40 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 50 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 60 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 70 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 80 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 90 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 100 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 110 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 120 *) ?, ?, ?, ?, ?, ?, ?, del, ?, ?,\r
(* 130 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 140 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 150 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 160 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 170 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 180 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 190 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 200 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 210 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 220 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 230 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 240 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\r
(* 250 *) ?, ?, ?, ?, ?, ? );\r
\r
\r
alfa = array ( 1..alfalength ) of char;\r
\r
mailbox =\r
record\r
mbx : addr; -- message_headers or register_sets\r
next : ^ mailbox; -- used by remove\r
end;\r
\r
\r
message_header =\r
record\r
nulbyte : byte;\r
chain : ^ message_header;\r
u1 : byte;\r
u2 : byte;\r
u3 : byte;\r
u4 : byte;\r
messagekind : integer;\r
size : integer;\r
start : addr;\r
owner : ^ mailbox;\r
answer : ^ mailbox;\r
msgchain : ^ message_header;\r
stackchain : ^ message_header;\r
connection_index : byte;\r
credit_count : byte;\r
reason : byte;\r
event_kind : byte;\r
end;\r
\r
process =\r
record\r
proc : ^ niltype; -- address of process descriptor\r
next : ^ process; -- used by remove\r
end;\r
\r
\r
reference = ^ message_header;\r
-- nb nb nb nb : all variables of type reference are allocated\r
-- memory space as one count byte and two\r
-- pointer variables\r
\r
chain_element =\r
record\r
r : reference;\r
up : ^ chain_element;\r
down : ^ chain_element;\r
end;\r
\r
chain =\r
record\r
cur : ^ chain_element; -- current chain_element\r
start : ^ chain_element; -- start chain_element\r
length : 0..maxint; -- no of chain_elements in chain\r
end;\r
\r
shared_descr = -- controls access to a shared variable\r
record\r
r : reference; -- message containing shared variable\r
object : ^ mailbox; -- synchs access to shared variable\r
end;\r
\r
program_inf =\r
record\r
entry_point : adr;\r
exception_point : adr;\r
default_appetite : integer;\r
last_param_offset : integer\r
end;\r
\r
\r
const\r
maxparams = 30; (* must match pass5 and crosslink values !!! *)\r
\r
(* registerset constants *)\r
regsetsize = 8;\r
ps = -7; (* ps displacement in registerset *)\r
sb = -6; (* sb displacement in registerset *)\r
gf = -5; (* gf displacement in registerset *)\r
lf = -4; (* lf displacement in registerset *)\r
lu = -3; (* lu displacement in registerset *)\r
lm = -2; (* lm displacement in registerset *)\r
ib = -1; (* ib displacement in registerset *)\r
ic = 0; (* ic displacement in registerset *)\r
\r
(* control micro processor indices *)\r
rtc_level_index = 0;\r
tto_level_index = 1;\r
watchdogh = 6;\r
output_index = 8;\r
version_index = 9;\r
switch0_index = 10;\r
switch1_index = 11;\r
first_io_index = 12;\r
ram_bitmap_index = 28;\r
prom_bitmap_index = 34;\r
id_index = 40;\r
mask_index = 42;\r
param_index = 43;\r
name_index = 44;\r
copy0_index = 52;\r
copy1_index = 53;\r
printcount_index = 54;\r
\r
first_module = 16;\r
last_module = 63;\r
\r
(* incarnation state constants *)\r
stopstate = 1;\r
exitstate = 2;\r
runstate = 3;\r
waitstate = 4;\r
\r
stop_length = 8; (* length of pseudo descriptorsegment in bytes *)\r
header_size = typesize (message_header);\r
\r
wordsize = typesize (integer);\r
pointersize = typesize (adr);\r
addrsize = typesize (addr);\r
\r
sumkind = 0;\r
programkind = 1;\r
procedurekind = 2;\r
functionkind = 3;\r
(* open procedure = 4; *)\r
(* open function = 5; *)\r
datakind = 6;\r
\r
type\r
\r
param_descr =\r
record\r
kind ,\r
size : integer;\r
end;\r
\r
param_array = array (1..maxparams) of param_descr;\r
\r
param_record =\r
record\r
no_of_params : integer;\r
params : param_array;\r
end;\r
\r
ext_linktable_entry =\r
record\r
name : alfa;\r
params : param_record;\r
end;\r
\r
program_descriptor = -- the "type" of a program\r
record\r
-- used by link and unlink\r
count : integer; -- no of incarnations of this program\r
paramptr : ^ param_record; -- address of formal parameters\r
state : integer; -- 0: unlinked\r
-- 1: internal linked\r
-- 2: external linked\r
programinf : ^ niltype; -- pointer to descriptorsegment\r
-- if external linked\r
-- pointer to program_inf\r
-- if internal linked\r
prgname : alfa;\r
next : ^ program_descriptor; -- used by remove\r
end;\r
\r
programrec = -- used by create\r
record\r
programref : ^ program_descriptor;\r
firstparam : ^ niltype;\r
size_of_params : integer;\r
end;\r
\r
adammbxtype = (adammbx,operatormbx,loadermbx,globalmbx,loaddrivermbx,paxmbx,restartmbx,?,\r
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);\r
\r
adamvector = array(adammbxtype) of ^ mailbox;\r
\r
system_vector = ! adamvector;\r
\r
mbxtype = (deallocatormbx,linkermbx,stopmbx,allocmbx,exceptionmbx,\r
opmbx,restart_mbx,stop_msg,writerammbx,addrmbx,testoutputmbx,commonpool,\r
monitormbx,printstatmbx,timermbx,iotimermbx,_adammbx,\r
timerbase,exceptionstack,monitorstack,\r
timerstack,allocatorstack,linkerstack,operatorstack);\r
\r
secret_vector = array(mbxtype) of \r
record\r
nulbyte : byte;\r
p : ^ mailbox;\r
end;\r
\r
process_descriptor =\r
record\r
-- the process descriptor appearing as the first part of global frame\r
timer : integer;\r
level : byte;\r
delaychain : ^ process_descriptor;\r
exceptioncode : integer;\r
exic : addr;\r
exceptionpoint : addr;\r
maxstack : integer;\r
regset : integer;\r
mregset : integer;\r
procstate : integer;\r
programref : ^ program_descriptor; -- in fathers stack\r
mbxchain : ^ mailbox;\r
refchain : ^ reference;\r
processchain : ^ process;\r
msgchain : ^ message_header;\r
programchain : ^ program_descriptor; -- in own stack\r
workmbx : mailbox;\r
secretpointer : ^ secret_vector;\r
workref : reference;\r
plinetable : ^ niltype;\r
procname : alfa;\r
father : ^ process_descriptor;\r
processref : ^ process; (* in fathers stack *)\r
end;\r
\r
\r
ext_process_descriptor =\r
record\r
-- the process descriptor appearing as the first part of global frame\r
timer : integer;\r
level : byte;\r
delaychain : adr;\r
exceptioncode : integer;\r
exic : addr;\r
exceptionpoint : addr;\r
maxstack : integer;\r
regset : integer;\r
mregset : integer;\r
procstate : integer;\r
programref : adr; -- in fathers stack\r
mbxchain : adr;\r
refchain : adr;\r
processchain : adr;\r
msgchain : adr;\r
programchain : adr; -- in own stack\r
workmbx : addr;\r
statistic : adr;\r
secretpointer : adr;\r
workref : addr;\r
heap : adr;\r
plinetable : adr;\r
procname : alfa;\r
father : adr;\r
processref : adr; (* in fathers stack *)\r
end;\r
\r
\r
var\r
(* now a variable of type process_descriptor must!be declared\r
as the first variable *)\r
\r
own : process_descriptor;\r
\r
\r
(* now the standard routines are defined as externals *)\r
\r
function abs(n : niltype) : niltype; external;\r
\r
procedure alloc(var r : reference; var p : pool;\r
var m : mailbox); external;\r
\r
function allocdelay (var r : reference; var p : pool;\r
var m : mailbox; msecs : integer) : activation;\r
external;\r
\r
function allocpool (var p : pool;\r
number, bytes : integer) : integer; external;\r
\r
function bufcount (var r : reference) : integer; external;\r
\r
function bufsize (var r : reforchain) : integer; external;\r
\r
function bytecount (var r : reforchain) : integer; external;\r
\r
procedure chaindequeue (var r : reference; var ch : chain); external;\r
\r
procedure chaindown (var ch : chain); external;\r
\r
procedure chainenqueue (var r : reference; var ch : chain); external;\r
\r
function chainlength (var ch : chain) : integer; external;\r
\r
procedure chainreset (var ch : chain); external;\r
\r
procedure chainstart (var ch : chain); external;\r
\r
procedure chainup (var ch : chain); external;\r
\r
function chr(int : 0..255) : char; external;\r
\r
function create (inspect processname : alfa;\r
prog : programrec;\r
var proc : process;\r
bytes : integer;\r
priority : priotype) : create_result;\r
external;\r
\r
procedure dec (var i : integer); external;\r
\r
procedure _dec_byte_rc (var b : byte) ; external;\r
\r
procedure delay (msecs : integer); external;\r
\r
procedure exception(excode : integer); external;\r
\r
function hometest (var r : reference;\r
var p : pool) : boolean;\r
external;\r
\r
procedure inc (var i : integer); external;\r
\r
procedure _inc_byte_rc (var b : byte) ; external;\r
\r
function link (inspect external_name : alfa;\r
var prog : program_descriptor) : link_result; external;\r
\r
function locked(var m : mailbox) : boolean; external;\r
\r
procedure new (var p : ^ niltype); external;\r
\r
function nil(var r : ^ niltype) : boolean; external;\r
\r
function offset (var r : reforchain) : integer; external;\r
\r
function open(var m : mailbox) : boolean; external;\r
\r
function openpool(var p : pool) : boolean; external;\r
\r
function ord(x : niltype) : integer; external;\r
\r
function passive (var m : mailbox) : boolean; external;\r
\r
procedure pop (var r1, r2 : reference); external;\r
\r
function pred (x : niltype) : niltype; external;\r
\r
procedure push (var r1, r2 : reference); external;\r
\r
procedure release (var r : reference); external;\r
\r
function releasepool (var p : pool; no : integer) : integer;\r
external;\r
\r
procedure remove (var proc : process); external;\r
\r
procedure resume (var proc : process); external;\r
\r
procedure return(var r : reference); external;\r
\r
procedure setbytecount (var r : reforchain; val : integer); external;\r
\r
procedure setoffset (var r : reforchain; val : integer); external;\r
\r
procedure settop (var r : reforchain; val : integer); external;\r
\r
procedure setu1 (var r : reforchain; val : byte); external;\r
\r
procedure setu2 (var r : reforchain; val : byte); external;\r
\r
procedure setu3 (var r : reforchain; val : byte); external;\r
\r
procedure setu4 (var r : reforchain; val : byte); external;\r
\r
procedure signal (var r : reference; var m : mailbox); external;\r
\r
function stackdepth (var r : reference) : integer; external;\r
\r
procedure start (var proc : process; priority : integer); external;\r
\r
procedure stop (var proc : process); external;\r
\r
function succ (x : niltype) : niltype; external;\r
\r
function swap (i : integer) : integer; external;\r
\r
function top (var r : reforchain) : integer; external;\r
\r
procedure stacktrace = exception (code : integer) ; external;\r
\r
procedure trace (code : integer) ; external;\r
\r
function unlink (var prog : program_descriptor) : integer; external;\r
\r
function u1 (var r : reforchain) : byte; external;\r
\r
function u2 (var r : reforchain) : byte; external;\r
\r
function u3 (var r : reforchain) : byte; external;\r
\r
function u4 (var r : reforchain) : byte; external;\r
\r
procedure wait (var r : reference; var m : mailbox); external;\r
\r
function waitdelay (var r : reference;\r
var m : mailbox;\r
msecs : integer) : activation;\r
external;\r
\r
function _bufsize__rc (var r : reference) : integer;\r
external;\r
\r
procedure _exchange_rc (var proc1, proc2 : process);\r
external;\r
\r
procedure _exit_____rc; external;\r
\r
function _first____rc (var r : reference) : integer;\r
external;\r
\r
-- procedure _heapchainrc (p : ^ niltype); external;\r
-- is going to be removed\r
\r
procedure _heapproc_rc (p : ^ niltype); external;\r
\r
procedure _heapref__rc (p : ^ niltype); external;\r
\r
procedure _initchainrc (p : ^ niltype); external;\r
\r
procedure _initmbx__rc (p : ^ niltype); external;\r
\r
procedure _initpool_rc (var m : mailbox;\r
number, size : integer);\r
external;\r
\r
procedure _initproc_rc (p : ^ niltype); external;\r
\r
procedure _initprog_rc (p : ^niltype; q : ^niltype); external;\r
\r
procedure _initref__rc (p : ^ niltype); external;\r
\r
function _last_____rc (var r : reference) : integer;\r
external;\r
\r
function _new______rc (bytes : integer;\r
wordalignment : boolean) : ^ niltype;\r
external;\r
\r
function _nilref___rc (var r : reference) : boolean; external;\r
(* special version of nil for reference variables *)\r
\r
procedure _region___rc (var sh : shared_descr); external;\r
\r
procedure _reg_exit_rc (var sh : shared_descr); external;\r
\r
procedure _shift____rc (a, b : integer);\r
external;\r
-- rc3502env;\r
\r
-- contains declarations specific for rtp3502\r
\r
-- 880714 bb First version\r
-- 890703 bb Swapped declaration to obtain alfabetic order.\r
-- 890707 bb Definetimer moved from rtp3502env to rc3502env\r
-- 891017 bb Searchmailbox etc moved from rtp3502env to rc3502env.\r
-- 891122 bb Function Messagekind introduced.\r
-- Double moved from rtp3502env to rc3502nv\r
-- 891204 bb Ownname and Setownname introduced.\r
-- 891213 bb Compiler_version screened in coded_time.\r
-- Crc16buf introduced as defined here.\r
-- Tofrom introduced as defined here.\r
-- Ownprogramname introduced as defined here.\r
-- Callremote introduced as defined here.\r
\r
const\r
\r
break_by_father = 47; -- must be the last hard exception code\r
\r
type\r
\r
double =\r
record\r
msp, lsp : integer;\r
end;\r
\r
coded_date = packed\r
record\r
year_after_1900 : 0 .. 127; -- 7 bits\r
month : 0 .. 12; -- 4 bits\r
day : 0 .. 31; -- 5 bits\r
end;\r
\r
coded_time = packed\r
record\r
compiler_version : 0..31; -- 5 bits\r
hour : 0..23; -- 5 bits\r
minute : 0..59; -- 6 bits\r
end;\r
\r
coded_secs = packed\r
record\r
sec : 0..59; -- 6 bits\r
msec: 0..999; -- 10 bits\r
end;\r
\r
coded_inc = packed\r
record\r
days : 0..31; -- 5 bits\r
hours : 0..23; -- 5 bits\r
mins : 0..59; -- 6 bits\r
secs : 0..59; -- 6 bits\r
msecs : 0..999; -- 10 bits \r
end;\r
\r
delaytype =\r
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 =\r
record\r
date : coded_date;\r
time : coded_time;\r
secs : coded_secs;\r
end;\r
\r
lookup_descriptor_segment =\r
record\r
name : alfa;\r
descriptor_length ,\r
no_of_pages ,\r
pagesize ,\r
last_page_length ,\r
kind : integer;\r
default_appetite ,\r
last_param_offset ,\r
no_of_params : integer;\r
date : coded_date;\r
time : coded_time;\r
source_date : coded_date;\r
source_time : coded_time;\r
version : integer;\r
end;\r
\r
procedure break (var proc : process; excode : integer); external;\r
\r
function callremote (var r : reference; inspect name : alfa) : integer;\r
external;\r
\r
function clock_difference (t1, t2 : clocktype) : coded_inc;\r
external;\r
\r
function clock_increment (t : clocktype; inc : coded_inc) : clocktype;\r
external;\r
\r
function clock_less_than (t1, t2 : clocktype) : boolean;\r
external;\r
\r
function crc16 (op1, op2 : integer) : integer; external;\r
\r
function crc16buf (var r : reference;\r
frombyte, tobyte : integer;\r
quotient, startvalue : integer) : integer;\r
external;\r
\r
procedure definetimer (onoff : boolean); external;\r
\r
function deletemailbox (inspect mbx_name : alfa) : integer;\r
external;\r
\r
function eoi : boolean; external;\r
\r
function first = offset (var r : reforchain) : integer; external;\r
\r
function getclock : clocktype; external;\r
\r
procedure inbyteblock\r
(var next : integer;\r
first,last : integer;\r
var msg : reference);\r
external;\r
\r
procedure inwordblock\r
(var next : integer;\r
first,last : integer;\r
var msg : reference);\r
external;\r
\r
function last (var r : reforchain) : integer; external;\r
\r
function messagekind (var r : reference) : integer; external;\r
\r
function namemailbox (var m : mailbox; inspect mbx_name : alfa) : integer;\r
external;\r
\r
function next (var r : reforchain) : integer; external;\r
\r
procedure outbyteblock\r
(var next : integer;\r
first,last : integer;\r
var msg : reference);\r
external;\r
\r
procedure outwordblock\r
(var next : integer;\r
first,last : integer;\r
var msg : reference);\r
external;\r
\r
function ownname (var name : alfa) : byte; external;\r
\r
function ownprogramname (var a : alfa) : byte; external;\r
\r
function ref (var m : mailbox) : ^ mailbox; external;\r
\r
function reservech (var ch_msg : reference;\r
level, mask : integer) : integer;\r
external;\r
\r
function searchmailbox (inspect mbx_name : alfa) : ^ mailbox;\r
external;\r
\r
procedure sendlinker (var r : reference); external;\r
\r
procedure sendtimer (var r : reference); external;\r
\r
procedure setfirst (var r : reforchain; val : integer); external;\r
\r
procedure setlast (var r : reforchain; val : integer); external;\r
\r
procedure setnext (var r : reforchain; val : integer); external;\r
\r
procedure setownname (inspect name : alfa); external;\r
\r
procedure setpriority (priority : integer); external;\r
\r
procedure tofrom (var toref : reference; toindex : integer;\r
var fromref : reference; fromindex : integer;\r
bytes : integer);\r
external;\r
\r
procedure waiti; external;\r
\r
function waitid(msecs : integer) : activation; external;\r
\r
function waitim (var r: reference; var m : mailbox) : activation; \r
external;\r
\r
function waitimd (var r : reference;\r
var m : mailbox;\r
msecs : integer) : activation;\r
external;\r
\r
type\r
\r
descriptor_segment =\r
record\r
descriptor_length : integer;\r
no_of_pages : integer;\r
pagesize : integer;\r
last_page_length : integer;\r
kind : integer;\r
name : alfa;\r
entry_point : addr;\r
exception_point : addr;\r
default_appetite : integer;\r
last_param_offset : integer;\r
source_date : coded_date;\r
source_time : coded_time;\r
version : integer;\r
? : integer; (* for future use *)\r
end;\r
\r
(* now the routines used by the runtime processes are declared as externals *)\r
\r
function addptr (p : ^ niltype; inc : integer ) : ^ niltype; external;\r
\r
function addrptr(p : ^ niltype) : addr; external;\r
\r
function bufstart (var r : reference) : ^ niltype; external;\r
\r
procedure checkstack (appetite : integer); external;\r
\r
procedure checkeval; external;\r
\r
procedure excptcall(excode : integer);\r
external;\r
\r
function madd (a,b : integer) : integer; external;\r
function mmul (a,b : integer) : integer; external;\r
function msub (a,b : integer) : integer; external;\r
\r
function ptraddr(a : addr) : ^ niltype; external;\r
\r
procedure sensembx (var r : reference; var mbx : mailbox);\r
external;\r
\r
procedure returnx (var r : reference); external;\r
\r
procedure signalx (var r : reference; var m : mailbox); external;\r
\r
function uadd (i,j : integer) : integer; external;\r
function udiv (i,j : integer) : integer; external;\r
function ult (i,j : integer) : boolean; external;\r
function umod (i,j : integer) : integer; external;\r
function umul (i,j : integer) : integer; external;\r
function usub (i,j : integer) : integer; external;\r
\r
\r
. (* end of rc3502 environment *)\r