|
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: 10752 (0x2a00) Types: TextFileVerbose Names: »pass5test«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system └─⟦6b41451d2⟧ └─⟦this⟧ »pass5test«
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»