summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/eptexdir/etex.ch0
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/eptexdir/etex.ch0')
-rw-r--r--Build/source/texk/web2c/eptexdir/etex.ch049
1 files changed, 25 insertions, 24 deletions
diff --git a/Build/source/texk/web2c/eptexdir/etex.ch0 b/Build/source/texk/web2c/eptexdir/etex.ch0
index 900b02c1715..cb2f8795e87 100644
--- a/Build/source/texk/web2c/eptexdir/etex.ch0
+++ b/Build/source/texk/web2c/eptexdir/etex.ch0
@@ -14,6 +14,7 @@
{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}
@@ -27,8 +28,10 @@ end;
@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
@@ -39,29 +42,32 @@ if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc;
@z
@x [26.424]
- begin find_effective_tail(return);
- 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;
- end;
+ 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;
- end;
@z
@x [26.424]
- end; {there are no other cases}
- end
+ else if (mode=vmode)and(tx=head) then
@y
- end {there are no other cases}
+ else if (mode=vmode)and(tail=head) then
@z
@x [27.468]
@@ -129,19 +135,17 @@ else box(n):=vpack(q,natural);
@y
@z
@x [47.1080]
- begin find_effective_tail(goto done);
+else begin find_effective_tail;
+ 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@>;
@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;
@@ -153,7 +157,6 @@ 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]
@@ -170,11 +173,10 @@ done:end
@z
@x [47.1105]
-else if not is_char_node(tail) then
- begin find_effective_tail(return);
- if type(tx)<>cur_chr then return;
- fetch_effective_tail(return);
- flush_node_list(tx);
+else begin find_effective_tail;
+ 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;
@@ -186,7 +188,6 @@ else begin if not is_char_node(tail) then if type(tail)=cur_chr then
q:=link(p);
until q=tail;
link(p):=null; flush_node_list(tail); tail:=p;
- end;
@z
@x [47.1110]