summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/alephdir/eomem-rc3.ch
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/alephdir/eomem-rc3.ch')
-rw-r--r--Build/source/texk/web2c/alephdir/eomem-rc3.ch498
1 files changed, 498 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/alephdir/eomem-rc3.ch b/Build/source/texk/web2c/alephdir/eomem-rc3.ch
new file mode 100644
index 00000000000..c531d831006
--- /dev/null
+++ b/Build/source/texk/web2c/alephdir/eomem-rc3.ch
@@ -0,0 +1,498 @@
+% vim ft=ch
+% This file is part of the e-Omega project
+% Purpouse of this file: adapting e-TeX to Omega memory management
+% Most registers are reverted to the Omega model. The only exception
+% is markings.
+%---------------------------------------
+@x l.571
+primitive("toks",toks_register,mem_bot);@/
+@y
+primitive("toks",toks_register,0);@/
+@z
+%---------------------------------------
+@x l.615
+toks_register: @<Cases of |toks_register| for |print_cmd_chr|@>;
+@y
+toks_register: print_esc("toks");
+@z
+%---------------------------------------
+@x l.628
+interpreted in one of five ways:
+@y
+interpreted in one of four ways:
+@z
+%---------------------------------------
+@x l.634
+the entries for that group.
+Furthermore, in extended \eTeX\ mode, |save_stack[p-1]| contains the
+source line number at which the current level of grouping was entered.
+
+\yskip\hang 5) If |save_type(p)=restore_sa|, then |sa_chain| points to a
+chain of sparse array entries to be restored at the end of the current
+group. Furthermore |save_index(p)| and |save_level(p)| should replace
+the values of |sa_chain| and |sa_level| respectively.
+@y
+the entries for that group.
+Furthermore, in extended \eTeX\ mode, |save_stack[p-1]| contains the
+source line number at which the current level of grouping was entered.
+@z
+%---------------------------------------
+@x l.647
+@d level_boundary=3 {|save_type| corresponding to beginning of group}
+@d restore_sa=4 {|save_type| when sparse array entries should be restored}
+
+@p@t\4@>@<Declare \eTeX\ procedures for tracing and input@>
+@y
+@d level_boundary=3 {|save_type| corresponding to beginning of group}
+
+@p@t\4@>@<Declare \eTeX\ procedures for tracing and input@>
+@z
+%---------------------------------------
+ @x eobase.ch l.672
+begin if eTeX_ex and(eqtb[p].int=w) then
+ @y
+begin if eTeX_ex and(new_eqtb_int(p)=w) then
+ @z
+%---------------------------------------
+@x l.686
+@/@<Cases for |eq_destroy|@>@/
+othercases do_nothing
+@y
+othercases do_nothing
+@z
+%---------------------------------------
+@x l.774
+ else if save_type(save_ptr)=restore_sa then
+ begin sa_restore; sa_chain:=p; sa_level:=save_level(save_ptr);
+ end
+ else begin if save_type(save_ptr)=restore_old_value then
+@y
+ else begin if save_type(save_ptr)=restore_old_value then
+@z
+%---------------------------------------
+@x l.1065
+|glue_val|, or |mu_val| more than |mem_bot| (dynamic variable-size nodes
+cannot have these values)
+@y
+|glue_val|, or |mu_val|.
+@z
+%---------------------------------------
+@x l.1072
+primitive("count",register,mem_bot+int_val);
+@!@:count_}{\.{\\count} primitive@>
+primitive("dimen",register,mem_bot+dimen_val);
+@!@:dimen_}{\.{\\dimen} primitive@>
+primitive("skip",register,mem_bot+glue_val);
+@!@:skip_}{\.{\\skip} primitive@>
+primitive("muskip",register,mem_bot+mu_val);
+@y
+primitive("count",register,int_val);
+@!@:count_}{\.{\\count} primitive@>
+primitive("dimen",register,dimen_val);
+@!@:dimen_}{\.{\\dimen} primitive@>
+primitive("skip",register,glue_val);
+@!@:skip_}{\.{\\skip} primitive@>
+primitive("muskip",register,mu_val);
+@z
+%---------------------------------------
+@x l.1090
+register: @<Cases of |register| for |print_cmd_chr|@>;
+@y
+register: if chr_code=int_val then print_esc("count")
+ else if chr_code=dimen_val then print_esc("dimen")
+ else if chr_code=glue_val then print_esc("skip")
+ else print_esc("muskip");
+@z
+%---------------------------------------
+@x eobase.ch l.1114
+ if m=mem_bot then
+ begin scan_register_num;
+ if cur_val<256 then cur_val:=equiv(toks_base+cur_val)
+ else begin find_sa_element(tok_val,cur_val,false);
+ if cur_ptr=null then cur_val:=null
+ else cur_val:=sa_ptr(cur_ptr);
+ end;
+ end
+ else cur_val:=sa_ptr(m)
+ else cur_val:=equiv(m);
+ cur_val_level:=tok_val;
+@y
+ begin scan_eight_bit_int; m:=toks_base+cur_val;
+ end;
+ scanned_result(equiv(m))(tok_val);
+@z
+%---------------------------------------
+@x l.1173
+begin
+ scan_register_num;
+ fetch_box(q);
+ if q=null then cur_val:=0 @+else
+ cur_val:=mem[q+m].sc;
+@y
+begin
+ scan_eight_bit_int;
+ if box(cur_val)=null then cur_val:=0 @+else
+ cur_val:=mem[box(cur_val)+m].sc;
+@z
+%----------------------------------------
+@x l.1263
+begin if (m<mem_bot)or(m>lo_mem_stat_max) then
+ begin cur_val_level:=sa_type(m);
+ if cur_val_level<glue_val then cur_val:=sa_int(m)
+ else cur_val:=sa_ptr(m);
+ end
+else begin scan_register_num; cur_val_level:=m-mem_bot;
+ if cur_val>255 then
+ begin find_sa_element(cur_val_level,cur_val,false);
+ if cur_ptr=null then
+ if cur_val_level<glue_val then cur_val:=0
+ else cur_val:=zero_glue
+ else if cur_val_level<glue_val then cur_val:=sa_int(cur_ptr)
+ else cur_val:=sa_ptr(cur_ptr);
+ end
+ else
+ case cur_val_level of
+@y
+begin scan_eight_bit_int;
+case m of
+@z
+%---------------------------------------
+@x
+ end;
+@y
+cur_val_level:=m;
+@z
+%---------------------------------------
+@x l.1437
+begin scan_register_num; fetch_box(p);
+@y
+begin scan_eight_bit_int; p:=box(cur_val);
+@z
+%----------------------------------------
+@x l.1479
+ if eTeX_ex and(tracing_lost_chars>1) then tracing_online:=1;
+@y
+ if eTeX_ex and(tracing_lost_chars>1) then set_new_eqtb_int(int_base+tracing_online_code,1);
+@z
+%----------------------------------------
+@x
+ tracing_online:=old_setting;
+@y
+ set_new_eqtb_int(int_base+tracing_online_code,old_setting);
+@z
+%---------------------------------------
+@x l.2188
+begin cur_val:=n; fetch_box(v); vdir:=box_dir(v);
+@y
+begin v:=box(n); vdir:=box_dir(v);
+@z
+%---------------------------------------
+@x l.2212
+if q<>null then q:=vpack(q,natural);
+change_box(q); {the |eq_level| of the box stays the same}
+@y
+if q=null then set_equiv(box_base+n,null)
+ {the |eq_level| of the box stays the same}
+else set_equiv(box_base+n,vpack(q,natural));
+@z
+%---------------------------------------
+@x l.2336
+@d global_box_flag==box_flag+(number_regs+number_regs) {context code for `\.{\\global\\setbox0}'}
+@d ship_out_flag==global_box_flag+1 {context code for `\.{\\shipout}'}
+@y
+@d ship_out_flag==box_flag+(number_regs+number_regs)
+ {context code for `\.{\\shipout}'}
+@z
+%---------------------------------------
+@x l.2344
+var p:pointer; {|ord_noad| for new box in math mode}
+@!a:small_number; {global prefix}
+@y
+var p:pointer; {|ord_noad| for new box in math mode}
+@z
+%----------------------------------------
+@x l.2351
+begin if box_context<global_box_flag then
+ begin cur_val:=box_context-box_flag; a:=0;
+ end
+else begin cur_val:=box_context-global_box_flag; a:=4;
+ end;
+if cur_val<256 then define(box_base+cur_val,box_ref,cur_box)
+else sa_def_box;
+end
+@y
+if box_context<box_flag+number_regs then
+ eq_define(box_base-box_flag+box_context,box_ref,cur_box)
+else geq_define(box_base-box_flag-number_regs+box_context,box_ref,cur_box)
+@z
+%---------------------------------------
+@x l. 2367
+@!n:halfword; {a box number}
+begin case cur_chr of
+box_code: begin scan_register_num; fetch_box(cur_box);
+ set_equiv(box_base+cur_val,null);
+ {the box becomes void, at the same level}
+ end;
+copy_code: begin scan_register_num; fetch_box(q); cur_box:=copy_node_list(q);
+@y
+@!n:eight_bits; {a box number}
+begin case cur_chr of
+box_code: begin scan_eight_bit_int; cur_box:=box(cur_val);
+ set_equiv(box_base+cur_val,null);
+ {the box becomes void, at the same level}
+ end;
+copy_code: begin scan_eight_bit_int; cur_box:=copy_node_list(box(cur_val));
+@z
+%---------------------------------------
+@x eobase.ch l.2359
+begin scan_register_num; n:=cur_val;
+@y
+begin scan_eight_bit_int; n:=cur_val;
+@z
+%---------------------------------------
+@x eobase.ch l.2467
+begin if cur_chr>copy_code then @<Handle saved items and |goto done|@>;
+c:=cur_chr; scan_register_num; fetch_box(p);
+@y
+begin if cur_chr>copy_code then @<Handle saved items and |goto done|@>;
+c:=cur_chr; scan_eight_bit_int; p:=box(cur_val);
+@z
+%---------------------------------------
+@x eobase.ch l.2431
+else begin link(tail):=list_ptr(p);
+change_box(null);
+@y
+else begin link(tail):=list_ptr(p);
+set_equiv(box_base+cur_val,null);
+@z
+%----------------------------------------
+@x eobase.ch l.2743
+ othercases begin scan_register_num;
+ if cur_val>255 then
+ begin j:=n-count_def_code; {|int_val..box_val|}
+ if j>mu_val then j:=tok_val; {|int_val..mu_val| or |tok_val|}
+ find_sa_element(j,cur_val,true); add_sa_ref(cur_ptr);
+ if j=tok_val then j:=toks_register@+else j:=register;
+ define(p,j,cur_ptr);
+ end
+ else
+@y
+ othercases begin scan_eight_bit_int;
+@z
+%---------------------------------------
+@x eobase.ch l.2769
+ e:=false; {just in case, will be set |true| for sparse array elements}
+ if cur_cmd=toks_register then
+ if cur_chr=mem_bot then
+ begin scan_register_num;
+ if cur_val>255 then
+ begin find_sa_element(tok_val,cur_val,true);
+ cur_chr:=cur_ptr; e:=true;
+ end
+ else cur_chr:=toks_base+cur_val;
+ end
+ else e:=true;
+ p:=cur_chr; {|p=every_par_loc| or |output_routine_loc| or \dots}
+@y
+ if cur_cmd=toks_register then
+ begin scan_eight_bit_int; p:=toks_base+cur_val;
+ end
+ else p:=cur_chr; {|p=every_par_loc| or |output_routine_loc| or \dots}
+@z
+%---------------------------------------
+@x eobase.ch l.2789
+ begin sa_define(p,null)(p,undefined_cs,null); free_avail(def_ref);
+ end
+ else begin if (p=output_routine_loc)and not e then {enclose in curlies}
+@y
+ begin define(p,undefined_cs,null); free_avail(def_ref);
+ end
+ else begin if p=output_routine_loc then {enclose in curlies}
+@z
+%---------------------------------------
+@x eobase.ch l.2799
+ sa_define(p,def_ref)(p,call,def_ref);
+@y
+ define(p,call,def_ref);
+@z
+%---------------------------------------
+@x eobase.ch l.2805
+if (cur_cmd=toks_register)or(cur_cmd=assign_toks) then
+ begin if cur_cmd=toks_register then
+ if cur_chr=mem_bot then
+ begin scan_register_num;
+ if cur_val<256 then q:=equiv(toks_base+cur_val)
+ else begin find_sa_element(tok_val,cur_val,false);
+ if cur_ptr=null then q:=null
+ else q:=sa_ptr(cur_ptr);
+ end;
+ end
+ else q:=sa_ptr(cur_ptr)
+ else q:=equiv(cur_chr);
+ if q=null then sa_define(p,null)(p,undefined_cs,null)
+ else begin add_token_ref(q); sa_define(p,q)(p,call,q);
+ end;
+ goto done;
+ end
+@y
+begin if cur_cmd=toks_register then
+ begin scan_eight_bit_int; cur_cmd:=assign_toks; cur_chr:=toks_base+cur_val;
+ end;
+if cur_cmd=assign_toks then
+ begin q:=equiv(cur_chr);
+ if q=null then define(p,undefined_cs,null)
+ else begin add_token_ref(q); define(p,call,q);
+ end;
+ goto done;
+ end;
+end
+@z
+%---------------------------------------
+@x eobase.ch l.2792
+@!e:boolean; {does |l| refer to a sparse array element?}
+@!w:integer; {integer or dimen value of |l|}
+begin q:=cur_cmd;
+e:=false; {just in case, will be set |true| for sparse array elements}
+@y
+begin q:=cur_cmd;
+@z
+%----------------------------------------
+@x eobase.ch l.2802
+if p<glue_val then sa_word_define(l,cur_val)
+else begin trap_zero_glue; sa_define(l,cur_val)(l,glue_ref,cur_val);
+@y
+if p<glue_val then word_define(l,cur_val)
+else begin trap_zero_glue; define(l,glue_ref,cur_val);
+@z
+%---------------------------------------
+@x eobase.ch l.2809
+if (cur_chr<mem_bot)or(cur_chr>lo_mem_stat_max) then
+ begin l:=cur_chr; p:=sa_type(l); e:=true;
+ end
+else begin p:=cur_chr-mem_bot; scan_register_num;
+ if cur_val>255 then
+ begin find_sa_element(p,cur_val,true); l:=cur_ptr; e:=true;
+ end
+ else
+@y
+p:=cur_chr; scan_eight_bit_int;
+@z
+%---------------------------------------
+@x eobase.ch l.2823
+ end;
+end;
+found: if p<glue_val then@+if e then w:=sa_int(l)@+else w:=new_eqtb_int(l);
+else if e then s:=sa_ptr(l)@+else s:=equiv(l)
+@y
+end;
+found:
+@z
+%---------------------------------------
+@x eobase.ch l.2832
+ if q=advance then cur_val:=cur_val+w;
+@y
+ if q=advance then cur_val:=cur_val+new_eqtb_int(l);
+@z
+%---------------------------------------
+@x eobase.ch l.2838
+begin q:=new_spec(cur_val); r:=s;
+@y
+begin q:=new_spec(cur_val); r:=equiv(l);
+@z
+%---------------------------------------
+@x eobase.ch l.2847
+ if p=int_val then cur_val:=mult_integers(w,cur_val)
+ else cur_val:=nx_plus_y(w,cur_val,0)
+ else cur_val:=x_over_n(w,cur_val)
+else begin r:=new_spec(s);
+@y
+ if p=int_val then cur_val:=mult_integers(new_eqtb_int(l),cur_val)
+ else cur_val:=nx_plus_y(new_eqtb_int(l),cur_val,0)
+ else cur_val:=x_over_n(new_eqtb_int(l),cur_val)
+else begin s:=equiv(l); r:=new_spec(s);
+@z
+%---------------------------------------
+@x eobase.ch l.2859
+set_box: begin scan_register_num;
+ if global then n:=global_box_flag+cur_val@+else n:=box_flag+cur_val;
+ scan_optional_equals;
+ if set_box_allowed then scan_box(n)
+@y
+set_box: begin scan_eight_bit_int;
+ if global then n:=number_regs+cur_val@+else n:=cur_val;
+ scan_optional_equals;
+ if set_box_allowed then scan_box(box_flag+n)
+@z
+%---------------------------------------
+@x eobase.ch l.2925
+@!b:pointer; {box register}
+begin c:=cur_chr; scan_register_num; fetch_box(b); scan_optional_equals;
+scan_normal_dimen;
+if b<>null then mem[b+c].sc:=cur_val;
+@y
+@!b:eight_bits; {box number}
+begin c:=cur_chr; scan_eight_bit_int; b:=cur_val; scan_optional_equals;
+scan_normal_dimen;
+if box(b)<>null then mem[box(b)+c].sc:=cur_val;
+@z
+%---------------------------------------
+@x l.2998
+begin scan_register_num; fetch_box(p); begin_diagnostic;
+print_nl("> \box"); print_int(cur_val); print_char("=");
+if p=null then print("void")@+else show_box(p);
+@y
+begin scan_eight_bit_int; begin_diagnostic;
+print_nl("> \box"); print_int(cur_val); print_char("=");
+if box(cur_val)=null then print("void")
+else show_box(box(cur_val));
+@z
+%----------------------------------------
+@x eobase.ch l.3023
+if eTeX_ex then for k:=int_val to tok_val do dump_int(sa_root[k]);
+@y
+@z
+%----------------------------------------
+@x eobase.ch l.3030
+if eTeX_ex then for k:=int_val to tok_val do
+ undump(null)(lo_mem_max)(sa_root[k]);
+@y
+@z
+@x l. 3181
+for j:=0 to eTeX_states-1 do eTeX_state(j):=0; {disable all enhancements}
+@y
+for j:=0 to eTeX_states-1 do set_new_eqtb_int(eTeX_state_base+j,0); {disable all enhancements}
+@z
+%----------------------------------------
+@x l.3558
+@ @<Show the box context@>=
+i:=saved(-4);
+if i<>0 then
+ if i<box_flag then
+ begin if abs(nest[p].mode_field)=vmode then j:=hmove else j:=vmove;
+ if i>0 then print_cmd_chr(j,0) else print_cmd_chr(j,1);
+ print_scaled(abs(i)); print("pt");
+ end
+ else if i<ship_out_flag then
+ begin if i>=global_box_flag then
+ begin print_esc("global"); i:=i-(global_box_flag-box_flag);
+ end;
+ print_esc("setbox"); print_int(i-box_flag); print_char("=");
+ end
+ else print_cmd_chr(leader_ship,i-(leader_flag-a_leaders))
+@y
+@ @<Show the box context@>=
+i:=saved(-4);
+if i<>0 then
+ if i<box_flag then
+ begin if abs(nest[p].mode_field)=vmode then j:=hmove else j:=vmove;
+ if i>0 then print_cmd_chr(j,0) else print_cmd_chr(j,1);
+ print_scaled(abs(i)); print("pt");
+ end
+ else if i<ship_out_flag then
+ begin if i>=box_flag+number_regs then
+ begin print_esc("global"); i:=i-number_regs;
+ end;
+ print_esc("setbox"); print_int(i-box_flag); print_char("=");
+ end
+ else print_cmd_chr(leader_ship,i-(leader_flag-a_leaders))
+@z