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

⟦f2c896eae⟧ TextFile

    Length: 27113 (0x69e9)
    Types: TextFile
    Names: »SYS3502.ENV«

Derivation

└─⟦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« 

TextFile

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