|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 9216 (0x2400)
Types: TextFileVerbose
Names: »platonenv«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
└─⟦6b41451d2⟧
└─⟦this⟧ »platonenv«
standard_environment;
(* version : 2 *)
(* revision 5 *)
(* date : 81.06.15 , bbl *)
const
alfalength = 12;
maxint = 32767;
minint = -32768;
mpexcfirst = 1;
rsexcfirst = mpexcfirst + 30;
cpexcfirst = rsexcfirst + 5;
maxpriority = 3;
minpriority = -3;
stdpriority = minpriority;
type
(* basic types *)
bit = 0..1;
byte = 0..255;
memno_type = 0..31;
activation = (a_interrupt, a_semaphore, a_delay);
base_type = packed record
lockbit : bit;
nill : bit;
moduletype : byte;
mem_no : memno_type;
nullbit : bit
end;
addr = record
base : base_type;
disp : integer
end;
boolean = (false,true);
char =(
(* 0 1 2 3 4 5 6 7 8 9 *)
(* 0 *) nul, soh, stx, etx, eot, enq, ack, bel, bs, ht,
(* 10 *) nl, vt, ff, cr, so, si, dle, dc1, dc2, dc3,
(* 20 *) dc4, nak, syn, etb, can, em, sub, esc, fs, gs,
(* 30 *) rs, us, sp, ?, ?, ?, ?, ?, ?, ?,
(* 40 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 50 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 60 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 70 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 80 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 90 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 100 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 110 *) ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
(* 120 *) ?, ?, ?, ?, ?, ?, ?, del );
alfa = array ( 1..alfalength ) of char;
semaphore = record
? <* chain *> : addr; (* message_headers or incarnation_descriptors *)
? <* semchain *> : ^ semaphore (* used by exit *)
end;
message_header = record
? <* chain *> : ^ message_header;
messagekind : ! integer;
size : ! integer;
? <* start *> : addr; (* start of message data part *)
? <* owner *> : ^ semaphore;
? <* answer *> : ^ semaphore;
? <* msg_chain *> : ^ message_header;
? <* stackchain *> : ^ message_header;
u1, u2, u3, u4 : byte
end;
reference = ^ message_header;
(* nb nb nb nb : all variables of type reference are allocated *)
(* memory space as two pointer variables *)
shadow = record
? <* r *> : reference;
? <* next *> : ^ shadow (* used by exit *)
end;
process_inf = record
entry_point : addr;
exception_point : addr;
exit_point : addr;
default_appetite : integer;
last_param_offset : integer
end;
process_descriptor = record (* the "type" of a process name *)
incarnationcount : integer;
param_descr_ref : addr; (* address of formal parameters *)
link_state : integer; (* 0: unlinked 1: internal linked 2: external linked *)
process_inf_ref : addr; (* pointer to descriptorsegment if external linked
pointer to process_inf if internal linked *)
name : alfa
end;
processrec = record (* used by create *)
processref : ^ process_descriptor;
firstparam : addr;
size_of_params : integer
end;
semtype = (deallocatorsem,linkersem,stopsem,allocsem,exceptionsem,opsem,?,?,
?,?,?,?,
monitorsem,?,timersem,iotimersem,?,?,activebase,monitorstack,
timerstack,allocatorstack,linkerstack,adamstack);
adamsemtype = (allocatorsem,adamsem,operatorsem,?,?,?,?,?,
?,?,?,?,?,?,?,?);
secret_vector = array(semtype) of ^ semaphore;
adamvector = array(adamsemtype) of ^ semaphore;
system_vector = ! adamvector;
incarnation_descriptor = record
(* the incarnation descriptor appearing as the first part of global frame *)
? <* chain *> : addr;
? <* pu *> : byte;
? <* level *> : byte;
? <* incstate *> : integer;
? <* msg_waited *> : addr;
? <* activequeue *> : addr;
? <* chainhead *> : addr;
? <* exception_mask *> : integer;
? <* exception_point *> : addr;
? <* exic *> : addr;
? <* dumplm *> : integer;
? <* dumpps *> : integer;
? <* dumplu *> : integer;
? <* dumpsf *> : integer;
? <* entry_point *> : addr;
timer : integer;
? <* maxstack *> : integer;
? <* processref *> : ^ process_descriptor;
? <* semchain *> : ^ semaphore;
? <* refchain *> : ^ reference;
? <* shadowchain *> : ^ shadow;
? <* msg_chain *> : ^ message_header;
? <* exit_point *> : addr;
? <* exit_semaphore *> : semaphore;
? <* exitref *> : reference;
? <* secret_pointer *> : ^ secret_vector;
? <* plinetable *> : addr;
incname : alfa;
end;
coded_date = packed record
year_after_1900 : 0 .. 127;
month : 0 .. 15;
day : 0 .. 31;
end;
coded_time = packed record
compiler_version : 0..31; (* 5 bits *)
hour : 0..31; (* 5 bits *)
minute : 0..63; (* 6 bits *)
end;
coded_secs = packed record
sec : 0..63;
msec: 0..1023;
end;
delaytype = record
prev_date : coded_date;
prev_time : coded_time;
prev_secs : coded_secs;
inc : packed record
days : 0..63;
hours : 0..31;
mins : 0..63;
secs : 0..63;
msecs : 0..1023;
end;
end;
var
(* now a variable of type incarnation_descriptor must!! be declared
as the first variable *)
own : incarnation_descriptor;
(* now the standard routines are defined as externals *)
function abs(x : niltype) : niltype; external;
procedure alloc(var r : reference; var p : pool 100 ;
var sem : semaphore); external;
procedure break(var sh : shadow; excode : integer); external;
function chr(int : 0..127) : char; external;
function create(incarnation_name : alfa; proces : processrec; var sh : shadow;
storage : integer) : integer; external;
procedure definetimer(onoff:boolean); external;
function empty(var r : reference) : boolean; external;
function eoi : boolean; external;
procedure exception(excode : integer);
external;
procedure inbyteblock
(var next : integer;
first,last : integer;
var msg : reference;
var ch_msg : reference);
external;
procedure inwordblock
(var next : integer;
first,last : integer;
var msg : reference;
var ch_msg : reference);
external;
function link(external_name : alfa;
var proces : process_descriptor) : integer; external;
function locked(var sem : semaphore) : boolean; external;
function nil(var r : ^ niltype) : boolean; external;
function open(var sem : semaphore) : boolean; external;
function openpool(var p : pool 1) : boolean;
external;
function ord(x : niltype) : integer; external;
procedure outbyteblock
(var next : integer;
first,last : integer;
var msg : reference;
var ch_msg : reference);
external;
procedure outwordblock
(var next : integer;
first,last : integer;
var msg : reference;
var ch_msg : reference);
external;
function ownertest(var p : pool 1; var r : reference) : boolean;
external;
function passive(var sem : semaphore) : boolean; external;
procedure pop(var r1, r2 : reference); external;
function pred(x : niltype) : niltype; external;
procedure push(var r1, r2 : reference); external;
function ref(var sem : semaphore) : ^ semaphore; external;
procedure release(var r : reference); external;
procedure remove(var sh : shadow); external;
function reservech(var ch_msg : reference; level, mask : integer): integer; external;
procedure return(var r : reference); external;
procedure sendtimer(var r : reference);
external;
procedure sensesem(var r : reference; var sem : semaphore);
external;
procedure setpriority(priority : integer);
external;
procedure signal(var r : reference; var sem : semaphore); external;
procedure start(var sh : shadow; priority : integer); external;
procedure stop(var sh : shadow); external;
function succ(x : niltype) : niltype; external;
procedure trace = exception( code : integer ) ; external;
function unlink(var proces : process_descriptor) : integer; external;
procedure wait(var r : reference; var sem : semaphore); external;
procedure waiti; external;
procedure waits = wait(var r : reference; var sem : semaphore); external;
procedure waitd(delay : integer); external;
procedure waitt; external;
function waitid(delay : integer) : activation; external;
function waitit: activation; external;
function waitis( var r: reference; var s : semaphore) : activation;
external;
function waitsd ( var r : reference; var s : semaphore; delay : integer ) :
activation; external;
function waitst (var r: reference; var s: semaphore): activation; external;
function waitisd( var r : reference; var s : semaphore; delay : integer ) :
activation; external;
function waitist (var r: reference; var s: semaphore): activation; external;
function ctrwaitid ( c : integer; delay : integer ) : activation; external;
function ctrwaitit (c: integer): activation; external;
function ctrwaitis ( c: integer; var r:reference; var s : semaphore) :
activation ; external;
function ctrwaitisd ( c: integer; var r : reference; var s : semaphore; delay : integer) :
activation; external;
function ctrwaitist (c: integer; var r: reference; var s: semaphore): activation; external;
procedure ___exit___rc;
external;
procedure _initpool_rc(var s : semaphore; number , size : integer);
external;
. (* end of standard environment *)
«eof»