DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

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

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦477685486⟧ TextFileVerbose

    Length: 10752 (0x2a00)
    Types: TextFileVerbose
    Names: »pass5test«

Derivation

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

TextFileVerbose


job pmn 9 600 time 20 0 size 100000 perm disc 200 10 
(mode list.yes
pass5bin = set 150 disc
scope user pass5bin
if ok.no
finis
pass5bin = pascal list.no codesize.2500
finis)



program  pass5test( in_pass5, out_pass5, descr_pass5, ext_pass5, output );


(*     platon-80,   test program for pass5.
       -------------------------------------------
       version:          1,          26/2/80,     pemn.
*)



var

prolog_yes,   epilog_yes :   boolean;

descr_pass5 : file of char;
in_pass5 : file of char;
out_pass5 : file of char;
ext_pass5 : file of integer;


value

prolog_yes = true;
epilog_yes = true;



procedure   pass5( prolog_yes, epilog_yes : boolean );

label

   1 ;                   (*  exit on fatal error  *)

const

(*   const.   global for pass5:       *)

pass5_version = 1;

const_niv_0 = 0;
const_size_nn = 12;
const_exc_mask = 0;

first_letter = 'a';
last_letter = 'z';

descr_max_param = 10;

c_size_opcode = 12;
c_size_identifier = 12;
c_size_string = 60;
c_size_alfa = 12;

c_exc_range = 1;
c_exc_case = 2;

t_routinemodule =     1;     t_externalproc = 2;
t_externalfunc =      3;     t_proc =         4;
t_func =              5;     t_forstore =     6;
t_length =            7;     t_deflix =       8;
t_pushvar =           9;     t_pushindv =    10;
t_pushpackedrec =    11;     t_assignstat =  12;
t_while =            13;     t_whileexpr =   14;
t_endwhile =         15;     t_pushaddr =    16;
t_pushcaddr =        17;     t_field =       18;
t_indexexpr =        19;     t_pushinda =    20;
t_index =            21;     t_cindex =      22;
t_packedarr =        23;     t_const =       24;
t_lconst =           25;     t_left =        26;
t_block =            27;     t_initconst =   28;
t_endblock =         29;     t_eom =         30;
t_assign =           31;     t_dope =        32;
t_not =              33;     t_neg =         34;
t_compare =          35;     t_compstruct =  36;
t_div =              37;     t_add =         38;
t_sub =              39;     t_mul =         40;
t_or =               41;     t_and =         42;
t_mod =              43;     t_rangetest =   44;
t_functioncall =     45;     t_fcall =       46;
t_exfunctioncall =   47;     t_endpcall =    48;
t_procedurecall =    49;     t_cparam =      50;
t_exprocedurecall =  51;     t_vparam =      52;
t_endfunccall =      53;     t_paramtype =   54;
t_lockstat =         55;     t_lockvar =     56;
t_endlock =          57;     t_withstat =    58;
t_withvar =          59;     t_endwith =     60;
t_exchangestat =     61;     t_exchange =    62;
t_goto =             63;     t_ifstat =      64;
t_ifexpr =           65;     t_else =        66;
t_endif =            67;     t_repeat =      68;
t_until =            69;     t_endrepeat =   70;
t_forstat =          71;     t_leftfor =     72;
t_testlimit =        73;     t_endfor =      74;
t_channel =          75;     t_chanvar =     76;
t_endchannel =       77;     t_casestat =    78;
t_case =             79;     t_caselabel =   80;
t_caserange  =       81;     t_otherwise =   82;
t_endcase =          83;     t_process =     84;
t_extprocess =       85;     t_body =        86;
t_endbody =          87;     t_endcaselist = 88;
t_endcasestate =     89;     t_begincode =   90;
t_codeline =         91;     t_endcode =     92;

t_max_token = 92;




op_pexit = 'pexit';  op_pcals = 'pcals';
op_revgb = 'revgb';  op_revlb = 'revlb';  op_revib = 'revib';
op_revgw = 'revgw';  op_revlw = 'revlw';  op_reviw = 'reviw';
op_revgf = 'revgf';  op_revlf = 'revlf';  op_revif = 'revif';
op_revgd = 'revgd';  op_revld = 'revld';  op_revid = 'revid';
op_revsb = 'revsb';  op_revsw = 'revsw';  op_revsf = 'revsf';
op_revsd = 'revsd';
op_revpd = 'revpd';  op_revpw = 'revpw';
op_reagd = 'reagd';  op_reald = 'reald';  op_reaid = 'reaid';
op_readd = 'readd';  op_reasd = 'reasd';
op_rechw = 'rechw';  op_rechd = 'rechd';
op_renhb = 'renhb';  op_stnhb = 'stnhb';
op_setre = 'setre';  op_setst = 'setst';
op_index = 'index';  op_inprs = 'inprs';  op_inpss = 'inpss';
op_intrs = 'intrs';
op_jmppd = 'jmppd';  op_jmcht = 'jmcht';
op_jmzne = 'jmzne';  op_jmzeq = 'jmzeq';  op_jmprw = 'jmprw';
op_jmzgt = 'jmzgt';  op_jmzlt = 'jmzlt';
op_stbsa = 'stbsa';  op_stwsa = 'stwsa';  op_stxsa = 'stxsa';
op_stvgb = 'stvgb';  op_stvlb = 'stvlb';  op_stvib = 'stvib';
op_stvgw = 'stvgw';  op_stvlw = 'stvlw';  op_stviw = 'stviw';
op_stvgf = 'stvgf';  op_stvlf = 'stvlf';  op_stvif = 'stvif';
op_stvgd = 'stvgd';  op_stvld = 'stvld';  op_stvid = 'stvid';
op_stvsb = 'stvsb';  op_stvsw = 'stvsw';  op_stvsf = 'stvsf';
op_stvsd = 'stvsd';
op_ult   = 'ult';    op_eq    = 'eq';     op_ne    = 'ne';
op_lt    = 'lt';     op_gt    = 'gt';     op_le    = 'le';
op_ge    = 'ge';
op_seteq = 'seteq';  op_setsb = 'setsb';  op_setsp = 'setsp';
op_setun = 'setun';  op_setdi = 'setdi';  op_setin = 'setin';
op_not   = 'not';    op_and   = 'and';    op_or    = 'or';
op_settm = 'settm';  op_stcea = 'stcea';  
op_neg   = 'neg';    op_div   = 'div';    op_add   = 'add';
op_sub   = 'sub';    op_mul   = 'mul';    op_mod   = 'mod';
op_iocda = 'iocda';
op_csell = 'csell';


(*   offsets in the Incarnation Descriptor :       *)

inc_excode = 17;
inc_exaddr = 19;
inc_exic   = 23;

(*   offsets in the Process Descriptor :      *)

pd_count    =  0;
pd_param    =  2;
pd_linked   =  6;
pd_procinf  =  8;
pd_name     = 12;

(*   offsets in the message head and the message buffer :      *)

sh_start = 24;



(*   const. local to modules:       *)

(*..........................%...........................*)


(*   type definitions global for pass5:     *)

type

opcode = packed array [ 1 .. c_size_opcode ] of char;

identifier = packed array [ 1 .. c_size_identifier ] of char;

token = 1 .. t_max_token;

string = packed array [ 1 .. c_size_string ] of char;

letter = first_letter .. last_letter;

symbol = record
id_letter : letter;
id_no : integer;
lix : integer
end;

context = record
niv : integer;
stack_size : integer;
max_stack_size : integer
end;

varvalue_descr = record
kind : integer;
size : integer
end;

varaddr_descr = record
kind : integer;
niv : integer;
offset : integer;
size : integer
end;


(*    type definitions from modules:     *)

(*..........................%..........................*)


(*   var. declarations global for pass5:      *)


var

const_vv_set : set of token;
const_op_set : set of token;
const_proc_set : set of token;
const_rou_set  : set of token;


descr : record

(* in this variable the Descriptor Segment, part 1 is accumulated. *)

kind :  integer;
name :  identifier;

entry_point,
exit_point,
exception_point :  identifier;

exception_mask : integer;

appetite  : integer;

no_of_params  :  integer;
param  :  array [ 1 .. descr_max_param ] of
record

kind  :  integer;
size  :  integer

end

end   (*  descr  *);






(*    var. declarations from the modules:      *)

(*.........................%..............................*)



(*    procedure declarations global for pass5:      *)



procedure  descr_init;

begin
end;


procedure  ext_descr_out;   (* routine referenced by 'descr_end' !! *)
forward;

procedure  descr_end;

var
a : alfa;
k : integer;

procedure  descr_out_integer( i : integer );
begin
write( descr_pass5, '   ' );
write( descr_pass5, i );
write( descr_pass5, ' /' )
end;

procedure  descr_out_identifier( id : identifier );

var
i : integer;

begin
write( descr_pass5, '   ' );
for i := 1 to c_size_identifier do
write( descr_pass5, id [ i ] );
write( descr_pass5, ' /' )
end;

procedure  descr_out_alfa( a : alfa );

begin
write( descr_pass5, a )
end;

begin

open( descr_pass5, 'pass5d' );
rewrite( descr_pass5 );

writeln( descr_pass5 );
writeln( descr_pass5, ' ;   platon-80, descriptor from pass5. ' );
write( descr_pass5, ' ;   version:  ' );
writeln( descr_pass5, pass5_version );
write( descr_pass5, ' ;   date and time:  ' );
date( a );   descr_out_alfa( a );
time( a );   descr_out_alfa( a );
writeln( descr_pass5 );  writeln( descr_pass5 );

writeln( descr_pass5, ' d. ' );

descr_out_identifier( descr.name );

descr_out_integer( descr.kind );
writeln( descr_pass5 );

descr_out_identifier( descr.entry_point );
descr_out_identifier( descr.exception_point );
descr_out_identifier( descr.exit_point );
writeln( descr_pass5 );

descr_out_integer( descr.exception_mask );
descr_out_integer( descr.appetite );
writeln( descr_pass5 );

descr_out_integer( descr.no_of_params );
writeln( descr_pass5 );

for k := 1 to descr.no_of_params do
begin
descr_out_integer( descr.param[ k ].kind );
descr_out_integer( descr.param[ k ].size );
writeln( descr_pass5 )
end;

ext_descr_out;

writeln( descr_pass5 );
writeln( descr_pass5, ' . ' );
writeln( descr_pass5 )

end  (*  descr_end  *);



procedure  context_eval( var  c : context;  change : integer );

begin

with c do
begin

stack_size := stack_size + change;
if stack_size > max_stack_size then  max_stack_size := stack_size

end

end;



(*     procedure declarations from the modules:      *)

(*.............................%..................................*)


(*       body of pass5:      *)

begin

(*    initialize the frozen variables:    *)

const_vv_set := [ t_pushvar, t_pushaddr, t_pushcaddr ];
const_op_set := const_vv_set +
[ t_const, t_lconst, t_functioncall, t_exfunctioncall ];
const_proc_set := [ t_process, t_extprocess ];
const_rou_set := [ t_proc, t_externalproc, t_func, t_externalfunc ];

(*  initialize the pseudo classes:  *)

out_init;
in_init;
sym_init;
descr_init;
ext_init;


(*      generate code for one program:      *)

find_program;

(*     terminate the pseudo classes:        *)

out_end;
in_end;
descr_end;


1:      (*     exit from fatal errors      *)



end     (*  pass5  *);


(*    body of the test program:     *)

begin

pass5( prolog_yes, epilog_yes )

end.


«eof»