start.inc 641 B

123456789101112131415161718192021222324252627282930313233
  1. _start:
  2. clr r1
  3. // load stack pointer
  4. ldi r30,lo8(_stack_top)
  5. out 0x3d,r30
  6. ldi r30,hi8(_stack_top)
  7. out 0x3e,r30
  8. {
  9. // copy initialized data from flash to ram
  10. ldr r1,.L_etext
  11. ldr r2,.L_data
  12. ldr r3,.L_edata
  13. .Lcopyloop:
  14. cmp r2,r3
  15. ldrls r0,[r1],#4
  16. strls r0,[r2],#4
  17. bls .Lcopyloop
  18. // clear onboard ram
  19. ldr r1,.L_bss_start
  20. ldr r2,.L_bss_end
  21. mov r0,#0
  22. .Lzeroloop:
  23. cmp r1,r2
  24. strls r0,[r1],#4
  25. bls .Lzeroloop
  26. }
  27. call PASCALMAIN
  28. call _FPC_haltproc
  29. .text