瀏覽代碼

synchronized with original (Texts)

Alexander Shiryaev 5 年之前
父節點
當前提交
f3c0fb7807
共有 3 個文件被更改,包括 11 次插入8 次删除
  1. 11 8
      BlackBox/Po/Files/Texts.Mod.txt
  2. 二進制
      BlackBox/Po/Mod/Texts.odc
  3. 二進制
      BlackBox/Po/Mod/Texts2.odc

+ 11 - 8
BlackBox/Po/Files/Texts.Mod.txt

@@ -1,4 +1,4 @@
-MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014 / 7.1.2019*)
+MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014 / 10.1.2019*)
   IMPORT Files, Fonts;
 
   CONST (*scanner symbol classes*)
@@ -9,10 +9,10 @@ MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014 / 7.
     Real* = 4;          (*real number x*)
     Char* = 6;          (*special character c*)
 
-    (* TextBlock = TextTag "1" offset run {run} "0" len {AsciiCode}.
+    (* TextBlock = TextTag offset run {run} "0" len {AsciiCode}.
       run = fnt [name] col voff len. *)
 
-    TAB = 9X; CR = 0DX; maxD = 9;
+    TAB = 9X; CR = 0DX;
     TextTag = 0F1X;
     replace* = 0; insert* = 1; delete* = 2; unmark* = 3;  (*op-codes*)
 
@@ -33,7 +33,7 @@ MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014 / 7.
       notify*: Notifier;
       trailer: Piece;
       pce: Piece;  (*cache*)
-      org: LONGINT; (*cache*)
+      org: LONGINT (*cache*)
     END;
 
     Reader* = RECORD
@@ -334,10 +334,9 @@ MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014 / 7.
 
   PROCEDURE Scan* (VAR S: Scanner);
     CONST maxExp = 38; maxM = 16777216; (*2^24*)
-    VAR ch, term: CHAR;
+    VAR ch: CHAR;
       neg, negE, hex: BOOLEAN;
       i, j, h, d, e, n, s: INTEGER;
-      k: LONGINT;
       x: REAL;
   BEGIN ch := S.nextCh; i := 0;
     WHILE (ch = " ") OR (ch = TAB) OR (ch = CR) DO
@@ -482,9 +481,13 @@ MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 18.11.2014 / 7.
       IF x < 0.0 THEN Write(W, "-"); x := -x ELSE Write(W, " ") END ;
       e := (e - 127) * 77 DIV 256 - 6;  (*decimal exponent*)
       IF e >= 0 THEN x := x / Ten(e) ELSE x := Ten(-e) * x END ;
-      m := FLOOR(x + 0.5); i := 0;
+      m := FLOOR(x + 0.5);
       IF m >= 10000000 THEN INC(e); m := m DIV 10 END ;
-      REPEAT d[i] := CHR(m MOD 10 + 30H); m := m DIV 10; INC(i) UNTIL m = 0;
+      i := 0; k := 13-n;
+      REPEAT
+         IF i = k THEN INC(m, 5) END ;    (*rounding*)
+       d[i] := CHR(m MOD 10 + 30H); m := m DIV 10; INC(i)
+      UNTIL m = 0;
       DEC(i); Write(W, d[i]); Write(W, ".");
       IF i < n-7 THEN n := 0 ELSE n := 14 - n END ;
       WHILE i > n DO DEC(i); Write(W, d[i]) END ;

二進制
BlackBox/Po/Mod/Texts.odc


二進制
BlackBox/Po/Mod/Texts2.odc