Эх сурвалжийг харах

synchronized with original

Alexander Shiryaev 10 жил өмнө
parent
commit
69ad67e68f

+ 5 - 5
BlackBox/Po/Files/Divider.Lola.txt

@@ -5,19 +5,19 @@ MODULE Divider(
   OUT quot, rem: WORD);
   REG (clk) S: [5] BIT;
     R, Q: WORD;
-  VAR pos: BIT;
+  VAR neg: BIT;
     x0, r0, r1, r2, q0, q1, d: WORD;
 BEGIN stall := run & ~(S = 31);
-  pos := ~x.31;
-  x0 := pos -> x : ~x + y;    (* -x + (y-1) *)
+  neg := x.31;
+  x0 := neg -> ~x + y : x;    (* -x + (y-1) *)
   r0 := (S = 0) -> 0'32 : R;
   d := r1 - y;
   r1 := {r0[30:0], q0.31};
   r2 := d.31 -> r1 : d;
   q0 := (S = 0) -> x0 : Q;
   q1 := {q0[30:0], ~d.31};
-  quot := pos -> q1 : -q1;
-  rem := pos -> r2 : ~r2 + y;   (*(y-1) - r2*)
+  quot := neg -> ~q1 : q1;
+  rem := neg -> ~r2 + y : r2;   (*(y-1) - r2*)
   R := r2;
   Q := q1;
   S := run -> S+1 : 0

+ 1 - 1
BlackBox/Po/Files/FPMultiplier.Lola.txt

@@ -24,7 +24,7 @@ BEGIN sign := x.31 ^ y.31;   (*xor*)
   z0 := B1.23 -> B1 : {B1[22:0], A1.23};
   z := (xe = 0) | (ye = 0) -> 0 :
     ~e1.8 -> {sign, e1[7:0], z0[22:0]} :
-    ~e1.7 -> {sign, $FF'8, z0[22:0]} : 0;  (*overflow*)
+    ~e1.7 -> {sign, 0FFH'8, z0[22:0]} : 0;  (*overflow*)
   stall := run & (S # 23);
 
   B2 := B1; A2 := A1;

+ 18 - 18
BlackBox/Po/Files/LSS.Mod.txt

@@ -1,4 +1,4 @@
-MODULE LSS; (* NW 16.10.93 / 25.2.2015*)
+MODULE LSS; (* NW 16.10.93 / 12.4.2015*)
   IMPORT Texts, Oberon;
   
   CONST IdLen* = 32; NofKeys = 10;
@@ -55,25 +55,25 @@ MODULE LSS; (* NW 16.10.93 / 25.2.2015*)
   END identifier;
 
   PROCEDURE Number(VAR sym: INTEGER);
-  BEGIN val := 0; sym := integer;
+    VAR i, k, h, n: INTEGER;
+      d: ARRAY 16 OF INTEGER;
+  BEGIN sym := integer; i := 0; k := 0; n := 0;
     REPEAT
-      IF val <= (7FFFFFFFH - ORD(ch) + ORD("0")) DIV 10 THEN
-        val := 10 * val + ORD(ch) - ORD("0")
-      ELSE Mark("integer too large"); val := 0
-      END ;
+      IF n < 16 THEN d[n] := ORD(ch)-30H; INC(n) ELSE Mark("too many digits"); n := 0 END ;
+      Texts.Read(R, ch)
+    UNTIL (ch < "0") OR (ch > "9") & (ch < "A") OR (ch > "F");
+    IF ch = "H" THEN (*hex*)
+      REPEAT h := d[i];
+        IF h >= 10 THEN h := h-7 END ;
+        k := k*10H + h; INC(i) (*no overflow check*)
+      UNTIL i = n;
       Texts.Read(R, ch)
-    UNTIL (ch < "0") OR (ch > "9")
+    ELSE
+      REPEAT k := k*10 + d[i]; INC(i) UNTIL i = n
+    END ;
+    val := k
   END Number;
-  
-  PROCEDURE HexNum(VAR sym: INTEGER);
-    VAR d: LONGINT;
-  BEGIN val := 0; sym := integer;
-    WHILE (ch >= "0") & (ch <= "9") OR (ch >= "A") & (ch <= "F") DO
-      IF ch >= "A" THEN d := ORD(ch) - 37H ELSE d := ORD(ch) - 30H END ;
-      val := 16 * val + d; Texts.Read(R, ch)
-    END
-  END HexNum;
-  
+
   PROCEDURE comment;
   BEGIN Texts.Read(R, ch);
     REPEAT
@@ -97,7 +97,7 @@ MODULE LSS; (* NW 16.10.93 / 25.2.2015*)
         IF ch < "0" THEN
           IF ch = "!" THEN Texts.Read(R, ch); sym := repl
           ELSIF ch = "#" THEN Texts.Read(R, ch); sym := neq
-          ELSIF ch = "$" THEN Texts.Read(R, ch); HexNum(sym)
+          ELSIF ch = "$" THEN Texts.Read(R, ch); sym := null
           ELSIF ch = "&" THEN Texts.Read(R, ch); sym := and
           ELSIF ch = "'" THEN Texts.Read(R, ch); sym := apo
           ELSIF ch = "(" THEN Texts.Read(R, ch); 

+ 3 - 3
BlackBox/Po/Files/MouseP.Lola.txt

@@ -1,9 +1,9 @@
-MODULE MouseP (
+MODULE MouseP (   (*version on Web without PS2Buf*)
   IN clk, rst: BIT;
   INOUT io: [2] BIT;
   OUT out: [28] BIT);
   (* init mouse cmd F4 (start reporting) with start, parity and stop bits added *)
-  CONST InitBuf := $FFFFFDE8;  (* 1...1 1 0 1111 0100 0 *)
+  CONST InitBuf := 0FFFFFDE8H;  (* 1...1 1 0 1111 0100 0 *)
   TYPE IOBUF = MODULE (IN I: BIT; OUT O: BIT; INOUT IO: BIT; IN T: BIT) ^;
   REG (clk) x, y: [10] BIT;   (*counters*)
     btns: [3] BIT;
@@ -25,7 +25,7 @@ BEGIN
 
   run := rst & (reply | run);
   Q0 := msclk; Q1 := Q0;
-  shreg := ~rst -> InitBuf : (endbit | reply) -> $FFFFFFFF'32 : shift -> {msdat, shreg[31:1]} : shreg;
+  shreg := ~rst -> InitBuf : (endbit | reply) -> 0FFFFFFFFH'32: shift -> {msdat, shreg[31:1]} : shreg;
   x := ~rst -> 0'10 : endbit -> x + dx : x;
   y := ~rst -> 0'10 : endbit -> y + dy : y;
   btns := ~rst -> 0'3 : endbit -> {shreg.1, shreg.3, shreg.2} : btns

+ 1 - 1
BlackBox/Po/Files/PS2.Lola.txt

@@ -17,7 +17,7 @@ BEGIN endbit := ~shreg.0;   (*start bit reached correct pos*)
   data := fifo[outptr];
   rdy := (inptr # outptr);
 
-  shreg := (~rst | endbit) -> $7FF'11 :
+  shreg := (~rst | endbit) -> 7FFH'11:
     shift -> {PS2D, shreg[10:1]} : shreg;
   outptr := ~rst -> 0 : rdy & done -> outptr + 1 : outptr;
   inptr := ~rst -> 0 : endbit -> inptr + 1 : inptr;

+ 5 - 5
BlackBox/Po/Files/RISC5.Lola.txt

@@ -4,7 +4,7 @@ MODULE RISC5 (IN clk, rst, stallX: BIT;  (*NW 31.10.2014*)
     rd, wr, ben: BIT;
     outbus: WORD);
   
-  CONST StartAdr = $3F800'18;
+  CONST StartAdr = 3F800H'18;
 
   TYPE PROM := MODULE (IN adr: [11] BIT; OUT data: WORD; IN clk: BIT) ^;
 
@@ -145,7 +145,7 @@ BEGIN
   aluRes :=
     Mov -> (q ->
       (~u -> {v!16, imm} : {imm, 0'16}) :
-      (~u -> C0 : (~v -> H : {N, Z, C, OV, 0'20, $54'8}))):
+      (~u -> C0 : (~v -> H : {N, Z, C, OV, 0'20, 54H'8}))):
     Lsl -> t3 :
     (Asr | Ror) -> s3 :
     And -> B & C1 :
@@ -187,14 +187,14 @@ BEGIN
   stallL := (Ldr | Str) & ~stall1;
   
   PC := pcmux;
-  PMsel := ~rst | (pcmux[17:11] = $7F'7);
+  PMsel := ~rst | (pcmux[17:11] = 7FH'7);
   IRBuf := stall -> IRBuf : codebus;
   stall1 := stallX -> stall1 : stallL;
   R[ira0] := regwr -> regmux : A;
   N := regwr -> regmux.31 : N;
   Z := regwr -> (regmux = 0) : Z;
-  C := Add -> (~sb&sc&~sa) | (sb&sc&sa) | (sb&~sa) :
-    Sub -> (~sb&sc&~sa) | (sb&sc&sa) | (~sb&sa) : C;;
+  C := Add -> (sb&sc) | (~sa&~sb&sc) | (~sa&sb&~sc&sa) :
+    Sub -> (~sb&sc) | (sa&~sb&~sc) | (sa&sb&sc) : C;
   OV := Add -> (sa&~sb&~sc) | (~sa&sb&sc) :
     Sub -> (sa&~sb&sc) | (~sa&sb&~sc) : OV;;
   H := Mul -> product[63:32] : Div -> remainder : H

+ 1 - 1
BlackBox/Po/Files/RISC5Top.Lola.txt

@@ -128,7 +128,7 @@ BEGIN
   gpioBuf (gpout, gpin, gpio, ~gpoc);
 
   iowadr := adr[5:2];
-  ioenb := (adr[19:6] = $3FFF'14);
+  ioenb := (adr[19:6] = 3FFFH'14);
   inbus := ~ioenb -> inbus0 :
     ((iowadr = 0) -> cnt1 :
     (iowadr = 1) -> {0'20, btn, swi} :

+ 1 - 36
BlackBox/Po/Files/VID.Lola.txt

@@ -6,7 +6,7 @@ MODULE VID (
     hsync, vsync: BIT;  (*to display*)
     RGB: [3] BIT);
 
-  CONST Org := $37FC0; (* DFF00: adr of vcnt=1023 *)
+  CONST Org := 37FC0H; (* DFF00: adr of vcnt=1023 *)
   TYPE DCMX3 = MODULE (IN CLKIN: BIT; OUT CLKFX: BIT) ^;
   VAR hend, vend, vblank, xfer, vid, pclk: BIT;
     dcmx3: DCMX3;
@@ -36,38 +36,3 @@ BEGIN dcmx3 (clk, pclk);  (* pixel clock generation *)
   req := req1; req1 := ~vblank & ~hcnt.10 & (hcnt.5 ^ hword.0);
   vidbuf := req -> viddata : vidbuf
 END VID.
-
-MODULE VID (
-  IN clk, inv: BIT;
-    viddata: WORD;
-  OUT  req: BIT;   (*SRAM read request*)
-    vidadr: [18] BIT;
-    hsync, vsync: BIT;
-    RGB: [3] BIT);
-
-  CONST Org := $DFF00;
-  REG hcnt, vcnt: [10] BIT;
-    buffer: WORD;  (*from hcnt, but latched in the clk domain*)
-    hblank1: BIT;
-  VAR hend, vend, hblank, vblank, pixel, vid: BIT;
-    
-BEGIN (*25MHz clock; 2 pixels per cycle*)
-  hend := (hcnt = 591);
-  vend := (vcnt = 791);
-  hblank := hcnt.9;  (*hcnt = 512*)
-  vblank := vcnt.8 & vcnt.9;  (*vcnt >= 768*)
-  hsync := (hcnt >= 537) & (hcnt < 553);
-  vsync := ~((vcnt >= 772) & (vcnt < 776));
-
-  vidadr := {0'3, ~vcnt, hcnt[8:4]} + $37FC0'18;
-  req := ~vblank & ~hcnt.9 & (hcnt[3:0] = 0'4);
-  pixel := clk -> buffer.0 : buffer.1;
-  vid := (pixel ^ inv) & ~hblank1 & ~vblank;
-  RGB := {vid, vid, vid};
-
-  hcnt := hend -> 0 : hcnt+1;
-  vcnt := hend -> (vend -> 0 : vcnt+1) : vcnt;
-  hblank1 := hblank;
-  buffer := req -> viddata : {0'2, buffer[31:2]}
-END VID.
-

BIN
BlackBox/Po/Mod/LSS3.odc