|
@@ -482,7 +482,7 @@ VAR ptr : POINTER TO Record;
|
|
|
BEGIN
|
|
BEGIN
|
|
|
IF emitEnabled THEN
|
|
IF emitEnabled THEN
|
|
|
IF pendActive THEN FlushPendingOp END;
|
|
IF pendActive THEN FlushPendingOp END;
|
|
|
- IF fixupCount >= 16 THEN Scanner.ScannerError(90) END;
|
|
|
|
|
|
|
+ IF fixupCount >= 16 THEN Scanner.ScanErr(90) END;
|
|
|
ptr := ADR(fixupQueue[fixupCount]);
|
|
ptr := ADR(fixupQueue[fixupCount]);
|
|
|
ptr^.word0 := 1;
|
|
ptr^.word0 := 1;
|
|
|
ptr^.word1 := value;
|
|
ptr^.word1 := value;
|
|
@@ -495,7 +495,7 @@ VAR ptr : POINTER TO Record;
|
|
|
BEGIN
|
|
BEGIN
|
|
|
IF emitEnabled THEN
|
|
IF emitEnabled THEN
|
|
|
IF pendActive THEN FlushPendingOp END;
|
|
IF pendActive THEN FlushPendingOp END;
|
|
|
- IF fixupCount >= 16 THEN Scanner.ScannerError(90) END;
|
|
|
|
|
|
|
+ IF fixupCount >= 16 THEN Scanner.ScanErr(90) END;
|
|
|
ptr := ADR(fixupQueue[fixupCount]);
|
|
ptr := ADR(fixupQueue[fixupCount]);
|
|
|
ptr^.word0 := kind;
|
|
ptr^.word0 := kind;
|
|
|
ptr^.long1 := value;
|
|
ptr^.long1 := value;
|
|
@@ -570,7 +570,7 @@ BEGIN
|
|
|
END; (* 0512 *)
|
|
END; (* 0512 *)
|
|
|
FlushConstQueue;
|
|
FlushConstQueue;
|
|
|
IF (typeKind = 5) OR (subOp = 18) THEN
|
|
IF (typeKind = 5) OR (subOp = 18) THEN
|
|
|
- extBase := Scanner.EnterModuleSymbol("DOUBLES", 9567H) * 16;
|
|
|
|
|
|
|
+ extBase := Scanner.EnterMod("DOUBLES", 9567H) * 16;
|
|
|
END; (* 0532 *)
|
|
END; (* 0532 *)
|
|
|
CASE typeKind OF
|
|
CASE typeKind OF
|
|
|
| 0: (* 0536 *)
|
|
| 0: (* 0536 *)
|
|
@@ -662,6 +662,7 @@ END EmitExtendedOp;
|
|
|
|
|
|
|
|
PROCEDURE EmitStandardOp(stdNo: CARDINAL);
|
|
PROCEDURE EmitStandardOp(stdNo: CARDINAL);
|
|
|
VAR ptr: RecordPtr;
|
|
VAR ptr: RecordPtr;
|
|
|
|
|
+ kwTab: POINTER TO ARRAY [0..29] OF ARRAY [0..1] OF BYTE; (* overlay: keywordTable holds heap CARDINALs; [i][0] reads the low byte (proven shape: limit_check+shl1+LXB) *)
|
|
|
BEGIN
|
|
BEGIN
|
|
|
IF emitEnabled THEN
|
|
IF emitEnabled THEN
|
|
|
IF (stdNo = 0) AND (fixupCount <> 0) THEN
|
|
IF (stdNo = 0) AND (fixupCount <> 0) THEN
|
|
@@ -678,12 +679,14 @@ BEGIN
|
|
|
Emit1(OPEXTENDED);
|
|
Emit1(OPEXTENDED);
|
|
|
END; (* 06F7 *)
|
|
END; (* 06F7 *)
|
|
|
(* $T+ *)
|
|
(* $T+ *)
|
|
|
- Emit1( Compiler.keywordTable[stdNo][0] );
|
|
|
|
|
|
|
+ kwTab := Compiler.keywordTable;
|
|
|
|
|
+ Emit1( kwTab^[stdNo][0] );
|
|
|
(* $T- *)
|
|
(* $T- *)
|
|
|
END; (* 0701 *)
|
|
END; (* 0701 *)
|
|
|
END EmitStandardOp;
|
|
END EmitStandardOp;
|
|
|
|
|
|
|
|
PROCEDURE EmitMiscOp(subOp, n: CARDINAL);
|
|
PROCEDURE EmitMiscOp(subOp, n: CARDINAL);
|
|
|
|
|
+VAR kwTab: POINTER TO ARRAY [0..29] OF ARRAY [0..1] OF BYTE; (* same overlay as EmitStandardOp *)
|
|
|
BEGIN
|
|
BEGIN
|
|
|
IF emitEnabled THEN
|
|
IF emitEnabled THEN
|
|
|
FlushConstQueue;
|
|
FlushConstQueue;
|
|
@@ -699,7 +702,8 @@ BEGIN
|
|
|
END; (* 073D *)
|
|
END; (* 073D *)
|
|
|
ELSE (* 073F *)
|
|
ELSE (* 073F *)
|
|
|
(* $T+ *)
|
|
(* $T+ *)
|
|
|
- Emit1(Compiler.keywordTable[n+27][0]);
|
|
|
|
|
|
|
+ kwTab := Compiler.keywordTable;
|
|
|
|
|
+ Emit1(kwTab^[n+27][0]);
|
|
|
(* $T- *)
|
|
(* $T- *)
|
|
|
END; (* 074B *)
|
|
END; (* 074B *)
|
|
|
ELSE (* 074D *)
|
|
ELSE (* 074D *)
|
|
@@ -843,7 +847,7 @@ END OpenEmitter;
|
|
|
PROCEDURE InitCodeGenerator;
|
|
PROCEDURE InitCodeGenerator;
|
|
|
BEGIN
|
|
BEGIN
|
|
|
checkOverflow := (execute = 4);
|
|
checkOverflow := (execute = 4);
|
|
|
- codeWindow := ADDRESS(Scanner.codeBuffer);
|
|
|
|
|
|
|
+ codeWindow := ADDRESS(Scanner.codeBuf);
|
|
|
windowBase := 0;
|
|
windowBase := 0;
|
|
|
windowLimit := 4096;
|
|
windowLimit := 4096;
|
|
|
nextEmitPos := 16;
|
|
nextEmitPos := 16;
|