DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦53f87d6fa⟧ TextFile

    Length: 5376 (0x1500)
    Types: TextFile
    Names: »bblenvgen«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦6b41451d2⟧ 
        └─⟦this⟧ »bblenvgen« 

TextFile

bblenv = set 1 mini
if ok.no
finis
p1 = set 1
p2 = set 1
p2 = edit platonenv
l./system_vector =/, r/!/xxxxxxxxxx/, f
p1 = edit p2
l t,
g b/? <*//,
l t,
g b/*>//,
l t,
g b/!//, 
f

p1=edit p1
l./system_vector =/, r/xxxxxxxxxx/!/, f

if ok.no
finis

bblenv = edit p1
l./message_header = record/, l./end;/, l1, 
s1, 
   d./message_header = record/, i/


ext_message_header = record
/,
   g8/^ message_header/addr/,
   l-8,
   g8/^ semaphore/addr/,
   l./incarnation_descriptor = record/, l./end;/, l1,
   s1, d./incarnation_descriptor = record/, i/


ext_incarnation_descriptor = record
/,
   l./processref/,
      r/^ process_descriptor/addr/,
   l./semchain/,
      r/^ semaphore/addr/,
   l1,
      r/^ reference/addr/,
   l1,
      r/^ shadow/addr/,
   l1, 
      r/^ message_header/addr/,
   l./exit_semaphore/,
      r/semaphore;/addr;
delaychain : addr;/,
   l./exitref/,
      r/reference;/addr;
statistic : addr;/,
l./secret_pointer/, r/^ secret_vector/addr/,

l./(* end of standard environment *)/,
i/

(* now follows type definitions used in runtime processes and routines *)

const

fpabuffersize = 768; (* defines size of fpainputbuffer in boot *)
ptrbuffersize = 32; (* defines size of ptr inputbuffer in boot *)

break_appetite    = 14;
create_appetite   = 28;
initpool_appetite = 21;
link_appetite     = 13;
remove_appetite   = 16;
reservech_appetite= 13;
start_appetite    = 11;
stop_appetite     = 10;
unlink_appetite   = 14;



type
switch_type = packed record
kind : 0..15;
module: 0..15;
address : byte
end;

regbase = integer;
  
mem_map_type = packed array (0..15) of bit;

descriptor_segment = record
descriptor_length : integer;
no_of_pages : integer;
pagesize : integer;
last_page_length : integer;
kind : integer;
name : alfa;
entry_point : addr;
exception_point : addr;
exit_point : addr;
default_appetite : integer;
last_param_offset : integer;
no_of_params : integer
end;
 
range_descriptor = record
lower_limit : integer;
upper_limit : integer
end;

dope_vector = record
r : range_descriptor;
elem_size : integer
end;


pat32 = set of 0..31;

pat16 = set of 0..15;

corearray = array(1..fpabuffersize) of byte;

(* now the routines used by the runtime processes are declared as externals *)

function addrptr(p : ^niltype) : addr;
external;

function addr_of(var a : addr) : addr;
external;

function addr_of_core(var a : corearray) : addr;
external;

function addr_of_proc(var pr : process_descriptor) : addr;
external;

procedure asgnaddrpref(var a : addr; p : ^ process_descriptor);
external;

procedure asgnaddrref(var a : addr; var r : reference);
external;

procedure asgnaddrsec(var a : addr; p : ^ secret_vector);
external;

procedure asgnrefaddr(var r : reference; a : addr);
external;

procedure asgnsemp(var p : ^ semaphore; q : ^ semaphore);
external;

procedure asgnsempaddr(var p : ^ semaphore; var address : addr);
external;


procedure assign2(var map : mem_map_type; mask : integer); external;

procedure balloc;
external;

procedure bcheck;
external;

procedure bownertest;
external;

procedure excptcall(excode : integer);
external;

procedure checkstack(appetite : integer);
external;

procedure clearlevel;
external;

procedure copywords(destination , source : addr; count : integer);
external;

procedure counttime(level : integer); external;

procedure defineptr(var pointer : addr;
start : addr;
index : integer;
var dope : dope_vector); external;

function equalref(var a , b : reference) : boolean;
external;

procedure getbyte(var result: byte; pointer : addr); external;

procedure getinteger(var result : integer; pointer : addr); external;

procedure getlfgf(var lf , gf : addr);
external;

procedure initextref(var r : reference ; var msg_header : ext_message_header);
external;

procedure initref(var r : reference; var msg_header : message_header);
external;

procedure initscrtref(var secretref : ^ secret_vector; address : addr);
external;

procedure jumpto(address : addr); external;

procedure linkmessage(var r : reference);
external;

procedure nextrefp(var p : ^ reference);
external;

function ptraddr(a : addr) : ^niltype;
external;

procedure putaddr(pointer , walue : addr); external;

procedure readram(var result : byte; index : integer);
external;

function refpool(var p : pool 1) : ^ pool 1;
external;

function refshadow(var sh : shadow) : ^shadow;
external;


procedure selectlevel(level : integer);
external;

procedure setregister(walue,index : integer); external;

procedure startdriver(var p : ext_incarnation_descriptor);
external;

function uadd (i,j: integer): integer; external;
function udiv (i,j: integer): integer; external;
function ult  (i,j: integer): boolean; external;
function umod (i,j: integer): integer; external;
function umul (i,j: integer): integer; external;
function usub (i,j: integer): integer; external;

procedure writeram(index , walue : integer);
external;

procedure writeramclr(index, walue : integer);
external;


procedure exchange(var r: reference; var p: ^message_header); external;

/,
f

if ok.no
finis

▶EOF◀