% ovp2ovf.up. Public domain. % % Allow character codes up to "10FFFF. @x [3] Increase constants. @d char_max=@"FFFF @y @d char_max=@"10FFFF @z @x [3] Increase constants. @!vf_size=200000; {maximum length of |vf| data, in bytes} @y @!vf_size=800000; {maximum length of |vf| data, in bytes} @z @x [60] @p function get_byte:byte; {scans a one-byte property value} @y We have to distinguish between character codes that may exceed |@"FFFF| and those that are store in one |byte| and thus must not exceed |@"FFFF|. @p function get_char_code:integer; {scans a character code value} @z @x [60] cur_char:=" "; get_byte:=acc; @y cur_char:=" "; get_char_code:=acc; end; @# function get_byte:integer; {scans a one-byte property value} var acc:integer; {an accumulator} begin acc:=get_char_code; if acc>@"FFFF then begin skip_error('This value shouldn''t exceed "FFFF'); @.This value shouldn't...@> acc:=0; cur_char:=" "; end; get_byte:=acc; @z @x [62] begin skip_error('This value shouldn''t exceed 65535'); @y begin skip_error('This value shouldn''t exceed 1114111'); @z @x [63] begin skip_error('This value shouldn''t exceed ''177777'); @y begin skip_error('This value shouldn''t exceed ''4177777'); @z @x [64] begin skip_error('This value shouldn''t exceed "FFFF'); @y begin skip_error('This value shouldn''t exceed "10FFFF'); @z @x [80] for k:=256 to max_char do packet_length[k]:=3; @y for k:=256 to @"FFFF do packet_length[k]:=3; for k:=@"10000 to max_char do packet_length[k]:=4; @z @x [112] else begin backup; c:=get_byte; @y else begin backup; c:=get_char_code; @z @x [120] @ @= begin c:=get_byte; @y @ @= begin c:=get_char_code; @z @x [130] c:=get_byte; {read the character code that is being specified} @y c:=get_char_code; {read the character code that is being specified} @z @x [133] c:=get_byte; {read the character code that is being specified} @y c:=get_char_code; {read the character code that is being specified} @z @x [148] procedure read_packet(@!c:byte); @y procedure read_packet(@!c:integer); @z @x [151] else begin cc:=get_byte; @y else begin cc:=get_char_code; @z @x [188] while (not diff) and (cprime<=ec) do begin @y while (not diff) and (cprime<=ec) and (cprime-c<@"10000) do begin @z