Browse Source

+ PS1: implemented debug output via write/writeln (visible in emulator logs, same effect as printf)

Nikolay Nikolov 10 months ago
parent
commit
9662462d10
2 changed files with 24 additions and 3 deletions
  1. 13 1
      rtl/ps1/sysfile.inc
  2. 11 2
      rtl/ps1/system.pp

+ 13 - 1
rtl/ps1/sysfile.inc

@@ -35,8 +35,20 @@ end;
 
 
 
 
 function do_write(h:thandle;addr:pointer;len : longint) : longint;
 function do_write(h:thandle;addr:pointer;len : longint) : longint;
+var
+  i: longint;
 begin
 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;
 end;
 
 
 
 

+ 11 - 2
rtl/ps1/system.pp

@@ -28,13 +28,13 @@ const
     StdOutputHandle = 1;
     StdOutputHandle = 1;
     StdErrorHandle  = 2;
     StdErrorHandle  = 2;
     CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
     CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
-    DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCR;
+    DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsLF;
     LineEnding = #10;
     LineEnding = #10;
     PathSeparator = '/';
     PathSeparator = '/';
     MaxPathLen = 255;
     MaxPathLen = 255;
     LFNSupport = true;
     LFNSupport = true;
     FileNameCaseSensitive = true;
     FileNameCaseSensitive = true;
-    sLineBreak = #13;
+    sLineBreak = #10;
 
 
 var
 var
   argc:longint=0;
   argc:longint=0;
@@ -50,6 +50,7 @@ var
 procedure _InitHeap(p: pdword; l: dword); external name 'InitHeap2';
 procedure _InitHeap(p: pdword; l: dword); external name 'InitHeap2';
 procedure _free(p: pointer); external name 'free2';
 procedure _free(p: pointer); external name 'free2';
 function _malloc(l: dword): pointer; external name 'malloc2';
 function _malloc(l: dword): pointer; external name 'malloc2';
+procedure _putchar(ch: char); external name 'putchar';
 
 
 {I ../mips/setjump.inc}
 {I ../mips/setjump.inc}
 {$I system.inc}
 {$I system.inc}
@@ -99,6 +100,11 @@ end;
 
 
 procedure SysInitStdIO;
 procedure SysInitStdIO;
 begin
 begin
+  OpenStdIO(Input,fmInput,StdInputHandle);
+  OpenStdIO(Output,fmOutput,StdOutputHandle);
+  OpenStdIO(ErrOutput,fmOutput,StdErrorHandle);
+  OpenStdIO(StdOut,fmOutput,StdOutputHandle);
+  OpenStdIO(StdErr,fmOutput,StdErrorHandle);
 end;
 end;
 
 
 function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
 function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
@@ -127,5 +133,8 @@ begin
   { Init unicode strings }
   { Init unicode strings }
   initunicodestringmanager;
   initunicodestringmanager;
 
 
+  { Setup stdin, stdout and stderr }
+  SysInitStdIO;
+
   InOutRes:= 0;
   InOutRes:= 0;
 end.
 end.