XModemLoader.Mos 941 B

12345678910111213141516171819202122232425262728293031323334
  1. MODULE XModemLoader; (** AUTHOR "Timothée Martiel"; PURPOSE "XModem file transfers for bootloader"; *)
  2. IMPORT SYSTEM,
  3. XModem, Bootloader, Loader;
  4. PROCEDURE Load * (CONST name, host: ARRAY OF CHAR);
  5. VAR res: LONGINT; msg: ARRAY 128 OF CHAR; char: CHAR;
  6. BEGIN
  7. res := XModem.Receive(Bootloader.input^, Bootloader.output^, Loader.CopyToRam);
  8. (*IF res # 0 THEN
  9. XModem.GetErrorMessage(msg);
  10. Trace.String("XMODEM ERROR: ");
  11. Trace.String(msg);
  12. Trace.String(" (");
  13. Trace.Int(res, 0);
  14. Trace.StringLn(")")
  15. END;*)
  16. LOOP
  17. SYSTEM.GET(Loader.endAddress - 1, char);
  18. IF char # 1AX THEN EXIT END;
  19. DEC(Loader.endAddress)
  20. END;
  21. Loader.NotifyDone(res)
  22. END Load;
  23. (*PROCEDURE CopyToRam * (CONST buffer: ARRAY OF CHAR; ofs, len: LONGINT);
  24. BEGIN
  25. WHILE buffer[ofs + len - 1] = 1AX DO DEC(len) END;
  26. Loader.CopyToRam(buffer, ofs, len)
  27. END CopyToRam;*)
  28. BEGIN
  29. Loader.RegisterLoader("XModem", Load);
  30. END XModemLoader.