esp32.pp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. {******************************************************************************
  2. Startup code for xtensa-esp32 using idf
  3. ******************************************************************************}
  4. unit esp32;
  5. {$goto on}
  6. {$macro on}
  7. interface
  8. implementation
  9. uses
  10. consoleio,heapmgr;
  11. var
  12. _stack_top: record end; public name '_stack_top';
  13. procedure PASCALMAIN; external name 'PASCALMAIN';
  14. procedure esp_deep_sleep_start;external;
  15. procedure putchar(c : char);external;
  16. function getchar : char;external;
  17. procedure _FPC_haltproc; public name '_haltproc';noreturn;
  18. begin
  19. while true do
  20. esp_deep_sleep_start;
  21. end;
  22. procedure app_main;public name 'app_main';noreturn;
  23. begin
  24. PASCALMAIN;
  25. _FPC_haltproc;
  26. end;
  27. function WriteChar(ACh: char; AUserData: pointer): boolean;
  28. begin
  29. WriteChar:=true;
  30. putchar(ACh);
  31. end;
  32. function ReadChar(var ACh: char; AUserData: pointer): boolean;
  33. begin
  34. ReadChar:=true;
  35. ACh:=getchar;
  36. end;
  37. begin
  38. OpenIO(Input, @WriteChar, @ReadChar, fmInput, nil);
  39. OpenIO(Output, @WriteChar, @ReadChar, fmOutput, nil);
  40. OpenIO(ErrOutput, @WriteChar, @ReadChar, fmOutput, nil);
  41. OpenIO(StdOut, @WriteChar, @ReadChar, fmOutput, nil);
  42. OpenIO(StdErr, @WriteChar, @ReadChar, fmOutput, nil);
  43. end.