summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/euptexdir/etex.ch0
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/euptexdir/etex.ch0')
-rw-r--r--Build/source/texk/web2c/euptexdir/etex.ch0261
1 files changed, 261 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/euptexdir/etex.ch0 b/Build/source/texk/web2c/euptexdir/etex.ch0
new file mode 100644
index 00000000000..d5893fa9fd1
--- /dev/null
+++ b/Build/source/texk/web2c/euptexdir/etex.ch0
@@ -0,0 +1,261 @@
+% eptexdir/etex.ch0: changefile used to build e-pTeX, see eptexdir/eptex-base.ch for details.
+% Public domain. Originally written by Peter Breitenlohner <tex-live@tug.org>.
+
+@x [10] m.135 l.2895 - e-TeX TeXXeT
+|fil|, |fill|, or |filll|). The |subtype| field is not used in \TeX.
+@y
+|fil|, |fill|, or |filll|). The |subtype| field is not used.
+@z
+
+@x [17.236] l.4960 - first web2c, then e-TeX additional integer parameters
+@d int_pars=web2c_int_pars {total number of integer parameters}
+@#
+@d etex_int_base=tex_int_pars {base for \eTeX's integer parameters}
+@y
+@d int_pars=web2c_int_pars {total number of integer parameters}
+@z
+
+@x [18.???] pTeX: ensure buffer2[]=0 in primitive
+ for j:=0 to l-1 do buffer[first+j]:=so(str_pool[k+j]);
+@y
+ for j:=0 to l-1 do buffer[j]:=so(str_pool[k+j]);
+@z
+
+@x [26.413]
+ {fetch an internal parameter}
+label exit;
+var m:halfword; {|chr_code| part of the operand token}
+@!q,@!r:pointer; {general purpose indices}
+@!tx:pointer; {effective tail node}
+@y
+ {fetch an internal parameter}
+var m:halfword; {|chr_code| part of the operand token}
+@z
+
+@x [26.413]
+exit:end;
+@y
+end;
+@z
+
+@x
+@d badness_code=input_line_no_code+1 {code for \.{\\badness}}
+@y
+@d badness_code=glue_val+2 {code for \.{\\badness}}
+@z
+
+@x [26.420]
+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 [26.424]
+legal in similar contexts.
+
+@y
+legal in similar contexts.
+@z
+
+@x [26.424]
+@d find_effective_tail==find_effective_tail_eTeX
+
+@y
+@z
+
+@x
+ if m>=eTeX_glue then @<Process an expression and |return|@>@;
+ else if m>=eTeX_dim then
+ begin case m of
+ @/@<Cases for fetching a dimension value@>@/
+ end; {there are no other cases}
+ cur_val_level:=dimen_val;
+ end
+ else begin case m of
+ input_line_no_code: cur_val:=line;
+ badness_code: cur_val:=last_badness;
+ @/@<Cases for fetching an integer value@>@/
+ end; {there are no other cases}
+@y
+ begin if cur_chr=input_line_no_code then cur_val:=line
+ else cur_val:=last_badness; {|cur_chr=badness_code|}
+@z
+
+@x [26.424]
+ find_effective_tail;
+@y
+@z
+
+@x [26.424]
+ if not is_char_node(tx)and(mode<>0) then
+ case cur_chr of
+ int_val: if type(tx)=penalty_node then cur_val:=penalty(tx);
+ dimen_val: if type(tx)=kern_node then cur_val:=width(tx);
+ glue_val: if type(tx)=glue_node then
+ begin cur_val:=glue_ptr(tx);
+ if subtype(tx)=mu_glue then cur_val_level:=mu_val;
+@y
+ if not is_char_node(tail)and(mode<>0) then
+ case cur_chr of
+ int_val: if type(tail)=penalty_node then cur_val:=penalty(tail);
+ dimen_val: if type(tail)=kern_node then cur_val:=width(tail);
+ glue_val: if type(tail)=glue_node then
+ begin cur_val:=glue_ptr(tail);
+ if subtype(tail)=mu_glue then cur_val_level:=mu_val;
+@z
+
+@x [26.424]
+ else if (mode=vmode)and(tx=head) then
+@y
+ else if (mode=vmode)and(tail=head) then
+@z
+
+@x [27.468]
+@d etex_convert_base=5 {base for \eTeX's command codes}
+@d eTeX_revision_code=etex_convert_base {command code for \.{\\eTeXrevision}}
+@d etex_convert_codes=etex_convert_base+1 {end of \eTeX's command codes}
+@d job_name_code=etex_convert_codes {command code for \.{\\jobname}}
+@y
+@d job_name_code=5 {command code for \.{\\jobname}}
+@z
+
+@x [30.581]
+@p procedure char_warning(@!f:internal_font_number;@!c:eight_bits);
+var old_setting: integer; {saved value of |tracing_online|}
+@y
+@p procedure char_warning(@!f:internal_font_number;@!c:eight_bits);
+@z
+
+@x [32.619]
+save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v;
+prev_p:=this_box+list_offset;
+@<Initialize |hlist_out| for mixed direction typesetting@>;
+left_edge:=cur_h;
+@y
+save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h;
+@z
+
+@x [32.620]
+ prev_p:=link(prev_p); {N.B.: not |prev_p:=p|, |p| might be |lig_trick|}
+@y
+@z
+
+@x [32.624] l.13005 - pTeX: output a box(and dir_node) with disp
+ cur_h:=edge; cur_v:=base_line;
+@y
+ cur_h:=edge+width(p); cur_v:=base_line;
+@z
+
+@x [33.649]
+exit: if TeXXeT_en then @<Check for LR anomalies at the end of |hpack|@>;
+hpack:=r;
+@y
+exit: hpack:=r;
+@z
+
+@x [44.977]
+q:=prune_page_top(q,saving_vdiscards>0);
+p:=list_ptr(v); free_node(v,box_node_size);
+if q<>null then q:=vpack(q,natural);
+change_box(q); {the |eq_level| of the box stays the same}
+@y
+q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size);
+if q=null then box(n):=null {the |eq_level| of the box stays the same}
+else box(n):=vpack(q,natural);
+@z
+
+@x [47.1079]
+@!r:pointer; {running behind |p|}
+@!fm:boolean; {a final \.{\\beginM} \.{\\endM} node pair?}
+@!tx:pointer; {effective tail node}
+@y
+@z
+
+@x [47.1080]
+@d check_effective_tail(#)==find_effective_tail_eTeX
+@d fetch_effective_tail==fetch_effective_tail_eTeX
+
+@y
+@z
+@x [47.1080]
+else begin check_effective_tail(goto done);
+ if not is_char_node(tx) then
+ if (type(tx)=hlist_node)or(type(tx)=vlist_node) then
+ @<Remove the last box, unless it's part of a discretionary@>;
+ done:end;
+@y
+else begin if not is_char_node(tail) then
+ if (type(tail)=hlist_node)or(type(tail)=vlist_node) then
+ @<Remove the last box, unless it's part of a discretionary@>;
+ end;
+@z
+
+@x [47.1081]
+begin fetch_effective_tail(goto done);
+cur_box:=tx; shift_amount(cur_box):=0;
+end
+@y
+begin q:=head;
+repeat p:=q;
+if not is_char_node(q) then if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then goto done;
+ end;
+q:=link(p);
+until q=tail;
+cur_box:=tail; shift_amount(cur_box):=0;
+tail:=p; link(p):=null;
+done:end
+@z
+
+@x [47.1096]
+ else line_break(false);
+@y
+ else line_break(widow_penalty);
+@z
+
+@x [47.1105]
+@!r:pointer; {running behind |p|}
+@!fm:boolean; {a final \.{\\beginM} \.{\\endM} node pair?}
+@!tx:pointer; {effective tail node}
+@y
+@z
+
+@x [47.1105]
+else begin check_effective_tail(return);
+ if not is_char_node(tx) then if type(tx)=cur_chr then
+ begin fetch_effective_tail(return);
+ flush_node_list(tx);
+@y
+else begin if not is_char_node(tail) then if type(tail)=cur_chr then
+ begin q:=head;
+ repeat p:=q;
+ if not is_char_node(q) then if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then return;
+ end;
+ q:=link(p);
+ until q=tail;
+ link(p):=null; flush_node_list(tail); tail:=p;
+@z
+
+@x [47.1110]
+else begin link(tail):=list_ptr(p); change_box(null);
+@y
+else begin link(tail):=list_ptr(p); box(cur_val):=null;
+@z
+
+@x [48.1145]
+else begin line_break(true);@/
+@y
+else begin line_break(display_widow_penalty);@/
+@z
+
+@x [49.1247]
+if b<>null then mem[b+c].sc:=cur_val;
+@y
+if box(b)<>null then mem[box(b)+c].sc:=cur_val;
+@z
+