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

⟦26a6b382e⟧ TextFileVerbose

    Length: 8448 (0x2100)
    Types: TextFileVerbose
    Names: »xxeditpass4«

Derivation

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

TextFileVerbose

; editpass4
;(edit pass4text
;finis)

; page 1

l./versionpass4 = /,   d1,   i/

versionpass4 = 400;  (* 4.00   date : 81.05.22  *)
versionpass3 = 2;    (* pass 3 version must be 2.xx *)
/,  
p-1







; page 9


l./context_kind = /,
l./var_param,/,   r/value_param,/value_param,    return_param,/,


; page 11

l./array_types, index_types,/,
r/a/direct_return, a/,

l./: boolean/,  r/ :/, param_list : /,


l./undef_nix,/, 
i/
niltype_nix,
/,




; page 20

l./procedure initialize;/,


; page 21

l./export:=false;/,   l1,  i/
param_list:=true;
/,


; page 22

l./array_types:=/,    i/
direct_return:=[int_type, char_type, bool_type, scalar_type, 
dyn_subrange, pointer_type];/,


; page 30
l./procedure std_name/,
l./xniltype:/, 
l./size:=0/, r/0/2/,
i/
niltype_nix := nix;
/,






; page 32

l./procedure sub_def;/,


; page 33

l./size:=var_size(min,max);/,   i/
dynamic:=false;
/,
l./begin (*dynamic*)/,
l./offset:=alloc_var(/,  i/
word_allign;
/,

l./error(not_implemented)/,  l1,  i/
min:=0;  max:=1;
/,


; page 35

l./procedure array_def(pack/,

; page 36

l./offset:=alloc_var(array_template_size);/,
i/
word_allign;
/,


l./procedure pool_def/,
l./data_size:=size/, i/
if stack[t] = niltype_nix then
data_size := 0  else
/,



; page 44

l./procedure formal_param(c:/,
i/

function alloc_process_param : integer;  (* return = param length *)
var type_nix, no, param_size, byte_displ, parameter_length : integer;
begin
for no:=param_number - 1 downto 0 do
with nametable[ stack[t-no] ] do begin
type_nix:=comp_type;
if context = value_param then
param_size:=nametable[type_nix].size
else
param_size:=pointer_length;
if nametable[type_nix].dynamic then begin
error(error_dyn);
param_size:=0;
end;
byte_displ:=0;
if (* **z80** *) versionz80 then begin
if param_size = byte_length then param_size:=word_length;
end
else
begin (* **lambda** *)
if nametable[type_nix].context in index_types then
if param_size = byte_length then byte_displ:=1;
if odd(param_size) then param_size:=param_size+1;
end;
niv:=current_niv;
offset:=alloc_var(param_size);
offset:=offset+byte_displ;
end; (* for .. with .. *)
if (* **z80** *) versionz80 then
parameter_length:=-current_offset
else
(* **lambda** *)
parameter_length:=current_offset + 1;
display[this_level].parameter_length:=parameter_length;
alloc_process_param:=parameter_length;
end;  (* alloc process param *)

function alloc_routine_param : integer;  (* return = param length *)
var q, no, parameter_offset, return_size, param_size,
parameter_length, byte_displ : integer;

function alloc_param(size : integer) : integer;
begin
if (* **z80** *) versionz80 then begin
(* parameter_offset >= 0 *)
alloc_param:=parameter_offset;
if top_address - parameter_offset >= size then
parameter_offset:=parameter_offset + size
else
error(address_overflow);
end
else
begin
(* **lambda** *)
(* parameter_offset <= 0 *)
if top_address + parameter_offset >= size then
parameter_offset:=parameter_offset - size
else
error(address_overflow);
alloc_param:=parameter_offset;
end;
end; (* alloc_param *)

begin (* alloc routine param *)
return_size:=0;
q:=param_number - 1;
if mode = func_mode then
with nametable[ stack[t-q] ] do begin
if nametable[comp_type].context in direct_return then begin
context:=return_param;
return_size:=nametable[comp_type].size;
if return_size=byte_length then return_size:=word_length;
end;
if nametable[comp_type].dynamic then error(error_dyn);
end;
if (* **z80** *) versionz80 then
parameter_offset:=0
else
(* **lambda** *)
parameter_offset:=-1;
parameter_length:=0;
for no:=0 to q do
with nametable[ stack[t-no] ] do begin
if context = var_param then
param_size:=pointer_length
else
(* value param and return param *)
with nametable[ comp_type] do begin
param_size:=size;
if dynamic then begin
error(error_dyn);
param_size:=0;
end;
end;
byte_displ:=0;
if (* **z80** *) versionz80 then begin
if param_size = byte_length then param_size:=word_length;
end
else
begin (* **lambda** *)
if nametable[comp_type].context in index_types then
if param_size = byte_length then byte_displ:=1;
if odd(param_size) then param_size:=param_size + 1;
end;
parameter_length:=parameter_length + param_size;
niv:=current_niv;
offset:=alloc_param(param_size);
offset:=offset + byte_displ;
end; (* for ... with .. *)
parameter_length:=parameter_length - return_size;
alloc_routine_param:=parameter_length;
end; (* alloc routine param *)
/,



l./procedure formal_param(c:/,
l./if c=value_param/,
d./if odd(parm_size) then/,  d,
l./niv:=current_niv;/,  d2,



; page 43

l./procedure new_block;/,
l./if (* **z80**/, 
d./display[this_level]./,
l./proc_mode, func_mode:/,   l2,  i/
if param_list then
parameter_length:=alloc_routine_param
else
parameter_length:=size;   (* routine previous defined *)
param_list:=true;
/,
l./size:=parameter/,  d,  i/
display[this_level].parameter_length:=parameter_length;
size:=parameter_length;
/,
l./put_arg1(/,  d,
l./process_mode:/,   l1,  i/
parameter_length:=alloc_process_param;
/,

l./procedure external_;/,
l./if (* **z80/,  d4,  i/
size:=alloc_routine_param;
/,

l./procedure forward_;/,
l./size:=/,  r/current_offset/alloc_routine_param/,
l./current_offset:=nametable/,   d,  i/
param_list:=false;
/,







; page 45

l./procedure end_block;/,
l./if (* **z80/,   d6,   i/
if (* **lambda** *) not versionz80 then
var_length:=var_length+1;
if mode = process_mode then
var_length:=var_length - display[this_level].parameter_length
else
var_length:=var_length - activation_record_length;
/,



l./put1(zlength/,  r/)/, display[this_level].parameter_length)/,
r/1/2/,



; page 55

l./procedure equality(op:/,


; page 56
l./int_type,char_type,bool_type,scalar_type:/,
r/:/,dyn_subrange:/,




; page 57
l./procedure inclusion;/,
l./load_expr;pop;/, i/
get_pushed_consts;
/,










; page 58

l./procedure func_call;/,
l1,  r/;/;   via_stack : boolean;/,
l./put1(zextfunccall/,   r/1/2/,   r/)/, size)/,
l./else put2(zfunccall/,   r/)/, size)/,
r/2/3/,
l./result_size:=size;/,  l1,  i/
via_stack:=context in direct_return;
/,
l./context:=func_result;/,   l1,   i/
if not via_stack then begin
/,
l./offset:=q;/,  l1,  i/
end (* not via stack *)
else
alloc_size:=0;
/,
l./with ops/,   i/
via_stack:=via_stack or (std>0);
/,
l./func_value:=std=0/,  r/std=0/via_stack/,


l./procedure end_func_call;/,
l./if ops/,  r/if/if not/,
l./put0(zendfunccall/,   r/)/,ops[ot].size)/,
r/0/1/,


l./procedure proc_call;/,
l./put1(zextproccall/,   r/1/2/,   r/)/, size)/,
l./put2(zproccall/,  r/2/3/,  r/)/,size)/,



; page 60

l./procedure actual;/,
l1,  i/
var s : integer;
/,
l./ops[ot].size:=/,   l1,   i/
s:=ops[ot].size;
if s < word_length then s := word_length;
/,
l./otherwise put_arg2(addr_typ/,  l2,  i/
return_param:  put1(zreturnparam, s);
/,



l./procedure end_actual;/,
l./var_param:/,   l1,  i/
return_param:  ;  (* no action *)
/,


; page 69
l./procedure var_;/,
l./with ops[ot]do/, i/
ops[ot].func_value := false;
/,


; page 70
l./procedure arrow;/,
l./if waiting/, i/
if ops[ot].func_value then begin
type_ref;
with ops[ot] do begin
state := addr;
context := expr;
func_value := false;
end; (* with *)
end
else begin
/,

l./end;/, i/
end;
/,


; page 76
l./procedure end_struc;/,
l./dynamic:=false;if/, i/
func_value := false;
/,




f
«eof»