|
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: 13824 (0x3600) Types: TextFileVerbose Names: »bblenv«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system └─⟦6b41451d2⟧ └─⟦this⟧ »bblenv«
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; ext_message_header = record chain : addr; messagekind : integer; size : integer; start : addr; (* start of message data part *) owner : addr; answer : addr; msg_chain : addr; stackchain : addr; 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; ext_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 : addr; semchain : addr; refchain : addr; shadowchain : addr; msg_chain : addr; exit_point : addr; exit_semaphore : addr; delaychain : addr; exitref : addr; statistic : addr; secret_pointer : addr; 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; (* 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; . (* end of standard environment *) «eof»