mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 18:02:25 +00:00
Return d0 correctly in ulmSYSTEM read unixcall handler. Fixes #43.
This commit is contained in:
parent
da88496c5f
commit
b8694e65ab
1 changed files with 8 additions and 6 deletions
|
|
@ -50,23 +50,25 @@ TYPE pchar = POINTER TO ARRAY 1 OF CHAR;
|
||||||
END TAS;
|
END TAS;
|
||||||
|
|
||||||
PROCEDURE UNIXCALL*(syscall: LONGINT; VAR d0, d1: LONGINT; (* in ulm version both LONGINT and INTEGER are 4 byte size *)
|
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
|
VAR
|
||||||
n: LONGINT;
|
n: LONGINT;
|
||||||
ch: CHAR;
|
ch: CHAR;
|
||||||
pch: pchar;
|
pch: pchar;
|
||||||
pstr: pstring;
|
pstr: pstring;
|
||||||
h: Platform.FileHandle;
|
h: Platform.FileHandle;
|
||||||
(* pst : pstatus; *)
|
(* pst : pstatus; *)
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
IF syscall = Sys.read THEN
|
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);
|
(*NEW(pch);
|
||||||
pch := SYSTEM.VAL(pchar, arg2);
|
pch := SYSTEM.VAL(pchar, arg2);
|
||||||
ch := pch^[0];
|
ch := pch^[0];
|
||||||
n := read(ch);
|
n := read(ch);
|
||||||
IF n # 1 THEN
|
IF n # 1 THEN
|
||||||
ch := 0X;
|
ch := 0X;
|
||||||
RETURN FALSE
|
RETURN FALSE
|
||||||
ELSE
|
ELSE
|
||||||
|
|
@ -81,7 +83,7 @@ TYPE pchar = POINTER TO ARRAY 1 OF CHAR;
|
||||||
n := Write(SYSTEM.VAL(LONGINT, pch), 1);
|
n := Write(SYSTEM.VAL(LONGINT, pch), 1);
|
||||||
IF n # 1 THEN RETURN FALSE ELSE RETURN TRUE END
|
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);
|
pstr := SYSTEM.VAL(pstring, arg1);
|
||||||
IF SYSTEM.VAL(SET, arg3) * {0,1} # {} THEN
|
IF SYSTEM.VAL(SET, arg3) * {0,1} # {} THEN
|
||||||
RETURN Platform.OldRW(pstr^, d0) = 0
|
RETURN Platform.OldRW(pstr^, d0) = 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue