diff --git a/rtl/ps1/sysfile.inc b/rtl/ps1/sysfile.inc index df575cc2aa..0fb8d0c074 100644 --- a/rtl/ps1/sysfile.inc +++ b/rtl/ps1/sysfile.inc @@ -35,8 +35,20 @@ end; function do_write(h:thandle;addr:pointer;len : longint) : longint; +var + i: longint; begin - do_write:=len; + case h of + StdOutputHandle, + StdErrorHandle: + begin + for i:=0 to len-1 do + _putchar(PChar(addr)[i]); + do_write:=len; + end; + else + do_write:=len; + end; end; diff --git a/rtl/ps1/system.pp b/rtl/ps1/system.pp index 71cebd67a9..0e04057185 100644 --- a/rtl/ps1/system.pp +++ b/rtl/ps1/system.pp @@ -28,13 +28,13 @@ const StdOutputHandle = 1; StdErrorHandle = 2; CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *) - DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCR; + DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsLF; LineEnding = #10; PathSeparator = '/'; MaxPathLen = 255; LFNSupport = true; FileNameCaseSensitive = true; - sLineBreak = #13; + sLineBreak = #10; var argc:longint=0; @@ -50,6 +50,7 @@ var procedure _InitHeap(p: pdword; l: dword); external name 'InitHeap2'; procedure _free(p: pointer); external name 'free2'; function _malloc(l: dword): pointer; external name 'malloc2'; +procedure _putchar(ch: char); external name 'putchar'; {I ../mips/setjump.inc} {$I system.inc} @@ -99,6 +100,11 @@ end; procedure SysInitStdIO; begin + OpenStdIO(Input,fmInput,StdInputHandle); + OpenStdIO(Output,fmOutput,StdOutputHandle); + OpenStdIO(ErrOutput,fmOutput,StdErrorHandle); + OpenStdIO(StdOut,fmOutput,StdOutputHandle); + OpenStdIO(StdErr,fmOutput,StdErrorHandle); end; function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt; @@ -127,5 +133,8 @@ begin { Init unicode strings } initunicodestringmanager; + { Setup stdin, stdout and stderr } + SysInitStdIO; + InOutRes:= 0; end.