system.pp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. unit system;
  2. interface
  3. {$define FPC_IS_SYSTEM}
  4. {$ifdef FULL_RTL}
  5. {$I systemh.inc}
  6. {$else FULL_RTL}
  7. type
  8. integer = longint;
  9. hresult = integer;
  10. ttypekind = integer;
  11. filerec = integer;
  12. textrec = integer;
  13. pbyte = ^byte;
  14. pchar = ^Char;
  15. procedure fpc_lib_exit; compilerproc;
  16. {$endif FULL_RTL}
  17. procedure DebugWrite(const P: PChar);
  18. procedure DebugWriteChar(Ch: Char);
  19. procedure DebugWriteHexDigit(d: Byte);
  20. procedure DebugWriteHexByte(b: Byte);
  21. implementation
  22. {$ifdef FULL_RTL}
  23. {$else FULL_RTL}
  24. procedure fpc_lib_exit; compilerproc;
  25. begin
  26. end;
  27. {$endif FULL_RTL}
  28. type
  29. P__wasi_size_t = ^__wasi_size_t;
  30. __wasi_size_t = longint;
  31. __wasi_fd_t = longint;
  32. size_t = longint;
  33. __wasi_errno_t = longint;
  34. P__wasi_ciovec_t = ^__wasi_ciovec_t;
  35. __wasi_ciovec_t = record
  36. buf: pointer;
  37. buf_len: __wasi_size_t;
  38. end;
  39. function fd_write(fd: __wasi_fd_t;
  40. iovs: P__wasi_ciovec_t;
  41. iovs_len: size_t;
  42. nwritten: P__wasi_size_t): __wasi_errno_t; external 'wasi_unstable';
  43. function StrLen(P: PChar): size_t;
  44. var
  45. i: size_t;
  46. begin
  47. i := 0;
  48. while p[i]<>#0 do
  49. Inc(i);
  50. StrLen := i;
  51. end;
  52. procedure DebugWrite(const P: PChar);
  53. var
  54. our_iov: __wasi_ciovec_t;
  55. our_nwritten: longint;
  56. begin
  57. our_iov.buf := P;
  58. our_iov.buf_len := StrLen(P);
  59. fd_write(1, @our_iov, 1, @our_nwritten);
  60. end;
  61. procedure DebugWriteChar(Ch: Char);
  62. var
  63. CharArr: array [0..1] of Char;
  64. begin
  65. CharArr[0] := Ch;
  66. CharArr[1] := #0;
  67. DebugWrite(@CharArr);
  68. end;
  69. procedure DebugWriteHexDigit(d: Byte);
  70. const
  71. HexDigits: array [0..15] of Char = '0123456789ABCDEF';
  72. begin
  73. DebugWriteChar(HexDigits[d]);
  74. end;
  75. procedure DebugWriteHexByte(b: Byte);
  76. begin
  77. DebugWriteHexDigit(b shr 4);
  78. DebugWriteHexDigit(b and 15);
  79. end;
  80. end.