From b8694e65ab1561132fbd86dda176500cdd41f5bc Mon Sep 17 00:00:00 2001 From: David Brown Date: Thu, 15 Sep 2016 13:30:08 +0100 Subject: [PATCH 1/2] Return d0 correctly in ulmSYSTEM read unixcall handler. Fixes #43. --- src/library/ulm/ulmSYSTEM.Mod | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/library/ulm/ulmSYSTEM.Mod b/src/library/ulm/ulmSYSTEM.Mod index 838548f0..bbd054b8 100644 --- a/src/library/ulm/ulmSYSTEM.Mod +++ b/src/library/ulm/ulmSYSTEM.Mod @@ -50,23 +50,25 @@ TYPE pchar = POINTER TO ARRAY 1 OF CHAR; END TAS; PROCEDURE UNIXCALL*(syscall: LONGINT; VAR d0, d1: LONGINT; (* in ulm version both LONGINT and INTEGER are 4 byte size *) - arg1, arg2, arg3: LONGINT) : BOOLEAN; + arg1, arg2, arg3: LONGINT) : BOOLEAN; VAR n: LONGINT; ch: CHAR; pch: pchar; - pstr: pstring; + pstr: pstring; h: Platform.FileHandle; (* pst : pstatus; *) BEGIN - + IF syscall = Sys.read THEN - RETURN Platform.Read(arg1, arg2, arg3, n) = 0; + d0 := Platform.Read(arg1, arg2, arg3, n); + IF d0 >= 0 THEN d0 := n END; + RETURN d0 >= 0; (*NEW(pch); pch := SYSTEM.VAL(pchar, arg2); ch := pch^[0]; n := read(ch); - IF n # 1 THEN + IF n # 1 THEN ch := 0X; RETURN FALSE ELSE @@ -81,7 +83,7 @@ TYPE pchar = POINTER TO ARRAY 1 OF CHAR; n := Write(SYSTEM.VAL(LONGINT, pch), 1); IF n # 1 THEN RETURN FALSE ELSE RETURN TRUE END *) - ELSIF syscall = Sys.open THEN + ELSIF syscall = Sys.open THEN pstr := SYSTEM.VAL(pstring, arg1); IF SYSTEM.VAL(SET, arg3) * {0,1} # {} THEN RETURN Platform.OldRW(pstr^, d0) = 0 From aa5252dc6b2f651497fa56192596d76fbf79008f Mon Sep 17 00:00:00 2001 From: Ivan Sukin Date: Fri, 11 Nov 2016 19:20:27 +0400 Subject: [PATCH 2/2] Fixed typo in Features.md (#47) --- doc/Features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Features.md b/doc/Features.md index e7e8a39d..8ccb6509 100644 --- a/doc/Features.md +++ b/doc/Features.md @@ -13,7 +13,7 @@ The following type sizes follow the built compiler size: | Types | 32 bit builds | 64 bit builds | | ----- | ------------- | ------------- | | INTEGER | 16 bit | 32 bit | -| LONGINT, SET | 32 bit | 16 bit | +| LONGINT, SET | 32 bit | 64 bit | HALT/exit code has been simplified. Exit now just calls the system exit API rather than calling the kill API and passing our own process ID. For runtime errors it now displayes the appropriate error message (e.g. Index out of range).